Skip to main content
Glama
page.tsx3.72 kB
'use client'; import { useState } from 'react'; import { Search, Filter } from 'lucide-react'; import { DocBrowser } from '@components/documentation/DocBrowser'; export default function DocumentationPage() { const [searchQuery, setSearchQuery] = useState(''); const [selectedEcosystem, setSelectedEcosystem] = useState<string | null>(null); const ecosystems = [ { id: 'javascript', label: 'JavaScript/TypeScript', count: 45 }, { id: 'python', label: 'Python', count: 28 }, { id: 'rust', label: 'Rust', count: 18 }, { id: 'go', label: 'Go', count: 15 }, { id: 'ai-ml', label: 'AI/ML', count: 22 }, ]; return ( <main className="min-h-screen bg-gradient-to-b from-black via-purple-900/10 to-black pt-20"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12"> {/* Header */} <div className="mb-12"> <h1 className="text-4xl md:text-5xl font-bold text-white mb-4">Documentation</h1> <p className="text-gray-400 text-lg"> Explore curated documentation for 100+ popular libraries </p> </div> {/* Search Bar */} <div className="mb-8"> <div className="relative"> <Search className="absolute left-4 top-1/2 transform -translate-y-1/2 w-5 h-5 text-gray-500" /> <input type="text" placeholder="Search libraries, APIs, or examples..." value={searchQuery} onChange={(e) => setSearchQuery(e.target.value)} className="w-full pl-12 pr-4 py-3 rounded-lg bg-gray-900/50 border border-gray-800 text-white placeholder-gray-500 focus:outline-none focus:border-purple-600 transition-colors" /> </div> </div> {/* Filters and Content */} <div className="grid grid-cols-1 lg:grid-cols-4 gap-8"> {/* Sidebar Filters */} <div className="lg:col-span-1"> <div className="sticky top-24 p-6 rounded-lg border border-gray-800 bg-gray-900/50 backdrop-blur-sm"> <div className="flex items-center gap-2 mb-6"> <Filter className="w-5 h-5 text-purple-400" /> <h2 className="text-lg font-semibold text-white">Filters</h2> </div> {/* Ecosystem Filter */} <div className="space-y-3"> <button onClick={() => setSelectedEcosystem(null)} className={`w-full text-left px-3 py-2 rounded transition-colors ${ selectedEcosystem === null ? 'bg-purple-600 text-white' : 'text-gray-400 hover:text-white' }`} > All Ecosystems </button> {ecosystems.map((eco) => ( <button key={eco.id} onClick={() => setSelectedEcosystem(eco.id)} className={`w-full text-left px-3 py-2 rounded transition-colors flex justify-between items-center ${ selectedEcosystem === eco.id ? 'bg-purple-600 text-white' : 'text-gray-400 hover:text-white' }`} > <span>{eco.label}</span> <span className="text-sm text-gray-500">{eco.count}</span> </button> ))} </div> </div> </div> {/* Documentation Browser */} <div className="lg:col-span-3"> <DocBrowser query={searchQuery} ecosystem={selectedEcosystem} /> </div> </div> </div> </main> ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aiatamai/atamai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server