damus.io

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

PurpleBenefits.tsx (4001B)


      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 { Award, Badge, Heart, Joystick, KeyRound, Scale, Stars, Wallet } from "lucide-react";
     10 import { MeshGradient4 } from "../effects/MeshGradient.4";
     11 import { MeshGradient3 } from "../effects/MeshGradient.3";
     12 
     13 export function PurpleBenefits({ className }: { className?: string }) {
     14   const intl = useIntl()
     15 
     16   const benefits = [
     17     {
     18       icon: <Heart className="h-12 w-12 text-white opacity-80" />,
     19       headline: intl.formatMessage({ id: "purple.benefits.benefit1.name", defaultMessage: "Help Build The Future" }),
     20       description: intl.formatMessage({ id: "purple.benefits.benefit1.description", defaultMessage: "Support Damus development to help build the future of decentralized communication on the web." }),
     21     },
     22     {
     23       icon: <Stars className="text-white h-12 w-12 opacity-80" />,
     24       headline: intl.formatMessage({ id: "purple.benefits.benefit2.name", defaultMessage: "Exclusive features" }),
     25       description: intl.formatMessage({ id: "purple.benefits.benefit2.description", defaultMessage: "Be the first to access upcoming premium features: Automatic translations, longer note storage, and more" }),
     26     },
     27     {
     28       icon: <Award className="h-12 w-12 text-white opacity-80" />,
     29       headline: intl.formatMessage({ id: "purple.benefits.benefit3.name", defaultMessage: "Supporter Badge" }),
     30       description: intl.formatMessage({ id: "purple.benefits.benefit3.description", defaultMessage: "Get a special badge on your profile to show everyone your contribution to Freedom tech" }),
     31     },
     32   ]
     33 
     34   return (<>
     35     <div className={cn("bg-black overflow-hidden relative min-h-screen", className)} id="benefits">
     36       <MeshGradient3 className="absolute top-0 left-0 pointer-events-none translate-y-3/4 overflow-visible scale-150" />
     37       <div className="container mx-auto px-6 pt-20">
     38         <div className="flex flex-col items-center justify-center lg:mt-16">
     39           <div className="relative mb-16 md:mb-32 flex flex-col items-center">
     40             <motion.h2 className="text-5xl 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">
     41               {intl.formatMessage({ id: "purple.benefits.headline", defaultMessage: "Get more from Damus." })}
     42             </motion.h2>
     43             <motion.div className="text-white/60 text-xl text-center max-w-2xl mb-6 mt-6 break-keep">
     44               {intl.formatMessage({ id: "purple.benefits.description", defaultMessage: "Help us stay independent in our mission for Freedom tech with our Purple membership, and look cool doing it!" })}
     45             </motion.div>
     46           </div>
     47           {(intl.locale != "ja" || process.env.FORCE_LOAD_ALL_JA_SECTIONS) && (
     48             <div className="flex flex-wrap gap-x-8 gap-y-16 items-stretch justify-center">
     49               {benefits.map((item, index) => (
     50                 <div key={index} className="max-w-xs flex flex-col items-center justify-between">
     51                   <RoundedContainerWithGradientBorder className="">
     52                     {item.icon}
     53                   </RoundedContainerWithGradientBorder>
     54                   <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">
     55                     {item.headline}
     56                   </h3>
     57                   <p className="text-white/80 text-center text-normal mt-4">
     58                     {item.description}
     59                   </p>
     60                 </div>
     61               ))}
     62             </div>
     63           )}
     64         </div>
     65       </div>
     66     </div>
     67   </>)
     68 }