mirror of
https://github.com/rohitg00/agentmemory.git
synced 2026-09-14 20:16:33 +08:00
7193361b67
Replaces the vanilla HTML/CSS/JS landing with a production Next.js 16.2 app router build. Deploy target is Vercel; root directory should be set to 'website/' in the Vercel project settings. Stack: - Next.js 16.2 + React 19 + TypeScript 5.7 - next/font for Archivo + JetBrains Mono (no external fetch) - CSS Modules per component + one globals.css for tokens - No Tailwind, no bundler config, no client-side routing Component layout: - app/layout.tsx — <html>, font vars, metadata, viewport - app/page.tsx — composes all landing sections - app/globals.css — design tokens + shared utilities - components/Nav.tsx — hexagonal bull mark + menu - components/Hero.tsx — title, lede, CTAs - components/MemoryGraph.tsx — client canvas animation + hex pause - components/ScrollProgress.tsx — fixed top gold progress rail - components/Stats.tsx — counter-up on first intersect - components/Primitives.tsx — three cards with 3D mouse tilt - components/LiveTerminal.tsx — typewriter memory.recall demo - components/Compare.tsx — vs Mem0/Letta/Cognee table - components/Agents.tsx — supported-agents grid - components/Install.tsx — click-to-copy npm + console boxes - components/Footer.tsx — source / changelog / license links Interactive elements are "use client" islands; static sections render on the server. prefers-reduced-motion gated throughout. Upgraded Next from 15.1.3 to 16.2.4 to clear CVE-2025-66478 during setup. next build completes clean, all 3 routes prerender static. Deploy: 1. Import repo on Vercel, set Root Directory = website/ 2. Or: cd website && npx vercel
77 lines
1.3 KiB
CSS
77 lines
1.3 KiB
CSS
.wrap {
|
|
padding: 112px 0 96px;
|
|
}
|
|
.grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 1px;
|
|
max-width: 1440px;
|
|
margin: 0 auto;
|
|
padding: 0 40px;
|
|
background: var(--charcoal);
|
|
border: 1px solid var(--charcoal);
|
|
}
|
|
.card {
|
|
background: var(--abyss);
|
|
padding: 48px 32px;
|
|
transition:
|
|
background 250ms ease,
|
|
transform 250ms ease;
|
|
position: relative;
|
|
overflow: hidden;
|
|
min-height: 280px;
|
|
}
|
|
.card::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(
|
|
135deg,
|
|
rgba(255, 192, 0, 0) 0%,
|
|
rgba(255, 192, 0, 0) 50%,
|
|
rgba(255, 192, 0, 0.08) 100%
|
|
);
|
|
opacity: 0;
|
|
transition: opacity 250ms ease;
|
|
}
|
|
.card:hover {
|
|
background: var(--iron);
|
|
transform: translateY(-4px);
|
|
}
|
|
.card:hover::before {
|
|
opacity: 1;
|
|
}
|
|
.glyph {
|
|
font-family: var(--font-mono);
|
|
font-size: 14px;
|
|
color: var(--gold);
|
|
letter-spacing: 0.2px;
|
|
margin-bottom: 32px;
|
|
}
|
|
.title {
|
|
font-size: 40px;
|
|
font-weight: 900;
|
|
line-height: 0.98;
|
|
letter-spacing: -0.01em;
|
|
margin: 0 0 24px;
|
|
text-transform: uppercase;
|
|
}
|
|
.text {
|
|
font-size: 14px;
|
|
letter-spacing: 0.12px;
|
|
color: var(--steel);
|
|
text-transform: uppercase;
|
|
margin: 0;
|
|
line-height: 1.6;
|
|
}
|
|
@media (max-width: 1024px) {
|
|
.grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
@media (max-width: 640px) {
|
|
.grid {
|
|
padding: 0 20px;
|
|
}
|
|
}
|