refactor(quieter): tone down AdminPanel + AdminDashboard

Per /impeccable audit findings: admin overview pages concentrated
AI-aesthetic tells. Apply the 'quieter' refinement — strip the loudness,
keep the structure, preserve state-conveying motion.

AdminPanel.tsx
  • Hero h1 — drop bg-clip-text + 3-stop gradient. Solid text-dark-50
    (the absolute ban applied; type weight + size carry hierarchy now).
  • 'Online' dot — drop the 10px-radius glow shadow; the dot + pulse
    animation alone signal liveness.
  • GlassCard — drop the 3D perspective-tilt mouse-tracking (decorative
    motion that didn't convey state), drop the staggered enter
    animation (no orchestrated page-load), drop the top hairline-glow
    gradient, drop the inner shine overlay + drop-shadow-sm on the
    count badge. Keep backdrop-blur on the card body itself — the
    component is literally named GlassCard, the glass identity is the
    point. Hover state stays.
  • Stats-bar pills (2 places) — drop backdrop-blur. Tiny data cells
    don't need glass.
  • Search empty-state icon container — drop backdrop-blur. Decorative
    on a non-interactive surface.

AdminDashboard.tsx
  • Strip backdrop-blur from all 9 stat / node / panel cards. They
    were using it as ambient noise; solid bg-dark-800/{30,50} reads
    better and renders faster.
  • Daily-sales progress bar — drop the from-accent-600 to-accent-400
    gradient (and hover gradient swap). Solid bg-accent-500, hover
    bg-accent-400. Width still animates (functional state change).
  • Animate-pulse on the connected-node status dot kept — it conveys
    'live' state, which is exactly what motion is for in product UI.
This commit is contained in:
c0mrade
2026-05-26 19:11:17 +03:00
parent 9afa7f131f
commit b81346dbb2
2 changed files with 23 additions and 63 deletions

View File

@@ -178,7 +178,7 @@ function StatCard({ title, value, subtitle, icon, color, trend }: StatCardProps)
};
return (
<div className="rounded-xl border border-dark-700 bg-dark-800/50 p-5 backdrop-blur transition-colors hover:border-dark-600">
<div className="rounded-xl border border-dark-700 bg-dark-800/50 p-5 transition-colors hover:border-dark-600">
<div className="mb-3 flex items-start justify-between">
<div className={`rounded-lg p-2.5 ${colorClasses[color]}`}>{icon}</div>
{trend && (
@@ -230,7 +230,7 @@ function NodeCard({ node, onRestart, onToggle, isLoading }: NodeCardProps) {
return (
<div
className={`rounded-xl border bg-dark-800/50 backdrop-blur ${node.is_disabled ? 'border-dark-700' : node.is_connected ? 'border-success-500/30' : 'border-error-500/30'} p-4 transition-colors hover:border-dark-600`}
className={`rounded-xl border bg-dark-800/50 ${node.is_disabled ? 'border-dark-700' : node.is_connected ? 'border-success-500/30' : 'border-error-500/30'} p-4 transition-colors hover:border-dark-600`}
>
<div className="mb-3 flex items-start justify-between">
<div className="flex items-center gap-3">
@@ -499,7 +499,7 @@ export default function AdminDashboard() {
</div>
{/* Nodes Section */}
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5 backdrop-blur">
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5">
<div className="mb-4 flex items-center justify-between">
<div className="flex items-center gap-3">
<div className="rounded-lg bg-accent-500/20 p-2.5 text-accent-400">
@@ -568,7 +568,7 @@ export default function AdminDashboard() {
{/* Revenue and Subscriptions */}
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
{/* Revenue Chart */}
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5 backdrop-blur">
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5">
<div className="mb-4 flex items-center gap-3">
<div className="rounded-lg bg-warning-500/20 p-2.5 text-warning-400">
<ChartBarIcon />
@@ -602,7 +602,7 @@ export default function AdminDashboard() {
</div>
{/* Subscription Stats */}
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5 backdrop-blur">
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5">
<div className="mb-4 flex items-center gap-3">
<div className="rounded-lg bg-accent-500/20 p-2.5 text-accent-400">
<SparklesIcon />
@@ -701,7 +701,7 @@ export default function AdminDashboard() {
{/* Tariff Stats */}
{stats?.tariff_stats && stats.tariff_stats.tariffs.length > 0 && (
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5 backdrop-blur">
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-5">
<div className="mb-4 flex items-center gap-3">
<div className="rounded-lg bg-success-500/20 p-2.5 text-success-400">
<TagIcon />
@@ -778,7 +778,7 @@ export default function AdminDashboard() {
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
{/* Top Referrers */}
{referrers && (referrers.by_earnings.length > 0 || referrers.by_invited.length > 0) && (
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-4 backdrop-blur sm:p-5">
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-4 sm:p-5">
<div className="mb-4 flex items-center justify-between">
<div className="flex items-center gap-2 sm:gap-3">
<div className="rounded-lg bg-accent-500/20 p-2 text-accent-400 sm:p-2.5">
@@ -918,7 +918,7 @@ export default function AdminDashboard() {
{/* Top Campaigns */}
{campaigns && campaigns.campaigns.length > 0 && (
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-4 backdrop-blur sm:p-5">
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-4 sm:p-5">
<div className="mb-4 flex items-center gap-2 sm:gap-3">
<div className="rounded-lg bg-warning-500/20 p-2 text-warning-400 sm:p-2.5">
<MegaphoneIcon />
@@ -981,7 +981,7 @@ export default function AdminDashboard() {
{/* Recent Payments */}
{payments && payments.payments.length > 0 && (
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-4 backdrop-blur sm:p-5">
<div className="rounded-xl border border-dark-700 bg-dark-800/30 p-4 sm:p-5">
<div className="mb-4 flex items-center justify-between">
<div className="flex items-center gap-3">
<div className="rounded-lg bg-success-500/20 p-2 text-success-400 sm:p-2.5">