Compass helpers for browser platforms
    Preparing search index...

    Class ThemeManager

    基于 CSS variables 与 DOM 的主题管理器

    // 基本用法
    const themeManager = new ThemeManager({
    baseVariables: { '--primary-color': '#007bff' },
    });

    // 注册主题
    themeManager
    .register('light', {
    '--bg-color': '#ffffff',
    '--text-color': '#333333'
    })
    .register('dark', {
    '--bg-color': '#1a1a1a',
    '--text-color': '#ffffff'
    });

    // 切换主题
    themeManager.toggle('dark');

    // 获取主题信息
    console.log(themeManager.getCurrentTheme()); // 'dark'
    console.log(themeManager.getAllThemes()); // 所有已注册的主题

    // 批量注册
    themeManager.registerBatch({
    blue: { '--primary-color': '#007bff' },
    green: { '--primary-color': '#28a745' }
    });

    // 事件监听
    themeManager.on('themeChange', (name, data) => {
    console.log('主题已切换:', name);
    });

    // 清理资源
    themeManager.destroy();
    Index

    Constructors

    Accessors

    Methods

    • Parameters

      • Optionalevent: keyof ThemeManagerEvents

        事件类型,不传则清除所有事件的监听器

      Returns this

      当前实例(支持链式调用)

      清除所有事件监听器

      themeManager.clearListeners('themeChange'); // 清除特定事件监听器
      themeManager.clearListeners(); // 清除所有监听器
    • Parameters

      • sourceName: string

        源主题名称

      • targetName: string

        目标主题名称

      • overrides: ThemeVariables = {}

        覆盖的变量

      Returns this

      当前实例(支持链式调用)

      复制主题

      // 基于 dark 主题创建 dark-blue 主题
      themeManager.cloneTheme('dark', 'dark-blue', {
      '--primary-color': '#007bff'
      });
    • Returns ThemeInfo[]

      主题信息数组

      获取所有已注册的主题信息

      const themes = themeManager.getAllThemes();
      themes.forEach(theme => {
      console.log(`${theme.name}: ${theme.isActive ? '活跃' : '非活跃'}`);
      });
    • Returns null | string

      当前主题名称,无主题时返回 null

      获取当前应用的主题名称

      const currentTheme = themeManager.getCurrentTheme(); // 'dark' | null
      
    • Returns {
          currentTheme: null | string;
          eventListeners: number;
          followSystemTheme: boolean;
          isDestroyed: boolean;
          registeredThemes: number;
          systemTheme: "light" | "dark";
      }

      状态信息对象

      获取管理器状态信息

      const status = themeManager.getStatus();
      console.log(`注册主题数: ${status.registeredThemes}`);
    • Parameters

      • OptionalthemeName: string

        主题名称,不传则返回当前主题的数据

      Returns null | ThemeVariables

      主题数据,不存在时返回 null

      获取主题数据

      const currentData = themeManager.getThemeData();        // 当前主题数据
      const darkData = themeManager.getThemeData('dark'); // 指定主题数据
    • Returns string[]

      主题名称数组

      获取已注册的主题名称列表

      const themeNames = themeManager.getThemeNames(); // ['light', 'dark', 'blue']
      
    • Parameters

      • themeName: string

        主题名称

      Returns boolean

      是否已注册

      检查主题是否已注册

      if (themeManager.hasTheme('dark')) {
      themeManager.toggle('dark');
      }
    • Type Parameters

      • T extends keyof ThemeManagerEvents

      Parameters

      • event: T

        事件类型

      • listener: ThemeManagerEvents[T]

        监听器函数

      Returns this

      当前实例(支持链式调用)

      移除事件监听器

      themeManager.off('themeChange', myListener);
      
    • Type Parameters

      • T extends keyof ThemeManagerEvents

      Parameters

      • event: T

        事件类型

      • listener: ThemeManagerEvents[T]

        监听器函数

      Returns this

      当前实例(支持链式调用)

      添加事件监听器

      themeManager.on('themeChange', (name, data) => {
      console.log('主题变更:', name);
      });
    • Parameters

      • themeName: string

        主题名称

      • themeData: ThemeVariables

        主题变量

      Returns this

      当前实例(支持链式调用)

      注册主题

      themeManager.register('dark', {
      '--bg-color': '#1a1a1a',
      '--text-color': '#ffffff'
      });
    • Parameters

      • themes: Record<string, ThemeVariables>

        主题对象

      Returns this

      当前实例(支持链式调用)

      批量注册主题

      themeManager.registerBatch({
      light: { '--bg-color': '#ffffff' },
      dark: { '--bg-color': '#1a1a1a' }
      });
    • Parameters

      • OptionalthemeName: null | string

        主题名称,不传或传 null 则清除主题

      Returns this

      当前实例(支持链式调用)

      切换主题

      themeManager.toggle('dark');  // 切换到暗色主题
      themeManager.toggle(); // 清除主题
    • Parameters

      • themeName: string

        主题名称

      Returns this

      当前实例(支持链式调用)

      卸载主题

      themeManager.unregister('old-theme');
      
    • Parameters

      • baseVariables: ThemeVariables

        新的基础变量

      Returns this

      当前实例(支持链式调用)

      更新基础变量

      themeManager.updateBaseVariables({
      '--font-family': 'Arial, sans-serif'
      });