feat: unify tenant admin ui and add photo moderation

This commit is contained in:
Codex Agent
2025-11-07 13:50:55 +01:00
parent 9cc9950b0c
commit 253239455b
14 changed files with 995 additions and 583 deletions

View File

@@ -29,31 +29,27 @@ export function TenantHeroCard({
return (
<Card
className={cn(
'relative overflow-hidden border border-slate-200/80 bg-white text-slate-900 shadow-xl shadow-rose-200/30 backdrop-blur',
'dark:border-white/10 dark:bg-slate-950/90 dark:text-slate-100',
'relative overflow-hidden border border-slate-200 bg-white text-slate-900 shadow-lg shadow-rose-100/50 backdrop-blur dark:border-white/10 dark:bg-slate-900/80 dark:text-slate-100',
className
)}
>
<div
aria-hidden
className="pointer-events-none absolute inset-0 bg-[radial-gradient(ellipse_at_top,_rgba(255,137,170,0.18),_transparent_55%),radial-gradient(ellipse_at_bottom,_rgba(99,102,241,0.16),_transparent_65%)] motion-safe:animate-[aurora_18s_ease-in-out_infinite] dark:hidden"
/>
<div aria-hidden className="absolute inset-0 bg-gradient-to-br from-rose-50/70 via-white to-sky-50/70 dark:hidden" />
<div aria-hidden className="absolute inset-0 hidden bg-gradient-to-br from-slate-950/80 via-slate-900/20 to-transparent mix-blend-overlay dark:block" />
<CardContent className="relative z-10 flex flex-col gap-8 px-6 py-8 lg:flex-row lg:items-start lg:justify-between lg:px-10 lg:py-12">
<div className="max-w-2xl space-y-6">
<CardContent className="relative z-10 flex flex-col gap-6 px-5 py-6 sm:px-6 lg:flex-row lg:items-start lg:justify-between">
<div className="space-y-4">
{badge ? (
<span className="inline-flex items-center gap-2 rounded-full border border-rose-100 bg-rose-50/80 px-4 py-1 text-xs font-semibold uppercase tracking-[0.35em] text-rose-600 dark:border-white/30 dark:bg-white/15 dark:text-white">
<span className="inline-flex items-center gap-2 rounded-full bg-rose-100/80 px-3 py-1 text-[11px] font-semibold uppercase tracking-[0.25em] text-rose-600 dark:bg-white/15 dark:text-white">
{badge}
</span>
) : null}
<div className="space-y-3 text-slate-700 dark:text-slate-100">
<h1 className="font-display text-3xl font-semibold tracking-tight text-slate-900 dark:text-white sm:text-4xl">{title}</h1>
{description ? <p className="text-sm text-slate-600 dark:text-white/75 sm:text-base">{description}</p> : null}
<div className="space-y-2 text-slate-700 dark:text-slate-100">
<h1 className="font-display text-2xl font-semibold leading-tight text-slate-900 dark:text-white sm:text-3xl">
{title}
</h1>
{description ? (
<p className="text-sm text-slate-600 dark:text-white/80">{description}</p>
) : null}
{supporting?.map((paragraph) => (
<p key={paragraph} className="text-sm text-slate-600 dark:text-white/75 sm:text-base">
<p key={paragraph} className="text-sm text-slate-600 dark:text-white/70">
{paragraph}
</p>
))}
@@ -61,14 +57,18 @@ export function TenantHeroCard({
</div>
{(primaryAction || secondaryAction) && (
<div className="flex flex-wrap gap-3">
<div className="flex flex-wrap gap-2">
{primaryAction}
{secondaryAction}
</div>
)}
</div>
{aside ? <div className="w-full max-w-sm">{aside}</div> : null}
{aside ? (
<div className="rounded-2xl border border-slate-200/70 bg-white/90 p-4 text-sm dark:border-white/10 dark:bg-white/5">
{aside}
</div>
) : null}
</CardContent>
</Card>
);