diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 8317518..4223436 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,5 +1,6 @@ -import { Routes, Route, Link, Navigate } from "react-router-dom"; +import { Routes, Route, Navigate } from "react-router-dom"; import { useAuth } from "./contexts/AuthContext"; +import Navbar from "./components/Navbar"; import Login from "./pages/Login"; import Signup from "./pages/Signup"; import Addresses from "./pages/Addresses"; @@ -7,9 +8,8 @@ import Alerts from "./pages/Alerts"; import AlertHistory from "./pages/AlertHistory"; export default function App() { - const { currentUser, logout } = useAuth(); + const { currentUser } = useAuth(); - // Show login/signup routes if not authenticated if (!currentUser) { return ( @@ -20,51 +20,9 @@ export default function App() { ); } - // Show main app if authenticated return ( -
- - +
+ } /> } /> diff --git a/frontend/src/components/Navbar.jsx b/frontend/src/components/Navbar.jsx new file mode 100644 index 0000000..f5cad23 --- /dev/null +++ b/frontend/src/components/Navbar.jsx @@ -0,0 +1,85 @@ +import { Link, useLocation } from "react-router-dom"; +import { useAuth } from "../contexts/AuthContext"; + +const navLinks = [ + { to: "/addresses", label: "Addresses" }, + { to: "/alerts", label: "Configure Alerts" }, + { to: "/history", label: "Alert History" }, +]; + +export default function Navbar() { + const { currentUser, logout } = useAuth(); + const location = useLocation(); + + if (!currentUser) return null; + + return ( + + ); +} diff --git a/frontend/src/index.css b/frontend/src/index.css new file mode 100644 index 0000000..79d770c --- /dev/null +++ b/frontend/src/index.css @@ -0,0 +1,33 @@ +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap'); + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 14px; +} + +body { + font-family: 'Nunito', sans-serif; + font-size: 1.5rem; + font-weight: 200; + line-height: 1.6; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Nunito', sans-serif; + font-weight: 200; +} + +input, select, textarea, button { + font-family: 'Nunito', sans-serif; + font-size: 1rem; + font-weight: 200; +} diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx index f4417d1..00913df 100644 --- a/frontend/src/main.jsx +++ b/frontend/src/main.jsx @@ -3,6 +3,7 @@ import ReactDOM from "react-dom/client"; import { BrowserRouter } from "react-router-dom"; import { AuthProvider } from "./contexts/AuthContext"; import App from "./App"; +import "./index.css"; ReactDOM.createRoot(document.getElementById("root")).render( diff --git a/frontend/src/pages/Addresses.jsx b/frontend/src/pages/Addresses.jsx index 9e33911..4783342 100644 --- a/frontend/src/pages/Addresses.jsx +++ b/frontend/src/pages/Addresses.jsx @@ -51,7 +51,7 @@ export default function Addresses() { {loading &&

Loading addresses...

} {error &&

Error: {error}

} {!loading && !error && addresses.length === 0 && ( -

+

No addresses tracked yet. Add one above to get started.

)} @@ -63,8 +63,9 @@ export default function Addresses() { style={{ padding: "1rem", marginBottom: "0.5rem", - border: "1px solid #ddd", + border: "1px solid #444", borderRadius: "4px", + backgroundColor: "#333", }} >
{addr.address} diff --git a/frontend/src/pages/AlertHistory.jsx b/frontend/src/pages/AlertHistory.jsx index f9d76fc..e2af5a4 100644 --- a/frontend/src/pages/AlertHistory.jsx +++ b/frontend/src/pages/AlertHistory.jsx @@ -39,7 +39,7 @@ export default function AlertHistory() {

Recent Alerts

{alertEvents.length === 0 ? ( -

No alerts yet

+

No alerts yet

) : (
    {alertEvents.map((event) => ( @@ -48,8 +48,9 @@ export default function AlertHistory() { style={{ padding: "1rem", marginBottom: "0.75rem", - border: "1px solid #ddd", + border: "1px solid #444", borderRadius: "4px", + backgroundColor: "#333", }} >
    @@ -58,15 +59,15 @@ export default function AlertHistory() { {event.address_label && (
    Address: {event.address_label}
    )} - + {formatTimestamp(event.timestamp)} diff --git a/frontend/src/pages/Alerts.jsx b/frontend/src/pages/Alerts.jsx index 529420c..b3676f2 100644 --- a/frontend/src/pages/Alerts.jsx +++ b/frontend/src/pages/Alerts.jsx @@ -250,15 +250,15 @@ export default function Alerts() { style={{ padding: "1rem", marginBottom: "2rem", - backgroundColor: "#2a2a2a", + backgroundColor: "#333", borderRadius: "4px", border: "1px solid #444", }} >
    Managing alerts for: @@ -274,8 +274,8 @@ export default function Alerts() {
    {selectedAddress.address} @@ -316,7 +316,7 @@ export default function Alerts() { marginBottom: "0.5rem", border: "1px solid #444", borderRadius: "4px", - backgroundColor: "#2a2a2a", + backgroundColor: "#333", opacity: alert.enabled ? 1 : 0.6, @@ -348,8 +348,8 @@ export default function Alerts() {
    Threshold:{" "} @@ -362,8 +362,8 @@ export default function Alerts() {
    @@ -480,8 +480,8 @@ export default function Alerts() {
    diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx index 1842833..3af2e66 100644 --- a/frontend/src/pages/Login.jsx +++ b/frontend/src/pages/Login.jsx @@ -81,7 +81,7 @@ export default function Login() { width: "100%", padding: "0.5rem", fontSize: "1rem", - backgroundColor: "#1a1a1a", + backgroundColor: "#242424", border: "1px solid #444", borderRadius: "4px", color: "white", @@ -103,7 +103,7 @@ export default function Login() { width: "100%", padding: "0.5rem", fontSize: "1rem", - backgroundColor: "#1a1a1a", + backgroundColor: "#242424", border: "1px solid #444", borderRadius: "4px", color: "white", @@ -131,7 +131,7 @@ export default function Login() {
    -

    +

    Don't have an account?{" "}

    -

    +

    Already have an account?{" "}