import React, { useState, useEffect, useRef } from 'react'; import { Box, Typography, Button, Container, IconButton, Grid } from '@mui/material'; import { useInView } from 'react-intersection-observer'; import InstagramIcon from '@mui/icons-material/Instagram'; import FacebookIcon from '@mui/icons-material/Facebook'; import TwitterIcon from '@mui/icons-material/Twitter'; import EmailIcon from '@mui/icons-material/Email'; import { keyframes } from '@emotion/react'; import { styled } from '@mui/system'; import image1 from '../assets/group1.jpg' import image2 from '../assets/solo1.jpg' import image3 from '../assets/solo2.jpg' import image4 from '../assets/bag1.jpg' import image5 from '../assets/bag2.jpg' // Color palette inspired by Indian heritage const colors = { paper: '#F5F5EF', // Aged paper ink: '#1A2526', // Deep charcoal accent: '#D4A017', // Saffron gold secondary: '#7B4F3A', // Terracotta highlight: '#FFF4CC', // Light sandalwood border: '#B89A6E', // Antique brass dark: '#3A1F0F', // Rich teak }; // Animations const fadeIn = keyframes` from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } `; const scaleIn = keyframes` from { transform: scale(0.8); opacity: 0; } to { transform: scale(1); opacity: 1; } `; const rotateIn = keyframes` from { transform: rotate(5deg) scale(0.9); opacity: 0; } to { transform: rotate(0deg) scale(1); opacity: 1; } `; const drawUnderline = keyframes` 0% { width: 0; } 100% { width: 100%; } `; const vintagePulse = keyframes` 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(212, 160, 23, 0.4); } 70% { transform: scale(1.02); box-shadow: 0 0 0 10px rgba(212, 160, 23, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(212, 160, 23, 0); } `; const float = keyframes` 0% { transform: translateY(0px); } 50% { transform: translateY(-10px); } 100% { transform: translateY(0px); } `; const scrollReveal = keyframes` from { opacity: 0; transform: translateY(50px); } to { opacity: 1; transform: translateY(0); } `; const shimmer = keyframes` 0% { background-position: -200px 0; } 100% { background-position: calc(200px + 100%) 0; } `; const textGlow = keyframes` 0% { text-shadow: 0 0 5px rgba(212, 160, 23, 0.3); } 50% { text-shadow: 0 0 15px rgba(212, 160, 23, 0.6); } 100% { text-shadow: 0 0 5px rgba(212, 160, 23, 0.3); } `; const borderFlow = keyframes` 0% { border-color: ${colors.accent}; } 33% { border-color: ${colors.secondary}; } 66% { border-color: ${colors.border}; } 100% { border-color: ${colors.accent}; } `; const typewriter = keyframes` from { width: 0; } to { width: 100%; } `; const fadeInLeft = keyframes` from { opacity: 0; transform: translateX(-50px); } to { opacity: 1; transform: translateX(0); } `; const fadeInRight = keyframes` from { opacity: 0; transform: translateX(50px); } to { opacity: 1; transform: translateX(0); } `; const bounce = keyframes` 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-15px); } 60% { transform: translateY(-7px); } `; const flipIn = keyframes` 0% { transform: perspective(400px) rotateY(90deg); opacity: 0; } 100% { transform: perspective(400px) rotateY(0deg); opacity: 1; } `; const zoomIn = keyframes` from { transform: scale(0.95); opacity: 0; } to { transform: scale(1); opacity: 1; } `; const spinSlow = keyframes` from { transform: rotate(0deg); } to { transform: rotate(360deg); } `; // Styled components const VintageBox = styled(Box)({ position: 'relative', '&::before': { content: '""', position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, background: `url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%233A1F0F' fill-opacity='0.05' fill-rule='evenodd'/%3E%3C/svg%3E")`, opacity: 0.15, zIndex: 0, }, }); const VintageButton = styled(Button)({ position: 'relative', overflow: 'hidden', border: `1px solid ${colors.border}`, color: colors.ink, backgroundColor: colors.paper, fontWeight: 400, letterSpacing: '1px', textTransform: 'uppercase', padding: '12px 24px', borderRadius: '0', transition: 'all 0.3s ease', boxShadow: '0 2px 4px rgba(0,0,0,0.1)', '&:hover': { backgroundColor: colors.highlight, color: colors.dark, borderColor: colors.accent, transform: 'translateY(-2px)', boxShadow: '0 4px 8px rgba(0,0,0,0.2)', }, '&::after': { content: '""', position: 'absolute', bottom: 0, left: 0, width: '100%', height: '1px', backgroundColor: colors.accent, transform: 'scaleX(0)', transformOrigin: 'right', transition: 'transform 0.3s ease', }, '&:hover::after': { transform: 'scaleX(1)', transformOrigin: 'left', }, }); const VintagePulseButton = styled(VintageButton)({ animation: `${vintagePulse} 2s infinite`, '&:hover': { animation: 'none', }, }); const VintageUnderline = styled(Box)({ position: 'relative', display: 'inline-block', '&::after': { content: '""', position: 'absolute', bottom: '-5px', left: 0, width: '0', height: '2px', backgroundColor: colors.accent, animation: `${drawUnderline} 1.5s forwards`, animationDelay: '0.5s', }, }); const VintageImageFrame = styled(Box)({ border: `12px solid ${colors.paper}`, boxShadow: `8px 8px 0 ${colors.secondary}80, 0 4px 8px rgba(0,0,0,0.1)`, position: 'relative', overflow: 'hidden', '&::before': { content: '""', position: 'absolute', top: '-15px', left: '-15px', right: '-15px', bottom: '-15px', border: `1px solid ${colors.border}`, zIndex: -1, opacity: 0.7, }, }); const AnimatedSection = styled(Box)({ opacity: 0, transform: 'translateY(50px)', animation: `${scrollReveal} 1s forwards`, }); const GlowingText = styled(Typography)({ animation: `${textGlow} 3s ease-in-out infinite`, }); const BorderFlowBox = styled(Box)({ border: `1px solid ${colors.accent}`, animation: `${borderFlow} 6s infinite linear`, }); const TypewriterText = styled(Typography)({ overflow: 'hidden', whiteSpace: 'nowrap', margin: '0 auto', animation: `${typewriter} 4s steps(40, end)`, }); const BounceBox = styled(Box)({ animation: `${bounce} 2s infinite`, }); const FlipInBox = styled(Box)({ animation: `${flipIn} 1s forwards`, transformOrigin: 'center', }); const ZoomInBox = styled(Box)({ animation: `${zoomIn} 1s forwards`, }); // Kalawati story sections with updated Pexels images const storyChapters = [ { year: '2019', title: 'Where Curiosity Met Craft', content: 'Fresh out of fashion school, I found myself drawn to looms, dye pits, and village homes. I organized workshops to listen, learn, and share space with artisans, forging a bond between design, community, and culture.', image: `${image1}`, }, { year: '2020', title: 'A Name Was Born', content: 'During the pandemic, I launched a campaign to highlight artisans hit by lockdowns. The Kalawati was born—named after women who hold culture in their palms and creativity in their hearts.', image: `${image2}`, }, { year: '2021', title: 'Strengthening the Circle', content: 'I spent the year mapping artisan strengths, connecting traditional skills to modern demand, and building trust for a long-term vision of community and craft.', image: `${image3}`, }, { year: '2022', title: 'Systems That Serve People', content: 'Through the JSW Foundation Fellowship, I built systems blending business and empathy—brand building for rural women, value chain development, and sustainable income pathways.', image: `${image4}`, }, { year: '2023', title: 'Quiet Creation', content: 'Working with artisan clusters, we prototyped collections with handloom, embroidery, and natural dyes—crafting stories you could wear.', image: `${image1}`, }, { year: '2024', title: 'Kalawati Arrives', content: 'The Kalawati opens its doors as a brand and movement, offering ethically made handcrafted apparel and decor. Join us to co-create, support heritage, and connect to roots.', image: `${image5}`, }, ]; // Process steps with updated Pexels images const processSteps = [ { title: 'Design Inspiration', description: 'Drawing from traditional Indian motifs and contemporary aesthetics', image: `${image4}`, }, { title: 'Material Selection', description: 'Choosing the finest natural fibers and dyes', image: `${image5}`, }, { title: 'Artisan Crafting', description: 'Skilled hands weaving stories into fabric', image: `${image4}`, }, { title: 'Quality Assurance', description: 'Meticulous inspection ensuring perfection', image: `${image5}`, }, ]; export const VintageComingSoonPage: React.FC = () => { const [days, setDays] = useState(10); const [hours, setHours] = useState(0); const [minutes, setMinutes] = useState(0); const [seconds, setSeconds] = useState(0); const [email, setEmail] = useState(''); const [subscribed, setSubscribed] = useState(false); const [currentChapter, setCurrentChapter] = useState(0); const [scrollPosition, setScrollPosition] = useState(0); const containerRef = useRef(null); // Intersection Observer for scroll animations const [heroRef, heroInView] = useInView({ threshold: 0.1, triggerOnce: true }); const [storyRef, storyInView] = useInView({ threshold: 0.1, triggerOnce: true }); const [processRef, processInView] = useInView({ threshold: 0.1, triggerOnce: true }); const [footerRef, footerInView] = useInView({ threshold: 0.1, triggerOnce: true }); // Countdown timer useEffect(() => { const timer = setInterval(() => { const now = new Date(); const launchDate = new Date(); launchDate.setDate(now.getDate() + 10); launchDate.setHours(0, 0, 0, 0); const diff = launchDate.getTime() - now.getTime(); setDays(Math.floor(diff / (1000 * 60 * 60 * 24))); setHours(Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))); setMinutes(Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))); setSeconds(Math.floor((diff % (1000 * 60)) / 1000)); }, 1000); return () => clearInterval(timer); }, []); // Rotate story chapters for main image useEffect(() => { const interval = setInterval(() => { setCurrentChapter((prev) => (prev + 1) % storyChapters.length); }, 8000); return () => clearInterval(interval); }, []); // Scroll position for parallax effects useEffect(() => { const handleScroll = () => { const position = window.pageYOffset; setScrollPosition(position); }; window.addEventListener('scroll', handleScroll, { passive: true }); return () => { window.removeEventListener('scroll', handleScroll); }; }, []); const handleSubscribe = (e: React.MouseEvent) => { e.preventDefault(); if (email && email.includes('@')) { console.log('Subscribed with email:', email); setSubscribed(true); setEmail(''); setTimeout(() => setSubscribed(false), 3000); } }; return ( {/* Paper texture overlay */} {/* Animated decorative elements */} {/* Parallax background elements */} {/* Header */} The Kalawati {/* Hero Section with Rotating Image */} {storyChapters[currentChapter].year} {storyChapters[currentChapter].title} {storyChapters[currentChapter].content} A Journey Woven with Stories, People & Purpose Preserving Indian crafts, empowering artisans, and creating timeless pieces for the modern world. {/* Countdown Timer */} Collection Unveiling {[{ value: days, label: 'Days' }, { value: hours, label: 'Hours' }, { value: minutes, label: 'Minutes' }, { value: seconds, label: 'Seconds' }].map( (item, index) => ( {item.value} {item.label} ) )} {/* Email Subscription */} setEmail(e.target.value)} placeholder="Your email address" required style={{ flex: 1, padding: '16px 24px', borderRadius: '0', border: 'none', fontSize: '16px', outline: 'none', background: colors.paper, color: colors.ink, fontFamily: '"Cormorant Garamond", serif', transition: 'all 0.3s ease', }} /> Notify Me {subscribed && ( Thank you! We'll keep you informed. )} {/* Story Timeline */} Our Story Woven in Time {storyChapters.map((chapter, index) => ( {chapter.year} {chapter.title} {chapter.content} ))} {/* Process Section */} The Art of Creation {processSteps.map((step, index) => ( {step.title} {step.description} ))} {/* Footer */} The Kalawati Join our journey to weave stories, empower artisans, and celebrate Indian heritage. Be the first to experience our handcrafted collections. © {new Date().getFullYear()} The Kalawati. All rights reserved. ); }; export default VintageComingSoonPage;