Files
zooqueen d7567a959d Brand sweep: Zen4 → Zen5, drop I-Ching section, navbar flush, blue contrast
- Replaced every Zen4 / zen-4 / "Zen 4" reference with the Zen5 equivalent
  across components, marketing pages, model dropdowns, docs, examples,
  case studies, and the global chat widget. 15 files touched.
- Dropped <PhilosophyBridge /> from the homepage composition — the
  "易經 · The Engineering Philosophy" / "The Zen of Zoo" hexagram block
  doesn't belong in the investor-facing landing flow.
- Navbar: was pinned at top-10 (40px) while the TopBanner is ~38px tall,
  leaving a 2px gradient stripe visible between them. Pinned the navbar
  to top-[38px] so it sits flush against the banner.
- Dark-blue contrast: replaced yellow-on-blue with white-on-blue in the
  Hero eyebrow tag + the "Browse models" CTA. Forced ``color: #fff`` on
  ``.btn-brutalist.pill-blue`` so text stays legible through the dark
  trough of the rainbow gradient animation.
2026-05-18 23:05:37 -07:00

836 lines
32 KiB
TypeScript

"use client";
import Link from "next/link";
import { motion } from "framer-motion";
import { Button } from "@hanzo/ui";
import { cn } from "@/lib/utils";
import {
ArrowRight,
ExternalLink,
Github,
Brain,
Cpu,
Zap,
Code,
Eye,
Mic,
Sparkles,
Layers,
Network,
Server,
Search,
Shield,
} from "lucide-react";
import type { FamilyData } from "./page";
// Icon lookup by family ID — icons are client-only (React components)
const FAMILY_ICONS: Record<string, React.ComponentType<{ className?: string }>> = {
zen5: Zap,
zen5: Sparkles,
code: Code,
zen3: Brain,
embedding: Search,
image: Eye,
audio: Mic,
foundation: Brain,
vision: Eye,
safety: Shield,
agents: Network,
}
// ---- LEGACY HARDCODED BLOCK (kept for reference only — DO NOT USE) ----
// All model data is now served server-side from @zenlm/models via page.tsx.
// This block is intentionally unreachable. --------------------------------
const _unused_modelFamilies = {
zen5: {
title: "Zen 5 — Next Generation",
icon: Zap,
description: "Fifth-generation agentic models with MoDE (Mixture of Diverse Experts) and native chain-of-thought reasoning",
models: [
{
name: "zen5",
params: "TBA",
description: "Agentic frontier model with native chain-of-thought",
performance: "1M+ context",
memory: "MoDE + CoT",
capabilities: ["Text", "Code", "Reasoning", "Agents", "CoT"],
href: "https://zoo.ngo/research-access",
requestAccess: true,
},
{
name: "zen5-pro",
params: "TBA",
description: "High-throughput agentic model for production",
performance: "512K context",
memory: "MoDE + CoT",
capabilities: ["Text", "Code", "Reasoning", "Production"],
href: "https://zoo.ngo/research-access",
requestAccess: true,
},
{
name: "zen5-max",
params: "TBA",
description: "Maximum context for document-scale analysis",
performance: "2M context",
memory: "MoDE + CoT",
capabilities: ["Text", "Long Context", "Analysis", "Reasoning"],
href: "https://zoo.ngo/research-access",
requestAccess: true,
},
{
name: "zen5-ultra",
params: "TBA",
description: "Deepest reasoning with self-verification",
performance: "1M context",
memory: "MoDE + Deep CoT",
capabilities: ["Text", "Code", "Deep Reasoning", "Verification"],
href: "https://zoo.ngo/research-access",
requestAccess: true,
},
{
name: "zen5-mini",
params: "TBA",
description: "Efficient agentic model, zen5-class intelligence",
performance: "256K context",
memory: "MoDE + CoT",
capabilities: ["Text", "Code", "Agents", "Efficient"],
href: "https://zoo.ngo/research-access",
requestAccess: true,
},
],
},
zen5: {
title: "Zen 5 — Flagship",
icon: Sparkles,
description: "Fourth-generation flagship models with MoE architecture, long context, and state-of-the-art benchmarks",
models: [
{
name: "zen5",
params: "744B MoE (40B active)",
description: "Flagship model for complex reasoning",
performance: "202K context",
memory: "MoE",
capabilities: ["Text", "Code", "Math", "Reasoning"],
href: "https://huggingface.co/zenlm/zen5",
},
{
name: "zen5-ultra",
params: "744B MoE (40B active)",
description: "Maximum reasoning with chain-of-thought",
performance: "262K context",
memory: "MoE + CoT",
capabilities: ["Text", "Code", "Reasoning", "Thinking"],
href: "https://huggingface.co/zenlm/zen5-ultra",
},
{
name: "zen5-pro",
params: "80B MoE (3B active)",
description: "High-capability efficient MoE",
performance: "131K context",
memory: "MoE",
capabilities: ["Text", "Code", "Reasoning", "Tools"],
href: "https://huggingface.co/zenlm/zen5-pro",
},
{
name: "zen5-max",
params: "Dense",
description: "Most capable model, agentic tasks",
performance: "1M context",
memory: "Dense",
capabilities: ["Text", "Code", "Reasoning", "Agents", "Frontier"],
href: "https://huggingface.co/zenlm/zen5-max",
},
{
name: "zen5.6",
params: "Dense",
description: "Extended context, cost efficient",
performance: "1M context",
memory: "Dense",
capabilities: ["Text", "Code", "Long Context", "Efficient"],
href: "https://huggingface.co/zenlm/zen5.6",
},
{
name: "zen5-mini",
params: "Dense",
description: "Ultra-fast, free tier",
performance: "128K context",
memory: "Dense",
capabilities: ["Text", "Code", "Math", "Free Tier"],
href: "https://huggingface.co/zenlm/zen5-mini",
},
{
name: "zen5-thinking",
params: "80B MoE (3B active)",
description: "Dedicated reasoning",
performance: "131K context",
memory: "MoE + CoT",
capabilities: ["Text", "Reasoning", "Thinking", "CoT"],
href: "https://huggingface.co/zenlm/zen5-thinking",
},
],
},
zen5coder: {
title: "Zen 5 Coder",
icon: Code,
description: "Specialized code models for software engineering, generation, review, and debugging",
models: [
{
name: "zen5-coder",
params: "480B MoE (35B active)",
description: "Code generation, review, debugging",
performance: "163K context",
memory: "MoE",
capabilities: ["Code", "Agents", "Tools", "Agentic"],
href: "https://huggingface.co/zenlm/zen5-coder",
},
{
name: "zen5-coder-pro",
params: "480B Dense BF16",
description: "Full-precision code analysis",
performance: "131K context",
memory: "Dense BF16",
capabilities: ["Code", "Precision", "Deep Reasoning"],
href: "https://huggingface.co/zenlm/zen5-coder-pro",
},
{
name: "zen5-coder-flash",
params: "30B MoE (3B active)",
description: "Fast inline completions",
performance: "262K context",
memory: "MoE",
capabilities: ["Code", "Completions", "Fast", "Real-time"],
href: "https://huggingface.co/zenlm/zen5-coder-flash",
},
],
},
zen3: {
title: "Zen 3 — Multimodal",
icon: Brain,
description: "Third-generation multimodal models spanning text, vision, audio, and safety",
models: [
{
name: "zen3-omni",
params: "~200B Dense Multimodal",
description: "Text, vision, audio",
performance: "202K context",
memory: "Dense Multimodal",
capabilities: ["Text", "Vision", "Audio", "Multimodal"],
href: "https://huggingface.co/zenlm/zen3-omni",
},
{
name: "zen3-vl",
params: "30B MoE (3B active)",
description: "Vision-language",
performance: "262K context",
memory: "MoE",
capabilities: ["Vision", "Language", "OCR", "VQA"],
href: "https://huggingface.co/zenlm/zen3-vl",
},
{
name: "zen3-nano",
params: "8B Dense",
description: "Edge deployment, free tier",
performance: "128K context",
memory: "Dense",
capabilities: ["Text", "Code", "Edge", "Free Tier"],
href: "https://huggingface.co/zenlm/zen3-nano",
},
{
name: "zen3-guard",
params: "4B Dense",
description: "Content safety, 119 languages",
performance: "65K context",
memory: "Dense",
capabilities: ["Safety", "Moderation", "119 Languages"],
href: "https://huggingface.co/zenlm/zen3-guard",
},
],
},
zen3image: {
title: "Zen 3 Image",
icon: Eye,
description: "Diffusion models for image generation, editing, and creative workflows",
models: [
{
name: "zen3-image",
params: "Diffusion",
description: "Best general-purpose image generation",
performance: "Text-to-Image",
memory: "Diffusion",
capabilities: ["Text-to-Image", "Art", "Photography"],
href: "https://huggingface.co/zenlm/zen3-image",
},
{
name: "zen3-image-max",
params: "Diffusion",
description: "Maximum quality, professional creative",
performance: "Text-to-Image",
memory: "Diffusion",
capabilities: ["Max Quality", "Professional", "Creative"],
href: "https://huggingface.co/zenlm/zen3-image-max",
},
{
name: "zen3-image-dev",
params: "Diffusion",
description: "Development and iteration",
performance: "Text-to-Image",
memory: "Diffusion",
capabilities: ["Development", "Iteration", "Fast"],
href: "https://huggingface.co/zenlm/zen3-image-dev",
},
{
name: "zen3-image-fast",
params: "Diffusion",
description: "Real-time generation",
performance: "Text-to-Image",
memory: "Diffusion",
capabilities: ["Real-time", "Fast", "Low Latency"],
href: "https://huggingface.co/zenlm/zen3-image-fast",
},
{
name: "zen3-image-sdxl",
params: "Diffusion",
description: "1024px high-resolution",
performance: "Text-to-Image",
memory: "Diffusion",
capabilities: ["1024px", "High-res", "SDXL"],
href: "https://huggingface.co/zenlm/zen3-image-sdxl",
},
{
name: "zen3-image-playground",
params: "Diffusion",
description: "Aesthetic artistic generation",
performance: "Text-to-Image",
memory: "Diffusion",
capabilities: ["Aesthetic", "Artistic", "Creative"],
href: "https://huggingface.co/zenlm/zen3-image-playground",
},
{
name: "zen3-image-ssd",
params: "1B Diffusion",
description: "Fastest diffusion model",
performance: "Text-to-Image",
memory: "1B Diffusion",
capabilities: ["Fastest", "SSD", "Real-time"],
href: "https://huggingface.co/zenlm/zen3-image-ssd",
},
{
name: "zen3-image-jp",
params: "Diffusion",
description: "Japanese-specialized",
performance: "Text-to-Image",
memory: "Diffusion",
capabilities: ["Japanese", "Specialized", "Localized"],
href: "https://huggingface.co/zenlm/zen3-image-jp",
},
],
},
zen3audio: {
title: "Zen 3 Audio & Speech",
icon: Mic,
description: "Transcription, text-to-speech, real-time ASR, and broadcast-quality audio",
models: [
{
name: "zen3-audio",
params: "1.5B ASR",
description: "100+ language transcription",
performance: "ASR",
memory: "1.5B",
capabilities: ["ASR", "100+ Languages", "Transcription"],
href: "https://huggingface.co/zenlm/zen3-audio",
},
{
name: "zen3-audio-fast",
params: "809M ASR",
description: "Fastest transcription",
performance: "ASR",
memory: "809M",
capabilities: ["ASR", "Fast", "Real-time"],
href: "https://huggingface.co/zenlm/zen3-audio-fast",
},
{
name: "zen3-asr",
params: "Streaming ASR",
description: "Real-time <500ms latency",
performance: "<500ms latency",
memory: "Streaming ASR",
capabilities: ["Streaming", "Real-time", "<500ms"],
href: "https://huggingface.co/zenlm/zen3-asr",
},
{
name: "zen3-asr-v1",
params: "Streaming ASR",
description: "Legacy compatibility",
performance: "Streaming",
memory: "Streaming ASR",
capabilities: ["Streaming", "Legacy", "Compatible"],
href: "https://huggingface.co/zenlm/zen3-asr-v1",
},
{
name: "zen3-tts",
params: "82M TTS",
description: "40+ voices, 8 languages",
performance: "TTS",
memory: "82M",
capabilities: ["TTS", "40+ Voices", "8 Languages"],
href: "https://huggingface.co/zenlm/zen3-tts",
},
{
name: "zen3-tts-hd",
params: "TTS HD",
description: "Broadcast-quality 48kHz",
performance: "48kHz TTS",
memory: "TTS HD",
capabilities: ["TTS", "48kHz", "Broadcast Quality"],
href: "https://huggingface.co/zenlm/zen3-tts-hd",
},
{
name: "zen3-tts-fast",
params: "82M TTS",
description: "Low-latency voice agents",
performance: "Low-latency TTS",
memory: "82M",
capabilities: ["TTS", "Low Latency", "Voice Agents"],
href: "https://huggingface.co/zenlm/zen3-tts-fast",
},
],
},
zen3embedding: {
title: "Zen 3 Embedding",
icon: Search,
description: "Dense embeddings for semantic search, RAG, classification, and retrieval",
models: [
{
name: "zen3-embedding",
params: "3072 dimensions",
description: "RAG, search, classification",
performance: "8K context",
memory: "3072d",
capabilities: ["Embeddings", "RAG", "Search", "Classification"],
href: "https://huggingface.co/zenlm/zen3-embedding",
},
{
name: "zen3-embedding-medium",
params: "4B",
description: "Cost-effective retrieval",
performance: "40K context",
memory: "4B",
capabilities: ["Embeddings", "Retrieval", "Cost-effective"],
href: "https://huggingface.co/zenlm/zen3-embedding-medium",
},
{
name: "zen3-embedding-small",
params: "0.6B",
description: "High-throughput",
performance: "32K context",
memory: "0.6B",
capabilities: ["Embeddings", "High-throughput", "Lightweight"],
href: "https://huggingface.co/zenlm/zen3-embedding-small",
},
{
name: "zen3-embedding-openai",
params: "3072 dimensions",
description: "OpenAI-compatible drop-in",
performance: "8K context",
memory: "3072d",
capabilities: ["Embeddings", "OpenAI-compatible", "Drop-in"],
href: "https://huggingface.co/zenlm/zen3-embedding-openai",
},
],
},
zen3reranker: {
title: "Zen 3 Reranker",
icon: Layers,
description: "Cross-encoder rerankers for improving search and RAG pipeline accuracy",
models: [
{
name: "zen3-reranker",
params: "8B",
description: "RAG pipeline accuracy",
performance: "40K context",
memory: "8B",
capabilities: ["Reranking", "RAG", "Search", "Accuracy"],
href: "https://huggingface.co/zenlm/zen3-reranker",
},
{
name: "zen3-reranker-medium",
params: "4B",
description: "Cost-effective reranking",
performance: "40K context",
memory: "4B",
capabilities: ["Reranking", "Cost-effective", "Balanced"],
href: "https://huggingface.co/zenlm/zen3-reranker-medium",
},
{
name: "zen3-reranker-small",
params: "0.6B",
description: "High-throughput minimal cost",
performance: "40K context",
memory: "0.6B",
capabilities: ["Reranking", "High-throughput", "Minimal Cost"],
href: "https://huggingface.co/zenlm/zen3-reranker-small",
},
],
},
}
// ---- END LEGACY BLOCK ----
// Infrastructure tools
const infrastructure = [
{
name: "Zoo Engine",
description: "High-performance cloud inference — 60+ architectures, CUDA/Metal, OpenAI-compatible API",
icon: Server,
href: "https://engine.zoo.ngo",
},
{
name: "Zoo Edge",
description: "On-device AI inference — run models locally on any device, browser, or embedded system",
icon: Cpu,
href: "https://edge.zoo.ngo",
},
{
name: "Zen Gym",
description: "Unified training platform for all Zen models with LoRA, QLoRA, GRPO, and more",
icon: Layers,
href: "https://github.com/zenlm/zen-gym",
},
{
name: "Zoo MCP",
description: "Model Context Protocol for AI context management and tool use",
icon: Network,
href: "https://github.com/zooai/mcp",
},
];
// Capabilities matrix data — representative models from each family
const capabilitiesMatrix = [
{ model: "zen5", text: true, image: false, video: false, audio: false, threeD: false, code: true, agents: true },
{ model: "zen5", text: true, image: false, video: false, audio: false, threeD: false, code: true, agents: true },
{ model: "zen5-max", text: true, image: false, video: false, audio: false, threeD: false, code: true, agents: true },
{ model: "zen5-ultra", text: true, image: false, video: false, audio: false, threeD: false, code: true, agents: true },
{ model: "zen5-coder", text: true, image: false, video: false, audio: false, threeD: false, code: true, agents: true },
{ model: "zen3-omni", text: true, image: true, video: false, audio: true, threeD: false, code: false, agents: false },
{ model: "zen3-vl", text: true, image: true, video: false, audio: false, threeD: false, code: false, agents: false },
{ model: "zen3-nano", text: true, image: false, video: false, audio: false, threeD: false, code: true, agents: false },
{ model: "zen3-guard", text: true, image: false, video: false, audio: false, threeD: false, code: false, agents: false },
{ model: "zen3-image", text: true, image: true, video: false, audio: false, threeD: false, code: false, agents: false },
{ model: "zen3-audio", text: true, image: false, video: false, audio: true, threeD: false, code: false, agents: false },
{ model: "zen3-tts", text: true, image: false, video: false, audio: true, threeD: false, code: false, agents: false },
{ model: "zen3-embedding", text: true, image: false, video: false, audio: false, threeD: false, code: false, agents: false },
{ model: "zen3-reranker", text: true, image: false, video: false, audio: false, threeD: false, code: false, agents: false },
];
export default function PageClient({
familyData,
totalModels,
}: {
familyData: FamilyData[]
totalModels: number
}) {
return (
<div className={cn("min-h-screen transition-colors duration-300", "bg-background text-foreground")}>
<main className="pt-16">
{/* Hero Section */}
<section className={cn("py-24 px-4 bg-gradient-to-b", "from-white/5 to-transparent")}>
<div className="max-w-5xl mx-auto text-center">
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
>
<span className="pill pill-pink mb-6">Zen AI Model Family</span>
<h1 className="mt-6 text-5xl md:text-6xl font-extrabold tracking-tight mb-6">
Hypermodal AI
</h1>
<p className={cn("text-xl max-w-3xl mx-auto mb-8", "text-muted-foreground")}>
{totalModels}+ models across {familyData.length} families. Open-weight AI covering text, vision, image, audio, code, embeddings, and reranking — from edge to frontier.
</p>
<div className="flex flex-wrap gap-4 justify-center">
<a href="https://huggingface.co/zenlm" target="_blank" rel="noopener noreferrer">
<button className="btn-brutalist pill-pink">
<Sparkles className="w-4 h-4" />
Browse Models
</button>
</a>
<a href="https://github.com/zenlm" target="_blank" rel="noopener noreferrer">
<button className="btn-brutalist pill-green">
<Github className="w-4 h-4" />
GitHub
</button>
</a>
</div>
</motion.div>
</div>
</section>
{/* Stats */}
<section className={cn("py-12 px-4 border-y", "border-border")}>
<div className="max-w-6xl mx-auto">
<div className="grid grid-cols-2 md:grid-cols-4 gap-8 text-center">
<div>
<div className="text-4xl font-bold mb-1">{totalModels}+</div>
<div className={cn("text-sm", "text-muted-foreground")}>AI Models</div>
</div>
<div>
<div className="text-4xl font-bold mb-1">{familyData.length}</div>
<div className={cn("text-sm", "text-muted-foreground")}>Model Families</div>
</div>
<div>
<div className="text-4xl font-bold mb-1">7</div>
<div className={cn("text-sm", "text-muted-foreground")}>Modalities</div>
</div>
<div>
<div className="text-4xl font-bold mb-1">Apache 2.0</div>
<div className={cn("text-sm", "text-muted-foreground")}>License</div>
</div>
</div>
</div>
</section>
{/* Model Families — data served server-side from @zenlm/models */}
{familyData.map((family, familyIndex) => {
const FamilyIcon = FAMILY_ICONS[family.id] ?? Brain;
return (
<section
key={family.id}
id={family.id}
className={cn("py-20 px-4 scroll-mt-24", familyIndex % 2 === 0 ? "" : "bg-foreground/5")}
>
<div className="max-w-6xl mx-auto">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
viewport={{ once: true }}
className="mb-12"
>
<div className="flex items-center gap-3 mb-4">
<FamilyIcon className={cn("w-8 h-8", "text-muted-foreground")} />
<h2 className="text-3xl font-bold">{family.title}</h2>
</div>
<p className={cn("max-w-2xl", "text-muted-foreground")}>{family.description}</p>
</motion.div>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
{family.models.map((model, index) => (
<motion.a
key={model.name}
href={model.href}
target={(model as any).requestAccess ? undefined : "_blank"}
rel={(model as any).requestAccess ? undefined : "noopener noreferrer"}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
className="block p-6 bg-white border-2 border-black shadow-[6px_6px_0_0_#000] md:shadow-[8px_8px_0_0_#000] hover:translate-x-[2px] hover:translate-y-[2px] hover:shadow-[4px_4px_0_0_#000] md:hover:shadow-[6px_6px_0_0_#000] transition-all group text-black"
>
<div className="flex items-start justify-between mb-4">
<div>
<h3 className="text-lg font-extrabold uppercase tracking-tight group-hover:underline">
{model.name}
</h3>
<span className="text-sm font-mono text-black/60">{model.params}</span>
</div>
{(model as any).requestAccess ? (
<span className="text-[10px] px-2 py-1 font-extrabold uppercase tracking-wider bg-[var(--brand-yellow)] border-2 border-black">Research Preview</span>
) : (
<ExternalLink className="w-4 h-4 opacity-0 group-hover:opacity-100 transition-opacity text-black/60" />
)}
</div>
<p className="text-sm mb-4 text-black/70">{model.description}</p>
<div className="flex flex-wrap gap-2 mb-4">
{model.capabilities.map((cap) => (
<span
key={cap}
className="px-2 py-0.5 text-xs font-semibold uppercase tracking-wider bg-black text-white border-2 border-black"
>
{cap}
</span>
))}
</div>
<div className="flex items-center justify-between text-xs pt-4 border-t-2 border-black text-black/70">
<span className="flex items-center gap-1">
<Zap className="w-3 h-3" />
{model.performance}
</span>
<span className="flex items-center gap-1">
<Cpu className="w-3 h-3" />
{model.memory}
</span>
</div>
</motion.a>
))}
</div>
</div>
</section>
);
})}
{/* Capabilities Matrix */}
<section className={cn("py-20 px-4", "bg-foreground/5")}>
<div className="max-w-6xl mx-auto">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
viewport={{ once: true }}
className="text-center mb-12"
>
<h2 className="text-3xl font-bold mb-4 text-foreground">Capabilities Matrix</h2>
<p className="text-muted-foreground">
Each model specializes in different modalities and tasks
</p>
</motion.div>
<div className="overflow-x-auto">
<table className="w-full text-sm">
<thead>
<tr className={cn("border-b", "border-border")}>
<th className="text-left py-4 px-4 font-semibold">Model</th>
<th className="text-center py-4 px-4 font-semibold">Text</th>
<th className="text-center py-4 px-4 font-semibold">Image</th>
<th className="text-center py-4 px-4 font-semibold">Video</th>
<th className="text-center py-4 px-4 font-semibold">Audio</th>
<th className="text-center py-4 px-4 font-semibold">3D</th>
<th className="text-center py-4 px-4 font-semibold">Code</th>
<th className="text-center py-4 px-4 font-semibold">Agents</th>
</tr>
</thead>
<tbody>
{capabilitiesMatrix.map((row) => (
<tr key={row.model} className={cn("border-b", "border-border hover:bg-accent")}>
<td className="py-3 px-4 font-mono text-foreground">{row.model}</td>
<td className="text-center py-3 px-4">{row.text ? "\u2713" : "\u2014"}</td>
<td className="text-center py-3 px-4">{row.image ? "\u2713" : "\u2014"}</td>
<td className="text-center py-3 px-4">{row.video ? "\u2713" : "\u2014"}</td>
<td className="text-center py-3 px-4">{row.audio ? "\u2713" : "\u2014"}</td>
<td className="text-center py-3 px-4">{row.threeD ? "\u2713" : "\u2014"}</td>
<td className="text-center py-3 px-4">{row.code ? "\u2713" : "\u2014"}</td>
<td className="text-center py-3 px-4">{row.agents ? "\u2713" : "\u2014"}</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</section>
{/* Infrastructure */}
<section className="py-20 px-4">
<div className="max-w-6xl mx-auto">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
viewport={{ once: true }}
className="text-center mb-12"
>
<h2 className="text-3xl font-bold mb-4">Infrastructure</h2>
<p className={cn("text-muted-foreground")}>
Production-ready tools for training and deploying Zen models
</p>
</motion.div>
<div className="grid md:grid-cols-3 gap-8">
{infrastructure.map((tool, index) => {
const ToolIcon = tool.icon;
return (
<motion.a
key={tool.name}
href={tool.href}
target="_blank"
rel="noopener noreferrer"
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
className="block p-8 bg-white border-2 border-black shadow-[6px_6px_0_0_#000] md:shadow-[10px_10px_0_0_#000] hover:translate-x-[2px] hover:translate-y-[2px] hover:shadow-[4px_4px_0_0_#000] md:hover:shadow-[8px_8px_0_0_#000] transition-all group text-center text-black"
>
<div className="w-12 h-12 flex items-center justify-center mx-auto mb-4 bg-[var(--brand-magenta)] border-2 border-black">
<ToolIcon className="w-6 h-6 text-white" />
</div>
<h3 className="text-xl font-extrabold uppercase tracking-tight mb-2 group-hover:underline">
{tool.name}
</h3>
<p className="text-sm text-black/70">{tool.description}</p>
</motion.a>
);
})}
</div>
</div>
</section>
{/* Code Example */}
<section className={cn("py-20 px-4", "bg-foreground/5")}>
<div className="max-w-4xl mx-auto">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
viewport={{ once: true }}
className="text-center mb-8"
>
<h2 className="text-3xl font-bold mb-4">Quick Start</h2>
<p className={cn("text-muted-foreground")}>Get started with any Zen model in seconds</p>
</motion.div>
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: 0.1 }}
viewport={{ once: true }}
className="bg-black border-2 border-black shadow-[6px_6px_0_0_#000] md:shadow-[10px_10px_0_0_#000] p-6 overflow-x-auto"
>
<pre className="text-sm text-[var(--brand-green)] font-mono">
{`# Install and run any model
pip install transformers torch
# Use directly
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("zenlm/zen-eco-4b-instruct")
tokenizer = AutoTokenizer.from_pretrained("zenlm/zen-eco-4b-instruct")
# Or use via Zoo Cloud API
from zooai import Zoo
client = Zoo(api_key="zk-your-api-key")
response = client.chat.completions.create(
model="zen-eco-4b-instruct",
messages=[{"role": "user", "content": "Hello!"}]
)`}
</pre>
</motion.div>
</div>
</section>
{/* CTA */}
<section className="py-24 px-4">
<div className="max-w-4xl mx-auto text-center">
<h2 className="text-3xl font-bold mb-4">
Build with Zen AI
</h2>
<p className={cn("text-xl mb-8", "text-muted-foreground")}>
Open-weight models, Apache 2.0 licensed. Free to use for research and commercial applications.
</p>
<div className="flex flex-wrap gap-4 justify-center">
<a href="https://huggingface.co/zenlm" target="_blank" rel="noopener noreferrer">
<button className="btn-brutalist pill-pink">
Get Started
<ArrowRight className="w-4 h-4" />
</button>
</a>
<Link href="/research">
<button className="btn-brutalist pill-green">
Research Papers
</button>
</Link>
</div>
</div>
</section>
</main>
</div>
);
}