import * as React from 'react'; export const PresetColors = [ 'blue', 'purple', 'cyan', 'green', 'magenta', 'pink', 'red', 'orange', 'yellow', 'volcano', 'geekblue', 'lime', 'gold', ] as const; type PresetColorKey = typeof PresetColors[number]; export type PresetColorType = Record; type ColorPaletteKeyIndex = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10; export type ColorPalettes = { [key in `${keyof PresetColorType}-${ColorPaletteKeyIndex}`]: string; }; export interface OverrideToken { derivative: Partial; [componentName: string]: object; // FIXME: tmp of component token } // ====================================================================== // == Seed Token == // ====================================================================== export interface SeedToken extends PresetColorType { // Color colorPrimary: string; colorSuccess: string; colorWarning: string; colorError: string; colorInfo: string; colorText: string; colorTextLightSolid: string; colorBg: string; // Font fontFamily: string; fontSizeBase: number; // Grid gridUnit: number; gridBaseStep: number; // Line lineWidth: number; // Motion motionUnit: number; motionBaseStep: number; motionEaseInOutCirc: string; motionEaseInOut: string; motionEaseOutBack: string; motionEaseInQuint: string; motionEaseOutQuint: string; // Radius radiusBase: number; // Size sizeUnit: number; sizeBaseStep: number; // Control Base controlHeight: number; } // ====================================================================== // == Derivative Token == // ====================================================================== export interface DerivativeToken extends SeedToken, ColorPalettes { // Color colorPrimaryHover: string; colorPrimaryActive: string; colorWarningHover: string; colorWarningActive: string; colorErrorHover: string; colorErrorActive: string; colorText2: string; colorTextBelow: string; colorTextBelow2: string; colorTextBelow3: string; colorBgBelow: string; colorBgBelow2: string; // Font fontSizes: number[]; lineHeights: number[]; // Size sizeSpace: number; sizeSpaceXS: number; sizeSpaceXXS: number; sizeSpaceSM: number; // Grid gridSpaceSM: number; gridSpaceBase: number; gridSpaceLG: number; gridSpaceXL: number; gridSpaceXXL: number; // Motion motionDurationBase: string; motionDurationMd: string; motionDurationFast: string; motionDurationSlow: string; // Radius radiusSM: number; radiusLG: number; radiusXL: number; /** @private Only Used for control inside component like Multiple Select inner selection item */ controlHeightXS: number; controlHeightSM: number; controlHeightLG: number; } // ====================================================================== // == Alias Token == // ====================================================================== // FIXME: DerivativeToken should part pick export interface AliasToken extends DerivativeToken { // Font fontSizeSM: number; fontSize: number; fontSizeLG: number; fontSizeXL: number; fontSizeHeading1: number; fontSizeHeading2: number; fontSizeHeading3: number; fontSizeHeading4: number; fontSizeHeading5: number; // LineHeight lineHeight: number; lineHeightLG: number; lineHeightHeading1: number; lineHeightHeading2: number; lineHeightHeading3: number; lineHeightHeading4: number; lineHeightHeading5: number; // Control controlLineWidth: number; controlLineType: string; controlRadius: number; controlOutlineWidth: number; // Color colorBorder: string; colorSplit: string; colorTextSecondary: string; colorTextDisabled: string; // =============== Legacy: should be remove =============== placeholderColor: string; disabledColor: string; iconColorHover: string; headingColor: string; itemHoverBackground: string; padding: number; margin: number; background: string; backgroundLight: string; componentBackground: string; componentBackgroundDisabled: string; zIndexDropdown: number; zIndexAffix: number; boxShadow?: string; // =============== Legacy: should be remove =============== primaryHoverColor: string; primaryActiveColor: string; primaryOutlineColor: string; errorHoverColor: string; errorActiveColor: string; errorOutlineColor: string; warningHoverColor: string; warningOutlineColor: string; itemActiveBackground: string; highlightColor: string; linkColor: string; linkHoverColor: string; linkActiveColor: string; linkDecoration: React.CSSProperties['textDecoration']; linkHoverDecoration: React.CSSProperties['textDecoration']; linkFocusDecoration: React.CSSProperties['textDecoration']; controlPaddingHorizontal: number; controlPaddingHorizontalSM: number; paddingSM: number; paddingXS: number; paddingXXS: number; paddingLG: number; marginXS: number; marginLG: number; marginXXS: number; duration: string; durationMid: string; durationFast: string; primaryColors: string[]; errorColors: string[]; warningColors: string[]; // TMP tmpPrimaryColorWeak: string; tmpPrimaryHoverColorWeak: string; // Checked background for Checkable Tag tmpPrimaryColor6: string; // Active background for Checkable Tag tmpPrimaryColor7: string; tmpSuccessColorDeprecatedBg: string; tmpWarningColorDeprecatedBg: string; tmpErrorColorDeprecatedBg: string; tmpInfoColorDeprecatedBg: string; tmpSuccessColorDeprecatedBorder: string; tmpWarningColorDeprecatedBorder: string; tmpErrorColorDeprecatedBorder: string; tmpInfoColorDeprecatedBorder: string; }