diff --git a/desktop/src/renderer/assets.d.ts b/desktop/src/renderer/assets.d.ts new file mode 100644 index 00000000..aaca79e5 --- /dev/null +++ b/desktop/src/renderer/assets.d.ts @@ -0,0 +1,21 @@ +// Type declarations for static asset imports handled by Vite. +declare module '*.png' { + const src: string + export default src +} +declare module '*.jpg' { + const src: string + export default src +} +declare module '*.jpeg' { + const src: string + export default src +} +declare module '*.svg' { + const src: string + export default src +} +declare module '*.webp' { + const src: string + export default src +} diff --git a/desktop/src/renderer/src/assets/logo.png b/desktop/src/renderer/src/assets/logo.png new file mode 100644 index 00000000..402d75d6 Binary files /dev/null and b/desktop/src/renderer/src/assets/logo.png differ diff --git a/desktop/src/renderer/src/layout/NavRail.tsx b/desktop/src/renderer/src/layout/NavRail.tsx index 60c3a1f0..925c0525 100644 --- a/desktop/src/renderer/src/layout/NavRail.tsx +++ b/desktop/src/renderer/src/layout/NavRail.tsx @@ -22,9 +22,12 @@ import { Store, } from 'lucide-react' import type { LucideIcon } from 'lucide-react' +// The desktop app's own brand icon (transparent PNG), bundled by Vite. +import brandLogo from '../assets/logo.png' import { t, getLang, setLang, Lang } from '../i18n' import { useUIStore } from '../store/uiStore' import { useTheme } from '../hooks/useTheme' +import { usePlatform } from '../hooks/usePlatform' import { useUpdateStore, hasPendingUpdate } from '../store/updateStore' import UpdateBanner from '../components/UpdateBanner' @@ -71,6 +74,10 @@ const NavRail: React.FC = ({ onLangChange }) => { const navigate = useNavigate() const { navCollapsed, toggleNav } = useUIStore() const { theme, toggleTheme } = useTheme() + // On macOS the top-left is occupied by the native traffic lights, so the + // brand mark is only shown on Windows/Linux where that corner is otherwise + // empty (mirrors the web console's sidebar logo). + const { isMac } = usePlatform() const collapsed = navCollapsed const width = collapsed ? 'w-[56px]' : 'w-[208px]' @@ -147,8 +154,23 @@ const NavRail: React.FC = ({ onLangChange }) => { return (