repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
The Living OS cockpit
stars
latest
clone command
git clone gitlawb://did:key:z6Mku78K...XywC/living-os-cockp...git clone gitlawb://did:key:z6Mku78K.../living-os-cockp...59751530feat: surface worker supervisor health in live work5h ago| #1 | 'use client'; |
| #2 | import { Calendar } from 'lucide-react'; |
| #3 | |
| #4 | interface CaseDef { |
| #5 | id: string; |
| #6 | title: string; |
| #7 | caseNumber?: string; |
| #8 | court: string; |
| #9 | status: 'active' | 'pending' | 'monitoring'; |
| #10 | nextDate?: string; |
| #11 | daysUntil?: number; |
| #12 | lastUpdate: string; |
| #13 | opposing?: string; |
| #14 | } |
| #15 | |
| #16 | function daysUntil(dateStr: string): number { |
| #17 | const target = new Date(dateStr); |
| #18 | const now = new Date(); |
| #19 | return Math.ceil((target.getTime() - now.getTime()) / (1000 * 60 * 60 * 24)); |
| #20 | } |
| #21 | |
| #22 | const CASES: CaseDef[] = [ |
| #23 | { |
| #24 | id: 'prima', |
| #25 | title: 'Prima Assets / One Central — Mold case', |
| #26 | caseNumber: 'D-202-CV-2025-10634', |
| #27 | court: 'NM District Court · Judge Ramczyk', |
| #28 | status: 'active', |
| #29 | nextDate: '2026-08-01', |
| #30 | daysUntil: daysUntil('2026-08-01'), |
| #31 | lastUpdate: 'First Amended Complaint packet finalized May 2026', |
| #32 | opposing: 'Tucker (counsel)', |
| #33 | }, |
| #34 | { |
| #35 | id: 'flagstaff', |
| #36 | title: 'Flagstaff Municipal — Multi-venue strategy', |
| #37 | caseNumber: 'M0341CM2026000391', |
| #38 | court: 'Flagstaff Municipal · Judge Chotena', |
| #39 | status: 'active', |
| #40 | lastUpdate: '9-layer dishonor ladder documented; IRS 211 + Tucker Act + § 1983 + UCC-3 pending', |
| #41 | opposing: 'Officer Vaughn Badge 657', |
| #42 | }, |
| #43 | { |
| #44 | id: 'motorcycle', |
| #45 | title: 'Motorcycle accident insurance claim', |
| #46 | caseNumber: '24-400.6814.QQ', |
| #47 | court: '10x Law', |
| #48 | status: 'pending', |
| #49 | lastUpdate: 'Multiple agent rotations; potential bad faith — Aethon takeover pending', |
| #50 | }, |
| #51 | ]; |
| #52 | |
| #53 | function statusBadge(s: string) { |
| #54 | const map: Record<string, string> = { |
| #55 | active: 'status-up', |
| #56 | pending: 'status-pending', |
| #57 | monitoring: 'status-down', |
| #58 | }; |
| #59 | return map[s] ?? 'status-pending'; |
| #60 | } |
| #61 | |
| #62 | export default function LegalCases() { |
| #63 | return ( |
| #64 | <div className="space-y-2.5"> |
| #65 | {CASES.map(c => ( |
| #66 | <div key={c.id} className="rounded p-3 border border-[color:var(--border)] bg-[color:var(--bg-3)]/30"> |
| #67 | <div className="flex items-start justify-between gap-2 mb-1"> |
| #68 | <div className="flex-1 min-w-0"> |
| #69 | <div className="text-sm text-[color:var(--text-1)] font-medium">{c.title}</div> |
| #70 | {c.caseNumber && ( |
| #71 | <div className="text-[10px] text-[color:var(--text-3)] font-mono mt-0.5">{c.caseNumber}</div> |
| #72 | )} |
| #73 | </div> |
| #74 | <span className={`px-2 py-0.5 rounded text-[10px] font-mono ${statusBadge(c.status)}`}> |
| #75 | {c.status} |
| #76 | </span> |
| #77 | </div> |
| #78 | <div className="text-[11px] text-[color:var(--text-2)] mt-1.5">{c.court}</div> |
| #79 | {c.opposing && ( |
| #80 | <div className="text-[10px] text-[color:var(--text-3)] mt-0.5">vs {c.opposing}</div> |
| #81 | )} |
| #82 | {c.nextDate && c.daysUntil !== undefined && ( |
| #83 | <div className={`text-xs mt-2 flex items-center gap-1.5 ${ |
| #84 | c.daysUntil < 14 ? 'text-red-400' : |
| #85 | c.daysUntil < 30 ? 'text-amber-400' : |
| #86 | 'text-[color:var(--text-2)]' |
| #87 | }`}> |
| #88 | <Calendar size={12} /> |
| #89 | <span className="font-medium">{c.daysUntil} days</span> |
| #90 | <span className="text-[color:var(--text-3)]">until {c.nextDate}</span> |
| #91 | </div> |
| #92 | )} |
| #93 | <div className="text-[10px] text-[color:var(--text-3)] mt-1.5 italic">{c.lastUpdate}</div> |
| #94 | </div> |
| #95 | ))} |
| #96 | </div> |
| #97 | ); |
| #98 | } |
| #99 |