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>
119 lines
2.4 KiB
CSS
119 lines
2.4 KiB
CSS
@tailwind base;
|
||
@tailwind components;
|
||
@tailwind utilities;
|
||
|
||
html,
|
||
body,
|
||
#root {
|
||
height: 100%;
|
||
margin: 0;
|
||
}
|
||
|
||
/* ══ 官网落地页设计 token(跟随 logo:青→蓝→紫)══
|
||
仅 src/site/ 的落地页组件用这些;admin 控制台用默认 gray/violet 调色板,互不影响。
|
||
bg-ground/text-ink 等只作用在 SiteLayout 的容器上(见 site-layout.tsx),不改 body。 */
|
||
:root {
|
||
--ground: #f5f7f9;
|
||
--surface: #ffffff;
|
||
--ink: #151c24;
|
||
--ink-2: #526069;
|
||
--ink-3: #8595a0;
|
||
--hairline: #e0e7ec;
|
||
--hairline-strong: #c6d2da;
|
||
--accent: #0284c7;
|
||
--accent-ink: #075985;
|
||
--accent-soft: #e0f2fe;
|
||
--code-bg: #ebf1f5;
|
||
--term-bg: #0e1620;
|
||
--term-ink: #c9e4f5;
|
||
--brand-g1: #0891b2;
|
||
--brand-g2: #2563eb;
|
||
--brand-g3: #9333ea;
|
||
}
|
||
|
||
.dark {
|
||
--ground: #0b1117;
|
||
--surface: #111925;
|
||
--ink: #e6edf3;
|
||
--ink-2: #93a6b4;
|
||
--ink-3: #62737f;
|
||
--hairline: #1f2c38;
|
||
--hairline-strong: #32434f;
|
||
--accent: #38bdf8;
|
||
--accent-ink: #7dd3fc;
|
||
--accent-soft: #0b3049;
|
||
--code-bg: #14202b;
|
||
--term-bg: #0a121b;
|
||
--term-ink: #bfe3f7;
|
||
--brand-g1: #22d3ee;
|
||
--brand-g2: #60a5fa;
|
||
--brand-g3: #c084fc;
|
||
}
|
||
|
||
/* v3 对 var() 色不支持 /opacity 修饰,用 color-mix 还原 bg-ground/85(sticky 头透底 + 模糊)。 */
|
||
.bg-ground-85 {
|
||
background-color: color-mix(in srgb, var(--ground) 85%, transparent);
|
||
}
|
||
|
||
/* 品牌渐变文字(logo 同源:青→蓝→紫),落地页克制使用 */
|
||
.text-brand-gradient {
|
||
background: linear-gradient(92deg, var(--brand-g1), var(--brand-g2) 55%, var(--brand-g3));
|
||
-webkit-background-clip: text;
|
||
background-clip: text;
|
||
color: transparent;
|
||
}
|
||
|
||
/* 终端光标 */
|
||
@keyframes caret-blink {
|
||
50% {
|
||
opacity: 0;
|
||
}
|
||
}
|
||
.caret-blink {
|
||
animation: caret-blink 1.1s steps(1) infinite;
|
||
}
|
||
|
||
/* 滚动进场(配合 Reveal 组件) */
|
||
.reveal {
|
||
opacity: 0;
|
||
transform: translateY(16px);
|
||
transition:
|
||
opacity 0.6s ease,
|
||
transform 0.6s ease;
|
||
}
|
||
.reveal-in {
|
||
opacity: 1;
|
||
transform: none;
|
||
}
|
||
|
||
/* 终端事件流:逐行浮现 */
|
||
@keyframes term-line-in {
|
||
from {
|
||
opacity: 0;
|
||
transform: translateY(6px);
|
||
}
|
||
to {
|
||
opacity: 1;
|
||
transform: none;
|
||
}
|
||
}
|
||
.term-line {
|
||
opacity: 0;
|
||
animation: term-line-in 0.45s ease forwards;
|
||
}
|
||
|
||
@media (prefers-reduced-motion: reduce) {
|
||
.caret-blink,
|
||
.term-line {
|
||
animation: none;
|
||
}
|
||
.term-line {
|
||
opacity: 1;
|
||
}
|
||
.reveal {
|
||
opacity: 1;
|
||
transform: none;
|
||
transition: none;
|
||
}
|
||
}
|