"use client" import type React from "react" import { Check, ChevronRight, Clock } from "lucide-react" import { Separator } from "@/components/ui/separator" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import Link from "next/link" import { motion } from "motion/react" interface PricingFeatures { everything: string[] storage: string[] ai: string[] } interface FeatureItemProps { children: React.ReactNode } interface PricingCardProps { title: string price: string period: string description: string features: string[] badge?: string buttonText?: string buttonIcon?: React.ReactNode isComingSoon?: boolean className?: string } const cardVariants = { initial: { transform: "scale(1)", transition: { type: "spring", stiffness: 300, damping: 20, layout: false } }, hover: { transform: "scale(1.02)", transition: { type: "spring", stiffness: 300, damping: 20, layout: false } } } as const const textVariants = { initial: { color: "inherit", transition: { duration: 0.2 } }, hover: { color: "inherit", transition: { duration: 0.2 } } } as const const features: PricingFeatures = { everything: [ "Use anything and everything on LibreCloud", "Unlimited Password/Secret Storage with Vaultwarden", "4GB of Email Storage", "Unlimited Git Repositories with Gitea", "Unlimited Fair-Use Actions runs with Gitea", "Priority support via Email/Telegram", ], storage: [ "ZERO FEES - You pay the price we pay", "Through some providers, we offer 24/7 monitoring", "Several data storage providers to choose from", "Clone/erase your entire disk at any time (coming soon)", "Do anything with your extra slice... we'll setup email, services, and more at no additional cost", ], ai: [ "Flexible options such as OpenRouter and Cloud VPS", "Pay per token or hour at no additional cost from LibreCloud", "Use our open-source chat interface with a range of providers", "Use the latest models such as Anthropic's Claude 3.7 Sonnet and OpenAI's o3-mini", ], } const FeatureItem: React.FC = ({ children }) => (
{children}
) const PricingCard: React.FC = ({ title, price, period, description, features, badge, buttonText, buttonIcon, isComingSoon, className, }) => (
{title} {badge && (
{badge}
)}
{price} {period}
{description} {isComingSoon ? ( ) : buttonText ? ( ) : null}
What's included:
{features.map((feature, index) => ( {feature} ))}
) export default function Pricing(): React.ReactElement { return (

Pricing You'll Love

Simple, transparent pricing with zero additional fees.

} />
) }