diff options
93 files changed, 3332 insertions, 0 deletions
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..ce197cb --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ +<!doctype html> +<html lang="en"> + +<head> + <meta charset="UTF-8" /> + <link rel="icon" type="image/svg+xml" href="/vite.svg" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <link rel='stylesheet' href='//cdn.jsdelivr.net/npm/hack-font@3.3.0/build/web/hack-subset.css'> + <title>duckonaut.dev</title> +</head> + +<body> + <div id="app"></div> + <script type="module" src="/src/main.tsx"></script> +</body> + +</html> diff --git a/package.json b/package.json new file mode 100644 index 0000000..b721288 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "duckonaut.dev", + "homepage": "https://duckonaut.dev", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "predeploy": "pnpm run build", + "deploy": "gh-pages -d dist" + }, + "dependencies": { + "preact": "^10.17.0", + "preact-router": "^4.1.2", + "react-slick": "^0.29.0", + "slick-carousel": "^1.8.1" + }, + "devDependencies": { + "@preact/preset-vite": "^2.5.0", + "@types/react-slick": "^0.23.10", + "gh-pages": "^6.0.0", + "typescript": "^5.1.6", + "vite": "^4.4.9" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..590a83e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1207 @@ +lockfileVersion: 5.4 + +specifiers: + '@preact/preset-vite': ^2.5.0 + '@types/react-slick': ^0.23.10 + gh-pages: ^6.0.0 + preact: ^10.17.0 + preact-router: ^4.1.2 + react-slick: ^0.29.0 + slick-carousel: ^1.8.1 + typescript: ^5.1.6 + vite: ^4.4.9 + +dependencies: + preact: 10.17.0 + preact-router: 4.1.2_preact@10.17.0 + react-slick: 0.29.0 + slick-carousel: 1.8.1 + +devDependencies: + '@preact/preset-vite': 2.5.0_preact@10.17.0+vite@4.4.9 + '@types/react-slick': 0.23.10 + gh-pages: 6.0.0 + typescript: 5.1.6 + vite: 4.4.9 + +packages: + + /@ampproject/remapping/2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + dev: true + + /@babel/code-frame/7.22.10: + resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.10 + chalk: 2.4.2 + dev: true + + /@babel/compat-data/7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core/7.22.10: + resolution: {integrity: sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.10 + '@babel/generator': 7.22.10 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-module-transforms': 7.22.9_@babel+core@7.22.10 + '@babel/helpers': 7.22.10 + '@babel/parser': 7.22.10 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.10 + '@babel/types': 7.22.10 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.22.10: + resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.10 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure/7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.10 + dev: true + + /@babel/helper-compilation-targets/7.22.10: + resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor/7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name/7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.10 + dev: true + + /@babel/helper-hoist-variables/7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.10 + dev: true + + /@babel/helper-module-imports/7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.10 + dev: true + + /@babel/helper-module-transforms/7.22.9_@babel+core@7.22.10: + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.10 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + dev: true + + /@babel/helper-plugin-utils/7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access/7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.10 + dev: true + + /@babel/helper-split-export-declaration/7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.10 + dev: true + + /@babel/helper-string-parser/7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier/7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option/7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers/7.22.10: + resolution: {integrity: sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.10 + '@babel/types': 7.22.10 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.22.10: + resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.22.10: + resolution: {integrity: sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.10 + dev: true + + /@babel/plugin-syntax-jsx/7.22.5: + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development/7.22.5: + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/plugin-transform-react-jsx': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx/7.22.5: + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5 + '@babel/types': 7.22.10 + dev: true + + /@babel/template/7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.10 + '@babel/parser': 7.22.10 + '@babel/types': 7.22.10 + dev: true + + /@babel/traverse/7.22.10: + resolution: {integrity: sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.10 + '@babel/generator': 7.22.10 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.10 + '@babel/types': 7.22.10 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.22.10: + resolution: {integrity: sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + dev: 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-arm64/0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + 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-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-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-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.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + dev: true + + /@jridgewell/resolve-uri/3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping/0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@preact/preset-vite/2.5.0_preact@10.17.0+vite@4.4.9: + resolution: {integrity: sha512-BUhfB2xQ6ex0yPkrT1Z3LbfPzjpJecOZwQ/xJrXGFSZD84+ObyS//41RdEoQCMWsM0t7UHGaujUxUBub7WM1Jw==} + peerDependencies: + '@babel/core': 7.x + vite: 2.x || 3.x || 4.x + dependencies: + '@babel/plugin-transform-react-jsx': 7.22.5 + '@babel/plugin-transform-react-jsx-development': 7.22.5 + '@prefresh/vite': 2.4.1_preact@10.17.0+vite@4.4.9 + '@rollup/pluginutils': 4.2.1 + babel-plugin-transform-hook-names: 1.0.2 + debug: 4.3.4 + kolorist: 1.8.0 + resolve: 1.22.4 + vite: 4.4.9 + transitivePeerDependencies: + - preact + - supports-color + dev: true + + /@prefresh/babel-plugin/0.5.0: + resolution: {integrity: sha512-joAwpkUDwo7ZqJnufXRGzUb+udk20RBgfA8oLPBh5aJH2LeStmV1luBfeJTztPdyCscC2j2SmZ/tVxFRMIxAEw==} + dev: true + + /@prefresh/core/1.5.1_preact@10.17.0: + resolution: {integrity: sha512-e0mB0Oxtog6ZpKPDBYbzFniFJDIktuKMzOHp7sguntU+ot0yi6dbhJRE9Css1qf0u16wdSZjpL2W2ODWuU05Cw==} + peerDependencies: + preact: ^10.0.0 + dependencies: + preact: 10.17.0 + dev: true + + /@prefresh/utils/1.2.0: + resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==} + dev: true + + /@prefresh/vite/2.4.1_preact@10.17.0+vite@4.4.9: + resolution: {integrity: sha512-vthWmEqu8TZFeyrBNc9YE5SiC3DVSzPgsOCp/WQ7FqdHpOIJi7Z8XvCK06rBPOtG4914S52MjG9Ls22eVAiuqQ==} + peerDependencies: + preact: ^10.4.0 + vite: '>=2.0.0' + dependencies: + '@babel/core': 7.22.10 + '@prefresh/babel-plugin': 0.5.0 + '@prefresh/core': 1.5.1_preact@10.17.0 + '@prefresh/utils': 1.2.0 + '@rollup/pluginutils': 4.2.1 + preact: 10.17.0 + vite: 4.4.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/react-slick/0.23.10: + resolution: {integrity: sha512-ZiqdencANDZy6sWOWJ54LDvebuXFEhDlHtXU9FFipQR2BcYU2QJxZhvJPW6YK7cocibUiNn+YvDTbt1HtCIBVA==} + dependencies: + '@types/react': 18.2.20 + dev: true + + /@types/react/18.2.20: + resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true + + /@types/scheduler/0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + 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 + + /array-union/1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-uniq/1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: true + + /babel-plugin-transform-hook-names/1.0.2: + resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} + peerDependencies: + '@babel/core': ^7.12.10 + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /browserslist/4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001521 + electron-to-chromium: 1.4.492 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11_browserslist@4.21.10 + dev: true + + /caniuse-lite/1.0.30001521: + resolution: {integrity: sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==} + 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 + + /classnames/2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + + /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 + + /commander/11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + dev: true + + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /csstype/3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /electron-to-chromium/1.4.492: + resolution: {integrity: sha512-36K9b/6skMVwAIEsC7GiQ8I8N3soCALVSHqWHzNDtGemAcI9Xu8hP02cywWM0A794rTHm0b0zHPeLJHtgFVamQ==} + dev: true + + /email-addresses/5.0.0: + resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} + dev: true + + /enquire.js/2.1.6: + resolution: {integrity: sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==} + dev: false + + /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.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /filename-reserved-regex/2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + dev: true + + /filenamify/4.3.0: + resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} + engines: {node: '>=8'} + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + dev: true + + /find-cache-dir/3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /fs-extra/11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /gh-pages/6.0.0: + resolution: {integrity: sha512-FXZWJRsvP/fK2HJGY+Di6FRNHvqFF6gOIELaopDjXXgjeOYSNURcuYwEO/6bwuq6koP5Lnkvnr5GViXzuOB89g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + commander: 11.0.0 + email-addresses: 5.0.0 + filenamify: 4.3.0 + find-cache-dir: 3.3.2 + fs-extra: 11.1.1 + globby: 6.1.0 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globby/6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /graceful-fs/4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-core-module/2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.3 + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json2mq/0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + dependencies: + string-convert: 0.2.1 + dev: false + + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /kolorist/1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /lodash.debounce/4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid/3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /node-releases/2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pinkie-promise/2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: true + + /pkg-dir/4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /postcss/8.4.28: + resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /preact-router/4.1.2_preact@10.17.0: + resolution: {integrity: sha512-uICUaUFYh+XQ+6vZtQn1q+X6rSqwq+zorWOCLWPF5FAsQh3EJ+RsDQ9Ee+fjk545YWQHfUxhrBAaemfxEnMOUg==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.17.0 + dev: false + + /preact/10.17.0: + resolution: {integrity: sha512-SNsI8cbaCcUS5tbv9nlXuCfIXnJ9ysBMWk0WnB6UWwcVA3qZ2O6FxqDFECMAMttvLQcW/HaNZUe2BLidyvrVYw==} + + /react-slick/0.29.0: + resolution: {integrity: sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==} + peerDependencies: + react: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + classnames: 2.3.2 + enquire.js: 2.1.6 + json2mq: 0.2.0 + lodash.debounce: 4.0.8 + resize-observer-polyfill: 1.5.1 + dev: false + + /resize-observer-polyfill/1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + + /resolve/1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /rollup/3.28.0: + resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /semver/6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /slick-carousel/1.8.1: + resolution: {integrity: sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==} + peerDependencies: + jquery: '>=1.8.0' + dev: false + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /string-convert/0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + dev: false + + /strip-outer/1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /trim-repeated/1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /typescript/5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /update-browserslist-db/1.0.11_browserslist@4.21.10: + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.10 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /vite/4.4.9: + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + 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.28 + rollup: 3.28.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true diff --git a/public/assets/games/bumbling-builders/screenshot1.png b/public/assets/games/bumbling-builders/screenshot1.png Binary files differnew file mode 100644 index 0000000..7a8a2db --- /dev/null +++ b/public/assets/games/bumbling-builders/screenshot1.png diff --git a/public/assets/games/bumbling-builders/screenshot2.png b/public/assets/games/bumbling-builders/screenshot2.png Binary files differnew file mode 100644 index 0000000..5eb0a1f --- /dev/null +++ b/public/assets/games/bumbling-builders/screenshot2.png diff --git a/public/assets/games/bumbling-builders/screenshot3.png b/public/assets/games/bumbling-builders/screenshot3.png Binary files differnew file mode 100644 index 0000000..41f65ac --- /dev/null +++ b/public/assets/games/bumbling-builders/screenshot3.png diff --git a/public/assets/games/bumbling-builders/thumbnail.png b/public/assets/games/bumbling-builders/thumbnail.png Binary files differnew file mode 100644 index 0000000..1c723a2 --- /dev/null +++ b/public/assets/games/bumbling-builders/thumbnail.png diff --git a/public/assets/games/dicemask/thumbnail.png b/public/assets/games/dicemask/thumbnail.png Binary files differnew file mode 100644 index 0000000..f9bc9ee --- /dev/null +++ b/public/assets/games/dicemask/thumbnail.png diff --git a/public/assets/games/greachers/screenshot1.png b/public/assets/games/greachers/screenshot1.png Binary files differnew file mode 100644 index 0000000..444106e --- /dev/null +++ b/public/assets/games/greachers/screenshot1.png diff --git a/public/assets/games/greachers/screenshot2.png b/public/assets/games/greachers/screenshot2.png Binary files differnew file mode 100644 index 0000000..e968c4f --- /dev/null +++ b/public/assets/games/greachers/screenshot2.png diff --git a/public/assets/games/greachers/screenshot3.png b/public/assets/games/greachers/screenshot3.png Binary files differnew file mode 100644 index 0000000..6433fb6 --- /dev/null +++ b/public/assets/games/greachers/screenshot3.png diff --git a/public/assets/games/greachers/title.png b/public/assets/games/greachers/title.png Binary files differnew file mode 100644 index 0000000..cdb3e67 --- /dev/null +++ b/public/assets/games/greachers/title.png diff --git a/public/assets/games/miro/screenshot1.png b/public/assets/games/miro/screenshot1.png Binary files differnew file mode 100644 index 0000000..5ba2365 --- /dev/null +++ b/public/assets/games/miro/screenshot1.png diff --git a/public/assets/games/miro/screenshot2.png b/public/assets/games/miro/screenshot2.png Binary files differnew file mode 100644 index 0000000..706e47a --- /dev/null +++ b/public/assets/games/miro/screenshot2.png diff --git a/public/assets/games/miro/screenshot3.png b/public/assets/games/miro/screenshot3.png Binary files differnew file mode 100644 index 0000000..237be9c --- /dev/null +++ b/public/assets/games/miro/screenshot3.png diff --git a/public/assets/games/miro/thumbnail.png b/public/assets/games/miro/thumbnail.png Binary files differnew file mode 100644 index 0000000..152acfc --- /dev/null +++ b/public/assets/games/miro/thumbnail.png diff --git a/public/assets/games/mr-final-boss/screenshot1.png b/public/assets/games/mr-final-boss/screenshot1.png Binary files differnew file mode 100644 index 0000000..d13f639 --- /dev/null +++ b/public/assets/games/mr-final-boss/screenshot1.png diff --git a/public/assets/games/mr-final-boss/screenshot2.png b/public/assets/games/mr-final-boss/screenshot2.png Binary files differnew file mode 100644 index 0000000..6b07d1c --- /dev/null +++ b/public/assets/games/mr-final-boss/screenshot2.png diff --git a/public/assets/games/mr-final-boss/screenshot3.png b/public/assets/games/mr-final-boss/screenshot3.png Binary files differnew file mode 100644 index 0000000..bf6d965 --- /dev/null +++ b/public/assets/games/mr-final-boss/screenshot3.png diff --git a/public/assets/games/mr-final-boss/screenshot4.png b/public/assets/games/mr-final-boss/screenshot4.png Binary files differnew file mode 100644 index 0000000..c6b4cbe --- /dev/null +++ b/public/assets/games/mr-final-boss/screenshot4.png diff --git a/public/assets/games/mr-final-boss/thumbnail.png b/public/assets/games/mr-final-boss/thumbnail.png Binary files differnew file mode 100644 index 0000000..024dab4 --- /dev/null +++ b/public/assets/games/mr-final-boss/thumbnail.png diff --git a/public/assets/games/riff-n-rage/screenshot1.png b/public/assets/games/riff-n-rage/screenshot1.png Binary files differnew file mode 100644 index 0000000..6a9b075 --- /dev/null +++ b/public/assets/games/riff-n-rage/screenshot1.png diff --git a/public/assets/games/riff-n-rage/screenshot2.png b/public/assets/games/riff-n-rage/screenshot2.png Binary files differnew file mode 100644 index 0000000..5b68901 --- /dev/null +++ b/public/assets/games/riff-n-rage/screenshot2.png diff --git a/public/assets/games/riff-n-rage/thumbnail.png b/public/assets/games/riff-n-rage/thumbnail.png Binary files differnew file mode 100644 index 0000000..fa8dcad --- /dev/null +++ b/public/assets/games/riff-n-rage/thumbnail.png diff --git a/public/assets/games/survive-the-temple/cover.png b/public/assets/games/survive-the-temple/cover.png Binary files differnew file mode 100644 index 0000000..5394eeb --- /dev/null +++ b/public/assets/games/survive-the-temple/cover.png diff --git a/public/assets/games/survive-the-temple/screenshot.png b/public/assets/games/survive-the-temple/screenshot.png Binary files differnew file mode 100644 index 0000000..92b8ba9 --- /dev/null +++ b/public/assets/games/survive-the-temple/screenshot.png diff --git a/public/assets/games/thermal-trail/gameart.png b/public/assets/games/thermal-trail/gameart.png Binary files differnew file mode 100644 index 0000000..34c82bc --- /dev/null +++ b/public/assets/games/thermal-trail/gameart.png diff --git a/public/assets/games/thermal-trail/screenshot1.png b/public/assets/games/thermal-trail/screenshot1.png Binary files differnew file mode 100644 index 0000000..4b940aa --- /dev/null +++ b/public/assets/games/thermal-trail/screenshot1.png diff --git a/public/assets/games/thermal-trail/screenshot2.png b/public/assets/games/thermal-trail/screenshot2.png Binary files differnew file mode 100644 index 0000000..0594eb9 --- /dev/null +++ b/public/assets/games/thermal-trail/screenshot2.png diff --git a/public/assets/games/thermal-trail/screenshot3.png b/public/assets/games/thermal-trail/screenshot3.png Binary files differnew file mode 100644 index 0000000..b5a4a6d --- /dev/null +++ b/public/assets/games/thermal-trail/screenshot3.png diff --git a/public/assets/games/thermal-trail/screenshot4.png b/public/assets/games/thermal-trail/screenshot4.png Binary files differnew file mode 100644 index 0000000..1356226 --- /dev/null +++ b/public/assets/games/thermal-trail/screenshot4.png diff --git a/public/assets/games/thermal-trail/thumbnail.png b/public/assets/games/thermal-trail/thumbnail.png Binary files differnew file mode 100644 index 0000000..d779c51 --- /dev/null +++ b/public/assets/games/thermal-trail/thumbnail.png diff --git a/public/assets/games/third-party/screenshot1.jpg b/public/assets/games/third-party/screenshot1.jpg Binary files differnew file mode 100644 index 0000000..6052ea2 --- /dev/null +++ b/public/assets/games/third-party/screenshot1.jpg diff --git a/public/assets/games/third-party/screenshot2.jpg b/public/assets/games/third-party/screenshot2.jpg Binary files differnew file mode 100644 index 0000000..7a16edf --- /dev/null +++ b/public/assets/games/third-party/screenshot2.jpg diff --git a/public/assets/games/third-party/screenshot3.jpg b/public/assets/games/third-party/screenshot3.jpg Binary files differnew file mode 100644 index 0000000..57e2d5b --- /dev/null +++ b/public/assets/games/third-party/screenshot3.jpg diff --git a/public/assets/games/third-party/screenshot4.jpg b/public/assets/games/third-party/screenshot4.jpg Binary files differnew file mode 100644 index 0000000..331594a --- /dev/null +++ b/public/assets/games/third-party/screenshot4.jpg diff --git a/public/assets/games/third-party/thumbnail.png b/public/assets/games/third-party/thumbnail.png Binary files differnew file mode 100644 index 0000000..c3cd158 --- /dev/null +++ b/public/assets/games/third-party/thumbnail.png diff --git a/public/assets/games/wuzmag/screenshot1.png b/public/assets/games/wuzmag/screenshot1.png Binary files differnew file mode 100644 index 0000000..186be8c --- /dev/null +++ b/public/assets/games/wuzmag/screenshot1.png diff --git a/public/assets/games/wuzmag/screenshot2.png b/public/assets/games/wuzmag/screenshot2.png Binary files differnew file mode 100644 index 0000000..683d7ee --- /dev/null +++ b/public/assets/games/wuzmag/screenshot2.png diff --git a/public/assets/games/wuzmag/screenshot3.png b/public/assets/games/wuzmag/screenshot3.png Binary files differnew file mode 100644 index 0000000..b5398bb --- /dev/null +++ b/public/assets/games/wuzmag/screenshot3.png diff --git a/public/assets/games/wuzmag/thumbnail.png b/public/assets/games/wuzmag/thumbnail.png Binary files differnew file mode 100644 index 0000000..0e6dea1 --- /dev/null +++ b/public/assets/games/wuzmag/thumbnail.png diff --git a/public/assets/games/your-left/screenshot1.jpg b/public/assets/games/your-left/screenshot1.jpg Binary files differnew file mode 100644 index 0000000..e76861a --- /dev/null +++ b/public/assets/games/your-left/screenshot1.jpg diff --git a/public/assets/games/your-left/screenshot2.jpg b/public/assets/games/your-left/screenshot2.jpg Binary files differnew file mode 100644 index 0000000..9e0f674 --- /dev/null +++ b/public/assets/games/your-left/screenshot2.jpg diff --git a/public/assets/games/your-left/screenshot3.jpg b/public/assets/games/your-left/screenshot3.jpg Binary files differnew file mode 100644 index 0000000..d025ec1 --- /dev/null +++ b/public/assets/games/your-left/screenshot3.jpg diff --git a/public/assets/games/your-left/thumbnail.png b/public/assets/games/your-left/thumbnail.png Binary files differnew file mode 100644 index 0000000..95f5c17 --- /dev/null +++ b/public/assets/games/your-left/thumbnail.png diff --git a/public/assets/images/android.png b/public/assets/images/android.png Binary files differnew file mode 100644 index 0000000..d1cef88 --- /dev/null +++ b/public/assets/images/android.png diff --git a/public/assets/images/android.svg b/public/assets/images/android.svg new file mode 100644 index 0000000..910aaab --- /dev/null +++ b/public/assets/images/android.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + inkscape:export-ydpi="192" + inkscape:export-xdpi="192" + inkscape:export-filename="C:\Users\hasoh\source\repos\duckonaut.github.io\assets\images\android.png" + sodipodi:docname="android.svg" + id="svg4" + version="1.1" + viewBox="0 0 128 128"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="1072" + inkscape:window-x="-8" + inkscape:cy="64" + inkscape:cx="64" + inkscape:zoom="6.640625" + showgrid="false" + id="namedview6" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="fill:#ffffff" + id="path2" + d="M21.005 43.003c-4.053-.002-7.338 3.291-7.339 7.341l.005 30.736a7.338 7.338 0 007.342 7.343 7.33 7.33 0 007.338-7.342V50.34a7.345 7.345 0 00-7.346-7.337m59.193-27.602l5.123-9.355a1.023 1.023 0 00-.401-1.388 1.022 1.022 0 00-1.382.407l-5.175 9.453c-4.354-1.938-9.227-3.024-14.383-3.019-5.142-.005-10.013 1.078-14.349 3.005L44.45 5.075a1.01 1.01 0 00-1.378-.406 1.007 1.007 0 00-.404 1.38l5.125 9.349c-10.07 5.193-16.874 15.083-16.868 26.438l66.118-.008c.002-11.351-6.79-21.221-16.845-26.427M48.942 29.858a2.772 2.772 0 01.003-5.545 2.78 2.78 0 012.775 2.774 2.776 2.776 0 01-2.778 2.771m30.106-.005a2.77 2.77 0 01-2.772-2.771 2.793 2.793 0 012.773-2.778 2.79 2.79 0 012.767 2.779 2.767 2.767 0 01-2.768 2.77M31.195 44.39l.011 47.635a7.822 7.822 0 007.832 7.831l5.333.002.006 16.264c-.001 4.05 3.291 7.342 7.335 7.342 4.056 0 7.342-3.295 7.343-7.347l-.004-16.26 9.909-.003.004 16.263c0 4.047 3.293 7.346 7.338 7.338 4.056.003 7.344-3.292 7.343-7.344l-.005-16.259 5.352-.004a7.835 7.835 0 007.836-7.834l-.009-47.635-65.624.011zm83.134 5.943a7.338 7.338 0 00-7.341-7.339c-4.053-.004-7.337 3.287-7.337 7.342l.006 30.738a7.334 7.334 0 007.339 7.339 7.337 7.337 0 007.338-7.343l-.005-30.737z" + fill="#A4C439" /> +</svg> diff --git a/public/assets/images/csharp.png b/public/assets/images/csharp.png Binary files differnew file mode 100644 index 0000000..065aa53 --- /dev/null +++ b/public/assets/images/csharp.png diff --git a/public/assets/images/csharp.svg b/public/assets/images/csharp.svg new file mode 100644 index 0000000..77d5b38 --- /dev/null +++ b/public/assets/images/csharp.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + inkscape:export-ydpi="192" + inkscape:export-xdpi="192" + inkscape:export-filename="C:\Users\hasoh\source\repos\duckonaut.github.io\assets\images\csharp.png" + sodipodi:docname="csharp.svg" + id="svg4" + version="1.1" + viewBox="0 0 128 128"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="1072" + inkscape:window-x="-8" + inkscape:cy="50.988035" + inkscape:cx="105.23705" + inkscape:zoom="3.3203125" + inkscape:pagecheckerboard="true" + showgrid="false" + id="namedview6" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="fill:#ffffff" + id="path2" + fill="#68217A" + d="M117.5 33.5l.3-.2c-.6-1.1-1.5-2.1-2.4-2.6L67.1 2.9c-.8-.5-1.9-.7-3.1-.7-1.2 0-2.3.3-3.1.7l-48 27.9c-1.7 1-2.9 3.5-2.9 5.4v55.7c0 1.1.2 2.3.9 3.4l-.2.1c.5.8 1.2 1.5 1.9 1.9l48.2 27.9c.8.5 1.9.7 3.1.7 1.2 0 2.3-.3 3.1-.7l48-27.9c1.7-1 2.9-3.5 2.9-5.4V36.1c.1-.8 0-1.7-.4-2.6zm-53.5 70c-21.8 0-39.5-17.7-39.5-39.5S42.2 24.5 64 24.5c14.7 0 27.5 8.1 34.3 20l-13 7.5C81.1 44.5 73.1 39.5 64 39.5c-13.5 0-24.5 11-24.5 24.5s11 24.5 24.5 24.5c9.1 0 17.1-5 21.3-12.4l12.9 7.6c-6.8 11.8-19.6 19.8-34.2 19.8zM115 62h-3.2l-.9 4h4.1v5h-5l-1.2 6h-4.9l1.2-6h-3.8l-1.2 6h-4.8l1.2-6H94v-5h3.5l.9-4H94v-5h5.3l1.2-6h4.9l-1.2 6h3.8l1.2-6h4.8l-1.2 6h2.2v5zm-12.7 4h3.8l.9-4h-3.8z" /> +</svg> diff --git a/public/assets/images/duckpfp.png b/public/assets/images/duckpfp.png Binary files differnew file mode 100644 index 0000000..bdad92c --- /dev/null +++ b/public/assets/images/duckpfp.png diff --git a/public/assets/images/github.png b/public/assets/images/github.png Binary files differnew file mode 100644 index 0000000..0954581 --- /dev/null +++ b/public/assets/images/github.png diff --git a/public/assets/images/github.svg b/public/assets/images/github.svg new file mode 100644 index 0000000..11f84aa --- /dev/null +++ b/public/assets/images/github.svg @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + inkscape:export-ydpi="192" + inkscape:export-xdpi="192" + inkscape:export-filename="C:\Users\hasoh\source\repos\duckonaut.github.io\assets\images\github.png" + sodipodi:docname="github.svg" + id="svg8" + version="1.1" + viewBox="0 0 128 128"> + <metadata + id="metadata14"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs12" /> + <sodipodi:namedview + inkscape:current-layer="svg8" + inkscape:window-maximized="1" + inkscape:window-y="1072" + inkscape:window-x="-8" + inkscape:cy="64" + inkscape:cx="64" + inkscape:zoom="6.640625" + showgrid="false" + id="namedview10" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <g + style="fill:#ffffff" + id="g6" + fill="#181616"> + <path + style="fill:#ffffff" + id="path2" + d="M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z" + clip-rule="evenodd" + fill-rule="evenodd" /> + <path + style="fill:#ffffff" + id="path4" + d="M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zM31.312 98.012c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237zm4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0" /> + </g> +</svg> diff --git a/public/assets/images/godot.png b/public/assets/images/godot.png Binary files differnew file mode 100644 index 0000000..4f2bc22 --- /dev/null +++ b/public/assets/images/godot.png diff --git a/public/assets/images/godot.svg b/public/assets/images/godot.svg new file mode 100644 index 0000000..6a2176a --- /dev/null +++ b/public/assets/images/godot.svg @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + inkscape:export-ydpi="192" + inkscape:export-xdpi="192" + inkscape:export-filename="C:\Users\hasoh\source\repos\duckonaut.github.io\assets\images\godot.png" + sodipodi:docname="godot.svg" + id="svg8" + version="1.1" + viewBox="0 0 128 128"> + <metadata + id="metadata14"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs12" /> + <sodipodi:namedview + inkscape:current-layer="svg8" + inkscape:window-maximized="1" + inkscape:window-y="-8" + inkscape:window-x="-8" + inkscape:cy="64" + inkscape:cx="64" + inkscape:zoom="6.640625" + showgrid="false" + id="namedview10" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="fill:#ffffff" + id="path2" + d="M52.203 9.61c-5.3 1.18-10.543 2.816-15.457 5.292.113 4.34.395 8.496.961 12.72-1.906 1.222-3.914 2.273-5.695 3.702-1.813 1.395-3.66 2.727-5.301 4.36a101.543 101.543 0 00-10.316-6.004C12.543 33.824 8.94 38.297 6 43.305c2.313 3.629 4.793 7.273 7.086 10.117v30.723c.059 0 .113.003.168.007L32.09 85.97a2.027 2.027 0 011.828 1.875l.582 8.316 16.426 1.172 1.133-7.672a2.03 2.03 0 012.007-1.734h19.868a2.03 2.03 0 012.007 1.734l1.133 7.672 16.43-1.172.578-8.316a2.027 2.027 0 011.828-1.875l18.828-1.817c.055-.004.11-.007.168-.007V81.69h.008V53.42c2.652-3.335 5.16-7.019 7.086-10.116-2.941-5.008-6.543-9.48-10.395-13.625a101.543 101.543 0 00-10.316 6.004c-1.64-1.633-3.488-2.965-5.3-4.36-1.782-1.43-3.79-2.48-5.696-3.703.566-4.223.848-8.379.96-12.719-4.913-2.476-10.155-4.113-15.456-5.293-2.117 3.559-4.055 7.41-5.738 11.176-2-.332-4.008-.457-6.02-.48V20.3c-.016 0-.027.004-.039.004s-.023-.004-.04-.004v.004c-2.01.023-4.019.148-6.019.48-1.683-3.765-3.62-7.617-5.738-11.176zM37.301 54.55c6.27 0 11.351 5.079 11.351 11.345 0 6.27-5.082 11.351-11.351 11.351-6.266 0-11.348-5.082-11.348-11.351 0-6.266 5.082-11.344 11.348-11.344zm53.398 0c6.266 0 11.348 5.079 11.348 11.345 0 6.27-5.082 11.351-11.348 11.351-6.27 0-11.351-5.082-11.351-11.351 0-6.266 5.082-11.344 11.351-11.344zM64 61.189c2.016 0 3.656 1.488 3.656 3.32v10.449c0 1.832-1.64 3.32-3.656 3.32-2.02 0-3.652-1.488-3.652-3.32v-10.45c0-1.831 1.632-3.32 3.652-3.32zm0 0" /> + <path + style="fill:#ffffff" + id="path4" + fill="#010102" + d="M98.008 89.84l-.582 8.36a2.024 2.024 0 01-1.88 1.878l-20.062 1.434c-.046.004-.097.004-.144.004-.996 0-1.86-.73-2.004-1.73l-1.152-7.806H55.816l-1.152 7.805a2.026 2.026 0 01-2.148 1.727l-20.063-1.434a2.024 2.024 0 01-1.879-1.879l-.582-8.36-16.937-1.632c.008 1.82.03 3.816.03 4.211 0 17.887 22.692 26.484 50.88 26.582h.07c28.188-.098 50.871-8.695 50.871-26.582 0-.402.024-2.39.031-4.211zm0 0" /> + <path + style="fill:#ffffff" + id="path6" + d="M45.922 66.566a7.531 7.531 0 01-7.535 7.532 7.534 7.534 0 01-7.535-7.532 7.534 7.534 0 017.535-7.53 7.531 7.531 0 017.535 7.53m36.156 0a7.53 7.53 0 007.531 7.532 7.531 7.531 0 100-15.063 7.53 7.53 0 00-7.53 7.531" /> +</svg> diff --git a/public/assets/images/html5.png b/public/assets/images/html5.png Binary files differnew file mode 100644 index 0000000..e0dcb1f --- /dev/null +++ b/public/assets/images/html5.png diff --git a/public/assets/images/html5.svg b/public/assets/images/html5.svg new file mode 100644 index 0000000..70959e4 --- /dev/null +++ b/public/assets/images/html5.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="192" + inkscape:export-xdpi="192" + inkscape:export-filename="C:\Users\hasoh\source\repos\duckonaut.github.io\assets\images\html5.png" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="html5.svg" + id="svg4" + version="1.1" + viewBox="0 0 128 128"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="1072" + inkscape:window-x="-8" + inkscape:cy="64" + inkscape:cx="64" + inkscape:zoom="6.640625" + showgrid="false" + id="namedview6" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="fill:#ffffff" + id="path2" + d="M9.032 2l10.005 112.093 44.896 12.401 45.02-12.387L118.968 2H9.032zm89.126 26.539l-.627 7.172L97.255 39H44.59l1.257 14h50.156l-.336 3.471-3.233 36.119-.238 2.27L64 102.609v.002l-.034.018-28.177-7.423L33.876 74h13.815l.979 10.919L63.957 89H64v-.546l15.355-3.875L80.959 67H33.261l-3.383-38.117L29.549 25h68.939l-.33 3.539z" + fill="#E44D26" /> +</svg> diff --git a/public/assets/images/monogame.png b/public/assets/images/monogame.png Binary files differnew file mode 100644 index 0000000..8648bcc --- /dev/null +++ b/public/assets/images/monogame.png diff --git a/public/assets/images/pfp.png b/public/assets/images/pfp.png Binary files differnew file mode 100644 index 0000000..a18b664 --- /dev/null +++ b/public/assets/images/pfp.png diff --git a/public/assets/images/placeholder.png b/public/assets/images/placeholder.png Binary files differnew file mode 100644 index 0000000..97084c7 --- /dev/null +++ b/public/assets/images/placeholder.png diff --git a/public/assets/images/unity.png b/public/assets/images/unity.png Binary files differnew file mode 100644 index 0000000..5fea459 --- /dev/null +++ b/public/assets/images/unity.png diff --git a/public/assets/images/unity.svg b/public/assets/images/unity.svg new file mode 100644 index 0000000..b9d1859 --- /dev/null +++ b/public/assets/images/unity.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + inkscape:export-ydpi="192" + inkscape:export-xdpi="192" + inkscape:export-filename="C:\Users\hasoh\source\repos\duckonaut.github.io\assets\images\unity.png" + sodipodi:docname="unity.svg" + id="svg4" + version="1.1" + viewBox="0 0 128 128"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="1072" + inkscape:window-x="-8" + inkscape:cy="64" + inkscape:cx="64" + inkscape:zoom="6.640625" + showgrid="false" + id="namedview6" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="fill:#ffffff" + id="path2" + fill="#110B09" + d="M82.48 63.578l22.418-38.402 10.832 38.402-10.832 38.398zm-10.926 6.238l22.422 38.402-39.047-9.922-28.211-28.48zM93.969 18.93L71.555 57.34H26.719L54.93 28.855zm32 31.582L112.293.031 61.25 13.559l-7.555 13.18-15.336-.109L1 63.582l37.359 36.949h.004l15.324-.113 7.57 13.176 51.035 13.527 13.676-50.473-7.762-13.07zm0 0" /> +</svg> diff --git a/public/assets/images/windows.png b/public/assets/images/windows.png Binary files differnew file mode 100644 index 0000000..a09553e --- /dev/null +++ b/public/assets/images/windows.png diff --git a/public/assets/images/windows.svg b/public/assets/images/windows.svg new file mode 100644 index 0000000..cb347b6 --- /dev/null +++ b/public/assets/images/windows.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + inkscape:export-ydpi="192" + inkscape:export-xdpi="192" + inkscape:export-filename="C:\Users\hasoh\source\repos\duckonaut.github.io\assets\images\windows.png" + sodipodi:docname="windows.svg" + id="svg4" + version="1.1" + viewBox="0 0 128 128"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="-8" + inkscape:window-x="-8" + inkscape:cy="64" + inkscape:cx="64" + inkscape:zoom="6.640625" + showgrid="false" + id="namedview6" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="fill:#ffffff" + id="path2" + d="M126 1.637l-67 9.834v49.831l67-.534zM1.647 66.709l.003 42.404 50.791 6.983-.04-49.057zm56.82.68l.094 49.465 67.376 9.509.016-58.863zM1.61 19.297l.047 42.383 50.791-.289-.023-49.016z" + fill="#00ADEF" /> +</svg> diff --git a/public/assets/images/xamarin.png b/public/assets/images/xamarin.png Binary files differnew file mode 100644 index 0000000..91ce4ac --- /dev/null +++ b/public/assets/images/xamarin.png diff --git a/public/assets/loose/github-yellow.svg b/public/assets/loose/github-yellow.svg new file mode 100644 index 0000000..f81e9b9 --- /dev/null +++ b/public/assets/loose/github-yellow.svg @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="github-yellow.svg" + id="svg8" + version="1.1" + viewBox="0 0 24 24" + height="24px" + width="24px"> + <metadata + id="metadata14"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs12" /> + <sodipodi:namedview + inkscape:current-layer="g6" + inkscape:window-maximized="1" + inkscape:window-y="-8" + inkscape:window-x="-8" + inkscape:cy="8.4011569" + inkscape:cx="12" + inkscape:zoom="35.416667" + showgrid="false" + id="namedview10" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <g + id="g6" + data-name="Layer 2"> + <rect + id="rect2" + opacity="0" + transform="rotate(180 12 12)" + height="24" + width="24" /> + <path + style="fill:#e5be6c;fill-opacity:1" + id="path4" + data-name="github" + d="M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1" /> + </g> +</svg> diff --git a/public/assets/loose/itch-yellow.svg b/public/assets/loose/itch-yellow.svg new file mode 100644 index 0000000..008c7b1 --- /dev/null +++ b/public/assets/loose/itch-yellow.svg @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="itch-yellow.svg" + id="svg4" + version="1.1" + viewBox="0 0 32 32" + height="32px" + width="32px"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="-8" + inkscape:window-x="-8" + inkscape:cy="17.505882" + inkscape:cx="16" + inkscape:zoom="26.5625" + showgrid="false" + id="namedview6" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="fill:#e5be6c;fill-opacity:1" + id="path2" + d="M 16 5 C 12.748 5 8.3121094 5.0508594 7.4121094 5.1308594 C 6.4021094 5.7368594 4.4028125 8.0309531 4.3828125 8.6269531 L 4.3828125 9.6269531 C 4.3828125 10.889953 5.5657188 12 6.6367188 12 C 7.9197187 12 8.9902344 10.929969 8.9902344 9.6679688 C 8.9902344 10.929969 10.0305 12 11.3125 12 C 12.6055 12 13.605469 10.930969 13.605469 9.6679688 C 13.605469 10.929969 14.695281 12 15.988281 12 L 16.009766 12 C 17.302766 12 18.392578 10.930969 18.392578 9.6679688 C 18.392578 10.929969 19.402547 12 20.685547 12 C 21.968547 12 23.009766 10.930969 23.009766 9.6679688 C 23.009766 10.929969 24.080281 12 25.363281 12 C 26.434281 12 27.615234 10.889953 27.615234 9.6269531 L 27.615234 8.6269531 C 27.595234 8.0309531 25.595938 5.7368594 24.585938 5.1308594 C 21.443938 5.0198594 19.252 5 16 5 z M 13.550781 11.742188 C 12.497781 13.552188 9.8523125 13.573906 8.8203125 11.753906 C 8.1903125 12.845906 6.7642969 13.267547 6.1542969 13.060547 C 5.9762969 14.959547 5.8534844 24.70875 7.1464844 26.34375 C 10.943484 27.22875 21.164516 27.20975 24.853516 26.34375 C 26.348516 24.81975 26.013703 14.821547 25.845703 13.060547 C 25.235703 13.267547 23.809453 12.845906 23.189453 11.753906 C 22.146453 13.573906 19.501219 13.552188 18.449219 11.742188 C 18.124219 12.332187 17.367 13.109375 16 13.109375 C 14.997 13.148375 14.051781 12.607187 13.550781 11.742188 z M 11.419922 14 C 12.219922 14 12.950078 14.000469 13.830078 14.980469 C 15.280078 14.830469 16.719922 14.830469 18.169922 14.980469 C 19.059922 14.010469 19.780078 14.009766 20.580078 14.009766 C 23.160078 14.009766 23.780937 17.819609 24.710938 21.099609 C 25.550938 24.149609 24.429062 24.230469 23.039062 24.230469 C 20.969062 24.150469 19.820313 22.650625 19.820312 21.140625 C 17.890313 21.460625 14.809688 21.580625 12.179688 21.140625 C 12.179688 22.650625 11.030938 24.150469 8.9609375 24.230469 C 7.5709375 24.230469 6.4490625 24.149609 7.2890625 21.099609 C 8.2190625 17.799609 8.8399219 14.009766 11.419922 14.009766 L 11.419922 14 z M 16 16.876953 C 16 16.876953 14.306 18.439375 14 18.984375 L 15.107422 18.943359 L 15.107422 19.910156 C 15.107422 19.968156 15.926 19.917969 16 19.917969 C 16.447 19.934969 16.892578 19.951156 16.892578 19.910156 L 16.892578 18.943359 L 18 18.984375 C 17.694 18.438375 16 16.876953 16 16.876953 z" /> +</svg> diff --git a/public/assets/loose/twitter-yellow.svg b/public/assets/loose/twitter-yellow.svg new file mode 100644 index 0000000..ec6168d --- /dev/null +++ b/public/assets/loose/twitter-yellow.svg @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="twitter-yellow.svg" + xml:space="preserve" + style="enable-background:new 0 0 512.002 512.002;" + viewBox="0 0 512.002 512.002" + y="0px" + x="0px" + id="Layer_1" + version="1.1"><metadata + id="metadata39"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs37" /><sodipodi:namedview + inkscape:current-layer="Layer_1" + inkscape:window-maximized="0" + inkscape:window-y="0" + inkscape:window-x="0" + inkscape:cy="256.00101" + inkscape:cx="256.00101" + inkscape:zoom="1.6601497" + showgrid="false" + id="namedview35" + inkscape:window-height="1017" + inkscape:window-width="1581" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> +<path + id="path2" + d="M500.398,94.784c-8.043,3.567-16.313,6.578-24.763,9.023c10.004-11.314,17.631-24.626,22.287-39.193 c1.044-3.265-0.038-6.839-2.722-8.975c-2.681-2.137-6.405-2.393-9.356-0.644c-17.945,10.643-37.305,18.292-57.605,22.764 c-20.449-19.981-48.222-31.353-76.934-31.353c-60.606,0-109.913,49.306-109.913,109.91c0,4.773,0.302,9.52,0.9,14.201 c-75.206-6.603-145.124-43.568-193.136-102.463c-1.711-2.099-4.347-3.231-7.046-3.014c-2.7,0.211-5.127,1.734-6.491,4.075 c-9.738,16.709-14.886,35.82-14.886,55.265c0,26.484,9.455,51.611,26.158,71.246c-5.079-1.759-10.007-3.957-14.711-6.568 c-2.525-1.406-5.607-1.384-8.116,0.054c-2.51,1.439-4.084,4.084-4.151,6.976c-0.012,0.487-0.012,0.974-0.012,1.468 c0,39.531,21.276,75.122,53.805,94.52c-2.795-0.279-5.587-0.684-8.362-1.214c-2.861-0.547-5.802,0.456-7.731,2.638 c-1.932,2.18-2.572,5.219-1.681,7.994c12.04,37.591,43.039,65.24,80.514,73.67c-31.082,19.468-66.626,29.665-103.939,29.665 c-7.786,0-15.616-0.457-23.279-1.364c-3.807-0.453-7.447,1.795-8.744,5.416c-1.297,3.622,0.078,7.66,3.316,9.736 c47.935,30.735,103.361,46.98,160.284,46.98c111.903,0,181.907-52.769,220.926-97.037c48.657-55.199,76.562-128.261,76.562-200.451 c0-3.016-0.046-6.061-0.139-9.097c19.197-14.463,35.724-31.967,49.173-52.085c2.043-3.055,1.822-7.094-0.545-9.906 C507.7,94.204,503.76,93.294,500.398,94.784z" + style="fill:#e5be6c;fill-opacity:1" /> +<g + id="g4"> +</g> +<g + id="g6"> +</g> +<g + id="g8"> +</g> +<g + id="g10"> +</g> +<g + id="g12"> +</g> +<g + id="g14"> +</g> +<g + id="g16"> +</g> +<g + id="g18"> +</g> +<g + id="g20"> +</g> +<g + id="g22"> +</g> +<g + id="g24"> +</g> +<g + id="g26"> +</g> +<g + id="g28"> +</g> +<g + id="g30"> +</g> +<g + id="g32"> +</g> +</svg> diff --git a/public/assets/loose/web-yellow.svg b/public/assets/loose/web-yellow.svg new file mode 100644 index 0000000..b61babc --- /dev/null +++ b/public/assets/loose/web-yellow.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="web-yellow.svg" + id="svg4" + version="1.1" + viewBox="0 0 24 24" + height="24px" + width="24px"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="-8" + inkscape:window-x="-8" + inkscape:cy="12" + inkscape:cx="12" + inkscape:zoom="35.416667" + showgrid="false" + id="namedview6" + inkscape:window-height="1017" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + style="stroke:#e5be6c;stroke-opacity:1" + id="path2" + d="M2,8 C2,8 5.5,9 7,10 C8.5,11 7.56437103,12.4191614 8,13 C8.43562897,13.5808386 10,12 10,15 C10,18 13,16 13,19 C13,22 15.5,21.5 16,20 C16.5,18.5 18.2333023,16.8664183 18,15 C17.7666977,13.1335817 17,12 15,12 C13,12 11.5,11.5 11,10 C10.5,8.5 14,8 13,5 C12,2 13,1 13,1 M23,12 C23,18.075 18.075,23 12,23 C5.925,23 1,18.075 1,12 C1,5.925 5.925,1 12,1 C18.075,1 23,5.925 23,12 L23,12 Z" + stroke-width="2" + stroke="#000" + fill="none" /> +</svg> diff --git a/public/assets/projects/spirit-mod/Demo1.gif b/public/assets/projects/spirit-mod/Demo1.gif Binary files differnew file mode 100644 index 0000000..324de0c --- /dev/null +++ b/public/assets/projects/spirit-mod/Demo1.gif diff --git a/public/assets/projects/spirit-mod/Demo2.gif b/public/assets/projects/spirit-mod/Demo2.gif Binary files differnew file mode 100644 index 0000000..4e87fd8 --- /dev/null +++ b/public/assets/projects/spirit-mod/Demo2.gif diff --git a/public/assets/projects/spirit-mod/Thumbnail.png b/public/assets/projects/spirit-mod/Thumbnail.png Binary files differnew file mode 100644 index 0000000..55f8d7e --- /dev/null +++ b/public/assets/projects/spirit-mod/Thumbnail.png diff --git a/public/assets/projects/spirit-mod/Thumbnail.webp b/public/assets/projects/spirit-mod/Thumbnail.webp Binary files differnew file mode 100644 index 0000000..0250f72 --- /dev/null +++ b/public/assets/projects/spirit-mod/Thumbnail.webp diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..4cd5008 --- /dev/null +++ b/src/app.css @@ -0,0 +1,114 @@ +#app-main { + font-family: 'Hack', monospace; + max-width: 1280px; + margin: 0 auto; + padding: 2rem 2rem 2rem 2rem; + text-align: center; +} + +#app { + margin: 0 auto; + display: flex; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.preact:hover { + filter: drop-shadow(0 0 2em #673ab8aa); +} + +.main-info { + margin-top: 80px; + text-align: center; +} + +.main-info-image { + width: 128px; + height: 128px; + border-radius: 100%; + margin: 6px 6px 6px 6px; +} + +.main-info-title { + font-size: 42pt; +} + +.main-info-subtitle { + font-size: 26pt; + font-style: italic; + color: #5c6370; +} + +.quiet { + color: var(--color-gray); + font-style: italic; +} + +.section { + font-size: 22pt; +} + +.highlight { + color: #e5c07b; +} + +@media (max-width: 480px) { + .main-info-title { + font-size: 32pt; + } + + .main-info-subtitle { + font-size: 18pt; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .main-info-title { + font-size: 42pt; + } + + .main-info-subtitle { + font-size: 26pt; + } +} + +@media (min-width: 1150px) { + .main-info-title { + font-size: 42pt; + } + + .main-info-subtitle { + font-size: 26pt; + } +} + + +@media (max-width: 480px) { + .about-paragraph { + margin: auto; + font-size: 16pt; + max-width: 90%; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .about-paragraph { + margin: auto; + font-size: 18pt; + max-width: 80%; + } +} + +@media (min-width: 1150px) { + .about-paragraph { + margin: auto; + font-size: 18pt; + max-width: 60%; + } +} diff --git a/src/app.tsx b/src/app.tsx new file mode 100644 index 0000000..771b84a --- /dev/null +++ b/src/app.tsx @@ -0,0 +1,23 @@ +import './app.css' +import { Navbar } from './components/navbar' +import Contact from './pages/contact'; +import Games from './pages/games'; +import Home from './pages/home' +import { Router, Route } from 'preact-router'; +import Projects from './pages/projects'; + +export function App() { + return ( + <> + <Navbar /> + <div id="app-main"> + <Router> + <Route path="/" component={Home} /> + <Route path="/contact" component={Contact} /> + <Route path="/games" component={Games} /> + <Route path="/projects" component={Projects} /> + </Router> + </div> + </> + ) +} diff --git a/src/components/carousel.css b/src/components/carousel.css new file mode 100644 index 0000000..f311805 --- /dev/null +++ b/src/components/carousel.css @@ -0,0 +1,68 @@ +.carousel-content { + align-self: center; + max-height: 100%; + white-space: nowrap; + -ms-overflow-style: none; /* hide scrollbar in IE and Edge */ + scrollbar-width: none; /* hide scrollbar in Firefox */ +} + +.carousel-item { + width: 100%; + flex-shrink: 0; + height: auto; + float: left; + text-align: center; + transition: all 250ms linear; + white-space: nowrap; + vertical-align: middle; +} + +.slick-slider { + margin: 24px; +} + +.slick-slide { + margin: 0 auto; + border-radius: 10px; + text-align: center; + float: none !important; + display: inline-block !important; + vertical-align: middle; + min-height: 1px; +} + +.carousel-item > * { + border-radius: 10px; + vertical-align: middle; + width: 100%; + height: auto; +} + +.slick-dots li button::before { + color: var(--color-fg) !important; +} + +@media (max-width: 1150px) { + .carousel-wrapper { + margin: 60px auto; + width: 330px; + height: 220px; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .carousel-wrapper { + margin: 60px auto; + width: 480px; + height: 360px; + } +} + +@media (min-width: 1150px) { + .carousel-wrapper { + float: right; + width: 480px; + height: 360px; + } +} + diff --git a/src/components/carousel.tsx b/src/components/carousel.tsx new file mode 100644 index 0000000..af9279b --- /dev/null +++ b/src/components/carousel.tsx @@ -0,0 +1,31 @@ +import './carousel.css'; +import Slider, { Settings } from 'react-slick'; +import "slick-carousel/slick/slick.css"; +import "slick-carousel/slick/slick-theme.css"; + +export default function Carousel(props: { children: any }) { + const settings: Settings = { + dots: true, + infinite: true, + speed: 500, + slidesToShow: 1, + slidesToScroll: 1 + }; + + return ( + <div class="carousel-wrapper"> + <Slider {...settings}> + { + props.children instanceof Array ? + props.children.map((child: any) => { + return ( + <div class="carousel-item">{child}</div> + ); + }) + : + <div class="carousel-item">{props.children}</div> + } + </Slider> + </div> + ); +} diff --git a/src/components/navbar-item.tsx b/src/components/navbar-item.tsx new file mode 100644 index 0000000..c2f2306 --- /dev/null +++ b/src/components/navbar-item.tsx @@ -0,0 +1,8 @@ +import * as preact from "preact"; + +export function NavbarItem(props: any) { + const { name, href, children, rel } = props; + + return (preact.createElement("div", { className: "navbar-item" }, + preact.createElement("a", { className: "navbar-item-" + name, href: href, rel: rel }, children))); +} diff --git a/src/components/navbar.css b/src/components/navbar.css new file mode 100644 index 0000000..18390bb --- /dev/null +++ b/src/components/navbar.css @@ -0,0 +1,270 @@ +.navbar-container { + position: fixed; + background-color: var(--color-bg); + top: 0; + width: 100%; + z-index: 9999; + margin: auto; + width: 100%; +} + +.navbar { + margin-top: 20pt; + margin-bottom: 12pt; + align-items: center; + justify-content: center; + align-self: center; +} + +.navbar-icon { + font-family: Hack, monospace; + font-weight: 500; + color: #646cff; + font-size: 1.5em; + padding: 0.5em; + margin: 0.5em; +} + +.navbar { + align-self: center; + display: block; + width: 100%; + text-align: center; +} + +.navbar-item { + font-family: Hack, monospace; + font-size: 18pt; + text-align: center; + float: none; + clear: left; + display: inline-block; + margin: 0 0.25em; + transition: all 0.2s ease-in-out; +} + +.navbar-item:hover { + padding-left: 0.5em; + padding-right: 0.5em; + transition: all 0.2s ease-in-out; +} + +.navbar-current { + font-weight: bold; +} + +/* home */ + +.navbar-item-home:link { + color: #98C379; + text-decoration: none; +} + +.navbar-item-home:visited { + color: #98C379; + text-decoration: none; +} + +.navbar-item-home:hover { + color: #afd088; + text-decoration: underline; +} + +.navbar-item-home:active { + color: #afd088; + text-decoration: underline; +} + +/* games */ + +.navbar-item-games:link { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-games:visited { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-games:hover { + color: #ef7a80; + text-decoration: underline; +} + +.navbar-item-games:active { + color: #ef7a90; + text-decoration: underline; +} + +/* projects */ + +.navbar-item-projects:link { + color: #d19a66; + text-decoration: none; +} + +.navbar-item-projects:visited { + color: #d19a66; + text-decoration: none; +} + +.navbar-item-projects:hover { + color: #dfa873; + text-decoration: underline; +} + +.navbar-item-projects:active { + color: #dffa73; + text-decoration: underline; +} + +/* github */ + +.navbar-item-github:link { + color: #c678dd; + text-decoration: none; +} + +.navbar-item-github:visited { + color: #c678dd; + text-decoration: none; +} + +.navbar-item-github:hover { + color: #d286eb; + text-decoration: underline; +} + +.navbar-item-github:active { + color: #d286eb; + text-decoration: underline; +} + +/* itch */ + +.navbar-item-itch:link { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-itch:visited { + color: #e06c75; + text-decoration: none; +} + +.navbar-item-itch:hover { + color: #ef7a80; + text-decoration: underline; +} + +.navbar-item-itch:active { + color: #ef7a90; + text-decoration: underline; +} + +/* twitter */ + +.navbar-item-twitter:link { + text-decoration: none; +} + +.navbar-item-twitter:visited { + text-decoration: none; +} + +.navbar-item-twitter:hover { + text-decoration: underline; +} + +.navbar-item-twitter:active { + text-decoration: underline; +} + +/* mastodon */ + +.navbar-item-mastodon:link { + color: #6a4ae0; + text-decoration: none; +} + +.navbar-item-mastodon:visited { + color: #6a4ae0; + text-decoration: none; +} + +.navbar-item-mastodon:hover { + color: #7a55e8; + text-decoration: underline; +} + +.navbar-item-mastodon:active { + color: #7a55e8; + text-decoration: underline; +} + +/* cohost */ + +.navbar-item-cohost:link { + color: #b63b73; + text-decoration: none; +} + +.navbar-item-cohost:visited { + color: #b63b73; + text-decoration: none; +} + +.navbar-item-cohost:hover { + color: #c54a7f; + text-decoration: underline; +} + +.navbar-item-cohost:active { + color: #c54a7f; + text-decoration: underline; +} + +/* tumblr */ + +.navbar-item-tumblr:link { + color: #00b8ff; + text-decoration: none; +} + +.navbar-item-tumblr:visited { + color: #00b8ff; + text-decoration: none; +} + +.navbar-item-tumblr:hover { + color: #00c5ff; + text-decoration: underline; +} + +.navbar-item-tumblr:active { + color: #00c5ff; + text-decoration: underline; +} + +/* contact */ + +.navbar-item-contact:link { + color: #e5c07b; + text-decoration: none; +} + +.navbar-item-contact:visited { + color: #e5c07b; + text-decoration: none; +} + +.navbar-item-contact:hover { + color: #f2ce89; + text-decoration: underline; +} + +.navbar-item-contact:active { + color: #f2ce89; + text-decoration: underline; +} diff --git a/src/components/navbar.tsx b/src/components/navbar.tsx new file mode 100644 index 0000000..ba3d7d7 --- /dev/null +++ b/src/components/navbar.tsx @@ -0,0 +1,20 @@ +import './navbar.css'; + +import { NavbarItem } from './navbar-item'; + +export function Navbar() { + return ( + <div class="navbar-container"> + <div class="navbar"> + <NavbarItem name="home" href="/">[Home]</NavbarItem> + <NavbarItem name="games" href="/games">[Games]</NavbarItem> + <NavbarItem name="projects" href="/projects">[Other Projects]</NavbarItem> + <NavbarItem name="github" href="https://github.com/Duckonaut">[GitHub]</NavbarItem> + <NavbarItem name="itch" href="https://duckonaut.itch.io/">[Itch.io]</NavbarItem> + <NavbarItem name="twitter" href="https://twitter.com/duckonaut">[Twitter]</NavbarItem> + <NavbarItem name="mastodon" href="https://mastodon.gamedev.place/@duckonaut" rel="me">[Mastodon]</NavbarItem> + <NavbarItem name="contact" href="/contact">[Contact]</NavbarItem> + </div> + </div> + ); +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..cf6f743 --- /dev/null +++ b/src/index.css @@ -0,0 +1,121 @@ +:root { + font-weight: 400; + + color-scheme: light dark; + color: var(--color-fg); + background-color: var(--color-bg); + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; + + /* variables */ + --color-bg: #161f30; + --color-fg: #a3b3d9; + --color-search-blue: #083C5A; + --color-white: #a3b3d9; + --color-gray: #647089; + --color-dark-gray: #3e4451; + --color-context: #6b737f; + --color-light-gray: #c8ccd4; + --color-tree-gray: #1b1f27; + --color-blue: #6080dd; + --color-vivid-blue: #61afef; + --color-dark-blue: #223E55; + --color-folder-blue: #61afef; + --color-light-blue: #a3b3d9; + --color-green: #449871; + --color-cyan: #56b6c2; + --color-light-green: #98c379; + --color-red: #c13251; + --color-orange: #c18a56; + --color-light-red: #e06c75; + --color-yellow: #e5c07b; + --color-purple: #604bd8; + --color-magenta: #b071fc; +} + +a:link { + font-weight: 500; + color: #4fc1ff; + text-decoration: inherit; +} + +a:visited { + color: #4fc1ff; +} + +a:hover { + color: #60d2ff; +} + +a:active { + color: #66d8ff; +} + + +body { + margin: 0; + /* display: flex; */ + /* place-items: center; */ + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +span { + display: inline; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} + +.hack { + font-family: Hack, monospace; + font-weight: 500; +} + +.grow { + transition: all .2s ease-in-out; + transform: scale(1); +} + +.grow:hover { + transition: all .2s ease-in-out; + transform: scale(1.1); +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..846cd1e --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,5 @@ +import { render } from 'preact' +import { App } from './app.tsx' +import './index.css' + +render(<App />, document.getElementById('app')!) diff --git a/src/pages/contact.css b/src/pages/contact.css new file mode 100644 index 0000000..93b63bd --- /dev/null +++ b/src/pages/contact.css @@ -0,0 +1,22 @@ +.contact-container { + width: 100%; + max-width: 1120px; + margin: auto; + margin-top: 24pt; + margin-bottom: 48pt; + align-items: center; + justify-content: center; + align-self: center; + font-size: 18pt; +} + +.contact { + margin-top: 24pt; + margin-bottom: 8pt; + font-size: 20pt; + color: #98C379; +} + +.highlight { + color: #e5c07b; +} diff --git a/src/pages/contact.tsx b/src/pages/contact.tsx new file mode 100644 index 0000000..efc9eba --- /dev/null +++ b/src/pages/contact.tsx @@ -0,0 +1,34 @@ +import './contact.css'; + +export default function Contact() { + return ( + <div class="main-info"> + <div class="main-info-title"> + Contact + </div> + <div class="contact-container"> + <div class="contact"> + Discord + </div> + + <span class="quiet">usually the fastest way to reach me</span> + <br /> + <span class="highlight">EchoDuck</span>#7866 + + <div class="contact"> + Matrix + </div> + <span class="quiet">for the FOSS folks</span> + <br /> + <span class="highlight">@echoduck</span>:matrix.org + + <div class="contact"> + Email + </div> + <span class="quiet">I check my email daily</span> + <br /> + <span class="highlight">duckonaut</span>@gmail.com + </div> + </div> + ); +} diff --git a/src/pages/games.css b/src/pages/games.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/pages/games.css diff --git a/src/pages/games.tsx b/src/pages/games.tsx new file mode 100644 index 0000000..314813d --- /dev/null +++ b/src/pages/games.tsx @@ -0,0 +1,393 @@ +import Carousel from '../components/carousel'; +import './projects.css'; + +export default function Games() { + return ( + <> + <div class="main-info"> + <div class="main-info-title"> + Game Projects + </div> + <div class="main-info-subtitle"> + my game projects, mostly from game jams + </div> + </div> + <div class="projects-container"> + <div class="project"> + <div class="project-title"><a href="https://jellingfish-games.itch.io/mr-final-boss">Mr. Final Boss</a> + </div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/unity.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + <img class="grow icon" src="./assets/images/html5.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + The legends say that one day, brave Heroes will slay the evil and malicious Ignatius, the Chaos + Bringer... But YOU won't go down without a fight! Be the bossfight everyone is dreading and hunt + down as many Heroes as you can in your last stand using a variety of abilities you can choose from! + <br /> + Game made in 72 hours for <a href="https://ldjam.com/events/ludum-dare/50">Ludum Dare 50</a>, with + the theme "Delay the Inevitable". + </div> + </div> + <Carousel> + <img src="assets/games/mr-final-boss/thumbnail.png" /> + <img src="assets/games/mr-final-boss/screenshot1.png" /> + <img src="assets/games/mr-final-boss/screenshot2.png" /> + <img src="assets/games/mr-final-boss/screenshot3.png" /> + <img src="assets/games/mr-final-boss/screenshot4.png" /> + </Carousel> + </div> + + <div class="project"> + <div class="project-title"><a href="https://oroshibu.itch.io/bumbling-builders">BUMBLING BUILDERS</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/unity.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + <img class="grow icon" src="./assets/images/html5.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + A physics puzzle game in which you need to protect little creatures from danger that could come from + any direction. Build forts with tetris-style blocks. The game features 30+ levels, multiple distinct + enemies and a star rating system. + <br /> + Game made in 72 hours for <a href="https://ldjam.com/events/ludum-dare/49">Ludum Dare 49</a>, with + the theme "Unstable". + </div> + </div> + <Carousel> + <img src="assets/games/bumbling-builders/thumbnail.png" /> + <img src="assets/games/bumbling-builders/screenshot1.png" /> + <img src="assets/games/bumbling-builders/screenshot2.png" /> + <img src="assets/games/bumbling-builders/screenshot3.png" /> + </Carousel> + </div> + + <div class="project"> + <div class="project-title"><a href="https://www.newgrounds.com/portal/view/850576">Dicemask</a> + </div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/unity.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/html5.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + Adventure through a dungeon of gambling themed enemies! + Craft your perfect dice from many powerful spells, + combo them to destroy everything in your path, and descend deeper. + <br /> + Game made in under 50 hours for <a href="https://itch.io/jam/gmtk-jam-2022">GMTK Game Jam 2022</a>, + with + the theme "Roll of the dice". + </div> + </div> + <Carousel> + <img src="assets/games/dicemask/thumbnail.png" /> + </Carousel> + </div> + + <div class="project"> + <div class="project-title"><a href="https://duckonaut.itch.io/wuzmag">WUZMAG</a> + </div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/unity.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + <img class="grow icon" src="./assets/images/html5.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + Turn based arcade survival game. + Survive as long as you can by freezing enemies and using them to defeat more enemies. + <br /> + Game made in roughly 8 hours for a private game jam with friends. + </div> + </div> + <Carousel> + <img src="assets/games/wuzmag/thumbnail.png" /> + <img src="assets/games/wuzmag/screenshot1.png" /> + <img src="assets/games/wuzmag/screenshot2.png" /> + <img src="assets/games/wuzmag/screenshot3.png" /> + </Carousel> + </div> + + <div class="project"> + <div class="project-title"><a href="https://duckonaut.itch.io/miro">Miro</a> + </div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/monogame.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + Small chill game made mostly as an experiment for a nice 2D renderer mechanic. + Infect the world around you, breaking it down into its simplest components. + <br /> + Game made in roughly 8 hours for a private game jam with friends. + </div> + </div> + <Carousel> + <img src="assets/games/miro/thumbnail.png" /> + <img src="assets/games/miro/screenshot1.png" /> + <img src="assets/games/miro/screenshot2.png" /> + <img src="assets/games/miro/screenshot3.png" /> + </Carousel> + </div> + + <div class="project"> + <div class="project-title"><a href="https://duckonaut.itch.io/thermal-trail">Thermal Trail</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/godot.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + <img class="grow icon" src="./assets/images/html5.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + Play as Yolka, a mountain goat who found an unknown egg. Keep the egg warm as you navigate the 3 + distinct worlds, and bring it to the hottest place you know: the depths of a volcano. + <br /> + Game made in a week for <a + href="https://www.newgrounds.com/bbs/topic/1476469#bbspost26906541_post_text">Newgrounds July + Jam 2021</a>, with the theme "Egg". + </div> + </div> + <Carousel> + <img src="assets/games/thermal-trail/gameart.png" /> + <img src="assets/games/thermal-trail/screenshot1.png" /> + <img src="assets/games/thermal-trail/screenshot2.png" /> + <img src="assets/games/thermal-trail/screenshot3.png" /> + <img src="assets/games/thermal-trail/screenshot4.png" /> + </Carousel> + </div> + + <div class="project"> + <div class="project-title"><a href="https://duckonaut.itch.io/greachers">Greachers</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/monogame.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + Tiny idle simulation game where you manage a team of randomly generated little fellas as they fight + other greachers in a sidescrolling world with beautiful procedurally generated graphics. + <br /> + Game made in 2 weeks for <a href="https://itch.io/jam/lowrezjam-2021">LOWREZJAM 2021</a>, with the + theme "Minibeasts". + </div> + </div> + <Carousel> + <img src="assets/games/greachers/title.png" /> + <img src="assets/games/greachers/screenshot1.png" /> + <img src="assets/games/greachers/screenshot2.png" /> + <img src="assets/games/greachers/screenshot3.png" /> + </Carousel> + </div> + + <div class="project"> + <div class="project-title"><a href="https://duckonaut.itch.io/third-party">Third Party</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/godot.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + <img class="grow icon" src="./assets/images/html5.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + A top-down stealth game where you play as a spy tasked with stealing important data from a rivaling + government. Your task would be easy enough if your objective wasn’t in a underground top-secret + facility handling an alien outbreak. Without access to conventional stealth techniques, use corpses + of your enemies to sneak through the battlefield. + <br /> + Game made in 72 hours for <a href="https://ldjam.com/events/ludum-dare/48/">Ludum Dare 48</a>, with + the theme "Deeper and deeper". + </div> + </div> + <Carousel> + <img src="assets/games/third-party/thumbnail.png" /> + <img src="assets/games/third-party/screenshot1.jpg" /> + <img src="assets/games/third-party/screenshot2.jpg" /> + <img src="assets/games/third-party/screenshot3.jpg" /> + <img src="assets/games/third-party/screenshot4.jpg" /> + </Carousel> + </div> + <div class="project"> + <div class="project-title"><a href="https://xatriv.itch.io/your-left">Your Left</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/unity.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + A simple pacman-inspired arcade game. Try to grab all the stars in a randomly generated maze before + the time expires, while your controls are scattered all over the screen. Get as far as you can to + get the highest score. + <br /> + Game made in 8 hours for <a href="https://itch.io/jam/jamjam-bhl-kntg-polygon">Jam Jam</a>, a local + in-person event organized by <a href="https://www.kntgpolygon.pl/">KNTG Polygon</a>, with + the theme "One Click". + </div> + </div> + <Carousel> + <img src="assets/games/your-left/thumbnail.png" /> + <img src="assets/games/your-left/screenshot1.jpg" /> + <img src="assets/games/your-left/screenshot2.jpg" /> + <img src="assets/games/your-left/screenshot3.jpg" /> + </Carousel> + </div> + <div class="project"> + <div class="project-title"><a href="https://duckonaut.itch.io/riff-n-rage">Riff n' Rage</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + <img class="grow icon" src="./assets/images/monogame.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + You just got your first guitar, and through sheer luck managed to land in the king's throne room, + trying to entertain him. Sadly, his subjects aren't huge fans of your music. Dodge them while trying + to play the best you can, or the king won't be merciful. + <br /> + Game made in 48 hours for a special solo game jam among friends. My theme was "Power at a price". + </div> + </div> + <Carousel> + <img src="assets/games/riff-n-rage/thumbnail.png" /> + <img src="assets/games/riff-n-rage/screenshot1.png" /> + <img src="assets/games/riff-n-rage/screenshot2.png" /> + </Carousel> + </div> + <div class="project"> + <div class="project-title"><a href="https://duckonaut.itch.io/survive-the-temple">Survive the Temple</a> + </div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/godot.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + <img class="grow icon" src="./assets/images/html5.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + A quick movement focused platformer that tests your short term memory. Survive the trap system of an + ancient temple! Dash through the lanterns in the correct order before the time runs out, or face + certain death! + <br /> + Game made in 48 hours for <a href="https://ldjam.com/events/ludum-dare/47">Ludum Dare Compo 47</a> + with the theme "Stuck in a loop". + </div> + </div> + <Carousel> + <img src="assets/games/survive-the-temple/cover.png" /> + <img src="assets/games/survive-the-temple/screenshot.png" /> + </Carousel> + </div> + </div> + </> + ); +} + diff --git a/src/pages/home.tsx b/src/pages/home.tsx new file mode 100644 index 0000000..a47e997 --- /dev/null +++ b/src/pages/home.tsx @@ -0,0 +1,29 @@ +export default function Home() { + return ( + <> + <div class="main-info"> + <div class="main-info-title"> + Stanisław Zagórowski + </div> + <div class="main-info-subtitle"> + aka Duckonaut, EchoDuck + </div> + <img src="assets/images/duckpfp.png" class="main-info-image logo grow" /> + </div> + + <div class="about-paragraph"> + <p> + Hello! I'm a programmer, game designer, and artist. I'm currently a student at the Warsaw University of + Technology, studying Computer Science. A list of the games I've worked on is in the <a class="games-link" + href="games.html">games</a> section. Other projects I've been a part of are available in the <a class="projects-link" + href="projects.html">projects</a> section. + I also enjoy some lower-level programming and learning about the inner workings of various systems. The main + technologies I use are <span class="highlight">C#</span>, <span class="highlight">Unity</span> + , <span class="highlight">Python</span>, <span class="highlight">Rust</span> and <span class="highlight">C</span>, + although I'm also familiar with <span class="highlight">Godot</span>, <span class="highlight">C++</span> + , <span class="highlight">Java</span> and some <span class="highlight">JavaScript</span> and <span class="highlight">TypeScript</span>. + </p> + </div> + </> + ); +} diff --git a/src/pages/projects.css b/src/pages/projects.css new file mode 100644 index 0000000..f9cc07f --- /dev/null +++ b/src/pages/projects.css @@ -0,0 +1,137 @@ +.icon { + display: inline; + width: 32px; + height: 32px; + transition: 0.3s; + transform-origin: center; + filter: brightness(70%) +} + +.icon:hover { + filter: brightness(80%); +} + +.icon-row { + width: 240px; + height: 36px; +} + +.icon-container { + height: 36px; + float: right; +} + +.icon-text { + width: auto; + height: 36px; + line-height: 36px; + float: left; + vertical-align: middle; + margin-right: 8px; + color: #5c6370; +} + +.projects-container { + width: 100%; + max-width: 1120px; + margin: auto; + margin-top: 24pt; + margin-bottom: 48pt; + align-items: center; + justify-content: center; + align-self: center; +} + +.project { + display: table; + align-self: center; + clear: both; + margin-bottom: 24pt; +} + +.project-info { + font-size: 14pt; +} + +.project-description { + font-size: 16pt; + text-align: justify; +} + +.project-image-gallery { + margin-left: 24px; + margin-right: 10px; +} + +@media (max-width: 1150px) { + .project-title { + text-align: center; + font-size: 24pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + + .project-image-gallery { + margin: 60px auto; + width: 330px; + height: 220px; + } + + .project-info { + float: none; + width: 90%; + margin: auto; + } + + .project-description { + font-size: 14pt; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .project-title { + text-align: center; + font-size: 24pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + .project-image-gallery { + margin: 60px auto; + width: 480px; + height: 360px; + } + + .project-info { + float: none; + width: 90%; + margin: auto; + } + + .project-description { + font-size: 14pt; + } +} + +@media (min-width: 1150px) { + .project-title { + text-align: left; + font-size: 32pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + .project-image-gallery { + float: right; + width: 480px; + height: 360px; + } + .project-info { + float: left; + max-width: 600px; + } + + .project-description { + font-size: 16pt; + } +} + + diff --git a/src/pages/projects.tsx b/src/pages/projects.tsx new file mode 100644 index 0000000..4e64704 --- /dev/null +++ b/src/pages/projects.tsx @@ -0,0 +1,50 @@ +import './projects.css'; +import Carousel from '../components/carousel'; + +export default function Projects() { + return ( + <> + <div class="main-info"> + <div class="main-info-title"> + Other Projects + </div> + <div class="main-info-subtitle"> + projects that are not games + </div> + </div> + + <div class="projects-container"> + + <div class="project"> + <div class="project-title"><a href="https://spiritmod.fandom.com/wiki/Spirit_Mod_Wiki">Spirit Mod</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/csharp.png" /> + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + <img class="grow icon" src="./assets/images/windows.png" /> + </div> + </div> + <hr /> + <div class="project-description"> + The Spirit Mod is one of the largest mods for Terraria: with more than 1300 items, 8 bosses, and + hundreds of enemies, as well as 3 new events and 3 brand new biomes, the mod has a lot to offer. + <br /> + I had the privilege of contributing some system code, mainly the "Stargoop" system. + </div> + </div> + <Carousel> + <img class="project-image-gallery-item" src="assets/projects/spirit-mod/Thumbnail.png" /> + <img class="project-image-gallery-item" src="assets/projects/spirit-mod/Demo1.gif" /> + <img class="project-image-gallery-item" src="assets/projects/spirit-mod/Demo2.gif" /> + </Carousel> + </div> + </div> + </> + ); +} 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 @@ +/// <reference types="vite/client" /> diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..907453c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "jsxImportSource": "preact", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + "baseUrl": "./", + "paths": { + "react": ["node_modules/preact/compat"], + "react-dom": ["node_modules/preact/compat"] + } + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..42872c5 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..29b326f --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import preact from '@preact/preset-vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [preact()], +}) |
