@chrisflippen/blueprint-document-assembly 3.1.1 → 3.3.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 +288 -38
- package/dist/index.d.mts +136 -13
- package/dist/index.d.ts +136 -13
- package/dist/index.js +22 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +22 -30
- 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/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/utils/content-resolvers.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","cursorTimeoutRef","charDelay","currentIndex","styleId","style","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","closeButtonRef","contentRef","focusTimer","handleKeyDown","focusableElements","firstEl","lastEl","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'} focus-visible:ring-2 focus-visible:ring-orange-500 focus-visible:ring-offset-2 focus-visible:outline-none 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 type React from 'react';\nimport { 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, React.ComponentType<{ className?: string }>> = {\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 { 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 cursorTimeoutRef = useRef<ReturnType<typeof setTimeout> | 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 cursorTimeoutRef.current = 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 if (cursorTimeoutRef.current) {\n clearTimeout(cursorTimeoutRef.current);\n cursorTimeoutRef.current = null;\n }\n };\n }, [text, delay, reducedMotion, animPreset.typewriter.charDelay]);\n\n // Inject blink keyframes once\n useEffect(() => {\n const styleId = 'bda-blink-keyframes';\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `@keyframes bda-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }`;\n document.head.appendChild(style);\n }\n }, []);\n\n return (\n <div className={`${className} font-serif`} style={{ lineHeight: '1.8' }} aria-busy={displayText.length < text.length}>\n {displayText}\n {showCursor && (\n <span\n className=\"inline-block w-0.5 h-4 bg-cyan-500 ml-1\"\n style={{\n animation: `bda-blink ${animPreset.typewriter.cursorBlink}ms step-end infinite`,\n }}\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 type { DocumentIds } from '../types';\n\n/**\n * Resolve dynamic content placeholders in document text.\n */\nexport function 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","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';\nimport { resolveContent } from '../utils/content-resolvers';\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 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 className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-4/5\"\n initial={{ scaleX: 0 }}\n animate={{ scaleX: 1 }}\n transition={{ delay: delayBase + 0.3, duration: 0.7 }}\n style={{ transformOrigin: 'left' }}\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 className=\"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-3/4\"\n initial={{ scaleX: 0 }}\n animate={{ scaleX: 1 }}\n transition={{ delay: delayBase + 0.5, duration: 0.7 }}\n style={{ transformOrigin: 'left' }}\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';\nimport { resolveContent } from '../utils/content-resolvers';\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 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 { useEffect, useRef } from 'react';\nimport { 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 closeButtonRef = useRef<HTMLButtonElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n // Focus trap: keep focus within modal when show=true\n useEffect(() => {\n if (!show) return;\n\n // Auto-focus close button when modal opens (with delay to let animation start)\n const focusTimer = setTimeout(() => {\n closeButtonRef.current?.focus();\n }, 100);\n\n return () => clearTimeout(focusTimer);\n }, [show]);\n\n // Escape key handler\n useEffect(() => {\n if (!show) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose();\n return;\n }\n\n // Focus trap: cycle between close button and scrollable content\n if (e.key === 'Tab') {\n const focusableElements = [closeButtonRef.current, contentRef.current].filter(Boolean) as HTMLElement[];\n if (focusableElements.length === 0) return;\n\n const firstEl = focusableElements[0];\n const lastEl = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstEl) {\n e.preventDefault();\n lastEl.focus();\n }\n } else {\n if (document.activeElement === lastEl) {\n e.preventDefault();\n firstEl.focus();\n }\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [show, onClose]);\n\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 role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\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 ref={closeButtonRef}\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 aria-label=\"Close document view\"\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 focus-visible:ring-2 focus-visible:ring-orange-500 focus-visible:ring-offset-2 focus-visible:outline-none\"\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 ref={contentRef} tabIndex={0} className=\"h-full overflow-y-auto focus-visible:outline-none\">\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, useMemo } 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 = useMemo(() => ({\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 animationTimings?.stepActivation,\n animationTimings?.substepDelay,\n animationTimings?.logStreamBase,\n animationTimings?.logStreamVariance,\n animationTimings?.typewriterSpeed,\n animationTimings?.sectionRevealDuration,\n animationTimings?.completionDelay,\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"]}
|
|
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/css-vars.ts","../src/theme/ThemeContext.tsx","../src/components/StepItem.tsx","../src/utils/inject-style.ts","../src/components/DocumentLine.tsx","../src/presets/legal-document-sections.ts","../src/utils/content-resolvers.ts","../src/components/DocumentPreview.tsx","../src/presets/legal-whole-document.ts","../src/components/WholeDocumentContent.tsx","../src/components/WholeDocumentView.tsx","../src/components/ErrorBoundary.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","TAILWIND_COLOR_MAP","resolveColorValue","input","colorMix","color","percent","mixWith","buildCssVars","theme","primary","accent","secondary","success","processing","warning","resolveColors","colorInput","resolveTheme","merged","accentColor","stepStatus","gradients","cssVars","getThemeSafelist","_config","ThemeContext","ThemeProvider","resolved","useTheme","useThemeOptional","StepItem","step","isLast","showRipple","_theme","renderStep","showSubsteps","setShowSubsteps","resolvedTheme","timer","Icon","styles","completedCount","s","totalCount","stepPrefix","stepDone","substepCountLabel","AlertCircle","Loader2","idx","injectStyle","id","css","style","DocumentLine","text","className","displayText","setDisplayText","showCursor","setShowCursor","intervalRef","cursorTimeoutRef","charDelay","currentIndex","LEGAL_DOCUMENT_SECTIONS","resolveContent","content","documentIds","renderSpecialContent","_documentIds","_completedSubsteps","delayBase","SectionRenderer","section","completedSubsteps","firstTrigger","BORDER_COLOR_TO_VAR","titleColor","sectionColorVar","sectionStyle","sub","special","lines","line","lineIdx","DocumentPreview","sections","watermarkText","paperTexture","fontFamily","renderSection","activeSections","LEGAL_WHOLE_DOCUMENT_SECTIONS","WholeDocumentContent","contentRef","WholeDocumentView","show","onClose","metrics","celebrationTitle","sparkleCount","celebrationEnabled","portalTarget","externalContentRef","closeButtonRef","focusTimer","handleKeyDown","focusableElements","firstEl","lastEl","title","prefix","suffix","overlay","X","_","i","Sparkles","createPortal","ErrorBoundary","Component","props","__publicField","error","errorInfo","fallback","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","externalMode","onError","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","updateStep","update","completeStep","completed","completeSubstepFn","setStepErrorFn","retryStep","updateMetricsFn","getSnapshot","restoreSnapshot","snapshot","DEFAULT_LABELS","total","MOBILE_BREAKPOINT","TABLET_BREAKPOINT","getLayout","width","isMobile","isTablet","useResponsiveLayout","layout","setLayout","handleResize","mqlMobile","mqlTablet","BlueprintDocumentAssembly","forwardRef","ref","animationPreset","userLabels","documentSections","renderDocumentSection","visibility","renderSlots","errorFallback","onRenderError","assembly","updateMetrics","completeSubstep","setStepError","direction","effectiveDirection","documentContentRef","wholeDocumentContentRef","vis","resolvedPortalTarget","useImperativeHandle","leftWidth","rightWidth","rootStyle","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":["'use client';\n\nimport { 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","'use client';\n\nimport { 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: 'var(--bda-secondary)', symbol: '→' },\n success: { color: 'var(--bda-success)', symbol: '✓' },\n warning: { color: 'var(--bda-warning)', symbol: '⚠' },\n processing: { color: 'var(--bda-processing)', 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 ${classNames?.log || ''}`}\n style={{ color: 'color-mix(in srgb, var(--bda-fg) 80%, transparent)' }}\n >\n {!compact && (\n <span className=\"text-[10px]\" style={{ color: 'var(--bda-muted-fg)' }}>{log.timestamp}</span>\n )}\n <span className=\"font-bold\" style={{ color: config.color }}>{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 transition-colors ${compact ? '' : 'px-2 py-1 rounded'} focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none rounded`}\n style={{ color: 'var(--bda-muted-fg)', '--tw-ring-color': 'var(--bda-primary)' } as React.CSSProperties}\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={`rounded-md p-2 font-mono text-xs ${compact ? 'max-h-24' : 'max-h-32'} overflow-y-auto space-y-1 mt-2`}\n style={{ background: 'var(--bda-bg)', border: '1px solid color-mix(in srgb, var(--bda-border) 50%, transparent)' }}\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","'use client';\n\nimport { 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=\"w-4 h-4 mt-0.5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-all duration-500\"\n style={substep.completed\n ? { background: 'var(--bda-success)', borderColor: 'var(--bda-success)' }\n : { borderColor: 'var(--bda-border)', background: 'var(--bda-bg)' }\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=\"text-sm font-mono transition-colors duration-500\"\n style={{ color: substep.completed ? 'var(--bda-fg)' : 'var(--bda-muted-fg)' }}>\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 type React from 'react';\nimport { 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, React.ComponentType<{ className?: string }>> = {\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: '#f97316',\n accent: '#ef4444',\n secondary: '#06b6d4',\n success: '#10b981',\n processing: '#8b5cf6',\n warning: '#f59e0b',\n};\n","import type { ThemeConfig } from '../types';\n\n// Map common Tailwind color names to their 500-level hex values\nexport const TAILWIND_COLOR_MAP: Record<string, string> = {\n orange: '#f97316',\n red: '#ef4444',\n amber: '#f59e0b',\n yellow: '#eab308',\n lime: '#84cc16',\n green: '#22c55e',\n emerald: '#10b981',\n teal: '#14b8a6',\n cyan: '#06b6d4',\n sky: '#0ea5e9',\n blue: '#3b82f6',\n indigo: '#6366f1',\n violet: '#8b5cf6',\n purple: '#a855f7',\n fuchsia: '#d946ef',\n pink: '#ec4899',\n rose: '#f43f5e',\n slate: '#64748b',\n gray: '#6b7280',\n zinc: '#71717a',\n neutral: '#737373',\n stone: '#78716c',\n};\n\n/** Resolve a color value: if it's a Tailwind name, return the hex; otherwise pass through */\nexport function resolveColorValue(input: string): string {\n return TAILWIND_COLOR_MAP[input] ?? input;\n}\n\n/** Generate a CSS color-mix() expression for tinting/opacity effects */\nexport function colorMix(color: string, percent: number, mixWith = 'transparent'): string {\n return `color-mix(in srgb, ${color} ${percent}%, ${mixWith})`;\n}\n\n/** Build the full --bda-* CSS variable map from a resolved theme config */\nexport function buildCssVars(theme: Required<ThemeConfig>): Record<string, string> {\n const primary = resolveColorValue(theme.primary);\n const accent = resolveColorValue(theme.accent);\n const secondary = resolveColorValue(theme.secondary);\n const success = resolveColorValue(theme.success);\n const processing = resolveColorValue(theme.processing);\n const warning = resolveColorValue(theme.warning);\n\n return {\n '--bda-primary': primary,\n '--bda-accent': accent,\n '--bda-success': success,\n '--bda-processing': processing,\n '--bda-secondary': secondary,\n '--bda-warning': warning,\n '--bda-bg': 'var(--background, #ffffff)',\n '--bda-fg': 'var(--foreground, #0a0a0a)',\n '--bda-muted': 'var(--muted, #f4f4f5)',\n '--bda-muted-fg': 'var(--muted-foreground, #71717a)',\n '--bda-border': 'var(--border, #e4e4e7)',\n };\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';\nimport { resolveColorValue, colorMix, buildCssVars } from './css-vars';\n\n// ─── Color Resolution ────────────────────────────────────────────────────────\n\nfunction resolveColors(colorInput: string): ResolvedThemeColors {\n const color = resolveColorValue(colorInput);\n return {\n color,\n mutedBg: colorMix(color, 5),\n border: colorMix(color, 20),\n };\n}\n\nexport function resolveTheme(config: ThemeConfig = {}): ResolvedTheme {\n const merged = { ...DEFAULT_THEME, ...config } as Required<ThemeConfig>;\n\n const primary = resolveColors(merged.primary);\n const secondary = resolveColors(merged.secondary);\n const success = resolveColors(merged.success);\n const processing = resolveColors(merged.processing);\n const warning = resolveColors(merged.warning);\n\n const accentColor = resolveColorValue(merged.accent);\n\n const stepStatus: ResolvedTheme['stepStatus'] = {\n completed: {\n color: success.color,\n mutedBg: success.mutedBg,\n border: colorMix(success.color, 30),\n iconGradient: `linear-gradient(to bottom right, ${success.color}, ${colorMix(success.color, 80, '#000')})`,\n },\n active: {\n color: primary.color,\n mutedBg: primary.mutedBg,\n border: colorMix(primary.color, 30),\n iconGradient: `linear-gradient(to bottom right, ${primary.color}, ${accentColor})`,\n },\n processing: {\n color: processing.color,\n mutedBg: processing.mutedBg,\n border: colorMix(processing.color, 30),\n iconGradient: `linear-gradient(to bottom right, ${processing.color}, ${colorMix(processing.color, 80, '#000')})`,\n },\n pending: {\n color: 'var(--bda-muted-fg)',\n mutedBg: 'color-mix(in srgb, var(--bda-muted) 20%, transparent)',\n border: 'var(--bda-border)',\n iconGradient: 'none',\n },\n error: {\n color: warning.color,\n mutedBg: warning.mutedBg,\n border: colorMix(warning.color, 30),\n iconGradient: `linear-gradient(to bottom right, ${warning.color}, ${colorMix(warning.color, 80, '#000')})`,\n },\n };\n\n const gradients = {\n progress: `linear-gradient(to right, ${primary.color}, ${accentColor})`,\n title: `linear-gradient(to right, ${primary.color}, ${accentColor})`,\n completion: `linear-gradient(to right, ${primary.color}, ${accentColor}, ${success.color})`,\n };\n\n const cssVars = buildCssVars(merged);\n\n return { primary, secondary, success, processing, warning, stepStatus, gradients, cssVars };\n}\n\n/**\n * @deprecated No longer needed — CSS variables replace the Tailwind safelist.\n * Will be removed in v4.0.0.\n */\nexport function getThemeSafelist(_config?: ThemeConfig): string[] {\n if (typeof console !== 'undefined') {\n console.warn(\n '[blueprint-document-assembly] getThemeSafelist() is deprecated and returns an empty array. ' +\n 'CSS variables are now used instead of dynamic Tailwind classes. Safe to remove this call.'\n );\n }\n return [];\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","'use client';\n\nimport { useEffect, useState, useMemo, memo } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\nimport { Check, Loader2, AlertCircle } 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 { colorMix } from '../theme/css-vars';\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 if (resolvedTheme) {\n return resolvedTheme.stepStatus[step.status];\n }\n // Fallback when no ThemeProvider\n switch (step.status) {\n case 'completed':\n return {\n color: 'var(--bda-success, #10b981)',\n mutedBg: colorMix('var(--bda-success, #10b981)', 5),\n border: colorMix('var(--bda-success, #10b981)', 30),\n iconGradient: 'linear-gradient(to bottom right, var(--bda-success, #10b981), #059669)',\n };\n case 'active':\n return {\n color: 'var(--bda-primary, #f97316)',\n mutedBg: colorMix('var(--bda-primary, #f97316)', 5),\n border: colorMix('var(--bda-primary, #f97316)', 30),\n iconGradient: 'linear-gradient(to bottom right, var(--bda-primary, #f97316), var(--bda-accent, #ef4444))',\n };\n case 'processing':\n return {\n color: 'var(--bda-processing, #8b5cf6)',\n mutedBg: colorMix('var(--bda-processing, #8b5cf6)', 5),\n border: colorMix('var(--bda-processing, #8b5cf6)', 30),\n iconGradient: 'linear-gradient(to bottom right, var(--bda-processing, #8b5cf6), #7c3aed)',\n };\n case 'error':\n return {\n color: 'var(--bda-warning, #f59e0b)',\n mutedBg: colorMix('var(--bda-warning, #f59e0b)', 5),\n border: colorMix('var(--bda-warning, #f59e0b)', 30),\n iconGradient: 'linear-gradient(to bottom right, var(--bda-warning, #f59e0b), #d97706)',\n };\n default:\n return {\n color: 'var(--bda-muted-fg, #71717a)',\n mutedBg: 'color-mix(in srgb, var(--bda-muted, #f4f4f5) 20%, transparent)',\n border: 'var(--bda-border, #e4e4e7)',\n iconGradient: 'none',\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\"\n style={{ background: colorMix('var(--bda-success)', 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={`relative p-5 rounded-lg transition-all duration-500 border-2 ${classNames?.step || ''}`}\n style={{ background: styles.mutedBg, borderColor: styles.border }}>\n <div className=\"flex items-start gap-4\">\n <motion.div\n className={`w-11 h-11 rounded-full flex items-center justify-center flex-shrink-0 border-2 transition-all duration-500 ${classNames?.stepIcon || ''}`}\n style={{ background: styles.iconGradient, borderColor: 'transparent' }}\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 === 'error' ? (\n <AlertCircle 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 font-semibold\" style={{ color: 'var(--bda-muted-fg)' }}>{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\" style={{ color: styles.color }}>\n {step.title}\n </h3>\n <div className=\"flex items-center gap-2 mt-1\">\n <p className=\"text-xs font-mono\" style={{ color: 'var(--bda-muted-fg)' }}>\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 font-mono\" style={{ background: colorMix('var(--bda-success)', 10), color: 'var(--bda-success)', border: `1px solid ${colorMix('var(--bda-success)', 20)}` }}>\n {stepDone}\n </span>\n )}\n {step.status === 'completed' && step.substeps && (\n <span className=\"text-[10px] px-2 py-0.5 rounded-full font-mono\" style={{ background: colorMix('var(--bda-success)', 10), color: 'var(--bda-success)' }}>\n {substepCountLabel}\n </span>\n )}\n {step.status === 'error' && (\n <span className=\"text-[10px] px-2 py-0.5 rounded-full font-mono\" style={{ background: colorMix('var(--bda-warning)', 10), color: 'var(--bda-warning)', border: `1px solid ${colorMix('var(--bda-warning)', 20)}` }}>\n ERROR\n </span>\n )}\n </div>\n {step.status === 'error' && step.errorMessage && (\n <p className=\"text-xs mt-1.5 font-mono\" style={{ color: 'var(--bda-warning)' }}>\n {step.errorMessage}\n </p>\n )}\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 ${classNames?.substep || ''}`} style={{ borderColor: colorMix('var(--bda-processing)', 20) }}>\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\"\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', backgroundColor: 'var(--bda-border)' }}\n />\n )}\n </motion.div>\n </div>\n );\n\n if (renderStep) {\n return <>{renderStep(step, defaultRender)}</>;\n }\n\n return defaultRender;\n});\n","export function injectStyle(id: string, css: string): void {\n if (typeof document === 'undefined') return;\n if (document.getElementById(id)) return;\n const style = document.createElement('style');\n style.id = id;\n style.textContent = css;\n document.head.appendChild(style);\n}\n","'use client';\n\nimport { useEffect, useState, useRef } from 'react';\nimport { useAnimation } from '../animation';\nimport { injectStyle } from '../utils/inject-style';\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 cursorTimeoutRef = useRef<ReturnType<typeof setTimeout> | 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 cursorTimeoutRef.current = 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 if (cursorTimeoutRef.current) {\n clearTimeout(cursorTimeoutRef.current);\n cursorTimeoutRef.current = null;\n }\n };\n }, [text, delay, reducedMotion, animPreset.typewriter.charDelay]);\n\n // Inject blink keyframes once\n useEffect(() => {\n injectStyle('bda-blink-keyframes', '@keyframes bda-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }');\n }, []);\n\n return (\n <div className={`${className} font-serif`} style={{ lineHeight: '1.8' }} aria-busy={displayText.length < text.length}>\n {displayText}\n {showCursor && (\n <span\n className=\"inline-block w-0.5 h-4 ml-1\"\n style={{\n backgroundColor: 'var(--bda-secondary)',\n animation: `bda-blink ${animPreset.typewriter.cursorBlink}ms step-end infinite`,\n }}\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 pb-6',\n subsections: [\n {\n revealOnSubstep: 'v1',\n content: 'SWORN AFFIDAVIT',\n className: 'text-3xl font-extrabold tracking-widest text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: 'STATE OF [JURISDICTION]',\n className: 'text-sm tracking-widest text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: 'COUNTY OF [COUNTY NAME]',\n className: 'text-sm tracking-widest text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v4',\n content: '__CASE_NUMBER__',\n className: 'text-base font-bold 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] pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'i1',\n content: 'I, [FULL NAME], being duly sworn, depose and state:',\n className: 'text-base leading-relaxed 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',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i3',\n content: 'DOB: [DATE OF BIRTH]',\n className: 'space-y-2 ml-8 text-sm mt-2',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i4',\n content: 'ID Verified: ✓ CONFIRMED',\n className: '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] pl-6 py-4',\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 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 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 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',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'witness',\n title: 'WITNESS ATTESTATION:',\n borderColor: 'purple',\n className: 'border-l-[6px] pl-6 py-4',\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',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'w4',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-8 pt-6 border-t',\n animation: 'fade',\n },\n ],\n },\n {\n id: 'notary',\n title: 'NOTARY PUBLIC CERTIFICATION:',\n borderColor: 'emerald',\n className: 'border-2 rounded-lg p-6 relative overflow-hidden',\n subsections: [\n {\n revealOnSubstep: 'n1',\n content: '__NOTARY_DATE__',\n className: 'leading-relaxed text-sm',\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 pt-4 text-sm',\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',\n animation: 'fade',\n },\n ],\n },\n];\n","import type { DocumentIds } from '../types';\n\n/**\n * Resolve dynamic content placeholders in document text.\n */\nexport function 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","'use client';\n\nimport { 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';\nimport { resolveContent } from '../utils/content-resolvers';\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 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 className=\"border-b-2 mb-2 w-4/5\"\n initial={{ scaleX: 0 }}\n animate={{ scaleX: 1 }}\n transition={{ delay: delayBase + 0.3, duration: 0.7 }}\n style={{ borderColor: 'var(--bda-fg)', transformOrigin: 'left' }}\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]\"\n style={{ borderColor: 'var(--bda-success)', boxShadow: 'inset 0 2px 8px rgba(0,0,0,0.3)' }}\n />\n <div className=\"absolute inset-2 rounded-full border-2\"\n style={{ borderColor: 'var(--bda-success)' }}\n />\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Stamp className=\"w-12 h-12\" style={{ color: 'var(--bda-success)' }} />\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 rounded text-xs font-mono font-bold\"\n style={{\n border: '2px solid color-mix(in srgb, var(--bda-success) 50%, transparent)',\n color: 'var(--bda-success)',\n background: 'color-mix(in srgb, var(--bda-success) 10%, transparent)',\n }}\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 className=\"border-b-2 mb-2 w-3/4\"\n initial={{ scaleX: 0 }}\n animate={{ scaleX: 1 }}\n transition={{ delay: delayBase + 0.5, duration: 0.7 }}\n style={{ borderColor: 'var(--bda-fg)', transformOrigin: 'left' }}\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 BORDER_COLOR_TO_VAR: Record<string, string> = {\n cyan: 'var(--bda-secondary)',\n orange: 'var(--bda-primary)',\n purple: 'var(--bda-processing)',\n emerald: 'var(--bda-success)',\n };\n const titleColor = BORDER_COLOR_TO_VAR[section.borderColor] || 'var(--bda-fg)';\n\n // Build section style with CSS variable colors\n const sectionColorVar = BORDER_COLOR_TO_VAR[section.borderColor];\n const sectionStyle: React.CSSProperties = {\n ...section.style,\n ...(sectionColorVar ? {\n borderColor: `color-mix(in srgb, ${sectionColorVar} 40%, transparent)`,\n } : {}),\n };\n\n // If section has boxShadow in original style, replace with CSS var version\n if (section.style?.boxShadow && sectionColorVar) {\n sectionStyle.boxShadow = section.style.boxShadow.replace(\n /rgba\\([^)]+\\)/,\n `color-mix(in srgb, ${sectionColorVar} 10%, transparent)`\n );\n }\n\n // Add background if section uses a bg- class\n if (sectionColorVar && section.className?.includes('bg-')) {\n sectionStyle.background = `color-mix(in srgb, ${sectionColorVar} 5%, transparent)`;\n }\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={sectionStyle}\n >\n {section.title && (\n <div style={{ color: titleColor }}>\n <DocumentLine\n text={section.title}\n delay={0.2}\n className=\"text-lg font-extrabold tracking-wide mb-5 uppercase\"\n />\n </div>\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 pb-6',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: 'SWORN AFFIDAVIT',\n className: 'text-2xl font-extrabold tracking-widest text-center',\n },\n {\n revealOnSubstep: 'all',\n content: 'STATE OF [JURISDICTION]',\n className: 'text-xs tracking-widest text-center',\n },\n {\n revealOnSubstep: 'all',\n content: 'COUNTY OF [COUNTY NAME]',\n className: 'text-xs tracking-widest text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '__CASE_NUMBER__',\n className: 'text-sm font-bold 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] 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 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',\n },\n ],\n },\n {\n id: 'statement',\n title: 'STATEMENT OF FACTS:',\n borderColor: 'orange',\n className: 'border-l-[6px] 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',\n },\n ],\n },\n {\n id: 'witness',\n title: 'WITNESS ATTESTATION:',\n borderColor: 'purple',\n className: 'border-l-[6px] 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',\n },\n {\n revealOnSubstep: 'all',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-6 pt-4 border-t',\n },\n ],\n },\n {\n id: 'notary',\n title: 'NOTARY PUBLIC CERTIFICATION:',\n borderColor: 'emerald',\n className: 'border-2 rounded-lg p-6 relative overflow-hidden',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_DATE__',\n className: 'leading-relaxed text-xs',\n },\n {\n revealOnSubstep: 'all',\n content: 'Notary Public: [NOTARY NAME]\\nCommission Number: [NUMBER]\\n__COMMISSION_EXPIRES__',\n className: 'my-3 border-t pt-3 space-y-1 text-xs',\n },\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_SIGNATURE__',\n className: 'mt-6 pt-3 text-xs',\n },\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_SEAL__',\n className: '',\n },\n ],\n },\n];\n","'use client';\n\nimport type { RefObject } from 'react';\nimport { Stamp } from 'lucide-react';\nimport { LEGAL_WHOLE_DOCUMENT_SECTIONS } from '../presets/legal-whole-document';\nimport type { DocumentIds, DocumentSection, ClassNameSlots } from '../types';\nimport { resolveContent } from '../utils/content-resolvers';\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 contentRef?: RefObject<HTMLDivElement | null>;\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 mb-2 w-3/4\" style={{ borderColor: 'var(--bda-fg)' }} />\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]\" style={{ borderColor: 'var(--bda-success)' }} />\n <div className=\"absolute inset-2 rounded-full border-2\" style={{ borderColor: 'var(--bda-success)' }} />\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Stamp className=\"w-10 h-10\" style={{ color: 'var(--bda-success)' }} />\n </div>\n </div>\n <div className=\"absolute bottom-4 left-6 px-3 py-1.5 rounded text-xs font-mono font-bold\"\n style={{\n border: '2px solid color-mix(in srgb, var(--bda-success) 50%, transparent)',\n color: 'var(--bda-success)',\n background: 'color-mix(in srgb, var(--bda-success) 10%, transparent)',\n }}\n >\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 mb-2 w-2/3\" style={{ borderColor: 'var(--bda-fg)' }} />\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 BORDER_COLOR_TO_VAR: Record<string, string> = {\n cyan: 'var(--bda-secondary)',\n orange: 'var(--bda-primary)',\n purple: 'var(--bda-processing)',\n emerald: 'var(--bda-success)',\n };\n const titleColor = BORDER_COLOR_TO_VAR[section.borderColor] || 'var(--bda-fg)';\n\n // Build section style with CSS variable colors\n const sectionColorVar = BORDER_COLOR_TO_VAR[section.borderColor];\n const sectionStyle: React.CSSProperties = {\n ...section.style,\n ...(sectionColorVar ? {\n borderColor: `color-mix(in srgb, ${sectionColorVar} 40%, transparent)`,\n } : {}),\n };\n\n // If section has boxShadow in original style, replace with CSS var version\n if (section.style?.boxShadow && sectionColorVar) {\n sectionStyle.boxShadow = section.style.boxShadow.replace(\n /rgba\\([^)]+\\)/,\n `color-mix(in srgb, ${sectionColorVar} 10%, transparent)`\n );\n }\n\n // Add background if section uses a bg- class\n if (sectionColorVar && section.className?.includes('bg-')) {\n sectionStyle.background = `color-mix(in srgb, ${sectionColorVar} 5%, transparent)`;\n }\n\n return (\n <div className={section.className || ''} style={sectionStyle}>\n {section.title && (\n <div style={{ color: titleColor }} className=\"text-base font-extrabold tracking-wide 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 contentRef,\n}: WholeDocumentContentProps) {\n const activeSections = sections ?? LEGAL_WHOLE_DOCUMENT_SECTIONS;\n\n return (\n <div\n ref={contentRef}\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","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport type { RefObject } from 'react';\nimport { createPortal } from 'react-dom';\nimport { 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';\nimport { injectStyle } from '../utils/inject-style';\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 portalTarget?: HTMLElement | null;\n contentRef?: RefObject<HTMLDivElement | null>;\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 portalTarget,\n contentRef: externalContentRef,\n}: WholeDocumentViewProps) {\n const { reducedMotion } = useAnimation();\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n // Inject hover styles for close button\n useEffect(() => {\n injectStyle('bda-hover-styles', `\n .bda-close-btn:hover { border-color: color-mix(in srgb, var(--bda-primary) 50%, transparent) !important; }\n .bda-close-icon { transition: color 0.15s; }\n .bda-close-btn:hover .bda-close-icon { color: var(--bda-primary) !important; }\n `);\n }, []);\n\n // Focus trap: keep focus within modal when show=true\n useEffect(() => {\n if (!show) return;\n\n // Auto-focus close button when modal opens (with delay to let animation start)\n const focusTimer = setTimeout(() => {\n closeButtonRef.current?.focus();\n }, 100);\n\n return () => clearTimeout(focusTimer);\n }, [show]);\n\n // Escape key handler\n useEffect(() => {\n if (!show) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose();\n return;\n }\n\n // Focus trap: cycle between close button and scrollable content\n if (e.key === 'Tab') {\n const focusableElements = [closeButtonRef.current, contentRef.current].filter(Boolean) as HTMLElement[];\n if (focusableElements.length === 0) return;\n\n const firstEl = focusableElements[0];\n const lastEl = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstEl) {\n e.preventDefault();\n lastEl.focus();\n }\n } else {\n if (document.activeElement === lastEl) {\n e.preventDefault();\n firstEl.focus();\n }\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [show, onClose]);\n\n const title = celebrationTitle ?? labels?.completionTitle ?? 'Document Assembly Complete';\n const prefix = labels?.documentPrefix ?? 'LEGAL-';\n const suffix = labels?.documentSuffix ?? '.pdf';\n\n const overlay = (\n <AnimatePresence>\n {show && (\n <motion.div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n className={`${portalTarget ? 'fixed' : 'absolute'} inset-0 z-50 backdrop-blur-sm ${classNames?.wholeDocumentView || ''}`}\n style={{ background: 'color-mix(in srgb, var(--bda-bg) 98%, transparent)' }}\n >\n {/* Close Button */}\n <motion.button\n ref={closeButtonRef}\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 aria-label=\"Close document view\"\n className=\"absolute top-6 right-6 z-60 p-3 rounded-full border-2 transition-all shadow-lg group bda-close-btn focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none\"\n style={{\n background: 'var(--bda-bg)',\n borderColor: 'var(--bda-border)',\n '--tw-ring-color': 'var(--bda-primary)',\n } as React.CSSProperties}\n >\n <X className=\"w-5 h-5 bda-close-icon\" style={{ color: 'var(--bda-muted-fg)' }} />\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\" style={{ background: 'linear-gradient(to bottom right, color-mix(in srgb, var(--bda-primary) 5%, transparent), transparent, color-mix(in srgb, var(--bda-success) 5%, transparent))' }} />\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\" style={{ color: 'var(--bda-primary)' }} />\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 mb-2\" style={{ backgroundImage: 'linear-gradient(to right, var(--bda-primary), var(--bda-accent, var(--bda-primary)), var(--bda-success))', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' } as React.CSSProperties}>\n {title}\n </h2>\n <p className=\"text-sm font-mono\" style={{ color: 'var(--bda-muted-fg)' }}>\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\"\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 borderColor: 'color-mix(in srgb, var(--bda-border) 50%, transparent)',\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 color-mix(in srgb, var(--bda-primary) 30%, transparent)' }}\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 ref={contentRef} tabIndex={0} className=\"h-full overflow-y-auto focus-visible:outline-none\">\n <WholeDocumentContent documentIds={documentIds} classNames={classNames} contentRef={externalContentRef} />\n </div>\n </div>\n </div>\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n\n if (portalTarget) {\n return createPortal(overlay, portalTarget);\n }\n return overlay;\n}\n","'use client';\n\nimport { Component } from 'react';\nimport type { ReactNode, ErrorInfo } from 'react';\n\ninterface ErrorBoundaryProps {\n fallback?: ReactNode | ((error: Error, reset: () => void) => ReactNode);\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n children: ReactNode;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n this.props.onError?.(error, errorInfo);\n }\n\n reset = () => {\n this.setState({ hasError: false, error: null });\n };\n\n render(): ReactNode {\n if (this.state.hasError && this.state.error) {\n const { fallback } = this.props;\n\n if (typeof fallback === 'function') {\n return fallback(this.state.error, this.reset);\n }\n\n if (fallback) {\n return fallback;\n }\n\n return (\n <div\n style={{\n padding: '2rem',\n borderRadius: '0.5rem',\n border: '1px solid var(--bda-warning, #f59e0b)',\n background: 'color-mix(in srgb, var(--bda-warning, #f59e0b) 5%, transparent)',\n color: 'var(--bda-fg, #18181b)',\n fontFamily: 'system-ui, sans-serif',\n }}\n >\n <h3\n style={{\n margin: '0 0 0.5rem 0',\n fontSize: '1rem',\n fontWeight: 600,\n color: 'var(--bda-warning, #f59e0b)',\n }}\n >\n Something went wrong\n </h3>\n <p\n style={{\n margin: '0 0 1rem 0',\n fontSize: '0.875rem',\n color: 'var(--bda-muted-fg, #71717a)',\n }}\n >\n {this.state.error.message}\n </p>\n <button\n onClick={this.reset}\n style={{\n padding: '0.5rem 1rem',\n borderRadius: '0.375rem',\n border: '1px solid var(--bda-border, #e4e4e7)',\n background: 'var(--bda-bg, #ffffff)',\n color: 'var(--bda-fg, #18181b)',\n fontSize: '0.875rem',\n cursor: 'pointer',\n }}\n >\n Try again\n </button>\n </div>\n );\n }\n\n return this.props.children;\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","'use client';\n\nimport { useEffect, useState, useRef, useCallback, useMemo } 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 AssemblySnapshot,\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 externalMode,\n onError,\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 = useMemo(() => ({\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 animationTimings?.stepActivation,\n animationTimings?.substepDelay,\n animationTimings?.logStreamBase,\n animationTimings?.logStreamVariance,\n animationTimings?.typewriterSpeed,\n animationTimings?.sectionRevealDuration,\n animationTimings?.completionDelay,\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 if (!externalMode) {\n processSteps(runId);\n }\n }, [isRunning, processSteps, externalMode]);\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 && !externalMode) {\n start();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const updateStep = useCallback((stepIndex: number, update: Partial<Pick<Step, 'status' | 'errorMessage'>>) => {\n setSteps(prev => prev.map((step, idx) => {\n if (idx !== stepIndex) return step;\n const updated = { ...step, ...update };\n if (update.status === 'completed' && onStepComplete) {\n onStepComplete(updated, metrics);\n }\n if (update.status === 'error' && onError) {\n onError({ stepIndex, stepId: step.id, message: update.errorMessage || 'Unknown error' });\n }\n return updated;\n }));\n }, [onStepComplete, onError, metrics]);\n\n const completeStep = useCallback((stepIndex: number) => {\n setSteps(prev => prev.map((step, idx) => {\n if (idx !== stepIndex) return step;\n const completed = { ...step, status: 'completed' as const };\n if (onStepComplete) onStepComplete(completed, metrics);\n return completed;\n }));\n setSteps(prev => {\n const step = prev[stepIndex];\n if (step?.documentSection) {\n setCompletedSections(s => {\n const next = new Set([...s, step.documentSection!]);\n if (onSectionReveal) onSectionReveal(step.documentSection!);\n return next;\n });\n }\n return prev;\n });\n setCurrentStep(prev => Math.max(prev, stepIndex + 1));\n }, [onStepComplete, onSectionReveal, metrics]);\n\n const completeSubstepFn = useCallback((stepIndex: number, substepId: string) => {\n setSteps(prev => prev.map((step, idx) => {\n if (idx !== stepIndex || !step.substeps) return step;\n return {\n ...step,\n substeps: step.substeps.map(sub =>\n sub.id === substepId ? { ...sub, completed: true } : sub\n ),\n };\n }));\n setCompletedSubsteps(prev => new Set([...prev, substepId]));\n if (onSubstepComplete) onSubstepComplete(substepId, stepIndex);\n }, [onSubstepComplete]);\n\n const setStepErrorFn = useCallback((stepIndex: number, message: string) => {\n setSteps(prev => prev.map((step, idx) => {\n if (idx !== stepIndex) return step;\n if (onError) onError({ stepIndex, stepId: step.id, message });\n return { ...step, status: 'error' as const, errorMessage: message };\n }));\n }, [onError]);\n\n const retryStep = useCallback((stepIndex: number) => {\n setSteps(prev => prev.map((step, idx) =>\n idx === stepIndex ? { ...step, status: 'pending' as const, errorMessage: undefined } : step\n ));\n }, []);\n\n const updateMetricsFn = useCallback((update: Partial<DocumentMetrics> | ((prev: DocumentMetrics) => DocumentMetrics)) => {\n setMetrics(prev => {\n if (typeof update === 'function') return update(prev);\n return { ...prev, ...update };\n });\n }, []);\n\n const getSnapshot = useCallback((): AssemblySnapshot => ({\n steps: steps.map(s => ({ ...s, substeps: s.substeps?.map(sub => ({ ...sub })) })),\n completedSections: [...completedSections],\n completedSubsteps: [...completedSubsteps],\n metrics: { ...metrics },\n currentStep,\n timestamp: Date.now(),\n }), [steps, completedSections, completedSubsteps, metrics, currentStep]);\n\n const restoreSnapshot = useCallback((snapshot: AssemblySnapshot) => {\n setSteps(snapshot.steps);\n setCompletedSections(new Set(snapshot.completedSections));\n setCompletedSubsteps(new Set(snapshot.completedSubsteps));\n setMetrics(snapshot.metrics);\n setCurrentStep(snapshot.currentStep);\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 addLog,\n updateStep,\n updateMetrics: updateMetricsFn,\n completeStep,\n completeSubstep: completeSubstepFn,\n setStepError: setStepErrorFn,\n retryStep,\n getSnapshot,\n restoreSnapshot,\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","'use client';\n\nimport { 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","'use client';\n\nimport { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';\nimport type { CSSProperties } 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 { ErrorBoundary } from './ErrorBoundary';\nimport { useDocumentAssembly } from '../hooks/useDocumentAssembly';\nimport { DEFAULT_LABELS } from '../constants/default-labels';\nimport { ThemeProvider, resolveTheme } from '../theme';\nimport { AnimationProvider } from '../animation';\nimport { useResponsiveLayout } from '../hooks/useResponsiveLayout';\nimport { colorMix } from '../theme/css-vars';\nimport type { BlueprintDocumentAssemblyProps, BlueprintDocumentAssemblyRef, LabelConfig } 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 externalMode,\n onError,\n portalTarget,\n visibility,\n renderSlots,\n errorFallback,\n onRenderError,\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 externalMode,\n onError,\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 addLog,\n updateStep,\n updateMetrics,\n completeStep,\n completeSubstep,\n setStepError,\n retryStep,\n } = assembly;\n\n const { isMobile, direction } = useResponsiveLayout();\n const effectiveDirection = layout?.direction ?? direction;\n\n const documentContentRef = useRef<HTMLDivElement>(null);\n const wholeDocumentContentRef = useRef<HTMLDivElement>(null);\n\n // Resolve visibility config\n const vis = { header: true, leftPanel: true, rightPanel: true, metricsFooter: true, progressBar: true, ...visibility };\n\n // Resolve portal target with SSR guard\n const resolvedPortalTarget = useMemo(() => {\n if (!portalTarget) return null;\n if (portalTarget === true) return typeof document !== 'undefined' ? document.body : null;\n if (typeof portalTarget === 'string') return typeof document !== 'undefined' ? document.querySelector(portalTarget) as HTMLElement | null : null;\n return portalTarget;\n }, [portalTarget]);\n\n // Expose imperative API via ref\n useImperativeHandle(ref, () => ({\n start,\n pause,\n resume,\n reset,\n goToStep,\n updateStep,\n addLog,\n updateMetrics,\n completeStep,\n completeSubstep,\n setStepError,\n retryStep,\n getDocumentContentRef: () => showWholeDocument\n ? wholeDocumentContentRef.current\n : documentContentRef.current,\n getDocumentHTML: () => {\n const el = showWholeDocument\n ? wholeDocumentContentRef.current\n : documentContentRef.current;\n return el?.innerHTML ?? null;\n },\n }), [start, pause, resume, reset, goToStep, updateStep, addLog, updateMetrics, completeStep, completeSubstep, setStepError, retryStep, showWholeDocument]);\n\n const leftWidth = layout?.leftWidth ?? '33.333%';\n const rightWidth = layout?.rightWidth ?? '66.667%';\n\n const resolvedTheme = resolveTheme(theme);\n const rootStyle: CSSProperties = {\n ...resolvedTheme.cssVars,\n } as CSSProperties;\n\n const content = (\n <ErrorBoundary fallback={errorFallback} onError={onRenderError}>\n <div aria-label=\"Document assembly\" className={`relative w-full ${isMobile ? 'min-h-full' : 'h-full'} overflow-hidden flex flex-col ${className ?? ''} ${classNames?.root || ''}`} style={{ ...rootStyle, backgroundColor: 'var(--bda-bg)', color: 'var(--bda-fg)' } as CSSProperties}>\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 style={{ color: 'var(--bda-primary)' }}\n />\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#grid)\" />\n </svg>\n </div>\n\n {/* Overall Progress Bar */}\n {vis.progressBar && (\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 ${classNames?.progressBar || ''}`}\n style={{ background: resolvedTheme.gradients.progress }}\n initial={{ width: '0%' }}\n animate={{ width: `${progress}%` }}\n transition={{ duration: 0.8, ease: 'easeOut' }}\n />\n </div>\n )}\n\n <div className={`relative z-10 flex ${effectiveDirection === 'vertical' ? 'flex-col' : ''} flex-1 overflow-hidden`}>\n {/* Left Side - Assembly Process */}\n {vis.leftPanel && (\n <div\n className={`${effectiveDirection === 'vertical' ? 'border-b' : 'border-r'} ${isMobile ? 'p-4' : 'p-8'} overflow-y-auto ${classNames?.leftPanel || ''}`}\n style={{\n ...(effectiveDirection === 'vertical' ? { height: vis.rightPanel ? '50%' : '100%' } : { width: vis.rightPanel ? leftWidth : '100%' }),\n borderColor: colorMix('var(--bda-border)', 50)\n }}\n >\n <div className=\"max-w-xl mx-auto\">\n {vis.header && (renderSlots?.header\n ? renderSlots.header({ labels: labels as Required<LabelConfig>, currentStep, totalSteps: steps.length, progress })\n : (\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 ${classNames?.header || ''}`} style={{ backgroundImage: resolvedTheme.gradients.title, WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' } as CSSProperties}>\n {labels.title}\n </h1>\n <p style={{ color: 'var(--bda-muted-fg)' }} className=\"font-mono text-xs tracking-wider\">\n System Status: <span className=\"font-semibold\" style={{ color: currentStep === steps.length ? 'var(--bda-success)' : 'var(--bda-primary)' }}>\n {currentStep === steps.length ? labels.statusComplete : labels.statusProcessing}\n </span>\n </p>\n </motion.div>\n )\n )}\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\n {/* Right Side - Document Preview */}\n {vis.rightPanel && (\n <div\n className={`overflow-hidden relative ${classNames?.rightPanel || ''}`}\n style={{\n ...(effectiveDirection === 'vertical' ? { height: vis.leftPanel ? '50%' : '100%' } : { width: vis.leftPanel ? rightWidth : '100%' }),\n background: `linear-gradient(to bottom right, ${colorMix('var(--bda-muted)', 20)}, ${colorMix('var(--bda-muted)', 5)})`\n }}\n >\n <div className=\"h-full flex flex-col relative z-10\">\n {/* Document Header */}\n <div className=\"p-6 border-b backdrop-blur-sm\" style={{ borderColor: colorMix('var(--bda-border)', 50), background: colorMix('var(--bda-bg)', 50) }}>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg\" style={{ background: colorMix('var(--bda-secondary)', 10), border: `1px solid ${colorMix('var(--bda-secondary)', 20)}` }}>\n <FileText className=\"w-5 h-5\" style={{ color: 'var(--bda-secondary)' }} />\n </div>\n <div>\n <h2 className=\"font-semibold\" style={{ color: 'var(--bda-fg)' }}>{labels.documentTitle}</h2>\n <p className=\"text-xs mt-0.5 font-mono\" style={{ color: 'var(--bda-muted-fg)' }}>\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\"\n style={{ background: `linear-gradient(to right, ${colorMix('var(--bda-primary)', 20)}, ${colorMix('var(--bda-accent)', 20)})`, border: `1px solid ${colorMix('var(--bda-primary)', 30)}` }}\n >\n <span className=\"text-sm font-semibold\" style={{ backgroundImage: resolvedTheme.gradients.title, WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' } as CSSProperties}>\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 <div ref={documentContentRef}>\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 </div>\n\n {/* Metrics Footer */}\n {vis.metricsFooter && (renderSlots?.footer\n ? renderSlots.footer({ metrics, labels: labels as Required<LabelConfig> })\n : (\n <div className={`relative z-20 border-t p-4 backdrop-blur-sm ${classNames?.footer || ''}`} style={{ borderColor: colorMix('var(--bda-border)', 50), background: colorMix('var(--bda-bg)', 95) }}>\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 ${classNames?.metricsItem || ''}`} style={{ background: colorMix('var(--bda-primary)', 5), border: `1px solid ${colorMix('var(--bda-primary)', 20)}` }}>\n <Zap className=\"w-4 h-4\" style={{ color: 'var(--bda-primary)' }} />\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] font-mono uppercase tracking-wider\" style={{ color: 'var(--bda-muted-fg)' }}>{labels.metricsTokens}</span>\n <span className=\"text-base font-bold tabular-nums\" style={{ color: 'var(--bda-primary)' }}>\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 ${classNames?.metricsItem || ''}`} style={{ background: colorMix('var(--bda-success)', 5), border: `1px solid ${colorMix('var(--bda-success)', 20)}` }}>\n <DollarSign className=\"w-4 h-4\" style={{ color: 'var(--bda-success)' }} />\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] font-mono uppercase tracking-wider\" style={{ color: 'var(--bda-muted-fg)' }}>{labels.metricsCost}</span>\n <span className=\"text-base font-bold tabular-nums\" style={{ color: 'var(--bda-success)' }}>\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 ${classNames?.metricsItem || ''}`} style={{ background: colorMix('var(--bda-processing)', 5), border: `1px solid ${colorMix('var(--bda-processing)', 20)}` }}>\n <Clock className=\"w-4 h-4\" style={{ color: 'var(--bda-processing)' }} />\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] font-mono uppercase tracking-wider\" style={{ color: 'var(--bda-muted-fg)' }}>{labels.metricsElapsed}</span>\n <span className=\"text-base font-bold tabular-nums\" style={{ color: 'var(--bda-processing)' }}>\n {metrics.elapsed.toFixed(1)}s\n </span>\n </div>\n </div>\n </div>\n </div>\n )\n )}\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 portalTarget={resolvedPortalTarget}\n contentRef={wholeDocumentContentRef}\n />\n </div>\n </ErrorBoundary>\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 pb-6',\n subsections: [\n {\n revealOnSubstep: 'v1',\n content: '~~~~~~~ ~~~~~~~~',\n className: 'text-3xl font-extrabold tracking-widest text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: '~~~~~ ~~ ~~~~~~~~~~~~',\n className: 'text-sm tracking-widest text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v2',\n content: '~~~~~~ ~~ ~~~~~~ ~~~~',\n className: 'text-sm tracking-widest text-center',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'v4',\n content: '#### ~~. ~~~~~~~~',\n className: 'text-base font-bold 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] pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 'i1',\n content: '~, [~~~~ ~~~~], ~~~~~ ~~~~ ~~~~~, ~~~~~~ ~~~ ~~~~~:',\n className: 'text-base leading-relaxed mb-4 italic',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i2',\n content: '~~~~~~~: [~~~~~~ ~~~~~~~]\\n~~~~~/~~~~~: [~~~~, ~~~~~ ~~~]',\n className: 'space-y-2 ml-8 text-sm',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i3',\n content: '~~~: [~~~~ ~~ ~~~~~]',\n className: 'space-y-2 ml-8 text-sm mt-2',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'i4',\n content: '~~ ~~~~~~~~: ✓ ~~~~~~~~~',\n className: '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] pl-6 py-4',\n subsections: [\n {\n revealOnSubstep: 's1',\n content: '1. ~~~~ ~ ~~~~ ~~~~~~~~ ~~~~~~~~~ ~~ ~~~ ~~~~~ ~~~~~~ ~~~~~~ ~~~ ~~ ~~~~~~~~~ ~~ ~~~~~~~ ~~ ~~~ ~~~~.',\n className: 'ml-8 text-base leading-loose mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's2',\n content: '2. ~~~~ ~~ ~~ ~~~~~ [~~~~], ~~~ ~~~~~~~~~ ~~~~~~ ~~~~~~~~: [~~~~~~~~ ~~~~~~~~~ ~~ ~~~~~~~~ ~~~~~]',\n className: 'ml-8 text-base leading-loose mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's3',\n content: '3. ~~~~ ~~~ ~~~~~~~~~~~ ~~~~~~~~ ~~~~~~ ~~ ~~~~ ~~~ ~~~~~~~ ~~ ~~~ ~~~~ ~~ ~~ ~~~~~~~~~ ~~~ ~~~~~~.',\n className: 'ml-8 text-base leading-loose mb-5',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 's4',\n content: '4. ~~~~ ~ ~~~~~~~~~~ ~~~ ~~~~~~~~~ ~~~ ~~~~~~~ ~~~~~ ~~~.',\n className: 'ml-8 text-base leading-loose',\n animation: 'typewriter',\n },\n ],\n },\n {\n id: 'witness',\n title: '~~~~~~~ ~~~~~~~~~~~:',\n borderColor: 'purple',\n className: 'border-l-[6px] pl-6 py-4',\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',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'w4',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-8 pt-6 border-t',\n animation: 'fade',\n },\n ],\n },\n {\n id: 'notary',\n title: '~~~~~~ ~~~~~~ ~~~~~~~~~~~~~:',\n borderColor: 'emerald',\n className: 'border-2 rounded-lg p-6 relative overflow-hidden',\n subsections: [\n {\n revealOnSubstep: 'n1',\n content: '__NOTARY_DATE__',\n className: 'leading-relaxed text-sm',\n animation: 'typewriter',\n },\n {\n revealOnSubstep: 'n2',\n content: '~~~~~~ ~~~~~~: [~~~~~~ ~~~~]\\n~~~~~~~~~~ ~~~~~~: [~~~~~~]\\n__COMMISSION_EXPIRES__',\n className: 'my-4 border-t pt-4 text-sm',\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',\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 pb-6',\n subsections: [\n {\n revealOnSubstep: 'all',\n content: '~~~~~~~ ~~~~~~~~',\n className: 'text-2xl font-extrabold tracking-widest text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~ ~~ ~~~~~~~~~~~~',\n className: 'text-xs tracking-widest text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~~ ~~ ~~~~~~ ~~~~',\n className: 'text-xs tracking-widest text-center',\n },\n {\n revealOnSubstep: 'all',\n content: '#### ~~. ~~~~~~~~',\n className: 'text-sm font-bold 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 mb-3 italic',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~~~: [~~~~~~ ~~~~~~~]\\n~~~~~/~~~~~: [~~~~, ~~~~~ ~~~]\\n~~~: [~~~~ ~~ ~~~~~]\\n~~ ~~~~~~~~: ✓ ~~~~~~~~~',\n className: 'space-y-1 ml-8 text-xs',\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',\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',\n },\n {\n revealOnSubstep: 'all',\n content: '__WITNESS_SIGNATURE__',\n className: 'mt-6 pt-4 border-t',\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',\n },\n {\n revealOnSubstep: 'all',\n content: '~~~~~~ ~~~~~~: [~~~~~~ ~~~~]\\n~~~~~~~~~~ ~~~~~~: [~~~~~~]\\n__COMMISSION_EXPIRES__',\n className: 'my-3 border-t pt-3 space-y-1 text-xs',\n },\n {\n revealOnSubstep: 'all',\n content: '__NOTARY_SIGNATURE__',\n className: 'mt-6 pt-3 text-xs',\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"]}
|