feat: 换用官方 logo 原图

- S 标从 2048 原图裁切:导航/页脚/admin 用 512 webp(96KB),favicon 32/64 圆角 png,apple-touch-icon 180
- OG 分享图用完整版 logo-full.jpg(含字标),index.html 补 og:title/description/image
- 自绘 SVG logo 退役;原图 8.4MB 移入 design-assets/(已 gitignore,不进构建产物)
- web/dist 总体积 1.0MB

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-07-17 11:51:33 +08:00
parent 7e21036faf
commit 197f40448e
14 changed files with 28 additions and 146 deletions
+3
View File
@@ -16,3 +16,6 @@ server/internal/webfs/admin_dist/*
.env .env
.DS_Store .DS_Store
# 品牌原始素材(大文件,不进版本库)
design-assets/
+1 -1
View File
@@ -2,7 +2,7 @@
<html lang="zh-CN"> <html lang="zh-CN">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/admin/favicon.svg" /> <link rel="icon" type="image/png" href="/admin/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="noindex" /> <meta name="robots" content="noindex" />
<title>sundynix admin — 内容管理</title> <title>sundynix admin — 内容管理</title>
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

-27
View File
@@ -1,27 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#34E5E0"/>
<stop offset="0.5" stop-color="#3B82F6"/>
<stop offset="1" stop-color="#A855F7"/>
</linearGradient>
</defs>
<rect width="64" height="64" rx="14" fill="#0B1117"/>
<g fill="none" stroke-linecap="round">
<path d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49" stroke="url(#g)" stroke-width="9" opacity="0.22"/>
<path d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49" stroke="url(#g)" stroke-width="6" opacity="0.45"/>
<path d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49" stroke="url(#g)" stroke-width="3.6"/>
</g>
<g fill="#34E5E0">
<circle cx="15" cy="13" r="1.4"/>
<circle cx="10" cy="17" r="1"/>
<circle cx="14" cy="20" r="0.8"/>
</g>
<g stroke="#A855F7" stroke-width="0.9" opacity="0.75">
<path d="M42 49 L50 46 M42 49 L53 51 M50 46 L53 51" fill="none"/>
</g>
<g fill="#C084FC">
<circle cx="50" cy="46" r="1.5"/>
<circle cx="53" cy="51" r="1.2"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

+7 -45
View File
@@ -3,55 +3,17 @@ interface LogoMarkProps {
className?: string className?: string
} }
/** 品牌 Logo:霓虹数据流 S(青→蓝→紫),深岩底方形 */ /** 品牌 Logo:霓虹数据流 S(与 web 同源,admin 挂 /admin base */
export function LogoMark({ size = 28, className }: LogoMarkProps) { export function LogoMark({ size = 28, className }: LogoMarkProps) {
return ( return (
<svg <img
src={`${import.meta.env.BASE_URL}logo-mark.webp`}
width={size} width={size}
height={size} height={size}
viewBox="0 0 64 64" alt=""
className={className}
aria-hidden="true" aria-hidden="true"
> className={className}
<defs> style={{ borderRadius: '22%' }}
<linearGradient id="logo-g" x1="0" y1="0" x2="1" y2="1"> />
<stop offset="0" stopColor="#34E5E0" />
<stop offset="0.5" stopColor="#3B82F6" />
<stop offset="1" stopColor="#A855F7" />
</linearGradient>
</defs>
<rect width="64" height="64" rx="14" fill="#0B1117" />
<g fill="none" strokeLinecap="round">
<path
d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49"
stroke="url(#logo-g)"
strokeWidth="9"
opacity="0.22"
/>
<path
d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49"
stroke="url(#logo-g)"
strokeWidth="6"
opacity="0.45"
/>
<path
d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49"
stroke="url(#logo-g)"
strokeWidth="3.6"
/>
</g>
<g fill="#34E5E0">
<circle cx="15" cy="13" r="1.4" />
<circle cx="10" cy="17" r="1" />
<circle cx="14" cy="20" r="0.8" />
</g>
<g stroke="#A855F7" strokeWidth="0.9" opacity="0.75">
<path d="M42 49 L50 46 M42 49 L53 51 M50 46 L53 51" fill="none" />
</g>
<g fill="#C084FC">
<circle cx="50" cy="46" r="1.5" />
<circle cx="53" cy="51" r="1.2" />
</g>
</svg>
) )
} }
+10 -1
View File
@@ -2,12 +2,21 @@
<html lang="zh-CN"> <html lang="zh-CN">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link rel="icon" type="image/png" sizes="64x64" href="/favicon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta <meta
name="description" name="description"
content="sundynix agentix — 事件驱动的 AI Agent 工作台。画布编排智能体,多 Agent 团队研究、检索、生成真正的 Word 报告。" content="sundynix agentix — 事件驱动的 AI Agent 工作台。画布编排智能体,多 Agent 团队研究、检索、生成真正的 Word 报告。"
/> />
<meta property="og:title" content="sundynix agentix — 事件驱动的 AI Agent 工作台" />
<meta
property="og:description"
content="画布编排智能体,多 Agent 团队研究、检索、生成真正的 Word 报告。"
/>
<meta property="og:image" content="https://sundynix.com/brand/logo-full.jpg" />
<meta property="og:type" content="website" />
<title>sundynix agentix — 事件驱动的 AI Agent 工作台</title> <title>sundynix agentix — 事件驱动的 AI Agent 工作台</title>
<script> <script>
// 避免主题闪烁:React 挂载前先落 dark class // 避免主题闪烁:React 挂载前先落 dark class
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

-27
View File
@@ -1,27 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#34E5E0"/>
<stop offset="0.5" stop-color="#3B82F6"/>
<stop offset="1" stop-color="#A855F7"/>
</linearGradient>
</defs>
<rect width="64" height="64" rx="14" fill="#0B1117"/>
<g fill="none" stroke-linecap="round">
<path d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49" stroke="url(#g)" stroke-width="9" opacity="0.22"/>
<path d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49" stroke="url(#g)" stroke-width="6" opacity="0.45"/>
<path d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49" stroke="url(#g)" stroke-width="3.6"/>
</g>
<g fill="#34E5E0">
<circle cx="15" cy="13" r="1.4"/>
<circle cx="10" cy="17" r="1"/>
<circle cx="14" cy="20" r="0.8"/>
</g>
<g stroke="#A855F7" stroke-width="0.9" opacity="0.75">
<path d="M42 49 L50 46 M42 49 L53 51 M50 46 L53 51" fill="none"/>
</g>
<g fill="#C084FC">
<circle cx="50" cy="46" r="1.5"/>
<circle cx="53" cy="51" r="1.2"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

+7 -45
View File
@@ -3,55 +3,17 @@ interface LogoMarkProps {
className?: string className?: string
} }
/** 品牌 Logo:霓虹数据流 S(青→蓝→紫),深岩底方形 */ /** 品牌 Logo:霓虹数据流 S(用户原版位图裁切,源图在 design-assets/ */
export function LogoMark({ size = 28, className }: LogoMarkProps) { export function LogoMark({ size = 28, className }: LogoMarkProps) {
return ( return (
<svg <img
src="/brand/logo-mark.webp"
width={size} width={size}
height={size} height={size}
viewBox="0 0 64 64" alt=""
className={className}
aria-hidden="true" aria-hidden="true"
> className={className}
<defs> style={{ borderRadius: '22%' }}
<linearGradient id="logo-g" x1="0" y1="0" x2="1" y2="1"> />
<stop offset="0" stopColor="#34E5E0" />
<stop offset="0.5" stopColor="#3B82F6" />
<stop offset="1" stopColor="#A855F7" />
</linearGradient>
</defs>
<rect width="64" height="64" rx="14" fill="#0B1117" />
<g fill="none" strokeLinecap="round">
<path
d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49"
stroke="url(#logo-g)"
strokeWidth="9"
opacity="0.22"
/>
<path
d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49"
stroke="url(#logo-g)"
strokeWidth="6"
opacity="0.45"
/>
<path
d="M22 15 C41 15 41 31 32 32 C23 33 23 49 42 49"
stroke="url(#logo-g)"
strokeWidth="3.6"
/>
</g>
<g fill="#34E5E0">
<circle cx="15" cy="13" r="1.4" />
<circle cx="10" cy="17" r="1" />
<circle cx="14" cy="20" r="0.8" />
</g>
<g stroke="#A855F7" strokeWidth="0.9" opacity="0.75">
<path d="M42 49 L50 46 M42 49 L53 51 M50 46 L53 51" fill="none" />
</g>
<g fill="#C084FC">
<circle cx="50" cy="46" r="1.5" />
<circle cx="53" cy="51" r="1.2" />
</g>
</svg>
) )
} }