Álvaro Valenzuela Valdes commited on
Commit
b143c59
·
1 Parent(s): d2b2c3f

style: final aesthetic polish with radial charts and cinematic sync experience

Browse files
frontend/components/Dashboard.tsx CHANGED
@@ -195,29 +195,53 @@ export default function Dashboard({
195
  </div>
196
  </div>
197
 
198
- {/* Deadline Status */}
199
- <div className="rounded-3xl border border-slate-800 bg-slate-950/80 p-6">
200
- <h3 className="text-sm uppercase tracking-widest text-slate-400 mb-6 font-semibold">{t.deadlines}</h3>
201
- <div className="space-y-6 pt-2">
202
- <div className="flex items-center gap-4">
203
- <div className="h-12 w-1.5 bg-red-500 rounded-full" />
204
- <div>
205
- <div className="text-2xl font-bold text-white">{deadlineStatus.urgent}</div>
206
- <div className="text-xs text-slate-500">Cierre en menos de 7 días</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  </div>
208
  </div>
209
- <div className="flex items-center gap-4">
210
- <div className="h-12 w-1.5 bg-amber-500 rounded-full" />
211
- <div>
212
- <div className="text-2xl font-bold text-white">{deadlineStatus.near}</div>
213
- <div className="text-xs text-slate-500">Cierre en 7-21 días</div>
 
 
 
214
  </div>
215
- </div>
216
- <div className="flex items-center gap-4">
217
- <div className="h-12 w-1.5 bg-green-500 rounded-full" />
218
- <div>
219
- <div className="text-2xl font-bold text-white">{deadlineStatus.far}</div>
220
- <div className="text-xs text-slate-500">Más de 21 días</div>
 
 
 
 
 
 
 
221
  </div>
222
  </div>
223
  </div>
 
195
  </div>
196
  </div>
197
 
198
+ {/* Deadline Status - Enhanced Visual */}
199
+ <div className="rounded-3xl border border-white/5 bg-slate-950/80 p-8 relative overflow-hidden group hover:border-purple-500/20 transition-all duration-500">
200
+ <div className="absolute -right-10 -bottom-10 w-40 h-40 bg-purple-500/5 blur-3xl group-hover:bg-purple-500/10 transition-colors" />
201
+ <h3 className="text-[10px] uppercase tracking-[0.2em] text-slate-500 mb-8 font-black">{t.deadlines}</h3>
202
+
203
+ <div className="flex items-center gap-10">
204
+ <div className="relative w-32 h-32 flex items-center justify-center">
205
+ {/* Complex Radial Background with Multiple Segments via CSS Gradients */}
206
+ <div
207
+ className="absolute inset-0 rounded-full border-[10px] border-white/5 shadow-inner"
208
+ style={{
209
+ background: `conic-gradient(
210
+ #ef4444 0% ${((deadlineStatus.urgent / Math.max(1, tenders.length)) * 100).toFixed(1)}%,
211
+ #f59e0b ${((deadlineStatus.urgent / Math.max(1, tenders.length)) * 100).toFixed(1)}% ${(((deadlineStatus.urgent + deadlineStatus.near) / Math.max(1, tenders.length)) * 100).toFixed(1)}%,
212
+ #22c55e ${(((deadlineStatus.urgent + deadlineStatus.near) / Math.max(1, tenders.length)) * 100).toFixed(1)}% 100%
213
+ )`,
214
+ maskImage: 'radial-gradient(transparent 58%, black 60%)',
215
+ WebkitMaskImage: 'radial-gradient(transparent 58%, black 60%)'
216
+ }}
217
+ />
218
+ <div className="text-center">
219
+ <div className="text-3xl font-black text-white">{tenders.length}</div>
220
+ <div className="text-[8px] font-bold text-slate-500 uppercase tracking-tighter">Total</div>
221
  </div>
222
  </div>
223
+
224
+ <div className="flex-1 space-y-4">
225
+ <div className="flex items-center justify-between group/row">
226
+ <div className="flex items-center gap-2">
227
+ <div className="w-1.5 h-1.5 rounded-full bg-red-500 shadow-[0_0_8px_rgba(239,68,68,0.5)]" />
228
+ <span className="text-[11px] text-slate-400 group-hover/row:text-red-400 transition-colors">Urgent</span>
229
+ </div>
230
+ <span className="text-xs font-bold text-white">{deadlineStatus.urgent}</span>
231
  </div>
232
+ <div className="flex items-center justify-between group/row">
233
+ <div className="flex items-center gap-2">
234
+ <div className="w-1.5 h-1.5 rounded-full bg-amber-500 shadow-[0_0_8px_rgba(245,158,11,0.5)]" />
235
+ <span className="text-[11px] text-slate-400 group-hover/row:text-amber-400 transition-colors">Near</span>
236
+ </div>
237
+ <span className="text-xs font-bold text-white">{deadlineStatus.near}</span>
238
+ </div>
239
+ <div className="flex items-center justify-between group/row">
240
+ <div className="flex items-center gap-2">
241
+ <div className="w-1.5 h-1.5 rounded-full bg-green-500 shadow-[0_0_8px_rgba(34,197,94,0.5)]" />
242
+ <span className="text-[11px] text-slate-400 group-hover/row:text-green-400 transition-colors">Safe</span>
243
+ </div>
244
+ <span className="text-xs font-bold text-white">{deadlineStatus.far}</span>
245
  </div>
246
  </div>
247
  </div>
frontend/components/GlobalSync.tsx CHANGED
@@ -41,32 +41,51 @@ export default function GlobalSync({ onComplete }: { onComplete: () => void }) {
41
  }, [onComplete]);
42
 
43
  return (
44
- <div className="fixed inset-0 z-[100] flex flex-col items-center justify-center bg-[#030303] text-white">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  <div className="relative w-64 h-64 flex items-center justify-center mb-12">
46
- {/* Animated Rings */}
47
- <div className="absolute inset-0 border-2 border-purple-500/20 rounded-full animate-[spin_10s_linear_infinite]" />
48
- <div className="absolute inset-4 border-2 border-indigo-500/40 rounded-full animate-[spin_7s_linear_infinite_reverse]" />
49
- <div className="absolute inset-8 border-2 border-cyan-500/60 rounded-full animate-[spin_5s_linear_infinite]" />
50
 
51
  {/* Progress Text */}
52
- <div className="flex flex-col items-center">
53
- <span className="text-4xl font-bold text-gradient mb-1">{progress}%</span>
54
- <span className="text-[10px] uppercase tracking-[0.2em] text-slate-500 font-bold">Syncing</span>
55
  </div>
56
  </div>
57
 
58
- <div className="space-y-4 text-center">
59
- <h2 className="text-xl font-bold tracking-tight">{message}</h2>
60
- <div className="w-64 h-1 bg-white/5 rounded-full overflow-hidden">
61
  <div
62
- className="h-full premium-gradient transition-all duration-300 ease-out"
63
  style={{ width: `${progress}%` }}
64
  />
65
  </div>
 
66
  </div>
67
 
68
- <div className="absolute bottom-12 text-[10px] uppercase tracking-[0.4em] text-slate-700 font-bold">
69
- AndesOps AI Framework v1.0
 
 
 
70
  </div>
71
  </div>
72
  );
 
41
  }, [onComplete]);
42
 
43
  return (
44
+ <div className="fixed inset-0 z-[100] flex flex-col items-center justify-center bg-[#020202] text-white overflow-hidden">
45
+ {/* Cinematic Grid Background */}
46
+ <div className="absolute inset-0 bg-[linear-gradient(to_right,#80808012_1px,transparent_1px),linear-gradient(to_bottom,#80808012_1px,transparent_1px)] bg-[size:40px_40px] [mask-image:radial-gradient(ellipse_60%_50%_at_50%_0%,#000_70%,transparent_100%)]" />
47
+
48
+ {/* Decorative Blur Orbs */}
49
+ <div className="absolute -top-24 -left-24 w-96 h-96 bg-purple-500/10 blur-[120px] animate-pulse" />
50
+ <div className="absolute -bottom-24 -right-24 w-96 h-96 bg-cyan-500/10 blur-[120px] animate-pulse" />
51
+
52
+ {/* Floating Code Snippets (Pure CSS Animations) */}
53
+ <div className="absolute inset-0 opacity-20 pointer-events-none select-none font-mono text-[8px] md:text-[10px] text-purple-400/40">
54
+ <div className="absolute top-[10%] left-[5%] animate-[pulse_3s_infinite]">GET /api/tenders/sync HTTP/1.1</div>
55
+ <div className="absolute top-[20%] right-[10%] animate-[pulse_4s_infinite]">SELECT * FROM active_opportunities;</div>
56
+ <div className="absolute bottom-[30%] left-[15%] animate-[pulse_5s_infinite]">AGENT_ORCHESTRATOR.INIT()</div>
57
+ <div className="absolute bottom-[10%] right-[5%] animate-[pulse_6s_infinite]">Status: 200 OK | Payload: 4.2k items</div>
58
+ </div>
59
+
60
  <div className="relative w-64 h-64 flex items-center justify-center mb-12">
61
+ {/* Animated Rings - Enhanced */}
62
+ <div className="absolute inset-0 border border-purple-500/20 rounded-full animate-[spin_12s_linear_infinite]" />
63
+ <div className="absolute inset-4 border border-indigo-500/30 rounded-full animate-[spin_8s_linear_infinite_reverse]" />
64
+ <div className="absolute inset-8 border border-cyan-500/40 rounded-full animate-[spin_6s_linear_infinite]" />
65
 
66
  {/* Progress Text */}
67
+ <div className="flex flex-col items-center relative z-10">
68
+ <span className="text-5xl font-black tracking-tighter text-white mb-1 drop-shadow-[0_0_15px_rgba(168,85,247,0.5)]">{progress}%</span>
69
+ <span className="text-[9px] uppercase tracking-[0.4em] text-slate-500 font-black">Neural Link</span>
70
  </div>
71
  </div>
72
 
73
+ <div className="relative z-10 space-y-6 text-center max-w-sm px-6">
74
+ <h2 className="text-xl font-bold tracking-tight text-slate-200 animate-in fade-in slide-in-from-bottom-2 duration-300">{message}</h2>
75
+ <div className="relative w-72 h-1.5 bg-white/5 rounded-full overflow-hidden border border-white/5">
76
  <div
77
+ className="h-full bg-gradient-to-r from-purple-600 via-indigo-500 to-cyan-400 transition-all duration-300 ease-out shadow-[0_0_10px_rgba(168,85,247,0.5)]"
78
  style={{ width: `${progress}%` }}
79
  />
80
  </div>
81
+ <p className="text-[10px] text-slate-500 font-medium tracking-widest uppercase opacity-60">Initializing AndesOps AI Engine</p>
82
  </div>
83
 
84
+ <div className="absolute bottom-12 flex flex-col items-center gap-2">
85
+ <div className="w-1 h-8 bg-gradient-to-b from-purple-500/40 to-transparent" />
86
+ <div className="text-[10px] uppercase tracking-[0.5em] text-slate-700 font-black">
87
+ Orchestrated by REW Intelligence
88
+ </div>
89
  </div>
90
  </div>
91
  );