From f825566766a91d77cbfea56079d1fbd669e2784e Mon Sep 17 00:00:00 2001 From: powermaker450 Date: Thu, 15 Aug 2024 11:16:12 -0400 Subject: [PATCH] First commit --- .gitignore | 24 + index.html | 13 + package.json | 23 + pnpm-lock.yaml | 805 +++++++++++++++++++++++++++++++++ public/potato.png | Bin 0 -> 16855 bytes public/vite.svg | 1 + src/App.tsx | 11 + src/components/ButtonRow.tsx | 44 ++ src/components/Description.tsx | 9 + src/components/Header.tsx | 30 ++ src/components/Message.tsx | 9 + src/components/Title.tsx | 14 + src/components/index.ts | 5 + src/index.css | 147 ++++++ src/keyframes.css | 11 + src/main.tsx | 10 + src/pages/Main.tsx | 83 ++++ src/pages/index.ts | 1 + src/vite-env.d.ts | 1 + tsconfig.json | 21 + tsconfig.node.json | 9 + vite.config.ts | 7 + 22 files changed, 1278 insertions(+) create mode 100644 .gitignore create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 public/potato.png create mode 100644 public/vite.svg create mode 100644 src/App.tsx create mode 100644 src/components/ButtonRow.tsx create mode 100644 src/components/Description.tsx create mode 100644 src/components/Header.tsx create mode 100644 src/components/Message.tsx create mode 100644 src/components/Title.tsx create mode 100644 src/components/index.ts create mode 100644 src/index.css create mode 100644 src/keyframes.css create mode 100644 src/main.tsx create mode 100644 src/pages/Main.tsx create mode 100644 src/pages/index.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/index.html b/index.html new file mode 100644 index 0000000..47796d8 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + powermaker450's Server + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..5e4ca90 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "my-site", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@vitejs/plugin-react": "^3.1.0", + "prettier": "^3.3.3", + "typescript": "^4.9.3", + "vite": "^4.1.0" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..2198906 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,805 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + +devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.5.3) + prettier: + specifier: ^3.3.3 + version: 3.3.3 + typescript: + specifier: ^4.9.3 + version: 4.9.5 + vite: + specifier: ^4.1.0 + version: 4.5.3 + +packages: + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + dev: true + + /@babel/compat-data@7.25.2: + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.25.0: + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.25.0: + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + dev: true + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + dev: true + + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.2 + dev: true + + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + dev: true + + /@babel/traverse@7.25.3: + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + dev: true + + /@types/react-dom@18.3.0: + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + dependencies: + '@types/react': 18.3.3 + dev: true + + /@types/react@18.3.3: + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + dev: true + + /@vitejs/plugin-react@3.1.0(vite@4.5.3): + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.1.0-beta.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + magic-string: 0.27.0 + react-refresh: 0.14.2 + vite: 4.5.3 + transitivePeerDependencies: + - supports-color + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001651 + electron-to-chromium: 1.5.6 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + dev: true + + /caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: true + + /debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /electron-to-chromium@1.5.6: + resolution: {integrity: sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==} + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: true + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true + + /postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + dev: true + + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + dev: false + + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + dev: true + + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: true + + /vite@4.5.3: + resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.41 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true diff --git a/public/potato.png b/public/potato.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb55038cccee2564ee65cabb91d15cf82a4dc98 GIT binary patch literal 16855 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 A*#H0l literal 0 HcmV?d00001 diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..e28140d --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,11 @@ +import { Main } from "./pages"; + +function App() { + let final: JSX.Element =

None

; + + document.location.pathname === "/" && (final =
); + + return final; +} + +export default App; diff --git a/src/components/ButtonRow.tsx b/src/components/ButtonRow.tsx new file mode 100644 index 0000000..60ae069 --- /dev/null +++ b/src/components/ButtonRow.tsx @@ -0,0 +1,44 @@ +import React, { useState } from "react"; +import "../keyframes.css"; + +export interface Buttons { + name: string; + link: string; +} + +export interface ButtonRowProps { + buttons: Buttons[]; +} + +export const ButtonRow = ({ buttons }: ButtonRowProps) => { + const [shown, changeShown] = useState(false); + + const showItems = () => { + changeShown(true); + }; + + const hideItems = () => { + changeShown(false); + }; + + return ( +
+ {buttons.map((button, index) => { + return ( + + {button.name} + + ); + })} +
+ ); +}; diff --git a/src/components/Description.tsx b/src/components/Description.tsx new file mode 100644 index 0000000..baba1c2 --- /dev/null +++ b/src/components/Description.tsx @@ -0,0 +1,9 @@ +import React, { ReactNode } from "react"; + +export interface DescriptionProps { + children: ReactNode; +} + +export const Description = ({ children }: DescriptionProps) => { + return
{children}
; +}; diff --git a/src/components/Header.tsx b/src/components/Header.tsx new file mode 100644 index 0000000..46b05b7 --- /dev/null +++ b/src/components/Header.tsx @@ -0,0 +1,30 @@ +import React from "react"; + +export interface TextLink { + text: string; + link: string; + target?: React.HTMLAttributeAnchorTarget; +} + +export interface TextLinks { + links: TextLink[]; +} + +export const Header = ({ links }: TextLinks) => { + return ( +
+ {links.map((link) => { + return ( + + {link.text} + + ); + })} +
+ ); +}; diff --git a/src/components/Message.tsx b/src/components/Message.tsx new file mode 100644 index 0000000..491e93a --- /dev/null +++ b/src/components/Message.tsx @@ -0,0 +1,9 @@ +import React, { ReactNode } from "react"; + +export interface MessageProps { + children: ReactNode; +} + +export const Message = ({ children }: MessageProps) => { + return
{children}
; +}; diff --git a/src/components/Title.tsx b/src/components/Title.tsx new file mode 100644 index 0000000..f5247ba --- /dev/null +++ b/src/components/Title.tsx @@ -0,0 +1,14 @@ +import { ReactNode } from "react"; + +export interface TitleProps { + children: ReactNode; + glow?: boolean; +} + +export const Title = ({ children, glow }: TitleProps) => { + return ( +
+

{children}

+
+ ); +}; diff --git a/src/components/index.ts b/src/components/index.ts new file mode 100644 index 0000000..5bcf561 --- /dev/null +++ b/src/components/index.ts @@ -0,0 +1,5 @@ +export * from "./Header"; +export * from "./Title"; +export * from "./Description"; +export * from "./ButtonRow"; +export * from "./Message"; diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..3b79355 --- /dev/null +++ b/src/index.css @@ -0,0 +1,147 @@ +@import url("https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"); + +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + + color: rgba(255, 255, 255); + background-color: rgb(0, 0, 0); + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; + + --main: rgb(250, 95, 0); + --primary: rgb(40, 40, 40); + --secondary: rgb(100, 100, 100); + --tertiary: rgb(30, 30, 30); + --text-color-light: rgb(0, 0, 0); + --text-color-dark: rgb(255, 255, 255); +} + +.header { + margin: 10px auto; + text-align: center; +} + +.header-link { + display: inline-block; + padding: 10px; + margin: 0 7px; + font-weight: bold; + text-decoration: none; + color: var(--text-color-dark); + transition: + text-shadow 0.25s, + transform 0.25s, + color 0s; +} + +.header-link:hover { + text-shadow: 0px 0px 12px var(--text-color-dark); + transform: translateY(-5%) scale(1.12, 1.12); +} + +.header-link:active { + color: var(--main); + text-shadow: 0px 0px 12px var(--main); +} + +.head { + text-align: center; + line-height: 3px; +} + +.profile-picture { + display: block; + margin: 0 auto; + cursor: pointer; + transition: transform 0.15s; +} + +.profile-picture:hover { + transform: scale(1.1, 1.1); +} + +.profile-picture:active { + transform: scale(0.95, 0.95); +} + +.title { + display: inline-block; + font-weight: bold; + font-size: 26px; + line-height: 0px; + transition: + color 0.6s, + text-shadow 0.6s, + transform 0.6s; +} + +.glow:hover { + transform: scale(1.12, 1.12); + color: var(--main); + text-shadow: 0px 0px 15px rgba(255, 95, 0, 1); +} + +.description { + margin: 15px 0; + font-size: 15px; +} + +.social-link-area { + margin: 25px 0; + text-align: center; +} + +.social-link-button { + display: inline-block; + font-weight: bold; + text-decoration: none; + padding: 11px 15px; + margin: 7px; + background-color: var(--primary); + color: var(--text-color-dark); + font-size: 16px; + border-radius: 20px; + transition: + background-color 0.25s, + transform 0.25s; + animation: fade-in 0.3s; +} + +.social-link-button:hover { + background-color: var(--secondary); +} + +.social-link-button:active { + background-color: var(--tertiary); + transform: scale(0.92, 0.92); +} + +.message { + width: 75%; + margin: 25px auto; + text-align: center; + padding: 17px; + background-color: var(--primary); + border-radius: 17px; +} + +@media (prefers-color-scheme: light) { + :root { + color: rgb(0, 0, 0); + background-color: rgb(255, 255, 255); + } + + .header-link { + color: var(--text-color-light); + } + + .header-link:hover { + text-shadow: 0 0 12px var(--text-color-light); + } + + button { + background-color: #f9f9f9; + } +} diff --git a/src/keyframes.css b/src/keyframes.css new file mode 100644 index 0000000..879936b --- /dev/null +++ b/src/keyframes.css @@ -0,0 +1,11 @@ +@keyframes fade-in { + 0% { + transform: scale(0.8, 0.8); + opacity: 0; + } + + 100% { + transform: scale(1, 1); + opacity: 1; + } +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..8b1ddb9 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App"; +import "./index.css"; + +ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( + + + , +); diff --git a/src/pages/Main.tsx b/src/pages/Main.tsx new file mode 100644 index 0000000..6833ef3 --- /dev/null +++ b/src/pages/Main.tsx @@ -0,0 +1,83 @@ +import { + Buttons, + ButtonRow, + Message, + Header, + TextLink, + Title, + Description, +} from "../components"; + +export function Main() { + const links: TextLink[] = [ + { + text: "pHosting", + link: "https://hosting.povario.com", + }, + { + text: "pCloud", + link: "https://cloud.povario.com", + }, + { + text: "pSearch", + link: "https://search.povario.com", + }, + { + text: "FreeTube Web", + link: "https://tube.povario.com", + }, + ]; + + const buttons: Buttons[] = [ + { + name: "Lemmy", + link: "https://discuss.tchncs.de/u/powermaker450", + }, + { + name: "Mastodon", + link: "https://mastodon.social/@powermaker450", + }, + { + name: "Github", + link: "https://github.com/powermaker450", + }, + { + name: "Forgejo", + link: "https://git.povario.com/powermaker450", + }, + { + name: "Contact Me", + link: "mailto:contact@povario.com", + }, + ]; + + return ( + <> +
+ + + +
+ @powermaker450 + + Professional Linux Enjoyer + Self Hosts a Lot +
+ + + + + Welcome! + + + + +

You've reached my homepage.

+

+ If you were looking for something, it's probably one of the links + above. +

+
+
+ + ); +} diff --git a/src/pages/index.ts b/src/pages/index.ts new file mode 100644 index 0000000..9b66c37 --- /dev/null +++ b/src/pages/index.ts @@ -0,0 +1 @@ +export * from "./Main"; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3d0a51a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..5a33944 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +})