import { useState, useMemo } from 'react'; import { TeknavData } from '../../teknav-data.js'; import { useNav, EmptyState, inputStyle } from '../../teknav-ui.jsx'; export function DirectoryListPage() { const { navigate } = useNav(); const [companies] = useState(() => TeknavData.companies ?? []); const [search, setSearch] = useState(''); const filtered = useMemo(() => { if (!search.trim()) return companies; const q = search.trim().toLocaleLowerCase('fa-IR'); return companies.filter((c) => c.name.toLocaleLowerCase('fa-IR').includes(q) || c.description.toLocaleLowerCase('fa-IR').includes(q) || (c.techStack || []).some((t) => t.toLocaleLowerCase('en-US').includes(q)), ); }, [companies, search]); return (

دایرکتوری شرکت‌های فناوری ایران

پروفایل شرکت‌های فناوری ایران همراه با استک فنی، اطلاعات تماس و نشان تأیید.

setSearch(e.target.value)} style={{ ...inputStyle, marginBottom: 24, width: '100%', maxWidth: 400 }} /> {filtered.length === 0 && ( )}
{filtered.map((company) => (
navigate(`/directory/${company.slug}`)} style={{ background: '#fff', border: '1px solid #E4DDD2', borderRadius: 12, padding: 20, cursor: 'pointer', transition: 'box-shadow 0.2s' }} onMouseEnter={(e) => { e.currentTarget.style.boxShadow = '0 4px 16px rgba(0,0,0,0.1)'; }} onMouseLeave={(e) => { e.currentTarget.style.boxShadow = ''; }} >
{company.name} {company.verified && ✓ تأیید}

{company.description.slice(0, 100)}…

{(company.techStack || []).slice(0, 4).map((t) => ( {t} ))}
))}
); }