'use client'; import { useState } from 'react'; import { useRAG } from '@breakpilot/compliance-sdk-react'; import Link from 'next/link'; import { ArrowLeft, Search, MessageSquare, FileText, Upload, Send, Loader2, BookOpen, Scale, } from 'lucide-react'; export default function RAGPage() { const { search, ask, isSearching, isAsking, searchResults, chatHistory } = useRAG(); const [query, setQuery] = useState(''); const [mode, setMode] = useState<'search' | 'chat'>('chat'); const [results, setResults] = useState([]); const [answer, setAnswer] = useState(''); const regulations = [ { id: 'dsgvo', name: 'DSGVO', chunks: 99 }, { id: 'ai-act', name: 'AI Act', chunks: 85 }, { id: 'nis2', name: 'NIS2', chunks: 46 }, { id: 'eprivacy', name: 'ePrivacy', chunks: 32 }, { id: 'tdddg', name: 'TDDDG', chunks: 28 }, { id: 'cra', name: 'CRA', chunks: 41 }, ]; const handleSearch = async () => { if (!query.trim()) return; if (mode === 'search') { const res = await search(query); setResults(res || []); } else { const res = await ask(query); setAnswer(res?.answer || ''); setResults(res?.sources || []); } }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSearch(); } }; return (
{/* Header */}

Legal Assistant

AI-powered regulatory knowledge base

{/* Main Content */}
{/* Sidebar - Regulations */} {/* Chat/Search Area */}
{/* Results Area */}
{mode === 'chat' && answer && (
{answer}
{results.length > 0 && (

Sources

{results.map((source, i) => (
{source.regulation}
{source.text?.substring(0, 200)}...
))}
)}
)} {mode === 'search' && results.length > 0 && (
{results.map((result, i) => (
{result.regulation} Score: {(result.score * 100).toFixed(0)}%

{result.text}

))}
)} {!answer && results.length === 0 && (

Ask a Legal Question

Search through 21 indexed regulations including DSGVO, AI Act, NIS2, and more. Get AI-powered answers with source references.

)}
{/* Input Area */}