DamusOnMedia.tsx (5710B)
1 import { MeshGradient2 } from "../effects/MeshGradient.2"; 2 import { Button } from "../ui/Button"; 3 import { FormattedMessage, useIntl } from "react-intl"; 4 import Link from "next/link"; 5 import { motion } from "framer-motion"; 6 import { RoundedContainerWithGradientBorder } from "../ui/RoundedContainerWithGradientBorder"; 7 import { cn } from "@/lib/utils"; 8 import Image from "next/image"; 9 10 const mediaCoverage = [ 11 { 12 mediaLogo: "/brand-logos/forbes.png", 13 date: new Date("2022-12-29"), 14 headline: "Nostr Is The Decentralized Protocol That Might Replace Elon Musk’s Twitter", 15 linkUrl: "https://www.forbes.com/sites/rogerhuang/2022/12/29/nostr-is-the-decentralized-protocol-that-might-replace-elon-musks-twitter/?sh=d8ea5e3442af" 16 }, 17 { 18 mediaLogo: "/brand-logos/forbes.png", 19 date: new Date("2023-04-11"), 20 headline: "How To Get Started With Nostr, Jack Dorsey’s Favorite Decentralized Social Network", 21 linkUrl: "https://www.forbes.com/sites/digital-assets/2023/04/11/how-to-get-started-with-nostr/?sh=4a1f84f8406b" 22 }, 23 { 24 mediaLogo: "/brand-logos/coindesk-full.png", 25 date: new Date("2023-04-17"), 26 headline: "Thank Elon for Making the Use Case for Twitter Competitor Nostr", 27 linkUrl: "https://www.coindesk.com/consensus-magazine/2023/04/17/nostr-decentralized-social-media/" 28 }, 29 { 30 mediaLogo: "/brand-logos/coindesk-full.png", 31 date: new Date("2023-04-20"), 32 headline: "The Use Case for Twitter Competitor Nostr", 33 linkUrl: "https://www.coindesk.com/video/the-use-case-for-twitter-competitor-nostr/" 34 }, 35 { 36 mediaLogo: "/brand-logos/youtube.png", 37 date: new Date("2023-05-11"), 38 headline: "BR034 - Nostr Taking off! Catch-up with NVK ft. Fiatjaf, JB55, Pablo & Odell", 39 linkUrl: "https://www.youtube.com/watch?v=Ul74FXtJ6Bw" 40 }, 41 { 42 mediaLogo: "/brand-logos/forbes.png", 43 date: new Date("2023-05-30"), 44 headline: "Meet @Fiatjaf, The Mysterious Nostr Creator Who Has Lured 18 Million Users And $5 Million From Jack Dorsey", 45 linkUrl: "https://www.forbes.com/sites/digital-assets/2023/05/30/bitcoin-social-network-nostr-creator-fiatjaf-/?sh=381d061b11c0" 46 }, 47 { 48 mediaLogo: "/brand-logos/x.png", 49 date: new Date("2023-07-15"), 50 headline: "Let's enjoy it together, talk with its creators & featured heroes, and watch extra scenes and a few bloopers.", 51 linkUrl: "https://twitter.com/filmfestbtc/status/1680155417031188481" 52 }, 53 { 54 mediaLogo: "/brand-logos/youtube.png", 55 date: new Date("2023-08-16"), 56 headline: "William Casarin | Creator of Damus App | Simply Bitcoin IRL", 57 linkUrl: "https://www.youtube.com/watch?v=Xk3jWC-KBZ0" 58 }, 59 { 60 mediaLogo: "/brand-logos/youtube.png", 61 date: new Date("2023-08-30"), 62 headline: "Nostr and the Future of Social Media with Will Casarin (WiM359)", 63 linkUrl: "https://www.youtube.com/watch?v=2mLUdBnJ0ls" 64 }, 65 { 66 mediaLogo: "/brand-logos/coinmarketcap.png", 67 date: new Date("2023-01-01"), 68 headline: "Twitter’s Web 3.0 Alternative Damus is Giving Away Satoshi to Incentivize User Engagement", 69 linkUrl: "https://coinmarketcap.com/community/articles/63e37f87a1bcb9298d237f7d/" 70 }, 71 72 ] 73 74 export function DamusOnMedia({ className }: { className?: string }) { 75 const intl = useIntl() 76 77 return (<> 78 <div className={cn("bg-black overflow-hidden relative min-h-screen", className)}> 79 <div className="container mx-auto px-6 pb-32 pt-12"> 80 <div className="flex flex-col items-center justify-center mt-32 lg:mt-16"> 81 <div className="relative mb-32"> 82 <motion.h2 className="text-6xl md:text-8xl text-center text-transparent bg-clip-text bg-gradient-to-r from-white from-30% to-cyan-500 to-100% font-semibold break-keep"> 83 { intl.formatMessage({ id: "damus_on_media.headline", defaultMessage: "Damus on media" }) } 84 </motion.h2> 85 </div> 86 <div className="flex flex-wrap gap-x-8 gap-y-16 items-center justify-center"> 87 {mediaCoverage.map((item, index) => ( 88 <Link key={index} className="max-w-xs flex flex-col items-center justify-center" href={item.linkUrl} target="_blank"> 89 <RoundedContainerWithGradientBorder className="hover:scale-105 active:scale-95 transition w-48"> 90 <Image 91 src={item.mediaLogo} 92 className="p-6 object-contain" 93 fill 94 sizes="300px" 95 alt="" 96 /> 97 </RoundedContainerWithGradientBorder> 98 <h3 className="text-white/70 text-center text-sm font-semibold mt-8 hover:underline"> 99 { intl.formatDate(item.date, { month: "short", year: "numeric" }) } 100 </h3> 101 <p className="text-transparent bg-clip-text bg-gradient-to-br from-white from-30% to-cyan-200 to-100% text-center text-normal mt-4 hover:underline"> 102 {item.headline} 103 </p> 104 </Link> 105 ))} 106 </div> 107 </div> 108 </div> 109 </div> 110 </>) 111 }