diff --git a/package-lock.json b/package-lock.json index 2d464b9..e4f2213 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "framer-motion": "^12.23.22", "react": "^19.1.1", "react-dom": "^19.1.1", + "react-router-dom": "^7.9.3", "tailwind-merge": "^3.3.1" }, "devDependencies": { @@ -1684,6 +1685,15 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2601,6 +2611,44 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.3.tgz", + "integrity": "sha512-4o2iWCFIwhI/eYAIL43+cjORXYn/aRQPgtFRRZb3VzoyQ5Uej0Bmqj7437L97N9NJW4wnicSwLOLS+yCXfAPgg==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.3.tgz", + "integrity": "sha512-1QSbA0TGGFKTAc/aWjpfW/zoEukYfU4dc1dLkT/vvf54JoGMkW+fNA+3oyo2gWVW1GM7BxjJVHz5GnPJv40rvg==", + "license": "MIT", + "dependencies": { + "react-router": "7.9.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2669,6 +2717,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", diff --git a/package.json b/package.json index b57f183..21d92c0 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "framer-motion": "^12.23.22", "react": "^19.1.1", "react-dom": "^19.1.1", + "react-router-dom": "^7.9.3", "tailwind-merge": "^3.3.1" }, "devDependencies": { diff --git a/src/App.jsx b/src/App.jsx index 4aae57a..87df6d9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,19 +1,32 @@ +import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; +import Header from './components/Header'; import Hero from './components/Hero'; import Manifesto from './components/Manifesto'; import CorePillars from './components/CorePillars'; import Foundations from './components/Foundations'; import ForYou from './components/ForYou'; import CallToAction from './components/CallToAction'; +import ComingSoon from './components/ComingSoon'; + +const Home = () => ( +
+ + + + + +
+); function App() { return ( -
- - - - - -
+ +
{/* Render Header here */} + + } /> + } /> + + ); } diff --git a/src/components/ComingSoon.jsx b/src/components/ComingSoon.jsx new file mode 100644 index 0000000..af2c460 --- /dev/null +++ b/src/components/ComingSoon.jsx @@ -0,0 +1,11 @@ +import React from 'react'; + +const ComingSoon = () => { + return ( +
+

Coming Soon!

+
+ ); +}; + +export default ComingSoon; \ No newline at end of file diff --git a/src/components/Header.jsx b/src/components/Header.jsx new file mode 100644 index 0000000..7891543 --- /dev/null +++ b/src/components/Header.jsx @@ -0,0 +1,59 @@ +import { useState } from 'react'; +import { Link } from 'react-router-dom'; +import SocietyTerminal from './SocietyTerminal'; + +function Header() { + const [showTerminal, setShowTerminal] = useState(false); + + return ( + <> +
+ +
+ + {showTerminal && ( + + )} + + ); + } + + export default Header; \ No newline at end of file diff --git a/src/index.css b/src/index.css index 9499cc0..83d6e60 100644 --- a/src/index.css +++ b/src/index.css @@ -324,3 +324,49 @@ button { .focus\:ring-0:focus { box-shadow: none; } + +/* Custom utility for no-underline */ +.no-underline { + text-decoration: none; +} + +/* Missing Tailwind-like utility classes */ +.h-16 { height: 4rem; } /* 16 * 0.25rem = 4rem */ +.min-w-fit { min-width: fit-content; } +.tracking-tight { letter-spacing: -0.025em; } +.whitespace-nowrap { white-space: nowrap; } +.rounded { border-radius: 0.25rem; } /* 4px */ + +.bg-green-500 { background-color: #22c55e; } /* A common green-500 shade */ +.border-green-500\/30 { border-color: rgba(34, 197, 94, 0.3); } /* Green-500 with 30% opacity */ + +/* Hover effects */ +.hover\:text-green-400:hover { color: #4ade80; } +.hover\:bg-green-400:hover { background-color: #4ade80; } + +/* Transitions */ +.transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; } +.duration-200 { transition-duration: 200ms; } + +/* Spacing utilities (similar to Tailwind's space-x) */ +.space-x-4 > * + * { margin-left: 1rem; } +.space-x-6 > * + * { margin-left: 1.5rem; } +.space-x-8 > * + * { margin-left: 2rem; } +.space-x-12 > * + * { margin-left: 3rem; } +.space-x-16 > * + * { margin-left: 4rem; } + +/* Responsive spacing */ +@media (min-width: 640px) { + .sm\:space-x-6 > * + * { margin-left: 1.5rem; } + .sm\:space-x-12 > * + * { margin-left: 3rem; } +} +@media (min-width: 1024px) { + .lg\:space-x-8 > * + * { margin-left: 2rem; } + .lg\:space-x-16 > * + * { margin-left: 4rem; } +} + +/* Responsive text sizes (already present, but ensuring consistency) */ +.text-sm { font-size: 0.875rem; } +.text-base { font-size: 1rem; } +.text-xl { font-size: 1.25rem; } +.text-2xl { font-size: 1.5rem; }