140 lines
7.3 KiB
TypeScript
140 lines
7.3 KiB
TypeScript
import {
|
|
Send,
|
|
Paperclip,
|
|
Bot,
|
|
User,
|
|
Scale,
|
|
FileText,
|
|
Download,
|
|
Maximize2,
|
|
ChevronRight,
|
|
Search
|
|
} from 'lucide-react';
|
|
|
|
export default function AiAssistantPage() {
|
|
return (
|
|
<div className="h-[calc(100vh-12rem)] flex gap-4 overflow-hidden -m-4">
|
|
{/* Left Pane: Chat Interface */}
|
|
<div className="flex-1 flex flex-col bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl overflow-hidden shadow-sm">
|
|
<header className="p-4 border-b border-slate-200 dark:border-slate-800 flex items-center justify-between bg-slate-50 dark:bg-slate-800/50">
|
|
<div className="flex items-center gap-3">
|
|
<div className="w-10 h-10 rounded-full bg-blue-600 flex items-center justify-center text-white shadow-lg shadow-blue-500/20">
|
|
<Bot size={24} />
|
|
</div>
|
|
<div>
|
|
<h3 className="font-bold text-slate-900 dark:text-white">Legal Assistant</h3>
|
|
<p className="text-[10px] text-green-500 font-bold uppercase tracking-wider flex items-center gap-1">
|
|
<span className="w-1.5 h-1.5 bg-green-500 rounded-full animate-pulse"></span>
|
|
Online | GPT-4 Turbo
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div className="flex gap-2">
|
|
<button className="p-2 hover:bg-slate-200 dark:hover:bg-slate-700 rounded-lg text-slate-500 transition-colors">
|
|
<Download size={18} />
|
|
</button>
|
|
<button className="p-2 hover:bg-slate-200 dark:hover:bg-slate-700 rounded-lg text-slate-500 transition-colors">
|
|
<Maximize2 size={18} />
|
|
</button>
|
|
</div>
|
|
</header>
|
|
|
|
{/* Chat Messages */}
|
|
<div className="flex-1 overflow-y-auto p-6 space-y-6">
|
|
<div className="flex gap-4">
|
|
<div className="w-8 h-8 rounded-full bg-blue-100 dark:bg-blue-900/30 flex items-center justify-center text-blue-600 flex-shrink-0">
|
|
<Bot size={18} />
|
|
</div>
|
|
<div className="space-y-2 max-w-[85%]">
|
|
<div className="p-4 bg-slate-100 dark:bg-slate-800 rounded-2xl rounded-tl-none text-slate-800 dark:text-slate-200 text-sm leading-relaxed">
|
|
Hello! I am your AI Legal Partner. I can help you draft motions, research case law, or analyze your documents. How can I assist you with your matter today?
|
|
</div>
|
|
<p className="text-[10px] text-slate-400 font-medium ml-1">AI Assistant • 12:45 PM</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="flex gap-4 flex-row-reverse">
|
|
<div className="w-8 h-8 rounded-full bg-slate-200 dark:bg-slate-800 flex items-center justify-center text-slate-600 flex-shrink-0">
|
|
<User size={18} />
|
|
</div>
|
|
<div className="space-y-2 max-w-[85%] text-right">
|
|
<div className="p-4 bg-blue-600 text-white rounded-2xl rounded-tr-none text-sm leading-relaxed text-left">
|
|
I need to draft a Motion to Dismiss based on lack of personal jurisdiction for my North Carolina case. Can you find relevant statutes?
|
|
</div>
|
|
<p className="text-[10px] text-slate-400 font-medium mr-1">You • 12:46 PM</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Input Area */}
|
|
<div className="p-4 border-t border-slate-200 dark:border-slate-800">
|
|
<div className="relative group">
|
|
<textarea
|
|
placeholder="Ask anything... (e.g., 'Analyze the uploaded complaint for inconsistencies')"
|
|
className="w-full bg-slate-50 dark:bg-slate-800/50 border border-slate-200 dark:border-slate-700 rounded-xl px-4 py-3 pr-24 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500 min-h-[100px] resize-none transition-all text-sm"
|
|
/>
|
|
<div className="absolute right-3 bottom-3 flex gap-2">
|
|
<button className="p-2 hover:bg-slate-200 dark:hover:bg-slate-700 rounded-lg text-slate-500 transition-colors">
|
|
<Paperclip size={20} />
|
|
</button>
|
|
<button className="p-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-all shadow-lg shadow-blue-500/20">
|
|
<Send size={20} />
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<p className="mt-2 text-[10px] text-slate-400 text-center uppercase tracking-widest font-semibold">
|
|
Press Enter to send • Ctrl + Shift + U to upload
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Right Pane: Document Viewer Placeholder */}
|
|
<div className="w-[450px] hidden lg:flex flex-col bg-slate-100 dark:bg-slate-900/50 border border-slate-200 dark:border-slate-800 rounded-xl overflow-hidden shadow-sm">
|
|
<header className="p-4 border-b border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 flex items-center justify-between">
|
|
<div className="flex items-center gap-2">
|
|
<FileText size={18} className="text-blue-500" />
|
|
<h4 className="font-bold text-sm text-slate-900 dark:text-white">Document Viewer</h4>
|
|
</div>
|
|
<div className="flex gap-1">
|
|
<button className="p-1.5 hover:bg-slate-100 dark:hover:bg-slate-800 rounded-md text-slate-500">
|
|
<Search size={16} />
|
|
</button>
|
|
<button className="p-1.5 hover:bg-slate-100 dark:hover:bg-slate-800 rounded-md text-slate-500">
|
|
<Maximize2 size={16} />
|
|
</button>
|
|
</div>
|
|
</header>
|
|
|
|
<div className="flex-1 flex flex-col items-center justify-center p-8 text-center space-y-4">
|
|
<div className="w-16 h-16 rounded-full bg-slate-200 dark:bg-slate-800 flex items-center justify-center text-slate-400">
|
|
<FileText size={32} />
|
|
</div>
|
|
<div>
|
|
<p className="font-bold text-slate-900 dark:text-white">No Document Selected</p>
|
|
<p className="text-xs text-slate-500 mt-1">Select a document from the matter or upload a new one to view it side-by-side with the AI Assistant.</p>
|
|
</div>
|
|
<button className="px-4 py-2 border border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 rounded-lg text-sm font-bold hover:bg-slate-50 transition-colors">
|
|
Upload Files
|
|
</button>
|
|
</div>
|
|
|
|
<div className="p-4 bg-white dark:bg-slate-900 border-t border-slate-200 dark:border-slate-800">
|
|
<div className="flex items-center justify-between text-xs font-bold text-slate-400 uppercase tracking-widest mb-3">
|
|
<span>Current Matter Files</span>
|
|
<ChevronRight size={14} />
|
|
</div>
|
|
<div className="space-y-2">
|
|
<div className="flex items-center gap-2 p-2 hover:bg-slate-50 dark:hover:bg-slate-800 rounded-lg cursor-pointer transition-colors group">
|
|
<div className="w-8 h-8 rounded bg-red-50 text-red-600 flex items-center justify-center text-[10px] font-bold">PDF</div>
|
|
<div className="flex-1 min-w-0">
|
|
<p className="text-xs font-bold text-slate-700 dark:text-slate-300 truncate">Complaint_Final.pdf</p>
|
|
<p className="text-[10px] text-slate-400">1.2 MB • Updated 2h ago</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|