ipink-themejs
Version:
Theme for ui, 根据自定义的颜色值导出一套常用的Map合集, 字号、圆角、边框、字色、背景色、...
48 lines (46 loc) • 1.88 kB
TypeScript
import { SeedOption, ColorToken } from 'ipink-theme';
import { StoreDefinition } from 'pinia';
export type ThemeStoreId = "themeStore";
export type ThemeStoreState = {
/** @desc 主题ID **/
id: string;
/** @desc 模式ID light | dark **/
modeId: "light" | "dark";
/** @desc 生成后的主题列表: createThemeList({ themeList, useDark: true }) => MapToken[], useDark: boolean 默认不生成暗黑模式, 需要手动开启 **/
themeList: ColorToken[];
useDark: boolean;
};
export type ThemeStoreGetters = {
/** @desc 主题内容: MapToken **/
theme: (state: ThemeStoreState) => ColorToken | undefined;
/** @desc 主题模式: Dark | Light **/
mode: (state: ThemeStoreState) => "light" | "dark";
};
export type ThemeStoreActions = {
/** @desc 切换主题模式 **/
changeMode: () => void;
/** @desc 切换主题 **/
change: (id: string) => void;
/** @desc 根据 ID 获取指定的主题 **/
get: (id: string) => ColorToken | undefined;
/** @desc 添加一个主题 **/
add: (seed: SeedOption, dir?: "push" | "unshift" | undefined) => number;
/** @desc 添加一个主题集合 **/
addList: (seed: SeedOption[], dir?: "push" | "unshift" | undefined) => number;
/** @desc 根据 ID 删除指定主题 **/
del: (id: string) => number;
/** @desc 传入一个排序函数对主题进行排序 **/
sort: (func: Function) => ColorToken[];
/** @desc 初始化默认的主题列表, 会覆盖掉内置主题 **/
init: (tList: SeedOption[]) => number;
};
export type ThemeStoreOptions = {
state: () => ThemeStoreState;
getters: ThemeStoreGetters;
actions: ThemeStoreActions;
persist?: boolean;
};
/**
* Pinia ^2.1.7
*/
export declare const useThemeStore: StoreDefinition<ThemeStoreId, ThemeStoreState, ThemeStoreGetters, ThemeStoreActions>;