fix: input alignment

This commit is contained in:
Alexej Wolff
2026-02-11 01:07:43 +01:00
parent c404b1e17c
commit 2bfe8d95cc
9 changed files with 169 additions and 91 deletions
+73
View File
@@ -0,0 +1,73 @@
.footer {
background: #1a1a1a;
border-top: 1px solid #2a2a2a;
padding: 0.75rem 1.5rem;
}
.footer-content {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
}
.footer-left {
display: flex;
align-items: center;
gap: 1rem;
}
.footer-brand {
font-size: 0.9rem;
color: #888;
}
.footer-copyright {
font-size: 0.8rem;
color: #555;
}
.footer-stats {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.5rem 1rem;
background: rgba(100, 181, 246, 0.1);
border: 1px solid rgba(100, 181, 246, 0.2);
border-radius: 20px;
text-decoration: none;
transition: all 0.2s;
}
.footer-stats:hover {
background: rgba(100, 181, 246, 0.15);
border-color: rgba(100, 181, 246, 0.3);
}
.stats-icon {
font-size: 1rem;
}
.stats-label {
font-size: 0.8rem;
color: #888;
}
.stats-value {
font-size: 0.9rem;
font-weight: 600;
color: #64b5f6;
}
@media (max-width: 600px) {
.footer-content {
flex-direction: column;
gap: 0.75rem;
}
.footer-stats {
width: 100%;
justify-content: center;
}
}
+48
View File
@@ -0,0 +1,48 @@
import { useState, useEffect } from "react";
import { Link } from "react-router-dom";
import { useAuth } from "../contexts/AuthContext";
import { getAdminStats } from "../services/api";
import "./Footer.css";
export function Footer() {
const { isAuthenticated } = useAuth();
const [totalTokens, setTotalTokens] = useState<number | null>(null);
useEffect(() => {
const loadStats = async () => {
if (!isAuthenticated) return;
const stats = await getAdminStats();
if (stats) {
setTotalTokens(stats.totalTokens);
}
};
loadStats();
}, [isAuthenticated]);
const formatTokens = (tokens: number) => {
if (tokens >= 1000000) return `${(tokens / 1000000).toFixed(2)}M`;
if (tokens >= 1000) return `${(tokens / 1000).toFixed(1)}K`;
return tokens.toString();
};
return (
<footer className="footer">
<div className="footer-content">
<div className="footer-left">
<span className="footer-brand"> ReSekai</span>
<span className="footer-copyright">© 2026</span>
</div>
{isAuthenticated && (
<Link to="/admin" className="footer-stats">
<span className="stats-icon">📊</span>
<span className="stats-label">Токенов:</span>
<span className="stats-value">
{totalTokens !== null ? formatTokens(totalTokens) : "..."}
</span>
</Link>
)}
</div>
</footer>
);
}
-3
View File
@@ -26,9 +26,6 @@ export function Header() {
<Link to="/characters" className="nav-link">
Персонажи
</Link>
<Link to="/admin" className="nav-link">
📊 Статистика
</Link>
</>
)}
</nav>