export interface ThemeTypographyVariant {
  readonly size: number;
  readonly line_height: string;
  readonly letter_spacing: number;
  readonly font_weight: number;
}

export type ThemeColorPrimitive = Record<string, string>;
export interface ThemeColorSemanticSection {
  readonly [token: string]: string | ThemeColorSemanticSection;
}
export type ThemeSpacingScale = Record<string, number>;
export type ThemeLayoutSizes = Record<string, number>;
export type ThemeTypographyCategory = Record<string, ThemeTypographyVariant>;

export interface ThemeTokens {
  readonly color: {
    readonly primitive: ThemeColorPrimitive;
    readonly semantic: ThemeColorSemanticSection;
  };
  readonly spacing: {
    readonly padding: ThemeSpacingScale;
    readonly gap: ThemeSpacingScale;
  };
  readonly layout: {
    readonly breakpoint: Record<
      "xsmall" | "small" | "medium" | "large",
      number
    >;
    readonly size: ThemeLayoutSizes;
    readonly radius: {
      readonly size: ThemeLayoutSizes;
      readonly level: ThemeLayoutSizes;
    };
  };
  readonly typography: {
    readonly [category: string]: ThemeTypographyCategory;
  };
}
