Merge pull request #12 from kjannette/migrate-inline-css

Migrate inline css
This commit is contained in:
S Jannette
2026-03-02 00:28:46 -05:00
committed by GitHub
3 changed files with 156 additions and 113 deletions

View File

@@ -26,8 +26,8 @@ export default function Navbar() {
<div style={{ display: "flex", alignItems: "center", gap: "0.5rem" }}> <div style={{ display: "flex", alignItems: "center", gap: "0.5rem" }}>
<span style={{ <span style={{
fontWeight: 700, fontWeight: 700,
fontSize: "1.1rem", fontSize: "1.4rem",
color: "#fff", color: "#e62525",
marginRight: "2rem", marginRight: "2rem",
letterSpacing: "0.5px", letterSpacing: "0.5px",
}}> }}>

View File

@@ -0,0 +1,88 @@
.login-page {
min-height: 100vh;
background-image: url(/ping.png);
background-size: 67%;
background-position: center;
background-repeat: no-repeat;
}
.login-card {
max-width: 400px;
margin: 20px auto;
padding: 2rem;
padding-top: 8rem;
border: 1px solid #333;
border-radius: 8px;
background-color: rgba(0, 0, 0, 0.75);
}
.login-heading {
margin-bottom: 2rem;
text-align: center;
}
.login-brand {
color: #e62525;
}
.login-error {
padding: 0.75rem;
margin-bottom: 1rem;
background-color: #ff000020;
border: 1px solid #ff0000;
border-radius: 4px;
color: #ff6666;
}
.login-field {
margin-bottom: 1rem;
}
.login-field-last {
margin-bottom: 1.5rem;
}
.login-label {
display: block;
margin-bottom: 0.5rem;
}
.login-input {
width: 100%;
padding: 0.5rem;
font-size: 1.2rem;
background-color: #242424;
border: 1px solid #444;
border-radius: 4px;
color: white;
}
.login-button {
width: 100%;
padding: 0.75rem;
font-size: 1.2rem;
background-color: #0066cc;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.login-button:disabled {
background-color: #333;
cursor: not-allowed;
}
.login-footer {
margin-top: 1.5rem;
text-align: center;
}
.login-footer-text {
color: #b3b3b3;
}
.login-signup-link {
color: #0066cc;
text-decoration: none;
}

View File

@@ -1,8 +1,10 @@
import { useState } from "react"; import { useState } from "react";
import { Link, useNavigate } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom";
import { useAuth } from "../contexts/AuthContext"; import { useAuth } from "../contexts/AuthContext";
import "./Login.css";
export default function Login() { export default function Login() {
const [isVisible, setIsVisible] = useState(false);
const [email, setEmail] = useState(""); const [email, setEmail] = useState("");
const [password, setPassword] = useState(""); const [password, setPassword] = useState("");
const [error, setError] = useState(""); const [error, setError] = useState("");
@@ -33,48 +35,25 @@ export default function Login() {
} }
return ( return (
<div className="login-page">
<div <div
style={{ className="login-card"
minHeight: "100vh", onMouseEnter={() => setIsVisible(true)}
backgroundImage: "url(/ping.png)",
backgroundSize: "67%",
backgroundPosition: "center",
backgroundRepeat: "no-repeat",
}}
> >
<div <h1 className="login-heading">
style={{ <span className="login-brand">Koin Ping</span> - Login
maxWidth: "400px",
margin: "0 auto",
padding: "2rem",
paddingTop: "8rem",
border: "1px solid #333",
borderRadius: "8px",
backgroundColor: "rgba(0, 0, 0, 0.75)",
}}
>
<h1 style={{ marginBottom: "2rem", textAlign: "center" }}>
Koin Ping - Login
</h1> </h1>
<div style={{ visibility: isVisible ? 'visible' : 'hidden' }}>
{error && ( {error && (
<div <div className="login-error">
style={{
padding: "0.75rem",
marginBottom: "1rem",
backgroundColor: "#ff000020",
border: "1px solid #ff0000",
borderRadius: "4px",
color: "#ff6666",
}}
>
{error} {error}
</div> </div>
)} )}
<form onSubmit={handleSubmit}> <form onSubmit={handleSubmit}>
<div style={{ marginBottom: "1rem" }}> <div className="login-field">
<label style={{ display: "block", marginBottom: "0.5rem" }}> <label className="login-label">
Email Email
</label> </label>
<input <input
@@ -82,21 +61,13 @@ export default function Login() {
value={email} value={email}
onChange={(e) => setEmail(e.target.value)} onChange={(e) => setEmail(e.target.value)}
disabled={loading} disabled={loading}
style={{ className="login-input"
width: "100%",
padding: "0.5rem",
fontSize: "1.2rem",
backgroundColor: "#242424",
border: "1px solid #444",
borderRadius: "4px",
color: "white",
}}
required required
/> />
</div> </div>
<div style={{ marginBottom: "1.5rem" }}> <div className="login-field-last">
<label style={{ display: "block", marginBottom: "0.5rem" }}> <label className="login-label">
Password Password
</label> </label>
<input <input
@@ -104,15 +75,7 @@ export default function Login() {
value={password} value={password}
onChange={(e) => setPassword(e.target.value)} onChange={(e) => setPassword(e.target.value)}
disabled={loading} disabled={loading}
style={{ className="login-input"
width: "100%",
padding: "0.5rem",
fontSize: "1.2rem",
backgroundColor: "#242424",
border: "1px solid #444",
borderRadius: "4px",
color: "white",
}}
required required
/> />
</div> </div>
@@ -120,27 +83,18 @@ export default function Login() {
<button <button
type="submit" type="submit"
disabled={loading} disabled={loading}
style={{ className="login-button"
width: "100%",
padding: "0.75rem",
fontSize: "1.2rem",
backgroundColor: loading ? "#333" : "#0066cc",
color: "white",
border: "none",
borderRadius: "4px",
cursor: loading ? "not-allowed" : "pointer",
}}
> >
{loading ? "Logging in..." : "Log In"} {loading ? "Logging in..." : "Log In"}
</button> </button>
</form> </form>
<div style={{ marginTop: "1.5rem", textAlign: "center" }}> <div className="login-footer">
<p style={{ color: "#b3b3b3" }}> <p className="login-footer-text">
Don't have an account?{" "} Don't have an account?{" "}
<Link <Link
to="/signup" to="/signup"
style={{ color: "#0066cc", textDecoration: "none" }} className="login-signup-link"
> >
Sign up here Sign up here
</Link> </Link>
@@ -148,5 +102,6 @@ export default function Login() {
</div> </div>
</div> </div>
</div> </div>
</div>
); );
} }