11import React from "react" ;
22import { motion , useScroll , useTransform } from "motion/react" ;
33import { useRef } from "react" ;
4- import { ImageWithFallback } from "./figma/ImageWithFallback " ;
4+ import { TVBackground } from "./TVBackground " ;
55
66export function HeroSection ( ) {
77 const ref = useRef ( null ) ;
@@ -19,19 +19,14 @@ export function HeroSection() {
1919 data-scroll-section
2020 className = "relative h-screen flex items-center justify-center overflow-hidden bg-black"
2121 >
22- { /* Parallax Background */ }
22+ { /* TV Background */ }
2323 < motion . div
2424 data-scroll
2525 data-scroll-speed = "-2"
2626 style = { { y } }
2727 className = "absolute inset-0 w-full h-[120%] -z-10"
2828 >
29- < ImageWithFallback
30- src = "https://images.unsplash.com/photo-1688550181338-e013f4b72aba?crop=entropy& cs = tinysrgb & fit = max & fm = jpg & ixid = M3w3Nzg4Nzd8MHwxfHNlYXJjaHwxfHxESiUyMGJvb3RoJTIwbmVvbiUyMGxpZ2h0c3xlbnwxfHx8fDE3NTY1ODYyNTB8MA & ixlib = rb - 4.1 .0 & q = 80 & w = 1080 & utm_source = figma & utm_medium = referral "
31- alt = "DJ booth with neon lights"
32- className = "w-full h-full object-cover opacity-40"
33- />
34- < div className = "absolute inset-0 bg-gradient-to-b from-black/50 via-black/30 to-black/80" />
29+ < TVBackground />
3530 </ motion . div >
3631
3732 { /* Hero Content */ }
@@ -58,9 +53,9 @@ export function HeroSection() {
5853 initial = { { opacity : 0 , y : 20 } }
5954 animate = { { opacity : 1 , y : 0 } }
6055 transition = { { duration : 0.8 , delay : 3.2 } }
61- className = "mb-6 "
56+ className = "mb-8 "
6257 >
63- < motion . p
58+ < motion . div
6459 animate = { {
6560 opacity : [ 0.6 , 1 , 0.6 ] ,
6661 scale : [ 0.98 , 1 , 0.98 ]
@@ -70,37 +65,103 @@ export function HeroSection() {
7065 repeat : Infinity ,
7166 ease : "easeInOut"
7267 } }
73- className = "text-sm sm:text-base lg:text-lg font-light text-white/70 tracking-wider uppercase"
74- style = { { fontFamily : "'Inter', sans-serif" } }
68+ className = "relative"
7569 >
76- Experience the future of sound
77- </ motion . p >
70+ < motion . p
71+ className = "text-sm sm:text-base lg:text-lg font-light text-white/70 tracking-wider uppercase mb-2"
72+ style = { { fontFamily : "'Inter', sans-serif" } }
73+ >
74+ Experience the future of sound
75+ </ motion . p >
76+
77+ { /* Futuristic line */ }
78+ < motion . div
79+ animate = { { width : [ 0 , 100 , 0 ] } }
80+ transition = { {
81+ duration : 4 ,
82+ repeat : Infinity ,
83+ ease : "easeInOut"
84+ } }
85+ className = "h-px bg-gradient-to-r from-transparent via-[#00FF85] to-transparent mx-auto"
86+ />
87+ </ motion . div >
7888 </ motion . div >
7989
80- { /* Decorative Image Below Title */ }
90+ { /* Futuristic DJ Interface */ }
8191 < motion . div
8292 initial = { { opacity : 0 , scale : 0.8 } }
8393 animate = { { opacity : 1 , scale : 1 } }
8494 transition = { { duration : 1 , delay : 2.8 } }
8595 className = "mb-8 relative"
8696 >
87- < div className = "w-32 h-32 sm:w-40 sm:h-40 mx-auto relative overflow-hidden rounded-full border-2 border-[#00FF85]/30 backdrop-blur-sm" >
88- < ImageWithFallback
89- src = "https://images.unsplash.com/photo-1572327918400-f1932eded229?crop=entropy& cs = tinysrgb & fit = max & fm = jpg & ixid = M3w3Nzg4Nzd8MHwxfHNlYXJjaHwxfHxESiUyMGhhbmRzJTIwdHVybnRhYmxlcyUyMG1peGluZ3xlbnwxfHx8fDE3NTY1ODczMzV8MA & ixlib = rb - 4.1 .0 & q = 80 & w = 1080 & utm_source = figma & utm_medium = referral "
90- alt = "DJ hands on turntables"
91- className = "w-full h-full object-cover opacity-70"
97+ < div className = "w-48 h-48 sm:w-56 sm:h-56 mx-auto relative" >
98+ { /* Main Interface Circle */ }
99+ < div className = "w-full h-full relative" >
100+ { /* Outer Ring */ }
101+ < motion . div
102+ animate = { { rotate : 360 } }
103+ transition = { { duration : 30 , repeat : Infinity , ease : "linear" } }
104+ className = "absolute inset-0 border-2 border-[#00FF85]/40 rounded-full"
105+ />
106+
107+ { /* Middle Ring */ }
108+ < motion . div
109+ animate = { { rotate : - 360 } }
110+ transition = { { duration : 20 , repeat : Infinity , ease : "linear" } }
111+ className = "absolute inset-4 border border-[#00FF85]/30 rounded-full"
112+ />
113+
114+ { /* Inner Ring */ }
115+ < motion . div
116+ animate = { { rotate : 360 } }
117+ transition = { { duration : 15 , repeat : Infinity , ease : "linear" } }
118+ className = "absolute inset-8 border border-[#00FF85]/20 rounded-full"
119+ />
120+
121+ { /* Center Element */ }
122+ < div className = "absolute inset-12 bg-gradient-to-br from-[#00FF85]/20 to-black/80 rounded-full flex items-center justify-center backdrop-blur-sm" >
123+ < motion . div
124+ animate = { {
125+ scale : [ 1 , 1.1 , 1 ] ,
126+ opacity : [ 0.8 , 1 , 0.8 ]
127+ } }
128+ transition = { {
129+ duration : 2 ,
130+ repeat : Infinity ,
131+ ease : "easeInOut"
132+ } }
133+ className = "w-8 h-8 bg-[#00FF85] rounded-full"
134+ />
135+ </ div >
136+ </ div >
137+
138+ { /* Floating Elements */ }
139+ < motion . div
140+ animate = { {
141+ y : [ 0 , - 20 , 0 ] ,
142+ rotate : [ 0 , 180 , 360 ]
143+ } }
144+ transition = { {
145+ duration : 8 ,
146+ repeat : Infinity ,
147+ ease : "easeInOut"
148+ } }
149+ className = "absolute -top-4 -right-4 w-6 h-6 border border-[#00FF85]/60 rounded-full"
150+ />
151+
152+ < motion . div
153+ animate = { {
154+ y : [ 0 , 20 , 0 ] ,
155+ rotate : [ 360 , 180 , 0 ]
156+ } }
157+ transition = { {
158+ duration : 6 ,
159+ repeat : Infinity ,
160+ ease : "easeInOut"
161+ } }
162+ className = "absolute -bottom-4 -left-4 w-4 h-4 bg-[#00FF85]/40 rounded-full"
92163 />
93- < div className = "absolute inset-0 bg-gradient-to-b from-[#00FF85]/20 to-black/40" />
94164 </ div >
95- { /* Rotating ring around image */ }
96- < motion . div
97- animate = { { rotate : 360 } }
98- transition = { { duration : 20 , repeat : Infinity , ease : "linear" } }
99- className = "absolute inset-0 w-32 h-32 sm:w-40 sm:h-40 mx-auto border border-[#00FF85]/50 rounded-full"
100- style = { {
101- background : "conic-gradient(from 0deg, transparent, #00FF85, transparent)"
102- } }
103- />
104165 </ motion . div >
105166
106167 < motion . p
@@ -113,7 +174,7 @@ export function HeroSection() {
113174 </ motion . p >
114175 </ motion . div >
115176
116- { /* Enhanced Scroll Indicator */ }
177+ { /* Futuristic Scroll Indicator */ }
117178 < motion . div
118179 initial = { { opacity : 0 } }
119180 animate = { { opacity : 1 } }
@@ -123,24 +184,51 @@ export function HeroSection() {
123184 < motion . div
124185 animate = { { y : [ 0 , 10 , 0 ] } }
125186 transition = { { duration : 2 , repeat : Infinity } }
126- className = "flex flex-col items-center space-y-2 "
187+ className = "flex flex-col items-center space-y-3 "
127188 >
189+ { /* Main Scroll Bar */ }
190+ < div className = "relative" >
191+ < motion . div
192+ animate = { { height : [ 20 , 40 , 20 ] } }
193+ transition = { { duration : 2 , repeat : Infinity } }
194+ className = "w-1 bg-gradient-to-b from-[#00FF85] to-transparent rounded-full"
195+ />
196+ < motion . div
197+ animate = { {
198+ y : [ 0 , 20 , 0 ] ,
199+ opacity : [ 0.8 , 1 , 0.8 ]
200+ } }
201+ transition = { { duration : 2 , repeat : Infinity } }
202+ className = "absolute top-0 w-3 h-3 bg-[#00FF85] rounded-full -left-1"
203+ />
204+ </ div >
205+
206+ { /* SCROLL Text */ }
128207 < motion . div
129- animate = { { y : [ 0 , 12 , 0 ] } }
130- transition = { { duration : 2 , repeat : Infinity } }
131- className = "w-1 h-3 bg-[#00FF85] rounded-full"
132- />
133- < motion . p
134208 animate = { { opacity : [ 0.6 , 1 , 0.6 ] } }
135209 transition = { { duration : 2 , repeat : Infinity } }
136- className = "text-xs text-white/60 font-medium tracking-wider "
210+ className = "text-center "
137211 >
138- SCROLL
139- </ motion . p >
212+ < motion . p
213+ className = "text-xs text-white/60 font-medium tracking-widest uppercase"
214+ >
215+ SCROLL
216+ </ motion . p >
217+ < motion . div
218+ animate = { { width : [ 0 , 20 , 0 ] } }
219+ transition = { { duration : 2 , repeat : Infinity } }
220+ className = "h-px bg-[#00FF85] mx-auto mt-1"
221+ />
222+ </ motion . div >
223+
224+ { /* Bottom Indicator */ }
140225 < motion . div
141- animate = { { y : [ 0 , 8 , 0 ] } }
226+ animate = { {
227+ y : [ 0 , 8 , 0 ] ,
228+ scale : [ 1 , 1.2 , 1 ]
229+ } }
142230 transition = { { duration : 2 , repeat : Infinity , delay : 0.5 } }
143- className = "w-1 h-2 bg-white/40 rounded-full"
231+ className = "w-2 h-2 bg-white/40 rounded-full"
144232 />
145233 </ motion . div >
146234 </ motion . div >
0 commit comments