mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-30 02:23:47 +00:00
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:
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user