@@ -24,6 +24,12 @@ import {
24
24
import { DataFlowDiagram } from "./data-flow-diagram" ;
25
25
import AnimatedText from '../ui/animated-text' ;
26
26
import HyperText from '../ui/hyper-text' ;
27
+ import { MagicCard } from "@/components/ui/magic-card" ;
28
+ import Image from "next/image" ;
29
+ import { Marquee } from "../ui/marquee" ;
30
+ import { GradientBentoCard } from "@/components/ui/gradient-bento-card" ;
31
+ import { ICraftPlayer , ICraftPlayerInstance , AnimationType } from "@icraft/player-react" ;
32
+ import { WorkflowAnimation } from "./workflow-animation" ;
27
33
28
34
const videos = [
29
35
{
@@ -56,6 +62,7 @@ export default function HeroSection() {
56
62
const [ isLoading , setIsLoading ] = useState ( false ) ;
57
63
const [ isGithubHovered , setIsGithubHovered ] = useState ( false ) ;
58
64
const [ fullscreenVideo , setFullscreenVideo ] = useState < { id : string , src : string } | null > ( null ) ;
65
+ const playerRef = useRef < ICraftPlayerInstance > ( null ) ;
59
66
60
67
const handleGetStarted = async ( ) => {
61
68
setIsLoading ( true ) ;
@@ -69,7 +76,7 @@ export default function HeroSection() {
69
76
} ;
70
77
71
78
return (
72
- < section className = "relative min-h-screen w-full overflow-hidden" >
79
+ < section className = "relative w-full overflow-hidden" >
73
80
< Particles
74
81
className = "fixed inset-0 -z-10"
75
82
quantity = { 100 }
@@ -79,7 +86,7 @@ export default function HeroSection() {
79
86
size = { 1.2 }
80
87
/>
81
88
82
- < div className = "relative z-10 flex min-h-screen w-full items-start xs:items- center justify-center py-8 xs:py-0 " >
89
+ < div className = "relative z-10 flex w-full items-center justify-center py-8" >
83
90
< div className = "container mx-auto px-2 xs:px-4" >
84
91
< div className = "grid items-center gap-4 xs:gap-8 xl:grid-cols-[0.7fr,1.3fr] xl:gap-20" >
85
92
< div className = "flex flex-col items-center text-center xl:items-start xl:text-left" >
@@ -209,8 +216,7 @@ export default function HeroSection() {
209
216
< motion . div
210
217
className = { cn (
211
218
"relative w-full aspect-[3/2] xs:aspect-[4/3] sm:aspect-[16/10] xl:aspect-[16/9] 2xl:aspect-[2/1] cursor-none" ,
212
- "mt-4 sm:mt-6 xl:mt-0" ,
213
- "mb-0 md:mb-8"
219
+ "mt-4 sm:mt-6 xl:mt-0"
214
220
) }
215
221
initial = { { opacity : 0 , scale : 0.95 } }
216
222
animate = { { opacity : 1 , scale : 1 } }
@@ -296,6 +302,96 @@ export default function HeroSection() {
296
302
</ div >
297
303
</ div >
298
304
305
+ { /* New Workflow Section */ }
306
+ < div className = "relative z-10 py-12 bg-white/5 backdrop-blur-sm" >
307
+ < div className = "container mx-auto px-4" >
308
+ < h2 className = "text-3xl font-bold text-center mb-8" >
309
+ < HyperText
310
+ text = "Workflow & Features"
311
+ className = "text-right"
312
+ duration = { 1000 }
313
+ />
314
+ </ h2 >
315
+ < div className = "grid lg:grid-cols-2 gap-8 items-start" >
316
+ { /* iPlayer Container */ }
317
+ < div className = "relative aspect-square w-full rounded-2xl overflow-hidden border border-white/20" >
318
+ < WorkflowAnimation />
319
+ </ div >
320
+
321
+ { /* Workflow Description */ }
322
+ < div className = "space-y-6" >
323
+ < div className = "bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10" >
324
+ < h3 className = "text-xl font-semibold mb-4" > Input Requirements</ h3 >
325
+ < div className = "space-y-3" >
326
+ < h4 className = "font-medium text-blue-400" > Required Files (CSV)</ h4 >
327
+ < ul className = "list-disc list-inside space-y-2 text-sm text-muted-foreground" >
328
+ < li > Synteny data with pairwise synteny blocks</ li >
329
+ < li > Species data with genome information</ li >
330
+ < li > Reference chromosome size data</ li >
331
+ </ ul >
332
+
333
+ < h4 className = "font-medium text-blue-400 mt-4" > Optional Files</ h4 >
334
+ < ul className = "list-disc list-inside space-y-2 text-sm text-muted-foreground" >
335
+ < li > Gene annotations</ li >
336
+ < li > Breakpoint data</ li >
337
+ </ ul >
338
+ </ div >
339
+ </ div >
340
+
341
+ < div className = "bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10" >
342
+ < h3 className = "text-xl font-semibold mb-4" > Visualization Options</ h3 >
343
+ < div className = "grid grid-cols-2 gap-4" >
344
+ < div className = "space-y-2" >
345
+ < h4 className = "font-medium text-purple-400" > Linear View</ h4 >
346
+ < ul className = "list-disc list-inside text-sm text-muted-foreground" >
347
+ < li > Interactive ribbons</ li >
348
+ < li > Customizable colors</ li >
349
+ < li > Strand filtering</ li >
350
+ < li > Breakpoint mapping</ li >
351
+ </ ul >
352
+ </ div >
353
+ < div className = "space-y-2" >
354
+ < h4 className = "font-medium text-emerald-400" > Chord Map</ h4 >
355
+ < ul className = "list-disc list-inside text-sm text-muted-foreground" >
356
+ < li > Circular visualization</ li >
357
+ < li > Detailed block info</ li >
358
+ < li > Gene annotations</ li >
359
+ < li > Interactive filtering</ li >
360
+ </ ul >
361
+ </ div >
362
+ </ div >
363
+ </ div >
364
+
365
+ < div className = "flex gap-4" >
366
+ < Link
367
+ href = "https://chitra-eta.vercel.app/docs"
368
+ target = "_blank"
369
+ className = "inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-blue-500/10 hover:bg-blue-500/20 text-blue-400 text-sm transition-colors"
370
+ >
371
+ < ArrowRight className = "h-4 w-4" />
372
+ Documentation
373
+ </ Link >
374
+ < Link
375
+ href = "https://github.com/pranjalpruthi/CHITRA"
376
+ target = "_blank"
377
+ className = "inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-zinc-500/10 hover:bg-zinc-500/20 text-zinc-400 text-sm transition-colors"
378
+ >
379
+ < Github className = "h-4 w-4" />
380
+ Source Code
381
+ </ Link >
382
+ </ div >
383
+ </ div >
384
+ </ div >
385
+ </ div >
386
+ </ div >
387
+
388
+ { /* DataFlowDiagram section */ }
389
+ < div className = "mt-2 hidden md:block" >
390
+ < div className = "container mx-auto px-4" >
391
+ < DataFlowDiagram />
392
+ </ div >
393
+ </ div >
394
+
299
395
< Dialog open = { ! ! fullscreenVideo } onOpenChange = { ( ) => setFullscreenVideo ( null ) } >
300
396
< DialogContent className = "max-w-[95vw] max-h-[95vh] p-0 overflow-hidden" >
301
397
{ fullscreenVideo && (
@@ -309,12 +405,6 @@ export default function HeroSection() {
309
405
) }
310
406
</ DialogContent >
311
407
</ Dialog >
312
-
313
- < div className = "mt-0 hidden md:block" >
314
- < div className = "container mx-auto px-4" >
315
- < DataFlowDiagram />
316
- </ div >
317
- </ div >
318
408
</ section >
319
409
) ;
320
410
}
0 commit comments