Browse Source

docs: component token meta (#43337)

* docs: component token meta

* docs: more

* docs: complete
pull/43378/head
MadCcc 1 year ago
committed by GitHub
parent
commit
b64a57d5d0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      .dumi/theme/builtins/ColorChunk/index.tsx
  2. 68
      .dumi/theme/builtins/ComponentTokenTable/index.tsx
  3. 2
      .dumi/theme/builtins/TokenTable/index.tsx
  4. 8
      components/anchor/style/index.ts
  5. 36
      components/avatar/style/index.ts
  6. 28
      components/breadcrumb/style/index.ts
  7. 24
      components/calendar/style/index.ts
  8. 36
      components/card/style/index.ts
  9. 12
      components/carousel/style/index.ts
  10. 16
      components/cascader/style/index.ts
  11. 12
      components/date-picker/style/index.ts
  12. 24
      components/descriptions/style/index.ts
  13. 12
      components/drawer/style/index.ts
  14. 4
      components/dropdown/style/index.ts
  15. 16
      components/image/style/index.ts
  16. 18
      components/input-number/style/index.ts
  17. 44
      components/list/style/index.ts
  18. 14
      components/mentions/style/index.ts
  19. 111
      components/menu/style/index.tsx
  20. 12
      components/message/style/index.tsx
  21. 24
      components/modal/style/index.tsx
  22. 8
      components/notification/style/index.tsx
  23. 36
      components/pagination/style/index.ts
  24. 4
      components/popconfirm/style/index.tsx
  25. 12
      components/popover/style/index.tsx
  26. 44
      components/radio/style/index.tsx
  27. 16
      components/rate/style/index.tsx
  28. 16
      components/result/style/index.tsx
  29. 20
      components/segmented/style/index.tsx
  30. 4
      components/select/style/index.tsx
  31. 24
      components/skeleton/style/index.tsx
  32. 28
      components/slider/style/index.tsx
  33. 6
      components/spin/style/index.tsx
  34. 8
      components/statistic/style/index.tsx
  35. 52
      components/steps/style/index.tsx
  36. 92
      components/tabs/style/index.ts
  37. 8
      components/tag/style/index.ts
  38. 20
      components/timeline/style/index.ts
  39. 5
      components/tooltip/style/index.ts
  40. 24
      components/transfer/style/index.ts
  41. 12
      components/typography/style/index.ts
  42. 4
      components/upload/style/index.ts
  43. 117
      scripts/generate-token-meta.ts

4
.dumi/theme/builtins/ColorChunk/index.tsx

@ -1,6 +1,6 @@
import * as React from 'react';
import { TinyColor, type ColorInput } from '@ctrl/tinycolor'; import { TinyColor, type ColorInput } from '@ctrl/tinycolor';
import { css } from '@emotion/react'; import { css } from '@emotion/react';
import * as React from 'react';
import useSiteToken from '../../../hooks/useSiteToken'; import useSiteToken from '../../../hooks/useSiteToken';
interface ColorChunkProps { interface ColorChunkProps {
@ -23,7 +23,7 @@ const useStyle = () => {
display: inline-block; display: inline-block;
width: 6px; width: 6px;
height: 6px; height: 6px;
border-radius: ${token.borderRadiusSM}px; border-radius: 50%;
margin-inline-end: 4px; margin-inline-end: 4px;
border: 1px solid ${token.colorSplit}; border: 1px solid ${token.colorSplit};
`, `,

68
.dumi/theme/builtins/ComponentTokenTable/index.tsx

@ -17,12 +17,16 @@ const locales = {
description: '描述', description: '描述',
type: '类型', type: '类型',
value: '默认值', value: '默认值',
componentToken: '组件 Token',
globalToken: '全局 Token',
}, },
en: { en: {
token: 'Token Name', token: 'Token Name',
description: 'Description', description: 'Description',
type: 'Type', type: 'Type',
value: 'Default Value', value: 'Default Value',
componentToken: 'Component Token',
globalToken: 'Global Token',
}, },
}; };
@ -48,9 +52,10 @@ interface SubTokenTableProps {
defaultOpen?: boolean; defaultOpen?: boolean;
title: string; title: string;
tokens: string[]; tokens: string[];
component?: string;
} }
const SubTokenTable: React.FC<SubTokenTableProps> = ({ defaultOpen, tokens, title }) => { const SubTokenTable: React.FC<SubTokenTableProps> = ({ defaultOpen, tokens, title, component }) => {
const [, lang] = useLocale(locales); const [, lang] = useLocale(locales);
const { token } = useSiteToken(); const { token } = useSiteToken();
const columns = useColumns(); const columns = useColumns();
@ -64,22 +69,28 @@ const SubTokenTable: React.FC<SubTokenTableProps> = ({ defaultOpen, tokens, titl
} }
const data = tokens const data = tokens
.sort((token1, token2) => { .sort(
const hasColor1 = token1.toLowerCase().includes('color'); component
const hasColor2 = token2.toLowerCase().includes('color'); ? undefined
: (token1, token2) => {
if (hasColor1 && !hasColor2) { const hasColor1 = token1.toLowerCase().includes('color');
return -1; const hasColor2 = token2.toLowerCase().includes('color');
}
if (hasColor1 && !hasColor2) {
if (!hasColor1 && hasColor2) { return -1;
return 1; }
}
if (!hasColor1 && hasColor2) {
return token1 < token2 ? -1 : 1; return 1;
}) }
return token1 < token2 ? -1 : 1;
},
)
.map((name) => { .map((name) => {
const meta = tokenMeta[name]; const meta = component
? tokenMeta.components[component].find((item) => item.token === name)
: tokenMeta.global[name];
if (!meta) { if (!meta) {
return null; return null;
@ -89,7 +100,7 @@ const SubTokenTable: React.FC<SubTokenTableProps> = ({ defaultOpen, tokens, titl
name, name,
desc: lang === 'cn' ? meta.desc : meta.descEn, desc: lang === 'cn' ? meta.desc : meta.descEn,
type: meta.type, type: meta.type,
value: defaultToken[name], value: component ? tokenData[component].component[name] : defaultToken[name],
}; };
}) })
.filter(Boolean); .filter(Boolean);
@ -122,28 +133,31 @@ export interface ComponentTokenTableProps {
} }
const ComponentTokenTable: React.FC<ComponentTokenTableProps> = ({ component }) => { const ComponentTokenTable: React.FC<ComponentTokenTableProps> = ({ component }) => {
const [locale] = useLocale(locales);
const [mergedGlobalTokens] = useMemo(() => { const [mergedGlobalTokens] = useMemo(() => {
const globalTokenSet = new Set<string>(); const globalTokenSet = new Set<string>();
let componentTokens: Record<string, string> = {};
component.split(',').forEach((comp) => { component.split(',').forEach((comp) => {
const { global: globalTokens = [], component: singleComponentTokens = [] } = const { global: globalTokens = [] } = tokenData[comp] || {};
tokenData[comp] || {};
globalTokens.forEach((token: string) => { globalTokens.forEach((token: string) => {
globalTokenSet.add(token); globalTokenSet.add(token);
}); });
componentTokens = {
...componentTokens,
...singleComponentTokens,
};
}); });
return [Array.from(globalTokenSet), componentTokens] as const; return [Array.from(globalTokenSet)] as const;
}, [component]); }, [component]);
return <SubTokenTable title="Global Token" tokens={mergedGlobalTokens} />; return (
<>
<SubTokenTable
title={locale.componentToken}
tokens={tokenMeta.components[component].map((item) => item.token)}
component={component}
/>
<SubTokenTable title={locale.globalToken} tokens={mergedGlobalTokens} />
</>
);
}; };
export default React.memo(ComponentTokenTable); export default React.memo(ComponentTokenTable);

2
.dumi/theme/builtins/TokenTable/index.tsx

@ -98,7 +98,7 @@ const TokenTable: FC<TokenTableProps> = ({ type }) => {
const data = React.useMemo<TokenData[]>( const data = React.useMemo<TokenData[]>(
() => () =>
Object.entries(tokenMeta) Object.entries(tokenMeta.global)
.filter(([, meta]) => meta.source === type) .filter(([, meta]) => meta.source === type)
.map(([token, meta]) => ({ .map(([token, meta]) => ({
name: token, name: token,

8
components/anchor/style/index.ts

@ -4,7 +4,15 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Link horizontal padding
*/
linkPaddingBlock: number; linkPaddingBlock: number;
/**
* @desc
* @descEN Link vertical padding
*/
linkPaddingInlineStart: number; linkPaddingInlineStart: number;
} }

36
components/avatar/style/index.ts

@ -4,14 +4,50 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Background color of Avatar
*/
containerSize: number; containerSize: number;
/**
* @desc
* @descEN Size of large Avatar
*/
containerSizeLG: number; containerSizeLG: number;
/**
* @desc
* @descEN Size of small Avatar
*/
containerSizeSM: number; containerSizeSM: number;
/**
* @desc
* @descEN Font size of Avatar
*/
textFontSize: number; textFontSize: number;
/**
* @desc
* @descEN Font size of large Avatar
*/
textFontSizeLG: number; textFontSizeLG: number;
/**
* @desc
* @descEN Font size of small Avatar
*/
textFontSizeSM: number; textFontSizeSM: number;
/**
* @desc
* @descEN Spacing between avatars in a group
*/
groupSpace: number; groupSpace: number;
/**
* @desc
* @descEN Overlapping of avatars in a group
*/
groupOverlapping: number; groupOverlapping: number;
/**
* @desc
* @descEN Border color of avatars in a group
*/
groupBorderColor: string; groupBorderColor: string;
} }

28
components/breadcrumb/style/index.ts

@ -4,12 +4,40 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Text color of Breadcrumb item
*/
itemColor: string; itemColor: string;
/**
* @desc
* @descEN Icon size
*/
iconFontSize: number; iconFontSize: number;
/**
* @desc
* @descEN Text color of link
*/
linkColor: string; linkColor: string;
/**
* @desc
* @descEN Color of hovered link
*/
linkHoverColor: string; linkHoverColor: string;
/**
* @desc
* @descEN Text color of the last item
*/
lastItemColor: string; lastItemColor: string;
/**
* @desc
* @descEN Margin of separator
*/
separatorMargin: number; separatorMargin: number;
/**
* @desc
* @descEN Color of separator
*/
separatorColor: string; separatorColor: string;
} }

24
components/calendar/style/index.ts

@ -8,11 +8,35 @@ import type { FullToken } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of year select
*/
yearControlWidth: number; yearControlWidth: number;
/**
* @desc
* @descEN Width of month select
*/
monthControlWidth: number; monthControlWidth: number;
/**
* @desc
* @descEN Height of mini calendar content
*/
miniContentHeight: number; miniContentHeight: number;
/**
* @desc
* @descEN Background color of full calendar
*/
fullBg: string; fullBg: string;
/**
* @desc
* @descEN Background color of full calendar panel
*/
fullPanelBg: string; fullPanelBg: string;
/**
* @desc
* @descEN Background color of selected date item
*/
itemActiveBg: string; itemActiveBg: string;
} }

36
components/card/style/index.ts

@ -5,14 +5,50 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Background color of card header
*/
headerBg: string; headerBg: string;
/**
* @desc
* @descEN Font size of card header
*/
headerFontSize: number; headerFontSize: number;
/**
* @desc
* @descEN Font size of small card header
*/
headerFontSizeSM: number; headerFontSizeSM: number;
/**
* @desc
* @descEN Height of card header
*/
headerHeight: number; headerHeight: number;
/**
* @desc
* @descEN Height of small card header
*/
headerHeightSM: number; headerHeightSM: number;
/**
* @desc
* @descEN Background color of card actions
*/
actionsBg: string; actionsBg: string;
/**
* @desc
* @descEN Margin of each item in card actions
*/
actionsLiMargin: string; actionsLiMargin: string;
/**
* @desc
* @descEN Margin bottom of tabs component
*/
tabsMarginBottom: number; tabsMarginBottom: number;
/**
* @desc
* @descEN Text color of extra area
*/
extraColor: string; extraColor: string;
} }

12
components/carousel/style/index.ts

@ -3,10 +3,22 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of indicator
*/
dotWidth: number; dotWidth: number;
/**
* @desc
* @descEN Height of indicator
*/
dotHeight: number; dotHeight: number;
/** @deprecated Use `dotActiveWidth` instead. */ /** @deprecated Use `dotActiveWidth` instead. */
dotWidthActive: number; dotWidthActive: number;
/**
* @desc
* @descEN Width of active indicator
*/
dotActiveWidth: number; dotActiveWidth: number;
} }

16
components/cascader/style/index.ts

@ -1,12 +1,24 @@
import { getStyle as getCheckboxStyle } from '../../checkbox/style'; import { getStyle as getCheckboxStyle } from '../../checkbox/style';
import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook } from '../../theme/internal';
import { textEllipsis } from '../../style'; import { textEllipsis } from '../../style';
import { genCompactItemStyle } from '../../style/compact-item'; import { genCompactItemStyle } from '../../style/compact-item';
import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of Cascader
*/
controlWidth: number; controlWidth: number;
/**
* @desc
* @descEN Width of item
*/
controlItemWidth: number; controlItemWidth: number;
/**
* @desc
* @descEN Height of dropdown
*/
dropdownHeight: number; dropdownHeight: number;
} }

12
components/date-picker/style/index.ts

@ -23,8 +23,20 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
import type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook'; import type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of preset area
*/
presetsWidth: number; presetsWidth: number;
/**
* @desc
* @descEN Max width of preset area
*/
presetsMaxWidth: number; presetsMaxWidth: number;
/**
* @desc z-index
* @descEN z-index of popup
*/
zIndexPopup: number; zIndexPopup: number;
} }

24
components/descriptions/style/index.ts

@ -6,11 +6,35 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
/** Component only token. Which will handle additional calculation of alias token */ /** Component only token. Which will handle additional calculation of alias token */
export interface ComponentToken { export interface ComponentToken {
// Component token here // Component token here
/**
* @desc
* @descEN Background color of label
*/
labelBg: string; labelBg: string;
/**
* @desc
* @descEN Bottom margin of title
*/
titleMarginBottom: number; titleMarginBottom: number;
/**
* @desc
* @descEN Bottom padding of item
*/
itemPaddingBottom: number; itemPaddingBottom: number;
/**
* @desc
* @descEN Right margin of colon
*/
colonMarginRight: number; colonMarginRight: number;
/**
* @desc
* @descEN Left margin of colon
*/
colonMarginLeft: number; colonMarginLeft: number;
/**
* @desc
* @descEN Text color of extra area
*/
extraColor: string; extraColor: string;
} }

12
components/drawer/style/index.ts

@ -3,8 +3,20 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
import genMotionStyle from './motion'; import genMotionStyle from './motion';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of drawer
*/
zIndexPopup: number; zIndexPopup: number;
/**
* @desc
* @descEN Horizontal padding of footer
*/
footerPaddingBlock: number; footerPaddingBlock: number;
/**
* @desc
* @descEN Vertical padding of footer
*/
footerPaddingInline: number; footerPaddingInline: number;
} }

4
components/dropdown/style/index.ts

@ -14,6 +14,10 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
import genStatusStyle from './status'; import genStatusStyle from './status';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of dropdown
*/
zIndexPopup: number; zIndexPopup: number;
} }

16
components/image/style/index.ts

@ -7,9 +7,25 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of preview popup
*/
zIndexPopup: number; zIndexPopup: number;
/**
* @desc
* @descEN Size of preview operation icon
*/
previewOperationSize: number; previewOperationSize: number;
/**
* @desc
* @descEN Color of preview operation icon
*/
previewOperationColor: string; previewOperationColor: string;
/**
* @desc
* @descEN Disabled color of preview operation icon
*/
previewOperationColorDisabled: string; previewOperationColorDisabled: string;
} }

18
components/input-number/style/index.ts

@ -15,10 +15,26 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook } from '../../theme/internal'; import { genComponentStyleHook } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of input
*/
controlWidth: number; controlWidth: number;
/**
* @desc
* @descEN Width of control button
*/
handleWidth: number; handleWidth: number;
/**
* @desc
* @descEN Icon size of control button
*/
handleFontSize: number; handleFontSize: number;
/** Default `auto`. Set `true` will always show the handle */ /**
* Default `auto`. Set `true` will always show the handle
* @desc
* @descEN Handle visible
*/
handleVisible: 'auto' | true; handleVisible: 'auto' | true;
} }

44
components/list/style/index.ts

@ -5,16 +5,60 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of content
*/
contentWidth: number; contentWidth: number;
/**
* @desc
* @descEN Padding of large item
*/
itemPaddingLG: string; itemPaddingLG: string;
/**
* @desc
* @descEN Padding of small item
*/
itemPaddingSM: string; itemPaddingSM: string;
/**
* @desc
* @descEN Padding of item
*/
itemPadding: string; itemPadding: string;
/**
* @desc
* @descEN Background color of header
*/
headerBg: string; headerBg: string;
/**
* @desc
* @descEN Background color of footer
*/
footerBg: string; footerBg: string;
/**
* @desc
* @descEN Padding of empty text
*/
emptyTextPadding: CSSProperties['padding']; emptyTextPadding: CSSProperties['padding'];
/**
* @desc Meta
* @descEN Margin bottom of meta
*/
metaMarginBottom: CSSProperties['marginBottom']; metaMarginBottom: CSSProperties['marginBottom'];
/**
* @desc
* @descEN Right margin of avatar
*/
avatarMarginRight: CSSProperties['marginRight']; avatarMarginRight: CSSProperties['marginRight'];
/**
* @desc
* @descEN Margin bottom of title
*/
titleMarginBottom: CSSProperties['marginBottom']; titleMarginBottom: CSSProperties['marginBottom'];
/**
* @desc
* @descEN Font size of description
*/
descriptionFontSize: number; descriptionFontSize: number;
} }

14
components/mentions/style/index.ts

@ -7,13 +7,25 @@ import {
genStatusStyle, genStatusStyle,
initInputToken, initInputToken,
} from '../../input/style'; } from '../../input/style';
import { resetComponent, textEllipsis } from '../../style';
import type { FullToken, GenerateStyle } from '../../theme/internal'; import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook } from '../../theme/internal'; import { genComponentStyleHook } from '../../theme/internal';
import { resetComponent, textEllipsis } from '../../style';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of popup
*/
zIndexPopup: number; zIndexPopup: number;
/**
* @desc
* @descEN Height of popup
*/
dropdownHeight: number; dropdownHeight: number;
/**
* @desc
* @descEN Height of menu item
*/
controlItemWidth: number; controlItemWidth: number;
} }

111
components/menu/style/index.tsx

@ -11,112 +11,223 @@ import getVerticalStyle from './vertical';
/** Component only token. Which will handle additional calculation of alias token */ /** Component only token. Which will handle additional calculation of alias token */
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of popup menu
*/
dropdownWidth: number; dropdownWidth: number;
/**
* @desc z-index
* @descEN z-index of popup menu
*/
zIndexPopup: number; zIndexPopup: number;
// Group // Group
/** @deprecated Use `groupTitleColor` instead */ /** @deprecated Use `groupTitleColor` instead */
colorGroupTitle: string; colorGroupTitle: string;
/**
* @desc
* @descEN Color of group title text
*/
groupTitleColor: string; groupTitleColor: string;
// radius // radius
/** @deprecated Use `itemBorderRadius` instead */ /** @deprecated Use `itemBorderRadius` instead */
radiusItem: number; radiusItem: number;
/**
* @desc
* @descEN Radius of menu item
*/
itemBorderRadius: number; itemBorderRadius: number;
/** @deprecated Use `subMenuItemBorderRadius` instead */ /** @deprecated Use `subMenuItemBorderRadius` instead */
radiusSubMenuItem: number; radiusSubMenuItem: number;
/**
* @desc
* @descEN Radius of sub-menu item
*/
subMenuItemBorderRadius: number; subMenuItemBorderRadius: number;
// Item Text // Item Text
// > Default // > Default
/** @deprecated Use `itemColor` instead */ /** @deprecated Use `itemColor` instead */
colorItemText: string; colorItemText: string;
/**
* @desc
* @descEN Color of menu item text
*/
itemColor: string; itemColor: string;
/** @deprecated Use `itemHoverColor` instead */ /** @deprecated Use `itemHoverColor` instead */
colorItemTextHover: string; colorItemTextHover: string;
/**
* @desc
* @descEN Hover color of menu item text
*/
itemHoverColor: string; itemHoverColor: string;
/** @deprecated Use `horizontalItemHoverColor` instead */ /** @deprecated Use `horizontalItemHoverColor` instead */
colorItemTextHoverHorizontal: string; colorItemTextHoverHorizontal: string;
/**
* @desc
* @descEN Hover color of horizontal menu item text
*/
horizontalItemHoverColor: string; horizontalItemHoverColor: string;
/** @deprecated Use `itemSelectedColor` instead */ /** @deprecated Use `itemSelectedColor` instead */
colorItemTextSelected: string; colorItemTextSelected: string;
/**
* @desc
* @descEN Color of selected menu item text
*/
itemSelectedColor: string; itemSelectedColor: string;
/** @deprecated Use `horizontalItemSelectedColor` instead */ /** @deprecated Use `horizontalItemSelectedColor` instead */
colorItemTextSelectedHorizontal: string; colorItemTextSelectedHorizontal: string;
/**
* @desc
* @descEN Color of selected horizontal menu item text
*/
horizontalItemSelectedColor: string; horizontalItemSelectedColor: string;
// > Disabled // > Disabled
/** @deprecated Use `itemDisabledColor` instead */ /** @deprecated Use `itemDisabledColor` instead */
colorItemTextDisabled: string; colorItemTextDisabled: string;
/**
* @desc
* @descEN Color of disabled menu item text
*/
itemDisabledColor: string; itemDisabledColor: string;
// > Danger // > Danger
/** @deprecated Use `dangerItemColor` instead */ /** @deprecated Use `dangerItemColor` instead */
colorDangerItemText: string; colorDangerItemText: string;
/**
* @desc
* @descEN Color of danger menu item text
*/
dangerItemColor: string; dangerItemColor: string;
/** @deprecated Use `dangerItemHoverColor` instead */ /** @deprecated Use `dangerItemHoverColor` instead */
colorDangerItemTextHover: string; colorDangerItemTextHover: string;
/**
* @desc
* @descEN Hover color of danger menu item text
*/
dangerItemHoverColor: string; dangerItemHoverColor: string;
/** @deprecated Use `dangerItemSelectedColor` instead */ /** @deprecated Use `dangerItemSelectedColor` instead */
colorDangerItemTextSelected: string; colorDangerItemTextSelected: string;
/**
* @desc
* @descEN Color of selected danger menu item text
*/
dangerItemSelectedColor: string; dangerItemSelectedColor: string;
/** @deprecated Use `dangerItemActiveBg` instead */ /** @deprecated Use `dangerItemActiveBg` instead */
colorDangerItemBgActive: string; colorDangerItemBgActive: string;
/**
* @desc
* @descEN Color of active danger menu item text
*/
dangerItemActiveBg: string; dangerItemActiveBg: string;
/** @deprecated Use `dangerItemSelectedBg` instead */ /** @deprecated Use `dangerItemSelectedBg` instead */
colorDangerItemBgSelected: string; colorDangerItemBgSelected: string;
/**
* @desc
* @descEN Color of selected danger menu item text
*/
dangerItemSelectedBg: string; dangerItemSelectedBg: string;
// Item Bg // Item Bg
/** @deprecated Use `itemBg` instead */ /** @deprecated Use `itemBg` instead */
colorItemBg: string; colorItemBg: string;
/**
* @desc
*/
itemBg: string; itemBg: string;
/** @deprecated Use `itemHoverBg` instead */ /** @deprecated Use `itemHoverBg` instead */
colorItemBgHover: string; colorItemBgHover: string;
/**
* @desc
* @descEN Background color of menu item when hover
*/
itemHoverBg: string; itemHoverBg: string;
/** @deprecated Use `subMenuItemBg` instead */ /** @deprecated Use `subMenuItemBg` instead */
colorSubItemBg: string; colorSubItemBg: string;
/**
* @desc
* @descEN Background color of sub-menu item
*/
subMenuItemBg: string; subMenuItemBg: string;
// > Default // > Default
/** @deprecated Use `itemActiveBg` instead */ /** @deprecated Use `itemActiveBg` instead */
colorItemBgActive: string; colorItemBgActive: string;
/**
* @desc
* @descEN Background color of menu item when active
*/
itemActiveBg: string; itemActiveBg: string;
/** @deprecated Use `itemSelectedBg` instead */ /** @deprecated Use `itemSelectedBg` instead */
colorItemBgSelected: string; colorItemBgSelected: string;
/**
* @desc
* @descEN Background color of menu item when selected
*/
itemSelectedBg: string; itemSelectedBg: string;
/** @deprecated Use `horizontalItemSelectedBg` instead */ /** @deprecated Use `horizontalItemSelectedBg` instead */
colorItemBgSelectedHorizontal: string; colorItemBgSelectedHorizontal: string;
/**
* @desc
* @descEN Background color of horizontal menu item when selected
*/
horizontalItemSelectedBg: string; horizontalItemSelectedBg: string;
// Ink Bar // Ink Bar
/** @deprecated Use `activeBarWidth` instead */ /** @deprecated Use `activeBarWidth` instead */
colorActiveBarWidth: number; colorActiveBarWidth: number;
/**
* @desc
* @descEN Width of menu item active bar
*/
activeBarWidth: number; activeBarWidth: number;
/** @deprecated Use `activeBarHeight` instead */ /** @deprecated Use `activeBarHeight` instead */
colorActiveBarHeight: number; colorActiveBarHeight: number;
/**
* @desc
* @descEN Height of menu item active bar
*/
activeBarHeight: number; activeBarHeight: number;
/** @deprecated Use `activeBarBorderWidth` instead */ /** @deprecated Use `activeBarBorderWidth` instead */
colorActiveBarBorderSize: number; colorActiveBarBorderSize: number;
/**
* @desc
* @descEN Border width of menu item active bar
*/
activeBarBorderWidth: number; activeBarBorderWidth: number;
/**
* @desc
* @descEN Horizontal margin of menu item
*/
itemMarginInline: number; itemMarginInline: number;
/**
* @desc
* @descEN Background color of horizontal menu item when hover
*/
horizontalItemHoverBg: string; horizontalItemHoverBg: string;
/**
* @desc
* @descEN Border radius of horizontal menu item
*/
horizontalItemBorderRadius: number; horizontalItemBorderRadius: number;
} }

12
components/message/style/index.tsx

@ -9,8 +9,20 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
/** Component only token. Which will handle additional calculation of alias token */ /** Component only token. Which will handle additional calculation of alias token */
export interface ComponentToken { export interface ComponentToken {
// Component token here // Component token here
/**
* @desc z-index
* @descEN z-index of Message
*/
zIndexPopup: number; zIndexPopup: number;
/**
* @desc
* @descEN Background color of Message
*/
contentBg: string; contentBg: string;
/**
* @desc
* @descEN Padding of Message
*/
contentPadding: CSSProperties['padding']; contentPadding: CSSProperties['padding'];
} }

24
components/modal/style/index.tsx

@ -8,11 +8,35 @@ import type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook'
/** Component only token. Which will handle additional calculation of alias token */ /** Component only token. Which will handle additional calculation of alias token */
export interface ComponentToken { export interface ComponentToken {
// Component token here // Component token here
/**
* @desc
* @descEN Background color of header
*/
headerBg: string; headerBg: string;
/**
* @desc
* @descEN Line height of title
*/
titleLineHeight: number; titleLineHeight: number;
/**
* @desc
* @descEN Font size of title
*/
titleFontSize: number; titleFontSize: number;
/**
* @desc
* @descEN Font color of title
*/
titleColor: string; titleColor: string;
/**
* @desc
* @descEN Background color of content
*/
contentBg: string; contentBg: string;
/**
* @desc
* @descEN Background color of footer
*/
footerBg: string; footerBg: string;
} }

8
components/notification/style/index.tsx

@ -7,7 +7,15 @@ import genNotificationPlacementStyle from './placement';
/** Component only token. Which will handle additional calculation of alias token */ /** Component only token. Which will handle additional calculation of alias token */
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of Notification
*/
zIndexPopup: number; zIndexPopup: number;
/**
* @desc
* @descEN Width of Notification
*/
width: number; width: number;
} }

36
components/pagination/style/index.ts

@ -10,14 +10,50 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Background color of Pagination item
*/
itemBg: string; itemBg: string;
/**
* @desc
* @descEN Size of Pagination item
*/
itemSize: number; itemSize: number;
/**
* @desc
* @descEN Background color of active Pagination item
*/
itemActiveBg: string; itemActiveBg: string;
/**
* @desc
* @descEN Size of small Pagination item
*/
itemSizeSM: number; itemSizeSM: number;
/**
* @desc
* @descEN Background color of Pagination item link
*/
itemLinkBg: string; itemLinkBg: string;
/**
* @desc
* @descEN Background color of disabled active Pagination item
*/
itemActiveBgDisabled: string; itemActiveBgDisabled: string;
/**
* @desc
* @descEN Text color of disabled active Pagination item
*/
itemActiveColorDisabled: string; itemActiveColorDisabled: string;
/**
* @desc
* @descEN Background color of input
*/
itemInputBg: string; itemInputBg: string;
/**
* @desc top
* @descEN Top of Pagination size changer
*/
miniOptionsSizeChangerTop: number; miniOptionsSizeChangerTop: number;
} }

4
components/popconfirm/style/index.tsx

@ -2,6 +2,10 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook } from '../../theme/internal'; import { genComponentStyleHook } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of Popconfirm
*/
zIndexPopup: number; zIndexPopup: number;
} }

12
components/popover/style/index.tsx

@ -5,8 +5,20 @@ import type { FullToken, GenerateStyle, PresetColorType } from '../../theme/inte
import { PresetColors, genComponentStyleHook, mergeToken } from '../../theme/internal'; import { PresetColors, genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of Popover
*/
width: number; width: number;
/**
* @desc
* @descEN Min width of Popover
*/
minWidth: number; minWidth: number;
/**
* @desc z-index
* @descEN z-index of Popover
*/
zIndexPopup: number; zIndexPopup: number;
} }

44
components/radio/style/index.tsx

@ -6,18 +6,62 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
// ============================== Tokens ============================== // ============================== Tokens ==============================
export interface ComponentToken { export interface ComponentToken {
// Radio // Radio
/**
* @desc
* @descEN Radio size
*/
radioSize: number; radioSize: number;
/**
* @desc
* @descEN Size of Radio dot
*/
dotSize: number; dotSize: number;
/**
* @desc
* @descEN Color of disabled Radio dot
*/
dotColorDisabled: string; dotColorDisabled: string;
// Radio buttons // Radio buttons
/**
* @desc
* @descEN Background color of Radio button
*/
buttonBg: string; buttonBg: string;
/**
* @desc
* @descEN Background color of checked Radio button
*/
buttonCheckedBg: string; buttonCheckedBg: string;
/**
* @desc
* @descEN Color of Radio button text
*/
buttonColor: string; buttonColor: string;
/**
* @desc
* @descEN Horizontal padding of Radio button
*/
buttonPaddingInline: number; buttonPaddingInline: number;
/**
* @desc
* @descEN Background color of checked and disabled Radio button
*/
buttonCheckedBgDisabled: string; buttonCheckedBgDisabled: string;
/**
* @desc
* @descEN Color of checked and disabled Radio button text
*/
buttonCheckedColorDisabled: string; buttonCheckedColorDisabled: string;
/**
* @desc
* @descEN Color of checked solid Radio button text
*/
buttonSolidCheckedColor: string; buttonSolidCheckedColor: string;
/**
* @desc
* @descEN Margin right of Radio button
*/
wrapperMarginInlineEnd: number; wrapperMarginInlineEnd: number;
} }

16
components/rate/style/index.tsx

@ -4,9 +4,25 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export type ComponentToken = { export type ComponentToken = {
/**
* @desc
* @descEN Star color
*/
starColor: string; starColor: string;
/**
* @desc
* @descEN Star size
*/
starSize: number; starSize: number;
/**
* @desc
* @descEN Scale of star when hover
*/
starHoverScale: CSSObject['transform']; starHoverScale: CSSObject['transform'];
/**
* @desc
* @descEN Star background color
*/
starBg: string; starBg: string;
}; };

16
components/result/style/index.tsx

@ -4,9 +4,25 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Title font size
*/
titleFontSize: number; titleFontSize: number;
/**
* @desc
* @descEN Subtitle font size
*/
subtitleFontSize: number; subtitleFontSize: number;
/**
* @desc
* @descEN Icon size
*/
iconFontSize: number; iconFontSize: number;
/**
* @desc
* @descEN Margin of extra area
*/
extraMargin: CSSProperties['margin']; extraMargin: CSSProperties['margin'];
} }

20
components/segmented/style/index.tsx

@ -4,10 +4,30 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Text color of item
*/
itemColor: string; itemColor: string;
/**
* @desc
* @descEN Text color of item when hover
*/
itemHoverColor: string; itemHoverColor: string;
/**
* @desc
* @descEN Background color of item when hover
*/
itemHoverBg: string; itemHoverBg: string;
/**
* @desc
* @descEN Background color of item when active
*/
itemActiveBg: string; itemActiveBg: string;
/**
* @desc
* @descEN Background color of item when selected
*/
itemSelectedBg: string; itemSelectedBg: string;
} }

4
components/select/style/index.tsx

@ -8,6 +8,10 @@ import genMultipleStyle from './multiple';
import genSingleStyle from './single'; import genSingleStyle from './single';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of dropdown
*/
zIndexPopup: number; zIndexPopup: number;
} }

24
components/skeleton/style/index.tsx

@ -8,11 +8,35 @@ export type ComponentToken = {
color: string; color: string;
/** @deprecated use gradientToColor instead. */ /** @deprecated use gradientToColor instead. */
colorGradientEnd: string; colorGradientEnd: string;
/**
* @desc
* @descEN Start color of gradient
*/
gradientFromColor: string; gradientFromColor: string;
/**
* @desc
* @descEN End color of gradient
*/
gradientToColor: string; gradientToColor: string;
/**
* @desc
* @descEN Height of title skeleton
*/
titleHeight: number; titleHeight: number;
/**
* @desc
* @descEN Border radius of skeleton
*/
blockRadius: number; blockRadius: number;
/**
* @desc
* @descEN Margin top of paragraph skeleton
*/
paragraphMarginTop: number; paragraphMarginTop: number;
/**
* @desc
* @descEN Line height of paragraph skeleton
*/
paragraphLiHeight: number; paragraphLiHeight: number;
}; };

28
components/slider/style/index.tsx

@ -12,12 +12,40 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
// horizontal: full (水平时,水平方向命名为 full) // horizontal: full (水平时,水平方向命名为 full)
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Height of slider
*/
controlSize: number; controlSize: number;
/**
* @desc
* @descEN Height of rail
*/
railSize: number; railSize: number;
/**
* @desc
* @descEN Size of handle
*/
handleSize: number; handleSize: number;
/**
* @desc
* @descEN Size of handle when hover
*/
handleSizeHover: number; handleSizeHover: number;
/**
* @desc
* @descEN Border width of handle
*/
handleLineWidth: number; handleLineWidth: number;
/**
* @desc
* @descEN Border width of handle when hover
*/
handleLineWidthHover: number; handleLineWidthHover: number;
/**
* @desc
* @descEN Size of dot
*/
dotSize: number; dotSize: number;
} }

6
components/spin/style/index.tsx

@ -1,10 +1,14 @@
import type { CSSObject } from '@ant-design/cssinjs'; import type { CSSObject } from '@ant-design/cssinjs';
import { Keyframes } from '@ant-design/cssinjs'; import { Keyframes } from '@ant-design/cssinjs';
import { resetComponent } from '../../style';
import type { FullToken, GenerateStyle } from '../../theme/internal'; import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
import { resetComponent } from '../../style';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Height of content area
*/
contentHeight: number; contentHeight: number;
} }

8
components/statistic/style/index.tsx

@ -4,7 +4,15 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Title font size
*/
titleFontSize: number; titleFontSize: number;
/**
* @desc
* @descEN Content font size
*/
contentFontSize: number; contentFontSize: number;
} }

52
components/steps/style/index.tsx

@ -14,18 +14,70 @@ import genStepsSmallStyle from './small';
import genStepsVerticalStyle from './vertical'; import genStepsVerticalStyle from './vertical';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Max width of description area
*/
descriptionMaxWidth: number; descriptionMaxWidth: number;
/**
* @desc
* @descEN Size of custom icon container
*/
customIconSize: number; customIconSize: number;
/**
* @desc top
* @descEN Top of custom icon
*/
customIconTop: number; customIconTop: number;
/**
* @desc
* @descEN Font size of custom icon
*/
customIconFontSize: number; customIconFontSize: number;
/**
* @desc
* @descEN Size of icon container
*/
iconSize: number; iconSize: number;
/**
* @desc top
* @descEN Top of icon
*/
iconTop: number; iconTop: number;
/**
* @desc
* @descEN Size of icon
*/
iconFontSize: number; iconFontSize: number;
/**
* @desc
* @descEN Size of dot
*/
dotSize: number; dotSize: number;
/**
* @desc
* @descEN Current size of dot
*/
dotCurrentSize: number; dotCurrentSize: number;
/**
* @desc
* @descEN Color of arrow in nav
*/
navArrowColor: string; navArrowColor: string;
/**
* @desc
* @descEN Max width of nav content
*/
navContentMaxWidth: CSSProperties['maxWidth']; navContentMaxWidth: CSSProperties['maxWidth'];
/**
* @desc
* @descEN Size of small steps icon
*/
iconSizeSM: number; iconSizeSM: number;
/**
* @desc
* @descEN Line height of title
*/
titleLineHeight: number; titleLineHeight: number;
} }

92
components/tabs/style/index.ts

@ -5,28 +5,120 @@ import { genComponentStyleHook, mergeToken } from '../../theme/internal';
import genMotionStyle from './motion'; import genMotionStyle from './motion';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of dropdown menu
*/
zIndexPopup: number; zIndexPopup: number;
/**
* @desc
* @descEN Background color of card tab
*/
cardBg: string; cardBg: string;
/**
* @desc
* @descEN Height of card tab
*/
cardHeight: number; cardHeight: number;
/**
* @desc
* @descEN Padding of card tab
*/
cardPadding: string; cardPadding: string;
/**
* @desc
* @descEN Padding of small card tab
*/
cardPaddingSM: string; cardPaddingSM: string;
/**
* @desc
* @descEN Padding of large card tab
*/
cardPaddingLG: string; cardPaddingLG: string;
/**
* @desc
* @descEN Font size of title
*/
titleFontSize: number; titleFontSize: number;
/**
* @desc
* @descEN Font size of large title
*/
titleFontSizeLG: number; titleFontSizeLG: number;
/**
* @desc
* @descEN Font size of small title
*/
titleFontSizeSM: number; titleFontSizeSM: number;
/**
* @desc
* @descEN Color of indicator
*/
inkBarColor: string; inkBarColor: string;
/**
* @desc
* @descEN Horizontal margin of horizontal tab
*/
horizontalMargin: string; horizontalMargin: string;
/**
* @desc
* @descEN Horizontal gutter of horizontal tab
*/
horizontalItemGutter: number; horizontalItemGutter: number;
/**
* @desc
* @descEN Horizontal margin of horizontal tab item
*/
horizontalItemMargin: string; horizontalItemMargin: string;
/**
* @desc RTL
* @descEN Horizontal margin of horizontal tab item (RTL)
*/
horizontalItemMarginRTL: string; horizontalItemMarginRTL: string;
/**
* @desc
* @descEN Horizontal padding of horizontal tab item
*/
horizontalItemPadding: string; horizontalItemPadding: string;
/**
* @desc
* @descEN Horizontal padding of large horizontal tab item
*/
horizontalItemPaddingLG: string; horizontalItemPaddingLG: string;
/**
* @desc
* @descEN Horizontal padding of small horizontal tab item
*/
horizontalItemPaddingSM: string; horizontalItemPaddingSM: string;
/**
* @desc
* @descEN Vertical padding of vertical tab item
*/
verticalItemPadding: string; verticalItemPadding: string;
/**
* @desc
* @descEN Vertical margin of vertical tab item
*/
verticalItemMargin: string; verticalItemMargin: string;
/**
* @desc
* @descEN Text color of active tab
*/
itemActiveColor: string; itemActiveColor: string;
/**
* @desc
* @descEN Text color of hover tab
*/
itemHoverColor: string; itemHoverColor: string;
/**
* @desc
* @descEN Text color of selected tab
*/
itemSelectedColor: string; itemSelectedColor: string;
/**
* @desc
* @descEN Gutter of card tab
*/
cardGutter: number; cardGutter: number;
} }

8
components/tag/style/index.ts

@ -6,7 +6,15 @@ import type { FullToken } from '../../theme/internal';
import { genComponentStyleHook, genPresetColor, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, genPresetColor, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Default background color
*/
defaultBg: string; defaultBg: string;
/**
* @desc
* @descEN Default text color
*/
defaultColor: string; defaultColor: string;
} }

20
components/timeline/style/index.ts

@ -4,10 +4,30 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Line color
*/
tailColor: string; tailColor: string;
/**
* @desc
* @descEN Line width
*/
tailWidth: number; tailWidth: number;
/**
* @desc
* @descEN Border width of node
*/
dotBorderWidth: number; dotBorderWidth: number;
/**
* @desc
* @descEN Background color of node
*/
dotBg: string; dotBg: string;
/**
* @desc
* @descEN Bottom padding of item
*/
itemPaddingBottom: number; itemPaddingBottom: number;
} }

5
components/tooltip/style/index.ts

@ -5,7 +5,12 @@ import type { FullToken, GenerateStyle, UseComponentStyleResult } from '../../th
import { genComponentStyleHook, genPresetColor, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, genPresetColor, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc z-index
* @descEN z-index of tooltip
*/
zIndexPopup: number; zIndexPopup: number;
/** @deprecated */
colorBgDefault: string; colorBgDefault: string;
} }

24
components/transfer/style/index.ts

@ -4,11 +4,35 @@ import type { FullToken, GenerateStyle } from '../../theme/internal';
import { genComponentStyleHook, mergeToken } from '../../theme/internal'; import { genComponentStyleHook, mergeToken } from '../../theme/internal';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Width of list
*/
listWidth: number; listWidth: number;
/**
* @desc
* @descEN Width of large list
*/
listWidthLG: number; listWidthLG: number;
/**
* @desc
* @descEN Height of list
*/
listHeight: number; listHeight: number;
/**
* @desc
* @descEN Height of list item
*/
itemHeight: number; itemHeight: number;
/**
* @desc
* @descEN Vertical padding of list item
*/
itemPaddingBlock: number; itemPaddingBlock: number;
/**
* @desc
* @descEN Height of header
*/
headerHeight: number; headerHeight: number;
} }

12
components/typography/style/index.ts

@ -12,9 +12,16 @@ import {
/** Component only token. Which will handle additional calculation of alias token */ /** Component only token. Which will handle additional calculation of alias token */
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Margin top of title
*/
titleMarginTop: number | string; titleMarginTop: number | string;
/**
* @desc
* @descEN Margin bottom of title
*/
titleMarginBottom: number | string; titleMarginBottom: number | string;
fontWeightStrong: number;
} }
export type TypographyToken = FullToken<'Typography'>; export type TypographyToken = FullToken<'Typography'>;
@ -126,9 +133,8 @@ const genTypographyStyle: GenerateStyle<TypographyToken> = (token) => {
export default genComponentStyleHook( export default genComponentStyleHook(
'Typography', 'Typography',
(token) => [genTypographyStyle(token)], (token) => [genTypographyStyle(token)],
(token) => ({ () => ({
titleMarginTop: '1.2em', titleMarginTop: '1.2em',
titleMarginBottom: '0.5em', titleMarginBottom: '0.5em',
fontWeightStrong: token.fontWeightStrong,
}), }),
); );

4
components/upload/style/index.ts

@ -9,6 +9,10 @@ import { genPictureCardStyle, genPictureStyle } from './picture';
import genRtlStyle from './rtl'; import genRtlStyle from './rtl';
export interface ComponentToken { export interface ComponentToken {
/**
* @desc
* @descEN Action button color
*/
actionsColor: string; actionsColor: string;
} }

117
scripts/generate-token-meta.ts

@ -2,11 +2,20 @@ import fs from 'fs-extra';
import type { DeclarationReflection } from 'typedoc'; import type { DeclarationReflection } from 'typedoc';
import { Application, TSConfigReader, TypeDocReader } from 'typedoc'; import { Application, TSConfigReader, TypeDocReader } from 'typedoc';
type TokenMeta = {
seed: ReturnType<typeof getTokenList>;
map: ReturnType<typeof getTokenList>;
alias: ReturnType<typeof getTokenList>;
components: Record<string, ReturnType<typeof getTokenList>>;
};
function getTokenList(list?: DeclarationReflection[], source?: string) { function getTokenList(list?: DeclarationReflection[], source?: string) {
return (list || []) return (list || [])
.filter( .filter(
(item) => (item) =>
!item.comment?.blockTags.some((tag) => tag.tag === '@internal' || tag.tag === '@private'), !item.comment?.blockTags.some(
(tag) => tag.tag === '@internal' || tag.tag === '@private' || tag.tag === '@deprecated',
),
) )
.map((item) => ({ .map((item) => ({
source, source,
@ -40,7 +49,8 @@ const main = () => {
app.bootstrap({ app.bootstrap({
// typedoc options here // typedoc options here
entryPoints: ['components/theme/interface/index.ts'], entryPoints: ['components/theme/interface/index.ts', 'components/*/style/index.{ts,tsx}'],
skipErrorChecking: true,
}); });
const project = app.convert(); const project = app.convert();
@ -48,49 +58,74 @@ const main = () => {
if (project) { if (project) {
// Project may not have converted correctly // Project may not have converted correctly
const output = 'components/version/token-meta.json'; const output = 'components/version/token-meta.json';
const tokenMeta: Record<PropertyKey, ReturnType<typeof getTokenList>> = {}; const tokenMeta: TokenMeta = {
let presetColors: string[] = []; seed: [],
project.children?.forEach((type) => { map: [],
if (type.name === 'SeedToken') { alias: [],
tokenMeta.seed = getTokenList(type.children, 'seed'); components: {},
} else if (type.name === 'MapToken') { };
tokenMeta.map = getTokenList(type.children, 'map');
} else if (type.name === 'AliasToken') {
tokenMeta.alias = getTokenList(type.children, 'alias');
} else if (type.name === 'PresetColors') {
presetColors = (type?.type as any)?.target?.elements?.map((item: any) => item.value);
}
});
// Exclude preset colors // eslint-disable-next-line no-restricted-syntax
tokenMeta.seed = tokenMeta.seed.filter( project?.children?.forEach((file) => {
(item) => !presetColors.some((color) => item.token.startsWith(color)), // Global Token
); if (file.name === 'theme/interface') {
tokenMeta.map = tokenMeta.map.filter( let presetColors: string[] = [];
(item) => !presetColors.some((color) => item.token.startsWith(color)), file.children?.forEach((type) => {
); if (type.name === 'SeedToken') {
tokenMeta.alias = tokenMeta.alias.filter( tokenMeta.seed = getTokenList(type.children, 'seed');
(item) => !presetColors.some((color) => item.token.startsWith(color)), } else if (type.name === 'MapToken') {
); tokenMeta.map = getTokenList(type.children, 'map');
} else if (type.name === 'AliasToken') {
tokenMeta.alias = getTokenList(type.children, 'alias');
} else if (type.name === 'PresetColors') {
presetColors = (type?.type as any)?.target?.elements?.map((item: any) => item.value);
}
});
tokenMeta.alias = tokenMeta.alias.filter( // Exclude preset colors
(item) => !tokenMeta.map.some((mapItem) => mapItem.token === item.token), tokenMeta.seed = tokenMeta.seed.filter(
); (item) => !presetColors.some((color) => item.token.startsWith(color)),
tokenMeta.map = tokenMeta.map.filter( );
(item) => !tokenMeta.seed.some((seedItem) => seedItem.token === item.token), tokenMeta.map = tokenMeta.map.filter(
); (item) => !presetColors.some((color) => item.token.startsWith(color)),
);
tokenMeta.alias = tokenMeta.alias.filter(
(item) => !presetColors.some((color) => item.token.startsWith(color)),
);
tokenMeta.alias = tokenMeta.alias.filter(
(item) => !tokenMeta.map.some((mapItem) => mapItem.token === item.token),
);
tokenMeta.map = tokenMeta.map.filter(
(item) => !tokenMeta.seed.some((seedItem) => seedItem.token === item.token),
);
} else {
const component = file.name
.slice(0, file.name.indexOf('/'))
.replace(/(^(.)|-(.))/g, (match) => match.replace('-', '').toUpperCase());
const componentToken = file.children?.find((item) => item.name === `ComponentToken`);
if (componentToken) {
tokenMeta.components[component] = getTokenList(componentToken.children, component);
}
}
});
const finalMeta = Object.entries(tokenMeta).reduce((acc, [key, value]) => { const finalMeta = Object.entries(tokenMeta).reduce((acc, [key, value]) => {
value.forEach((item) => { if (key !== 'components') {
acc[item.token] = { (value as any[]).forEach((item) => {
name: item.name, acc.global = acc.global || {};
nameEn: item.nameEn, acc.global[item.token] = {
desc: item.desc, name: item.name,
descEn: item.descEn, nameEn: item.nameEn,
type: item.type, desc: item.desc,
source: key, descEn: item.descEn,
}; type: item.type,
}); source: key,
};
});
} else {
acc.components = value;
}
return acc; return acc;
}, {} as any); }, {} as any);

Loading…
Cancel
Save