6de1b3f6b2
用户要 agent.sundynix.cn/ 打开是营销官网、/admin 是后台,且只用一个前端。 把 sundynix-site/web 的营销落地页融进 sundynix-admin 这一个 Vite 工程(不挂两份 embed): - 拷官网到 src/site/:home(hero/功能/架构/快速上手/下载)+layout(header/footer) +terminal-demo/logo/reveal 等 + content/site.ts(文案本就是本产品)。去掉博客/posts/埋点/RSS (营销 only,零后端改动);use-release 改纯静态版本号。public/ 加 brand logo+favicon。 - Tailwind v4→v3 对齐:site 的 ink/ground/accent/term 等 token 加进 tailwind.config(var 引用) + :root/.dark 变量+keyframes 进 index.css;bg-ground/85 用 color-mix 还原。admin 自身用默认 gray/violet 调色板,不冲突;landing 的 bg-ground 只作用在 SiteLayout 容器、不改 body。 - 路由重构:App.tsx 换 BrowserRouter —— / 官网(公开)、/admin/* 后台(AdminGate 内做 me/Login/AppShell)。 routes.tsx path 改相对、AppShell 链接加 /admin 前缀。@ 别名指向 src/site。 - gateway/Dockerfile/nginx 零改动:单份 dist 挂根 + NoRoute SPA 兜底已支持 BrowserRouter 深链。 验证:tsc + vite build(Tailwind 编译过)+ vitest 41 过;gateway 二进制冒烟打真 serve—— / 返回官网 index.html、/admin 与 /admin/tasks SPA 兜底 200、/brand/*.webp 200、/api/v1 走 API 401; dist 里确认落地页文案已进 bundle。(注:MCP 浏览器当前断开,视觉渲染待部署后线上看。) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
86 lines
2.9 KiB
TypeScript
86 lines
2.9 KiB
TypeScript
import { Link } from 'react-router-dom'
|
|
import { SITE } from '@/content/site'
|
|
import { LogoMark } from '@/components/logo'
|
|
|
|
const COLUMNS = [
|
|
{
|
|
title: 'PRODUCT',
|
|
links: [
|
|
{ label: '功能', href: '/#features' },
|
|
{ label: '架构', href: '/#architecture' },
|
|
{ label: '下载', href: '/download', internal: true },
|
|
],
|
|
},
|
|
{
|
|
title: 'RESOURCES',
|
|
links: [
|
|
{ label: '下载桌面版', href: '/download', internal: true },
|
|
{ label: '源码仓库', href: SITE.repo },
|
|
],
|
|
},
|
|
] as const
|
|
|
|
export function SiteFooter() {
|
|
return (
|
|
<footer className="border-t border-hairline">
|
|
<div className="mx-auto grid max-w-6xl gap-10 px-6 py-12 md:grid-cols-[1.5fr_1fr_1fr] lg:px-10">
|
|
<div>
|
|
<p className="flex items-center gap-2.5 font-mono text-[15px] font-semibold">
|
|
<LogoMark size={30} />
|
|
sundynix <em className="not-italic text-accent">agentix</em>
|
|
</p>
|
|
<p className="mt-2 text-[14px] text-ink-2">{SITE.tagline}</p>
|
|
<p className="mt-4 font-mono text-[11.5px] tracking-[0.08em] text-ink-3">
|
|
{SITE.version} · MACOS / WINDOWS / SELF-HOSTED
|
|
</p>
|
|
</div>
|
|
|
|
{COLUMNS.map((col) => (
|
|
<nav key={col.title} aria-label={col.title}>
|
|
<p className="mb-3.5 font-mono text-[11px] tracking-[0.16em] text-ink-3">
|
|
{col.title}
|
|
</p>
|
|
<ul className="space-y-2.5">
|
|
{col.links.map((link) => (
|
|
<li key={link.label}>
|
|
{'internal' in link && link.internal ? (
|
|
<Link
|
|
to={link.href}
|
|
className="text-[13.5px] text-ink-2 transition-colors hover:text-accent-ink"
|
|
>
|
|
{link.label}
|
|
</Link>
|
|
) : (
|
|
<a
|
|
href={link.href}
|
|
target={link.href.startsWith('http') ? '_blank' : undefined}
|
|
rel={link.href.startsWith('http') ? 'noreferrer' : undefined}
|
|
className="text-[13.5px] text-ink-2 transition-colors hover:text-accent-ink"
|
|
>
|
|
{link.label}
|
|
</a>
|
|
)}
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</nav>
|
|
))}
|
|
</div>
|
|
|
|
<div className="border-t border-hairline">
|
|
<div className="mx-auto flex max-w-6xl flex-wrap items-center justify-between gap-x-6 gap-y-2 px-6 py-5 font-mono text-[12px] text-ink-3 lg:px-10">
|
|
<span>© 2026 SUNDYNIX AGENTIX</span>
|
|
<a
|
|
href="https://beian.miit.gov.cn/"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
className="transition-colors hover:text-accent-ink"
|
|
>
|
|
{SITE.icp}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
)
|
|
}
|