import Link from "next/link"; import { Check, Rocket, ShieldCheck } from "lucide-react"; import { getCheckoutEnabledPlans } from "@/lib/billing/plans"; import { MarketingShell } from "@/components/lovart/marketing-shell"; import { PricingActionButton } from "@/components/lovart/pricing-action-button"; import { Reveal } from "@/components/lovart/reveal"; import { getEnabledAiModelsWithProvider, getNavLinks, getPublicFeaturedImages, getSiteSettings, getTutorialVideos, } from "@/lib/db/queries"; type PricingPageProps = { searchParams?: Promise<{ checkout?: string; plan?: string }> | { checkout?: string; plan?: string }; }; type PlanViewModel = { id: "starter" | "basic" | "pro" | "ultimate"; name: string; price: string; period: string; desc: string; features: string[]; highlight?: boolean; }; export default async function LovartPricingPage({ searchParams }: PricingPageProps) { const resolvedSearchParams = await Promise.resolve(searchParams); const checkoutState = resolvedSearchParams?.checkout; const selectedPlan = resolvedSearchParams?.plan; const [settings, navLinks, models, videos, featuredImages] = await Promise.all([ getSiteSettings(), getNavLinks(), getEnabledAiModelsWithProvider(), getTutorialVideos(), getPublicFeaturedImages(8), ]); const modelCount = models.length; const tutorialCount = videos.length; const checkoutEnabledPlans = getCheckoutEnabledPlans(); const plans: PlanViewModel[] = [ { id: "starter", name: "Starter", price: "¥0", period: "/月", desc: "适合快速体验 AI 设计流程", features: [ "基础文生图与简单编辑", `最多 ${Math.max(3, Math.floor(modelCount / 3))} 个模型试用`, "社区支持与基础教程", ], }, { id: "basic", name: "Basic", price: "¥69", period: "/月", desc: "适合独立创作者日常出图", features: ["高清导出", "多风格模板", "历史记录与作品管理"], }, { id: "pro", name: "Pro", price: "¥199", period: "/月", desc: "适合高频生产内容的个人与团队", features: [ `完整 ${modelCount} 个在线模型能力`, `附赠 ${tutorialCount} 条教程与工作流示例`, "优先队列与高级编辑功能", ], highlight: true, }, { id: "ultimate", name: "Ultimate", price: "¥599", period: "/月", desc: "适合企业协作与品牌运营", features: ["团队权限管理", "批量任务与自动归档", "可定制品牌资产与 SSO 接入"], }, ]; const faqs = [ { q: "可以随时升级或降级套餐吗?", a: "支持。套餐调整后会立刻刷新权限,已生成内容不会丢失。", }, { q: "定价文案和能力是固定的吗?", a: "不是。当前页面已与后台模型和教程配置联动,后续接入支付后会直接映射到真实权益。", }, { q: "企业版是否支持私有部署?", a: "支持按需评估,可在现有系统基础上扩展存储、鉴权和审计策略。", }, ]; return (

Pricing Blueprint

选择你的专属方案

套餐文案已与后端模型、教程和精选样例联动。下一步接入支付接口后即可直接上线。

{checkoutState ? (
{checkoutState === "success" ? (

支付已完成,正在同步你的订阅权益{selectedPlan ? `(${selectedPlan})` : ""}。如未生效,请稍后刷新。

) : (

支付已取消,你可以随时重新发起订阅。

)}
) : null}
{plans.map((plan) => (

{plan.name}

{plan.price} {plan.period}

{plan.desc}

    {plan.features.map((feature) => (
  • {feature}
  • ))}
{plan.id === "starter" ? ( 选择 {plan.name} ) : ( )}
))}

计费与能力说明

  • 套餐可在后台自由调整模型与功能开关,页面会自动反映实际能力。
  • 当前在线模型:{modelCount},教程内容:{tutorialCount},用于驱动套餐文案。
  • 支持接入 Stripe / 微信支付,并保留当前视觉样式。

精选样例

{featuredImages.length > 0 ? (
{featuredImages.map((image) => ( {image.prompt ))}
) : (

暂无精选图片

)}

常见问题

{faqs.map((item) => (
{item.q}

{item.a}

))}

用 Lovart 设计

目前已完成高保真定价页重建和后端联调,下一步建议直接接入订阅支付与权益同步。

开始免费试用 去后台调整套餐文案
); }