import { AwardIcon, HeartIcon, type LucideIcon, MessageCircleIcon, RocketIcon, SparklesIcon, ZapIcon, } from 'lucide-react'; import { PromptCard } from '@/components/organization/prompt-card'; import { LinkButton } from '@/components/ui/button'; import { useAppContext } from '@/hooks/use-app-context'; import { useCookieStore } from '@/hooks/use-cookie-store'; const PERKS = [ { icon: RocketIcon, text: 'Latest Docker Images', description: 'Bleeding-edge builds on every commit', }, { icon: MessageCircleIcon, text: 'Prioritized Support', description: 'Get help faster with priority Discord support', }, { icon: SparklesIcon, text: 'Feature Requests', description: 'Your ideas get prioritized in our roadmap', }, { icon: AwardIcon, text: 'Exclusive Discord Role', description: 'Special badge and recognition in our community', }, { icon: ZapIcon, text: 'Early Access', description: 'Try new features before public release', }, { icon: HeartIcon, text: 'Direct Impact', description: 'Your support directly funds development', }, ] as const; function PerkPoint({ icon: Icon, text, description, }: { icon: LucideIcon; text: string; description: string; }) { return (

{text}

{description}

); } export default function SupporterPrompt() { const { isSelfHosted, isDemo } = useAppContext(); const [supporterPromptClosed, setSupporterPromptClosed] = useCookieStore( 'supporter-prompt-closed', false ); if (!isSelfHosted || isDemo) { return null; } return ( setSupporterPromptClosed(true)} show={!supporterPromptClosed} subtitle="Help us build the future of open analytics" title="Support OpenPanel" >
{PERKS.map((perk) => ( ))}
Become a Supporter

Starting at $20/month • Cancel anytime •{' '} Learn more

); }