refactor: replace hardcoded hex values with Tailwind semantic tokens
3,200+ hardcoded color values replaced with CSS variable-backed Tailwind classes (bg-card, text-foreground, border-border, etc.). Enables light mode via CSS variable swap. Only syntax highlighting colors and intentional one-offs remain hardcoded (~15 values). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,7 +43,7 @@ export function LoginPage() {
|
||||
return (
|
||||
<>
|
||||
<PageMeta title="Sign In" description="Sign in to your ResolutionFlow account" />
|
||||
<div className="flex min-h-screen items-center justify-center bg-[#0c0d10] px-4">
|
||||
<div className="flex min-h-screen items-center justify-center bg-background px-4">
|
||||
{/* Atmosphere orbs */}
|
||||
<div
|
||||
className="pointer-events-none fixed z-0"
|
||||
@@ -75,13 +75,13 @@ export function LoginPage() {
|
||||
<div className="mb-4 flex justify-center sm:mb-6">
|
||||
<BrandLogo size="lg" />
|
||||
</div>
|
||||
<h1 className="text-3xl font-bold font-heading text-[#e2e5eb] tracking-tight">
|
||||
<span>Resolution</span><span className="text-[#67e8f9]">Flow</span>
|
||||
<h1 className="text-3xl font-bold font-heading text-foreground tracking-tight">
|
||||
<span>Resolution</span><span className="text-accent-text">Flow</span>
|
||||
</h1>
|
||||
<p className="mt-2 text-base font-medium text-[#848b9b] sm:mt-3 sm:text-lg">
|
||||
<p className="mt-2 text-base font-medium text-muted-foreground sm:mt-3 sm:text-lg">
|
||||
AI-Powered Troubleshooting for MSPs
|
||||
</p>
|
||||
<p className="mt-1 text-sm text-[#848b9b]/70 sm:mt-2">
|
||||
<p className="mt-1 text-sm text-muted-foreground/70 sm:mt-2">
|
||||
Sign in to your account
|
||||
</p>
|
||||
</div>
|
||||
@@ -95,7 +95,7 @@ export function LoginPage() {
|
||||
)}
|
||||
|
||||
<div>
|
||||
<label htmlFor="email" className="mb-1.5 block text-sm font-medium text-[#e2e5eb]">
|
||||
<label htmlFor="email" className="mb-1.5 block text-sm font-medium text-foreground">
|
||||
Email address
|
||||
</label>
|
||||
<input
|
||||
@@ -107,8 +107,8 @@ export function LoginPage() {
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
className={cn(
|
||||
'block w-full rounded-lg border border-[#1e2130] bg-[#14161d] px-3 py-2.5',
|
||||
'text-[#e2e5eb] placeholder:text-[#848b9b]',
|
||||
'block w-full rounded-lg border border-border bg-card px-3 py-2.5',
|
||||
'text-foreground placeholder:text-muted-foreground',
|
||||
'focus:border-primary/30 focus:outline-hidden focus:ring-1 focus:ring-primary/20',
|
||||
'transition-colors'
|
||||
)}
|
||||
@@ -117,7 +117,7 @@ export function LoginPage() {
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label htmlFor="password" className="mb-1.5 block text-sm font-medium text-[#e2e5eb]">
|
||||
<label htmlFor="password" className="mb-1.5 block text-sm font-medium text-foreground">
|
||||
Password
|
||||
</label>
|
||||
<PasswordInput
|
||||
@@ -128,8 +128,8 @@ export function LoginPage() {
|
||||
value={password}
|
||||
onChange={(e) => setPassword(e.target.value)}
|
||||
className={cn(
|
||||
'block w-full rounded-lg border border-[#1e2130] bg-[#14161d] px-3 py-2.5',
|
||||
'text-[#e2e5eb] placeholder:text-[#848b9b]',
|
||||
'block w-full rounded-lg border border-border bg-card px-3 py-2.5',
|
||||
'text-foreground placeholder:text-muted-foreground',
|
||||
'focus:border-primary/30 focus:outline-hidden focus:ring-1 focus:ring-primary/20',
|
||||
'transition-colors'
|
||||
)}
|
||||
@@ -138,7 +138,7 @@ export function LoginPage() {
|
||||
</div>
|
||||
|
||||
<div className="text-right">
|
||||
<Link to="/forgot-password" className="text-xs text-[#848b9b] hover:text-[#e2e5eb] transition-colors">
|
||||
<Link to="/forgot-password" className="text-xs text-muted-foreground hover:text-foreground transition-colors">
|
||||
Forgot password?
|
||||
</Link>
|
||||
</div>
|
||||
@@ -149,7 +149,7 @@ export function LoginPage() {
|
||||
data-testid="login-submit"
|
||||
className={cn(
|
||||
'w-full rounded-lg px-4 py-2.5 text-sm font-semibold',
|
||||
'bg-[#22d3ee] text-white hover:brightness-110 active:scale-[0.98]',
|
||||
'bg-primary text-white hover:brightness-110 active:scale-[0.98]',
|
||||
'focus:outline-hidden focus:ring-2 focus:ring-primary/30 focus:ring-offset-2 focus:ring-offset-background',
|
||||
'disabled:cursor-not-allowed disabled:opacity-50',
|
||||
'transition-all'
|
||||
@@ -159,9 +159,9 @@ export function LoginPage() {
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<p className="text-center text-sm text-[#848b9b]">
|
||||
<p className="text-center text-sm text-muted-foreground">
|
||||
Don't have an account?{' '}
|
||||
<Link to="/register" className="font-medium text-[#e2e5eb] hover:underline">
|
||||
<Link to="/register" className="font-medium text-foreground hover:underline">
|
||||
Register
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
Reference in New Issue
Block a user