品牌配置

配置应用的品牌信息,包括名称、Logo 和版本

类型定义

interface BrandConfig {
  /**
   * 应用名称(可以是 i18n key 或纯文本)
   */
  name: string;

  /**
   * Logo 组件
   */
  logo?: ComponentType<{ className?: string }>;

  /**
   * 版本号
   */
  version?: string;
}

基本配置

brand: {
  name: 'My App',
  version: 'v1.0.0',
}

使用 i18n key

如果启用了国际化,可以使用 i18n key 作为应用名称:

brand: {
  name: 'app.name',  // i18n key
  version: `v${__APP_VERSION__}`,
},

i18n: {
  resources: {
    en: {
      app: { name: 'My App' },
    },
    zh: {
      app: { name: '我的应用' },
    },
  },
},

应用名称会根据当前语言自动切换。

动态版本号

使用 Vite 定义的 __APP_VERSION__ 变量自动读取 package.json 中的版本号:

brand: {
  name: 'My App',
  version: `v${__APP_VERSION__}`,
}

vite.config.ts 中的配置:

import { readFileSync } from 'fs';
import { resolve } from 'path';

const pkg = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf-8'));

export default defineConfig({
  define: {
    '__APP_VERSION__': JSON.stringify(pkg.version),
  },
  // ...
});

创建一个 Logo 组件并传入配置:

// src/components/Logo.tsx
export function MyLogo({ className }: { className?: string }) {
  return (
    <svg className={className} viewBox="0 0 24 24" fill="currentColor">
      {/* SVG 路径 */}
    </svg>
  );
}
// src/config.ts
import { MyLogo } from './components/Logo';

brand: {
  name: 'My App',
  logo: MyLogo,
  version: `v${__APP_VERSION__}`,
}

Logo 组件接收 className prop,用于控制大小和颜色。

显示位置

品牌信息在以下位置显示:

位置显示内容
标题栏Logo + 应用名称
设置页 > 关于应用名称 + 版本号

完整示例

import { MyLogo } from './components/Logo';

export const config = {
  brand: {
    name: 'app.name',
    logo: MyLogo,
    version: `v${__APP_VERSION__}`,
  },

  i18n: {
    defaultLanguage: 'zh',
    supportedLanguages: ['zh', 'en'],
    resources: {
      en: {
        app: {
          name: 'My Desktop App',
        },
      },
      zh: {
        app: {
          name: '我的桌面应用',
        },
      },
    },
  },
};