From b7c37574f4f90fc346bc51dd06c77c8958570b33 Mon Sep 17 00:00:00 2001 From: Stanisław Zagórowski Date: Wed, 30 Aug 2023 18:00:11 +0200 Subject: all: move front into its own directory --- front/.gitignore | 24 + front/index.html | 17 + front/package.json | 28 + front/pnpm-lock.yaml | 1226 ++++++++++++++++++++ front/public/CNAME | 1 + .../assets/games/bumbling-builders/screenshot1.png | Bin 0 -> 58058 bytes .../assets/games/bumbling-builders/screenshot2.png | Bin 0 -> 99514 bytes .../assets/games/bumbling-builders/screenshot3.png | Bin 0 -> 44823 bytes .../assets/games/bumbling-builders/thumbnail.png | Bin 0 -> 468975 bytes front/public/assets/games/dicemask/thumbnail.png | Bin 0 -> 5538916 bytes .../public/assets/games/greachers/screenshot1.png | Bin 0 -> 3649 bytes .../public/assets/games/greachers/screenshot2.png | Bin 0 -> 3678 bytes .../public/assets/games/greachers/screenshot3.png | Bin 0 -> 4072 bytes front/public/assets/games/greachers/title.png | Bin 0 -> 4920 bytes front/public/assets/games/miro/screenshot1.png | Bin 0 -> 16082 bytes front/public/assets/games/miro/screenshot2.png | Bin 0 -> 16874 bytes front/public/assets/games/miro/screenshot3.png | Bin 0 -> 18886 bytes front/public/assets/games/miro/thumbnail.png | Bin 0 -> 6602 bytes .../assets/games/mr-final-boss/screenshot1.png | Bin 0 -> 1450742 bytes .../assets/games/mr-final-boss/screenshot2.png | Bin 0 -> 1989016 bytes .../assets/games/mr-final-boss/screenshot3.png | Bin 0 -> 1439568 bytes .../assets/games/mr-final-boss/screenshot4.png | Bin 0 -> 2193361 bytes .../assets/games/mr-final-boss/thumbnail.png | Bin 0 -> 41705 bytes .../assets/games/riff-n-rage/screenshot1.png | Bin 0 -> 10890 bytes .../assets/games/riff-n-rage/screenshot2.png | Bin 0 -> 10833 bytes .../public/assets/games/riff-n-rage/thumbnail.png | Bin 0 -> 3685 bytes .../assets/games/survive-the-temple/cover.png | Bin 0 -> 7797 bytes .../assets/games/survive-the-temple/screenshot.png | Bin 0 -> 156733 bytes .../public/assets/games/thermal-trail/gameart.png | Bin 0 -> 34983 bytes .../assets/games/thermal-trail/screenshot1.png | Bin 0 -> 59904 bytes .../assets/games/thermal-trail/screenshot2.png | Bin 0 -> 50655 bytes .../assets/games/thermal-trail/screenshot3.png | Bin 0 -> 59175 bytes .../assets/games/thermal-trail/screenshot4.png | Bin 0 -> 61715 bytes .../assets/games/thermal-trail/thumbnail.png | Bin 0 -> 34372 bytes .../assets/games/third-party/screenshot1.jpg | Bin 0 -> 27953 bytes .../assets/games/third-party/screenshot2.jpg | Bin 0 -> 75854 bytes .../assets/games/third-party/screenshot3.jpg | Bin 0 -> 86290 bytes .../assets/games/third-party/screenshot4.jpg | Bin 0 -> 115453 bytes .../public/assets/games/third-party/thumbnail.png | Bin 0 -> 38018 bytes front/public/assets/games/wuzmag/screenshot1.png | Bin 0 -> 20205 bytes front/public/assets/games/wuzmag/screenshot2.png | Bin 0 -> 27941 bytes front/public/assets/games/wuzmag/screenshot3.png | Bin 0 -> 26136 bytes front/public/assets/games/wuzmag/thumbnail.png | Bin 0 -> 10256 bytes .../public/assets/games/your-left/screenshot1.jpg | Bin 0 -> 46052 bytes .../public/assets/games/your-left/screenshot2.jpg | Bin 0 -> 69916 bytes .../public/assets/games/your-left/screenshot3.jpg | Bin 0 -> 69533 bytes front/public/assets/games/your-left/thumbnail.png | Bin 0 -> 55977 bytes front/public/assets/images/android.png | Bin 0 -> 4572 bytes front/public/assets/images/android.svg | 56 + front/public/assets/images/csharp.png | Bin 0 -> 7481 bytes front/public/assets/images/csharp.svg | 58 + front/public/assets/images/duckpfp.png | Bin 0 -> 2602 bytes front/public/assets/images/github.png | Bin 0 -> 8133 bytes front/public/assets/images/github.svg | 66 ++ front/public/assets/images/godot.png | Bin 0 -> 7910 bytes front/public/assets/images/godot.svg | 64 + front/public/assets/images/html5.png | Bin 0 -> 4446 bytes front/public/assets/images/html5.svg | 56 + front/public/assets/images/monogame.png | Bin 0 -> 12087 bytes front/public/assets/images/pfp.png | Bin 0 -> 1074 bytes front/public/assets/images/placeholder.png | Bin 0 -> 9636 bytes front/public/assets/images/unity.png | Bin 0 -> 8893 bytes front/public/assets/images/unity.svg | 56 + front/public/assets/images/windows.png | Bin 0 -> 2446 bytes front/public/assets/images/windows.svg | 56 + front/public/assets/images/xamarin.png | Bin 0 -> 15826 bytes front/public/assets/loose/github-yellow.svg | 66 ++ front/public/assets/loose/itch-yellow.svg | 55 + front/public/assets/loose/twitter-yellow.svg | 91 ++ front/public/assets/loose/web-yellow.svg | 58 + front/public/assets/projects/spirit-mod/Demo1.gif | Bin 0 -> 1075246 bytes front/public/assets/projects/spirit-mod/Demo2.gif | Bin 0 -> 4380429 bytes .../assets/projects/spirit-mod/Thumbnail.png | Bin 0 -> 73781 bytes .../assets/projects/spirit-mod/Thumbnail.webp | Bin 0 -> 266196 bytes front/src/app.css | 120 ++ front/src/app.tsx | 34 + front/src/components/carousel.css | 68 ++ front/src/components/carousel.tsx | 31 + front/src/components/navbar-item.tsx | 8 + front/src/components/navbar.css | 277 +++++ front/src/components/navbar.tsx | 20 + front/src/index.css | 121 ++ front/src/main.tsx | 5 + front/src/pages/contact.css | 22 + front/src/pages/contact.tsx | 34 + front/src/pages/games.css | 0 front/src/pages/games.tsx | 393 +++++++ front/src/pages/home.tsx | 29 + front/src/pages/projects.css | 137 +++ front/src/pages/projects.tsx | 50 + front/src/vite-env.d.ts | 1 + front/tsconfig.json | 32 + front/tsconfig.node.json | 10 + front/vite.config.ts | 7 + 94 files changed, 3377 insertions(+) create mode 100644 front/.gitignore create mode 100644 front/index.html create mode 100644 front/package.json create mode 100644 front/pnpm-lock.yaml create mode 100644 front/public/CNAME create mode 100644 front/public/assets/games/bumbling-builders/screenshot1.png create mode 100644 front/public/assets/games/bumbling-builders/screenshot2.png create mode 100644 front/public/assets/games/bumbling-builders/screenshot3.png create mode 100644 front/public/assets/games/bumbling-builders/thumbnail.png create mode 100644 front/public/assets/games/dicemask/thumbnail.png create mode 100644 front/public/assets/games/greachers/screenshot1.png create mode 100644 front/public/assets/games/greachers/screenshot2.png create mode 100644 front/public/assets/games/greachers/screenshot3.png create mode 100644 front/public/assets/games/greachers/title.png create mode 100644 front/public/assets/games/miro/screenshot1.png create mode 100644 front/public/assets/games/miro/screenshot2.png create mode 100644 front/public/assets/games/miro/screenshot3.png create mode 100644 front/public/assets/games/miro/thumbnail.png create mode 100644 front/public/assets/games/mr-final-boss/screenshot1.png create mode 100644 front/public/assets/games/mr-final-boss/screenshot2.png create mode 100644 front/public/assets/games/mr-final-boss/screenshot3.png create mode 100644 front/public/assets/games/mr-final-boss/screenshot4.png create mode 100644 front/public/assets/games/mr-final-boss/thumbnail.png create mode 100644 front/public/assets/games/riff-n-rage/screenshot1.png create mode 100644 front/public/assets/games/riff-n-rage/screenshot2.png create mode 100644 front/public/assets/games/riff-n-rage/thumbnail.png create mode 100644 front/public/assets/games/survive-the-temple/cover.png create mode 100644 front/public/assets/games/survive-the-temple/screenshot.png create mode 100644 front/public/assets/games/thermal-trail/gameart.png create mode 100644 front/public/assets/games/thermal-trail/screenshot1.png create mode 100644 front/public/assets/games/thermal-trail/screenshot2.png create mode 100644 front/public/assets/games/thermal-trail/screenshot3.png create mode 100644 front/public/assets/games/thermal-trail/screenshot4.png create mode 100644 front/public/assets/games/thermal-trail/thumbnail.png create mode 100644 front/public/assets/games/third-party/screenshot1.jpg create mode 100644 front/public/assets/games/third-party/screenshot2.jpg create mode 100644 front/public/assets/games/third-party/screenshot3.jpg create mode 100644 front/public/assets/games/third-party/screenshot4.jpg create mode 100644 front/public/assets/games/third-party/thumbnail.png create mode 100644 front/public/assets/games/wuzmag/screenshot1.png create mode 100644 front/public/assets/games/wuzmag/screenshot2.png create mode 100644 front/public/assets/games/wuzmag/screenshot3.png create mode 100644 front/public/assets/games/wuzmag/thumbnail.png create mode 100644 front/public/assets/games/your-left/screenshot1.jpg create mode 100644 front/public/assets/games/your-left/screenshot2.jpg create mode 100644 front/public/assets/games/your-left/screenshot3.jpg create mode 100644 front/public/assets/games/your-left/thumbnail.png create mode 100644 front/public/assets/images/android.png create mode 100644 front/public/assets/images/android.svg create mode 100644 front/public/assets/images/csharp.png create mode 100644 front/public/assets/images/csharp.svg create mode 100644 front/public/assets/images/duckpfp.png create mode 100644 front/public/assets/images/github.png create mode 100644 front/public/assets/images/github.svg create mode 100644 front/public/assets/images/godot.png create mode 100644 front/public/assets/images/godot.svg create mode 100644 front/public/assets/images/html5.png create mode 100644 front/public/assets/images/html5.svg create mode 100644 front/public/assets/images/monogame.png create mode 100644 front/public/assets/images/pfp.png create mode 100644 front/public/assets/images/placeholder.png create mode 100644 front/public/assets/images/unity.png create mode 100644 front/public/assets/images/unity.svg create mode 100644 front/public/assets/images/windows.png create mode 100644 front/public/assets/images/windows.svg create mode 100644 front/public/assets/images/xamarin.png create mode 100644 front/public/assets/loose/github-yellow.svg create mode 100644 front/public/assets/loose/itch-yellow.svg create mode 100644 front/public/assets/loose/twitter-yellow.svg create mode 100644 front/public/assets/loose/web-yellow.svg create mode 100644 front/public/assets/projects/spirit-mod/Demo1.gif create mode 100644 front/public/assets/projects/spirit-mod/Demo2.gif create mode 100644 front/public/assets/projects/spirit-mod/Thumbnail.png create mode 100644 front/public/assets/projects/spirit-mod/Thumbnail.webp create mode 100644 front/src/app.css create mode 100644 front/src/app.tsx create mode 100644 front/src/components/carousel.css create mode 100644 front/src/components/carousel.tsx create mode 100644 front/src/components/navbar-item.tsx create mode 100644 front/src/components/navbar.css create mode 100644 front/src/components/navbar.tsx create mode 100644 front/src/index.css create mode 100644 front/src/main.tsx create mode 100644 front/src/pages/contact.css create mode 100644 front/src/pages/contact.tsx create mode 100644 front/src/pages/games.css create mode 100644 front/src/pages/games.tsx create mode 100644 front/src/pages/home.tsx create mode 100644 front/src/pages/projects.css create mode 100644 front/src/pages/projects.tsx create mode 100644 front/src/vite-env.d.ts create mode 100644 front/tsconfig.json create mode 100644 front/tsconfig.node.json create mode 100644 front/vite.config.ts (limited to 'front') diff --git a/front/.gitignore b/front/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/front/.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/front/index.html b/front/index.html new file mode 100644 index 0000000..ce197cb --- /dev/null +++ b/front/index.html @@ -0,0 +1,17 @@ + + + + + + + + + duckonaut.dev + + + +
+ + + + diff --git a/front/package.json b/front/package.json new file mode 100644 index 0000000..4ca6ac3 --- /dev/null +++ b/front/package.json @@ -0,0 +1,28 @@ +{ + "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": { + "history": "^5.3.0", + "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/front/pnpm-lock.yaml b/front/pnpm-lock.yaml new file mode 100644 index 0000000..fb16f09 --- /dev/null +++ b/front/pnpm-lock.yaml @@ -0,0 +1,1226 @@ +lockfileVersion: 5.4 + +specifiers: + '@preact/preset-vite': ^2.5.0 + '@types/react-slick': ^0.23.10 + gh-pages: ^6.0.0 + history: ^5.3.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: + history: 5.3.0 + 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/runtime/7.22.10: + resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + + /@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 + + /history/5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + dependencies: + '@babel/runtime': 7.22.10 + dev: false + + /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 + + /regenerator-runtime/0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + 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/front/public/CNAME b/front/public/CNAME new file mode 100644 index 0000000..4fafb77 --- /dev/null +++ b/front/public/CNAME @@ -0,0 +1 @@ +duckonaut.dev diff --git a/front/public/assets/games/bumbling-builders/screenshot1.png b/front/public/assets/games/bumbling-builders/screenshot1.png new file mode 100644 index 0000000..7a8a2db Binary files /dev/null and b/front/public/assets/games/bumbling-builders/screenshot1.png differ diff --git a/front/public/assets/games/bumbling-builders/screenshot2.png b/front/public/assets/games/bumbling-builders/screenshot2.png new file mode 100644 index 0000000..5eb0a1f Binary files /dev/null and b/front/public/assets/games/bumbling-builders/screenshot2.png differ diff --git a/front/public/assets/games/bumbling-builders/screenshot3.png b/front/public/assets/games/bumbling-builders/screenshot3.png new file mode 100644 index 0000000..41f65ac Binary files /dev/null and b/front/public/assets/games/bumbling-builders/screenshot3.png differ diff --git a/front/public/assets/games/bumbling-builders/thumbnail.png b/front/public/assets/games/bumbling-builders/thumbnail.png new file mode 100644 index 0000000..1c723a2 Binary files /dev/null and b/front/public/assets/games/bumbling-builders/thumbnail.png differ diff --git a/front/public/assets/games/dicemask/thumbnail.png b/front/public/assets/games/dicemask/thumbnail.png new file mode 100644 index 0000000..f9bc9ee Binary files /dev/null and b/front/public/assets/games/dicemask/thumbnail.png differ diff --git a/front/public/assets/games/greachers/screenshot1.png b/front/public/assets/games/greachers/screenshot1.png new file mode 100644 index 0000000..444106e Binary files /dev/null and b/front/public/assets/games/greachers/screenshot1.png differ diff --git a/front/public/assets/games/greachers/screenshot2.png b/front/public/assets/games/greachers/screenshot2.png new file mode 100644 index 0000000..e968c4f Binary files /dev/null and b/front/public/assets/games/greachers/screenshot2.png differ diff --git a/front/public/assets/games/greachers/screenshot3.png b/front/public/assets/games/greachers/screenshot3.png new file mode 100644 index 0000000..6433fb6 Binary files /dev/null and b/front/public/assets/games/greachers/screenshot3.png differ diff --git a/front/public/assets/games/greachers/title.png b/front/public/assets/games/greachers/title.png new file mode 100644 index 0000000..cdb3e67 Binary files /dev/null and b/front/public/assets/games/greachers/title.png differ diff --git a/front/public/assets/games/miro/screenshot1.png b/front/public/assets/games/miro/screenshot1.png new file mode 100644 index 0000000..5ba2365 Binary files /dev/null and b/front/public/assets/games/miro/screenshot1.png differ diff --git a/front/public/assets/games/miro/screenshot2.png b/front/public/assets/games/miro/screenshot2.png new file mode 100644 index 0000000..706e47a Binary files /dev/null and b/front/public/assets/games/miro/screenshot2.png differ diff --git a/front/public/assets/games/miro/screenshot3.png b/front/public/assets/games/miro/screenshot3.png new file mode 100644 index 0000000..237be9c Binary files /dev/null and b/front/public/assets/games/miro/screenshot3.png differ diff --git a/front/public/assets/games/miro/thumbnail.png b/front/public/assets/games/miro/thumbnail.png new file mode 100644 index 0000000..152acfc Binary files /dev/null and b/front/public/assets/games/miro/thumbnail.png differ diff --git a/front/public/assets/games/mr-final-boss/screenshot1.png b/front/public/assets/games/mr-final-boss/screenshot1.png new file mode 100644 index 0000000..d13f639 Binary files /dev/null and b/front/public/assets/games/mr-final-boss/screenshot1.png differ diff --git a/front/public/assets/games/mr-final-boss/screenshot2.png b/front/public/assets/games/mr-final-boss/screenshot2.png new file mode 100644 index 0000000..6b07d1c Binary files /dev/null and b/front/public/assets/games/mr-final-boss/screenshot2.png differ diff --git a/front/public/assets/games/mr-final-boss/screenshot3.png b/front/public/assets/games/mr-final-boss/screenshot3.png new file mode 100644 index 0000000..bf6d965 Binary files /dev/null and b/front/public/assets/games/mr-final-boss/screenshot3.png differ diff --git a/front/public/assets/games/mr-final-boss/screenshot4.png b/front/public/assets/games/mr-final-boss/screenshot4.png new file mode 100644 index 0000000..c6b4cbe Binary files /dev/null and b/front/public/assets/games/mr-final-boss/screenshot4.png differ diff --git a/front/public/assets/games/mr-final-boss/thumbnail.png b/front/public/assets/games/mr-final-boss/thumbnail.png new file mode 100644 index 0000000..024dab4 Binary files /dev/null and b/front/public/assets/games/mr-final-boss/thumbnail.png differ diff --git a/front/public/assets/games/riff-n-rage/screenshot1.png b/front/public/assets/games/riff-n-rage/screenshot1.png new file mode 100644 index 0000000..6a9b075 Binary files /dev/null and b/front/public/assets/games/riff-n-rage/screenshot1.png differ diff --git a/front/public/assets/games/riff-n-rage/screenshot2.png b/front/public/assets/games/riff-n-rage/screenshot2.png new file mode 100644 index 0000000..5b68901 Binary files /dev/null and b/front/public/assets/games/riff-n-rage/screenshot2.png differ diff --git a/front/public/assets/games/riff-n-rage/thumbnail.png b/front/public/assets/games/riff-n-rage/thumbnail.png new file mode 100644 index 0000000..fa8dcad Binary files /dev/null and b/front/public/assets/games/riff-n-rage/thumbnail.png differ diff --git a/front/public/assets/games/survive-the-temple/cover.png b/front/public/assets/games/survive-the-temple/cover.png new file mode 100644 index 0000000..5394eeb Binary files /dev/null and b/front/public/assets/games/survive-the-temple/cover.png differ diff --git a/front/public/assets/games/survive-the-temple/screenshot.png b/front/public/assets/games/survive-the-temple/screenshot.png new file mode 100644 index 0000000..92b8ba9 Binary files /dev/null and b/front/public/assets/games/survive-the-temple/screenshot.png differ diff --git a/front/public/assets/games/thermal-trail/gameart.png b/front/public/assets/games/thermal-trail/gameart.png new file mode 100644 index 0000000..34c82bc Binary files /dev/null and b/front/public/assets/games/thermal-trail/gameart.png differ diff --git a/front/public/assets/games/thermal-trail/screenshot1.png b/front/public/assets/games/thermal-trail/screenshot1.png new file mode 100644 index 0000000..4b940aa Binary files /dev/null and b/front/public/assets/games/thermal-trail/screenshot1.png differ diff --git a/front/public/assets/games/thermal-trail/screenshot2.png b/front/public/assets/games/thermal-trail/screenshot2.png new file mode 100644 index 0000000..0594eb9 Binary files /dev/null and b/front/public/assets/games/thermal-trail/screenshot2.png differ diff --git a/front/public/assets/games/thermal-trail/screenshot3.png b/front/public/assets/games/thermal-trail/screenshot3.png new file mode 100644 index 0000000..b5a4a6d Binary files /dev/null and b/front/public/assets/games/thermal-trail/screenshot3.png differ diff --git a/front/public/assets/games/thermal-trail/screenshot4.png b/front/public/assets/games/thermal-trail/screenshot4.png new file mode 100644 index 0000000..1356226 Binary files /dev/null and b/front/public/assets/games/thermal-trail/screenshot4.png differ diff --git a/front/public/assets/games/thermal-trail/thumbnail.png b/front/public/assets/games/thermal-trail/thumbnail.png new file mode 100644 index 0000000..d779c51 Binary files /dev/null and b/front/public/assets/games/thermal-trail/thumbnail.png differ diff --git a/front/public/assets/games/third-party/screenshot1.jpg b/front/public/assets/games/third-party/screenshot1.jpg new file mode 100644 index 0000000..6052ea2 Binary files /dev/null and b/front/public/assets/games/third-party/screenshot1.jpg differ diff --git a/front/public/assets/games/third-party/screenshot2.jpg b/front/public/assets/games/third-party/screenshot2.jpg new file mode 100644 index 0000000..7a16edf Binary files /dev/null and b/front/public/assets/games/third-party/screenshot2.jpg differ diff --git a/front/public/assets/games/third-party/screenshot3.jpg b/front/public/assets/games/third-party/screenshot3.jpg new file mode 100644 index 0000000..57e2d5b Binary files /dev/null and b/front/public/assets/games/third-party/screenshot3.jpg differ diff --git a/front/public/assets/games/third-party/screenshot4.jpg b/front/public/assets/games/third-party/screenshot4.jpg new file mode 100644 index 0000000..331594a Binary files /dev/null and b/front/public/assets/games/third-party/screenshot4.jpg differ diff --git a/front/public/assets/games/third-party/thumbnail.png b/front/public/assets/games/third-party/thumbnail.png new file mode 100644 index 0000000..c3cd158 Binary files /dev/null and b/front/public/assets/games/third-party/thumbnail.png differ diff --git a/front/public/assets/games/wuzmag/screenshot1.png b/front/public/assets/games/wuzmag/screenshot1.png new file mode 100644 index 0000000..186be8c Binary files /dev/null and b/front/public/assets/games/wuzmag/screenshot1.png differ diff --git a/front/public/assets/games/wuzmag/screenshot2.png b/front/public/assets/games/wuzmag/screenshot2.png new file mode 100644 index 0000000..683d7ee Binary files /dev/null and b/front/public/assets/games/wuzmag/screenshot2.png differ diff --git a/front/public/assets/games/wuzmag/screenshot3.png b/front/public/assets/games/wuzmag/screenshot3.png new file mode 100644 index 0000000..b5398bb Binary files /dev/null and b/front/public/assets/games/wuzmag/screenshot3.png differ diff --git a/front/public/assets/games/wuzmag/thumbnail.png b/front/public/assets/games/wuzmag/thumbnail.png new file mode 100644 index 0000000..0e6dea1 Binary files /dev/null and b/front/public/assets/games/wuzmag/thumbnail.png differ diff --git a/front/public/assets/games/your-left/screenshot1.jpg b/front/public/assets/games/your-left/screenshot1.jpg new file mode 100644 index 0000000..e76861a Binary files /dev/null and b/front/public/assets/games/your-left/screenshot1.jpg differ diff --git a/front/public/assets/games/your-left/screenshot2.jpg b/front/public/assets/games/your-left/screenshot2.jpg new file mode 100644 index 0000000..9e0f674 Binary files /dev/null and b/front/public/assets/games/your-left/screenshot2.jpg differ diff --git a/front/public/assets/games/your-left/screenshot3.jpg b/front/public/assets/games/your-left/screenshot3.jpg new file mode 100644 index 0000000..d025ec1 Binary files /dev/null and b/front/public/assets/games/your-left/screenshot3.jpg differ diff --git a/front/public/assets/games/your-left/thumbnail.png b/front/public/assets/games/your-left/thumbnail.png new file mode 100644 index 0000000..95f5c17 Binary files /dev/null and b/front/public/assets/games/your-left/thumbnail.png differ diff --git a/front/public/assets/images/android.png b/front/public/assets/images/android.png new file mode 100644 index 0000000..d1cef88 Binary files /dev/null and b/front/public/assets/images/android.png differ diff --git a/front/public/assets/images/android.svg b/front/public/assets/images/android.svg new file mode 100644 index 0000000..910aaab --- /dev/null +++ b/front/public/assets/images/android.svg @@ -0,0 +1,56 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/front/public/assets/images/csharp.png b/front/public/assets/images/csharp.png new file mode 100644 index 0000000..065aa53 Binary files /dev/null and b/front/public/assets/images/csharp.png differ diff --git a/front/public/assets/images/csharp.svg b/front/public/assets/images/csharp.svg new file mode 100644 index 0000000..77d5b38 --- /dev/null +++ b/front/public/assets/images/csharp.svg @@ -0,0 +1,58 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/front/public/assets/images/duckpfp.png b/front/public/assets/images/duckpfp.png new file mode 100644 index 0000000..bdad92c Binary files /dev/null and b/front/public/assets/images/duckpfp.png differ diff --git a/front/public/assets/images/github.png b/front/public/assets/images/github.png new file mode 100644 index 0000000..0954581 Binary files /dev/null and b/front/public/assets/images/github.png differ diff --git a/front/public/assets/images/github.svg b/front/public/assets/images/github.svg new file mode 100644 index 0000000..11f84aa --- /dev/null +++ b/front/public/assets/images/github.svg @@ -0,0 +1,66 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/front/public/assets/images/godot.png b/front/public/assets/images/godot.png new file mode 100644 index 0000000..4f2bc22 Binary files /dev/null and b/front/public/assets/images/godot.png differ diff --git a/front/public/assets/images/godot.svg b/front/public/assets/images/godot.svg new file mode 100644 index 0000000..6a2176a --- /dev/null +++ b/front/public/assets/images/godot.svg @@ -0,0 +1,64 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/front/public/assets/images/html5.png b/front/public/assets/images/html5.png new file mode 100644 index 0000000..e0dcb1f Binary files /dev/null and b/front/public/assets/images/html5.png differ diff --git a/front/public/assets/images/html5.svg b/front/public/assets/images/html5.svg new file mode 100644 index 0000000..70959e4 --- /dev/null +++ b/front/public/assets/images/html5.svg @@ -0,0 +1,56 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/front/public/assets/images/monogame.png b/front/public/assets/images/monogame.png new file mode 100644 index 0000000..8648bcc Binary files /dev/null and b/front/public/assets/images/monogame.png differ diff --git a/front/public/assets/images/pfp.png b/front/public/assets/images/pfp.png new file mode 100644 index 0000000..a18b664 Binary files /dev/null and b/front/public/assets/images/pfp.png differ diff --git a/front/public/assets/images/placeholder.png b/front/public/assets/images/placeholder.png new file mode 100644 index 0000000..97084c7 Binary files /dev/null and b/front/public/assets/images/placeholder.png differ diff --git a/front/public/assets/images/unity.png b/front/public/assets/images/unity.png new file mode 100644 index 0000000..5fea459 Binary files /dev/null and b/front/public/assets/images/unity.png differ diff --git a/front/public/assets/images/unity.svg b/front/public/assets/images/unity.svg new file mode 100644 index 0000000..b9d1859 --- /dev/null +++ b/front/public/assets/images/unity.svg @@ -0,0 +1,56 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/front/public/assets/images/windows.png b/front/public/assets/images/windows.png new file mode 100644 index 0000000..a09553e Binary files /dev/null and b/front/public/assets/images/windows.png differ diff --git a/front/public/assets/images/windows.svg b/front/public/assets/images/windows.svg new file mode 100644 index 0000000..cb347b6 --- /dev/null +++ b/front/public/assets/images/windows.svg @@ -0,0 +1,56 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/front/public/assets/images/xamarin.png b/front/public/assets/images/xamarin.png new file mode 100644 index 0000000..91ce4ac Binary files /dev/null and b/front/public/assets/images/xamarin.png differ diff --git a/front/public/assets/loose/github-yellow.svg b/front/public/assets/loose/github-yellow.svg new file mode 100644 index 0000000..f81e9b9 --- /dev/null +++ b/front/public/assets/loose/github-yellow.svg @@ -0,0 +1,66 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/front/public/assets/loose/itch-yellow.svg b/front/public/assets/loose/itch-yellow.svg new file mode 100644 index 0000000..008c7b1 --- /dev/null +++ b/front/public/assets/loose/itch-yellow.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/front/public/assets/loose/twitter-yellow.svg b/front/public/assets/loose/twitter-yellow.svg new file mode 100644 index 0000000..ec6168d --- /dev/null +++ b/front/public/assets/loose/twitter-yellow.svg @@ -0,0 +1,91 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/front/public/assets/loose/web-yellow.svg b/front/public/assets/loose/web-yellow.svg new file mode 100644 index 0000000..b61babc --- /dev/null +++ b/front/public/assets/loose/web-yellow.svg @@ -0,0 +1,58 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/front/public/assets/projects/spirit-mod/Demo1.gif b/front/public/assets/projects/spirit-mod/Demo1.gif new file mode 100644 index 0000000..324de0c Binary files /dev/null and b/front/public/assets/projects/spirit-mod/Demo1.gif differ diff --git a/front/public/assets/projects/spirit-mod/Demo2.gif b/front/public/assets/projects/spirit-mod/Demo2.gif new file mode 100644 index 0000000..4e87fd8 Binary files /dev/null and b/front/public/assets/projects/spirit-mod/Demo2.gif differ diff --git a/front/public/assets/projects/spirit-mod/Thumbnail.png b/front/public/assets/projects/spirit-mod/Thumbnail.png new file mode 100644 index 0000000..55f8d7e Binary files /dev/null and b/front/public/assets/projects/spirit-mod/Thumbnail.png differ diff --git a/front/public/assets/projects/spirit-mod/Thumbnail.webp b/front/public/assets/projects/spirit-mod/Thumbnail.webp new file mode 100644 index 0000000..0250f72 Binary files /dev/null and b/front/public/assets/projects/spirit-mod/Thumbnail.webp differ diff --git a/front/src/app.css b/front/src/app.css new file mode 100644 index 0000000..b4086a2 --- /dev/null +++ b/front/src/app.css @@ -0,0 +1,120 @@ +#app-main { + font-family: 'Hack', monospace; + max-width: 1280px; + margin: 0 auto; + padding: 2rem 2rem 2rem 2rem; + text-align: center; +} + +#app { + margin: 0 auto; + text-align: center; + align-content: center; + justify-content: 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 { + text-align: center; +} + +@media (min-width: 1150px) { + .main-info { + margin-top: 72px; + } +} + +.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/front/src/app.tsx b/front/src/app.tsx new file mode 100644 index 0000000..5ba8e6f --- /dev/null +++ b/front/src/app.tsx @@ -0,0 +1,34 @@ +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, CustomHistory } from 'preact-router'; +import Projects from './pages/projects'; +import { HashHistory, createHashHistory } from 'history'; + +const hashHistoryAdapter = (hashHistory: HashHistory): CustomHistory => { + return { + listen: (callback) => hashHistory.listen(({ location }) => callback(location)), + location: hashHistory.location, + push: hashHistory.push, + replace: hashHistory.replace + }; +}; +export function App() { + const history = hashHistoryAdapter(createHashHistory()); + + return ( + <> + +
+ + + + + + +
+ + ) +} diff --git a/front/src/components/carousel.css b/front/src/components/carousel.css new file mode 100644 index 0000000..f311805 --- /dev/null +++ b/front/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/front/src/components/carousel.tsx b/front/src/components/carousel.tsx new file mode 100644 index 0000000..af9279b --- /dev/null +++ b/front/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 ( + + ); +} diff --git a/front/src/components/navbar-item.tsx b/front/src/components/navbar-item.tsx new file mode 100644 index 0000000..c2f2306 --- /dev/null +++ b/front/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/front/src/components/navbar.css b/front/src/components/navbar.css new file mode 100644 index 0000000..466fdd6 --- /dev/null +++ b/front/src/components/navbar.css @@ -0,0 +1,277 @@ +/* on big screens, navbar is fixed to the top of the screen */ +.navbar-container { + position: fixed; + background-color: var(--color-bg); + top: 0; + width: 100%; + z-index: 9999; + margin: auto; +} + +/* on smaller ones, make it behave as a normal element laid out at the top of the page */ +@media (max-width: 1150px) { + .navbar-container { + position: static; + } +} + +.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/front/src/components/navbar.tsx b/front/src/components/navbar.tsx new file mode 100644 index 0000000..ba3d7d7 --- /dev/null +++ b/front/src/components/navbar.tsx @@ -0,0 +1,20 @@ +import './navbar.css'; + +import { NavbarItem } from './navbar-item'; + +export function Navbar() { + return ( + + ); +} diff --git a/front/src/index.css b/front/src/index.css new file mode 100644 index 0000000..cf6f743 --- /dev/null +++ b/front/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/front/src/main.tsx b/front/src/main.tsx new file mode 100644 index 0000000..846cd1e --- /dev/null +++ b/front/src/main.tsx @@ -0,0 +1,5 @@ +import { render } from 'preact' +import { App } from './app.tsx' +import './index.css' + +render(, document.getElementById('app')!) diff --git a/front/src/pages/contact.css b/front/src/pages/contact.css new file mode 100644 index 0000000..93b63bd --- /dev/null +++ b/front/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/front/src/pages/contact.tsx b/front/src/pages/contact.tsx new file mode 100644 index 0000000..efc9eba --- /dev/null +++ b/front/src/pages/contact.tsx @@ -0,0 +1,34 @@ +import './contact.css'; + +export default function Contact() { + return ( +
+
+ Contact +
+
+
+ Discord +
+ + usually the fastest way to reach me +
+ EchoDuck#7866 + +
+ Matrix +
+ for the FOSS folks +
+ @echoduck:matrix.org + +
+ Email +
+ I check my email daily +
+ duckonaut@gmail.com +
+
+ ); +} diff --git a/front/src/pages/games.css b/front/src/pages/games.css new file mode 100644 index 0000000..e69de29 diff --git a/front/src/pages/games.tsx b/front/src/pages/games.tsx new file mode 100644 index 0000000..314813d --- /dev/null +++ b/front/src/pages/games.tsx @@ -0,0 +1,393 @@ +import Carousel from '../components/carousel'; +import './projects.css'; + +export default function Games() { + return ( + <> +
+
+ Game Projects +
+
+ my game projects, mostly from game jams +
+
+
+
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ 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! +
+ Game made in 72 hours for Ludum Dare 50, with + the theme "Delay the Inevitable". +
+
+ + + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ 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. +
+ Game made in 72 hours for Ludum Dare 49, with + the theme "Unstable". +
+
+ + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ 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. +
+ Game made in under 50 hours for GMTK Game Jam 2022, + with + the theme "Roll of the dice". +
+
+ + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ Turn based arcade survival game. + Survive as long as you can by freezing enemies and using them to defeat more enemies. +
+ Game made in roughly 8 hours for a private game jam with friends. +
+
+ + + + + + +
+ +
+
Miro +
+
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ 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. +
+ Game made in roughly 8 hours for a private game jam with friends. +
+
+ + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ + +
+
+
+
+ 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. +
+ Game made in a week for Newgrounds July + Jam 2021, with the theme "Egg". +
+
+ + + + + + + +
+ +
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ 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. +
+ Game made in 2 weeks for LOWREZJAM 2021, with the + theme "Minibeasts". +
+
+ + + + + + +
+ +
+ +
+
+
Made using
+
+ +
+
+
+
Available on
+
+ + +
+
+
+
+ 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. +
+ Game made in 72 hours for Ludum Dare 48, with + the theme "Deeper and deeper". +
+
+ + + + + + + +
+
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ 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. +
+ Game made in 8 hours for Jam Jam, a local + in-person event organized by KNTG Polygon, with + the theme "One Click". +
+
+ + + + + + +
+
+ +
+
+
Made using
+
+ + +
+
+
+
Available on
+
+ +
+
+
+
+ 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. +
+ Game made in 48 hours for a special solo game jam among friends. My theme was "Power at a price". +
+
+ + + + + +
+
+ +
+
+
Made using
+
+ +
+
+
+
Available on
+
+ + +
+
+
+
+ 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! +
+ Game made in 48 hours for Ludum Dare Compo 47 + with the theme "Stuck in a loop". +
+
+ + + + +
+
+ + ); +} + diff --git a/front/src/pages/home.tsx b/front/src/pages/home.tsx new file mode 100644 index 0000000..9b29803 --- /dev/null +++ b/front/src/pages/home.tsx @@ -0,0 +1,29 @@ +export default function Home() { + return ( + <> +
+
+ Stanisław Zagórowski +
+
+ aka Duckonaut, EchoDuck +
+ +
+ +
+

+ 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 games section. Other projects I've been a part of are available in the projects section. + I also enjoy some lower-level programming and learning about the inner workings of various systems. The main + technologies I use are C#, Unity + , Python, Rust and C, + although I'm also familiar with Godot, C++ + , Java and some JavaScript and TypeScript. +

+
+ + ); +} diff --git a/front/src/pages/projects.css b/front/src/pages/projects.css new file mode 100644 index 0000000..f9cc07f --- /dev/null +++ b/front/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/front/src/pages/projects.tsx b/front/src/pages/projects.tsx new file mode 100644 index 0000000..4e64704 --- /dev/null +++ b/front/src/pages/projects.tsx @@ -0,0 +1,50 @@ +import './projects.css'; +import Carousel from '../components/carousel'; + +export default function Projects() { + return ( + <> +
+
+ Other Projects +
+
+ projects that are not games +
+
+ +
+ +
+ +
+
+
Made using
+
+ +
+
+
+
Available on
+
+ +
+
+
+
+ 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. +
+ I had the privilege of contributing some system code, mainly the "Stargoop" system. +
+
+ + + + + +
+
+ + ); +} diff --git a/front/src/vite-env.d.ts b/front/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/front/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/front/tsconfig.json b/front/tsconfig.json new file mode 100644 index 0000000..907453c --- /dev/null +++ b/front/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/front/tsconfig.node.json b/front/tsconfig.node.json new file mode 100644 index 0000000..42872c5 --- /dev/null +++ b/front/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/front/vite.config.ts b/front/vite.config.ts new file mode 100644 index 0000000..29b326f --- /dev/null +++ b/front/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()], +}) -- cgit v1.3.1