import React, { useState } from 'react'; import { Rulebook } from '../types'; interface RulebooksModalProps { rulebooks: Rulebook[]; onSelectRulebook: (rulebookId: string) => void; onClose: () => void; } export const RulebooksModal: React.FC = ({ rulebooks, onSelectRulebook, onClose, }) => { const [activeTab, setActiveTab] = useState<'all' | 'active' | 'coming_soon'>('all'); const [search, setSearch] = useState(''); const filtered = rulebooks.filter((rb) => { const matchesTab = activeTab === 'all' ? true : rb.status === activeTab; const matchesSearch = rb.title.toLowerCase().includes(search.toLowerCase()) || rb.description.toLowerCase().includes(search.toLowerCase()) || rb.keyStatute.toLowerCase().includes(search.toLowerCase()); return matchesTab && matchesSearch; }); return (
{/* Header */}
gavel

CaseLoop Statutory Templates Catalog

Standard legal templates, auto-redaction protections, and filing pathways

{/* Filters */}
setSearch(e.target.value)} className="text-[13px] border border-[#CBD5E1] rounded-lg px-3 py-1.5 w-full sm:w-60 focus:border-[#0F172A] outline-none" />
{/* Templates List */}
{filtered.map((rb) => { const isActive = rb.status === 'active'; return (
{rb.icon}

{rb.title}

{rb.category}
{rb.statusLabel}

{rb.description}

Key Statute: {rb.keyStatute}
{isActive ? ( ) : ( lock Template in validation )}
); })}
); };