TypeScript 97.4%
SQL 1%
JavaScript 0.9%
CSS 0.6%
1import Link from "next/link";2import { ArrowRight } from "lucide-react";3import { Button } from "@/components/ui/button";4import { LogoMark } from "@/components/brand/logo";5import { Container } from "./section";6import { Reveal } from "./reveal";78export function FinalCta() {9 return (10 <section className="relative overflow-hidden py-20 sm:py-28">11 <div aria-hidden className="dot-grid pointer-events-none absolute inset-0 opacity-60 [mask-image:radial-gradient(ellipse_60%_70%_at_50%_100%,black_20%,transparent_100%)] dark:opacity-40" />12 <div aria-hidden className="pointer-events-none absolute bottom-[-14rem] left-1/2 h-[26rem] w-[40rem] -translate-x-1/2 rounded-full bg-accent/15 blur-[110px] dark:bg-accent/10" />13 <Container className="relative">14 <Reveal className="mx-auto max-w-2xl text-center">15 <LogoMark size={44} className="mx-auto shadow-md" />16 <h2 className="mt-6 text-balance text-3xl font-semibold leading-[1.08] tracking-tight sm:text-5xl">Your models. Your keys. One workspace.</h2>17 <p className="mx-auto mt-4 max-w-md text-pretty text-[15px] leading-7 text-fg-muted sm:text-base">18 Free forever for the interface. Connect a key in under a minute and send your first prompt.19 </p>20 <div className="mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row">21 <Button asChild size="lg" className="w-full sm:w-auto">22 <Link href="/signup">23 Start using PolyLLM24 <ArrowRight />25 </Link>26 </Button>27 <Button asChild size="lg" variant="ghost" className="w-full sm:w-auto">28 <Link href="/login">I already have an account</Link>29 </Button>30 </div>31 </Reveal>32 </Container>33 </section>34 );35}36