@@ -95,69 +95,77 @@ export const FullTechniquesProgress: React.FC<FullTechniquesProgressProps> = ({
9595 ) ) }
9696 </ div >
9797
98- { ( state . currentStage === 'deep_synthesis' || state . currentStage === 'quality_gate' || state . currentStage === 'complete' ) && (
99- < div className = "fixed inset-0 bg-black/20 backdrop-blur-sm z-40 flex items-center justify-center p-4 animate-in fade-in duration-500" >
100- < div className = "bg-white rounded-2xl shadow-2xl p-8 max-w-md w-full text-center border border-[#722F37]/20 relative overflow-hidden" >
101-
102- < div className = "absolute top-0 left-0 w-full h-2 bg-gradient-to-r from-[#722F37] via-[#DAA520] to-[#722F37]" />
103-
104- { state . currentStage === 'complete' ? (
105- < div className = "space-y-6" >
106- < div className = "w-20 h-20 bg-emerald-100 rounded-full flex items-center justify-center mx-auto mb-4" >
107- < CheckCircle2 className = "w-10 h-10 text-emerald-600" />
108- </ div >
109- < div >
110- < h2 className = "text-2xl font-bold text-[#722F37] mb-2" > Analysis Complete</ h2 >
111- < p className = "text-gray-600" > Your vintage report is ready.</ p >
112- </ div >
113- { state . totalScore !== undefined && (
114- < div className = "py-4" >
115- < span className = { `text-5xl font-bold ${ getScoreColor ( state . totalScore ) } ` } >
116- { state . totalScore }
117- </ span >
118- < span className = "text-gray-400 text-xl" > /100</ span >
119- </ div >
120- ) }
121- < button
122- onClick = { ( ) => router . push ( `/evaluate/${ evaluationId } /result` ) }
123- className = "w-full py-3 bg-[#722F37] text-white rounded-lg font-semibold hover:bg-[#5A252C] transition-colors"
124- >
125- View Report
126- </ button >
98+ < div
99+ className = { `fixed inset-0 bg-black/20 backdrop-blur-sm z-40 flex items-center justify-center p-4 transition-opacity duration-500 ${
100+ ( state . currentStage === 'deep_synthesis' || state . currentStage === 'quality_gate' || state . currentStage === 'complete' )
101+ ? 'opacity-100'
102+ : 'opacity-0 pointer-events-none'
103+ } `}
104+ style = { { visibility : ( state . currentStage === 'deep_synthesis' || state . currentStage === 'quality_gate' || state . currentStage === 'complete' ) ? 'visible' : 'hidden' } }
105+ >
106+ < div className = "bg-white rounded-2xl shadow-2xl p-8 max-w-md w-full text-center border border-[#722F37]/20 relative overflow-hidden" >
107+
108+ < div className = "absolute top-0 left-0 w-full h-2 bg-gradient-to-r from-[#722F37] via-[#DAA520] to-[#722F37]" />
109+
110+ < div className = { state . currentStage === 'complete' ? 'block' : 'hidden' } >
111+ < div className = "space-y-6" >
112+ < div className = "w-20 h-20 bg-emerald-100 rounded-full flex items-center justify-center mx-auto mb-4" >
113+ < CheckCircle2 className = "w-10 h-10 text-emerald-600" />
127114 </ div >
128- ) : (
129- < div className = "space-y-6" >
130- < div className = "w-20 h-20 bg-[#FAF4E8] rounded-full flex items-center justify-center mx-auto mb-4 relative" >
131- < Sparkles className = "w-10 h-10 text-[#DAA520] animate-pulse" />
132- < div className = "absolute inset-0 border-4 border-[#DAA520]/30 rounded-full border-t-[#DAA520] animate-spin" />
133- </ div >
134- < div >
135- < h2 className = "text-2xl font-bold text-[#722F37] mb-2" >
136- { state . currentStage === 'deep_synthesis' ? 'Deep Synthesis' : 'Quality Gate' }
137- </ h2 >
138- < p className = "text-gray-600" >
139- { state . currentStage === 'deep_synthesis'
140- ? 'Connecting patterns across categories...'
141- : 'Finalizing scores and recommendations...' }
142- </ p >
143- </ div >
115+ < div >
116+ < h2 className = "text-2xl font-bold text-[#722F37] mb-2" > Analysis Complete</ h2 >
117+ < p className = "text-gray-600" > Your vintage report is ready.</ p >
144118 </ div >
145- ) }
119+ < div className = { `py-4 ${ state . totalScore !== undefined ? 'block' : 'hidden' } ` } >
120+ < span className = { `text-5xl font-bold ${ getScoreColor ( state . totalScore ?? 0 ) } ` } >
121+ { state . totalScore ?? 0 }
122+ </ span >
123+ < span className = "text-gray-400 text-xl" > /100</ span >
124+ </ div >
125+ < button
126+ onClick = { ( ) => router . push ( `/evaluate/${ evaluationId } /result` ) }
127+ className = "w-full py-3 bg-[#722F37] text-white rounded-lg font-semibold hover:bg-[#5A252C] transition-colors"
128+ >
129+ View Report
130+ </ button >
131+ </ div >
132+ </ div >
133+
134+ < div className = { state . currentStage !== 'complete' ? 'block' : 'hidden' } >
135+ < div className = "space-y-6" >
136+ < div className = "w-20 h-20 bg-[#FAF4E8] rounded-full flex items-center justify-center mx-auto mb-4 relative" >
137+ < Sparkles className = "w-10 h-10 text-[#DAA520] animate-pulse" />
138+ < div className = "absolute inset-0 border-4 border-[#DAA520]/30 rounded-full border-t-[#DAA520] animate-spin" />
139+ </ div >
140+ < div >
141+ < h2 className = "text-2xl font-bold text-[#722F37] mb-2" >
142+ { state . currentStage === 'deep_synthesis' ? 'Deep Synthesis' : 'Quality Gate' }
143+ </ h2 >
144+ < p className = "text-gray-600" >
145+ { state . currentStage === 'deep_synthesis'
146+ ? 'Connecting patterns across categories...'
147+ : 'Finalizing scores and recommendations...' }
148+ </ p >
149+ </ div >
150+ </ div >
146151 </ div >
147152 </ div >
148- ) }
153+ </ div >
149154
150- { state . error && (
151- < div className = "fixed bottom-4 right-4 max-w-md bg-white border-l-4 border-red-500 shadow-lg rounded-r-lg p-4 animate-in slide-in-from-right" >
152- < div className = "flex items-start gap-3" >
153- < AlertTriangle className = "text-red-500 flex-shrink-0" />
154- < div >
155- < h3 className = "font-bold text-gray-900" > Error</ h3 >
156- < p className = "text-sm text-gray-600" > { state . error } </ p >
157- </ div >
155+ < div
156+ className = { `fixed bottom-4 right-4 max-w-md bg-white border-l-4 border-red-500 shadow-lg rounded-r-lg p-4 transition-all duration-300 ${
157+ state . error ? 'opacity-100 translate-x-0' : 'opacity-0 translate-x-full pointer-events-none'
158+ } `}
159+ style = { { visibility : state . error ? 'visible' : 'hidden' } }
160+ >
161+ < div className = "flex items-start gap-3" >
162+ < AlertTriangle className = "text-red-500 flex-shrink-0" />
163+ < div >
164+ < h3 className = "font-bold text-gray-900" > Error</ h3 >
165+ < p className = "text-sm text-gray-600" > { state . error || '' } </ p >
158166 </ div >
159167 </ div >
160- ) }
168+ </ div >
161169
162170 </ main >
163171 </ div >
0 commit comments