'use client'; import { useState, useCallback, useMemo } from 'react'; import TaxonomyTree from '@/components/taxonomy/TaxonomyTree'; import TaxonomySearch from '@/components/taxonomy/TaxonomySearch'; import SubcodeDetail from '@/components/taxonomy/SubcodeDetail'; import CausalCodesSection from '@/components/taxonomy/CausalCodesSection'; import MetadataSection from '@/components/taxonomy/MetadataSection'; import ProfilesSection from '@/components/taxonomy/ProfilesSection'; import { taxonomy, searchTaxonomy } from '@/lib/taxonomy/data'; import type { SelectedSubcode, TaxonomyTab } from '@/lib/taxonomy/types'; const TABS: { key: TaxonomyTab; label: string }[] = [ { key: 'codes', label: 'Codes' }, { key: 'causal', label: 'Causal Codes' }, { key: 'metadata', label: 'Metadata' }, { key: 'profiles', label: 'Profiles' }, ]; export default function TaxonomyPage() { const [activeTab, setActiveTab] = useState('codes'); const [searchQuery, setSearchQuery] = useState(''); const [selectedSubcode, setSelectedSubcode] = useState(null); // Memoize search results const searchResults = useMemo(() => { return searchTaxonomy(searchQuery); }, [searchQuery]); const totalSearchMatches = useMemo(() => { return ( searchResults.domains.length + searchResults.categories.length + searchResults.subcodes.length ); }, [searchResults]); const handleSearchChange = useCallback((value: string) => { setSearchQuery(value); }, []); const handleSelectSubcode = useCallback((subcode: SelectedSubcode | null) => { setSelectedSubcode(subcode); }, []); return (
{/* Header */}

URT Taxonomy v{taxonomy.version}

Universal Review Taxonomy Classification System

{taxonomy.statistics.domains} Domains {taxonomy.statistics.categories} Categories {taxonomy.statistics.subcodes_actual} Subcodes
{/* Tab Navigation */} {/* Content */}
{activeTab === 'codes' && (
{/* Left Panel - Tree */}
{/* Search */}
{/* Tree */}
{/* Right Panel - Detail */}
)} {activeTab === 'causal' && (
)} {activeTab === 'metadata' && (
)} {activeTab === 'profiles' && (
)}
); }