Benefits.tsx (5494B)
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 import { Joystick, KeyRound, Scale, Wallet } from "lucide-react"; 10 import { MeshGradient4 } from "../effects/MeshGradient.4"; 11 import { MeshGradient3 } from "../effects/MeshGradient.3"; 12 13 export function Benefits({ className }: { className?: string }) { 14 const intl = useIntl() 15 16 const benefits = [ 17 { 18 icon: <Joystick className="h-12 w-12 text-white opacity-80"/>, 19 headline: intl.formatMessage({ id: "benefits.benefit1.name", defaultMessage: "You are in control" }), 20 description: intl.formatMessage({ id: "benefits.benefit1.description", defaultMessage: "Built on open internet protocols, there is no platform that can ban or censor you. You are in control of your data & speech." }), 21 }, 22 { 23 icon: <KeyRound className="text-white h-12 w-12 opacity-80"/>, 24 headline: intl.formatMessage({ id: "benefits.benefit2.name", defaultMessage: "No registration required" }), 25 description: intl.formatMessage({ id: "benefits.benefit2.description", defaultMessage: "Creating an account doesn't require a phone number, email or name. Get started right away, and truly own your account — Thanks to advanced cryptography" }), 26 }, 27 { 28 icon: <Scale className="h-12 w-12 text-white opacity-80"/>, 29 headline: intl.formatMessage({ id: "benefits.benefit3.name", defaultMessage: "No addictive algorithms" }), 30 description: intl.formatMessage({ id: "benefits.benefit3.description", defaultMessage: "Traditional social media keeps you addicted in order to sell you ads, which is intoxicating society. Damus doesn't. The result? A healthier community." }), 31 }, 32 { 33 icon: <Wallet className="h-12 w-12 text-white opacity-80"/>, 34 headline: intl.formatMessage({ id: "benefits.benefit4.name", defaultMessage: "Free speech meets Free money" }), 35 description: intl.formatMessage({ id: "benefits.benefit4.description", defaultMessage: "Tip your friends, earn tips, support creators, and stack sats with Bitcoin & Lightning, the Free and open internet money." }), 36 } 37 ] 38 39 return (<> 40 <div className={cn("bg-black overflow-hidden relative", className)}> 41 <MeshGradient3 className="absolute top-0 left-0 pointer-events-none translate-y-3/4 overflow-visible scale-150"/> 42 <div className="container mx-auto px-6 pb-32 pt-20"> 43 <div className="flex flex-col items-center justify-center mt-32 lg:mt-16"> 44 <div className="relative mb-32 flex flex-col items-center"> 45 <motion.h2 className="text-4xl md:text-8xl text-center text-transparent bg-clip-text bg-gradient-to-r from-damuspink-500 from-30% to-damuspink-600 to-100% font-semibold pb-8 break-keep"> 46 { intl.formatMessage({ id: "benefits.headline", defaultMessage: "You deserve to be Free." }) } 47 </motion.h2> 48 <motion.h3 className="text-3xl md:text-5xl text-center text-transparent bg-clip-text bg-gradient-to-r from-damuspink-500 from-30% to-damuspink-600 to-100% font-semibold pb-8 break-keep"> 49 { intl.formatMessage({ id: "benefits.subheadline", defaultMessage: "With Damus, you are in control." }) } 50 </motion.h3> 51 <motion.div className="text-white/60 text-xl text-center max-w-2xl mb-6 mt-6 break-keep"> 52 { intl.formatMessage({ id: "benefits.description", defaultMessage: "Damus is built on Nostr, a decentralized and open social network protocol. Without ads, toxic algorithms, or censorship, Damus gives you access to the social network that a truly free and healthy society needs — and deserves." }) } 53 </motion.div> 54 </div> 55 {(intl.locale != "ja" || process.env.FORCE_LOAD_ALL_JA_SECTIONS) && ( 56 <div className="flex flex-wrap gap-x-8 gap-y-16 items-stretch justify-center"> 57 {benefits.map((item, index) => ( 58 <div key={index} className="max-w-xs flex flex-col items-center justify-between"> 59 <RoundedContainerWithGradientBorder className=""> 60 {item.icon} 61 </RoundedContainerWithGradientBorder> 62 <h3 className="text-xl font-semibold text-transparent bg-clip-text bg-gradient-to-br from-white from-30% to-cyan-200 to-100% text-center text-normal mt-6"> 63 {item.headline} 64 </h3> 65 <p className="text-white/80 text-center text-normal mt-4"> 66 {item.description} 67 </p> 68 </div> 69 ))} 70 </div> 71 )} 72 </div> 73 </div> 74 </div> 75 </>) 76 }