@chrisflippen/blueprint-document-assembly 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 [Your Name]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,280 @@
1
+ # Blueprint Document Assembly
2
+
3
+ An animation-heavy React component for visualizing multi-step processes as a Blueprint/Technical Document Assembly system. Perfect for legal document generation, compliance workflows, technical process visualization, and any multi-step assembly process.
4
+
5
+ ![Version](https://img.shields.io/npm/v/blueprint-document-assembly.svg)
6
+ ![License](https://img.shields.io/npm/l/blueprint-document-assembly.svg)
7
+
8
+ ## ✨ Features
9
+
10
+ - **🎬 Cinematic Animations**: Smooth, professional animations powered by Motion (Framer Motion)
11
+ - **📝 Progressive Document Assembly**: Watch documents build piece-by-piece as steps complete
12
+ - **📊 Real-time Metrics**: Track tokens, costs, and elapsed time
13
+ - **🔄 Sequential Log Streaming**: Logs stream in order, following the step progression
14
+ - **📱 Responsive Design**: Works beautifully on desktop and mobile
15
+ - **🌗 Dark Mode Support**: Respects system theme preferences
16
+ - **✨ Celebration Effects**: Dramatic zoom-out and sparkle effects on completion
17
+ - **🎯 TypeScript Support**: Fully typed for excellent developer experience
18
+ - **🎨 Customizable**: Extensive props for customization
19
+
20
+ ## 📦 Installation
21
+
22
+ ```bash
23
+ npm install blueprint-document-assembly motion lucide-react
24
+ ```
25
+
26
+ Or with yarn:
27
+
28
+ ```bash
29
+ yarn add blueprint-document-assembly motion lucide-react
30
+ ```
31
+
32
+ Or with pnpm:
33
+
34
+ ```bash
35
+ pnpm add blueprint-document-assembly motion lucide-react
36
+ ```
37
+
38
+ ## 🎨 Styling Requirements
39
+
40
+ This component requires **Tailwind CSS v4**. Make sure you have Tailwind CSS installed and configured:
41
+
42
+ ```bash
43
+ npm install tailwindcss @tailwindcss/vite
44
+ ```
45
+
46
+ Your Tailwind CSS theme should include these CSS variables for optimal styling:
47
+
48
+ ```css
49
+ @theme {
50
+ --color-background: #ffffff;
51
+ --color-foreground: #0a0a0a;
52
+ --color-muted: #f4f4f5;
53
+ --color-muted-foreground: #71717a;
54
+ --color-border: #e4e4e7;
55
+ /* Add more theme variables as needed */
56
+ }
57
+
58
+ @media (prefers-color-scheme: dark) {
59
+ @theme {
60
+ --color-background: #0a0a0a;
61
+ --color-foreground: #fafafa;
62
+ --color-muted: #27272a;
63
+ --color-muted-foreground: #a1a1aa;
64
+ --color-border: #27272a;
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## 🚀 Quick Start
70
+
71
+ ```tsx
72
+ import { BlueprintDocumentAssembly } from 'blueprint-document-assembly';
73
+
74
+ function App() {
75
+ return <BlueprintDocumentAssembly />;
76
+ }
77
+ ```
78
+
79
+ That's it! The component comes with sensible defaults for a sworn affidavit assembly process.
80
+
81
+ ## 📖 Usage Examples
82
+
83
+ ### Basic Usage with Callbacks
84
+
85
+ ```tsx
86
+ import { BlueprintDocumentAssembly } from 'blueprint-document-assembly';
87
+ import type { DocumentMetrics, Step } from 'blueprint-document-assembly';
88
+
89
+ function App() {
90
+ const handleComplete = (metrics: DocumentMetrics) => {
91
+ console.log('Assembly complete!', metrics);
92
+ // { tokens: 2847, cost: 0.0234, elapsed: 14.2 }
93
+ };
94
+
95
+ const handleStepComplete = (step: Step, metrics: DocumentMetrics) => {
96
+ console.log(`Step ${step.number} completed:`, step.title);
97
+ };
98
+
99
+ return (
100
+ <BlueprintDocumentAssembly
101
+ onComplete={handleComplete}
102
+ onStepComplete={handleStepComplete}
103
+ />
104
+ );
105
+ }
106
+ ```
107
+
108
+ ### Custom Animation Speed
109
+
110
+ ```tsx
111
+ <BlueprintDocumentAssembly
112
+ animationSpeed={2} // 2x faster
113
+ />
114
+
115
+ <BlueprintDocumentAssembly
116
+ animationSpeed={0.5} // 2x slower
117
+ />
118
+ ```
119
+
120
+ ### Disable Whole Document View
121
+
122
+ ```tsx
123
+ <BlueprintDocumentAssembly
124
+ showWholeDocumentView={false} // Skip the zoom-out finale
125
+ />
126
+ ```
127
+
128
+ ### Custom Document IDs
129
+
130
+ ```tsx
131
+ <BlueprintDocumentAssembly
132
+ documentIds={{
133
+ caseNumber: '2026-CV-1234',
134
+ fileNumber: 'LAW-456'
135
+ }}
136
+ />
137
+ ```
138
+
139
+ ### Custom Steps
140
+
141
+ ```tsx
142
+ import type { Step } from 'blueprint-document-assembly';
143
+
144
+ const customSteps: Step[] = [
145
+ {
146
+ id: 'init',
147
+ number: 1,
148
+ title: 'System Initialization',
149
+ status: 'pending',
150
+ substeps: [
151
+ { id: 'init1', label: 'Load configuration', completed: false, logs: [] },
152
+ { id: 'init2', label: 'Connect to database', completed: false, logs: [] }
153
+ ],
154
+ documentSection: 'header',
155
+ logs: []
156
+ },
157
+ // ... more steps
158
+ ];
159
+
160
+ <BlueprintDocumentAssembly steps={customSteps} />
161
+ ```
162
+
163
+ ## 📚 API Reference
164
+
165
+ ### Props
166
+
167
+ | Prop | Type | Default | Description |
168
+ |------|------|---------|-------------|
169
+ | `steps` | `Step[]` | Default affidavit steps | Array of steps to process |
170
+ | `stepLogs` | `Record<string, string[][]>` | Default logs | Custom log data for each step |
171
+ | `substepLogs` | `Record<string, string[][]>` | Default logs | Custom log data for each substep |
172
+ | `autoScroll` | `boolean` | `true` | Auto-scroll to show new content |
173
+ | `showWholeDocumentView` | `boolean` | `true` | Show zoom-out view on completion |
174
+ | `documentIds` | `DocumentIds` | Auto-generated | Custom case/file numbers |
175
+ | `animationSpeed` | `number` | `1` | Animation speed multiplier |
176
+ | `onComplete` | `(metrics: DocumentMetrics) => void` | - | Callback when complete |
177
+ | `onStepComplete` | `(step: Step, metrics: DocumentMetrics) => void` | - | Callback when step completes |
178
+ | `className` | `string` | - | Custom className for root |
179
+
180
+ ### Types
181
+
182
+ ```typescript
183
+ interface Step {
184
+ id: string;
185
+ number: number;
186
+ title: string;
187
+ status: 'pending' | 'active' | 'processing' | 'completed';
188
+ substeps?: SubStep[];
189
+ documentSection?: string;
190
+ logs: LogEntry[];
191
+ }
192
+
193
+ interface SubStep {
194
+ id: string;
195
+ label: string;
196
+ completed: boolean;
197
+ logs: LogEntry[];
198
+ }
199
+
200
+ interface LogEntry {
201
+ id: string;
202
+ timestamp: string;
203
+ level: 'info' | 'success' | 'warning' | 'processing';
204
+ message: string;
205
+ }
206
+
207
+ interface DocumentMetrics {
208
+ tokens: number;
209
+ cost: number;
210
+ elapsed: number;
211
+ }
212
+
213
+ interface DocumentIds {
214
+ caseNumber: string;
215
+ fileNumber: string;
216
+ }
217
+ ```
218
+
219
+ ## 🎯 Use Cases
220
+
221
+ - **Legal Document Generation**: Sworn affidavits, contracts, legal filings
222
+ - **Compliance Workflows**: Multi-step verification and approval processes
223
+ - **Technical Documentation**: System build processes, deployment pipelines
224
+ - **Manufacturing**: Assembly line visualization
225
+ - **Medical**: Patient intake and verification processes
226
+ - **Financial**: Loan application processing, KYC workflows
227
+
228
+ ## 🎨 Customization
229
+
230
+ The component uses Tailwind CSS and can be customized through:
231
+
232
+ 1. **Tailwind Theme**: Customize colors through CSS variables
233
+ 2. **Custom Steps**: Provide your own step configuration
234
+ 3. **Custom Logs**: Provide custom log messages for each step/substep
235
+ 4. **Props**: Use the extensive props API for behavior customization
236
+
237
+ ## 🏗️ Architecture
238
+
239
+ The component follows a clean, modular architecture:
240
+
241
+ ```
242
+ blueprint-document-assembly/
243
+ ├── src/
244
+ │ ├── components/
245
+ │ │ ├── BlueprintDocumentAssembly.tsx # Main component
246
+ │ │ ├── StepItem.tsx # Step visualization
247
+ │ │ ├── SubStepItem.tsx # Substep visualization
248
+ │ │ ├── DocumentPreview.tsx # Document builder
249
+ │ │ ├── WholeDocumentView.tsx # Completion overlay
250
+ │ │ ├── WholeDocumentContent.tsx # Static document
251
+ │ │ └── LogComponents.tsx # Log display
252
+ │ ├── types.ts # TypeScript definitions
253
+ │ ├── constants.ts # Default log data
254
+ │ ├── default-steps.ts # Default step config
255
+ │ └── index.tsx # Public exports
256
+ ```
257
+
258
+ ## 🤝 Contributing
259
+
260
+ Contributions are welcome! Please feel free to submit a Pull Request.
261
+
262
+ ## 📄 License
263
+
264
+ MIT © [Your Name]
265
+
266
+ ## 🙏 Acknowledgments
267
+
268
+ - Built with [Motion](https://motion.dev/) (Framer Motion)
269
+ - Icons by [Lucide](https://lucide.dev/)
270
+ - Styled with [Tailwind CSS](https://tailwindcss.com/)
271
+
272
+ ## 📞 Support
273
+
274
+ - 📫 Issues: [GitHub Issues](https://github.com/yourusername/blueprint-document-assembly/issues)
275
+ - 💬 Discussions: [GitHub Discussions](https://github.com/yourusername/blueprint-document-assembly/discussions)
276
+ - 📧 Email: your.email@example.com
277
+
278
+ ---
279
+
280
+ Made with ❤️ by [Your Name]
@@ -0,0 +1,89 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface LogEntry {
4
+ id: string;
5
+ timestamp: string;
6
+ level: 'info' | 'success' | 'warning' | 'processing';
7
+ message: string;
8
+ }
9
+ interface SubStep {
10
+ id: string;
11
+ label: string;
12
+ completed: boolean;
13
+ logs: LogEntry[];
14
+ }
15
+ interface Step {
16
+ id: string;
17
+ number: number;
18
+ title: string;
19
+ status: 'pending' | 'active' | 'processing' | 'completed';
20
+ substeps?: SubStep[];
21
+ documentSection?: string;
22
+ logs: LogEntry[];
23
+ }
24
+ interface DocumentMetrics {
25
+ tokens: number;
26
+ cost: number;
27
+ elapsed: number;
28
+ }
29
+ interface DocumentIds {
30
+ caseNumber: string;
31
+ fileNumber: string;
32
+ }
33
+ interface BlueprintDocumentAssemblyProps {
34
+ /**
35
+ * Array of steps to process in the document assembly
36
+ * @default Default sworn affidavit steps
37
+ */
38
+ steps?: Step[];
39
+ /**
40
+ * Custom log data for each step
41
+ * @default Default step logs
42
+ */
43
+ stepLogs?: Record<string, string[][]>;
44
+ /**
45
+ * Custom log data for each substep
46
+ * @default Default substep logs
47
+ */
48
+ substepLogs?: Record<string, string[][]>;
49
+ /**
50
+ * Enable/disable auto-scroll as new content appears
51
+ * @default true
52
+ */
53
+ autoScroll?: boolean;
54
+ /**
55
+ * Enable/disable whole document view on completion
56
+ * @default true
57
+ */
58
+ showWholeDocumentView?: boolean;
59
+ /**
60
+ * Custom document IDs (case number, file number)
61
+ */
62
+ documentIds?: DocumentIds;
63
+ /**
64
+ * Animation speed multiplier (1 = normal, 0.5 = slower, 2 = faster)
65
+ * @default 1
66
+ */
67
+ animationSpeed?: number;
68
+ /**
69
+ * Callback when assembly is complete
70
+ */
71
+ onComplete?: (metrics: DocumentMetrics) => void;
72
+ /**
73
+ * Callback when a step completes
74
+ */
75
+ onStepComplete?: (step: Step, metrics: DocumentMetrics) => void;
76
+ /**
77
+ * Custom className for the root container
78
+ */
79
+ className?: string;
80
+ }
81
+
82
+ declare function BlueprintDocumentAssembly({ steps: initialSteps, stepLogs: customStepLogs, substepLogs: customSubstepLogs, autoScroll, showWholeDocumentView, documentIds: customDocumentIds, animationSpeed, onComplete, onStepComplete, className, }: BlueprintDocumentAssemblyProps): react_jsx_runtime.JSX.Element;
83
+
84
+ declare const DEFAULT_STEP_LOGS: Record<string, string[][]>;
85
+ declare const DEFAULT_SUBSTEP_LOGS: Record<string, string[][]>;
86
+
87
+ declare const DEFAULT_STEPS: Step[];
88
+
89
+ export { BlueprintDocumentAssembly, type BlueprintDocumentAssemblyProps, DEFAULT_STEPS, DEFAULT_STEP_LOGS, DEFAULT_SUBSTEP_LOGS, type DocumentIds, type DocumentMetrics, type LogEntry, type Step, type SubStep };
@@ -0,0 +1,89 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface LogEntry {
4
+ id: string;
5
+ timestamp: string;
6
+ level: 'info' | 'success' | 'warning' | 'processing';
7
+ message: string;
8
+ }
9
+ interface SubStep {
10
+ id: string;
11
+ label: string;
12
+ completed: boolean;
13
+ logs: LogEntry[];
14
+ }
15
+ interface Step {
16
+ id: string;
17
+ number: number;
18
+ title: string;
19
+ status: 'pending' | 'active' | 'processing' | 'completed';
20
+ substeps?: SubStep[];
21
+ documentSection?: string;
22
+ logs: LogEntry[];
23
+ }
24
+ interface DocumentMetrics {
25
+ tokens: number;
26
+ cost: number;
27
+ elapsed: number;
28
+ }
29
+ interface DocumentIds {
30
+ caseNumber: string;
31
+ fileNumber: string;
32
+ }
33
+ interface BlueprintDocumentAssemblyProps {
34
+ /**
35
+ * Array of steps to process in the document assembly
36
+ * @default Default sworn affidavit steps
37
+ */
38
+ steps?: Step[];
39
+ /**
40
+ * Custom log data for each step
41
+ * @default Default step logs
42
+ */
43
+ stepLogs?: Record<string, string[][]>;
44
+ /**
45
+ * Custom log data for each substep
46
+ * @default Default substep logs
47
+ */
48
+ substepLogs?: Record<string, string[][]>;
49
+ /**
50
+ * Enable/disable auto-scroll as new content appears
51
+ * @default true
52
+ */
53
+ autoScroll?: boolean;
54
+ /**
55
+ * Enable/disable whole document view on completion
56
+ * @default true
57
+ */
58
+ showWholeDocumentView?: boolean;
59
+ /**
60
+ * Custom document IDs (case number, file number)
61
+ */
62
+ documentIds?: DocumentIds;
63
+ /**
64
+ * Animation speed multiplier (1 = normal, 0.5 = slower, 2 = faster)
65
+ * @default 1
66
+ */
67
+ animationSpeed?: number;
68
+ /**
69
+ * Callback when assembly is complete
70
+ */
71
+ onComplete?: (metrics: DocumentMetrics) => void;
72
+ /**
73
+ * Callback when a step completes
74
+ */
75
+ onStepComplete?: (step: Step, metrics: DocumentMetrics) => void;
76
+ /**
77
+ * Custom className for the root container
78
+ */
79
+ className?: string;
80
+ }
81
+
82
+ declare function BlueprintDocumentAssembly({ steps: initialSteps, stepLogs: customStepLogs, substepLogs: customSubstepLogs, autoScroll, showWholeDocumentView, documentIds: customDocumentIds, animationSpeed, onComplete, onStepComplete, className, }: BlueprintDocumentAssemblyProps): react_jsx_runtime.JSX.Element;
83
+
84
+ declare const DEFAULT_STEP_LOGS: Record<string, string[][]>;
85
+ declare const DEFAULT_SUBSTEP_LOGS: Record<string, string[][]>;
86
+
87
+ declare const DEFAULT_STEPS: Step[];
88
+
89
+ export { BlueprintDocumentAssembly, type BlueprintDocumentAssemblyProps, DEFAULT_STEPS, DEFAULT_STEP_LOGS, DEFAULT_SUBSTEP_LOGS, type DocumentIds, type DocumentMetrics, type LogEntry, type Step, type SubStep };
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ 'use strict';var react=require('react'),react$1=require('motion/react'),lucideReact=require('lucide-react'),jsxRuntime=require('react/jsx-runtime');/* Blueprint Document Assembly Component v1.0.0 | MIT License */
2
+ function Ve({log:e,compact:c=false}){let r={info:{color:"text-cyan-500",symbol:"\u2192"},success:{color:"text-emerald-500",symbol:"\u2713"},warning:{color:"text-amber-500",symbol:"\u26A0"},processing:{color:"text-purple-500",symbol:"\u27F3"}}[e.level];return jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},transition:{duration:.3},className:"flex items-start gap-2 text-foreground/80",children:[!c&&jsxRuntime.jsx("span",{className:"text-muted-foreground text-[10px]",children:e.timestamp}),jsxRuntime.jsx("span",{className:`${r.color} font-bold`,children:r.symbol}),jsxRuntime.jsx("span",{className:"flex-1 text-[11px]",children:e.message})]})}function z({logs:e,expanded:c,onToggle:x,compact:r=false}){let N=react.useRef(null);return react.useEffect(()=>{N.current&&(N.current.scrollTop=N.current.scrollHeight);},[e]),e.length===0?null:jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.4},className:r?"mt-2":"mt-3 ml-14",children:[jsxRuntime.jsxs("button",{onClick:x,className:`flex items-center gap-${r?"1.5":"2"} text-xs font-mono text-muted-foreground hover:text-foreground transition-colors ${r?"":"px-2 py-1 rounded"}`,children:[c?jsxRuntime.jsx(lucideReact.ChevronDown,{className:"w-3 h-3"}):jsxRuntime.jsx(lucideReact.ChevronRight,{className:"w-3 h-3"}),jsxRuntime.jsx(lucideReact.Terminal,{className:`w-${r?"2.5":"3"} h-${r?"2.5":"3"}`}),jsxRuntime.jsxs("span",{children:[r?"LOG":"SYSTEM LOG"," (",e.length,r?"":" entries",")"]})]}),jsxRuntime.jsx(react$1.AnimatePresence,{children:c&&jsxRuntime.jsx(react$1.motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.3},className:"overflow-hidden",children:jsxRuntime.jsx("div",{ref:N,className:`bg-background border border-border/50 rounded-md p-2 font-mono text-xs ${r?"max-h-24":"max-h-32"} overflow-y-auto space-y-1 mt-2`,children:e.map(y=>jsxRuntime.jsx(Ve,{log:y,compact:r},y.id))})})})]})}function me({substep:e,delay:c}){let[x,r]=react.useState(false);return jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:c,duration:.4},className:"pl-3",children:jsxRuntime.jsxs("div",{className:"flex items-start gap-2.5",children:[jsxRuntime.jsx(react$1.motion.div,{className:`
3
+ w-4 h-4 mt-0.5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-all duration-500
4
+ ${e.completed?"bg-emerald-500 border-emerald-500":"border-border bg-background"}
5
+ `,children:e.completed&&jsxRuntime.jsx(lucideReact.Check,{className:"w-3 h-3 text-white"})}),jsxRuntime.jsxs("div",{className:"flex-1 min-w-0",children:[jsxRuntime.jsx("span",{className:`
6
+ text-sm font-mono transition-colors duration-500
7
+ ${e.completed?"text-foreground":"text-muted-foreground"}
8
+ `,children:e.label}),jsxRuntime.jsx(z,{logs:e.logs,expanded:x,onToggle:()=>r(!x),compact:true})]})]})})}var Q=[{id:"verify",number:1,title:"Document Verification",status:"pending",substeps:[{id:"v1",label:"Validate document template",completed:false,logs:[]},{id:"v2",label:"Check legal requirements",completed:false,logs:[]},{id:"v3",label:"Verify jurisdiction compliance",completed:false,logs:[]},{id:"v4",label:"Generate document metadata",completed:false,logs:[]}],documentSection:"header",logs:[]},{id:"identity",number:2,title:"Identity Validation",status:"pending",substeps:[{id:"i1",label:"Request credential check",completed:false,logs:[]},{id:"i2",label:"Verify biometric data",completed:false,logs:[]},{id:"i3",label:"Cross-reference databases",completed:false,logs:[]},{id:"i4",label:"Confirm identity match",completed:false,logs:[]}],documentSection:"affiant",logs:[]},{id:"statement",number:3,title:"Statement Processing",status:"pending",substeps:[{id:"s1",label:"Parse statement content",completed:false,logs:[]},{id:"s2",label:"Verify factual accuracy",completed:false,logs:[]},{id:"s3",label:"Format legal language",completed:false,logs:[]},{id:"s4",label:"Generate numbered paragraphs",completed:false,logs:[]}],documentSection:"statement",logs:[]},{id:"witness",number:4,title:"Witness Authorization",status:"pending",substeps:[{id:"w1",label:"Verify witness eligibility",completed:false,logs:[]},{id:"w2",label:"Check credential validity",completed:false,logs:[]},{id:"w3",label:"Generate attestation block",completed:false,logs:[]},{id:"w4",label:"Record witness information",completed:false,logs:[]}],documentSection:"witness",logs:[]},{id:"notary",number:5,title:"Notarization",status:"pending",substeps:[{id:"n1",label:"Connect to notary registry",completed:false,logs:[]},{id:"n2",label:"Validate commission status",completed:false,logs:[]},{id:"n3",label:"Generate cryptographic seal",completed:false,logs:[]},{id:"n4",label:"Apply digital signature",completed:false,logs:[]}],documentSection:"notary",logs:[]}],ee={verify:lucideReact.FileText,identity:lucideReact.Shield,statement:lucideReact.FileText,witness:lucideReact.Users,notary:lucideReact.Stamp};function be({step:e,isLast:c,showRipple:x}){let[r,N]=react.useState(false),[y,C]=react.useState(false);react.useEffect(()=>{e.status==="processing"&&N(true);},[e.status]),react.useEffect(()=>{if(e.status==="completed"){let A=setTimeout(()=>{N(false);},800);return ()=>clearTimeout(A)}},[e.status]);let O=ee[e.id]||ee.verify,T=(()=>{switch(e.status){case "completed":return {cardBg:"bg-emerald-500/5",border:"border-emerald-500/30",iconBg:"bg-gradient-to-br from-emerald-500 to-emerald-600",textColor:"text-emerald-600 dark:text-emerald-400"};case "active":return {cardBg:"bg-orange-500/5",border:"border-orange-500/30",iconBg:"bg-gradient-to-br from-orange-500 to-red-500",textColor:"text-orange-600 dark:text-orange-400"};case "processing":return {cardBg:"bg-purple-500/5",border:"border-purple-500/30",iconBg:"bg-gradient-to-br from-purple-500 to-purple-600",textColor:"text-purple-600 dark:text-purple-400"};default:return {cardBg:"bg-muted/20",border:"border-border",iconBg:"bg-muted",textColor:"text-muted-foreground"}}})(),q=e.substeps?.filter(A=>A.completed).length||0,j=e.substeps?.length||0;return jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(react$1.AnimatePresence,{children:x&&jsxRuntime.jsx(react$1.motion.div,{className:"absolute inset-0 rounded-lg bg-emerald-500/20",initial:{scale:1,opacity:.4},animate:{scale:1.05,opacity:0},exit:{opacity:0},transition:{duration:.8,ease:"easeOut"}})}),jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,x:-30},animate:{opacity:1,x:0},transition:{delay:e.number*.15,duration:.5},className:"relative",children:[jsxRuntime.jsx("div",{className:`
9
+ relative p-5 rounded-lg transition-all duration-500 border-2
10
+ ${T.cardBg} ${T.border}
11
+ `,children:jsxRuntime.jsxs("div",{className:"flex items-start gap-4",children:[jsxRuntime.jsx(react$1.motion.div,{className:`
12
+ w-11 h-11 rounded-full flex items-center justify-center flex-shrink-0
13
+ border-2 transition-all duration-500 ${T.iconBg}
14
+ `,initial:{scale:.8},animate:{scale:1},transition:{delay:e.number*.15+.2,type:"spring",stiffness:200},children:e.status==="completed"?jsxRuntime.jsx(lucideReact.Check,{className:"w-5 h-5 text-white"}):e.status==="processing"?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 text-white animate-spin"}):e.status==="active"?jsxRuntime.jsx(O,{className:"w-5 h-5 text-white"}):jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground font-semibold",children:e.number})}),jsxRuntime.jsxs("div",{className:"flex-1 min-w-0",children:[jsxRuntime.jsx("h3",{className:`text-base font-semibold transition-colors duration-500 ${T.textColor}`,children:e.title}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[jsxRuntime.jsxs("p",{className:"text-xs text-muted-foreground font-mono",children:["STEP_",e.number.toString().padStart(2,"0")]}),e.status==="completed"&&jsxRuntime.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-mono border border-emerald-500/20",children:"\u2713 DONE"}),e.status==="completed"&&e.substeps&&jsxRuntime.jsxs("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-mono",children:[q,"/",j," substeps"]})]}),jsxRuntime.jsx(react$1.AnimatePresence,{children:r&&e.substeps&&jsxRuntime.jsx(react$1.motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.4},className:"overflow-hidden",children:jsxRuntime.jsx("div",{className:"mt-4 space-y-3 pl-3 border-l-2 border-purple-500/20",children:e.substeps.map((A,m)=>jsxRuntime.jsx(me,{substep:A,delay:m*.15},A.id))})})})]})]})}),jsxRuntime.jsx(z,{logs:e.logs,expanded:y,onToggle:()=>C(!y)}),!c&&jsxRuntime.jsx(react$1.motion.div,{className:"absolute left-[22px] top-full h-6 w-0.5 bg-border",initial:{scaleY:0},animate:{scaleY:1},transition:{delay:e.number*.15+.4,duration:.3},style:{transformOrigin:"top"}})]})]})}function ye({completedSubsteps:e,documentIds:c}){return jsxRuntime.jsx("div",{className:"relative max-w-4xl mx-auto",children:jsxRuntime.jsxs(react$1.motion.div,{className:"relative bg-gradient-to-br from-[#FDFDF8] to-[#F8F8F0] dark:from-gray-900 dark:to-gray-800 rounded-lg",style:{boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 10px 15px -3px rgba(0, 0, 0, 0.1)"},initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},children:[jsxRuntime.jsx("div",{className:"absolute inset-0 opacity-20 dark:opacity-10 rounded-lg pointer-events-none",style:{backgroundImage:`url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E")`}}),jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center pointer-events-none opacity-[0.02] dark:opacity-[0.04]",children:jsxRuntime.jsx("div",{className:"text-9xl font-bold transform -rotate-45 select-none text-gray-600",children:"OFFICIAL"})}),jsxRuntime.jsxs("div",{className:"relative p-16 space-y-10",style:{fontFamily:'Georgia, "Times New Roman", Times, serif'},children:[jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("v1")&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-b-2 border-cyan-500/20 pb-6",style:{boxShadow:"0 1px 3px rgba(6, 182, 212, 0.1)"},children:jsxRuntime.jsxs("div",{className:"text-center space-y-3",children:[jsxRuntime.jsx(s,{text:"SWORN AFFIDAVIT",delay:.2,className:"text-3xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100"}),e.has("v2")&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(s,{text:"STATE OF [JURISDICTION]",delay:.5,className:"text-sm tracking-widest text-gray-700 dark:text-gray-300"}),jsxRuntime.jsx(s,{text:"COUNTY OF [COUNTY NAME]",delay:.8,className:"text-sm tracking-widest text-gray-700 dark:text-gray-300"})]}),e.has("v4")&&jsxRuntime.jsx(s,{text:`CASE NO. ${c.caseNumber}`,delay:1.1,className:"text-base font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2"})]})})}),jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("i1")&&jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-l-[6px] border-cyan-500/40 pl-6 py-4",style:{boxShadow:"-2px 0 8px rgba(6, 182, 212, 0.1)"},children:[jsxRuntime.jsx(s,{text:"AFFIANT INFORMATION:",delay:.2,className:"text-lg font-extrabold tracking-wide text-cyan-700 dark:text-cyan-400 mb-5 uppercase"}),jsxRuntime.jsx(s,{text:"I, [FULL NAME], being duly sworn, depose and state:",delay:.5,className:"text-base leading-relaxed text-gray-800 dark:text-gray-200 mb-4 italic"}),e.has("i2")&&jsxRuntime.jsxs("div",{className:"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx(s,{text:"Address: [STREET ADDRESS]",delay:.8}),jsxRuntime.jsx(s,{text:"City/State: [CITY, STATE ZIP]",delay:1})]}),e.has("i3")&&jsxRuntime.jsx("div",{className:"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2",children:jsxRuntime.jsx(s,{text:"DOB: [DATE OF BIRTH]",delay:1.2})}),e.has("i4")&&jsxRuntime.jsx("div",{className:"space-y-2 ml-8 text-sm text-gray-700 dark:text-gray-300 mt-2",children:jsxRuntime.jsx(s,{text:"ID Verified: \u2713 CONFIRMED",delay:1.4,className:"text-emerald-600 dark:text-emerald-400 font-bold"})})]})}),e.has("s1")&&jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-l-[6px] border-orange-500/40 pl-6 py-4",style:{boxShadow:"-2px 0 8px rgba(249, 115, 22, 0.1)"},children:[jsxRuntime.jsx(s,{text:"STATEMENT OF FACTS:",delay:.2,className:"text-lg font-extrabold tracking-wide text-orange-700 dark:text-orange-400 mb-5 uppercase"}),jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("s1")&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},className:"mb-5",children:jsxRuntime.jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsxRuntime.jsx(s,{text:"1. That I have personal knowledge of the facts stated herein and am competent to testify to the same.",delay:.3})})})}),jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("s2")&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},className:"mb-5",children:jsxRuntime.jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsxRuntime.jsx(s,{text:"2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]",delay:.3})})})}),jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("s3")&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},className:"mb-5",children:jsxRuntime.jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsxRuntime.jsx(s,{text:"3. That the information provided herein is true and correct to the best of my knowledge and belief.",delay:.3})})})}),jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("s4")&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6},children:jsxRuntime.jsx("div",{className:"ml-8 text-base leading-loose text-gray-800 dark:text-gray-200",children:jsxRuntime.jsx(s,{text:"4. That I understand the penalties for perjury under law.",delay:.3})})})})]}),jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("w1")&&jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-l-[6px] border-purple-500/40 pl-6 py-4",style:{boxShadow:"-2px 0 8px rgba(168, 85, 247, 0.1)"},children:[jsxRuntime.jsx(s,{text:"WITNESS ATTESTATION:",delay:.2,className:"text-lg font-extrabold tracking-wide text-purple-700 dark:text-purple-400 mb-5 uppercase"}),e.has("w2")&&jsxRuntime.jsxs("div",{className:"space-y-2 text-sm text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx(s,{text:"Witnessed by: [WITNESS NAME]",delay:.5}),jsxRuntime.jsx(s,{text:"Witness Address: [ADDRESS]",delay:.7})]}),e.has("w4")&&jsxRuntime.jsxs("div",{className:"mt-8 pt-6 border-t border-gray-300 dark:border-gray-600",children:[jsxRuntime.jsx(react$1.motion.div,{initial:{width:0},animate:{width:"80%"},transition:{delay:.9,duration:.7},className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2"}),jsxRuntime.jsx(s,{text:"Witness Signature",delay:1.1,className:"text-xs text-gray-500 italic"}),jsxRuntime.jsx(s,{text:`Date: ${new Date().toLocaleDateString()}`,delay:1.3,className:"mt-4 text-sm"})]})]})}),jsxRuntime.jsx(react$1.AnimatePresence,{children:e.has("n1")&&jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.8},className:"border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden",style:{boxShadow:"0 4px 12px rgba(16, 185, 129, 0.15)"},children:[e.has("n3")&&jsxRuntime.jsxs(react$1.motion.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},transition:{delay:.5,duration:.8,type:"spring"},className:"absolute right-8 top-1/2 -translate-y-1/2 w-32 h-32 opacity-15",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 rounded-full border-[5px] border-emerald-600",style:{boxShadow:"inset 0 2px 8px rgba(0,0,0,0.3)"}}),jsxRuntime.jsx("div",{className:"absolute inset-2 rounded-full border-2 border-emerald-500"}),jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:jsxRuntime.jsx(lucideReact.Stamp,{className:"w-12 h-12 text-emerald-600"})})]}),jsxRuntime.jsx(s,{text:"NOTARY PUBLIC CERTIFICATION:",delay:.2,className:"text-lg font-extrabold tracking-wide text-emerald-700 dark:text-emerald-400 mb-5 uppercase"}),jsxRuntime.jsxs("div",{className:"space-y-2 text-sm text-gray-700 dark:text-gray-300 pr-36",children:[e.has("n1")&&jsxRuntime.jsx(s,{text:`Subscribed and sworn before me this ${new Date().toLocaleDateString()}`,delay:.5,className:"leading-relaxed"}),e.has("n2")&&jsxRuntime.jsxs("div",{className:"my-4 border-t border-gray-300 dark:border-gray-600 pt-4",children:[jsxRuntime.jsx(s,{text:"Notary Public: [NOTARY NAME]",delay:.8}),jsxRuntime.jsx(s,{text:"Commission Number: [NUMBER]",delay:1}),jsxRuntime.jsx(s,{text:`My Commission Expires: ${new Date(Date.now()+365*24*60*60*1e3).toLocaleDateString()}`,delay:1.2})]}),e.has("n4")&&jsxRuntime.jsxs("div",{className:"mt-8 pt-4",children:[jsxRuntime.jsx(react$1.motion.div,{initial:{width:0},animate:{width:"75%"},transition:{delay:1.5,duration:.7},className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2"}),jsxRuntime.jsx(s,{text:"Notary Signature",delay:1.7,className:"text-xs text-gray-500 italic"})]})]}),e.has("n3")&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:1.9},className:"absolute bottom-4 left-6 px-3 py-1.5 border-2 border-emerald-600/50 rounded text-xs font-mono text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-500/10",children:"[OFFICIAL SEAL]"})]})})]})]})})}function s({text:e,delay:c,className:x=""}){let[r,N]=react.useState(""),[y,C]=react.useState(true);return react.useEffect(()=>{let O=setTimeout(()=>{let I=0,T=setInterval(()=>{I<=e.length?(N(e.slice(0,I)),I++):(clearInterval(T),setTimeout(()=>C(false),300));},25);return ()=>clearInterval(T)},c*1e3);return ()=>clearTimeout(O)},[e,c]),jsxRuntime.jsxs("div",{className:`${x} font-serif`,style:{lineHeight:"1.8"},children:[r,y&&jsxRuntime.jsx(react$1.motion.span,{className:"inline-block w-0.5 h-4 bg-cyan-500 ml-1",animate:{opacity:[1,0]},transition:{duration:.7,repeat:1/0}})]})}function ve({documentIds:e}){return jsxRuntime.jsxs("div",{className:"p-12 space-y-8",style:{fontFamily:'Georgia, "Times New Roman", Times, serif'},children:[jsxRuntime.jsx("div",{className:"border-b-2 border-cyan-500/20 pb-6",children:jsxRuntime.jsxs("div",{className:"text-center space-y-2",children:[jsxRuntime.jsx("div",{className:"text-2xl font-extrabold tracking-widest text-gray-900 dark:text-gray-100",children:"SWORN AFFIDAVIT"}),jsxRuntime.jsx("div",{className:"text-xs tracking-widest text-gray-700 dark:text-gray-300",children:"STATE OF [JURISDICTION]"}),jsxRuntime.jsx("div",{className:"text-xs tracking-widest text-gray-700 dark:text-gray-300",children:"COUNTY OF [COUNTY NAME]"}),jsxRuntime.jsxs("div",{className:"text-sm font-bold text-cyan-600 dark:text-cyan-400 tracking-wider mt-2",children:["CASE NO. ",e.caseNumber]})]})}),jsxRuntime.jsxs("div",{className:"border-l-[6px] border-cyan-500/40 pl-6 py-4",children:[jsxRuntime.jsx("div",{className:"text-base font-extrabold tracking-wide text-cyan-700 dark:text-cyan-400 mb-4 uppercase",children:"AFFIANT INFORMATION:"}),jsxRuntime.jsx("div",{className:"text-sm leading-relaxed text-gray-800 dark:text-gray-200 mb-3 italic",children:"I, [FULL NAME], being duly sworn, depose and state:"}),jsxRuntime.jsxs("div",{className:"space-y-1 ml-8 text-xs text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx("div",{children:"Address: [STREET ADDRESS]"}),jsxRuntime.jsx("div",{children:"City/State: [CITY, STATE ZIP]"}),jsxRuntime.jsx("div",{children:"DOB: [DATE OF BIRTH]"}),jsxRuntime.jsx("div",{className:"text-emerald-600 dark:text-emerald-400 font-bold",children:"ID Verified: \u2713 CONFIRMED"})]})]}),jsxRuntime.jsxs("div",{className:"border-l-[6px] border-orange-500/40 pl-6 py-4",children:[jsxRuntime.jsx("div",{className:"text-base font-extrabold tracking-wide text-orange-700 dark:text-orange-400 mb-4 uppercase",children:"STATEMENT OF FACTS:"}),jsxRuntime.jsxs("div",{className:"space-y-3 ml-8 text-sm leading-loose text-gray-800 dark:text-gray-200",children:[jsxRuntime.jsx("div",{children:"1. That I have personal knowledge of the facts stated herein and am competent to testify to the same."}),jsxRuntime.jsx("div",{children:"2. That on or about [DATE], the following events occurred: [DETAILED STATEMENT OF MATERIAL FACTS]"}),jsxRuntime.jsx("div",{children:"3. That the information provided herein is true and correct to the best of my knowledge and belief."}),jsxRuntime.jsx("div",{children:"4. That I understand the penalties for perjury under law."})]})]}),jsxRuntime.jsxs("div",{className:"border-l-[6px] border-purple-500/40 pl-6 py-4",children:[jsxRuntime.jsx("div",{className:"text-base font-extrabold tracking-wide text-purple-700 dark:text-purple-400 mb-4 uppercase",children:"WITNESS ATTESTATION:"}),jsxRuntime.jsxs("div",{className:"space-y-2 text-xs text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx("div",{children:"Witnessed by: [WITNESS NAME]"}),jsxRuntime.jsx("div",{children:"Witness Address: [ADDRESS]"})]}),jsxRuntime.jsxs("div",{className:"mt-6 pt-4 border-t border-gray-300 dark:border-gray-600",children:[jsxRuntime.jsx("div",{className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-3/4"}),jsxRuntime.jsx("div",{className:"text-xs text-gray-500 italic",children:"Witness Signature"}),jsxRuntime.jsxs("div",{className:"mt-3 text-xs",children:["Date: ",new Date().toLocaleDateString()]})]})]}),jsxRuntime.jsxs("div",{className:"border-2 border-emerald-500/40 rounded-lg p-6 bg-emerald-500/5 relative overflow-hidden",children:[jsxRuntime.jsxs("div",{className:"absolute right-8 top-1/2 -translate-y-1/2 w-24 h-24 opacity-15",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 rounded-full border-[4px] border-emerald-600"}),jsxRuntime.jsx("div",{className:"absolute inset-2 rounded-full border-2 border-emerald-500"}),jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:jsxRuntime.jsx(lucideReact.Stamp,{className:"w-10 h-10 text-emerald-600"})})]}),jsxRuntime.jsx("div",{className:"text-base font-extrabold tracking-wide text-emerald-700 dark:text-emerald-400 mb-4 uppercase",children:"NOTARY PUBLIC CERTIFICATION:"}),jsxRuntime.jsxs("div",{className:"space-y-2 text-xs text-gray-700 dark:text-gray-300 pr-28",children:[jsxRuntime.jsxs("div",{className:"leading-relaxed",children:["Subscribed and sworn before me this ",new Date().toLocaleDateString()]}),jsxRuntime.jsxs("div",{className:"my-3 border-t border-gray-300 dark:border-gray-600 pt-3 space-y-1",children:[jsxRuntime.jsx("div",{children:"Notary Public: [NOTARY NAME]"}),jsxRuntime.jsx("div",{children:"Commission Number: [NUMBER]"}),jsxRuntime.jsxs("div",{children:["My Commission Expires: ",new Date(Date.now()+365*24*60*60*1e3).toLocaleDateString()]})]}),jsxRuntime.jsxs("div",{className:"mt-6 pt-3",children:[jsxRuntime.jsx("div",{className:"border-b-2 border-gray-800 dark:border-gray-400 mb-2 w-2/3"}),jsxRuntime.jsx("div",{className:"text-xs text-gray-500 italic",children:"Notary Signature"})]})]}),jsxRuntime.jsx("div",{className:"absolute bottom-4 left-6 px-3 py-1.5 border-2 border-emerald-600/50 rounded text-xs font-mono text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-500/10",children:"[OFFICIAL SEAL]"})]})]})}function he({show:e,onClose:c,documentIds:x,metrics:r}){return jsxRuntime.jsx(react$1.AnimatePresence,{children:e&&jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.5},className:"absolute inset-0 z-50 bg-background/98 backdrop-blur-sm",children:[jsxRuntime.jsx(react$1.motion.button,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{delay:1.5,duration:.4},onClick:c,className:"absolute top-6 right-6 z-60 p-3 rounded-full bg-background border-2 border-border hover:border-orange-500/50 transition-all shadow-lg group",children:jsxRuntime.jsx(lucideReact.X,{className:"w-5 h-5 text-muted-foreground group-hover:text-orange-500 transition-colors"})}),jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,scale:0},animate:{opacity:[0,1,1,0],scale:[.5,1.5,1.5,2]},transition:{duration:2,times:[0,.2,.8,1]},className:"absolute inset-0 pointer-events-none",children:jsxRuntime.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-orange-500/5 via-transparent to-emerald-500/5"})}),[...Array(12)].map((N,y)=>jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,scale:0,x:"50%",y:"50%"},animate:{opacity:[0,1,0],scale:[0,1,0],x:`${50+Math.cos(y/12*Math.PI*2)*40}%`,y:`${50+Math.sin(y/12*Math.PI*2)*40}%`},transition:{duration:1.5,delay:y*.1,ease:"easeOut"},className:"absolute top-1/2 left-1/2 pointer-events-none",children:jsxRuntime.jsx(lucideReact.Sparkles,{className:"w-6 h-6 text-orange-500"})},y)),jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:-30},animate:{opacity:1,y:0},transition:{delay:.8,duration:.6},className:"absolute top-8 left-1/2 -translate-x-1/2 z-50 text-center",children:[jsxRuntime.jsx("h2",{className:"text-3xl font-bold bg-gradient-to-r from-orange-500 via-red-500 to-emerald-500 bg-clip-text text-transparent mb-2",children:"Document Assembly Complete"}),jsxRuntime.jsxs("p",{className:"text-sm text-muted-foreground font-mono",children:["LEGAL-",x.fileNumber,".pdf \u2022 ",r.tokens.toLocaleString()," tokens \u2022 $",r.cost.toFixed(4)," \u2022 ",r.elapsed.toFixed(1),"s"]})]}),jsxRuntime.jsx(react$1.motion.div,{initial:{scale:1.5,opacity:0,y:100},animate:{scale:1,opacity:1,y:0},transition:{delay:1.2,duration:1.2,type:"spring",stiffness:80,damping:20},className:"h-full w-full flex items-center justify-center pt-28 pb-12 px-12 overflow-hidden",children:jsxRuntime.jsxs("div",{className:"relative w-full max-w-3xl h-full",children:[jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:2,duration:.5},className:"absolute -bottom-6 left-1/2 -translate-x-1/2 w-3/4 h-8 bg-gradient-to-b from-black/20 to-transparent blur-2xl rounded-full"}),jsxRuntime.jsx(react$1.motion.div,{initial:{boxShadow:"0 0 0 rgba(249, 115, 22, 0)"},animate:{boxShadow:["0 0 0 rgba(249, 115, 22, 0)","0 0 60px rgba(249, 115, 22, 0.3)","0 0 40px rgba(249, 115, 22, 0.2)"]},transition:{duration:2,times:[0,.5,1],delay:2},className:"relative bg-gradient-to-br from-[#FDFDF8] to-[#F8F8F0] dark:from-gray-900 dark:to-gray-800 rounded-lg overflow-hidden h-full border-2 border-border/50",style:{boxShadow:"0 30px 60px -12px rgba(0, 0, 0, 0.35), 0 20px 25px -5px rgba(0, 0, 0, 0.15)"},children:jsxRuntime.jsx("div",{className:"h-full overflow-y-auto",children:jsxRuntime.jsx(ve,{documentIds:x})})})]})})]})})}var te={verify:[["info","Initializing document verification system..."],["processing","Loading verification protocols v3.2.1"],["success","Protocols loaded successfully"]],identity:[["info","Starting identity validation sequence"],["processing","Establishing secure connection"],["success","Connection established"]],statement:[["info","Initializing statement processing pipeline"],["processing","Loading NLP models for legal analysis"],["success","Models loaded successfully"]],witness:[["info","Starting witness authorization protocol"],["processing","Initializing verification systems"],["success","Systems initialized"]],notary:[["info","Initiating notarization sequence"],["processing","Preparing secure connection"],["success","Ready for notarization"]]},ae={v1:[["info","Loading document template..."],["processing","Validating template structure"],["info","Checking template version"],["success","Template validated: SWORN_AFFIDAVIT_STD v2.1"]],v2:[["info","Scanning legal requirements database..."],["processing","Cross-referencing state regulations"],["info","Validating federal compliance"],["success","Legal requirements verified"]],v3:[["info","Determining jurisdiction..."],["processing","Checking state-specific requirements"],["info","Validating county regulations"],["success","Jurisdiction compliance: CONFIRMED"]],v4:[["info","Generating document metadata..."],["processing","Creating unique document ID"],["info","Assigning case number"],["success","Metadata generated successfully"]],i1:[["info","Requesting credential verification..."],["processing","Connecting to identity API"],["info","Sending authentication request"],["success","Credentials authenticated"]],i2:[["info","Initiating biometric verification..."],["processing","Running facial recognition scan"],["info","Analyzing biometric markers"],["success","Biometric data verified: 99.2% match"]],i3:[["info","Accessing identity databases..."],["processing","Cross-referencing government records"],["info","Validating social security records"],["success","Database cross-reference complete"]],i4:[["info","Confirming identity match..."],["processing","Aggregating verification results"],["info","Performing final validation"],["success","Identity confirmed: VERIFIED"]],s1:[["info","Parsing statement content..."],["processing","Tokenizing input text"],["info","Extracting semantic structure"],["success","Content parsed: 847 tokens"]],s2:[["info","Verifying factual accuracy..."],["processing","Running fact-checking algorithms"],["info","Cross-referencing with knowledge base"],["success","Accuracy verified: 98.7% confidence"]],s3:[["info","Formatting legal language..."],["processing","Applying legal terminology standards"],["info","Restructuring paragraphs per jurisdiction"],["success","Legal format applied successfully"]],s4:[["info","Generating numbered paragraphs..."],["processing","Creating hierarchical structure"],["info","Applying citation formatting"],["success","Paragraphs generated: 4 sections"]],w1:[["info","Checking witness eligibility..."],["processing","Verifying age requirements"],["info","Validating witness capacity"],["success","Witness eligibility: CONFIRMED"]],w2:[["info","Validating witness credentials..."],["processing","Checking identification documents"],["info","Verifying witness signature authority"],["success","Credentials validated successfully"]],w3:[["info","Generating attestation block..."],["processing","Creating witness declaration"],["info","Formatting attestation language"],["success","Attestation block generated"]],w4:[["info","Recording witness information..."],["processing","Storing witness metadata"],["info","Generating witness certificate"],["success","Witness information recorded"]],n1:[["info","Connecting to notary public registry..."],["processing","Establishing secure connection"],["info","Authenticating registry access"],["success","Registry connection established"]],n2:[["info","Validating notary commission..."],["processing","Checking commission status"],["info","Verifying commission expiration date"],["success","Commission status: ACTIVE"]],n3:[["info","Generating cryptographic seal..."],["processing","Creating digital signature"],["info","Applying encryption protocols"],["success","Cryptographic seal generated"]],n4:[["info","Applying digital signature..."],["processing","Embedding signature metadata"],["info","Finalizing document certification"],["success","Notarization complete - Document sealed"]]};function at({steps:e,stepLogs:c,substepLogs:x,autoScroll:r=true,showWholeDocumentView:N=true,documentIds:y,animationSpeed:C=1,onComplete:O,onStepComplete:I,className:T}){let q=e??Q.map(p=>({...p,logs:[],substeps:p.substeps?.map(a=>({...a,logs:[],completed:false}))})),j=c??te,A=x??ae,[m,B]=react.useState(q),[Se,ke]=react.useState(new Set),[H,Te]=react.useState(new Set),[L,J]=react.useState({tokens:0,cost:0,elapsed:0}),[Ae,oe]=react.useState(null),[se,Ee]=react.useState(0),_=react.useRef(null),[De,re]=react.useState(false),Z=react.useRef(y??{caseNumber:Date.now().toString().slice(-8),fileNumber:Date.now().toString().slice(-6)}).current,w=p=>new Promise(a=>setTimeout(a,p/C)),Ce=(p,a,M,U)=>{let n=new Date().toLocaleTimeString("en-US",{hour12:false,hour:"2-digit",minute:"2-digit",second:"2-digit"}),f={id:`${Date.now()}-${Math.random()}`,timestamp:n,level:M,message:U};B(S=>S.map((v,R)=>R===p?a&&v.substeps?{...v,substeps:v.substeps.map(V=>V.id===a?{...V,logs:[...V.logs,f]}:V)}:{...v,logs:[...v.logs,f]}:v));},ne=async(p,a,M)=>{for(let[U,n]of M)await w(250+Math.random()*300),Ce(p,a,U,n);},Ie=m.length,le=m.filter(p=>p.status==="completed").length/Ie*100;return react.useEffect(()=>{if(r&&_.current&&H.size>0){let p=setTimeout(()=>{_.current?.scrollTo({top:_.current.scrollHeight,behavior:"smooth"});},400/C);return ()=>clearTimeout(p)}},[H,r,C]),react.useEffect(()=>{(async()=>{for(let a=0;a<m.length;a++){await w(800),B(n=>n.map((f,S)=>S===a?{...f,status:"active"}:f)),Ee(a);let M=j[m[a].id];if(M&&await ne(a,null,M),m[a].substeps){await w(600),B(n=>n.map((f,S)=>S===a?{...f,status:"processing"}:f));for(let n=0;n<m[a].substeps.length;n++){let f=m[a].substeps[n].id;await w(500);let S=A[f];S&&await ne(a,f,S),await w(400),B(v=>v.map((R,V)=>{if(V===a&&R.substeps){let X=[...R.substeps];return X[n]={...X[n],completed:true},{...R,substeps:X}}return R})),J(v=>({tokens:v.tokens+Math.floor(Math.random()*150+50),cost:v.cost+Math.random()*.002,elapsed:v.elapsed+Math.random()*.8})),Te(v=>new Set([...v,f])),await w(300);}}else await w(600);oe(m[a].id),await w(200),B(n=>n.map((f,S)=>S===a?{...f,status:"completed"}:f)),m[a].documentSection&&(await w(500),ke(n=>new Set([...n,m[a].documentSection]))),await w(400),oe(null);let U={tokens:L.tokens+Math.floor(Math.random()*200+100),cost:L.cost+Math.random()*.005,elapsed:L.elapsed+Math.random()*1.2};J(n=>({tokens:n.tokens+Math.floor(Math.random()*200+100),cost:n.cost+Math.random()*.005,elapsed:n.elapsed+Math.random()*1.2})),I&&I(m[a],U);}N&&re(true),O&&J(a=>(O(a),a));})();},[]),jsxRuntime.jsxs("div",{className:`relative w-full h-screen overflow-hidden bg-background flex flex-col ${T??""}`,children:[jsxRuntime.jsx("div",{className:"absolute inset-0 opacity-[0.03] dark:opacity-[0.08]",children:jsxRuntime.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",children:[jsxRuntime.jsx("defs",{children:jsxRuntime.jsx("pattern",{id:"grid",width:"40",height:"40",patternUnits:"userSpaceOnUse",children:jsxRuntime.jsx("path",{d:"M 40 0 L 0 0 0 40",fill:"none",stroke:"currentColor",strokeWidth:"0.5",className:"text-orange-500"})})}),jsxRuntime.jsx("rect",{width:"100%",height:"100%",fill:"url(#grid)"})]})}),jsxRuntime.jsx("div",{className:"absolute top-0 left-0 right-0 z-50",children:jsxRuntime.jsx(react$1.motion.div,{className:"h-0.5 bg-gradient-to-r from-orange-500 to-red-500",initial:{width:"0%"},animate:{width:`${le}%`},transition:{duration:.8,ease:"easeOut"}})}),jsxRuntime.jsxs("div",{className:"relative z-10 flex flex-1 overflow-hidden",children:[jsxRuntime.jsx("div",{className:"w-1/3 border-r border-border/50 p-8 overflow-y-auto",children:jsxRuntime.jsxs("div",{className:"max-w-xl mx-auto",children:[jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:-20},animate:{opacity:1,y:0},transition:{duration:.6},className:"mb-12",children:[jsxRuntime.jsx("h1",{className:"text-3xl font-bold mb-2 bg-gradient-to-r from-orange-500 to-red-500 bg-clip-text text-transparent",children:"Sworn Affidavit Assembly"}),jsxRuntime.jsxs("p",{className:"text-muted-foreground font-mono text-xs tracking-wider",children:["System Status: ",jsxRuntime.jsx("span",{className:`font-semibold ${se===m.length?"text-emerald-500":"text-orange-500"}`,children:se===m.length?"COMPLETE":"PROCESSING"})]})]}),jsxRuntime.jsx("div",{className:"space-y-6 relative",children:m.map((p,a)=>jsxRuntime.jsx(be,{step:p,isLast:a===m.length-1,showRipple:Ae===p.id},p.id))})]})}),jsxRuntime.jsx("div",{className:"w-2/3 bg-gradient-to-br from-muted/20 to-muted/5 overflow-hidden relative",children:jsxRuntime.jsxs("div",{className:"h-full flex flex-col relative z-10",children:[jsxRuntime.jsx("div",{className:"p-6 border-b border-border/50 bg-background/50 backdrop-blur-sm",children:jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsx("div",{className:"p-2 rounded-lg bg-cyan-500/10 border border-cyan-500/20",children:jsxRuntime.jsx(lucideReact.FileText,{className:"w-5 h-5 text-cyan-600 dark:text-cyan-400"})}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h2",{className:"text-foreground font-semibold",children:"Assembled Document"}),jsxRuntime.jsxs("p",{className:"text-muted-foreground text-xs mt-0.5 font-mono",children:["LEGAL-",Z.fileNumber,".pdf"]})]})]}),le===100&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},className:"px-4 py-2 rounded-full bg-gradient-to-r from-orange-500/20 to-red-500/20 border border-orange-500/30",children:jsxRuntime.jsx("span",{className:"text-sm font-semibold bg-gradient-to-r from-orange-600 to-red-600 bg-clip-text text-transparent",children:"100% Complete"})})]})}),jsxRuntime.jsx("div",{className:"flex-1 overflow-y-auto p-12",ref:_,children:jsxRuntime.jsx(ye,{completedSections:Se,completedSubsteps:H,documentIds:Z})})]})})]}),jsxRuntime.jsx("div",{className:"relative z-20 border-t border-border/50 p-4 bg-background/95 backdrop-blur-sm",children:jsxRuntime.jsxs("div",{className:"flex justify-center items-center gap-6 max-w-5xl mx-auto",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-orange-500/5 border border-orange-500/20",children:[jsxRuntime.jsx(lucideReact.Zap,{className:"w-4 h-4 text-orange-500"}),jsxRuntime.jsxs("div",{className:"flex flex-col",children:[jsxRuntime.jsx("span",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-wider",children:"Tokens"}),jsxRuntime.jsx("span",{className:"text-base font-bold text-orange-600 dark:text-orange-400 tabular-nums",children:L.tokens.toLocaleString()})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-emerald-500/5 border border-emerald-500/20",children:[jsxRuntime.jsx(lucideReact.DollarSign,{className:"w-4 h-4 text-emerald-500"}),jsxRuntime.jsxs("div",{className:"flex flex-col",children:[jsxRuntime.jsx("span",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-wider",children:"Cost"}),jsxRuntime.jsxs("span",{className:"text-base font-bold text-emerald-600 dark:text-emerald-400 tabular-nums",children:["$",L.cost.toFixed(4)]})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 px-5 py-2.5 rounded-lg bg-purple-500/5 border border-purple-500/20",children:[jsxRuntime.jsx(lucideReact.Clock,{className:"w-4 h-4 text-purple-500"}),jsxRuntime.jsxs("div",{className:"flex flex-col",children:[jsxRuntime.jsx("span",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-wider",children:"Elapsed"}),jsxRuntime.jsxs("span",{className:"text-base font-bold text-purple-600 dark:text-purple-400 tabular-nums",children:[L.elapsed.toFixed(1),"s"]})]})]})]})}),jsxRuntime.jsx(he,{show:De,onClose:()=>re(false),documentIds:Z,metrics:L})]})}
15
+ exports.BlueprintDocumentAssembly=at;exports.DEFAULT_STEPS=Q;exports.DEFAULT_STEP_LOGS=te;exports.DEFAULT_SUBSTEP_LOGS=ae;//# sourceMappingURL=index.js.map
16
+ //# sourceMappingURL=index.js.map