export type ThemeId = string;

export class Theme {
  id: ThemeId;
  name: string;
  cnName?: string;
  data: {
    [cssVarName: string]: string;
  };
  extends?: ThemeId;
  isDark?: boolean;
  isPreview?: boolean;
  isExtendable?: boolean;
  extra?: {
    appendClass?: Array<string>;
    cssVariables?: {
      [cssVarName: string]: string;
    };
    [prop: string]: any;
  } | any;

  constructor(theme: {
    id: ThemeId;
    name: string;
    cnName?: string;
    data: {
      [cssVarName: string]: string;
    };
    extends?: ThemeId;
    isDark?: boolean;
    isPreview?: boolean;
    isExtendable?: boolean;
  }) {
    this.id = theme.id;
    this.name = theme.name;
    this.cnName = theme.cnName || this.name;
    this.data = theme.data;
    this.extends = theme.extends || null;
    this.isDark = theme.isDark || undefined;
    this.isPreview = theme.isPreview || false;
    this.isExtendable = theme.isExtendable || true;
  }
}