import { useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'; import { Hash, CheckCircle, AlertCircle, Copy, RefreshCw, Zap, Clock, Shield, Users, FileText, Home, Scale } from 'lucide-react'; import { ChittyIDSystem, chittyIdApi, type ChittyIDGenerationRequest, type ChittyIDGenerationResult, type ChittyIDValidationResult } from '@/lib/chittyid'; import { useToast } from '@/hooks/use-toast'; export function ChittyIDDashboard() { const [generatedId, setGeneratedId] = useState(null); const [validationResult, setValidationResult] = useState(null); const [isGenerating, setIsGenerating] = useState(false); const [isValidating, setIsValidating] = useState(false); const [generationOptions, setGenerationOptions] = useState({ vertical: 'user', nodeId: '1', jurisdiction: 'USA' }); const [validationInput, setValidationInput] = useState(''); const { toast } = useToast(); const verticalIcons = { user: , evidence: , case: , property: , contract: , audit: }; const verticalColors = { user: 'bg-blue-100 text-blue-800', evidence: 'bg-red-100 text-red-800', case: 'bg-purple-100 text-purple-800', property: 'bg-green-100 text-green-800', contract: 'bg-yellow-100 text-yellow-800', audit: 'bg-gray-100 text-gray-800' }; const handleGenerate = async () => { setIsGenerating(true); try { const result = await chittyIdApi.generateId(generationOptions); setGeneratedId(result); toast({ title: "ChittyID Generated", description: `Successfully generated ID: ${result.chittyId}`, }); } catch (error) { console.error('Generation error:', error); toast({ title: "Generation Failed", description: error instanceof Error ? error.message : "Unknown error occurred", variant: "destructive", }); } finally { setIsGenerating(false); } }; const handleValidate = async () => { if (!validationInput.trim()) return; setIsValidating(true); try { const result = await chittyIdApi.validateId(validationInput.trim()); setValidationResult(result); toast({ title: result.valid ? "Valid ChittyID" : "Invalid ChittyID", description: result.valid ? "The ChittyID is properly formatted and valid" : "The ChittyID format is invalid", variant: result.valid ? "default" : "destructive", }); } catch (error) { console.error('Validation error:', error); toast({ title: "Validation Failed", description: error instanceof Error ? error.message : "Unknown error occurred", variant: "destructive", }); } finally { setIsValidating(false); } }; const copyToClipboard = (text: string) => { navigator.clipboard.writeText(text); toast({ title: "Copied to Clipboard", description: `ChittyID copied: ${text}`, }); }; const formatTimestamp = (timestamp?: number) => { if (!timestamp) return 'Unknown'; return new Date(timestamp).toLocaleString(); }; return (

ChittyID System

Universal identifier system for blockchain legal evidence management

Active
Generate ID Validate ID System Overview {/* Generate Tab */} Generate ChittyID Create a new unique identifier for legal evidence management
setGenerationOptions({...generationOptions, nodeId: e.target.value})} placeholder="1" />
setGenerationOptions({...generationOptions, jurisdiction: e.target.value})} placeholder="USA" />
{generatedId && ( Generated ChittyID
{generatedId.chittyId}
{generatedId.vertical && verticalIcons[generatedId.vertical as keyof typeof verticalIcons]} {generatedId.vertical}
{formatTimestamp(generatedId.timestamp)}
Valid
)}
{/* Validate Tab */} Validate ChittyID Verify the format and authenticity of a ChittyID
setValidationInput(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && handleValidate()} />
{validationResult && ( {validationResult.valid ? ( ) : ( )} {validationResult.valid ? 'Valid ChittyID' : 'Invalid ChittyID'}
{validationResult.chittyId}
{validationResult.valid && validationResult.details && (
{validationResult.vertical && verticalIcons[validationResult.vertical as keyof typeof verticalIcons]} {validationResult.vertical}
{formatTimestamp(validationResult.timestamp)}
Node ID: {validationResult.details.nodeId}
Sequence: {validationResult.details.sequence}
Checksum: {validationResult.details.checksum}
Prefix: {validationResult.details.prefix}
)}
)}
{/* Overview Tab */}
System Status
Online
ChittyID v2.0.0
Supported Verticals
{Object.entries(verticalIcons).map(([vertical, icon]) => (
{icon} {vertical}
))}
Integration Status
ChittyChain
ChittyChainLedger
ChittyTrust
ChittyID Format Specification Understanding the ChittyID structure
CHTTY-{'{'}timestamp{'}'}-{'{'}vertical{'}'}-{'{'}nodeId{'}'}-{'{'}sequence{'}'}-{'{'}checksum{'}'}

Components

  • CHTTY: Fixed prefix identifier
  • Timestamp: Base36 encoded generation time
  • Vertical: Category (user, evidence, case, etc.)
  • Node ID: Generating node identifier
  • Sequence: Random sequence for uniqueness
  • Checksum: Validation hash

Features

  • • Cryptographically secure validation
  • • Timestamp-based chronological ordering
  • • Multi-vertical categorization support
  • • Distributed generation capability
  • • Collision resistance through randomization
); }