'use client'; import { Check, X, Minus } from 'lucide-react'; import { taxonomy } from '@/lib/taxonomy/data'; const PROFILE_COLORS: Record = { lite: { bg: 'bg-green-500/10', border: 'border-green-500/30', text: 'text-green-400', badge: 'bg-green-500', }, core: { bg: 'bg-blue-500/10', border: 'border-blue-500/30', text: 'text-blue-400', badge: 'bg-blue-500', }, standard: { bg: 'bg-purple-500/10', border: 'border-purple-500/30', text: 'text-purple-400', badge: 'bg-purple-500', }, full: { bg: 'bg-amber-500/10', border: 'border-amber-500/30', text: 'text-amber-400', badge: 'bg-amber-500', }, }; const COMPLEXITY_COLORS: Record = { Minimal: 'text-green-400', Low: 'text-blue-400', Medium: 'text-purple-400', High: 'text-amber-400', }; const ALL_FIELDS = [ 'primary_code', 'secondary_codes', 'valence', 'intensity', 'specificity', 'actionability', 'temporal', 'evidence', 'comparative', 'causal_chain', 'linked_spans', 'confidence', 'annotator_notes', ]; const FIELD_LABELS: Record = { primary_code: 'Primary Code', secondary_codes: 'Secondary Codes', valence: 'Valence', intensity: 'Intensity', specificity: 'Specificity', actionability: 'Actionability', temporal: 'Temporal', evidence: 'Evidence', comparative: 'Comparative', causal_chain: 'Causal Chain', linked_spans: 'Linked Spans', confidence: 'Confidence', annotator_notes: 'Annotator Notes', }; export default function ProfilesSection() { const profiles = Object.entries(taxonomy.profiles); const getFieldStatus = (profile: typeof taxonomy.profiles.lite, field: string) => { if (profile.required_fields.includes(field)) return 'required'; if (profile.optional_fields.includes(field)) return 'optional'; if (profile.forbidden_fields.includes(field)) return 'forbidden'; return 'forbidden'; }; return (
{/* Header */}

Implementation Profiles

4 profiles for different implementation complexity levels

{/* Profile Cards */}
{profiles.map(([profileKey, profile]) => { const colors = PROFILE_COLORS[profileKey]; return (
{/* Profile Header */}

{profile.name}

{/* Stats */}
{profile.code_count} codes | {profile.complexity}

{profile.use_case}

{/* Code pattern */}
Code Level: {profile.code_type}
{/* Pattern */}
Pattern: {profile.primary_code_pattern}
{/* Secondary codes */}
{profile.secondary_codes_allowed ? ( Up to {profile.secondary_codes_max} secondary codes (tier{' '} {profile.secondary_codes_tier}) ) : ( No secondary codes )}
); })}
{/* Field Comparison Table */}

Field Requirements by Profile

{profiles.map(([profileKey, profile]) => ( ))} {ALL_FIELDS.map((field) => ( {profiles.map(([profileKey, profile]) => { const status = getFieldStatus(profile, field); return ( ); })} ))}
Field {profile.name}
{FIELD_LABELS[field]} {status === 'required' && ( )} {status === 'optional' && ( )} {status === 'forbidden' && ( )}
{/* Legend */}
Required
Optional
Not used
); }