DamusAroundTheWorld.tsx (4938B)
1 import { Button } from "../ui/Button"; 2 import { useIntl } from "react-intl"; 3 import Link from "next/link"; 4 import { motion } from "framer-motion"; 5 import { cn } from "@/lib/utils"; 6 import Image from "next/image"; 7 import { Ticker, TickerImage } from "../ui/Ticker"; 8 import { ArrowUpRight, ShoppingCartIcon } from "lucide-react"; 9 import { DAMUS_MERCH_STORE_URL } from "@/lib/constants"; 10 11 export function DamusAroundTheWorld({ className }: { className?: string }) { 12 const intl = useIntl() 13 14 return (<> 15 <div className={cn("bg-black overflow-hidden relative min-h-screen", className)}> 16 <div className="container mx-auto px-6 pb-32 pt-12"> 17 <div className="flex flex-col items-center justify-center mt-32 lg:mt-16"> 18 <div className="relative mb-24 flex flex-col items-center justify-center"> 19 <motion.h2 className="mb-8 text-6xl md:text-7xl lg:text-8xl text-center text-transparent bg-clip-text bg-gradient-to-r from-[#CF63F4] from-5% via-[#54F3F3] via-50% to-[#90FF7E] to-100% font-semibold"> 20 { intl.formatMessage({ id: "damus_around_the_world.headline", defaultMessage: "Damus around the world" }) } 21 </motion.h2> 22 <motion.div className="text-white/80 text-xl text-center max-w-2xl mb-6"> 23 {(intl.locale != "ja" || process.env.FORCE_LOAD_ALL_JA_SECTIONS) && (<> 24 { intl.formatMessage({ id: "damus_around_the_world.subheadline", defaultMessage: "Damus store is available, be the cool one within your group of friends, share to the world your love for Damus. You might even appear here." }) } 25 </>)} 26 </motion.div> 27 <Link href={DAMUS_MERCH_STORE_URL} target="_blank"> 28 <Button variant="default" className="w-full md:w-auto"> 29 <ShoppingCartIcon className="mr-2" /> 30 { intl.formatMessage({ id: "damus_around_the_world.visit_damus_store_now", defaultMessage: "Visit Damus store now" }) } 31 <ArrowUpRight className="ml-2" /> 32 </Button> 33 </Link> 34 </div> 35 <div className="flex flex-col gap-y-4 md:gap-y-4 items-stretch justify-center" aria-hidden="true"> 36 <Ticker className="w-screen" timePeriod={20}> 37 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/1.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_1_alt_text", defaultMessage: "An artistic illustration of a tropical beach with a sailing boat in the shape of the Damus logo" }) }/> 38 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/2.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_2_alt_text", defaultMessage: "Members of the Damus team and friends at a conference booth" }) }/> 39 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/3.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_3_alt_text", defaultMessage: "Members of the Damus team on a video call at the conference booth" }) }/> 40 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/4.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_4_alt_text", defaultMessage: "A picture of the Damus cap" }) }/> 41 </Ticker> 42 <Ticker className="w-screen" timePeriod={20} reverseDirection={true}> 43 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/5.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_5_alt_text", defaultMessage: "Derek Ross making a presentation at a conference" }) }/> 44 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/6.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_6_alt_text", defaultMessage: "A man standing next to a 'Welcome to colorful Colorado' sign" }) }/> 45 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/7.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_7_alt_text", defaultMessage: "A man wearing Damus merch" }) }/> 46 <TickerImage className="w-72 h-48 md:w-96 md:h-72" src="/around-the-world-photos/4.webp" altText={ intl.formatMessage({ id: "damus_around_the_world.photo_4_alt_text", defaultMessage: "A picture of the Damus cap" }) }/> 47 </Ticker> 48 </div> 49 </div> 50 </div> 51 </div> 52 </>) 53 }