import React, { useState } from 'react'; import { CBT_GLOSSARY, GlossaryEntry } from '../constants'; import { X, Search, BookOpen, Brain, Activity, HelpCircle } from 'lucide-react'; import { Button } from './ui/button'; import { Input } from './ui/input'; import { Badge } from './ui/badge'; import { ScrollArea } from './ui/scroll-area'; import { Card, CardHeader, CardTitle, CardContent } from './ui/card'; interface CBTReferenceProps { onClose: () => void; } const CBTReference: React.FC = ({ onClose }) => { const [search, setSearch] = useState(''); const [activeCategory, setActiveCategory] = useState<'All' | 'Distortion' | 'Technique' | 'Concept'>('All'); const filtered = CBT_GLOSSARY.filter(entry => { const matchesSearch = entry.term.toLowerCase().includes(search.toLowerCase()) || entry.definition.toLowerCase().includes(search.toLowerCase()); const matchesCategory = activeCategory === 'All' || entry.category === activeCategory; return matchesSearch && matchesCategory; }); const categories: ('All' | 'Distortion' | 'Technique' | 'Concept')[] = ['All', 'Distortion', 'Technique', 'Concept']; const getCategoryIcon = (cat: string) => { switch (cat) { case 'Distortion': return ; case 'Technique': return ; case 'Concept': return ; default: return ; } }; return (
{/* Header */}

CBT Clinical Reference

Evidence-Based Concepts & Frameworks

{/* Filters */}
setSearch(e.target.value)} className="w-full pl-12 pr-4 h-12 bg-slate-50 border-slate-200 rounded-xl focus-visible:ring-teal-500/50" />
{categories.map(cat => ( ))}
{/* Content */}
{filtered.map((entry, idx) => (
{entry.term} {getCategoryIcon(entry.category)} {entry.category}

{entry.definition}

{entry.example && (
Clinical Example

"{entry.example}"

)}
))} {filtered.length === 0 && (

No concepts matching your search parameters.

)}
{/* Footer */}

References compiled from clinical CBT standard frameworks.

); }; export default CBTReference;