Skip to content

Commit bb894ad

Browse files
committed
feat: enhance hero section and story sections with improved animations and styling - Remove animation delays from hero section for immediate appearance - Restore letter-reveal animations for BOLD/ENERGY/MOMENT titles - Add 3D glass effects to SoundCloud widgets - Remove borders from SoundCloud sections for cleaner look - Add scroll to top button with glassmorphic design - Improve typography and visual effects throughout
1 parent 59c56d1 commit bb894ad

8 files changed

Lines changed: 304 additions & 109 deletions

File tree

et --hard 9fc9b00

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
f498d9a - Refactor: Add snap scroll effects and make page brighter - Remove dark overlays and backgrounds - Add CSS scroll-snap properties - Update all sections with lighter colors - Implement background image autoslider - Clean up unnecessary components and imports
2+
7de8c09 - ✨ Add comprehensive glow effects and refactor brightness system - Enhanced HeroSection with floating glow orbs and neon effects - Added ambient glow backgrounds to all sections - Enhanced StorySection, ServicesSection, and TestimonialsSection with glow effects - Removed problematic brightness filters and replaced with proper glow overlays - Added floating animated orbs throughout the page for depth and movement - Improved visual hierarchy with enhanced drop shadows and glows - Unified futuristic design across all sections
3+
1728d4f - fix: make header fully visible on all screen sizes with responsive navigation and CTA button
4+
cb2dd60 - feat: add glassmorphic header with animated navigation and enhanced section animations
5+
e3b23e0 - fix: resolve scrollToSection reference error with proper function definitions and useCallback
6+
1d042cd - feat: implement enhanced section scroll snapping with improved navigation and smooth transitions
7+
78970c1 - feat: enhance hero section with modern TV background, auto-sliding videos, and futuristic UI elements
8+
9fc9b00 - config
9+
a0e5b20 - fix: update GitHub Actions workflow to use modern deploy-pages action
10+
59c56d1 - refactor: extract constants and Logo component, make README minimalistic

src/App.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState, useEffect } from "react";
1+
import React, { useState, useEffect } from "react";
22
import { motion, AnimatePresence } from "motion/react";
33
import { LoadingScreen } from "./components/LoadingScreen";
44
import { AnimatedLogo } from "./components/AnimatedLogo";
@@ -13,6 +13,7 @@ import { SmoothScrollProvider } from "./components/SmoothScrollContext";
1313
import { SectionNavigation } from "./components/SectionNavigation";
1414
import { Logo } from "./components/Logo";
1515
import { storyData, sectionNames, sectionDividers } from "./constants";
16+
import { ScrollToTop } from "./components/ScrollToTop";
1617

1718
export default function App() {
1819
const [isLoading, setIsLoading] = useState(true);
@@ -100,6 +101,12 @@ export default function App() {
100101
title={section.title}
101102
backgroundImage={section.backgroundImage}
102103
index={index}
104+
soundcloudTrack={section.soundcloudTrack}
105+
trackTitle={section.trackTitle}
106+
artist={section.artist}
107+
duration={section.duration}
108+
trackUrl={section.trackUrl}
109+
artistUrl={section.artistUrl}
103110
/>
104111
))}
105112

@@ -168,6 +175,9 @@ export default function App() {
168175

169176
{/* Toast notifications */}
170177
<Toaster />
178+
179+
{/* Scroll to Top Button */}
180+
<ScrollToTop />
171181
</div>
172182
);
173183
}

src/components/HeroSection.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export function HeroSection() {
4444
<motion.h1
4545
initial={{ opacity: 0, y: 50 }}
4646
animate={{ opacity: 1, y: 0 }}
47-
transition={{ duration: 1, delay: 2.5 }}
47+
transition={{ duration: 1 }}
4848
className="text-4xl sm:text-6xl lg:text-8xl xl:text-9xl font-black text-white mb-6 leading-tight tracking-tight"
4949
style={{ fontFamily: "'Space Grotesk', 'Inter', sans-serif" }}
5050
>
@@ -57,7 +57,7 @@ export function HeroSection() {
5757
<motion.div
5858
initial={{ opacity: 0, y: 20 }}
5959
animate={{ opacity: 1, y: 0 }}
60-
transition={{ duration: 0.8, delay: 3.2 }}
60+
transition={{ duration: 0.8 }}
6161
className="mb-6"
6262
>
6363
<motion.p
@@ -81,7 +81,7 @@ export function HeroSection() {
8181
<motion.div
8282
initial={{ opacity: 0, scale: 0.8 }}
8383
animate={{ opacity: 1, scale: 1 }}
84-
transition={{ duration: 1, delay: 2.8 }}
84+
transition={{ duration: 1 }}
8585
className="mb-8 relative"
8686
>
8787
<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">
@@ -106,7 +106,7 @@ export function HeroSection() {
106106
<motion.p
107107
initial={{ opacity: 0, y: 30 }}
108108
animate={{ opacity: 1, y: 0 }}
109-
transition={{ duration: 0.8, delay: 3 }}
109+
transition={{ duration: 0.8 }}
110110
className="text-lg sm:text-xl lg:text-2xl font-medium text-white/90 max-w-2xl mx-auto"
111111
>
112112
Minimal. Futuristic. Pure Energy.

src/components/ScrollToTop.tsx

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import React, { useState, useEffect } from "react";
2+
import { motion, AnimatePresence } from "motion/react";
3+
4+
export function ScrollToTop() {
5+
const [isVisible, setIsVisible] = useState(false);
6+
7+
// Show button when page is scrolled up to given distance
8+
const toggleVisibility = () => {
9+
if (window.pageYOffset > 50) { // Very low threshold to appear soon
10+
setIsVisible(true);
11+
} else {
12+
setIsVisible(false);
13+
}
14+
};
15+
16+
// Set the scroll event listener
17+
useEffect(() => {
18+
window.addEventListener("scroll", toggleVisibility);
19+
return () => {
20+
window.removeEventListener("scroll", toggleVisibility);
21+
};
22+
}, []);
23+
24+
// Scroll to top smoothly
25+
const scrollToTop = () => {
26+
window.scrollTo({
27+
top: 0,
28+
behavior: "smooth",
29+
});
30+
};
31+
32+
return (
33+
<AnimatePresence>
34+
{isVisible && (
35+
<motion.button
36+
onClick={scrollToTop}
37+
className="fixed bottom-12 right-12 z-[9999] p-6 rounded-2xl bg-gradient-to-br from-yellow-400/90 via-red-500/90 to-purple-600/90 border-4 border-white/30 shadow-2xl hover:shadow-3xl transition-all duration-300 group"
38+
initial={{ opacity: 0, scale: 0, y: 50 }}
39+
animate={{ opacity: 1, scale: 1, y: 0 }}
40+
exit={{ opacity: 0, scale: 0, y: 50 }}
41+
whileHover={{ scale: 1.2, rotate: 10 }}
42+
whileTap={{ scale: 0.9 }}
43+
>
44+
{/* Large Arrow Icon */}
45+
<div className="relative z-10">
46+
<svg
47+
className="w-12 h-12 text-white drop-shadow-lg"
48+
fill="none"
49+
stroke="currentColor"
50+
viewBox="0 0 24 24"
51+
xmlns="http://www.w3.org/2000/svg"
52+
>
53+
<path
54+
strokeLinecap="round"
55+
strokeLinejoin="round"
56+
strokeWidth={3}
57+
d="M5 10l7-7m0 0l7 7m-7-7v18"
58+
/>
59+
</svg>
60+
</div>
61+
62+
{/* Glow Effect */}
63+
<div className="absolute inset-0 rounded-2xl bg-gradient-to-r from-yellow-400/50 via-red-500/50 to-purple-500/50 blur-xl scale-110 opacity-75"></div>
64+
65+
{/* Text Label */}
66+
<div className="absolute -bottom-16 left-1/2 transform -translate-x-1/2 whitespace-nowrap">
67+
<span className="text-white text-sm font-bold bg-black/70 px-3 py-1 rounded-full">
68+
TOP
69+
</span>
70+
</div>
71+
</motion.button>
72+
)}
73+
</AnimatePresence>
74+
);
75+
}

src/components/SmoothScrollContext.tsx

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,37 +20,41 @@ export function SmoothScrollProvider({ children }: SmoothScrollProviderProps) {
2020
const locomotiveScrollRef = useRef<LocomotiveScroll | null>(null);
2121

2222
useEffect(() => {
23-
// Initialize Locomotive Scroll
23+
// Initialize Locomotive Scroll with optimized settings for faster, more comfortable scrolling
2424
locomotiveScrollRef.current = new LocomotiveScroll({
2525
el: document.querySelector('[data-scroll-container]') as HTMLElement,
2626
smooth: true,
27-
lerp: 0.1,
28-
multiplier: 0.8,
27+
// Faster, more responsive scrolling (lower lerp = faster)
28+
lerp: 0.05,
29+
// Higher multiplier for more responsive feel
30+
multiplier: 1.2,
2931
// Enable snap scrolling to sections
3032
scrollFromAnywhere: true,
3133
// Snap to sections
3234
snap: true,
33-
// Snap duration
34-
snapDuration: 1.2,
35-
// Snap easing
35+
// Faster snap duration for quicker section transitions
36+
snapDuration: 0.8,
37+
// Smoother snap easing
3638
snapEasing: [0.25, 0.1, 0.25, 1],
39+
// Optimized smartphone settings
3740
smartphone: {
3841
smooth: true,
39-
lerp: 0.1,
40-
multiplier: 0.8,
42+
lerp: 0.05,
43+
multiplier: 1.2,
4144
snap: true,
42-
snapDuration: 1.2,
45+
snapDuration: 0.8,
4346
},
47+
// Optimized tablet settings
4448
tablet: {
4549
smooth: true,
46-
lerp: 0.1,
47-
multiplier: 0.8,
50+
lerp: 0.05,
51+
multiplier: 1.2,
4852
snap: true,
49-
snapDuration: 1.2,
53+
snapDuration: 0.8,
5054
},
5155
});
5256

53-
// Add keyboard navigation
57+
// Add keyboard navigation with faster transitions
5458
const handleKeyDown = (e: KeyboardEvent) => {
5559
if (!locomotiveScrollRef.current) return;
5660

@@ -65,7 +69,7 @@ export function SmoothScrollProvider({ children }: SmoothScrollProviderProps) {
6569
e.preventDefault();
6670
const nextSection = Math.min(currentSection + 1, Math.floor(document.body.scrollHeight / windowHeight) - 1);
6771
locomotiveScrollRef.current.scrollTo(nextSection * windowHeight, {
68-
duration: 1.2,
72+
duration: 0.8,
6973
easing: [0.25, 0.1, 0.25, 1],
7074
});
7175
break;
@@ -74,21 +78,21 @@ export function SmoothScrollProvider({ children }: SmoothScrollProviderProps) {
7478
e.preventDefault();
7579
const prevSection = Math.max(currentSection - 1, 0);
7680
locomotiveScrollRef.current.scrollTo(prevSection * windowHeight, {
77-
duration: 1.2,
81+
duration: 0.8,
7882
easing: [0.25, 0.1, 0.25, 1],
7983
});
8084
break;
8185
case 'Home':
8286
e.preventDefault();
8387
locomotiveScrollRef.current.scrollTo(0, {
84-
duration: 1.2,
88+
duration: 0.8,
8589
easing: [0.25, 0.1, 0.25, 1],
8690
});
8791
break;
8892
case 'End':
8993
e.preventDefault();
9094
locomotiveScrollRef.current.scrollTo(document.body.scrollHeight - windowHeight, {
91-
duration: 1.2,
95+
duration: 0.8,
9296
easing: [0.25, 0.1, 0.25, 1],
9397
});
9498
break;

0 commit comments

Comments
 (0)