import React, { useState, useMemo, useEffect } from 'react'; import { Search, ChevronDown, ChevronRight, Globe, Users, Info, ArrowUpDown, History, ArrowRight, X } from 'lucide-react'; const languageData = [ { family: "Afroasiatic", branches: "Semitic, Cushitic, Berber, Chadic, Omotic, Egyptian", speakers: "500 Million", region: "Middle East, North Africa, Horn of Africa, Sahel", majorLanguages: ["Arabic", "Amharic", "Hausa", "Oromo", "Somali", "Hebrew"], description: "One of the world's oldest language families, documented for over 5,000 years." }, { family: "Indo-European", branches: "Germanic, Romance, Indo-Aryan, Iranian, Balto-Slavic, Hellenic, Celtic, Armenian, Albanian", speakers: "3.2 Billion", region: "Europe, Western & South Asia, Americas, Oceania", majorLanguages: ["English", "Spanish", "Hindustani", "Bengali", "Portuguese", "Russian", "Hindi", "French", "German", "Punjabi", "Marathi"], description: "The most widely spoken language family in the world today." }, { family: "Niger-Congo", branches: "Bantu, Atlantic, Mande, Gur, Kwa, Adamawa-Ubangi", speakers: "600 Million", region: "Sub-Saharan Africa", majorLanguages: ["Swahili", "Yoruba", "Igbo", "Fula", "Shona", "Zulu"], description: "Contains the largest number of distinct languages of any family (over 1,500)." }, { family: "Sino-Tibetan", branches: "Sinitic, Tibeto-Burman", speakers: "1.4 Billion", region: "East Asia, Southeast Asia, South Asia", majorLanguages: ["Mandarin Chinese", "Cantonese", "Burmese", "Tibetan"], description: "Defined by the Sinitic languages (Chinese) and the diverse Tibeto-Burman group." }, { family: "Austronesian", branches: "Malayo-Polynesian, Formosan", speakers: "386 Million", region: "Maritime Southeast Asia, Oceania, Madagascar", majorLanguages: ["Malay/Indonesian", "Tagalog", "Javanese", "Malagasy"], description: "A vast family spread across islands from Madagascar to Easter Island." }, { family: "Dravidian", branches: "South, South-Central, Central, North", speakers: "250 Million", region: "South Asia (mainly Southern India & Sri Lanka)", majorLanguages: ["Telugu", "Tamil", "Kannada", "Malayalam"], description: "Indigenous to the Indian subcontinent, separate from Indo-Aryan languages." }, { family: "Turkic", branches: "Oghuz, Kipchak, Karluk, Siberian", speakers: "180 Million", region: "Central Asia, Western Asia, Eastern Europe", majorLanguages: ["Turkish", "Azerbaijani", "Uzbek", "Kazakh", "Tatar"], description: "Characterized by vowel harmony and agglutinative grammar." }, { family: "Japonic", branches: "Japanese, Ryukyuan", speakers: "125 Million", region: "Japan, Ryukyu Islands", majorLanguages: ["Japanese", "Okinawan"], description: "Thought to have originated in the Korean peninsula or mainland Asia." }, { family: "Austroasiatic", branches: "Munda, Mon-Khmer", speakers: "117 Million", region: "Southeast Asia, South Asia", majorLanguages: ["Vietnamese", "Khmer", "Santali"], description: "The indigenous languages of mainland Southeast Asia." }, { family: "Kra-Dai", branches: "Tai, Kam-Sui, Hlai", speakers: "93 Million", region: "Southeast Asia, Southern China", majorLanguages: ["Thai", "Lao", "Shan", "Zhuang"], description: "Mainly concentrated in Thailand, Laos, and southern China." } ]; const lineageMap = { "English": ["Indo-European", "Germanic", "West Germanic", "Old English", "English"], "Spanish": ["Indo-European", "Romance", "Ibero-Romance", "Old Spanish", "Spanish"], "Hindi": ["Indo-European", "Indo-Aryan", "Central Zone", "Sanskrit Influence", "Hindi"], "Arabic": ["Afroasiatic", "Semitic", "Central Semitic", "Classical Arabic", "Modern Standard Arabic"], "Mandarin Chinese": ["Sino-Tibetan", "Sinitic", "Mandarin", "Old Chinese", "Mandarin Chinese"], "Swahili": ["Niger-Congo", "Bantu", "Sabaki", "Swahili"], "Japanese": ["Japonic", "Japanese", "Old Japanese", "Modern Japanese"], "French": ["Indo-European", "Romance", "Gallo-Romance", "Old French", "French"], "German": ["Indo-European", "Germanic", "West Germanic", "High German", "German"], "Russian": ["Indo-European", "Balto-Slavic", "East Slavic", "Old East Slavic", "Russian"], "Bengali": ["Indo-European", "Indo-Aryan", "Eastern Zone", "Magadhi Prakrit", "Bengali"], "Telugu": ["Dravidian", "South-Central", "Telugu"], "Turkish": ["Turkic", "Oghuz", "Old Anatolian Turkish", "Ottoman Turkish", "Turkish"], "Vietnamese": ["Austroasiatic", "Mon-Khmer", "Vietic", "Vietnamese"] }; const TraceTool = ({ onClose }) => { const [selectedLang, setSelectedLang] = useState(''); const lineage = useMemo(() => { return selectedLang ? lineageMap[selectedLang] : []; }, [selectedLang]); return (

Trace Language History

{lineage.length > 0 && (

Evolutionary Path

{lineage.map((step, idx) => (
{idx < lineage.length - 1 &&
}
{step} {idx === 0 && Primary Family}
))}
)}
); }; const FamilyCard = ({ item }) => { const [isExpanded, setIsExpanded] = useState(false); return (
{isExpanded && (

Description

{item.description}

Primary Branches

{item.branches.split(', ').map(branch => ( {branch} ))}

Notable Languages

    {item.majorLanguages.map(lang => (
  • {lang}
  • ))}
)}
); }; export default function App() { const [searchTerm, setSearchTerm] = useState(''); const [sortBy, setSortBy] = useState('family'); const [showTracer, setShowTracer] = useState(false); const filteredData = useMemo(() => { return languageData .filter(item => item.family.toLowerCase().includes(searchTerm.toLowerCase()) || item.region.toLowerCase().includes(searchTerm.toLowerCase()) || item.majorLanguages.some(l => l.toLowerCase().includes(searchTerm.toLowerCase())) ) .sort((a, b) => { if (sortBy === 'family') return a.family.localeCompare(b.family); if (sortBy === 'speakers') { const getVal = s => parseFloat(s.replace(/[^\d.]/g, '')) * (s.includes('Billion') ? 1000 : 1); return getVal(b.speakers) - getVal(a.speakers); } return 0; }); }, [searchTerm, sortBy]); return (
{/* Inject Google Font */}
{/* Navigation / Actions (No Header) */}
setSearchTerm(e.target.value)} />
{showTracer && setShowTracer(false)} />} {/* List */}
{filteredData.length > 0 ? ( filteredData.map((item) => ( )) ) : (

No matches found in the tree.

)}
{/* Minimal Footer */}
); }