@chrisflippen/blueprint-document-assembly 1.0.0 → 3.0.1
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/README.md +277 -176
- package/dist/index.d.mts +524 -2
- package/dist/index.d.ts +524 -2
- package/dist/index.js +34 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +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"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useReducedMotion.ts","../src/animation/presets.ts","../src/animation/AnimationContext.tsx","../src/components/LogComponents.tsx","../src/components/SubStepItem.tsx","../src/default-steps.ts","../src/constants/default-theme.ts","../src/theme/ThemeContext.tsx","../src/components/StepItem.tsx","../src/components/DocumentLine.tsx","../src/presets/legal-document-sections.ts","../src/components/DocumentPreview.tsx","../src/presets/legal-whole-document.ts","../src/components/WholeDocumentContent.tsx","../src/components/WholeDocumentView.tsx","../src/constants.ts","../src/hooks/useDocumentAssembly.ts","../src/constants/default-labels.ts","../src/hooks/useResponsiveLayout.ts","../src/components/BlueprintDocumentAssembly.tsx","../src/presets/squiggle-document-sections.ts","../src/presets/squiggle-steps.ts","../src/utils/factories.ts"],"names":["QUERY","getInitialState","useReducedMotion","reduced","setReduced","useState","useEffect","mql","handler","e","SMOOTH_PRESET","SNAPPY_PRESET","CINEMATIC_PRESET","MINIMAL_PRESET","AnimationContext","createContext","AnimationProvider","preset","children","reducedMotion","value","useMemo","activePreset","type","jsx","useAnimation","ctx","useContext","useAnimationOptional","LogLine","memo","log","compact","classNames","config","jsxs","motion","LogContainer","logs","expanded","onToggle","labels","renderLog","logContainerRef","useRef","logLabel","entriesSuffix","ChevronDown","ChevronRight","Terminal","AnimatePresence","defaultLogRender","SubStepItem","substep","delay","renderSubstep","logsExpanded","setLogsExpanded","handleToggle","useCallback","prev","animPreset","defaultRender","Check","Fragment","DEFAULT_STEPS","FileText","Shield","Users","Stamp","STEP_ICON_MAP","DEFAULT_THEME","colorToClasses","color","resolveTheme","merged","primary","secondary","success","processing","warning","stepStatus","gradients","getThemeSafelist","colors","classes","ThemeContext","ThemeProvider","theme","resolved","useTheme","useThemeOptional","StepItem","step","isLast","showRipple","_theme","renderStep","showSubsteps","setShowSubsteps","resolvedTheme","timer","Icon","styles","completedCount","s","totalCount","stepPrefix","stepDone","substepCountLabel","Loader2","idx","DocumentLine","text","className","displayText","setDisplayText","showCursor","setShowCursor","intervalRef","charDelay","currentIndex","LEGAL_DOCUMENT_SECTIONS","resolveContent","content","documentIds","renderSpecialContent","_documentIds","_completedSubsteps","delayBase","SectionRenderer","section","completedSubsteps","firstTrigger","titleColor","sub","special","lines","line","lineIdx","DocumentPreview","sections","watermarkText","paperTexture","fontFamily","renderSection","activeSections","LEGAL_WHOLE_DOCUMENT_SECTIONS","WholeDocumentContent","WholeDocumentView","show","onClose","metrics","celebrationTitle","sparkleCount","celebrationEnabled","title","prefix","suffix","X","_","i","Sparkles","DEFAULT_STEP_LOGS","DEFAULT_SUBSTEP_LOGS","useDocumentAssembly","options","initialSteps","customStepLogs","customSubstepLogs","autoStart","autoScroll","showWholeDocumentView","customDocumentIds","animationSpeed","animationTimings","onStepStart","onStepComplete","onSubstepComplete","onSectionReveal","onLogEntry","onComplete","onPause","onResume","onReset","getInitialSteps","stepLogs","substepLogs","timings","steps","setSteps","completedSections","setCompletedSections","setCompletedSubsteps","setMetrics","setShowRipple","currentStep","setCurrentStep","showWholeDocument","setShowWholeDocument","isRunning","setIsRunning","isPaused","setIsPaused","documentScrollRef","mountedRef","pauseRef","runIdRef","ms","resolve","reject","checkPause","addLog","stepIndex","substepId","level","message","timestamp","streamLogs","totalSteps","completedStepsCount","progress","isComplete","processSteps","runId","stepsToProcess","stepLogData","j","substepLogData","newSubsteps","next","updated","start","pause","resume","reset","goToStep","DEFAULT_LABELS","completed","total","MOBILE_BREAKPOINT","TABLET_BREAKPOINT","getLayout","width","isMobile","isTablet","useResponsiveLayout","layout","setLayout","handleResize","mqlMobile","mqlTablet","BlueprintDocumentAssembly","forwardRef","props","ref","animationPreset","userLabels","documentSections","renderDocumentSection","assembly","direction","effectiveDirection","useImperativeHandle","leftWidth","rightWidth","wrapped","index","Zap","DollarSign","Clock","SQUIGGLE_DOCUMENT_SECTIONS","SQUIGGLE_WHOLE_DOCUMENT_SECTIONS","SQUIGGLE_STEPS","SQUIGGLE_STEP_LOGS","SQUIGGLE_SUBSTEP_LOGS","stepCounter","createStep","partial","createSubStep","createDocumentSection","resetStepCounter"],"mappings":"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","file":"index.js","sourcesContent":["import { useState, useEffect } from 'react';\n\nconst QUERY = '(prefers-reduced-motion: reduce)';\n\nfunction getInitialState(): boolean {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(QUERY).matches;\n}\n\nexport function useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(getInitialState);\n\n useEffect(() => {\n const mql = window.matchMedia(QUERY);\n setReduced(mql.matches);\n const handler = (e: MediaQueryListEvent) => setReduced(e.matches);\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return reduced;\n}\n","import type { AnimationPreset } from '../types';\n\nexport const SMOOTH_PRESET: AnimationPreset = {\n name: 'smooth',\n durations: { fast: 0.3, normal: 0.5, slow: 0.8 },\n springs: {\n stiff: { type: 'spring', stiffness: 300, damping: 30 },\n gentle: { type: 'spring', stiffness: 120, damping: 20 },\n bouncy: { type: 'spring', stiffness: 200, damping: 15, bounce: 0.3 },\n },\n stagger: { step: 0.15, substep: 0.15, log: 0.05, sparkle: 0.1 },\n typewriter: { charDelay: 25, cursorBlink: 700 },\n entrance: { x: -30, y: 0, scale: 0.8 },\n hookTimings: {\n stepActivation: 800,\n substepDelay: 500,\n logStreamBase: 250,\n logStreamVariance: 300,\n typewriterSpeed: 25,\n sectionRevealDuration: 500,\n completionDelay: 400,\n },\n};\n\nexport const SNAPPY_PRESET: AnimationPreset = {\n name: 'snappy',\n durations: { fast: 0.15, normal: 0.25, slow: 0.4 },\n springs: {\n stiff: { type: 'spring', stiffness: 500, damping: 35 },\n gentle: { type: 'spring', stiffness: 250, damping: 25 },\n bouncy: { type: 'spring', stiffness: 350, damping: 18, bounce: 0.2 },\n },\n stagger: { step: 0.08, substep: 0.08, log: 0.03, sparkle: 0.05 },\n typewriter: { charDelay: 15, cursorBlink: 500 },\n entrance: { x: -20, y: 0, scale: 0.9 },\n hookTimings: {\n stepActivation: 400,\n substepDelay: 250,\n logStreamBase: 125,\n logStreamVariance: 150,\n typewriterSpeed: 15,\n sectionRevealDuration: 250,\n completionDelay: 200,\n },\n};\n\nexport const CINEMATIC_PRESET: AnimationPreset = {\n name: 'cinematic',\n durations: { fast: 0.5, normal: 0.8, slow: 1.2 },\n springs: {\n stiff: { type: 'spring', stiffness: 200, damping: 25 },\n gentle: { type: 'spring', stiffness: 80, damping: 15 },\n bouncy: { type: 'spring', stiffness: 150, damping: 10, bounce: 0.5 },\n },\n stagger: { step: 0.2, substep: 0.2, log: 0.08, sparkle: 0.15 },\n typewriter: { charDelay: 35, cursorBlink: 900 },\n entrance: { x: -40, y: 10, scale: 0.7 },\n hookTimings: {\n stepActivation: 1200,\n substepDelay: 750,\n logStreamBase: 400,\n logStreamVariance: 500,\n typewriterSpeed: 35,\n sectionRevealDuration: 750,\n completionDelay: 600,\n },\n};\n\nexport const MINIMAL_PRESET: AnimationPreset = {\n name: 'minimal',\n durations: { fast: 0.1, normal: 0.15, slow: 0.2 },\n springs: {\n stiff: { type: 'spring', stiffness: 500, damping: 40 },\n gentle: { type: 'spring', stiffness: 400, damping: 35 },\n bouncy: { type: 'spring', stiffness: 450, damping: 38, bounce: 0 },\n },\n stagger: { step: 0.05, substep: 0.05, log: 0.02, sparkle: 0.02 },\n typewriter: { charDelay: 10, cursorBlink: 0 },\n entrance: { x: 0, y: 0, scale: 1 },\n hookTimings: {\n stepActivation: 200,\n substepDelay: 100,\n logStreamBase: 50,\n logStreamVariance: 50,\n typewriterSpeed: 5,\n sectionRevealDuration: 100,\n completionDelay: 100,\n },\n};\n","'use client';\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport type { AnimationPreset } from '../types';\nimport { useReducedMotion } from '../hooks/useReducedMotion';\nimport { SMOOTH_PRESET, MINIMAL_PRESET } from './presets';\n\ninterface AnimationContextValue {\n preset: AnimationPreset;\n reducedMotion: boolean;\n getTransition: (type: 'fast' | 'normal' | 'slow') => { duration: number };\n getSpring: (type: 'stiff' | 'gentle' | 'bouncy') => object;\n}\n\nconst AnimationContext = createContext<AnimationContextValue | null>(null);\n\nexport interface AnimationProviderProps {\n preset?: AnimationPreset;\n children: ReactNode;\n}\n\nexport function AnimationProvider({ preset, children }: AnimationProviderProps) {\n const reducedMotion = useReducedMotion();\n\n const value = useMemo<AnimationContextValue>(() => {\n const activePreset = reducedMotion ? MINIMAL_PRESET : (preset ?? SMOOTH_PRESET);\n\n return {\n preset: activePreset,\n reducedMotion,\n getTransition: (type) => ({ duration: activePreset.durations[type] }),\n getSpring: (type) => reducedMotion\n ? { duration: activePreset.durations.fast }\n : activePreset.springs[type],\n };\n }, [preset, reducedMotion]);\n\n return (\n <AnimationContext.Provider value={value}>\n {children}\n </AnimationContext.Provider>\n );\n}\n\nexport function useAnimation(): AnimationContextValue {\n const ctx = useContext(AnimationContext);\n if (!ctx) {\n return {\n preset: SMOOTH_PRESET,\n reducedMotion: false,\n getTransition: (type) => ({ duration: SMOOTH_PRESET.durations[type] }),\n getSpring: (type) => SMOOTH_PRESET.springs[type],\n };\n }\n return ctx;\n}\n\nexport function useAnimationOptional(): AnimationContextValue | null {\n return useContext(AnimationContext);\n}\n","import { useEffect, useRef, memo } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\nimport { Terminal, ChevronDown, ChevronRight } from 'lucide-react';\nimport { useAnimation } from '../animation';\nimport type { LogEntry, ClassNameSlots, LabelConfig } from '../types';\nimport type { ReactNode } from 'react';\n\nexport interface LogLineProps {\n log: LogEntry;\n compact?: boolean;\n classNames?: ClassNameSlots;\n}\n\nexport const LogLine = memo(function LogLine({ log, compact = false, classNames }: 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 const { reducedMotion } = useAnimation();\n\n return (\n <motion.div\n initial={reducedMotion ? false : { opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: reducedMotion ? 0.1 : 0.3 }}\n className={`flex items-start gap-2 text-foreground/80 ${classNames?.log || ''}`}\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\nexport interface LogContainerProps {\n logs: LogEntry[];\n expanded: boolean;\n onToggle: () => void;\n compact?: boolean;\n classNames?: ClassNameSlots;\n labels?: LabelConfig;\n renderLog?: (log: LogEntry, defaultRender: ReactNode) => ReactNode;\n}\n\nexport const LogContainer = memo(function LogContainer({\n logs,\n expanded,\n onToggle,\n compact = false,\n classNames,\n labels,\n renderLog,\n}: 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 const { reducedMotion } = useAnimation();\n\n const logLabel = compact\n ? (labels?.logLabelCompact ?? 'LOG')\n : (labels?.logLabel ?? 'SYSTEM LOG');\n const entriesSuffix = compact ? '' : (labels?.logEntriesSuffix ?? ' entries');\n\n return (\n <motion.div\n role=\"log\"\n aria-live=\"polite\"\n initial={reducedMotion ? false : { opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: reducedMotion ? 0.1 : 0.4 }}\n className={`${compact ? 'mt-2' : 'mt-3 ml-14'} ${classNames?.logContainer || ''}`}\n >\n <button\n onClick={onToggle}\n aria-expanded={expanded}\n aria-label={`${logLabel} - ${logs.length} entries`}\n className={`flex items-center ${compact ? 'gap-1.5' : 'gap-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={compact ? 'w-2.5 h-2.5' : 'w-3 h-3'} />\n <span>{logLabel} ({logs.length}{entriesSuffix})</span>\n </button>\n\n <AnimatePresence>\n {expanded && (\n <motion.div\n initial={reducedMotion ? false : { height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: reducedMotion ? 0.1 : 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 const defaultLogRender = <LogLine key={log.id} log={log} compact={compact} classNames={classNames} />;\n if (renderLog) {\n return <div key={log.id}>{renderLog(log, defaultLogRender)}</div>;\n }\n return defaultLogRender;\n })}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </motion.div>\n );\n});\n","import { useState, useCallback, memo } from 'react';\nimport { motion } from 'motion/react';\nimport { Check } from 'lucide-react';\nimport { LogContainer } from './LogComponents';\nimport { useAnimation } from '../animation';\nimport type { SubStep, ClassNameSlots } from '../types';\nimport type { ReactNode } from 'react';\n\nexport interface SubStepItemProps {\n substep: SubStep;\n delay: number;\n classNames?: ClassNameSlots;\n renderSubstep?: (substep: SubStep, defaultRender: ReactNode) => ReactNode;\n}\n\nexport const SubStepItem = memo(function SubStepItem({\n substep,\n delay,\n classNames,\n renderSubstep,\n}: SubStepItemProps) {\n const [logsExpanded, setLogsExpanded] = useState(false);\n const handleToggle = useCallback(() => setLogsExpanded(prev => !prev), []);\n const { reducedMotion, preset: animPreset } = useAnimation();\n\n const defaultRender = (\n <motion.div\n role=\"listitem\"\n initial={reducedMotion ? false : { opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay, duration: animPreset.durations.normal }}\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={handleToggle}\n compact\n classNames={classNames}\n />\n </div>\n </div>\n </motion.div>\n );\n\n if (renderSubstep) {\n return <>{renderSubstep(substep, defaultRender)}</>;\n }\n\n return defaultRender;\n});\n","import { FileText, Shield, Users, Stamp } from 'lucide-react';\nimport type { Step } from './types';\n\nexport const DEFAULT_STEPS: Step[] = [\n {\n id: 'verify',\n number: 1,\n title: 'Document Verification',\n status: 'pending',\n icon: FileText,\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 icon: Shield,\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 icon: FileText,\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 icon: Users,\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 icon: Stamp,\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 type { ThemeConfig } from '../types';\n\nexport const DEFAULT_THEME: Required<ThemeConfig> = {\n primary: 'orange',\n secondary: 'cyan',\n success: 'emerald',\n processing: 'purple',\n warning: 'amber',\n};\n","'use client';\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport type { ThemeConfig, ResolvedThemeColors, ResolvedTheme } from '../types';\nimport { DEFAULT_THEME } from '../constants/default-theme';\n\n// ─── Color Resolution ────────────────────────────────────────────────────────\n\n// NOTE: Dynamic Tailwind classes like `bg-${color}-500/5` won't be purged.\n// Users MUST add getThemeSafelist() output to their Tailwind config safelist.\nfunction colorToClasses(color: string): ResolvedThemeColors {\n return {\n bg: `bg-${color}-500/5`,\n border: `border-${color}-500/20`,\n text: `text-${color}-600 dark:text-${color}-400`,\n icon: `bg-gradient-to-br from-${color}-500 to-${color}-600`,\n accent: `text-${color}-500`,\n };\n}\n\nexport function resolveTheme(config: ThemeConfig = {}): ResolvedTheme {\n const merged = { ...DEFAULT_THEME, ...config };\n\n const primary = colorToClasses(merged.primary);\n const secondary = colorToClasses(merged.secondary);\n const success = colorToClasses(merged.success);\n const processing = colorToClasses(merged.processing);\n const warning = colorToClasses(merged.warning);\n\n const stepStatus: ResolvedTheme['stepStatus'] = {\n completed: {\n cardBg: success.bg,\n border: `border-${merged.success}-500/30`,\n iconBg: `bg-gradient-to-br from-${merged.success}-500 to-${merged.success}-600`,\n textColor: success.text,\n },\n active: {\n cardBg: primary.bg,\n border: `border-${merged.primary}-500/30`,\n iconBg: `bg-gradient-to-br from-${merged.primary}-500 to-red-500`,\n textColor: primary.text,\n },\n processing: {\n cardBg: processing.bg,\n border: `border-${merged.processing}-500/30`,\n iconBg: `bg-gradient-to-br from-${merged.processing}-500 to-${merged.processing}-600`,\n textColor: processing.text,\n },\n pending: {\n cardBg: 'bg-muted/20',\n border: 'border-border',\n iconBg: 'bg-muted',\n textColor: 'text-muted-foreground',\n },\n };\n\n const gradients = {\n progress: `bg-gradient-to-r from-${merged.primary}-500 to-red-500`,\n title: `bg-gradient-to-r from-${merged.primary}-500 to-red-500`,\n completion: `bg-gradient-to-r from-${merged.primary}-500 via-red-500 to-${merged.success}-500`,\n };\n\n return { primary, secondary, success, processing, warning, stepStatus, gradients };\n}\n\nexport function getThemeSafelist(config: ThemeConfig = {}): string[] {\n const merged = { ...DEFAULT_THEME, ...config };\n const colors = Object.values(merged);\n const classes: string[] = [];\n\n for (const color of colors) {\n classes.push(\n `bg-${color}-500/5`,\n `bg-${color}-500/10`,\n `bg-${color}-500/20`,\n `border-${color}-500/20`,\n `border-${color}-500/30`,\n `text-${color}-500`,\n `text-${color}-600`,\n `text-${color}-400`,\n `text-${color}-700`,\n `dark:text-${color}-400`,\n `from-${color}-500`,\n `to-${color}-500`,\n `to-${color}-600`,\n `via-${color}-500`,\n `bg-gradient-to-br`,\n `bg-gradient-to-r`,\n );\n }\n\n return [...new Set(classes)];\n}\n\n// ─── React Context ───────────────────────────────────────────────────────────\n\nconst ThemeContext = createContext<ResolvedTheme | null>(null);\n\nexport interface ThemeProviderProps {\n theme?: ThemeConfig;\n children: ReactNode;\n}\n\nexport function ThemeProvider({ theme, children }: ThemeProviderProps) {\n const resolved = useMemo(() => resolveTheme(theme), [theme]);\n return (\n <ThemeContext.Provider value={resolved}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ResolvedTheme {\n const ctx = useContext(ThemeContext);\n if (!ctx) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return ctx;\n}\n\nexport function useThemeOptional(): ResolvedTheme | null {\n return useContext(ThemeContext);\n}\n","import { useEffect, useState, useMemo, memo } 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 { useThemeOptional } from '../theme';\nimport { useAnimation } from '../animation';\nimport type { Step, ClassNameSlots, ThemeConfig, LabelConfig } from '../types';\nimport type { ReactNode } from 'react';\n\nexport interface StepItemProps {\n step: Step;\n isLast: boolean;\n showRipple: boolean;\n classNames?: ClassNameSlots;\n theme?: ThemeConfig;\n labels?: LabelConfig;\n renderStep?: (step: Step, defaultRender: ReactNode) => ReactNode;\n}\n\nexport const StepItem = memo(function StepItem({\n step,\n isLast,\n showRipple,\n classNames,\n theme: _theme,\n labels,\n renderStep,\n}: StepItemProps) {\n const [showSubsteps, setShowSubsteps] = useState(false);\n const [logsExpanded, setLogsExpanded] = useState(false);\n const resolvedTheme = useThemeOptional();\n const { preset: animPreset, reducedMotion } = useAnimation();\n\n useEffect(() => {\n if (step.status === 'processing') {\n setShowSubsteps(true);\n }\n }, [step.status]);\n\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 || STEP_ICON_MAP[step.id] || STEP_ICON_MAP.verify;\n\n const styles = useMemo(() => {\n // Use resolved theme from context if available\n if (resolvedTheme) {\n return resolvedTheme.stepStatus[step.status];\n }\n // Fallback to hardcoded styles for backward compatibility\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 }, [step.status, resolvedTheme]);\n\n const completedCount = useMemo(\n () => step.substeps?.filter(s => s.completed).length || 0,\n [step.substeps]\n );\n const totalCount = useMemo(\n () => step.substeps?.length || 0,\n [step.substeps]\n );\n\n const stepPrefix = labels?.stepPrefix ?? 'STEP_';\n const stepDone = labels?.stepDone ?? '✓ DONE';\n const substepCountLabel = labels?.substepCount\n ? labels.substepCount(completedCount, totalCount)\n : `${completedCount}/${totalCount} substeps`;\n\n const defaultRender = (\n <div className=\"relative\">\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={reducedMotion ? false : { opacity: 0, x: animPreset.entrance.x }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: step.number * animPreset.stagger.step, duration: animPreset.durations.normal }}\n className=\"relative\"\n >\n <div className={`\n relative p-5 rounded-lg transition-all duration-500 border-2\n ${styles.cardBg} ${styles.border} ${classNames?.step || ''}\n `}>\n <div className=\"flex items-start gap-4\">\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} ${classNames?.stepIcon || ''}\n `}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={reducedMotion ? { duration: 0.1 } : { delay: step.number * animPreset.stagger.step + 0.2, ...animPreset.springs.stiff }}\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 {stepPrefix}{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 {stepDone}\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 {substepCountLabel}\n </span>\n )}\n </div>\n\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 role=\"list\" aria-label=\"Substeps\" className={`mt-4 space-y-3 pl-3 border-l-2 border-purple-500/20 ${classNames?.substep || ''}`}>\n {step.substeps.map((substep, idx) => (\n <SubStepItem key={substep.id} substep={substep} delay={idx * 0.15} classNames={classNames} />\n ))}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </div>\n </div>\n\n <LogContainer\n logs={step.logs}\n expanded={logsExpanded}\n onToggle={() => setLogsExpanded(!logsExpanded)}\n classNames={classNames}\n labels={labels}\n />\n\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 * animPreset.stagger.step + 0.4, duration: animPreset.durations.fast }}\n style={{ transformOrigin: 'top' }}\n />\n )}\n </motion.div>\n </div>\n );\n\n if (renderStep) {\n return <>{renderStep(step, defaultRender)}</>;\n }\n\n return defaultRender;\n});\n","import { useEffect, useState, useRef } from 'react';\nimport { motion } from 'motion/react';\nimport { useAnimation } from '../animation';\n\nexport interface DocumentLineProps {\n text: string;\n delay: number;\n className?: string;\n}\n\nexport function DocumentLine({ text, delay, className = '' }: DocumentLineProps) {\n const [displayText, setDisplayText] = useState('');\n const [showCursor, setShowCursor] = useState(true);\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const { reducedMotion, preset: animPreset } = useAnimation();\n\n useEffect(() => {\n // Skip typewriter animation if reduced motion preferred\n if (reducedMotion) {\n setDisplayText(text);\n setShowCursor(false);\n return;\n }\n\n setDisplayText('');\n setShowCursor(true);\n\n const charDelay = animPreset.typewriter.charDelay;\n\n const timer = setTimeout(() => {\n let currentIndex = 0;\n intervalRef.current = setInterval(() => {\n if (currentIndex <= text.length) {\n setDisplayText(text.slice(0, currentIndex));\n currentIndex++;\n } else {\n if (intervalRef.current) clearInterval(intervalRef.current);\n intervalRef.current = null;\n setTimeout(() => setShowCursor(false), 300);\n }\n }, charDelay);\n }, delay * 1000);\n\n return () => {\n clearTimeout(timer);\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n };\n }, [text, delay, reducedMotion, animPreset.typewriter.charDelay]);\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: animPreset.typewriter.cursorBlink / 1000, repeat: Infinity }}\n />\n )}\n </div>\n );\n}\n","import type { DocumentSection } from '../types';\n\n/**\n * Legal sworn affidavit document sections preset.\n * Each section corresponds to a step in the default assembly process,\n * and each subsection is revealed when its trigger substep completes.\n */\nexport const LEGAL_DOCUMENT_SECTIONS: DocumentSection[] = [\n {\n id: 'header',\n title: '',\n borderColor: 'cyan',\n className: 'border-b-2 border-cyan-500/20 pb-6',\n style: { boxShadow: '0 1px 3px rgba(6, 182, 212, 0.1)' },\n subsections: [\n {\n revealOnSubstep: 'v1',\n content: 'SWORN AFFIDAVIT',\n className: 'text-3xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100 text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: 'STATE OF [JURISDICTION]',\n className: 'text-sm tracking-widest text-gray-700 dark:text-gray-300 text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: 'COUNTY OF [COUNTY NAME]',\n className: 'text-sm tracking-widest text-gray-700 dark:text-gray-300 text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v4',\n content: '__CASE_NUMBER__',\n className: 'text-base font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2 text-center',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'affiant',\n title: 'AFFIANT INFORMATION:',\n borderColor: 'cyan',\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 subsections: [\n {\n revealOnSubstep: 'i1',\n content: 'I, [FULL NAME], being duly sworn, depose and state:',\n className: 'text-base leading-relaxed text-gray-800 dark:text-gray-200 mb-4 italic',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i2',\n content: 'Address: [STREET ADDRESS]\\nCity/State: [CITY, STATE ZIP]',\n className: 'space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i3',\n content: 'DOB: [DATE OF BIRTH]',\n className: 'space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i4',\n content: 'ID Verified: ✓ CONFIRMED',\n className: 'text-emerald-600 dark:text-emerald-400 font-bold ml-8 text-sm mt-2',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'statement',\n title: 'STATEMENT OF FACTS:',\n borderColor: 'orange',\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 subsections: [\n {\n revealOnSubstep: 's1',\n content: '1. That I have personal knowledge of the facts stated herein and am competent to testify to the same.',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200 mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's2',\n content: '2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200 mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's3',\n content: '3. That the information provided herein is true and correct to the best of my knowledge and belief.',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200 mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's4',\n content: '4. That I understand the penalties for perjury under law.',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'witness',\n title: 'WITNESS ATTESTATION:',\n borderColor: 'purple',\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 subsections: [\n {\n revealOnSubstep: 'w1',\n content: '',\n className: '',\n animation: 'fade',\n },\n {\n revealOnSubstep: 'w2',\n content: 'Witnessed by: [WITNESS NAME]\\nWitness Address: [ADDRESS]',\n className: 'space-y-2 text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'w4',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-8 pt-6 border-t border-gray-300 dark:border-gray-600',\n animation: 'fade',\n },\n ],\n },\n {\n id: 'notary',\n title: 'NOTARY PUBLIC CERTIFICATION:',\n borderColor: 'emerald',\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 subsections: [\n {\n revealOnSubstep: 'n1',\n content: '__NOTARY_DATE__',\n className: 'leading-relaxed text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'n2',\n content: 'Notary Public: [NOTARY NAME]\\nCommission Number: [NUMBER]\\n__COMMISSION_EXPIRES__',\n className: 'my-4 border-t border-gray-300 dark:border-gray-600 pt-4 text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'n3',\n content: '__NOTARY_SEAL__',\n className: '',\n animation: 'fade',\n },\n {\n revealOnSubstep: 'n4',\n content: '__NOTARY_SIGNATURE__',\n className: 'mt-8 pt-4 text-sm text-gray-700 dark:text-gray-300',\n animation: 'fade',\n },\n ],\n },\n];\n","import { motion, AnimatePresence } from 'motion/react';\nimport { Stamp } from 'lucide-react';\nimport { DocumentLine } from './DocumentLine';\nimport { LEGAL_DOCUMENT_SECTIONS } from '../presets/legal-document-sections';\nimport type { DocumentIds, DocumentSection, ClassNameSlots } from '../types';\nimport { useAnimation } from '../animation';\n\ninterface DocumentPreviewProps {\n completedSections: Set<string>;\n completedSubsteps: Set<string>;\n documentIds: DocumentIds;\n sections?: DocumentSection[];\n classNames?: ClassNameSlots;\n watermarkText?: string;\n paperTexture?: boolean;\n fontFamily?: string;\n renderSection?: (section: DocumentSection, completedSubsteps: Set<string>) => React.ReactNode;\n}\n\nfunction resolveContent(content: string, documentIds: DocumentIds): string {\n return content\n .replace('__CASE_NUMBER__', `CASE NO. ${documentIds.caseNumber}`)\n .replace('__NOTARY_DATE__', `Subscribed and sworn before me this ${new Date().toLocaleDateString()}`)\n .replace('__COMMISSION_EXPIRES__', `My Commission Expires: ${new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toLocaleDateString()}`)\n .replace('__WITNESS_DATE__', new Date().toLocaleDateString());\n}\n\nfunction renderSpecialContent(\n content: string,\n className: string,\n _documentIds: DocumentIds,\n _completedSubsteps: Set<string>,\n delayBase: number\n): React.ReactNode {\n if (content === '__WITNESS_SIGNATURE__') {\n return (\n <div className={className}>\n <motion.div\n initial={{ width: 0 }}\n animate={{ width: '80%' }}\n transition={{ delay: delayBase + 0.3, duration: 0.7 }}\n className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2\"\n />\n <DocumentLine text=\"Witness Signature\" delay={delayBase + 0.5} className=\"text-xs text-gray-500 italic\" />\n <DocumentLine text={`Date: ${new Date().toLocaleDateString()}`} delay={delayBase + 0.7} className=\"mt-4 text-sm\" />\n </div>\n );\n }\n\n if (content === '__NOTARY_SEAL__') {\n return (\n <>\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 <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 );\n }\n\n if (content === '__NOTARY_SIGNATURE__') {\n return (\n <div className={className}>\n <motion.div\n initial={{ width: 0 }}\n animate={{ width: '75%' }}\n transition={{ delay: delayBase + 0.5, duration: 0.7 }}\n className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2\"\n />\n <DocumentLine text=\"Notary Signature\" delay={delayBase + 0.7} className=\"text-xs text-gray-500 italic\" />\n </div>\n );\n }\n\n return null;\n}\n\nfunction SectionRenderer({\n section,\n completedSubsteps,\n documentIds,\n}: {\n section: DocumentSection;\n completedSubsteps: Set<string>;\n documentIds: DocumentIds;\n}) {\n // Check if any subsection in this section should be visible\n const firstTrigger = section.subsections[0]?.revealOnSubstep;\n if (!firstTrigger || !completedSubsteps.has(firstTrigger)) return null;\n\n const { reducedMotion } = useAnimation();\n\n const titleColorMap: Record<string, string> = {\n cyan: 'text-cyan-700 dark:text-cyan-400',\n orange: 'text-orange-700 dark:text-orange-400',\n purple: 'text-purple-700 dark:text-purple-400',\n emerald: 'text-emerald-700 dark:text-emerald-400',\n };\n\n const titleColor = titleColorMap[section.borderColor] || 'text-foreground';\n\n return (\n <AnimatePresence>\n <motion.div\n initial={reducedMotion ? false : { opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: reducedMotion ? 0.1 : 0.8 }}\n className={section.className || ''}\n style={section.style}\n >\n {section.title && (\n <DocumentLine\n text={section.title}\n delay={0.2}\n className={`text-lg font-extrabold tracking-wide ${titleColor} mb-5 uppercase`}\n />\n )}\n\n {section.subsections.map((sub, idx) => {\n if (!completedSubsteps.has(sub.revealOnSubstep)) return null;\n\n const content = typeof sub.content === 'string' ? sub.content : '';\n const delayBase = 0.3 + idx * 0.3;\n\n // Handle special content placeholders\n if (content.startsWith('__') && content.endsWith('__')) {\n const special = renderSpecialContent(content, sub.className || '', documentIds, completedSubsteps, delayBase);\n if (special) return <div key={idx}>{special}</div>;\n }\n\n // Handle multiline content\n const resolved = resolveContent(content, documentIds);\n const lines = resolved.split('\\n');\n\n if (sub.animation === 'typewriter' || !sub.animation) {\n return (\n <motion.div\n key={idx}\n initial={reducedMotion ? false : { opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: reducedMotion ? 0.1 : 0.6 }}\n >\n <div className={sub.className || ''}>\n {lines.map((line, lineIdx) => (\n <DocumentLine\n key={lineIdx}\n text={line}\n delay={delayBase + lineIdx * 0.2}\n className={sub.className?.includes('text-center') ? 'text-center' : ''}\n />\n ))}\n </div>\n </motion.div>\n );\n }\n\n return (\n <motion.div\n key={idx}\n initial={reducedMotion ? false : { opacity: 0, y: 5 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: reducedMotion ? 0.1 : 0.6, delay: reducedMotion ? 0 : delayBase }}\n className={sub.className || ''}\n >\n {lines.map((line, lineIdx) => (\n <div key={lineIdx}>{line}</div>\n ))}\n </motion.div>\n );\n })}\n </motion.div>\n </AnimatePresence>\n );\n}\n\nexport function DocumentPreview({\n completedSubsteps,\n documentIds,\n sections,\n classNames,\n watermarkText = 'OFFICIAL',\n paperTexture = true,\n fontFamily = 'Georgia, \"Times New Roman\", Times, serif',\n renderSection,\n}: DocumentPreviewProps) {\n const activeSections = sections ?? LEGAL_DOCUMENT_SECTIONS;\n\n return (\n <div className={`relative max-w-4xl mx-auto ${classNames?.documentPreview || ''}`}>\n <motion.div\n className={`relative bg-gradient-to-br from-[#FDFDF8] to-[#F8F8F0] dark:from-gray-900 dark:to-gray-800 rounded-lg ${classNames?.documentPaper || ''}`}\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 {paperTexture && (\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\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 {watermarkText}\n </div>\n </div>\n\n <div className=\"relative p-16 space-y-10\" style={{ fontFamily }}>\n {activeSections.map((section) => {\n if (renderSection) {\n return (\n <div key={section.id}>\n {renderSection(section, completedSubsteps)}\n </div>\n );\n }\n return (\n <SectionRenderer\n key={section.id}\n section={section}\n completedSubsteps={completedSubsteps}\n documentIds={documentIds}\n />\n );\n })}\n </div>\n </motion.div>\n </div>\n );\n}\n","import type { DocumentSection } from '../types';\n\n/**\n * Legal sworn affidavit whole document content preset.\n * Used for the completion view when the full assembled document is shown.\n */\nexport const LEGAL_WHOLE_DOCUMENT_SECTIONS: DocumentSection[] = [\n {\n id: 'header',\n title: '',\n borderColor: 'cyan',\n className: 'border-b-2 border-cyan-500/20 pb-6',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: 'SWORN AFFIDAVIT',\n className: 'text-2xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100 text-center',\n },\n {\n revealOnSubstep: 'all',\n content: 'STATE OF [JURISDICTION]',\n className: 'text-xs tracking-widest text-gray-700 dark:text-gray-300 text-center',\n },\n {\n revealOnSubstep: 'all',\n content: 'COUNTY OF [COUNTY NAME]',\n className: 'text-xs tracking-widest text-gray-700 dark:text-gray-300 text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '__CASE_NUMBER__',\n className: 'text-sm font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2 text-center',\n },\n ],\n },\n {\n id: 'affiant',\n title: 'AFFIANT INFORMATION:',\n borderColor: 'cyan',\n className: 'border-l-[6px] border-cyan-500/40 pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: 'I, [FULL NAME], being duly sworn, depose and state:',\n className: 'text-sm leading-relaxed text-gray-800 dark:text-gray-200 mb-3 italic',\n },\n {\n revealOnSubstep: 'all',\n content: 'Address: [STREET ADDRESS]\\nCity/State: [CITY, STATE ZIP]\\nDOB: [DATE OF BIRTH]\\nID Verified: ✓ CONFIRMED',\n className: 'space-y-1 ml-8 text-xs text-gray-700 dark:text-gray-300',\n },\n ],\n },\n {\n id: 'statement',\n title: 'STATEMENT OF FACTS:',\n borderColor: 'orange',\n className: 'border-l-[6px] border-orange-500/40 pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '1. That I have personal knowledge of the facts stated herein and am competent to testify to the same.\\n2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]\\n3. That the information provided herein is true and correct to the best of my knowledge and belief.\\n4. That I understand the penalties for perjury under law.',\n className: 'space-y-3 ml-8 text-sm leading-loose text-gray-800 dark:text-gray-200',\n },\n ],\n },\n {\n id: 'witness',\n title: 'WITNESS ATTESTATION:',\n borderColor: 'purple',\n className: 'border-l-[6px] border-purple-500/40 pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: 'Witnessed by: [WITNESS NAME]\\nWitness Address: [ADDRESS]',\n className: 'space-y-2 text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-6 pt-4 border-t border-gray-300 dark:border-gray-600',\n },\n ],\n },\n {\n id: 'notary',\n title: 'NOTARY PUBLIC CERTIFICATION:',\n borderColor: 'emerald',\n className: 'border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_DATE__',\n className: 'leading-relaxed text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: 'Notary Public: [NOTARY NAME]\\nCommission Number: [NUMBER]\\n__COMMISSION_EXPIRES__',\n className: 'my-3 border-t border-gray-300 dark:border-gray-600 pt-3 space-y-1 text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_SIGNATURE__',\n className: 'mt-6 pt-3 text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_SEAL__',\n className: '',\n },\n ],\n },\n];\n","import { Stamp } from 'lucide-react';\nimport { LEGAL_WHOLE_DOCUMENT_SECTIONS } from '../presets/legal-whole-document';\nimport type { DocumentIds, DocumentSection, ClassNameSlots } from '../types';\n// Theme context available for future use via useThemeOptional from '../theme'\n\ninterface WholeDocumentContentProps {\n documentIds: DocumentIds;\n sections?: DocumentSection[];\n classNames?: ClassNameSlots;\n renderSection?: (section: DocumentSection) => React.ReactNode;\n}\n\nfunction resolveContent(content: string, documentIds: DocumentIds): string {\n return content\n .replace('__CASE_NUMBER__', `CASE NO. ${documentIds.caseNumber}`)\n .replace('__NOTARY_DATE__', `Subscribed and sworn before me this ${new Date().toLocaleDateString()}`)\n .replace('__COMMISSION_EXPIRES__', `My Commission Expires: ${new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toLocaleDateString()}`)\n .replace('__WITNESS_DATE__', new Date().toLocaleDateString());\n}\n\nfunction renderSpecialContent(content: string, className: string): React.ReactNode {\n if (content === '__WITNESS_SIGNATURE__') {\n return (\n <div className={className}>\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 );\n }\n\n if (content === '__NOTARY_SEAL__') {\n return (\n <>\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 <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 </>\n );\n }\n\n if (content === '__NOTARY_SIGNATURE__') {\n return (\n <div className={className}>\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 );\n }\n\n return null;\n}\n\nfunction SectionRenderer({\n section,\n documentIds,\n}: {\n section: DocumentSection;\n documentIds: DocumentIds;\n}) {\n const titleColorMap: Record<string, string> = {\n cyan: 'text-cyan-700 dark:text-cyan-400',\n orange: 'text-orange-700 dark:text-orange-400',\n purple: 'text-purple-700 dark:text-purple-400',\n emerald: 'text-emerald-700 dark:text-emerald-400',\n };\n\n const titleColor = titleColorMap[section.borderColor] || 'text-foreground';\n\n return (\n <div className={section.className || ''} style={section.style}>\n {section.title && (\n <div className={`text-base font-extrabold tracking-wide ${titleColor} mb-4 uppercase`}>\n {section.title}\n </div>\n )}\n\n {section.subsections.map((sub, idx) => {\n const content = typeof sub.content === 'string' ? sub.content : '';\n\n // Handle special content placeholders\n if (content.startsWith('__') && content.endsWith('__')) {\n const special = renderSpecialContent(content, sub.className || '');\n if (special) return <div key={idx}>{special}</div>;\n }\n\n // Handle multiline content\n const resolved = resolveContent(content, documentIds);\n const lines = resolved.split('\\n');\n\n return (\n <div key={idx} className={sub.className || ''}>\n {lines.map((line, lineIdx) => (\n <div key={lineIdx}>{line}</div>\n ))}\n </div>\n );\n })}\n </div>\n );\n}\n\nexport function WholeDocumentContent({\n documentIds,\n sections,\n classNames,\n renderSection,\n}: WholeDocumentContentProps) {\n const activeSections = sections ?? LEGAL_WHOLE_DOCUMENT_SECTIONS;\n\n return (\n <div\n className={`p-12 space-y-8 ${classNames?.wholeDocumentContent || ''}`}\n style={{ fontFamily: 'Georgia, \"Times New Roman\", Times, serif' }}\n >\n {activeSections.map((section) => {\n if (renderSection) {\n return <div key={section.id}>{renderSection(section)}</div>;\n }\n return (\n <SectionRenderer\n key={section.id}\n section={section}\n documentIds={documentIds}\n />\n );\n })}\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, ClassNameSlots, LabelConfig } from '../types';\nimport { useAnimation } from '../animation';\n\ninterface WholeDocumentViewProps {\n show: boolean;\n onClose: () => void;\n documentIds: DocumentIds;\n metrics: DocumentMetrics;\n classNames?: ClassNameSlots;\n labels?: LabelConfig;\n celebrationTitle?: string;\n sparkleCount?: number;\n celebrationEnabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport function WholeDocumentView({\n show,\n onClose,\n documentIds,\n metrics,\n classNames,\n labels,\n celebrationTitle,\n sparkleCount = 12,\n celebrationEnabled = true,\n}: WholeDocumentViewProps) {\n const { reducedMotion } = useAnimation();\n const title = celebrationTitle ?? labels?.completionTitle ?? 'Document Assembly Complete';\n const prefix = labels?.documentPrefix ?? 'LEGAL-';\n const suffix = labels?.documentSuffix ?? '.pdf';\n\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 ${classNames?.wholeDocumentView || ''}`}\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 {celebrationEnabled && (\n <>\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 — skip when reduced motion */}\n {!reducedMotion && [...Array(sparkleCount)].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 / sparkleCount) * Math.PI * 2) * 40}%`,\n y: `${50 + Math.sin((i / sparkleCount) * 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 )}\n\n {/* Header with Title */}\n <motion.div\n initial={reducedMotion ? false : { opacity: 0, y: -30 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: reducedMotion ? 0 : 0.8, duration: reducedMotion ? 0.1 : 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 {title}\n </h2>\n <p className=\"text-sm text-muted-foreground font-mono\">\n {prefix}{documentIds.fileNumber}{suffix} {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={reducedMotion ? { opacity: 0 } : { scale: 1.5, opacity: 0, y: 100 }}\n animate={reducedMotion ? { opacity: 1 } : { scale: 1, opacity: 1, y: 0 }}\n transition={reducedMotion ? { duration: 0.2 } : {\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 <div\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 {/* Glow overlay — GPU-composited via opacity */}\n <motion.div\n className=\"absolute inset-0 rounded-lg pointer-events-none z-10\"\n style={{ boxShadow: '0 0 60px rgba(249, 115, 22, 0.3)' }}\n initial={{ opacity: 0 }}\n animate={{ opacity: [0, 1, 0.7] }}\n transition={{ duration: 2, times: [0, 0.5, 1], delay: 2 }}\n />\n {/* Scrollable content */}\n <div className=\"h-full overflow-y-auto\">\n <WholeDocumentContent documentIds={documentIds} classNames={classNames} />\n </div>\n </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, useCallback } from 'react';\nimport { DEFAULT_STEPS } from '../default-steps';\nimport { DEFAULT_STEP_LOGS, DEFAULT_SUBSTEP_LOGS } from '../constants';\nimport type {\n Step,\n LogEntry,\n DocumentMetrics,\n UseDocumentAssemblyOptions,\n UseDocumentAssemblyReturn,\n} from '../types';\n\nexport function useDocumentAssembly(\n options: UseDocumentAssemblyOptions = {}\n): UseDocumentAssemblyReturn {\n const {\n steps: initialSteps,\n stepLogs: customStepLogs,\n substepLogs: customSubstepLogs,\n autoStart = true,\n autoScroll = true,\n showWholeDocumentView = true,\n documentIds: customDocumentIds,\n animationSpeed = 1,\n animationTimings,\n onStepStart,\n onStepComplete,\n onSubstepComplete,\n onSectionReveal,\n onLogEntry,\n onComplete,\n onPause,\n onResume,\n onReset,\n } = options;\n\n // Deep clone default steps to avoid mutating the shared constant\n const getInitialSteps = useCallback(() => {\n return initialSteps ?? DEFAULT_STEPS.map(s => ({\n ...s,\n logs: [] as LogEntry[],\n substeps: s.substeps?.map(sub => ({ ...sub, logs: [] as LogEntry[], completed: false }))\n }));\n }, [initialSteps]);\n\n const stepLogs = customStepLogs ?? DEFAULT_STEP_LOGS;\n const substepLogs = customSubstepLogs ?? DEFAULT_SUBSTEP_LOGS;\n\n // Resolve animation timings — use preset hookTimings, then user overrides, then defaults\n const timings = {\n stepActivation: animationTimings?.stepActivation ?? 800,\n substepDelay: animationTimings?.substepDelay ?? 500,\n logStreamBase: animationTimings?.logStreamBase ?? 250,\n logStreamVariance: animationTimings?.logStreamVariance ?? 300,\n typewriterSpeed: animationTimings?.typewriterSpeed ?? 25,\n sectionRevealDuration: animationTimings?.sectionRevealDuration ?? 500,\n completionDelay: animationTimings?.completionDelay ?? 400,\n };\n\n const [steps, setSteps] = useState<Step[]>(getInitialSteps);\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 [showWholeDocument, setShowWholeDocument] = useState(false);\n const [isRunning, setIsRunning] = useState(false);\n const [isPaused, setIsPaused] = useState(false);\n\n const documentScrollRef = useRef<HTMLDivElement>(null);\n const mountedRef = useRef(true);\n const pauseRef = useRef(false);\n const runIdRef = useRef(0);\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 = useCallback((ms: number) => {\n return new Promise<void>((resolve, reject) => {\n const checkPause = () => {\n if (!mountedRef.current) {\n reject(new Error('unmounted'));\n return;\n }\n if (pauseRef.current) {\n setTimeout(checkPause, 100);\n return;\n }\n resolve();\n };\n setTimeout(checkPause, ms / animationSpeed);\n });\n }, [animationSpeed]);\n\n const addLog = useCallback((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 if (onLogEntry) onLogEntry(log);\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 }, [onLogEntry]);\n\n const streamLogs = useCallback(async (stepIndex: number, substepId: string | null, logs: string[][]) => {\n for (const [level, message] of logs) {\n await delay(timings.logStreamBase + Math.random() * timings.logStreamVariance);\n if (!mountedRef.current) return;\n addLog(stepIndex, substepId, level as LogEntry['level'], message);\n }\n }, [delay, addLog, timings.logStreamBase, timings.logStreamVariance]);\n\n // Computed values\n const totalSteps = steps.length;\n const completedStepsCount = steps.filter(s => s.status === 'completed').length;\n const progress = totalSteps > 0 ? (completedStepsCount / totalSteps) * 100 : 0;\n const isComplete = completedStepsCount === totalSteps && totalSteps > 0;\n\n // Auto-scroll document\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 return () => clearTimeout(timer);\n }\n }, [completedSubsteps, autoScroll, animationSpeed]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => { mountedRef.current = false; };\n }, []);\n\n const processSteps = useCallback(async (runId: number) => {\n const stepsToProcess = getInitialSteps();\n\n for (let i = 0; i < stepsToProcess.length; i++) {\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n // Fire onStepStart callback\n if (onStepStart) onStepStart(stepsToProcess[i], i);\n\n try { await delay(timings.stepActivation); } catch { return; }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\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[stepsToProcess[i].id];\n if (stepLogData) {\n await streamLogs(i, null, stepLogData);\n }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n // Process substeps\n if (stepsToProcess[i].substeps) {\n try { await delay(timings.substepDelay + 100); } catch { return; }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n setSteps(prev => prev.map((step, idx) =>\n idx === i ? { ...step, status: 'processing' } : step\n ));\n\n for (let j = 0; j < stepsToProcess[i].substeps!.length; j++) {\n if (!mountedRef.current || runIdRef.current !== runId) return;\n const substepId = stepsToProcess[i].substeps![j].id;\n\n try { await delay(timings.substepDelay); } catch { return; }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n const substepLogData = substepLogs[substepId];\n if (substepLogData) {\n await streamLogs(i, substepId, substepLogData);\n }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n try { await delay(timings.completionDelay); } catch { return; }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\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 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 setCompletedSubsteps(prev => new Set([...prev, substepId]));\n\n if (onSubstepComplete) onSubstepComplete(substepId, i);\n\n try { await delay(timings.completionDelay - 100); } catch { return; }\n }\n } else {\n try { await delay(timings.substepDelay + 100); } catch { return; }\n }\n\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n setShowRipple(stepsToProcess[i].id);\n try { await delay(timings.completionDelay / 2); } catch { return; }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n setSteps(prev => prev.map((step, idx) =>\n idx === i ? { ...step, status: 'completed' } : step\n ));\n\n if (stepsToProcess[i].documentSection) {\n try { await delay(timings.sectionRevealDuration); } catch { return; }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n setCompletedSections(prev => {\n const next = new Set([...prev, stepsToProcess[i].documentSection!]);\n if (onSectionReveal) onSectionReveal(stepsToProcess[i].documentSection!);\n return next;\n });\n }\n\n try { await delay(timings.completionDelay); } catch { return; }\n if (!mountedRef.current || runIdRef.current !== runId) return;\n setShowRipple(null);\n\n setMetrics(prev => {\n const updated = {\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 if (onStepComplete) onStepComplete(stepsToProcess[i], updated);\n return updated;\n });\n }\n\n if (!mountedRef.current || runIdRef.current !== runId) return;\n\n if (showWholeDocumentView) {\n setShowWholeDocument(true);\n }\n\n setIsRunning(false);\n\n if (onComplete) {\n setMetrics(prev => {\n onComplete(prev);\n return prev;\n });\n }\n }, [getInitialSteps, stepLogs, substepLogs, delay, streamLogs, showWholeDocumentView, animationTimings, onStepStart, onStepComplete, onSubstepComplete, onSectionReveal, onComplete, timings.stepActivation, timings.substepDelay, timings.completionDelay, timings.sectionRevealDuration]);\n\n const start = useCallback(() => {\n if (isRunning) return;\n const runId = ++runIdRef.current;\n setIsRunning(true);\n setIsPaused(false);\n pauseRef.current = false;\n processSteps(runId);\n }, [isRunning, processSteps]);\n\n const pause = useCallback(() => {\n if (!isRunning || isPaused) return;\n pauseRef.current = true;\n setIsPaused(true);\n if (onPause) onPause();\n }, [isRunning, isPaused, onPause]);\n\n const resume = useCallback(() => {\n if (!isPaused) return;\n pauseRef.current = false;\n setIsPaused(false);\n if (onResume) onResume();\n }, [isPaused, onResume]);\n\n const reset = useCallback(() => {\n runIdRef.current++;\n pauseRef.current = false;\n setSteps(getInitialSteps());\n setCompletedSections(new Set());\n setCompletedSubsteps(new Set());\n setMetrics({ tokens: 0, cost: 0, elapsed: 0 });\n setShowRipple(null);\n setCurrentStep(0);\n setShowWholeDocument(false);\n setIsRunning(false);\n setIsPaused(false);\n if (onReset) onReset();\n }, [getInitialSteps, onReset]);\n\n const goToStep = useCallback((stepIndex: number) => {\n if (stepIndex < 0 || stepIndex >= steps.length) return;\n setCurrentStep(stepIndex);\n }, [steps.length]);\n\n // Auto-start on mount\n useEffect(() => {\n if (autoStart) {\n start();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n steps,\n completedSections,\n completedSubsteps,\n metrics,\n showRipple,\n currentStep,\n showWholeDocument,\n isRunning,\n isPaused,\n isComplete,\n progress,\n documentScrollRef,\n documentIds,\n start,\n pause,\n resume,\n reset,\n goToStep,\n setShowWholeDocument,\n };\n}\n","import type { LabelConfig } from '../types';\n\nexport const DEFAULT_LABELS: Required<LabelConfig> = {\n title: 'Sworn Affidavit Assembly',\n statusProcessing: 'PROCESSING',\n statusComplete: 'COMPLETE',\n documentTitle: 'Assembled Document',\n documentPrefix: 'LEGAL-',\n documentSuffix: '.pdf',\n completionTitle: 'Document Assembly Complete',\n completionBadge: '100% Complete',\n metricsTokens: 'Tokens',\n metricsCost: 'Cost',\n metricsElapsed: 'Elapsed',\n stepPrefix: 'STEP_',\n stepDone: '✓ DONE',\n substepCount: (completed: number, total: number) => `${completed}/${total} substeps`,\n logLabel: 'SYSTEM LOG',\n logLabelCompact: 'LOG',\n logEntriesSuffix: ' entries',\n watermarkText: 'OFFICIAL',\n};\n","import { useState, useEffect } from 'react';\n\ninterface ResponsiveLayout {\n isMobile: boolean;\n isTablet: boolean;\n direction: 'horizontal' | 'vertical';\n}\n\nconst MOBILE_BREAKPOINT = 768;\nconst TABLET_BREAKPOINT = 1024;\n\nfunction getLayout(): ResponsiveLayout {\n if (typeof window === 'undefined') {\n return { isMobile: false, isTablet: false, direction: 'horizontal' };\n }\n const width = window.innerWidth;\n const isMobile = width < MOBILE_BREAKPOINT;\n const isTablet = width >= MOBILE_BREAKPOINT && width < TABLET_BREAKPOINT;\n return {\n isMobile,\n isTablet,\n direction: isMobile ? 'vertical' : 'horizontal',\n };\n}\n\nexport function useResponsiveLayout(): ResponsiveLayout {\n const [layout, setLayout] = useState(getLayout);\n\n useEffect(() => {\n const handleResize = () => setLayout(getLayout());\n\n const mqlMobile = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const mqlTablet = window.matchMedia(`(max-width: ${TABLET_BREAKPOINT - 1}px)`);\n\n const handler = () => handleResize();\n mqlMobile.addEventListener('change', handler);\n mqlTablet.addEventListener('change', handler);\n\n return () => {\n mqlMobile.removeEventListener('change', handler);\n mqlTablet.removeEventListener('change', handler);\n };\n }, []);\n\n return layout;\n}\n","import { forwardRef, useImperativeHandle } 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 { useDocumentAssembly } from '../hooks/useDocumentAssembly';\nimport { DEFAULT_LABELS } from '../constants/default-labels';\nimport { ThemeProvider } from '../theme';\nimport { AnimationProvider } from '../animation';\nimport { useResponsiveLayout } from '../hooks/useResponsiveLayout';\nimport type { BlueprintDocumentAssemblyProps, BlueprintDocumentAssemblyRef } from '../types';\n\nexport const BlueprintDocumentAssembly = forwardRef<\n BlueprintDocumentAssemblyRef,\n BlueprintDocumentAssemblyProps\n>(function BlueprintDocumentAssembly(props, ref) {\n const {\n steps: initialSteps,\n stepLogs,\n substepLogs,\n autoScroll = true,\n showWholeDocumentView = true,\n documentIds: customDocumentIds,\n animationSpeed = 1,\n autoStart = true,\n animationPreset,\n animationTimings,\n onComplete,\n onStepComplete,\n onStepStart,\n onSubstepComplete,\n onSectionReveal,\n onLogEntry,\n onPause,\n onResume,\n onReset,\n className,\n classNames,\n theme,\n labels: userLabels,\n layout,\n documentSections,\n renderStep,\n renderDocumentSection,\n } = props;\n\n const labels = { ...DEFAULT_LABELS, ...userLabels };\n\n const assembly = useDocumentAssembly({\n steps: initialSteps,\n stepLogs,\n substepLogs,\n autoStart,\n autoScroll,\n showWholeDocumentView,\n documentIds: customDocumentIds,\n animationSpeed,\n animationTimings,\n onStepStart,\n onStepComplete,\n onSubstepComplete,\n onSectionReveal,\n onLogEntry,\n onComplete,\n onPause,\n onResume,\n onReset,\n });\n\n const {\n steps,\n completedSections,\n completedSubsteps,\n metrics,\n showRipple,\n currentStep,\n showWholeDocument,\n progress,\n documentIds,\n documentScrollRef,\n start,\n pause,\n resume,\n reset,\n goToStep,\n setShowWholeDocument,\n } = assembly;\n\n const { isMobile, direction } = useResponsiveLayout();\n const effectiveDirection = layout?.direction ?? direction;\n\n // Expose imperative API via ref\n useImperativeHandle(ref, () => ({\n start,\n pause,\n resume,\n reset,\n goToStep,\n }), [start, pause, resume, reset, goToStep]);\n\n const leftWidth = layout?.leftWidth ?? '33.333%';\n const rightWidth = layout?.rightWidth ?? '66.667%';\n\n const content = (\n <div aria-label=\"Document assembly\" className={`relative w-full ${isMobile ? 'min-h-screen' : 'h-screen'} overflow-hidden bg-background flex flex-col ${className ?? ''} ${classNames?.root || ''}`}>\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\n className=\"absolute top-0 left-0 right-0 z-50\"\n role=\"progressbar\"\n aria-valuenow={Math.round(progress)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label=\"Document assembly progress\"\n >\n <motion.div\n className={`h-0.5 bg-gradient-to-r from-orange-500 to-red-500 ${classNames?.progressBar || ''}`}\n initial={{ width: '0%' }}\n animate={{ width: `${progress}%` }}\n transition={{ duration: 0.8, ease: 'easeOut' }}\n />\n </div>\n\n <div className={`relative z-10 flex ${effectiveDirection === 'vertical' ? 'flex-col' : ''} flex-1 overflow-hidden`}>\n {/* Left Side - Assembly Process */}\n <div\n className={`${effectiveDirection === 'vertical' ? 'border-b' : 'border-r'} border-border/50 ${isMobile ? 'p-4' : 'p-8'} overflow-y-auto ${classNames?.leftPanel || ''}`}\n style={effectiveDirection === 'vertical' ? { height: '50%' } : { width: leftWidth }}\n >\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 ${classNames?.header || ''}`}>\n {labels.title}\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 ? labels.statusComplete : labels.statusProcessing}\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 classNames={classNames}\n theme={theme}\n labels={userLabels}\n renderStep={renderStep}\n />\n ))}\n </div>\n </div>\n </div>\n\n {/* Right Side - Document Preview */}\n <div\n className={`bg-gradient-to-br from-muted/20 to-muted/5 overflow-hidden relative ${classNames?.rightPanel || ''}`}\n style={effectiveDirection === 'vertical' ? { height: '50%' } : { width: rightWidth }}\n >\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\">{labels.documentTitle}</h2>\n <p className=\"text-muted-foreground text-xs mt-0.5 font-mono\">\n {labels.documentPrefix}{documentIds.fileNumber}{labels.documentSuffix}\n </p>\n </div>\n </div>\n\n {progress === 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 {labels.completionBadge}\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 as React.RefObject<HTMLDivElement>}>\n <DocumentPreview\n completedSections={completedSections}\n completedSubsteps={completedSubsteps}\n documentIds={documentIds}\n sections={documentSections}\n classNames={classNames}\n watermarkText={labels.watermarkText}\n renderSection={renderDocumentSection}\n />\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 ${classNames?.footer || ''}`}>\n <div className={`flex justify-center items-center gap-6 max-w-5xl mx-auto ${classNames?.metricsBar || ''}`}>\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 ${classNames?.metricsItem || ''}`}>\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\">{labels.metricsTokens}</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 ${classNames?.metricsItem || ''}`}>\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\">{labels.metricsCost}</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 ${classNames?.metricsItem || ''}`}>\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\">{labels.metricsElapsed}</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 classNames={classNames}\n labels={userLabels}\n />\n </div>\n );\n\n // Wrap in providers if configuration provided\n let wrapped = content;\n if (animationPreset) {\n wrapped = <AnimationProvider preset={animationPreset}>{wrapped}</AnimationProvider>;\n }\n if (props.theme) {\n wrapped = <ThemeProvider theme={props.theme}>{wrapped}</ThemeProvider>;\n }\n return wrapped;\n});\n","import type { DocumentSection } from '../types';\n\n/**\n * Generic squiggle text document sections preset.\n * Uses tilde characters (~~~~) to simulate word shapes without real content.\n * Drop-in replacement for LEGAL_DOCUMENT_SECTIONS with same section IDs and substep triggers.\n */\nexport const SQUIGGLE_DOCUMENT_SECTIONS: DocumentSection[] = [\n {\n id: 'header',\n title: '',\n borderColor: 'cyan',\n className: 'border-b-2 border-cyan-500/20 pb-6',\n style: { boxShadow: '0 1px 3px rgba(6, 182, 212, 0.1)' },\n subsections: [\n {\n revealOnSubstep: 'v1',\n content: '~~~~~~~ ~~~~~~~~',\n className: 'text-3xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100 text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: '~~~~~ ~~ ~~~~~~~~~~~~',\n className: 'text-sm tracking-widest text-gray-700 dark:text-gray-300 text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: '~~~~~~ ~~ ~~~~~~ ~~~~',\n className: 'text-sm tracking-widest text-gray-700 dark:text-gray-300 text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v4',\n content: '#### ~~. ~~~~~~~~',\n className: 'text-base font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2 text-center',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'affiant',\n title: '~~~~~~~~ ~~~~~~~~~~~:',\n borderColor: 'cyan',\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 subsections: [\n {\n revealOnSubstep: 'i1',\n content: '~, [~~~~ ~~~~], ~~~~~ ~~~~ ~~~~~, ~~~~~~ ~~~ ~~~~~:',\n className: 'text-base leading-relaxed text-gray-800 dark:text-gray-200 mb-4 italic',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i2',\n content: '~~~~~~~: [~~~~~~ ~~~~~~~]\\n~~~~~/~~~~~: [~~~~, ~~~~~ ~~~]',\n className: 'space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i3',\n content: '~~~: [~~~~ ~~ ~~~~~]',\n className: 'space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i4',\n content: '~~ ~~~~~~~~: ✓ ~~~~~~~~~',\n className: 'text-emerald-600 dark:text-emerald-400 font-bold ml-8 text-sm mt-2',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'statement',\n title: '~~~~~~~~~ ~~ ~~~~~:',\n borderColor: 'orange',\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 subsections: [\n {\n revealOnSubstep: 's1',\n content: '1. ~~~~ ~ ~~~~ ~~~~~~~~ ~~~~~~~~~ ~~ ~~~ ~~~~~ ~~~~~~ ~~~~~~ ~~~ ~~ ~~~~~~~~~ ~~ ~~~~~~~ ~~ ~~~ ~~~~.',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200 mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's2',\n content: '2. ~~~~ ~~ ~~ ~~~~~ [~~~~], ~~~ ~~~~~~~~~ ~~~~~~ ~~~~~~~~: [~~~~~~~~ ~~~~~~~~~ ~~ ~~~~~~~~ ~~~~~]',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200 mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's3',\n content: '3. ~~~~ ~~~ ~~~~~~~~~~~ ~~~~~~~~ ~~~~~~ ~~ ~~~~ ~~~ ~~~~~~~ ~~ ~~~ ~~~~ ~~ ~~ ~~~~~~~~~ ~~~ ~~~~~~.',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200 mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's4',\n content: '4. ~~~~ ~ ~~~~~~~~~~ ~~~ ~~~~~~~~~ ~~~ ~~~~~~~ ~~~~~ ~~~.',\n className: 'ml-8 text-base leading-loose text-gray-800 dark:text-gray-200',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'witness',\n title: '~~~~~~~ ~~~~~~~~~~~:',\n borderColor: 'purple',\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 subsections: [\n {\n revealOnSubstep: 'w1',\n content: '',\n className: '',\n animation: 'fade',\n },\n {\n revealOnSubstep: 'w2',\n content: '~~~~~~~~~ ~~: [~~~~~~~ ~~~~]\\n~~~~~~~ ~~~~~~~: [~~~~~~~]',\n className: 'space-y-2 text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'w4',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-8 pt-6 border-t border-gray-300 dark:border-gray-600',\n animation: 'fade',\n },\n ],\n },\n {\n id: 'notary',\n title: '~~~~~~ ~~~~~~ ~~~~~~~~~~~~~:',\n borderColor: 'emerald',\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 subsections: [\n {\n revealOnSubstep: 'n1',\n content: '__NOTARY_DATE__',\n className: 'leading-relaxed text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'n2',\n content: '~~~~~~ ~~~~~~: [~~~~~~ ~~~~]\\n~~~~~~~~~~ ~~~~~~: [~~~~~~]\\n__COMMISSION_EXPIRES__',\n className: 'my-4 border-t border-gray-300 dark:border-gray-600 pt-4 text-sm text-gray-700 dark:text-gray-300',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'n3',\n content: '__NOTARY_SEAL__',\n className: '',\n animation: 'fade',\n },\n {\n revealOnSubstep: 'n4',\n content: '__NOTARY_SIGNATURE__',\n className: 'mt-8 pt-4 text-sm text-gray-700 dark:text-gray-300',\n animation: 'fade',\n },\n ],\n },\n];\n\n/**\n * Squiggle whole-document sections for completion view.\n * Same structure but uses 'all' for revealOnSubstep triggers and smaller text.\n */\nexport const SQUIGGLE_WHOLE_DOCUMENT_SECTIONS: DocumentSection[] = [\n {\n id: 'header',\n title: '',\n borderColor: 'cyan',\n className: 'border-b-2 border-cyan-500/20 pb-6',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '~~~~~~~ ~~~~~~~~',\n className: 'text-2xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100 text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~ ~~ ~~~~~~~~~~~~',\n className: 'text-xs tracking-widest text-gray-700 dark:text-gray-300 text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~~ ~~ ~~~~~~ ~~~~',\n className: 'text-xs tracking-widest text-gray-700 dark:text-gray-300 text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '#### ~~. ~~~~~~~~',\n className: 'text-sm font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2 text-center',\n },\n ],\n },\n {\n id: 'affiant',\n title: '~~~~~~~~ ~~~~~~~~~~~:',\n borderColor: 'cyan',\n className: 'border-l-[6px] border-cyan-500/40 pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '~, [~~~~ ~~~~], ~~~~~ ~~~~ ~~~~~, ~~~~~~ ~~~ ~~~~~:',\n className: 'text-sm leading-relaxed text-gray-800 dark:text-gray-200 mb-3 italic',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~~~: [~~~~~~ ~~~~~~~]\\n~~~~~/~~~~~: [~~~~, ~~~~~ ~~~]\\n~~~: [~~~~ ~~ ~~~~~]\\n~~ ~~~~~~~~: ✓ ~~~~~~~~~',\n className: 'space-y-1 ml-8 text-xs text-gray-700 dark:text-gray-300',\n },\n ],\n },\n {\n id: 'statement',\n title: '~~~~~~~~~ ~~ ~~~~~:',\n borderColor: 'orange',\n className: 'border-l-[6px] border-orange-500/40 pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '1. ~~~~ ~ ~~~~ ~~~~~~~~ ~~~~~~~~~ ~~ ~~~ ~~~~~ ~~~~~~ ~~~~~~.\\n2. ~~~~ ~~ ~~ ~~~~~ [~~~~], ~~~ ~~~~~~~~~ ~~~~~~ ~~~~~~~~.\\n3. ~~~~ ~~~ ~~~~~~~~~~~ ~~~~~~~~ ~~~~~~ ~~ ~~~~ ~~~ ~~~~~~~.\\n4. ~~~~ ~ ~~~~~~~~~~ ~~~ ~~~~~~~~~ ~~~ ~~~~~~~ ~~~~~ ~~~.',\n className: 'space-y-3 ml-8 text-sm leading-loose text-gray-800 dark:text-gray-200',\n },\n ],\n },\n {\n id: 'witness',\n title: '~~~~~~~ ~~~~~~~~~~~:',\n borderColor: 'purple',\n className: 'border-l-[6px] border-purple-500/40 pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '~~~~~~~~~ ~~: [~~~~~~~ ~~~~]\\n~~~~~~~ ~~~~~~~: [~~~~~~~]',\n className: 'space-y-2 text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-6 pt-4 border-t border-gray-300 dark:border-gray-600',\n },\n ],\n },\n {\n id: 'notary',\n title: '~~~~~~ ~~~~~~ ~~~~~~~~~~~~~:',\n borderColor: 'emerald',\n className: 'border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_DATE__',\n className: 'leading-relaxed text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~~ ~~~~~~: [~~~~~~ ~~~~]\\n~~~~~~~~~~ ~~~~~~: [~~~~~~]\\n__COMMISSION_EXPIRES__',\n className: 'my-3 border-t border-gray-300 dark:border-gray-600 pt-3 space-y-1 text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_SIGNATURE__',\n className: 'mt-6 pt-3 text-xs text-gray-700 dark:text-gray-300',\n },\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_SEAL__',\n className: '',\n },\n ],\n },\n];\n","import { FileText, Shield, Users, Stamp } from 'lucide-react';\nimport type { Step } from '../types';\n\n/**\n * Generic squiggle steps preset.\n * Same IDs and structure as DEFAULT_STEPS but with generic labels.\n * Pair with SQUIGGLE_DOCUMENT_SECTIONS for a fully generic demo.\n */\nexport const SQUIGGLE_STEPS: Step[] = [\n {\n id: 'verify',\n number: 1,\n title: 'Document Verification',\n status: 'pending',\n icon: FileText,\n substeps: [\n { id: 'v1', label: '~~~~~~~~ ~~~~~~~~ ~~~~~~~~', completed: false, logs: [] },\n { id: 'v2', label: '~~~~~ ~~~~~ ~~~~~~~~~~~~', completed: false, logs: [] },\n { id: 'v3', label: '~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~', completed: false, logs: [] },\n { id: 'v4', label: '~~~~~~~~ ~~~~~~~~ ~~~~~~~~', 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 icon: Shield,\n substeps: [\n { id: 'i1', label: '~~~~~~~ ~~~~~~~~~~ ~~~~~', completed: false, logs: [] },\n { id: 'i2', label: '~~~~~~ ~~~~~~~~~ ~~~~', completed: false, logs: [] },\n { id: 'i3', label: '~~~~~-~~~~~~~~~ ~~~~~~~~~', completed: false, logs: [] },\n { id: 'i4', label: '~~~~~~~ ~~~~~~~~ ~~~~~', completed: false, logs: [] },\n ],\n documentSection: 'affiant',\n logs: [],\n },\n {\n id: 'statement',\n number: 3,\n title: 'Content Processing',\n status: 'pending',\n icon: FileText,\n substeps: [\n { id: 's1', label: '~~~~~ ~~~~~~~~~ ~~~~~~~', completed: false, logs: [] },\n { id: 's2', label: '~~~~~~ ~~~~~~~ ~~~~~~~~', completed: false, logs: [] },\n { id: 's3', label: '~~~~~~ ~~~~~ ~~~~~~~~', completed: false, logs: [] },\n { id: 's4', label: '~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~', completed: false, logs: [] },\n ],\n documentSection: 'statement',\n logs: [],\n },\n {\n id: 'witness',\n number: 4,\n title: 'Authorization Review',\n status: 'pending',\n icon: Users,\n substeps: [\n { id: 'w1', label: '~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~', completed: false, logs: [] },\n { id: 'w2', label: '~~~~~ ~~~~~~~~~~ ~~~~~~~~', completed: false, logs: [] },\n { id: 'w3', label: '~~~~~~~~ ~~~~~~~~~~~ ~~~~~', completed: false, logs: [] },\n { id: 'w4', label: '~~~~~~ ~~~~~~~ ~~~~~~~~~~~', completed: false, logs: [] },\n ],\n documentSection: 'witness',\n logs: [],\n },\n {\n id: 'notary',\n number: 5,\n title: 'Final Certification',\n status: 'pending',\n icon: Stamp,\n substeps: [\n { id: 'n1', label: '~~~~~~~ ~~ ~~~~~~~~ ~~~~~~~~', completed: false, logs: [] },\n { id: 'n2', label: '~~~~~~~~ ~~~~~~~~~~ ~~~~~~', completed: false, logs: [] },\n { id: 'n3', label: '~~~~~~~~ ~~~~~~~~~~~~~ ~~~~', completed: false, logs: [] },\n { id: 'n4', label: '~~~~~ ~~~~~~~ ~~~~~~~~~', completed: false, logs: [] },\n ],\n documentSection: 'notary',\n logs: [],\n },\n];\n\n/**\n * Squiggle step-level logs. Uses same step IDs as SQUIGGLE_STEPS.\n */\nexport const SQUIGGLE_STEP_LOGS: Record<string, string[][]> = {\n verify: [\n ['info', '~~~~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~...'],\n ['processing', '~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~ ~~.~.~'],\n ['success', '~~~~~~~~~ ~~~~~~ ~~~~~~~~~~~~'],\n ],\n identity: [\n ['info', '~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~'],\n ['processing', '~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~'],\n ['success', '~~~~~~~~~~ ~~~~~~~~~~~'],\n ],\n statement: [\n ['info', '~~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~'],\n ['processing', '~~~~~~~ ~~~ ~~~~~~ ~~~ ~~~~~ ~~~~~~~~'],\n ['success', '~~~~~~ ~~~~~~ ~~~~~~~~~~~~'],\n ],\n witness: [\n ['info', '~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~'],\n ['processing', '~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~'],\n ['success', '~~~~~~~ ~~~~~~~~~~~'],\n ],\n notary: [\n ['info', '~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~'],\n ['processing', '~~~~~~~~~ ~~~~~~ ~~~~~~~~~~'],\n ['success', '~~~~~ ~~~ ~~~~~~~~~~~~~'],\n ],\n};\n\n/**\n * Squiggle substep-level logs. Uses same substep IDs as SQUIGGLE_STEPS.\n */\nexport const SQUIGGLE_SUBSTEP_LOGS: Record<string, string[][]> = {\n v1: [\n ['info', '~~~~~~~ ~~~~~~~~ ~~~~~~~~...'],\n ['processing', '~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~'],\n ['info', '~~~~~~~~ ~~~~~~~~ ~~~~~~~'],\n ['success', '~~~~~~~~ ~~~~~~~~~: ~~~~~~_~~~~~~~~_~~~ ~~.~'],\n ],\n v2: [\n ['info', '~~~~~~~~ ~~~~~ ~~~~~~~~~~~~ ~~~~~~~~...'],\n ['processing', '~~~~~-~~~~~~~~~~~ ~~~~~ ~~~~~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~'],\n ['success', '~~~~~ ~~~~~~~~~~~~ ~~~~~~~~'],\n ],\n v3: [\n ['info', '~~~~~~~~~~~ ~~~~~~~~~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~-~~~~~~~~ ~~~~~~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~~'],\n ['success', '~~~~~~~~~~~~ ~~~~~~~~~~: ~~~~~~~~~'],\n ],\n v4: [\n ['info', '~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~~ ~~~~~~~~ ~~'],\n ['info', '~~~~~~~~~ ~~~~ ~~~~~~'],\n ['success', '~~~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~~'],\n ],\n i1: [\n ['info', '~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~~~...'],\n ['processing', '~~~~~~~~~~ ~~ ~~~~~~~~ ~~~'],\n ['info', '~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~'],\n ['success', '~~~~~~~~~~~ ~~~~~~~~~~~~~'],\n ],\n i2: [\n ['info', '~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~~...'],\n ['processing', '~~~~~~~ ~~~~~~ ~~~~~~~~~~~ ~~~~'],\n ['info', '~~~~~~~~~ ~~~~~~~~~ ~~~~~~~'],\n ['success', '~~~~~~~~~ ~~~~ ~~~~~~~~: ~~.~% ~~~~~'],\n ],\n i3: [\n ['info', '~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~...'],\n ['processing', '~~~~~-~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~ ~~~~~~~~ ~~~~~~~'],\n ['success', '~~~~~~~~ ~~~~~-~~~~~~~~~ ~~~~~~~~'],\n ],\n i4: [\n ['info', '~~~~~~~~~~ ~~~~~~~~ ~~~~~...'],\n ['processing', '~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~ ~~~~~~~~~~'],\n ['success', '~~~~~~~~ ~~~~~~~~~: ~~~~~~~~'],\n ],\n s1: [\n ['info', '~~~~~~~ ~~~~~~~~~ ~~~~~~~...'],\n ['processing', '~~~~~~~~~~ ~~~~~ ~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~'],\n ['success', '~~~~~~~ ~~~~~~: ~~~ ~~~~~~'],\n ],\n s2: [\n ['info', '~~~~~~~~~ ~~~~~~~ ~~~~~~~~...'],\n ['processing', '~~~~~~~ ~~~~-~~~~~~~~ ~~~~~~~~~~'],\n ['info', '~~~~~-~~~~~~~~~~~ ~~~~ ~~~~~~~~~ ~~~~'],\n ['success', '~~~~~~~~ ~~~~~~~~: ~~.~% ~~~~~~~~~~'],\n ],\n s3: [\n ['info', '~~~~~~~~~~ ~~~~~ ~~~~~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~ ~~~~~~~~~~~ ~~~~~~~~~'],\n ['info', '~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~ ~~~~~~~~~~~~'],\n ['success', '~~~~~ ~~~~~~ ~~~~~~~ ~~~~~~~~~~~~'],\n ],\n s4: [\n ['info', '~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~'],\n ['info', '~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~'],\n ['success', '~~~~~~~~~~ ~~~~~~~~~: ~ ~~~~~~~~'],\n ],\n w1: [\n ['info', '~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~...'],\n ['processing', '~~~~~~~~~ ~~~ ~~~~~~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~~ ~~~~~~~~'],\n ['success', '~~~~~~~ ~~~~~~~~~~~: ~~~~~~~~~'],\n ],\n w2: [\n ['info', '~~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~'],\n ['info', '~~~~~~~~~ ~~~~~~~ ~~~~~~~~~ ~~~~~~~~~'],\n ['success', '~~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~~'],\n ],\n w3: [\n ['info', '~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~'],\n ['success', '~~~~~~~~~~~ ~~~~~ ~~~~~~~~~'],\n ],\n w4: [\n ['info', '~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~...'],\n ['processing', '~~~~~~~ ~~~~~~~ ~~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~'],\n ['success', '~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~'],\n ],\n n1: [\n ['info', '~~~~~~~~~~ ~~ ~~~~~~ ~~~~~~ ~~~~~~~~...'],\n ['processing', '~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~'],\n ['info', '~~~~~~~~~~~~~~ ~~~~~~~~ ~~~~~~'],\n ['success', '~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~~'],\n ],\n n2: [\n ['info', '~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~~~~~~ ~~~~~~'],\n ['info', '~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~'],\n ['success', '~~~~~~~~~~ ~~~~~~: ~~~~~~'],\n ],\n n3: [\n ['info', '~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~...'],\n ['processing', '~~~~~~~~ ~~~~~~~ ~~~~~~~~~'],\n ['info', '~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~'],\n ['success', '~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~'],\n ],\n n4: [\n ['info', '~~~~~~~~ ~~~~~~~ ~~~~~~~~~...'],\n ['processing', '~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~'],\n ['info', '~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~'],\n ['success', '~~~~~~~~~~~~~ ~~~~~~~~ - ~~~~~~~~ ~~~~~~'],\n ],\n};\n","import type { Step, SubStep, DocumentSection } from '../types';\n\nlet stepCounter = 0;\n\n/**\n * Create a Step with sensible defaults.\n * Auto-increments `number` if not provided.\n */\nexport function createStep(partial: Partial<Step> & Pick<Step, 'id' | 'title'>): Step {\n stepCounter++;\n return {\n number: stepCounter,\n status: 'pending',\n logs: [],\n substeps: [],\n ...partial,\n };\n}\n\n/**\n * Create a SubStep with sensible defaults.\n */\nexport function createSubStep(partial: Partial<SubStep> & Pick<SubStep, 'id' | 'label'>): SubStep {\n return {\n completed: false,\n logs: [],\n ...partial,\n };\n}\n\n/**\n * Create a DocumentSection with sensible defaults.\n */\nexport function createDocumentSection(\n partial: Partial<DocumentSection> & Pick<DocumentSection, 'id' | 'title' | 'borderColor'>\n): DocumentSection {\n return {\n subsections: [],\n ...partial,\n };\n}\n\n/**\n * Reset the auto-incrementing step counter.\n * Useful when creating multiple independent step sequences.\n */\nexport function resetStepCounter(): void {\n stepCounter = 0;\n}\n"]}
|