- Remove storage/logs/ and prod.log from git tracking; add to .gitignore - Remove unused AvatarCarousel and ArticleSlider components - Remove unused SkeletonTable export from ui.tsx - Remove unused ChevronDown import from admin layout - Remove 13 unused CSS classes (icon-base, nav-*, navigation-icon*, .app.dark, text-body, transition-base, card-base, admin-info-grid, .coin.*) - Remove duplicate translation keys (openMenu/closeMenu in en.json) - Fix admin-bans to use Prisma-generated bans_type enum - Create shared AdminPageHeader component and formatDate utility - Add logger and generateRequestId for structured logging - All 58 tests pass, typecheck clean, build succeeds
22 lines
739 B
TypeScript
22 lines
739 B
TypeScript
import type { LucideIcon } from "lucide-react";
|
|
|
|
interface AdminPageHeaderProps {
|
|
icon: LucideIcon;
|
|
title: string;
|
|
subtitle: string;
|
|
}
|
|
|
|
export function AdminPageHeader({ icon: Icon, title, subtitle }: AdminPageHeaderProps) {
|
|
return (
|
|
<div className="flex items-center gap-3 mb-6">
|
|
<div className="w-10 h-10 rounded-xl bg-gradient-to-br from-[var(--color-primary)]/20 to-[var(--color-primary)]/5 grid place-items-center">
|
|
<Icon size={20} className="text-[var(--color-primary)]" />
|
|
</div>
|
|
<div>
|
|
<h1 className="m-0 text-xl font-extrabold text-[var(--color-text)]">{title}</h1>
|
|
<p className="m-0 text-xs text-[var(--color-text-muted)] mt-0.5">{subtitle}</p>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|