设计了一个图标来替换默认的软件图标
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 974 B After Width: | Height: | Size: 1.7 KiB |
BIN
src-tauri/icons/64x64.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 903 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 33 KiB |
40
src-tauri/icons/icon.svg
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||||
|
<defs>
|
||||||
|
<!-- 代码符号渐变 -->
|
||||||
|
<linearGradient id="code" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" style="stop-color:#e0e7ff"/>
|
||||||
|
<stop offset="100%" style="stop-color:#c7d2fe"/>
|
||||||
|
</linearGradient>
|
||||||
|
<!-- 色料三元色 -->
|
||||||
|
<linearGradient id="bubble1" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" style="stop-color:#ff4081"/>
|
||||||
|
<stop offset="100%" style="stop-color:#e91e63"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="bubble2" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" style="stop-color:#ffeb3b"/>
|
||||||
|
<stop offset="100%" style="stop-color:#fdd835"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="bubble3" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" style="stop-color:#29b6f6"/>
|
||||||
|
<stop offset="100%" style="stop-color:#03a9f4"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<!-- 圆角矩形背景 -->
|
||||||
|
<rect x="16" y="16" width="480" height="480" rx="96" ry="96" fill="#1a1a2e"/>
|
||||||
|
|
||||||
|
<!-- 代码尖括号 < > -->
|
||||||
|
<polyline points="190,180 120,240 190,300"
|
||||||
|
fill="none" stroke="url(#code)" stroke-width="32" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<polyline points="322,180 392,240 322,300"
|
||||||
|
fill="none" stroke="url(#code)" stroke-width="32" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
|
||||||
|
<!-- 中间斜杠 / -->
|
||||||
|
<line x1="280" y1="160" x2="232" y2="320"
|
||||||
|
stroke="url(#code)" stroke-width="28" stroke-linecap="round" opacity="0.7"/>
|
||||||
|
|
||||||
|
<!-- 底部三个圆点 -->
|
||||||
|
<circle cx="176" cy="396" r="28" fill="url(#bubble1)" opacity="0.95"/>
|
||||||
|
<circle cx="256" cy="396" r="28" fill="url(#bubble2)" opacity="0.95"/>
|
||||||
|
<circle cx="336" cy="396" r="28" fill="url(#bubble3)" opacity="0.95"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
66
src/components/app-icon.tsx
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
export function AppIcon({ className }: { className?: string }) {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
className={className}
|
||||||
|
>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="ai-code" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" stopColor="#e0e7ff" />
|
||||||
|
<stop offset="100%" stopColor="#c7d2fe" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="ai-b1" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" stopColor="#ff4081" />
|
||||||
|
<stop offset="100%" stopColor="#e91e63" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="ai-b2" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" stopColor="#ffeb3b" />
|
||||||
|
<stop offset="100%" stopColor="#fdd835" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="ai-b3" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" stopColor="#29b6f6" />
|
||||||
|
<stop offset="100%" stopColor="#03a9f4" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<rect
|
||||||
|
x="16"
|
||||||
|
y="16"
|
||||||
|
width="480"
|
||||||
|
height="480"
|
||||||
|
rx="96"
|
||||||
|
ry="96"
|
||||||
|
fill="#1a1a2e"
|
||||||
|
/>
|
||||||
|
<polyline
|
||||||
|
points="190,180 120,240 190,300"
|
||||||
|
fill="none"
|
||||||
|
stroke="url(#ai-code)"
|
||||||
|
strokeWidth="32"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<polyline
|
||||||
|
points="322,180 392,240 322,300"
|
||||||
|
fill="none"
|
||||||
|
stroke="url(#ai-code)"
|
||||||
|
strokeWidth="32"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
/>
|
||||||
|
<line
|
||||||
|
x1="280"
|
||||||
|
y1="160"
|
||||||
|
x2="232"
|
||||||
|
y2="320"
|
||||||
|
stroke="url(#ai-code)"
|
||||||
|
strokeWidth="28"
|
||||||
|
strokeLinecap="round"
|
||||||
|
opacity="0.7"
|
||||||
|
/>
|
||||||
|
<circle cx="176" cy="396" r="28" fill="url(#ai-b1)" opacity="0.95" />
|
||||||
|
<circle cx="256" cy="396" r="28" fill="url(#ai-b2)" opacity="0.95" />
|
||||||
|
<circle cx="336" cy="396" r="28" fill="url(#ai-b3)" opacity="0.95" />
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { useEffect, useState } from "react"
|
import { useEffect, useState } from "react"
|
||||||
import { MessageCircleCode } from "lucide-react"
|
import { AppIcon } from "@/components/app-icon"
|
||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { getCurrentAppVersion } from "@/lib/updater"
|
import { getCurrentAppVersion } from "@/lib/updater"
|
||||||
|
|
||||||
@@ -18,8 +18,8 @@ export function SoftwareInfo() {
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full flex gap-4 px-6 py-8">
|
<div className="w-full flex items-center gap-4 px-6 py-8">
|
||||||
<MessageCircleCode className="size-12" />
|
<AppIcon className="size-12" />
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<span className="text-base">Codeg</span>
|
<span className="text-base">Codeg</span>
|
||||||
<span className="text-sm text-muted-foreground">
|
<span className="text-sm text-muted-foreground">
|
||||||
|
|||||||