diff --git a/astro.config.mjs b/astro.config.mjs index e762ba5..53e49de 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,5 +1,9 @@ // @ts-check import { defineConfig } from 'astro/config'; +import react from '@astrojs/react'; + // https://astro.build/config -export default defineConfig({}); +export default defineConfig({ + integrations: [react()] +}); \ No newline at end of file diff --git a/contribute.zip b/contribute.zip new file mode 100644 index 0000000..ce3147f Binary files /dev/null and b/contribute.zip differ diff --git a/events.zip b/events.zip new file mode 100644 index 0000000..ade8a2c Binary files /dev/null and b/events.zip differ diff --git a/gameforge.zip b/gameforge.zip new file mode 100644 index 0000000..b3aafa8 Binary files /dev/null and b/gameforge.zip differ diff --git a/package-lock.json b/package-lock.json index 8644700..d253fbd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,12 @@ "name": "aethex.us", "version": "0.0.1", "dependencies": { - "astro": "^5.16.11" + "@astrojs/react": "^4.4.2", + "@types/react": "^19.2.9", + "@types/react-dom": "^19.2.3", + "astro": "^5.16.11", + "react": "^19.2.3", + "react-dom": "^19.2.3" } }, "node_modules/@astrojs/compiler": { @@ -64,6 +69,26 @@ "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, + "node_modules/@astrojs/react": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.4.2.tgz", + "integrity": "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==", + "license": "MIT", + "dependencies": { + "@vitejs/plugin-react": "^4.7.0", + "ultrahtml": "^1.6.0", + "vite": "^6.4.1" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@astrojs/telemetry": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", @@ -82,6 +107,167 @@ "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -100,6 +286,28 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/parser": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", @@ -115,6 +323,68 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/types": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", @@ -1032,18 +1302,63 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@oslojs/encoding": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", "license": "MIT" }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "license": "MIT" + }, "node_modules/@rollup/pluginutils": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", @@ -1464,6 +1779,47 @@ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "license": "MIT" }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -1512,6 +1868,26 @@ "@types/unist": "*" } }, + "node_modules/@types/react": { + "version": "19.2.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", + "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -1524,6 +1900,26 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -1771,6 +2167,15 @@ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.17", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.17.tgz", + "integrity": "sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1799,6 +2204,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/camelcase": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", @@ -1811,6 +2250,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -1939,6 +2398,12 @@ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "license": "ISC" }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, "node_modules/cookie": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", @@ -2053,6 +2518,12 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -2236,6 +2707,12 @@ "node": ">=4" } }, + "node_modules/electron-to-chromium": { + "version": "1.5.278", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", + "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", + "license": "ISC" + }, "node_modules/emoji-regex": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", @@ -2301,6 +2778,15 @@ "@esbuild/win32-x64": "0.25.12" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -2395,6 +2881,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-east-asian-width": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", @@ -2717,6 +3212,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -2729,6 +3230,30 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -3648,6 +4173,12 @@ "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", "license": "MIT" }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3872,6 +4403,38 @@ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", "license": "MIT" }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readdirp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", @@ -4166,6 +4729,12 @@ "node": ">=11.0.0" } }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, "node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -4718,6 +5287,36 @@ } } }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -4911,6 +5510,12 @@ "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", "license": "MIT" }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", diff --git a/package.json b/package.json index 3ed50d9..99db2f8 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,11 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.16.11" + "@astrojs/react": "^4.4.2", + "@types/react": "^19.2.9", + "@types/react-dom": "^19.2.3", + "astro": "^5.16.11", + "react": "^19.2.3", + "react-dom": "^19.2.3" } -} \ No newline at end of file +} diff --git a/public/global.css b/public/global.css index 4c6e457..6f79b39 100644 --- a/public/global.css +++ b/public/global.css @@ -1,3 +1,102 @@ +/* === Utility/Demo Page Hero Styles === */ +.tool-hero { + position: relative; + text-align: center; + padding: 64px 0 36px 0; + margin-bottom: 0.5em; + z-index: 1; +} +.tool-hero-bg { + position: absolute; + top: 0; left: 0; width: 100%; height: 100%; + z-index: 0; + opacity: 0.9; + background: linear-gradient(120deg, #181818 60%, #222 100%); +} +.tool-hero-bg-random { background: linear-gradient(120deg, #0066ff 0%, #ff4d4d 100%); opacity: 0.18; } +.tool-hero-bg-live { background: linear-gradient(120deg, #ff4d4d 0%, #ffa500 100%); opacity: 0.18; } +.tool-hero-bg-search { background: linear-gradient(120deg, #6cf 0%, #222 100%); opacity: 0.18; } +.tool-hero-bg-sso { background: linear-gradient(120deg, #0066ff 0%, #ffc700 100%); opacity: 0.18; } +.tool-hero-bg-fame { background: linear-gradient(120deg, #ffc700 0%, #ff4d4d 100%); opacity: 0.18; } +.tool-hero-bg-timeline { background: linear-gradient(120deg, #6cf 0%, #ffa500 100%); opacity: 0.18; } +.tool-hero-bg-egg { background: linear-gradient(120deg, #ff4d4d 0%, #fff 100%); opacity: 0.18; } +.tool-hero-bg-theme { background: linear-gradient(120deg, #6cf 0%, #ffc700 100%); opacity: 0.18; } +.tool-hero-title { + position: relative; + z-index: 1; + font-size: 2.5em; + font-weight: 900; + letter-spacing: 4px; + margin-bottom: 0.2em; + margin-top: 0.2em; +} +.tool-hero-desc { + position: relative; + z-index: 1; + font-size: 1.15em; + color: #bbb; + max-width: 600px; + margin: 0 auto 0.5em auto; + font-weight: 400; + letter-spacing: 1px; +} +.tool-content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + min-height: 220px; + margin-bottom: 2em; +} +/* === Theme Switcher Styles === */ +.theme-switcher { + display: flex; + align-items: center; + gap: 1.2em; + background: rgba(20, 20, 30, 0.98); + border-radius: 18px; + box-shadow: 0 2px 16px #0006; + padding: 1.2em 2em; + margin: 2em auto 1em auto; + max-width: 420px; + color: #fff; + font-size: 1.1em; + border: 1.5px solid #333; +} +.theme-switcher span { + font-weight: 700; + letter-spacing: 1px; + margin-right: 0.7em; +} +.theme-btn { + background: linear-gradient(135deg, #222 60%, #333 100%); + color: #6cf; + border: 1.5px solid #6cf; + border-radius: 12px; + padding: 0.5em 1.3em; + font-size: 1em; + font-family: inherit; + font-weight: 700; + margin-right: 0.5em; + cursor: pointer; + transition: background 0.2s, color 0.2s, box-shadow 0.2s, border 0.2s; + box-shadow: 0 2px 8px #0066ff22; +} +.theme-btn:last-child { + margin-right: 0; +} +.theme-btn:hover, .theme-btn:focus { + background: linear-gradient(135deg, #0066ff 60%, #003380 100%); + color: #fff; + border-color: #ffc700; + box-shadow: 0 4px 16px #0066ff44; + outline: none; +} +.theme-btn:active { + background: #222; + color: #ffc700; + border-color: #ff4d4d; +} @import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@300;400;700;900&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { diff --git a/src/components/EasterEggs.astro b/src/components/EasterEggs.astro new file mode 100644 index 0000000..86acf8d --- /dev/null +++ b/src/components/EasterEggs.astro @@ -0,0 +1,45 @@ +--- +// Easter eggs and badge system for AeThex (mockup) +let found = false; +function revealEgg() { + found = true; + alert('🥚 You found an AeThex Easter Egg! Badge unlocked!'); +} +--- +
+ + {found &&
🥚 AeThex Egg Hunter Badge!
} +
+ diff --git a/src/components/EasterEggsReact.jsx b/src/components/EasterEggsReact.jsx new file mode 100644 index 0000000..847f675 --- /dev/null +++ b/src/components/EasterEggsReact.jsx @@ -0,0 +1,19 @@ +import React, { useState } from 'react'; + +export default function EasterEggsReact() { + const [found, setFound] = useState(false); + + function revealEgg() { + setFound(true); + alert('🥚 You found an AeThex Easter Egg! Badge unlocked!'); + } + + return ( +
+ + {found &&
🥚 AeThex Egg Hunter Badge!
} +
+ ); +} diff --git a/src/components/EcosystemTimeline.astro b/src/components/EcosystemTimeline.astro new file mode 100644 index 0000000..5fc3e18 --- /dev/null +++ b/src/components/EcosystemTimeline.astro @@ -0,0 +1,53 @@ +--- +// Interactive ecosystem timeline for AeThex (mockup) +const events = [ + { date: '2022', event: 'AeThex Foundation launched' }, + { date: '2023', event: 'AeThex Corporation formed' }, + { date: '2024', event: 'Labs released Nexus Engine v2.0' }, + { date: '2025', event: 'Gameforge beta launched' }, + { date: '2026', event: 'Educate platform live' } +]; +--- +
+

AeThex Ecosystem Timeline

+ +
+ diff --git a/src/components/HallOfFameShame.astro b/src/components/HallOfFameShame.astro new file mode 100644 index 0000000..b3bc242 --- /dev/null +++ b/src/components/HallOfFameShame.astro @@ -0,0 +1,51 @@ +--- +// Hall of Fame/Shame mockup for AeThex +const fame = [ + { name: 'Alice', reason: 'Top contributor' }, + { name: 'Bob', reason: 'Most helpful bug report' } +]; +const shame = [ + { name: 'ScammerMcScamface', reason: 'Tried to phish the AI' }, + { name: 'SneakyPete', reason: 'Fake giveaway spam' } +]; +--- +
+

Hall of Fame

+ +

Hall of Shame

+ +
+ diff --git a/src/components/LiveActivityFeed.astro b/src/components/LiveActivityFeed.astro new file mode 100644 index 0000000..94a8794 --- /dev/null +++ b/src/components/LiveActivityFeed.astro @@ -0,0 +1,52 @@ +--- +// Live activity/news feed mockup for AeThex ecosystem +const feed = [ + { time: 'Just now', message: 'New user registered on Gameforge.' }, + { time: '2 min ago', message: 'Labs released a new AI Copilot update.' }, + { time: '10 min ago', message: 'Foundation approved a new open-source proposal.' }, + { time: '30 min ago', message: 'Educate published a new tutorial.' }, + { time: '1 hr ago', message: 'Corporation deployed a major infrastructure upgrade.' } +]; +--- +
+

Live Activity Feed

+ +
+ diff --git a/src/components/PassportSSODemo.astro b/src/components/PassportSSODemo.astro new file mode 100644 index 0000000..fc8121c --- /dev/null +++ b/src/components/PassportSSODemo.astro @@ -0,0 +1,70 @@ +--- +// One-click Passport/SSO demo for AeThex ecosystem (mockup) +let loggedIn = false; +let username = ''; +function handleLogin(e) { + e.preventDefault(); + loggedIn = true; + username = 'demo_user'; +} +function handleLogout(e) { + e.preventDefault(); + loggedIn = false; + username = ''; +} +--- +
+

One-Click Passport (SSO Demo)

+ {loggedIn ? ( +
+ Welcome, {username}! + +
+ ) : ( +
+ +
+ )} +
+ diff --git a/src/components/PassportSSODemoReact.jsx b/src/components/PassportSSODemoReact.jsx new file mode 100644 index 0000000..b4cb9f3 --- /dev/null +++ b/src/components/PassportSSODemoReact.jsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react'; + +export default function PassportSSODemoReact() { + const [loggedIn, setLoggedIn] = useState(false); + const [username, setUsername] = useState(''); + + function handleLogin(e) { + e.preventDefault(); + if (username.trim()) { + setLoggedIn(true); + } + } + + function handleLogout() { + setLoggedIn(false); + setUsername(''); + } + + return ( +
+ {loggedIn ? ( +
+

Welcome, {username}!

+ +
+ ) : ( +
+ setUsername(e.target.value)} + className="sso-input" + /> + +
+ )} +
+ ); +} diff --git a/src/components/PortalFooterBar.astro b/src/components/PortalFooterBar.astro new file mode 100644 index 0000000..e12b1d7 --- /dev/null +++ b/src/components/PortalFooterBar.astro @@ -0,0 +1,286 @@ +--- +// Modular persistent portal/footer bar for AeThex ecosystem +const { entityFooter } = Astro.props; +const divisionLinks = [ + { name: 'Home', url: '/', icon: 'home' }, + { name: 'Foundation', url: '/foundation', icon: 'foundation' }, + { name: 'Corporation', url: '/corporation', icon: 'corporation' }, + { name: 'Labs', url: '/labs', icon: 'labs' }, +]; +const toolLinks = [ + { name: 'Live Feed', url: '/live-activity', icon: 'live' }, + { name: 'Universal Search', url: '/universal-search', icon: 'search' }, + { name: 'SSO Demo', url: '/sso-demo', icon: 'sso' }, + { name: 'Hall of Fame', url: '/hall-of-fame', icon: 'fame' }, + { name: 'Timeline', url: '/timeline', icon: 'timeline' }, + { name: 'Random Site', url: '/random-site', icon: 'random' }, + { name: 'Theme Switcher', url: '/theme-switcher', icon: 'theme' }, + { name: 'Easter Eggs', url: '/easter-eggs', icon: 'egg' } +]; +--- + + diff --git a/src/components/RandomSiteButton.astro b/src/components/RandomSiteButton.astro new file mode 100644 index 0000000..7e0063e --- /dev/null +++ b/src/components/RandomSiteButton.astro @@ -0,0 +1,43 @@ +--- +// Random site teleport button for AeThex +const sites = [ + '/foundation', + '/corporation', + '/labs', + '/educate', + '/gameforge', + '/docs', + '/community' +]; +function teleport() { + const idx = Math.floor(Math.random() * sites.length); + window.location.href = sites[idx]; +} +--- +
+ +
+ diff --git a/src/components/RandomSiteButtonReact.jsx b/src/components/RandomSiteButtonReact.jsx new file mode 100644 index 0000000..9700ae1 --- /dev/null +++ b/src/components/RandomSiteButtonReact.jsx @@ -0,0 +1,44 @@ +import React from 'react'; + +const sites = [ + 'https://aethex.dev', + 'https://aethex.inc', + 'https://aethex.co', + 'https://aethex.us', + 'https://aethex.net', + 'https://aethex.org', + 'https://aethex.app', + 'https://aethex.site', + 'https://aethex.locker', + 'https://aethex.bio', + 'https://aethex.bot', + 'https://aethex.live', + 'https://aethex.me', + 'https://aethex.space', + 'https://aethex.shop', + 'https://aethex.cloud', + 'https://aethex.tech', + 'https://aethex.studio', + 'https://aethex.support', + 'https://aethex.network', + 'https://aethex.foundation', + 'https://aethex.fun', + 'https://aethex.sbs', + 'https://aethex.blog', + 'https://aethex.info' +]; + +function teleport() { + const idx = Math.floor(Math.random() * sites.length); + window.location.href = sites[idx]; +} + +export default function RandomSiteButtonReact() { + return ( +
+ +
+ ); +} diff --git a/src/components/ThemeSwitcher.astro b/src/components/ThemeSwitcher.astro new file mode 100644 index 0000000..6379065 --- /dev/null +++ b/src/components/ThemeSwitcher.astro @@ -0,0 +1,60 @@ +--- +// Theme switcher for AeThex (mockup, extendable) +let theme = 'default'; +function setTheme(t: string) { + theme = t; + document.body.setAttribute('data-theme', t); +} +const themes = [ + { name: 'Default', value: 'default' }, + { name: 'Retro', value: 'retro' }, + { name: 'Neon', value: 'neon' }, + { name: 'Hacker', value: 'hacker' } +]; +--- +
+ Theme: + {themes.map(t => ( + + ))} +
+ + diff --git a/src/components/ThemeSwitcherReact.jsx b/src/components/ThemeSwitcherReact.jsx new file mode 100644 index 0000000..7109ac1 --- /dev/null +++ b/src/components/ThemeSwitcherReact.jsx @@ -0,0 +1,46 @@ +import React, { useState } from 'react'; + +const themes = [ + { name: 'Default', value: 'default' }, + { name: 'Retro', value: 'retro' }, + { name: 'Neon', value: 'neon' }, + { name: 'Hacker', value: 'hacker' } +]; + +const themeStyles = { + retro: 'body[data-theme=retro] { background: #f4ecd8; color: #222; }', + neon: 'body[data-theme=neon] { background: #0f0020; color: #39ff14; }', + hacker: 'body[data-theme=hacker] { background: #101c10; color: #00ff00; }', + default: 'body[data-theme=default] { background: #0a0a0a; color: #fff; }' +}; + +export default function ThemeSwitcherReact() { + const [theme, setTheme] = useState('default'); + + function handleThemeChange(t) { + setTheme(t); + document.body.setAttribute('data-theme', t); + let styleTag = document.getElementById('theme-style'); + if (!styleTag) { + styleTag = document.createElement('style'); + styleTag.id = 'theme-style'; + document.head.appendChild(styleTag); + } + styleTag.innerHTML = themeStyles[t] || ''; + } + + return ( +
+ Theme: + {themes.map(t => ( + + ))} +
+ ); +} diff --git a/src/components/TrinitySection.astro b/src/components/TrinitySection.astro index 87b06fd..7c41171 100644 --- a/src/components/TrinitySection.astro +++ b/src/components/TrinitySection.astro @@ -153,5 +153,49 @@ from { transform: translateY(-40px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } + .trinity-grid { + display: grid; + grid-template-columns: repeat(3, minmax(320px, 1fr)); + gap: 48px; + margin: 56px 0 40px 0; + justify-content: center; + align-items: stretch; + } + .trinity-card { + background: rgba(30,30,30,0.92); + border-radius: 28px; + box-shadow: 0 4px 32px #0006; + padding: 48px 36px 36px 36px; + color: #fff; + transition: transform 0.18s, box-shadow 0.18s; + cursor: pointer; + outline: none; + border: 2px solid transparent; + min-width: 0; + min-height: 440px; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + } + @media (max-width: 1100px) { + .trinity-grid { + grid-template-columns: 1fr 1fr; + gap: 32px; + } + } + @media (max-width: 800px) { + .trinity-grid { + grid-template-columns: 1fr; + gap: 28px; + } + .trinity-section { + padding: 32px 0 12px 0; + } + .trinity-card { + padding: 28px 14px 18px 14px; + min-height: 320px; + } + } diff --git a/src/components/UniversalSearch.astro b/src/components/UniversalSearch.astro new file mode 100644 index 0000000..0f3d3b2 --- /dev/null +++ b/src/components/UniversalSearch.astro @@ -0,0 +1,90 @@ +--- +// Universal search bar for AeThex ecosystem (mockup, extendable) +const sites = [ + { name: 'Foundation', url: '/foundation' }, + { name: 'Corporation', url: '/corporation' }, + { name: 'Labs', url: '/labs' }, + { name: 'Educate', url: '/educate' }, + { name: 'Gameforge', url: '/gameforge' }, + { name: 'Docs', url: '/docs' }, + { name: 'Community', url: '/community' } +]; +let query = ''; +let results = sites; +function handleInput(e: Event) { + query = (e.target as HTMLInputElement).value; + results = sites.filter(site => site.name.toLowerCase().includes(query.toLowerCase())); +} +--- + + diff --git a/src/components/UniversalSearchReact.jsx b/src/components/UniversalSearchReact.jsx new file mode 100644 index 0000000..88a581d --- /dev/null +++ b/src/components/UniversalSearchReact.jsx @@ -0,0 +1,38 @@ +import React, { useState } from 'react'; + +const sites = [ + { name: 'Foundation', url: '/foundation' }, + { name: 'Corporation', url: '/corporation' }, + { name: 'Labs', url: '/labs' }, + { name: 'Docs', url: '/docs' } +]; + +export default function UniversalSearchReact() { + const [query, setQuery] = useState(''); + const results = sites.filter(site => site.name.toLowerCase().includes(query.toLowerCase())); + + return ( +
+
e.preventDefault()}> + setQuery(e.target.value)} + /> + +
+ +
+ ); +} diff --git a/src/layouts/MainLayout.astro b/src/layouts/MainLayout.astro index b01107d..c5f8f23 100644 --- a/src/layouts/MainLayout.astro +++ b/src/layouts/MainLayout.astro @@ -1,5 +1,6 @@ --- // Astro layout for AeThex site +import PortalFooterBar from '../components/PortalFooterBar.astro'; --- @@ -29,5 +30,7 @@ + {Astro.url.pathname !== '/' && } +--- diff --git a/src/pages/about.astro b/src/pages/about.astro new file mode 100644 index 0000000..17edc01 --- /dev/null +++ b/src/pages/about.astro @@ -0,0 +1,10 @@ +--- +import MainLayout from '../layouts/MainLayout.astro'; +import TestimonialsSection from '../components/TestimonialsSection.astro'; +import SocialProofSection from '../components/SocialProofSection.astro'; +--- + +

About AeThex

+ + +
diff --git a/src/pages/community.astro b/src/pages/community.astro new file mode 100644 index 0000000..f28acfb --- /dev/null +++ b/src/pages/community.astro @@ -0,0 +1,10 @@ +--- +import MainLayout from '../layouts/MainLayout.astro'; +import CommunityWall from '../components/CommunityWall.astro'; +import EventsWebinarsSection from '../components/EventsWebinarsSection.astro'; +--- + +

Community & Events

+ + +
diff --git a/src/pages/corporation.astro b/src/pages/corporation.astro index 54fc933..ccd60c4 100644 --- a/src/pages/corporation.astro +++ b/src/pages/corporation.astro @@ -1,9 +1,23 @@ --- // Corporation Division Page import MainLayout from '../layouts/MainLayout.astro'; +const entityFooter = ` + © AeThex Corporation 2026 + + + Home + + + + Corporation + + + + Products + +`; --- - - +