@chrisflippen/blueprint-document-assembly 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE/main.tsx +21 -0
- package/README.md +280 -0
- package/dist/index.d.mts +89 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +16 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/LogComponents.tsx","../src/components/SubStepItem.tsx","../src/default-steps.ts","../src/components/StepItem.tsx","../src/components/DocumentPreview.tsx","../src/components/WholeDocumentContent.tsx","../src/components/WholeDocumentView.tsx","../src/constants.ts","../src/components/BlueprintDocumentAssembly.tsx"],"names":["LogLine","log","compact","config","jsxs","motion","jsx","LogContainer","logs","expanded","onToggle","logContainerRef","useRef","useEffect","ChevronDown","ChevronRight","Terminal","AnimatePresence","SubStepItem","substep","delay","logsExpanded","setLogsExpanded","useState","Check","DEFAULT_STEPS","STEP_ICON_MAP","FileText","Shield","Users","Stamp","StepItem","step","isLast","showRipple","showSubsteps","setShowSubsteps","timer","Icon","styles","completedCount","s","totalCount","Loader2","idx","DocumentPreview","completedSubsteps","documentIds","DocumentLine","Fragment","text","className","displayText","setDisplayText","showCursor","setShowCursor","currentIndex","interval","WholeDocumentContent","WholeDocumentView","show","onClose","metrics","X","_","i","Sparkles","DEFAULT_STEP_LOGS","DEFAULT_SUBSTEP_LOGS","BlueprintDocumentAssembly","initialSteps","customStepLogs","customSubstepLogs","autoScroll","showWholeDocumentView","customDocumentIds","animationSpeed","onComplete","onStepComplete","startingSteps","sub","stepLogs","substepLogs","steps","setSteps","completedSections","setCompletedSections","setCompletedSubsteps","setMetrics","setShowRipple","currentStep","setCurrentStep","documentScrollRef","showWholeDocument","setShowWholeDocument","ms","resolve","addLog","stepIndex","substepId","level","message","timestamp","prev","streamLogs","totalSteps","progressPercentage","stepLogData","j","substepLogData","newSubsteps","updatedMetrics","index","Zap","DollarSign","Clock"],"mappings":"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","file":"index.js","sourcesContent":["import { useEffect, useRef } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\nimport { Terminal, ChevronDown, ChevronRight } from 'lucide-react';\nimport type { LogEntry } from '../types';\n\ninterface LogLineProps {\n log: LogEntry;\n compact?: boolean;\n}\n\nexport function LogLine({ log, compact = false }: LogLineProps) {\n const levelConfig = {\n info: { color: 'text-cyan-500', symbol: '→' },\n success: { color: 'text-emerald-500', symbol: '✓' },\n warning: { color: 'text-amber-500', symbol: '⚠' },\n processing: { color: 'text-purple-500', symbol: '⟳' }\n };\n\n const config = levelConfig[log.level];\n\n return (\n <motion.div\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3 }}\n className=\"flex items-start gap-2 text-foreground/80\"\n >\n {!compact && (\n <span className=\"text-muted-foreground text-[10px]\">{log.timestamp}</span>\n )}\n <span className={`${config.color} font-bold`}>{config.symbol}</span>\n <span className=\"flex-1 text-[11px]\">{log.message}</span>\n </motion.div>\n );\n}\n\ninterface LogContainerProps {\n logs: LogEntry[];\n expanded: boolean;\n onToggle: () => void;\n compact?: boolean;\n}\n\nexport function LogContainer({ logs, expanded, onToggle, compact = false }: LogContainerProps) {\n const logContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (logContainerRef.current) {\n logContainerRef.current.scrollTop = logContainerRef.current.scrollHeight;\n }\n }, [logs]);\n\n if (logs.length === 0) return null;\n\n return (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.4 }}\n className={compact ? 'mt-2' : 'mt-3 ml-14'}\n >\n <button\n onClick={onToggle}\n className={`flex items-center gap-${compact ? '1.5' : '2'} text-xs font-mono text-muted-foreground hover:text-foreground transition-colors ${compact ? '' : 'px-2 py-1 rounded'}`}\n >\n {expanded ? (\n <ChevronDown className=\"w-3 h-3\" />\n ) : (\n <ChevronRight className=\"w-3 h-3\" />\n )}\n <Terminal className={`w-${compact ? '2.5' : '3'} h-${compact ? '2.5' : '3'}`} />\n <span>{compact ? 'LOG' : 'SYSTEM LOG'} ({logs.length}{compact ? '' : ' entries'})</span>\n </button>\n\n <AnimatePresence>\n {expanded && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.3 }}\n className=\"overflow-hidden\"\n >\n <div \n ref={logContainerRef}\n className={`bg-background border border-border/50 rounded-md p-2 font-mono text-xs ${compact ? 'max-h-24' : 'max-h-32'} overflow-y-auto space-y-1 mt-2`}\n >\n {logs.map((log) => (\n <LogLine key={log.id} log={log} compact={compact} />\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </motion.div>\n );\n}\n","import { useState } from 'react';\nimport { motion } from 'motion/react';\nimport { Check } from 'lucide-react';\nimport { LogContainer } from './LogComponents';\nimport type { SubStep } from '../types';\n\ninterface SubStepItemProps {\n substep: SubStep;\n delay: number;\n}\n\nexport function SubStepItem({ substep, delay }: SubStepItemProps) {\n const [logsExpanded, setLogsExpanded] = useState(false);\n\n return (\n <motion.div\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay, duration: 0.4 }}\n className=\"pl-3\"\n >\n <div className=\"flex items-start gap-2.5\">\n <motion.div \n className={`\n w-4 h-4 mt-0.5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-all duration-500\n ${substep.completed \n ? 'bg-emerald-500 border-emerald-500' \n : 'border-border bg-background'\n }\n `}\n >\n {substep.completed && (\n <Check className=\"w-3 h-3 text-white\" />\n )}\n </motion.div>\n \n <div className=\"flex-1 min-w-0\">\n <span className={`\n text-sm font-mono transition-colors duration-500\n ${substep.completed ? 'text-foreground' : 'text-muted-foreground'}\n `}>\n {substep.label}\n </span>\n\n <LogContainer \n logs={substep.logs}\n expanded={logsExpanded}\n onToggle={() => setLogsExpanded(!logsExpanded)}\n compact\n />\n </div>\n </div>\n </motion.div>\n );\n}\n","import type { Step } from './types';\nimport { FileText, Shield, Users, Stamp } from 'lucide-react';\n\nexport const DEFAULT_STEPS: Step[] = [\n {\n id: 'verify',\n number: 1,\n title: 'Document Verification',\n status: 'pending',\n substeps: [\n { id: 'v1', label: 'Validate document template', completed: false, logs: [] },\n { id: 'v2', label: 'Check legal requirements', completed: false, logs: [] },\n { id: 'v3', label: 'Verify jurisdiction compliance', completed: false, logs: [] },\n { id: 'v4', label: 'Generate document metadata', completed: false, logs: [] }\n ],\n documentSection: 'header',\n logs: []\n },\n {\n id: 'identity',\n number: 2,\n title: 'Identity Validation',\n status: 'pending',\n substeps: [\n { id: 'i1', label: 'Request credential check', completed: false, logs: [] },\n { id: 'i2', label: 'Verify biometric data', completed: false, logs: [] },\n { id: 'i3', label: 'Cross-reference databases', completed: false, logs: [] },\n { id: 'i4', label: 'Confirm identity match', completed: false, logs: [] }\n ],\n documentSection: 'affiant',\n logs: []\n },\n {\n id: 'statement',\n number: 3,\n title: 'Statement Processing',\n status: 'pending',\n substeps: [\n { id: 's1', label: 'Parse statement content', completed: false, logs: [] },\n { id: 's2', label: 'Verify factual accuracy', completed: false, logs: [] },\n { id: 's3', label: 'Format legal language', completed: false, logs: [] },\n { id: 's4', label: 'Generate numbered paragraphs', completed: false, logs: [] }\n ],\n documentSection: 'statement',\n logs: []\n },\n {\n id: 'witness',\n number: 4,\n title: 'Witness Authorization',\n status: 'pending',\n substeps: [\n { id: 'w1', label: 'Verify witness eligibility', completed: false, logs: [] },\n { id: 'w2', label: 'Check credential validity', completed: false, logs: [] },\n { id: 'w3', label: 'Generate attestation block', completed: false, logs: [] },\n { id: 'w4', label: 'Record witness information', completed: false, logs: [] }\n ],\n documentSection: 'witness',\n logs: []\n },\n {\n id: 'notary',\n number: 5,\n title: 'Notarization',\n status: 'pending',\n substeps: [\n { id: 'n1', label: 'Connect to notary registry', completed: false, logs: [] },\n { id: 'n2', label: 'Validate commission status', completed: false, logs: [] },\n { id: 'n3', label: 'Generate cryptographic seal', completed: false, logs: [] },\n { id: 'n4', label: 'Apply digital signature', completed: false, logs: [] }\n ],\n documentSection: 'notary',\n logs: []\n }\n];\n\nexport const STEP_ICON_MAP: Record<string, any> = {\n verify: FileText,\n identity: Shield,\n statement: FileText,\n witness: Users,\n notary: Stamp\n};\n","import { useEffect, useState } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\nimport { Check, Loader2 } from 'lucide-react';\nimport { SubStepItem } from './SubStepItem';\nimport { LogContainer } from './LogComponents';\nimport { STEP_ICON_MAP } from '../default-steps';\nimport type { Step } from '../types';\n\ninterface StepItemProps {\n step: Step;\n isLast: boolean;\n showRipple: boolean;\n}\n\nexport function StepItem({ step, isLast, showRipple }: StepItemProps) {\n const [showSubsteps, setShowSubsteps] = useState(false);\n const [logsExpanded, setLogsExpanded] = useState(false);\n\n // Auto-expand substeps when processing\n useEffect(() => {\n if (step.status === 'processing') {\n setShowSubsteps(true);\n }\n }, [step.status]);\n\n // Auto-collapse substeps when completed\n useEffect(() => {\n if (step.status === 'completed') {\n const timer = setTimeout(() => {\n setShowSubsteps(false);\n }, 800);\n return () => clearTimeout(timer);\n }\n }, [step.status]);\n\n const Icon = STEP_ICON_MAP[step.id] || STEP_ICON_MAP.verify;\n\n // Clean status-based styling\n const getStatusStyles = () => {\n switch (step.status) {\n case 'completed':\n return {\n cardBg: 'bg-emerald-500/5',\n border: 'border-emerald-500/30',\n iconBg: 'bg-gradient-to-br from-emerald-500 to-emerald-600',\n textColor: 'text-emerald-600 dark:text-emerald-400'\n };\n case 'active':\n return {\n cardBg: 'bg-orange-500/5',\n border: 'border-orange-500/30',\n iconBg: 'bg-gradient-to-br from-orange-500 to-red-500',\n textColor: 'text-orange-600 dark:text-orange-400'\n };\n case 'processing':\n return {\n cardBg: 'bg-purple-500/5',\n border: 'border-purple-500/30',\n iconBg: 'bg-gradient-to-br from-purple-500 to-purple-600',\n textColor: 'text-purple-600 dark:text-purple-400'\n };\n default:\n return {\n cardBg: 'bg-muted/20',\n border: 'border-border',\n iconBg: 'bg-muted',\n textColor: 'text-muted-foreground'\n };\n }\n };\n\n const styles = getStatusStyles();\n\n // Count completed substeps for compact display\n const completedCount = step.substeps?.filter(s => s.completed).length || 0;\n const totalCount = step.substeps?.length || 0;\n\n return (\n <div className=\"relative\">\n {/* Subtle Ripple Effect */}\n <AnimatePresence>\n {showRipple && (\n <motion.div\n className=\"absolute inset-0 rounded-lg bg-emerald-500/20\"\n initial={{ scale: 1, opacity: 0.4 }}\n animate={{ scale: 1.05, opacity: 0 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.8, ease: 'easeOut' }}\n />\n )}\n </AnimatePresence>\n\n <motion.div\n initial={{ opacity: 0, x: -30 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: step.number * 0.15, duration: 0.5 }}\n className=\"relative\"\n >\n {/* Step Container */}\n <div className={`\n relative p-5 rounded-lg transition-all duration-500 border-2\n ${styles.cardBg} ${styles.border}\n `}>\n <div className=\"flex items-start gap-4\">\n {/* Step Icon */}\n <motion.div\n className={`\n w-11 h-11 rounded-full flex items-center justify-center flex-shrink-0\n border-2 transition-all duration-500 ${styles.iconBg}\n `}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={{ delay: step.number * 0.15 + 0.2, type: 'spring', stiffness: 200 }}\n >\n {step.status === 'completed' ? (\n <Check className=\"w-5 h-5 text-white\" />\n ) : step.status === 'processing' ? (\n <Loader2 className=\"w-5 h-5 text-white animate-spin\" />\n ) : step.status === 'active' ? (\n <Icon className=\"w-5 h-5 text-white\" />\n ) : (\n <span className=\"text-sm text-muted-foreground font-semibold\">{step.number}</span>\n )}\n </motion.div>\n\n <div className=\"flex-1 min-w-0\">\n <h3 className={`text-base font-semibold transition-colors duration-500 ${styles.textColor}`}>\n {step.title}\n </h3>\n <div className=\"flex items-center gap-2 mt-1\">\n <p className=\"text-xs text-muted-foreground font-mono\">\n STEP_{step.number.toString().padStart(2, '0')}\n </p>\n {step.status === 'completed' && (\n <span className=\"text-[10px] px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-mono border border-emerald-500/20\">\n ✓ DONE\n </span>\n )}\n {step.status === 'completed' && step.substeps && (\n <span className=\"text-[10px] px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-mono\">\n {completedCount}/{totalCount} substeps\n </span>\n )}\n </div>\n\n {/* Substeps */}\n <AnimatePresence>\n {showSubsteps && step.substeps && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.4 }}\n className=\"overflow-hidden\"\n >\n <div className=\"mt-4 space-y-3 pl-3 border-l-2 border-purple-500/20\">\n {step.substeps.map((substep, idx) => (\n <SubStepItem key={substep.id} substep={substep} delay={idx * 0.15} />\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </div>\n </div>\n\n {/* Step Logs */}\n <LogContainer \n logs={step.logs}\n expanded={logsExpanded}\n onToggle={() => setLogsExpanded(!logsExpanded)}\n />\n\n {/* Connecting Line */}\n {!isLast && (\n <motion.div\n className=\"absolute left-[22px] top-full h-6 w-0.5 bg-border\"\n initial={{ scaleY: 0 }}\n animate={{ scaleY: 1 }}\n transition={{ delay: step.number * 0.15 + 0.4, duration: 0.3 }}\n style={{ transformOrigin: 'top' }}\n />\n )}\n </motion.div>\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\nimport { Stamp } from 'lucide-react';\nimport type { DocumentIds } from '../types';\n\ninterface DocumentPreviewProps {\n completedSections: Set<string>;\n completedSubsteps: Set<string>;\n documentIds: DocumentIds;\n}\n\nexport function DocumentPreview({ completedSubsteps, documentIds }: DocumentPreviewProps) {\n return (\n <div className=\"relative max-w-4xl mx-auto\">\n {/* Paper Container with Realistic Effect */}\n <motion.div\n className=\"relative bg-gradient-to-br from-[#FDFDF8] to-[#F8F8F0] dark:from-gray-900 dark:to-gray-800 rounded-lg\"\n style={{\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n }}\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n >\n {/* Subtle Paper Texture */}\n <div\n className=\"absolute inset-0 opacity-20 dark:opacity-10 rounded-lg pointer-events-none\"\n style={{\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E\")`,\n }}\n />\n\n {/* Watermark */}\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none opacity-[0.02] dark:opacity-[0.04]\">\n <div className=\"text-9xl font-bold transform -rotate-45 select-none text-gray-600\">\n OFFICIAL\n </div>\n </div>\n\n {/* Document Content */}\n <div className=\"relative p-16 space-y-10\" style={{ fontFamily: 'Georgia, \"Times New Roman\", Times, serif' }}>\n\n {/* Header - Progressive Build */}\n <AnimatePresence>\n {completedSubsteps.has('v1') && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n className=\"border-b-2 border-cyan-500/20 pb-6\"\n style={{ boxShadow: '0 1px 3px rgba(6, 182, 212, 0.1)' }}\n >\n <div className=\"text-center space-y-3\">\n <DocumentLine\n text=\"SWORN AFFIDAVIT\"\n delay={0.2}\n className=\"text-3xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100\"\n />\n\n {completedSubsteps.has('v2') && (\n <>\n <DocumentLine\n text=\"STATE OF [JURISDICTION]\"\n delay={0.5}\n className=\"text-sm tracking-widest text-gray-700 dark:text-gray-300\"\n />\n <DocumentLine\n text=\"COUNTY OF [COUNTY NAME]\"\n delay={0.8}\n className=\"text-sm tracking-widest text-gray-700 dark:text-gray-300\"\n />\n </>\n )}\n\n {completedSubsteps.has('v4') && (\n <DocumentLine\n text={`CASE NO. ${documentIds.caseNumber}`}\n delay={1.1}\n className=\"text-base font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2\"\n />\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Affiant Info - Progressive Build */}\n <AnimatePresence>\n {completedSubsteps.has('i1') && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n className=\"border-l-[6px] border-cyan-500/40 pl-6 py-4\"\n style={{ boxShadow: '-2px 0 8px rgba(6, 182, 212, 0.1)' }}\n >\n <DocumentLine\n text=\"AFFIANT INFORMATION:\"\n delay={0.2}\n className=\"text-lg font-extrabold tracking-wide text-cyan-700 dark:text-cyan-400 mb-5 uppercase\"\n />\n <DocumentLine\n text=\"I, [FULL NAME], being duly sworn, depose and state:\"\n delay={0.5}\n className=\"text-base leading-relaxed text-gray-800 dark:text-gray-200 mb-4 italic\"\n />\n\n {completedSubsteps.has('i2') && (\n <div className=\"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300\">\n <DocumentLine text=\"Address: [STREET ADDRESS]\" delay={0.8} />\n <DocumentLine text=\"City/State: [CITY, STATE ZIP]\" delay={1.0} />\n </div>\n )}\n\n {completedSubsteps.has('i3') && (\n <div className=\"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2\">\n <DocumentLine text=\"DOB: [DATE OF BIRTH]\" delay={1.2} />\n </div>\n )}\n\n {completedSubsteps.has('i4') && (\n <div className=\"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2\">\n <DocumentLine\n text=\"ID Verified: ✓ CONFIRMED\"\n delay={1.4}\n className=\"text-emerald-600 dark:text-emerald-400 font-bold\"\n />\n </div>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Statement - Progressive Build */}\n {completedSubsteps.has('s1') && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n className=\"border-l-[6px] border-orange-500/40 pl-6 py-4\"\n style={{ boxShadow: '-2px 0 8px rgba(249, 115, 22, 0.1)' }}\n >\n <DocumentLine\n text=\"STATEMENT OF FACTS:\"\n delay={0.2}\n className=\"text-lg font-extrabold tracking-wide text-orange-700 dark:text-orange-400 mb-5 uppercase\"\n />\n\n <AnimatePresence>\n {completedSubsteps.has('s1') && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.6 }}\n className=\"mb-5\"\n >\n <div className=\"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200\">\n <DocumentLine\n text=\"1. That I have personal knowledge of the facts stated herein and am competent to testify to the same.\"\n delay={0.3}\n />\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {completedSubsteps.has('s2') && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.6 }}\n className=\"mb-5\"\n >\n <div className=\"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200\">\n <DocumentLine\n text=\"2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]\"\n delay={0.3}\n />\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {completedSubsteps.has('s3') && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.6 }}\n className=\"mb-5\"\n >\n <div className=\"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200\">\n <DocumentLine\n text=\"3. That the information provided herein is true and correct to the best of my knowledge and belief.\"\n delay={0.3}\n />\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {completedSubsteps.has('s4') && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.6 }}\n >\n <div className=\"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200\">\n <DocumentLine\n text=\"4. That I understand the penalties for perjury under law.\"\n delay={0.3}\n />\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </motion.div>\n )}\n\n {/* Witness - Progressive Build */}\n <AnimatePresence>\n {completedSubsteps.has('w1') && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n className=\"border-l-[6px] border-purple-500/40 pl-6 py-4\"\n style={{ boxShadow: '-2px 0 8px rgba(168, 85, 247, 0.1)' }}\n >\n <DocumentLine\n text=\"WITNESS ATTESTATION:\"\n delay={0.2}\n className=\"text-lg font-extrabold tracking-wide text-purple-700 dark:text-purple-400 mb-5 uppercase\"\n />\n\n {completedSubsteps.has('w2') && (\n <div className=\"space-y-2 text-sm text-gray-700 dark:text-gray-300\">\n <DocumentLine text=\"Witnessed by: [WITNESS NAME]\" delay={0.5} />\n <DocumentLine text=\"Witness Address: [ADDRESS]\" delay={0.7} />\n </div>\n )}\n\n {completedSubsteps.has('w4') && (\n <div className=\"mt-8 pt-6 border-t border-gray-300 dark:border-gray-600\">\n <motion.div\n initial={{ width: 0 }}\n animate={{ width: '80%' }}\n transition={{ delay: 0.9, duration: 0.7 }}\n className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2\"\n />\n <DocumentLine\n text=\"Witness Signature\"\n delay={1.1}\n className=\"text-xs text-gray-500 italic\"\n />\n <DocumentLine\n text={`Date: ${new Date().toLocaleDateString()}`}\n delay={1.3}\n className=\"mt-4 text-sm\"\n />\n </div>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Notary - Progressive Build */}\n <AnimatePresence>\n {completedSubsteps.has('n1') && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n className=\"border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden\"\n style={{ boxShadow: '0 4px 12px rgba(16, 185, 129, 0.15)' }}\n >\n {/* Embossed Seal */}\n {completedSubsteps.has('n3') && (\n <motion.div\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n transition={{ delay: 0.5, duration: 0.8, type: 'spring' }}\n className=\"absolute right-8 top-1/2 -translate-y-1/2 w-32 h-32 opacity-15\"\n >\n <div className=\"absolute inset-0 rounded-full border-[5px] border-emerald-600\"\n style={{ boxShadow: 'inset 0 2px 8px rgba(0,0,0,0.3)' }}\n />\n <div className=\"absolute inset-2 rounded-full border-2 border-emerald-500\" />\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Stamp className=\"w-12 h-12 text-emerald-600\" />\n </div>\n </motion.div>\n )}\n\n <DocumentLine\n text=\"NOTARY PUBLIC CERTIFICATION:\"\n delay={0.2}\n className=\"text-lg font-extrabold tracking-wide text-emerald-700 dark:text-emerald-400 mb-5 uppercase\"\n />\n\n <div className=\"space-y-2 text-sm text-gray-700 dark:text-gray-300 pr-36\">\n {completedSubsteps.has('n1') && (\n <DocumentLine\n text={`Subscribed and sworn before me this ${new Date().toLocaleDateString()}`}\n delay={0.5}\n className=\"leading-relaxed\"\n />\n )}\n\n {completedSubsteps.has('n2') && (\n <div className=\"my-4 border-t border-gray-300 dark:border-gray-600 pt-4\">\n <DocumentLine text=\"Notary Public: [NOTARY NAME]\" delay={0.8} />\n <DocumentLine text=\"Commission Number: [NUMBER]\" delay={1.0} />\n <DocumentLine\n text={`My Commission Expires: ${new Date(Date.now() + 365*24*60*60*1000).toLocaleDateString()}`}\n delay={1.2}\n />\n </div>\n )}\n\n {completedSubsteps.has('n4') && (\n <div className=\"mt-8 pt-4\">\n <motion.div\n initial={{ width: 0 }}\n animate={{ width: '75%' }}\n transition={{ delay: 1.5, duration: 0.7 }}\n className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2\"\n />\n <DocumentLine\n text=\"Notary Signature\"\n delay={1.7}\n className=\"text-xs text-gray-500 italic\"\n />\n </div>\n )}\n </div>\n\n {completedSubsteps.has('n3') && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 1.9 }}\n className=\"absolute bottom-4 left-6 px-3 py-1.5 border-2 border-emerald-600/50 rounded text-xs font-mono text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-500/10\"\n >\n [OFFICIAL SEAL]\n </motion.div>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n\n </div>\n </motion.div>\n </div>\n );\n}\n\nfunction DocumentLine({\n text,\n delay,\n className = ''\n}: {\n text: string;\n delay: number;\n className?: string;\n}) {\n const [displayText, setDisplayText] = useState('');\n const [showCursor, setShowCursor] = useState(true);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n let currentIndex = 0;\n const interval = setInterval(() => {\n if (currentIndex <= text.length) {\n setDisplayText(text.slice(0, currentIndex));\n currentIndex++;\n } else {\n clearInterval(interval);\n setTimeout(() => setShowCursor(false), 300);\n }\n }, 25);\n\n return () => clearInterval(interval);\n }, delay * 1000);\n\n return () => clearTimeout(timer);\n }, [text, delay]);\n\n return (\n <div className={`${className} font-serif`} style={{ lineHeight: '1.8' }}>\n {displayText}\n {showCursor && (\n <motion.span\n className=\"inline-block w-0.5 h-4 bg-cyan-500 ml-1\"\n animate={{ opacity: [1, 0] }}\n transition={{ duration: 0.7, repeat: Infinity }}\n />\n )}\n </div>\n );\n}\n","import { Stamp } from 'lucide-react';\nimport type { DocumentIds } from '../types';\n\ninterface WholeDocumentContentProps {\n documentIds: DocumentIds;\n}\n\nexport function WholeDocumentContent({ documentIds }: WholeDocumentContentProps) {\n return (\n <div className=\"p-12 space-y-8\" style={{ fontFamily: 'Georgia, \"Times New Roman\", Times, serif' }}>\n {/* Header */}\n <div className=\"border-b-2 border-cyan-500/20 pb-6\">\n <div className=\"text-center space-y-2\">\n <div className=\"text-2xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100\">\n SWORN AFFIDAVIT\n </div>\n <div className=\"text-xs tracking-widest text-gray-700 dark:text-gray-300\">\n STATE OF [JURISDICTION]\n </div>\n <div className=\"text-xs tracking-widest text-gray-700 dark:text-gray-300\">\n COUNTY OF [COUNTY NAME]\n </div>\n <div className=\"text-sm font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2\">\n CASE NO. {documentIds.caseNumber}\n </div>\n </div>\n </div>\n\n {/* Affiant Info */}\n <div className=\"border-l-[6px] border-cyan-500/40 pl-6 py-4\">\n <div className=\"text-base font-extrabold tracking-wide text-cyan-700 dark:text-cyan-400 mb-4 uppercase\">\n AFFIANT INFORMATION:\n </div>\n <div className=\"text-sm leading-relaxed text-gray-800 dark:text-gray-200 mb-3 italic\">\n I, [FULL NAME], being duly sworn, depose and state:\n </div>\n <div className=\"space-y-1 ml-8 text-xs text-gray-700 dark:text-gray-300\">\n <div>Address: [STREET ADDRESS]</div>\n <div>City/State: [CITY, STATE ZIP]</div>\n <div>DOB: [DATE OF BIRTH]</div>\n <div className=\"text-emerald-600 dark:text-emerald-400 font-bold\">ID Verified: ✓ CONFIRMED</div>\n </div>\n </div>\n\n {/* Statement */}\n <div className=\"border-l-[6px] border-orange-500/40 pl-6 py-4\">\n <div className=\"text-base font-extrabold tracking-wide text-orange-700 dark:text-orange-400 mb-4 uppercase\">\n STATEMENT OF FACTS:\n </div>\n <div className=\"space-y-3 ml-8 text-sm leading-loose text-gray-800 dark:text-gray-200\">\n <div>1. That I have personal knowledge of the facts stated herein and am competent to testify to the same.</div>\n <div>2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]</div>\n <div>3. That the information provided herein is true and correct to the best of my knowledge and belief.</div>\n <div>4. That I understand the penalties for perjury under law.</div>\n </div>\n </div>\n\n {/* Witness */}\n <div className=\"border-l-[6px] border-purple-500/40 pl-6 py-4\">\n <div className=\"text-base font-extrabold tracking-wide text-purple-700 dark:text-purple-400 mb-4 uppercase\">\n WITNESS ATTESTATION:\n </div>\n <div className=\"space-y-2 text-xs text-gray-700 dark:text-gray-300\">\n <div>Witnessed by: [WITNESS NAME]</div>\n <div>Witness Address: [ADDRESS]</div>\n </div>\n <div className=\"mt-6 pt-4 border-t border-gray-300 dark:border-gray-600\">\n <div className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-3/4\" />\n <div className=\"text-xs text-gray-500 italic\">Witness Signature</div>\n <div className=\"mt-3 text-xs\">Date: {new Date().toLocaleDateString()}</div>\n </div>\n </div>\n\n {/* Notary */}\n <div className=\"border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden\">\n {/* Seal */}\n <div className=\"absolute right-8 top-1/2 -translate-y-1/2 w-24 h-24 opacity-15\">\n <div className=\"absolute inset-0 rounded-full border-[4px] border-emerald-600\" />\n <div className=\"absolute inset-2 rounded-full border-2 border-emerald-500\" />\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Stamp className=\"w-10 h-10 text-emerald-600\" />\n </div>\n </div>\n \n <div className=\"text-base font-extrabold tracking-wide text-emerald-700 dark:text-emerald-400 mb-4 uppercase\">\n NOTARY PUBLIC CERTIFICATION:\n </div>\n \n <div className=\"space-y-2 text-xs text-gray-700 dark:text-gray-300 pr-28\">\n <div className=\"leading-relaxed\">Subscribed and sworn before me this {new Date().toLocaleDateString()}</div>\n <div className=\"my-3 border-t border-gray-300 dark:border-gray-600 pt-3 space-y-1\">\n <div>Notary Public: [NOTARY NAME]</div>\n <div>Commission Number: [NUMBER]</div>\n <div>My Commission Expires: {new Date(Date.now() + 365*24*60*60*1000).toLocaleDateString()}</div>\n </div>\n <div className=\"mt-6 pt-3\">\n <div className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-2/3\" />\n <div className=\"text-xs text-gray-500 italic\">Notary Signature</div>\n </div>\n </div>\n\n <div className=\"absolute bottom-4 left-6 px-3 py-1.5 border-2 border-emerald-600/50 rounded text-xs font-mono text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-500/10\">\n [OFFICIAL SEAL]\n </div>\n </div>\n </div>\n );\n}\n","import { motion, AnimatePresence } from 'motion/react';\nimport { X, Sparkles } from 'lucide-react';\nimport { WholeDocumentContent } from './WholeDocumentContent';\nimport type { DocumentIds, DocumentMetrics } from '../types';\n\ninterface WholeDocumentViewProps {\n show: boolean;\n onClose: () => void;\n documentIds: DocumentIds;\n metrics: DocumentMetrics;\n}\n\nexport function WholeDocumentView({ show, onClose, documentIds, metrics }: WholeDocumentViewProps) {\n return (\n <AnimatePresence>\n {show && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n className=\"absolute inset-0 z-50 bg-background/98 backdrop-blur-sm\"\n >\n {/* Close Button */}\n <motion.button\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ delay: 1.5, duration: 0.4 }}\n onClick={onClose}\n className=\"absolute top-6 right-6 z-60 p-3 rounded-full bg-background border-2 border-border hover:border-orange-500/50 transition-all shadow-lg group\"\n >\n <X className=\"w-5 h-5 text-muted-foreground group-hover:text-orange-500 transition-colors\" />\n </motion.button>\n\n {/* Celebration Effects */}\n <motion.div\n initial={{ opacity: 0, scale: 0 }}\n animate={{ opacity: [0, 1, 1, 0], scale: [0.5, 1.5, 1.5, 2] }}\n transition={{ duration: 2, times: [0, 0.2, 0.8, 1] }}\n className=\"absolute inset-0 pointer-events-none\"\n >\n <div className=\"absolute inset-0 bg-gradient-to-br from-orange-500/5 via-transparent to-emerald-500/5\" />\n </motion.div>\n\n {/* Sparkle Effects */}\n {[...Array(12)].map((_, i) => (\n <motion.div\n key={i}\n initial={{\n opacity: 0,\n scale: 0,\n x: '50%',\n y: '50%'\n }}\n animate={{\n opacity: [0, 1, 0],\n scale: [0, 1, 0],\n x: `${50 + Math.cos((i / 12) * Math.PI * 2) * 40}%`,\n y: `${50 + Math.sin((i / 12) * Math.PI * 2) * 40}%`\n }}\n transition={{\n duration: 1.5,\n delay: i * 0.1,\n ease: 'easeOut'\n }}\n className=\"absolute top-1/2 left-1/2 pointer-events-none\"\n >\n <Sparkles className=\"w-6 h-6 text-orange-500\" />\n </motion.div>\n ))}\n\n {/* Header with Title */}\n <motion.div\n initial={{ opacity: 0, y: -30 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.8, duration: 0.6 }}\n className=\"absolute top-8 left-1/2 -translate-x-1/2 z-50 text-center\"\n >\n <h2 className=\"text-3xl font-bold bg-gradient-to-r from-orange-500 via-red-500 to-emerald-500 bg-clip-text text-transparent mb-2\">\n Document Assembly Complete\n </h2>\n <p className=\"text-sm text-muted-foreground font-mono\">\n LEGAL-{documentIds.fileNumber}.pdf • {metrics.tokens.toLocaleString()} tokens • ${metrics.cost.toFixed(4)} • {metrics.elapsed.toFixed(1)}s\n </p>\n </motion.div>\n\n {/* Zoomed Out Document */}\n <motion.div\n initial={{ scale: 1.5, opacity: 0, y: 100 }}\n animate={{ scale: 1, opacity: 1, y: 0 }}\n transition={{\n delay: 1.2,\n duration: 1.2,\n type: 'spring',\n stiffness: 80,\n damping: 20\n }}\n className=\"h-full w-full flex items-center justify-center pt-28 pb-12 px-12 overflow-hidden\"\n >\n <div className=\"relative w-full max-w-3xl h-full\">\n {/* Shadow underneath */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 2, duration: 0.5 }}\n className=\"absolute -bottom-6 left-1/2 -translate-x-1/2 w-3/4 h-8 bg-gradient-to-b from-black/20 to-transparent blur-2xl rounded-full\"\n />\n\n {/* Document with subtle glow */}\n <motion.div\n initial={{ boxShadow: '0 0 0 rgba(249, 115, 22, 0)' }}\n animate={{\n boxShadow: [\n '0 0 0 rgba(249, 115, 22, 0)',\n '0 0 60px rgba(249, 115, 22, 0.3)',\n '0 0 40px rgba(249, 115, 22, 0.2)'\n ]\n }}\n transition={{\n duration: 2,\n times: [0, 0.5, 1],\n delay: 2\n }}\n className=\"relative bg-gradient-to-br from-[#FDFDF8] to-[#F8F8F0] dark:from-gray-900 dark:to-gray-800 rounded-lg overflow-hidden h-full border-2 border-border/50\"\n style={{\n boxShadow: '0 30px 60px -12px rgba(0, 0, 0, 0.35), 0 20px 25px -5px rgba(0, 0, 0, 0.15)',\n }}\n >\n {/* Scrollable content */}\n <div className=\"h-full overflow-y-auto\">\n <WholeDocumentContent documentIds={documentIds} />\n </div>\n </motion.div>\n </div>\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n","export const DEFAULT_STEP_LOGS: Record<string, string[][]> = {\n verify: [\n ['info', 'Initializing document verification system...'],\n ['processing', 'Loading verification protocols v3.2.1'],\n ['success', 'Protocols loaded successfully']\n ],\n identity: [\n ['info', 'Starting identity validation sequence'],\n ['processing', 'Establishing secure connection'],\n ['success', 'Connection established']\n ],\n statement: [\n ['info', 'Initializing statement processing pipeline'],\n ['processing', 'Loading NLP models for legal analysis'],\n ['success', 'Models loaded successfully']\n ],\n witness: [\n ['info', 'Starting witness authorization protocol'],\n ['processing', 'Initializing verification systems'],\n ['success', 'Systems initialized']\n ],\n notary: [\n ['info', 'Initiating notarization sequence'],\n ['processing', 'Preparing secure connection'],\n ['success', 'Ready for notarization']\n ]\n};\n\nexport const DEFAULT_SUBSTEP_LOGS: Record<string, string[][]> = {\n // Step 1 - Document Verification substeps\n v1: [\n ['info', 'Loading document template...'],\n ['processing', 'Validating template structure'],\n ['info', 'Checking template version'],\n ['success', 'Template validated: SWORN_AFFIDAVIT_STD v2.1']\n ],\n v2: [\n ['info', 'Scanning legal requirements database...'],\n ['processing', 'Cross-referencing state regulations'],\n ['info', 'Validating federal compliance'],\n ['success', 'Legal requirements verified']\n ],\n v3: [\n ['info', 'Determining jurisdiction...'],\n ['processing', 'Checking state-specific requirements'],\n ['info', 'Validating county regulations'],\n ['success', 'Jurisdiction compliance: CONFIRMED']\n ],\n v4: [\n ['info', 'Generating document metadata...'],\n ['processing', 'Creating unique document ID'],\n ['info', 'Assigning case number'],\n ['success', 'Metadata generated successfully']\n ],\n \n // Step 2 - Identity Validation substeps\n i1: [\n ['info', 'Requesting credential verification...'],\n ['processing', 'Connecting to identity API'],\n ['info', 'Sending authentication request'],\n ['success', 'Credentials authenticated']\n ],\n i2: [\n ['info', 'Initiating biometric verification...'],\n ['processing', 'Running facial recognition scan'],\n ['info', 'Analyzing biometric markers'],\n ['success', 'Biometric data verified: 99.2% match']\n ],\n i3: [\n ['info', 'Accessing identity databases...'],\n ['processing', 'Cross-referencing government records'],\n ['info', 'Validating social security records'],\n ['success', 'Database cross-reference complete']\n ],\n i4: [\n ['info', 'Confirming identity match...'],\n ['processing', 'Aggregating verification results'],\n ['info', 'Performing final validation'],\n ['success', 'Identity confirmed: VERIFIED']\n ],\n \n // Step 3 - Statement Processing substeps\n s1: [\n ['info', 'Parsing statement content...'],\n ['processing', 'Tokenizing input text'],\n ['info', 'Extracting semantic structure'],\n ['success', 'Content parsed: 847 tokens']\n ],\n s2: [\n ['info', 'Verifying factual accuracy...'],\n ['processing', 'Running fact-checking algorithms'],\n ['info', 'Cross-referencing with knowledge base'],\n ['success', 'Accuracy verified: 98.7% confidence']\n ],\n s3: [\n ['info', 'Formatting legal language...'],\n ['processing', 'Applying legal terminology standards'],\n ['info', 'Restructuring paragraphs per jurisdiction'],\n ['success', 'Legal format applied successfully']\n ],\n s4: [\n ['info', 'Generating numbered paragraphs...'],\n ['processing', 'Creating hierarchical structure'],\n ['info', 'Applying citation formatting'],\n ['success', 'Paragraphs generated: 4 sections']\n ],\n \n // Step 4 - Witness Authorization substeps\n w1: [\n ['info', 'Checking witness eligibility...'],\n ['processing', 'Verifying age requirements'],\n ['info', 'Validating witness capacity'],\n ['success', 'Witness eligibility: CONFIRMED']\n ],\n w2: [\n ['info', 'Validating witness credentials...'],\n ['processing', 'Checking identification documents'],\n ['info', 'Verifying witness signature authority'],\n ['success', 'Credentials validated successfully']\n ],\n w3: [\n ['info', 'Generating attestation block...'],\n ['processing', 'Creating witness declaration'],\n ['info', 'Formatting attestation language'],\n ['success', 'Attestation block generated']\n ],\n w4: [\n ['info', 'Recording witness information...'],\n ['processing', 'Storing witness metadata'],\n ['info', 'Generating witness certificate'],\n ['success', 'Witness information recorded']\n ],\n \n // Step 5 - Notarization substeps\n n1: [\n ['info', 'Connecting to notary public registry...'],\n ['processing', 'Establishing secure connection'],\n ['info', 'Authenticating registry access'],\n ['success', 'Registry connection established']\n ],\n n2: [\n ['info', 'Validating notary commission...'],\n ['processing', 'Checking commission status'],\n ['info', 'Verifying commission expiration date'],\n ['success', 'Commission status: ACTIVE']\n ],\n n3: [\n ['info', 'Generating cryptographic seal...'],\n ['processing', 'Creating digital signature'],\n ['info', 'Applying encryption protocols'],\n ['success', 'Cryptographic seal generated']\n ],\n n4: [\n ['info', 'Applying digital signature...'],\n ['processing', 'Embedding signature metadata'],\n ['info', 'Finalizing document certification'],\n ['success', 'Notarization complete - Document sealed']\n ]\n};\n","import { useEffect, useState, useRef } from 'react';\nimport { motion } from 'motion/react';\nimport { FileText, Zap, DollarSign, Clock } from 'lucide-react';\nimport { StepItem } from './StepItem';\nimport { DocumentPreview } from './DocumentPreview';\nimport { WholeDocumentView } from './WholeDocumentView';\nimport { DEFAULT_STEPS } from '../default-steps';\nimport { DEFAULT_STEP_LOGS, DEFAULT_SUBSTEP_LOGS } from '../constants';\nimport type { Step, LogEntry, DocumentMetrics, BlueprintDocumentAssemblyProps } from '../types';\n\nexport function BlueprintDocumentAssembly({\n steps: initialSteps,\n stepLogs: customStepLogs,\n substepLogs: customSubstepLogs,\n autoScroll = true,\n showWholeDocumentView = true,\n documentIds: customDocumentIds,\n animationSpeed = 1,\n onComplete,\n onStepComplete,\n className,\n}: BlueprintDocumentAssemblyProps) {\n // Deep clone default steps to avoid mutating the shared constant\n const startingSteps = initialSteps ?? DEFAULT_STEPS.map(s => ({\n ...s,\n logs: [],\n substeps: s.substeps?.map(sub => ({ ...sub, logs: [], completed: false }))\n }));\n\n const stepLogs = customStepLogs ?? DEFAULT_STEP_LOGS;\n const substepLogs = customSubstepLogs ?? DEFAULT_SUBSTEP_LOGS;\n\n const [steps, setSteps] = useState<Step[]>(startingSteps);\n const [completedSections, setCompletedSections] = useState<Set<string>>(new Set());\n const [completedSubsteps, setCompletedSubsteps] = useState<Set<string>>(new Set());\n const [metrics, setMetrics] = useState<DocumentMetrics>({ tokens: 0, cost: 0, elapsed: 0 });\n const [showRipple, setShowRipple] = useState<string | null>(null);\n const [currentStep, setCurrentStep] = useState(0);\n const documentScrollRef = useRef<HTMLDivElement>(null);\n const [showWholeDocument, setShowWholeDocument] = useState(false);\n\n // Generate stable document identifiers once\n const documentIds = useRef(\n customDocumentIds ?? {\n caseNumber: Date.now().toString().slice(-8),\n fileNumber: Date.now().toString().slice(-6)\n }\n ).current;\n\n // Helper to scale delays by animationSpeed\n const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms / animationSpeed));\n\n const addLog = (stepIndex: number, substepId: string | null, level: LogEntry['level'], message: string) => {\n const timestamp = new Date().toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' });\n const log: LogEntry = {\n id: `${Date.now()}-${Math.random()}`,\n timestamp,\n level,\n message\n };\n\n setSteps(prev => prev.map((step, idx) => {\n if (idx === stepIndex) {\n if (substepId && step.substeps) {\n return {\n ...step,\n substeps: step.substeps.map(sub =>\n sub.id === substepId ? { ...sub, logs: [...sub.logs, log] } : sub\n )\n };\n } else {\n return { ...step, logs: [...step.logs, log] };\n }\n }\n return step;\n }));\n };\n\n const streamLogs = async (stepIndex: number, substepId: string | null, logs: string[][]) => {\n for (const [level, message] of logs) {\n await delay(250 + Math.random() * 300);\n addLog(stepIndex, substepId, level as LogEntry['level'], message);\n }\n };\n\n // Calculate progress percentage\n const totalSteps = steps.length;\n const completedStepsCount = steps.filter(s => s.status === 'completed').length;\n const progressPercentage = (completedStepsCount / totalSteps) * 100;\n\n // Auto-scroll document to show new content\n useEffect(() => {\n if (!autoScroll) return;\n if (documentScrollRef.current && completedSubsteps.size > 0) {\n const timer = setTimeout(() => {\n documentScrollRef.current?.scrollTo({\n top: documentScrollRef.current.scrollHeight,\n behavior: 'smooth'\n });\n }, 400 / animationSpeed);\n\n return () => clearTimeout(timer);\n }\n }, [completedSubsteps, autoScroll, animationSpeed]);\n\n // Simulate the document assembly process with deliberate timing\n useEffect(() => {\n const processSteps = async () => {\n for (let i = 0; i < steps.length; i++) {\n // Set step to active with a deliberate pause\n await delay(800);\n setSteps(prev => prev.map((step, idx) =>\n idx === i ? { ...step, status: 'active' } : step\n ));\n setCurrentStep(i);\n\n // Stream logs for the step\n const stepLogData = stepLogs[steps[i].id];\n if (stepLogData) {\n await streamLogs(i, null, stepLogData);\n }\n\n // If step has substeps, process them methodically\n if (steps[i].substeps) {\n await delay(600);\n setSteps(prev => prev.map((step, idx) =>\n idx === i ? { ...step, status: 'processing' } : step\n ));\n\n for (let j = 0; j < steps[i].substeps!.length; j++) {\n const substepId = steps[i].substeps![j].id;\n await delay(500);\n\n // Stream logs for substep\n const substepLogData = substepLogs[substepId];\n if (substepLogData) {\n await streamLogs(i, substepId, substepLogData);\n }\n\n await delay(400);\n setSteps(prev => prev.map((step, idx) => {\n if (idx === i && step.substeps) {\n const newSubsteps = [...step.substeps];\n newSubsteps[j] = { ...newSubsteps[j], completed: true };\n return { ...step, substeps: newSubsteps };\n }\n return step;\n }));\n\n // Update metrics gradually\n setMetrics(prev => ({\n tokens: prev.tokens + Math.floor(Math.random() * 150 + 50),\n cost: prev.cost + Math.random() * 0.002,\n elapsed: prev.elapsed + Math.random() * 0.8\n }));\n\n // Add completed substep to trigger document updates\n setCompletedSubsteps(prev => new Set([...prev, substepId]));\n\n // Small pause to allow document animation to be visible\n await delay(300);\n }\n } else {\n await delay(600);\n }\n\n // Complete step with confidence\n setShowRipple(steps[i].id);\n await delay(200);\n\n setSteps(prev => prev.map((step, idx) =>\n idx === i ? { ...step, status: 'completed' } : step\n ));\n\n // Add document section with intentional delay\n if (steps[i].documentSection) {\n await delay(500);\n setCompletedSections(prev => new Set([...prev, steps[i].documentSection!]));\n }\n\n await delay(400);\n setShowRipple(null);\n\n // Update metrics\n const updatedMetrics: DocumentMetrics = {\n tokens: metrics.tokens + Math.floor(Math.random() * 200 + 100),\n cost: metrics.cost + Math.random() * 0.005,\n elapsed: metrics.elapsed + Math.random() * 1.2\n };\n setMetrics(prev => ({\n tokens: prev.tokens + Math.floor(Math.random() * 200 + 100),\n cost: prev.cost + Math.random() * 0.005,\n elapsed: prev.elapsed + Math.random() * 1.2\n }));\n\n // Callback for step completion\n if (onStepComplete) {\n onStepComplete(steps[i], updatedMetrics);\n }\n }\n\n // Mark the document as complete\n if (showWholeDocumentView) {\n setShowWholeDocument(true);\n }\n\n // Callback for full completion\n if (onComplete) {\n setMetrics(prev => {\n onComplete(prev);\n return prev;\n });\n }\n };\n\n processSteps();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={`relative w-full h-screen overflow-hidden bg-background flex flex-col ${className ?? ''}`}>\n {/* Subtle Blueprint Grid Background */}\n <div className=\"absolute inset-0 opacity-[0.03] dark:opacity-[0.08]\">\n <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <pattern id=\"grid\" width=\"40\" height=\"40\" patternUnits=\"userSpaceOnUse\">\n <path\n d=\"M 40 0 L 0 0 0 40\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"0.5\"\n className=\"text-orange-500\"\n />\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#grid)\" />\n </svg>\n </div>\n\n {/* Overall Progress Bar */}\n <div className=\"absolute top-0 left-0 right-0 z-50\">\n <motion.div\n className=\"h-0.5 bg-gradient-to-r from-orange-500 to-red-500\"\n initial={{ width: '0%' }}\n animate={{ width: `${progressPercentage}%` }}\n transition={{ duration: 0.8, ease: 'easeOut' }}\n />\n </div>\n\n <div className=\"relative z-10 flex flex-1 overflow-hidden\">\n {/* Left Side - Assembly Process (1/3) */}\n <div className=\"w-1/3 border-r border-border/50 p-8 overflow-y-auto\">\n <div className=\"max-w-xl mx-auto\">\n <motion.div\n initial={{ opacity: 0, y: -20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.6 }}\n className=\"mb-12\"\n >\n <h1 className=\"text-3xl font-bold mb-2 bg-gradient-to-r from-orange-500 to-red-500 bg-clip-text text-transparent\">\n Sworn Affidavit Assembly\n </h1>\n <p className=\"text-muted-foreground font-mono text-xs tracking-wider\">\n System Status: <span className={`font-semibold ${currentStep === steps.length ? 'text-emerald-500' : 'text-orange-500'}`}>\n {currentStep === steps.length ? 'COMPLETE' : 'PROCESSING'}\n </span>\n </p>\n </motion.div>\n\n <div className=\"space-y-6 relative\">\n {steps.map((step, index) => (\n <StepItem\n key={step.id}\n step={step}\n isLast={index === steps.length - 1}\n showRipple={showRipple === step.id}\n />\n ))}\n </div>\n </div>\n </div>\n\n {/* Right Side - Document Preview (2/3) */}\n <div className=\"w-2/3 bg-gradient-to-br from-muted/20 to-muted/5 overflow-hidden relative\">\n <div className=\"h-full flex flex-col relative z-10\">\n {/* Document Header */}\n <div className=\"p-6 border-b border-border/50 bg-background/50 backdrop-blur-sm\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-cyan-500/10 border border-cyan-500/20\">\n <FileText className=\"w-5 h-5 text-cyan-600 dark:text-cyan-400\" />\n </div>\n <div>\n <h2 className=\"text-foreground font-semibold\">Assembled Document</h2>\n <p className=\"text-muted-foreground text-xs mt-0.5 font-mono\">\n LEGAL-{documentIds.fileNumber}.pdf\n </p>\n </div>\n </div>\n\n {/* Completion Badge */}\n {progressPercentage === 100 && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n className=\"px-4 py-2 rounded-full bg-gradient-to-r from-orange-500/20 to-red-500/20 border border-orange-500/30\"\n >\n <span className=\"text-sm font-semibold bg-gradient-to-r from-orange-600 to-red-600 bg-clip-text text-transparent\">\n 100% Complete\n </span>\n </motion.div>\n )}\n </div>\n </div>\n\n {/* Document Content */}\n <div className=\"flex-1 overflow-y-auto p-12\" ref={documentScrollRef}>\n <DocumentPreview completedSections={completedSections} completedSubsteps={completedSubsteps} documentIds={documentIds} />\n </div>\n </div>\n </div>\n </div>\n\n {/* Metrics Footer */}\n <div className=\"relative z-20 border-t border-border/50 p-4 bg-background/95 backdrop-blur-sm\">\n <div className=\"flex justify-center items-center gap-6 max-w-5xl mx-auto\">\n <div className=\"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-orange-500/5 border border-orange-500/20\">\n <Zap className=\"w-4 h-4 text-orange-500\" />\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] text-muted-foreground font-mono uppercase tracking-wider\">Tokens</span>\n <span className=\"text-base font-bold text-orange-600 dark:text-orange-400 tabular-nums\">\n {metrics.tokens.toLocaleString()}\n </span>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-emerald-500/5 border border-emerald-500/20\">\n <DollarSign className=\"w-4 h-4 text-emerald-500\" />\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] text-muted-foreground font-mono uppercase tracking-wider\">Cost</span>\n <span className=\"text-base font-bold text-emerald-600 dark:text-emerald-400 tabular-nums\">\n ${metrics.cost.toFixed(4)}\n </span>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-purple-500/5 border border-purple-500/20\">\n <Clock className=\"w-4 h-4 text-purple-500\" />\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] text-muted-foreground font-mono uppercase tracking-wider\">Elapsed</span>\n <span className=\"text-base font-bold text-purple-600 dark:text-purple-400 tabular-nums\">\n {metrics.elapsed.toFixed(1)}s\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Whole Document View - Full Screen Overlay */}\n <WholeDocumentView\n show={showWholeDocument}\n onClose={() => setShowWholeDocument(false)}\n documentIds={documentIds}\n metrics={metrics}\n />\n </div>\n );\n}\n"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {useState,useRef,useEffect}from'react';import {motion,AnimatePresence}from'motion/react';import {FileText,Zap,DollarSign,Clock,Stamp,Users,Shield,Check,Loader2,X,Sparkles,ChevronDown,ChevronRight,Terminal}from'lucide-react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';/* Blueprint Document Assembly Component v1.0.0 | MIT License */
|
|
2
|
+
function Ve({log:e,compact:c=false}){let r={info:{color:"text-cyan-500",symbol:"\u2192"},success:{color:"text-emerald-500",symbol:"\u2713"},warning:{color:"text-amber-500",symbol:"\u26A0"},processing:{color:"text-purple-500",symbol:"\u27F3"}}[e.level];return jsxs(motion.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},transition:{duration:.3},className:"flex items-start gap-2 text-foreground/80",children:[!c&&jsx("span",{className:"text-muted-foreground text-[10px]",children:e.timestamp}),jsx("span",{className:`${r.color} font-bold`,children:r.symbol}),jsx("span",{className:"flex-1 text-[11px]",children:e.message})]})}function z({logs:e,expanded:c,onToggle:x,compact:r=false}){let N=useRef(null);return useEffect(()=>{N.current&&(N.current.scrollTop=N.current.scrollHeight);},[e]),e.length===0?null:jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.4},className:r?"mt-2":"mt-3 ml-14",children:[jsxs("button",{onClick:x,className:`flex items-center gap-${r?"1.5":"2"} text-xs font-mono text-muted-foreground hover:text-foreground transition-colors ${r?"":"px-2 py-1 rounded"}`,children:[c?jsx(ChevronDown,{className:"w-3 h-3"}):jsx(ChevronRight,{className:"w-3 h-3"}),jsx(Terminal,{className:`w-${r?"2.5":"3"} h-${r?"2.5":"3"}`}),jsxs("span",{children:[r?"LOG":"SYSTEM LOG"," (",e.length,r?"":" entries",")"]})]}),jsx(AnimatePresence,{children:c&&jsx(motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.3},className:"overflow-hidden",children:jsx("div",{ref:N,className:`bg-background border border-border/50 rounded-md p-2 font-mono text-xs ${r?"max-h-24":"max-h-32"} overflow-y-auto space-y-1 mt-2`,children:e.map(y=>jsx(Ve,{log:y,compact:r},y.id))})})})]})}function me({substep:e,delay:c}){let[x,r]=useState(false);return jsx(motion.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:c,duration:.4},className:"pl-3",children:jsxs("div",{className:"flex items-start gap-2.5",children:[jsx(motion.div,{className:`
|
|
3
|
+
w-4 h-4 mt-0.5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-all duration-500
|
|
4
|
+
${e.completed?"bg-emerald-500 border-emerald-500":"border-border bg-background"}
|
|
5
|
+
`,children:e.completed&&jsx(Check,{className:"w-3 h-3 text-white"})}),jsxs("div",{className:"flex-1 min-w-0",children:[jsx("span",{className:`
|
|
6
|
+
text-sm font-mono transition-colors duration-500
|
|
7
|
+
${e.completed?"text-foreground":"text-muted-foreground"}
|
|
8
|
+
`,children:e.label}),jsx(z,{logs:e.logs,expanded:x,onToggle:()=>r(!x),compact:true})]})]})})}var Q=[{id:"verify",number:1,title:"Document Verification",status:"pending",substeps:[{id:"v1",label:"Validate document template",completed:false,logs:[]},{id:"v2",label:"Check legal requirements",completed:false,logs:[]},{id:"v3",label:"Verify jurisdiction compliance",completed:false,logs:[]},{id:"v4",label:"Generate document metadata",completed:false,logs:[]}],documentSection:"header",logs:[]},{id:"identity",number:2,title:"Identity Validation",status:"pending",substeps:[{id:"i1",label:"Request credential check",completed:false,logs:[]},{id:"i2",label:"Verify biometric data",completed:false,logs:[]},{id:"i3",label:"Cross-reference databases",completed:false,logs:[]},{id:"i4",label:"Confirm identity match",completed:false,logs:[]}],documentSection:"affiant",logs:[]},{id:"statement",number:3,title:"Statement Processing",status:"pending",substeps:[{id:"s1",label:"Parse statement content",completed:false,logs:[]},{id:"s2",label:"Verify factual accuracy",completed:false,logs:[]},{id:"s3",label:"Format legal language",completed:false,logs:[]},{id:"s4",label:"Generate numbered paragraphs",completed:false,logs:[]}],documentSection:"statement",logs:[]},{id:"witness",number:4,title:"Witness Authorization",status:"pending",substeps:[{id:"w1",label:"Verify witness eligibility",completed:false,logs:[]},{id:"w2",label:"Check credential validity",completed:false,logs:[]},{id:"w3",label:"Generate attestation block",completed:false,logs:[]},{id:"w4",label:"Record witness information",completed:false,logs:[]}],documentSection:"witness",logs:[]},{id:"notary",number:5,title:"Notarization",status:"pending",substeps:[{id:"n1",label:"Connect to notary registry",completed:false,logs:[]},{id:"n2",label:"Validate commission status",completed:false,logs:[]},{id:"n3",label:"Generate cryptographic seal",completed:false,logs:[]},{id:"n4",label:"Apply digital signature",completed:false,logs:[]}],documentSection:"notary",logs:[]}],ee={verify:FileText,identity:Shield,statement:FileText,witness:Users,notary:Stamp};function be({step:e,isLast:c,showRipple:x}){let[r,N]=useState(false),[y,C]=useState(false);useEffect(()=>{e.status==="processing"&&N(true);},[e.status]),useEffect(()=>{if(e.status==="completed"){let A=setTimeout(()=>{N(false);},800);return ()=>clearTimeout(A)}},[e.status]);let O=ee[e.id]||ee.verify,T=(()=>{switch(e.status){case "completed":return {cardBg:"bg-emerald-500/5",border:"border-emerald-500/30",iconBg:"bg-gradient-to-br from-emerald-500 to-emerald-600",textColor:"text-emerald-600 dark:text-emerald-400"};case "active":return {cardBg:"bg-orange-500/5",border:"border-orange-500/30",iconBg:"bg-gradient-to-br from-orange-500 to-red-500",textColor:"text-orange-600 dark:text-orange-400"};case "processing":return {cardBg:"bg-purple-500/5",border:"border-purple-500/30",iconBg:"bg-gradient-to-br from-purple-500 to-purple-600",textColor:"text-purple-600 dark:text-purple-400"};default:return {cardBg:"bg-muted/20",border:"border-border",iconBg:"bg-muted",textColor:"text-muted-foreground"}}})(),q=e.substeps?.filter(A=>A.completed).length||0,j=e.substeps?.length||0;return jsxs("div",{className:"relative",children:[jsx(AnimatePresence,{children:x&&jsx(motion.div,{className:"absolute inset-0 rounded-lg bg-emerald-500/20",initial:{scale:1,opacity:.4},animate:{scale:1.05,opacity:0},exit:{opacity:0},transition:{duration:.8,ease:"easeOut"}})}),jsxs(motion.div,{initial:{opacity:0,x:-30},animate:{opacity:1,x:0},transition:{delay:e.number*.15,duration:.5},className:"relative",children:[jsx("div",{className:`
|
|
9
|
+
relative p-5 rounded-lg transition-all duration-500 border-2
|
|
10
|
+
${T.cardBg} ${T.border}
|
|
11
|
+
`,children:jsxs("div",{className:"flex items-start gap-4",children:[jsx(motion.div,{className:`
|
|
12
|
+
w-11 h-11 rounded-full flex items-center justify-center flex-shrink-0
|
|
13
|
+
border-2 transition-all duration-500 ${T.iconBg}
|
|
14
|
+
`,initial:{scale:.8},animate:{scale:1},transition:{delay:e.number*.15+.2,type:"spring",stiffness:200},children:e.status==="completed"?jsx(Check,{className:"w-5 h-5 text-white"}):e.status==="processing"?jsx(Loader2,{className:"w-5 h-5 text-white animate-spin"}):e.status==="active"?jsx(O,{className:"w-5 h-5 text-white"}):jsx("span",{className:"text-sm text-muted-foreground font-semibold",children:e.number})}),jsxs("div",{className:"flex-1 min-w-0",children:[jsx("h3",{className:`text-base font-semibold transition-colors duration-500 ${T.textColor}`,children:e.title}),jsxs("div",{className:"flex items-center gap-2 mt-1",children:[jsxs("p",{className:"text-xs text-muted-foreground font-mono",children:["STEP_",e.number.toString().padStart(2,"0")]}),e.status==="completed"&&jsx("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-mono border border-emerald-500/20",children:"\u2713 DONE"}),e.status==="completed"&&e.substeps&&jsxs("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-mono",children:[q,"/",j," substeps"]})]}),jsx(AnimatePresence,{children:r&&e.substeps&&jsx(motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.4},className:"overflow-hidden",children:jsx("div",{className:"mt-4 space-y-3 pl-3 border-l-2 border-purple-500/20",children:e.substeps.map((A,m)=>jsx(me,{substep:A,delay:m*.15},A.id))})})})]})]})}),jsx(z,{logs:e.logs,expanded:y,onToggle:()=>C(!y)}),!c&&jsx(motion.div,{className:"absolute left-[22px] top-full h-6 w-0.5 bg-border",initial:{scaleY:0},animate:{scaleY:1},transition:{delay:e.number*.15+.4,duration:.3},style:{transformOrigin:"top"}})]})]})}function ye({completedSubsteps:e,documentIds:c}){return jsx("div",{className:"relative max-w-4xl mx-auto",children:jsxs(motion.div,{className:"relative bg-gradient-to-br from-[#FDFDF8] to-[#F8F8F0] dark:from-gray-900 dark:to-gray-800 rounded-lg",style:{boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 10px 15px -3px rgba(0, 0, 0, 0.1)"},initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},children:[jsx("div",{className:"absolute inset-0 opacity-20 dark:opacity-10 rounded-lg pointer-events-none",style:{backgroundImage:`url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E")`}}),jsx("div",{className:"absolute inset-0 flex items-center justify-center pointer-events-none opacity-[0.02] dark:opacity-[0.04]",children:jsx("div",{className:"text-9xl font-bold transform -rotate-45 select-none text-gray-600",children:"OFFICIAL"})}),jsxs("div",{className:"relative p-16 space-y-10",style:{fontFamily:'Georgia, "Times New Roman", Times, serif'},children:[jsx(AnimatePresence,{children:e.has("v1")&&jsx(motion.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-b-2 border-cyan-500/20 pb-6",style:{boxShadow:"0 1px 3px rgba(6, 182, 212, 0.1)"},children:jsxs("div",{className:"text-center space-y-3",children:[jsx(s,{text:"SWORN AFFIDAVIT",delay:.2,className:"text-3xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100"}),e.has("v2")&&jsxs(Fragment,{children:[jsx(s,{text:"STATE OF [JURISDICTION]",delay:.5,className:"text-sm tracking-widest text-gray-700 dark:text-gray-300"}),jsx(s,{text:"COUNTY OF [COUNTY NAME]",delay:.8,className:"text-sm tracking-widest text-gray-700 dark:text-gray-300"})]}),e.has("v4")&&jsx(s,{text:`CASE NO. ${c.caseNumber}`,delay:1.1,className:"text-base font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2"})]})})}),jsx(AnimatePresence,{children:e.has("i1")&&jsxs(motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-l-[6px] border-cyan-500/40 pl-6 py-4",style:{boxShadow:"-2px 0 8px rgba(6, 182, 212, 0.1)"},children:[jsx(s,{text:"AFFIANT INFORMATION:",delay:.2,className:"text-lg font-extrabold tracking-wide text-cyan-700 dark:text-cyan-400 mb-5 uppercase"}),jsx(s,{text:"I, [FULL NAME], being duly sworn, depose and state:",delay:.5,className:"text-base leading-relaxed text-gray-800 dark:text-gray-200 mb-4 italic"}),e.has("i2")&&jsxs("div",{className:"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300",children:[jsx(s,{text:"Address: [STREET ADDRESS]",delay:.8}),jsx(s,{text:"City/State: [CITY, STATE ZIP]",delay:1})]}),e.has("i3")&&jsx("div",{className:"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2",children:jsx(s,{text:"DOB: [DATE OF BIRTH]",delay:1.2})}),e.has("i4")&&jsx("div",{className:"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2",children:jsx(s,{text:"ID Verified: \u2713 CONFIRMED",delay:1.4,className:"text-emerald-600 dark:text-emerald-400 font-bold"})})]})}),e.has("s1")&&jsxs(motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-l-[6px] border-orange-500/40 pl-6 py-4",style:{boxShadow:"-2px 0 8px rgba(249, 115, 22, 0.1)"},children:[jsx(s,{text:"STATEMENT OF FACTS:",delay:.2,className:"text-lg font-extrabold tracking-wide text-orange-700 dark:text-orange-400 mb-5 uppercase"}),jsx(AnimatePresence,{children:e.has("s1")&&jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},className:"mb-5",children:jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsx(s,{text:"1. That I have personal knowledge of the facts stated herein and am competent to testify to the same.",delay:.3})})})}),jsx(AnimatePresence,{children:e.has("s2")&&jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},className:"mb-5",children:jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsx(s,{text:"2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]",delay:.3})})})}),jsx(AnimatePresence,{children:e.has("s3")&&jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},className:"mb-5",children:jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsx(s,{text:"3. That the information provided herein is true and correct to the best of my knowledge and belief.",delay:.3})})})}),jsx(AnimatePresence,{children:e.has("s4")&&jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},children:jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsx(s,{text:"4. That I understand the penalties for perjury under law.",delay:.3})})})})]}),jsx(AnimatePresence,{children:e.has("w1")&&jsxs(motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-l-[6px] border-purple-500/40 pl-6 py-4",style:{boxShadow:"-2px 0 8px rgba(168, 85, 247, 0.1)"},children:[jsx(s,{text:"WITNESS ATTESTATION:",delay:.2,className:"text-lg font-extrabold tracking-wide text-purple-700 dark:text-purple-400 mb-5 uppercase"}),e.has("w2")&&jsxs("div",{className:"space-y-2 text-sm text-gray-700 dark:text-gray-300",children:[jsx(s,{text:"Witnessed by: [WITNESS NAME]",delay:.5}),jsx(s,{text:"Witness Address: [ADDRESS]",delay:.7})]}),e.has("w4")&&jsxs("div",{className:"mt-8 pt-6 border-t border-gray-300 dark:border-gray-600",children:[jsx(motion.div,{initial:{width:0},animate:{width:"80%"},transition:{delay:.9,duration:.7},className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2"}),jsx(s,{text:"Witness Signature",delay:1.1,className:"text-xs text-gray-500 italic"}),jsx(s,{text:`Date: ${new Date().toLocaleDateString()}`,delay:1.3,className:"mt-4 text-sm"})]})]})}),jsx(AnimatePresence,{children:e.has("n1")&&jsxs(motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden",style:{boxShadow:"0 4px 12px rgba(16, 185, 129, 0.15)"},children:[e.has("n3")&&jsxs(motion.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},transition:{delay:.5,duration:.8,type:"spring"},className:"absolute right-8 top-1/2 -translate-y-1/2 w-32 h-32 opacity-15",children:[jsx("div",{className:"absolute inset-0 rounded-full border-[5px] border-emerald-600",style:{boxShadow:"inset 0 2px 8px rgba(0,0,0,0.3)"}}),jsx("div",{className:"absolute inset-2 rounded-full border-2 border-emerald-500"}),jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:jsx(Stamp,{className:"w-12 h-12 text-emerald-600"})})]}),jsx(s,{text:"NOTARY PUBLIC CERTIFICATION:",delay:.2,className:"text-lg font-extrabold tracking-wide text-emerald-700 dark:text-emerald-400 mb-5 uppercase"}),jsxs("div",{className:"space-y-2 text-sm text-gray-700 dark:text-gray-300 pr-36",children:[e.has("n1")&&jsx(s,{text:`Subscribed and sworn before me this ${new Date().toLocaleDateString()}`,delay:.5,className:"leading-relaxed"}),e.has("n2")&&jsxs("div",{className:"my-4 border-t border-gray-300 dark:border-gray-600 pt-4",children:[jsx(s,{text:"Notary Public: [NOTARY NAME]",delay:.8}),jsx(s,{text:"Commission Number: [NUMBER]",delay:1}),jsx(s,{text:`My Commission Expires: ${new Date(Date.now()+365*24*60*60*1e3).toLocaleDateString()}`,delay:1.2})]}),e.has("n4")&&jsxs("div",{className:"mt-8 pt-4",children:[jsx(motion.div,{initial:{width:0},animate:{width:"75%"},transition:{delay:1.5,duration:.7},className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2"}),jsx(s,{text:"Notary Signature",delay:1.7,className:"text-xs text-gray-500 italic"})]})]}),e.has("n3")&&jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:1.9},className:"absolute bottom-4 left-6 px-3 py-1.5 border-2 border-emerald-600/50 rounded text-xs font-mono text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-500/10",children:"[OFFICIAL SEAL]"})]})})]})]})})}function s({text:e,delay:c,className:x=""}){let[r,N]=useState(""),[y,C]=useState(true);return useEffect(()=>{let O=setTimeout(()=>{let I=0,T=setInterval(()=>{I<=e.length?(N(e.slice(0,I)),I++):(clearInterval(T),setTimeout(()=>C(false),300));},25);return ()=>clearInterval(T)},c*1e3);return ()=>clearTimeout(O)},[e,c]),jsxs("div",{className:`${x} font-serif`,style:{lineHeight:"1.8"},children:[r,y&&jsx(motion.span,{className:"inline-block w-0.5 h-4 bg-cyan-500 ml-1",animate:{opacity:[1,0]},transition:{duration:.7,repeat:1/0}})]})}function ve({documentIds:e}){return jsxs("div",{className:"p-12 space-y-8",style:{fontFamily:'Georgia, "Times New Roman", Times, serif'},children:[jsx("div",{className:"border-b-2 border-cyan-500/20 pb-6",children:jsxs("div",{className:"text-center space-y-2",children:[jsx("div",{className:"text-2xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100",children:"SWORN AFFIDAVIT"}),jsx("div",{className:"text-xs tracking-widest text-gray-700 dark:text-gray-300",children:"STATE OF [JURISDICTION]"}),jsx("div",{className:"text-xs tracking-widest text-gray-700 dark:text-gray-300",children:"COUNTY OF [COUNTY NAME]"}),jsxs("div",{className:"text-sm font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2",children:["CASE NO. ",e.caseNumber]})]})}),jsxs("div",{className:"border-l-[6px] border-cyan-500/40 pl-6 py-4",children:[jsx("div",{className:"text-base font-extrabold tracking-wide text-cyan-700 dark:text-cyan-400 mb-4 uppercase",children:"AFFIANT INFORMATION:"}),jsx("div",{className:"text-sm leading-relaxed text-gray-800 dark:text-gray-200 mb-3 italic",children:"I, [FULL NAME], being duly sworn, depose and state:"}),jsxs("div",{className:"space-y-1 ml-8 text-xs text-gray-700 dark:text-gray-300",children:[jsx("div",{children:"Address: [STREET ADDRESS]"}),jsx("div",{children:"City/State: [CITY, STATE ZIP]"}),jsx("div",{children:"DOB: [DATE OF BIRTH]"}),jsx("div",{className:"text-emerald-600 dark:text-emerald-400 font-bold",children:"ID Verified: \u2713 CONFIRMED"})]})]}),jsxs("div",{className:"border-l-[6px] border-orange-500/40 pl-6 py-4",children:[jsx("div",{className:"text-base font-extrabold tracking-wide text-orange-700 dark:text-orange-400 mb-4 uppercase",children:"STATEMENT OF FACTS:"}),jsxs("div",{className:"space-y-3 ml-8 text-sm leading-loose text-gray-800 dark:text-gray-200",children:[jsx("div",{children:"1. That I have personal knowledge of the facts stated herein and am competent to testify to the same."}),jsx("div",{children:"2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]"}),jsx("div",{children:"3. That the information provided herein is true and correct to the best of my knowledge and belief."}),jsx("div",{children:"4. That I understand the penalties for perjury under law."})]})]}),jsxs("div",{className:"border-l-[6px] border-purple-500/40 pl-6 py-4",children:[jsx("div",{className:"text-base font-extrabold tracking-wide text-purple-700 dark:text-purple-400 mb-4 uppercase",children:"WITNESS ATTESTATION:"}),jsxs("div",{className:"space-y-2 text-xs text-gray-700 dark:text-gray-300",children:[jsx("div",{children:"Witnessed by: [WITNESS NAME]"}),jsx("div",{children:"Witness Address: [ADDRESS]"})]}),jsxs("div",{className:"mt-6 pt-4 border-t border-gray-300 dark:border-gray-600",children:[jsx("div",{className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-3/4"}),jsx("div",{className:"text-xs text-gray-500 italic",children:"Witness Signature"}),jsxs("div",{className:"mt-3 text-xs",children:["Date: ",new Date().toLocaleDateString()]})]})]}),jsxs("div",{className:"border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden",children:[jsxs("div",{className:"absolute right-8 top-1/2 -translate-y-1/2 w-24 h-24 opacity-15",children:[jsx("div",{className:"absolute inset-0 rounded-full border-[4px] border-emerald-600"}),jsx("div",{className:"absolute inset-2 rounded-full border-2 border-emerald-500"}),jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:jsx(Stamp,{className:"w-10 h-10 text-emerald-600"})})]}),jsx("div",{className:"text-base font-extrabold tracking-wide text-emerald-700 dark:text-emerald-400 mb-4 uppercase",children:"NOTARY PUBLIC CERTIFICATION:"}),jsxs("div",{className:"space-y-2 text-xs text-gray-700 dark:text-gray-300 pr-28",children:[jsxs("div",{className:"leading-relaxed",children:["Subscribed and sworn before me this ",new Date().toLocaleDateString()]}),jsxs("div",{className:"my-3 border-t border-gray-300 dark:border-gray-600 pt-3 space-y-1",children:[jsx("div",{children:"Notary Public: [NOTARY NAME]"}),jsx("div",{children:"Commission Number: [NUMBER]"}),jsxs("div",{children:["My Commission Expires: ",new Date(Date.now()+365*24*60*60*1e3).toLocaleDateString()]})]}),jsxs("div",{className:"mt-6 pt-3",children:[jsx("div",{className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-2/3"}),jsx("div",{className:"text-xs text-gray-500 italic",children:"Notary Signature"})]})]}),jsx("div",{className:"absolute bottom-4 left-6 px-3 py-1.5 border-2 border-emerald-600/50 rounded text-xs font-mono text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-500/10",children:"[OFFICIAL SEAL]"})]})]})}function he({show:e,onClose:c,documentIds:x,metrics:r}){return jsx(AnimatePresence,{children:e&&jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.5},className:"absolute inset-0 z-50 bg-background/98 backdrop-blur-sm",children:[jsx(motion.button,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{delay:1.5,duration:.4},onClick:c,className:"absolute top-6 right-6 z-60 p-3 rounded-full bg-background border-2 border-border hover:border-orange-500/50 transition-all shadow-lg group",children:jsx(X,{className:"w-5 h-5 text-muted-foreground group-hover:text-orange-500 transition-colors"})}),jsx(motion.div,{initial:{opacity:0,scale:0},animate:{opacity:[0,1,1,0],scale:[.5,1.5,1.5,2]},transition:{duration:2,times:[0,.2,.8,1]},className:"absolute inset-0 pointer-events-none",children:jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-orange-500/5 via-transparent to-emerald-500/5"})}),[...Array(12)].map((N,y)=>jsx(motion.div,{initial:{opacity:0,scale:0,x:"50%",y:"50%"},animate:{opacity:[0,1,0],scale:[0,1,0],x:`${50+Math.cos(y/12*Math.PI*2)*40}%`,y:`${50+Math.sin(y/12*Math.PI*2)*40}%`},transition:{duration:1.5,delay:y*.1,ease:"easeOut"},className:"absolute top-1/2 left-1/2 pointer-events-none",children:jsx(Sparkles,{className:"w-6 h-6 text-orange-500"})},y)),jsxs(motion.div,{initial:{opacity:0,y:-30},animate:{opacity:1,y:0},transition:{delay:.8,duration:.6},className:"absolute top-8 left-1/2 -translate-x-1/2 z-50 text-center",children:[jsx("h2",{className:"text-3xl font-bold bg-gradient-to-r from-orange-500 via-red-500 to-emerald-500 bg-clip-text text-transparent mb-2",children:"Document Assembly Complete"}),jsxs("p",{className:"text-sm text-muted-foreground font-mono",children:["LEGAL-",x.fileNumber,".pdf \u2022 ",r.tokens.toLocaleString()," tokens \u2022 $",r.cost.toFixed(4)," \u2022 ",r.elapsed.toFixed(1),"s"]})]}),jsx(motion.div,{initial:{scale:1.5,opacity:0,y:100},animate:{scale:1,opacity:1,y:0},transition:{delay:1.2,duration:1.2,type:"spring",stiffness:80,damping:20},className:"h-full w-full flex items-center justify-center pt-28 pb-12 px-12 overflow-hidden",children:jsxs("div",{className:"relative w-full max-w-3xl h-full",children:[jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:2,duration:.5},className:"absolute -bottom-6 left-1/2 -translate-x-1/2 w-3/4 h-8 bg-gradient-to-b from-black/20 to-transparent blur-2xl rounded-full"}),jsx(motion.div,{initial:{boxShadow:"0 0 0 rgba(249, 115, 22, 0)"},animate:{boxShadow:["0 0 0 rgba(249, 115, 22, 0)","0 0 60px rgba(249, 115, 22, 0.3)","0 0 40px rgba(249, 115, 22, 0.2)"]},transition:{duration:2,times:[0,.5,1],delay:2},className:"relative bg-gradient-to-br from-[#FDFDF8] to-[#F8F8F0] dark:from-gray-900 dark:to-gray-800 rounded-lg overflow-hidden h-full border-2 border-border/50",style:{boxShadow:"0 30px 60px -12px rgba(0, 0, 0, 0.35), 0 20px 25px -5px rgba(0, 0, 0, 0.15)"},children:jsx("div",{className:"h-full overflow-y-auto",children:jsx(ve,{documentIds:x})})})]})})]})})}var te={verify:[["info","Initializing document verification system..."],["processing","Loading verification protocols v3.2.1"],["success","Protocols loaded successfully"]],identity:[["info","Starting identity validation sequence"],["processing","Establishing secure connection"],["success","Connection established"]],statement:[["info","Initializing statement processing pipeline"],["processing","Loading NLP models for legal analysis"],["success","Models loaded successfully"]],witness:[["info","Starting witness authorization protocol"],["processing","Initializing verification systems"],["success","Systems initialized"]],notary:[["info","Initiating notarization sequence"],["processing","Preparing secure connection"],["success","Ready for notarization"]]},ae={v1:[["info","Loading document template..."],["processing","Validating template structure"],["info","Checking template version"],["success","Template validated: SWORN_AFFIDAVIT_STD v2.1"]],v2:[["info","Scanning legal requirements database..."],["processing","Cross-referencing state regulations"],["info","Validating federal compliance"],["success","Legal requirements verified"]],v3:[["info","Determining jurisdiction..."],["processing","Checking state-specific requirements"],["info","Validating county regulations"],["success","Jurisdiction compliance: CONFIRMED"]],v4:[["info","Generating document metadata..."],["processing","Creating unique document ID"],["info","Assigning case number"],["success","Metadata generated successfully"]],i1:[["info","Requesting credential verification..."],["processing","Connecting to identity API"],["info","Sending authentication request"],["success","Credentials authenticated"]],i2:[["info","Initiating biometric verification..."],["processing","Running facial recognition scan"],["info","Analyzing biometric markers"],["success","Biometric data verified: 99.2% match"]],i3:[["info","Accessing identity databases..."],["processing","Cross-referencing government records"],["info","Validating social security records"],["success","Database cross-reference complete"]],i4:[["info","Confirming identity match..."],["processing","Aggregating verification results"],["info","Performing final validation"],["success","Identity confirmed: VERIFIED"]],s1:[["info","Parsing statement content..."],["processing","Tokenizing input text"],["info","Extracting semantic structure"],["success","Content parsed: 847 tokens"]],s2:[["info","Verifying factual accuracy..."],["processing","Running fact-checking algorithms"],["info","Cross-referencing with knowledge base"],["success","Accuracy verified: 98.7% confidence"]],s3:[["info","Formatting legal language..."],["processing","Applying legal terminology standards"],["info","Restructuring paragraphs per jurisdiction"],["success","Legal format applied successfully"]],s4:[["info","Generating numbered paragraphs..."],["processing","Creating hierarchical structure"],["info","Applying citation formatting"],["success","Paragraphs generated: 4 sections"]],w1:[["info","Checking witness eligibility..."],["processing","Verifying age requirements"],["info","Validating witness capacity"],["success","Witness eligibility: CONFIRMED"]],w2:[["info","Validating witness credentials..."],["processing","Checking identification documents"],["info","Verifying witness signature authority"],["success","Credentials validated successfully"]],w3:[["info","Generating attestation block..."],["processing","Creating witness declaration"],["info","Formatting attestation language"],["success","Attestation block generated"]],w4:[["info","Recording witness information..."],["processing","Storing witness metadata"],["info","Generating witness certificate"],["success","Witness information recorded"]],n1:[["info","Connecting to notary public registry..."],["processing","Establishing secure connection"],["info","Authenticating registry access"],["success","Registry connection established"]],n2:[["info","Validating notary commission..."],["processing","Checking commission status"],["info","Verifying commission expiration date"],["success","Commission status: ACTIVE"]],n3:[["info","Generating cryptographic seal..."],["processing","Creating digital signature"],["info","Applying encryption protocols"],["success","Cryptographic seal generated"]],n4:[["info","Applying digital signature..."],["processing","Embedding signature metadata"],["info","Finalizing document certification"],["success","Notarization complete - Document sealed"]]};function at({steps:e,stepLogs:c,substepLogs:x,autoScroll:r=true,showWholeDocumentView:N=true,documentIds:y,animationSpeed:C=1,onComplete:O,onStepComplete:I,className:T}){let q=e??Q.map(p=>({...p,logs:[],substeps:p.substeps?.map(a=>({...a,logs:[],completed:false}))})),j=c??te,A=x??ae,[m,B]=useState(q),[Se,ke]=useState(new Set),[H,Te]=useState(new Set),[L,J]=useState({tokens:0,cost:0,elapsed:0}),[Ae,oe]=useState(null),[se,Ee]=useState(0),_=useRef(null),[De,re]=useState(false),Z=useRef(y??{caseNumber:Date.now().toString().slice(-8),fileNumber:Date.now().toString().slice(-6)}).current,w=p=>new Promise(a=>setTimeout(a,p/C)),Ce=(p,a,M,U)=>{let n=new Date().toLocaleTimeString("en-US",{hour12:false,hour:"2-digit",minute:"2-digit",second:"2-digit"}),f={id:`${Date.now()}-${Math.random()}`,timestamp:n,level:M,message:U};B(S=>S.map((v,R)=>R===p?a&&v.substeps?{...v,substeps:v.substeps.map(V=>V.id===a?{...V,logs:[...V.logs,f]}:V)}:{...v,logs:[...v.logs,f]}:v));},ne=async(p,a,M)=>{for(let[U,n]of M)await w(250+Math.random()*300),Ce(p,a,U,n);},Ie=m.length,le=m.filter(p=>p.status==="completed").length/Ie*100;return useEffect(()=>{if(r&&_.current&&H.size>0){let p=setTimeout(()=>{_.current?.scrollTo({top:_.current.scrollHeight,behavior:"smooth"});},400/C);return ()=>clearTimeout(p)}},[H,r,C]),useEffect(()=>{(async()=>{for(let a=0;a<m.length;a++){await w(800),B(n=>n.map((f,S)=>S===a?{...f,status:"active"}:f)),Ee(a);let M=j[m[a].id];if(M&&await ne(a,null,M),m[a].substeps){await w(600),B(n=>n.map((f,S)=>S===a?{...f,status:"processing"}:f));for(let n=0;n<m[a].substeps.length;n++){let f=m[a].substeps[n].id;await w(500);let S=A[f];S&&await ne(a,f,S),await w(400),B(v=>v.map((R,V)=>{if(V===a&&R.substeps){let X=[...R.substeps];return X[n]={...X[n],completed:true},{...R,substeps:X}}return R})),J(v=>({tokens:v.tokens+Math.floor(Math.random()*150+50),cost:v.cost+Math.random()*.002,elapsed:v.elapsed+Math.random()*.8})),Te(v=>new Set([...v,f])),await w(300);}}else await w(600);oe(m[a].id),await w(200),B(n=>n.map((f,S)=>S===a?{...f,status:"completed"}:f)),m[a].documentSection&&(await w(500),ke(n=>new Set([...n,m[a].documentSection]))),await w(400),oe(null);let U={tokens:L.tokens+Math.floor(Math.random()*200+100),cost:L.cost+Math.random()*.005,elapsed:L.elapsed+Math.random()*1.2};J(n=>({tokens:n.tokens+Math.floor(Math.random()*200+100),cost:n.cost+Math.random()*.005,elapsed:n.elapsed+Math.random()*1.2})),I&&I(m[a],U);}N&&re(true),O&&J(a=>(O(a),a));})();},[]),jsxs("div",{className:`relative w-full h-screen overflow-hidden bg-background flex flex-col ${T??""}`,children:[jsx("div",{className:"absolute inset-0 opacity-[0.03] dark:opacity-[0.08]",children:jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",children:[jsx("defs",{children:jsx("pattern",{id:"grid",width:"40",height:"40",patternUnits:"userSpaceOnUse",children:jsx("path",{d:"M 40 0 L 0 0 0 40",fill:"none",stroke:"currentColor",strokeWidth:"0.5",className:"text-orange-500"})})}),jsx("rect",{width:"100%",height:"100%",fill:"url(#grid)"})]})}),jsx("div",{className:"absolute top-0 left-0 right-0 z-50",children:jsx(motion.div,{className:"h-0.5 bg-gradient-to-r from-orange-500 to-red-500",initial:{width:"0%"},animate:{width:`${le}%`},transition:{duration:.8,ease:"easeOut"}})}),jsxs("div",{className:"relative z-10 flex flex-1 overflow-hidden",children:[jsx("div",{className:"w-1/3 border-r border-border/50 p-8 overflow-y-auto",children:jsxs("div",{className:"max-w-xl mx-auto",children:[jsxs(motion.div,{initial:{opacity:0,y:-20},animate:{opacity:1,y:0},transition:{duration:.6},className:"mb-12",children:[jsx("h1",{className:"text-3xl font-bold mb-2 bg-gradient-to-r from-orange-500 to-red-500 bg-clip-text text-transparent",children:"Sworn Affidavit Assembly"}),jsxs("p",{className:"text-muted-foreground font-mono text-xs tracking-wider",children:["System Status: ",jsx("span",{className:`font-semibold ${se===m.length?"text-emerald-500":"text-orange-500"}`,children:se===m.length?"COMPLETE":"PROCESSING"})]})]}),jsx("div",{className:"space-y-6 relative",children:m.map((p,a)=>jsx(be,{step:p,isLast:a===m.length-1,showRipple:Ae===p.id},p.id))})]})}),jsx("div",{className:"w-2/3 bg-gradient-to-br from-muted/20 to-muted/5 overflow-hidden relative",children:jsxs("div",{className:"h-full flex flex-col relative z-10",children:[jsx("div",{className:"p-6 border-b border-border/50 bg-background/50 backdrop-blur-sm",children:jsxs("div",{className:"flex items-center justify-between",children:[jsxs("div",{className:"flex items-center gap-3",children:[jsx("div",{className:"p-2 rounded-lg bg-cyan-500/10 border border-cyan-500/20",children:jsx(FileText,{className:"w-5 h-5 text-cyan-600 dark:text-cyan-400"})}),jsxs("div",{children:[jsx("h2",{className:"text-foreground font-semibold",children:"Assembled Document"}),jsxs("p",{className:"text-muted-foreground text-xs mt-0.5 font-mono",children:["LEGAL-",Z.fileNumber,".pdf"]})]})]}),le===100&&jsx(motion.div,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},className:"px-4 py-2 rounded-full bg-gradient-to-r from-orange-500/20 to-red-500/20 border border-orange-500/30",children:jsx("span",{className:"text-sm font-semibold bg-gradient-to-r from-orange-600 to-red-600 bg-clip-text text-transparent",children:"100% Complete"})})]})}),jsx("div",{className:"flex-1 overflow-y-auto p-12",ref:_,children:jsx(ye,{completedSections:Se,completedSubsteps:H,documentIds:Z})})]})})]}),jsx("div",{className:"relative z-20 border-t border-border/50 p-4 bg-background/95 backdrop-blur-sm",children:jsxs("div",{className:"flex justify-center items-center gap-6 max-w-5xl mx-auto",children:[jsxs("div",{className:"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-orange-500/5 border border-orange-500/20",children:[jsx(Zap,{className:"w-4 h-4 text-orange-500"}),jsxs("div",{className:"flex flex-col",children:[jsx("span",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-wider",children:"Tokens"}),jsx("span",{className:"text-base font-bold text-orange-600 dark:text-orange-400 tabular-nums",children:L.tokens.toLocaleString()})]})]}),jsxs("div",{className:"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-emerald-500/5 border border-emerald-500/20",children:[jsx(DollarSign,{className:"w-4 h-4 text-emerald-500"}),jsxs("div",{className:"flex flex-col",children:[jsx("span",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-wider",children:"Cost"}),jsxs("span",{className:"text-base font-bold text-emerald-600 dark:text-emerald-400 tabular-nums",children:["$",L.cost.toFixed(4)]})]})]}),jsxs("div",{className:"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-purple-500/5 border border-purple-500/20",children:[jsx(Clock,{className:"w-4 h-4 text-purple-500"}),jsxs("div",{className:"flex flex-col",children:[jsx("span",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-wider",children:"Elapsed"}),jsxs("span",{className:"text-base font-bold text-purple-600 dark:text-purple-400 tabular-nums",children:[L.elapsed.toFixed(1),"s"]})]})]})]})}),jsx(he,{show:De,onClose:()=>re(false),documentIds:Z,metrics:L})]})}
|
|
15
|
+
export{at as BlueprintDocumentAssembly,Q as DEFAULT_STEPS,te as DEFAULT_STEP_LOGS,ae as DEFAULT_SUBSTEP_LOGS};//# sourceMappingURL=index.mjs.map
|
|
16
|
+
//# sourceMappingURL=index.mjs.map
|