forked from QuantumNous/new-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcta.tsx
More file actions
84 lines (74 loc) · 2.96 KB
/
Copy pathcta.tsx
File metadata and controls
84 lines (74 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
Copyright (C) 2023-2026 QuantumNous
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
For commercial licensing, please contact support@quantumnous.com
*/
import { Link } from '@tanstack/react-router'
import { ArrowRight } from 'lucide-react'
import { useTranslation } from 'react-i18next'
import { AnimateInView } from '@/components/animate-in-view'
import { Button } from '@/components/ui/button'
interface CTAProps {
className?: string
isAuthenticated?: boolean
}
export function CTA(props: CTAProps) {
const { t } = useTranslation()
if (props.isAuthenticated) {
return null
}
return (
<section className='relative z-10 overflow-hidden px-6 py-24 md:py-32'>
{/* Gradient mesh background */}
<div
aria-hidden
className='absolute inset-0 -z-10 opacity-20 dark:opacity-[0.08]'
style={{
background: [
'radial-gradient(ellipse 50% 50% at 30% 50%, oklch(0.7 0.15 250 / 70%) 0%, transparent 70%)',
'radial-gradient(ellipse 40% 40% at 70% 40%, oklch(0.65 0.12 200 / 50%) 0%, transparent 70%)',
].join(', '),
}}
/>
<AnimateInView
className='mx-auto max-w-2xl text-center'
animation='scale-in'
>
<h2 className='text-2xl leading-tight font-bold tracking-tight md:text-4xl'>
{t('Ready to simplify')}
<br />
<span className='bg-gradient-to-r from-blue-400 via-violet-400 to-purple-500 bg-clip-text text-transparent'>
{t('your AI integration?')}
</span>
</h2>
<p className='text-muted-foreground/80 mx-auto mt-5 max-w-md text-sm leading-relaxed md:text-base'>
{t(
'Deploy your own gateway and start routing requests through your configured upstream services.'
)}
</p>
<div className='mt-8 flex items-center justify-center gap-3'>
<Button className='group rounded-lg' render={<Link to='/sign-up' />}>
{t('Get Started')}
<ArrowRight className='ml-1 size-3.5 transition-transform duration-200 group-hover:translate-x-0.5' />
</Button>
<Button
variant='outline'
className='border-border/50 hover:border-border hover:bg-muted/50 rounded-lg'
render={<Link to='/pricing' />}
>
{t('View Pricing')}
</Button>
</div>
</AnimateInView>
</section>
)
}