脕lvaro Valenzuela Valdes commited on
Commit
434a703
1 Parent(s): cb1e16d

feat: make Dashboard pipeline items clickable with View button

Browse files
frontend/app/page.tsx CHANGED
@@ -277,6 +277,7 @@ export default function HomePage() {
277
  followedTendersCount={followedCount}
278
  tenders={tenders}
279
  onFilterClick={handleFilterClick}
 
280
  lang={lang}
281
  />
282
  )}
 
277
  followedTendersCount={followedCount}
278
  tenders={tenders}
279
  onFilterClick={handleFilterClick}
280
+ onTenderClick={handleTenderSelect}
281
  lang={lang}
282
  />
283
  )}
frontend/components/Dashboard.tsx CHANGED
@@ -14,6 +14,7 @@ type Props = {
14
  followedTendersCount: number;
15
  tenders: Tender[];
16
  onFilterClick?: (type: "sector" | "region", value: string) => void;
 
17
  lang: Language;
18
  };
19
 
@@ -25,6 +26,7 @@ export default function Dashboard({
25
  followedTendersCount,
26
  tenders,
27
  onFilterClick,
 
28
  lang
29
  }: Props) {
30
  const t = translations[lang];
@@ -298,25 +300,34 @@ export default function Dashboard({
298
  {tenders.length > 0 ? (
299
  tenders.slice(0, 5).map((t) => (
300
  // ... existing map logic ...
301
- <div key={t.code} className="flex items-center justify-between p-4 rounded-2xl bg-slate-900/40 border border-slate-800/50 hover:bg-slate-900/60 transition group">
 
 
 
 
302
  <div className="flex items-center gap-4 overflow-hidden">
303
  <div className="h-10 w-10 flex-shrink-0 rounded-full bg-slate-800 flex items-center justify-center text-cyan group-hover:scale-110 transition">
304
  {t.sector?.charAt(0) || "T"}
305
  </div>
306
  <div className="overflow-hidden">
307
- <div className="text-sm font-medium text-white truncate">{t.name}</div>
308
  <div className="text-xs text-slate-500 truncate">{t.buyer}</div>
309
  </div>
310
  </div>
311
  <div className="flex items-center gap-6 text-right">
312
- <div className="hidden sm:block">
313
- <div className="text-xs text-slate-500">Regi贸n</div>
314
  <div className="text-xs text-slate-300">{t.region || "N/A"}</div>
315
  </div>
316
  <div className="min-w-[80px]">
317
- <div className="text-xs text-slate-500">C贸digo</div>
318
  <div className="text-xs font-mono text-cyan">{t.code}</div>
319
  </div>
 
 
 
 
 
320
  </div>
321
  </div>
322
  ))
 
14
  followedTendersCount: number;
15
  tenders: Tender[];
16
  onFilterClick?: (type: "sector" | "region", value: string) => void;
17
+ onTenderClick?: (tender: Tender) => void;
18
  lang: Language;
19
  };
20
 
 
26
  followedTendersCount,
27
  tenders,
28
  onFilterClick,
29
+ onTenderClick,
30
  lang
31
  }: Props) {
32
  const t = translations[lang];
 
300
  {tenders.length > 0 ? (
301
  tenders.slice(0, 5).map((t) => (
302
  // ... existing map logic ...
303
+ <div
304
+ key={t.code}
305
+ onClick={() => onTenderClick?.(t)}
306
+ className="flex items-center justify-between p-4 rounded-2xl bg-slate-900/40 border border-slate-800/50 hover:bg-slate-900/60 transition group cursor-pointer"
307
+ >
308
  <div className="flex items-center gap-4 overflow-hidden">
309
  <div className="h-10 w-10 flex-shrink-0 rounded-full bg-slate-800 flex items-center justify-center text-cyan group-hover:scale-110 transition">
310
  {t.sector?.charAt(0) || "T"}
311
  </div>
312
  <div className="overflow-hidden">
313
+ <div className="text-sm font-medium text-white truncate max-w-[200px] md:max-w-[400px]">{t.name}</div>
314
  <div className="text-xs text-slate-500 truncate">{t.buyer}</div>
315
  </div>
316
  </div>
317
  <div className="flex items-center gap-6 text-right">
318
+ <div className="hidden lg:block min-w-[100px]">
319
+ <div className="text-[10px] uppercase font-bold text-slate-500">Regi贸n</div>
320
  <div className="text-xs text-slate-300">{t.region || "N/A"}</div>
321
  </div>
322
  <div className="min-w-[80px]">
323
+ <div className="text-[10px] uppercase font-bold text-slate-500">C贸digo</div>
324
  <div className="text-xs font-mono text-cyan">{t.code}</div>
325
  </div>
326
+ <button
327
+ className="px-4 py-2 rounded-xl bg-cyan/10 border border-cyan/20 text-[10px] font-black text-cyan uppercase tracking-widest group-hover:bg-cyan group-hover:text-black transition-all"
328
+ >
329
+ View
330
+ </button>
331
  </div>
332
  </div>
333
  ))