wsb-bot / WSW /src /app /scripts /page.tsx
APRK01
Premium Redesign: System Modules and Surgical Layout
5fb7488
import Link from 'next/link';
import { getWebDropsByCategory, checkVipStatus } from '@/lib/db';
import FadeIn from '@/components/FadeIn';
import AnimatedRow from '@/components/AnimatedRow';
import { getServerSession } from "next-auth/next";
import { authOptions } from "@/app/api/auth/[...nextauth]/route";
export default async function Scripts() {
const drops = await getWebDropsByCategory('scripts');
const session = await getServerSession(authOptions);
const discordId = session?.user ? (session.user as any).id : null;
const isVip = discordId ? await checkVipStatus(discordId) : false;
return (
<main className="min-h-[100dvh] bg-transparent text-white selection:bg-white/20 selection:text-white font-sans p-4 md:p-6 lg:p-8 flex flex-col overflow-hidden">
{/* Structural Brutalist Header */}
<header className="flex flex-col md:flex-row justify-between items-start md:items-end mb-8 md:mb-12 border-b-2 border-white pb-6 gap-6 md:gap-0">
<div>
<h1 className="text-4xl md:text-6xl font-black tracking-tighter uppercase mb-2">
Scripts
</h1>
<p className="font-mono text-xs md:text-sm tracking-widest text-zinc-400 uppercase">
[ DIRECTORY . 003 ]
</p>
</div>
<div className="text-left md:text-right">
<p className="font-mono text-[10px] md:text-xs tracking-[0.3em] text-white">
WYVERN SOFTWORKS <span className="text-zinc-600">Β© 2026</span>
</p>
<p className="font-mono text-[10px] tracking-widest text-zinc-500 mt-1">
TOTAL INDEXED: {drops.length}
</p>
</div>
</header>
<div className="flex flex-col md:flex-row gap-8 flex-1 min-h-0">
{/* Module Sidebar */}
<nav className="w-full md:w-56 lg:w-72 flex-shrink-0 border-b md:border-b-0 md:border-r border-white/10 pr-0 md:pr-10 pb-8 md:pb-0 flex flex-col gap-0 overflow-hidden">
<div className="mb-10 hidden md:block">
<Link href="/" className="font-mono text-[9px] tracking-[0.4em] text-zinc-500 hover:text-white transition-all uppercase flex items-center gap-2 group">
<span className="w-4 h-[1px] bg-zinc-800 group-hover:w-8 group-hover:bg-white transition-all" />
RETURN TO BASE
</Link>
</div>
<div className="mb-6 flex flex-col gap-1">
<span className="font-mono text-[10px] tracking-[0.3em] text-zinc-600 uppercase">SYSTEM</span>
<span className="font-black text-xs tracking-tighter uppercase text-white">MODULES</span>
</div>
<div className="flex flex-row md:flex-col gap-2 md:gap-0 overflow-x-auto md:overflow-visible no-scrollbar">
{[
{ id: 'sources', label: 'Sources', active: false, index: '01' },
{ id: 'cracks', label: 'Cracks', active: false, index: '02' },
{ id: 'scripts', label: 'Scripts', active: true, index: '03' },
{ id: 'tools', label: 'Tools', active: false, index: '04' },
].map((mod) => (
<Link
key={mod.id}
href={`/${mod.id}`}
className={`group relative flex items-center justify-between py-3 md:py-4 border-b border-white/5 transition-all ${
mod.active ? 'px-4 bg-white text-black' : 'px-0 text-zinc-500 hover:text-white hover:pl-4'
}`}
>
<div className="flex items-center gap-4">
<span className={`font-mono text-[9px] ${mod.active ? 'text-black/50' : 'text-zinc-800 group-hover:text-zinc-400'}`}>
{mod.index}
</span>
<span className="font-black text-[11px] tracking-widest uppercase italic">
{mod.label}
</span>
</div>
{mod.active && (
<div className="w-1.5 h-1.5 bg-black rounded-full shadow-[0_0_8px_rgba(0,0,0,0.5)]" />
)}
{!mod.active && (
<span className="opacity-0 group-hover:opacity-100 transition-opacity font-mono text-[10px]">β†’</span>
)}
</Link>
))}
</div>
<div className="mt-auto pt-12 hidden md:block">
<Link href="/vip" className="relative group block overflow-hidden">
<div className="absolute inset-0 bg-white translate-y-[101%] group-hover:translate-y-0 transition-transform duration-300" />
<div className="border border-white/20 px-6 py-4 flex flex-col gap-1 relative transition-colors group-hover:text-black">
<span className="font-mono text-[8px] tracking-[.3em] text-zinc-500 group-hover:text-black/50 uppercase transition-colors">Access Level</span>
<span className="font-black text-xs tracking-[.2em] uppercase">Request VIP</span>
</div>
</Link>
</div>
</nav>
{/* Main Content Area */}
<div className="flex-1 border border-zinc-800 bg-zinc-950/50 flex flex-col min-h-[500px] md:min-h-0 relative overflow-hidden backdrop-blur-sm">
<FadeIn>
{/* Top Edge Decoration Removed */}
{/* Ledger Table Header (Desktop) */}
<div className="hidden md:grid grid-cols-12 gap-4 px-8 py-5 border-b border-zinc-900 font-mono text-[8px] tracking-[0.3em] text-zinc-600 uppercase bg-black/40">
<div className="col-span-2">TIMESTAMP</div>
<div className="col-span-1">REF</div>
<div className="col-span-4">IDENTIFIER</div>
<div className="col-span-2">LATENCY / AVAIL</div>
<div className="col-span-2">ENCRYPTION / STATUS</div>
<div className="col-span-1 text-right">ACTION</div>
</div>
{/* Ledger Content */}
<div className="flex-1 overflow-y-auto w-full">
{drops.length === 0 ? (
<div className="flex-1 overflow-y-auto flex items-center justify-center p-8 h-full">
<div className="font-mono text-[10px] tracking-[0.2em] text-zinc-600 uppercase text-center border border-zinc-800 border-dashed p-8 w-full max-w-sm">
[ DIRECTORY EMPTY ]
</div>
</div>
) : (
drops.map((drop, i) => (
<AnimatedRow key={drop.id} drop={drop} index={i} prefix="SCR" isVip={isVip} />
))
)}
</div>
</FadeIn>
</div>
</div>
<footer className="mt-8 pt-6 border-t border-zinc-900 flex justify-start items-center text-[9px] font-mono tracking-[0.2em] text-zinc-600 uppercase">
<p>A Project by APRK</p>
</footer>
</main>
);
}