import Link from 'next/link' import type { LucideIcon } from 'lucide-react' import { Bot, Terminal, Cable, Code, Globe, Search, FileText, Brain, ScanText, ImageIcon, Upload, GitFork, Download, Share2, Clock, Link2, RefreshCw, Shield, KeyRound, ShieldCheck, ArrowRight, ChevronRight, Sparkles, } from 'lucide-react' type Feature = { icon: LucideIcon title: string description: string href: string tag?: string } const hero: Feature = { icon: Cable, title: 'Model Context Protocol', description: 'Connect AI models to any external tool or service through MCP — the open standard for AI tool integration', href: '/docs/features/mcp', } const highlights: Feature[] = [ { icon: Bot, title: 'Agents', description: 'Build custom AI assistants with tools, file handling, code execution, and API actions — no coding required.', href: '/docs/features/agents', }, { icon: Terminal, title: 'Code Interpreter', description: 'Execute Python, JavaScript, Go, Rust, and more — securely sandboxed with zero setup.', href: '/docs/features/code_interpreter', }, { icon: Code, title: 'Artifacts', description: 'Generate React components, HTML pages, and Mermaid diagrams directly inside chat.', href: '/docs/features/artifacts', }, { icon: Brain, title: 'Memory', description: 'Persistent context across conversations so your AI remembers preferences and history.', href: '/docs/features/memory', }, { icon: Globe, title: 'Web Search', description: 'Give any model live internet access with built-in search and reranking.', href: '/docs/features/web_search', }, { icon: Shield, title: 'Authentication', description: 'Enterprise-ready SSO with OAuth2, SAML, LDAP, and two-factor authentication.', href: '/docs/features/authentication', }, ] type Category = { title: string id: string layout: 'grid' | 'list' items: Feature[] } const categories: Category[] = [ { title: 'Search & Knowledge', id: 'search-knowledge', layout: 'grid', items: [ { icon: Globe, title: 'Web Search', description: 'Live internet access with built-in search and reranking', href: '/docs/features/web_search', }, { icon: Search, title: 'Search', description: 'Find messages and conversations with Meilisearch', href: '/docs/features/search', }, { icon: FileText, title: 'RAG API', description: 'Chat with files using retrieval-augmented generation', href: '/docs/features/rag_api', }, { icon: Brain, title: 'Memory', description: 'Persistent context across conversations', href: '/docs/features/memory', }, { icon: ScanText, title: 'OCR', description: 'Extract text from images and documents', href: '/docs/features/ocr', }, ], }, { title: 'Media', id: 'media', layout: 'grid', items: [ { icon: ImageIcon, title: 'Image Generation', description: 'Create images with GPT-Image-1, DALL-E, Stable Diffusion, and Flux', href: '/docs/features/image_gen', }, { icon: Upload, title: 'Upload as Text', description: 'Upload and process files as text input', href: '/docs/features/upload_as_text', }, ], }, { title: 'Chat', id: 'chat', layout: 'list', items: [ { icon: GitFork, title: 'Fork', description: 'Split conversations into multiple threads', href: '/docs/features/fork', }, { icon: Download, title: 'Import Conversations', description: 'Import chats from ChatGPT and other platforms', href: '/docs/features/import_convos', }, { icon: Share2, title: 'Shareable Links', description: 'Share conversations via public links', href: '/docs/features/shareable_links', }, { icon: Clock, title: 'Temporary Chat', description: "Private conversations that aren't saved to history", href: '/docs/features/temporary_chat', }, { icon: Link2, title: 'URL Query Parameters', description: 'Configure chats dynamically via URL', href: '/docs/features/url_query', }, { icon: RefreshCw, title: 'Resumable Streams', description: 'Auto-reconnect and resume interrupted responses', href: '/docs/features/resumable_streams', }, ], }, { title: 'Security', id: 'security', layout: 'list', items: [ { icon: Shield, title: 'Authentication', description: 'Multi-user auth with OAuth2, SAML, LDAP, and more', href: '/docs/features/authentication', }, { icon: KeyRound, title: 'Password Reset', description: 'Email-based password recovery', href: '/docs/features/password_reset', }, { icon: ShieldCheck, title: 'Moderation System', description: 'Content moderation and safety controls', href: '/docs/features/mod_system', }, ], }, ] function SectionHeading({ children, id }: { children: React.ReactNode; id: string }) { return (
{feature.description}
) } function ListItem({ item, last }: { item: Feature; last: boolean }) { const Icon = item.icon return ({item.description}