damus.io

damus.io website
git clone git://jb55.com/damus.io
Log | Files | Refs | README | LICENSE

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 }