export type PaletteColors = Record<ColorDesignToken, string>;

/**
 * Color Variations
 */
export type ColorVariationTokens =
	| 'brand'
	| 'onBrand'
	| 'completed'
	| 'done'
	| 'error'
	| 'overdue'
	| 'pending'
	| 'rejection'
	| 'shadow'
	| 'success'
	| 'warning'
	| 'textError'
	| 'textStandard'
	| 'textLight'
	| 'borderFocus'
	| 'borderError'
	| 'onDone'
	| 'onError'
	| 'onOverdue'
	| 'onPending'
	| 'onRejection'
	| 'onShadow'
	| 'onSuccess'
	| 'onWarning';
/**
 * Default Generic Color Type Options
 */
export type ColorDesignToken =
	| 'brand'
	| 'brandHover'
	| 'brandPressed'
	| 'brandFocused'
	| 'brandLoading'
	| 'onBrand'
	| 'onBrandHover'
	| 'onBrandPressed'
	| 'onBrandFocused'
	| 'onBrandLoading'
	| 'primaryBackground'
	| 'primaryBackgroundHover'
	| 'primaryBackgroundPressed'
	| 'primaryBackgroundFocused'
	| 'primaryBackgroundLoading'
	| 'onPrimaryBackground'
	| 'onPrimaryBackground'
	| 'onPrimaryBackgroundHover'
	| 'onPrimaryBackgroundPressed'
	| 'onPrimaryBackgroundFocused'
	| 'onPrimaryBackgroundLoading'
	| 'tertiaryBackground'
	| 'tertiaryBackgroundHover'
	| 'tertiaryBackgroundPressed'
	| 'tertiaryBackgroundFocused'
	| 'tertiaryBackgroundLoading'
	| 'onTertiaryBackground'
	| 'onTertiaryBackgroundHover'
	| 'onTertiaryBackgroundPressed'
	| 'onTertiaryBackgroundFocused'
	| 'onTertiaryBackgroundLoading'
	| 'secondaryBackground'
	| 'secondaryBackgroundHover'
	| 'secondaryBackgroundPressed'
	| 'secondaryBackgroundFocused'
	| 'secondaryBackgroundLoading'
	| 'onSecondaryBackground'
	| 'onSecondaryBackgroundHover'
	| 'onSecondaryBackgroundPressed'
	| 'onSecondaryBackgroundFocused'
	| 'onSecondaryBackgroundLoading'
	| 'onSecondaryBackground'
	| 'onTertiaryBackground'
	| 'primaryBackground'
	| 'secondaryBackground'
	| 'tertiaryBackground'
	| 'surface'
	| 'surfaceHover'
	| 'surfacePressed'
	| 'surfaceFocused'
	| 'surfaceLoading'
	| 'onSurface'
	| 'onSurface'
	| 'onSurfaceHover'
	| 'onSurfacePressed'
	| 'onSurfaceFocused'
	| 'onSurfaceLoading'
	| ColorVariationTokens;

/**
 * Interface for the Palette
 */
export interface Palette {
	/**
	 * list of colors for the Palette
	 */
	colors: PaletteColors;
	/**
	 * title for the Palette color
	 */
	title: string;
}
