Files
novalon-website/src/app/terms/page.tsx
T
张翔 9053f69123 feat(app): 全局样式重构与核心应用层更新
- 重构 globals.css 设计令牌系统,对齐咨询风品牌色与排版
- 更新根布局,集成 SEO schema 与黑暗模式防闪烁脚本
- 添加 robots.ts 与 sitemap.ts 动态生成
- 添加 middleware.ts 中间件层
- 更新隐私政策与服务条款页面
2026-07-07 06:52:19 +08:00

211 lines
13 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Metadata } from 'next';
import { getPublishedItems } from '@/lib/cms/data-server';
import { COMPANY_INFO } from '@/lib/constants';
export const metadata: Metadata = {
title: `服务条款 - ${COMPANY_INFO.displayName}`,
description: `${COMPANY_INFO.name}服务条款`,
};
function TermsContent() {
return (
<div className="prose prose-lg max-w-none">
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
使&ldquo;&rdquo;&ldquo;&rdquo;使使
</p>
<p className="text-[var(--color-text-muted)] leading-relaxed">
使
</p>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
ERPCRMBI等
</p>
<p className="text-[var(--color-text-muted)] leading-relaxed">
</p>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<h3 className="text-xl font-semibold text-[var(--color-text-primary)] mb-3">2.1 </h3>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
使
</p>
<h3 className="text-xl font-semibold text-[var(--color-text-primary)] mb-3">2.2 </h3>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
使
</p>
<p className="text-[var(--color-text-muted)] leading-relaxed">
</p>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
使
</p>
<ul className="list-disc pl-6 text-[var(--color-text-muted)] space-y-2 mb-4">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<p className="text-[var(--color-text-muted)] leading-relaxed">
使
</p>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
</p>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
使
</p>
<p className="text-[var(--color-text-muted)] leading-relaxed">
使使
</p>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<h3 className="text-xl font-semibold text-[var(--color-text-primary)] mb-3">5.1 </h3>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
</p>
<h3 className="text-xl font-semibold text-[var(--color-text-primary)] mb-3">5.2 </h3>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
</p>
<h3 className="text-xl font-semibold text-[var(--color-text-primary)] mb-3">5.3 退</h3>
<p className="text-[var(--color-text-muted)] leading-relaxed">
退使
</p>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
&ldquo;&rdquo;&ldquo;&rdquo;
</p>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
</p>
<ul className="list-disc pl-6 text-[var(--color-text-muted)] space-y-2">
<li></li>
<li></li>
<li></li>
<li>使使</li>
</ul>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
使
</p>
<ul className="list-disc pl-6 text-[var(--color-text-muted)] space-y-2">
<li></li>
<li></li>
<li>使</li>
<li></li>
</ul>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
</p>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<ul className="list-disc pl-6 text-[var(--color-text-muted)] space-y-2">
<li>使</li>
<li>使</li>
<li>使使</li>
<li>便</li>
</ul>
</section>
<section className="mb-12">
<h2 className="text-2xl font-bold text-[var(--color-text-primary)] mb-4"></h2>
<p className="text-[var(--color-text-muted)] leading-relaxed mb-4">
</p>
<ul className="list-none text-[var(--color-text-muted)] space-y-2">
<li></li>
<li>contact@novalon.cn</li>
<li>驿12</li>
</ul>
</section>
<section className="bg-[var(--color-warning-bg)] p-6 rounded-lg">
<div className="flex items-center gap-2 mb-2">
<div className="w-2 h-2 bg-[var(--color-brand)] rounded-full" />
<p className="text-[var(--color-text-primary)] font-medium"></p>
</div>
<p className="text-[var(--color-text-muted)] pl-4">2026226</p>
</section>
</div>
);
}
export default async function TermsOfServicePage() {
let cmsContent: string | null = null;
try {
const items = await getPublishedItems('legal-page');
const termsItem = items.find((item) => item.data.pageType === 'terms');
if (termsItem && typeof termsItem.data.content === 'string' && termsItem.data.content.length > 0) {
cmsContent = termsItem.data.content as string;
}
} catch {
// CMS not available, fall back to inline content
}
return (
<div className="min-h-screen bg-[var(--color-bg-primary)]">
<div className="bg-gradient-to-br from-[var(--color-brand)] via-[var(--color-brand)]/80 to-[var(--color-hero-dark-end)] py-20">
<div className="container-wide">
<h1 className="text-4xl md:text-5xl font-bold text-white mb-4">
</h1>
<p className="text-xl text-white/90 max-w-2xl">
使
</p>
</div>
</div>
<div className="container-wide py-16">
<div className="max-w-4xl">
{cmsContent ? (
<div
className="prose prose-lg max-w-none"
dangerouslySetInnerHTML={{ __html: cmsContent }}
/>
) : (
<TermsContent />
)}
</div>
</div>
</div>
);
}