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>
@@ -16,3 +16,6 @@ server/internal/webfs/admin_dist/*
|
|||||||
.env
|
.env
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# 品牌原始素材(大文件,不进版本库)
|
||||||
|
design-assets/
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
|
After Width: | Height: | Size: 10 KiB |
@@ -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 |
|
After Width: | Height: | Size: 96 KiB |
@@ -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>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 308 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 10 KiB |
@@ -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 |
@@ -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>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||