1
+ import { unit } from '../../_util/cssinjs' ;
1
2
import type { CSSObject } from '../../_util/cssinjs' ;
2
- import type { FullToken , GenerateStyle } from '../../theme/internal' ;
3
- import { genComponentStyleHook , mergeToken } from '../../theme/internal' ;
4
- import { genFocusStyle , resetComponent } from '../../style' ;
5
3
6
- export interface ComponentToken { }
7
-
8
- interface BreadcrumbToken extends FullToken < 'Breadcrumb' > {
9
- breadcrumbBaseColor : string ;
10
- breadcrumbFontSize : number ;
11
- breadcrumbIconFontSize : number ;
12
- breadcrumbLinkColor : string ;
13
- breadcrumbLinkColorHover : string ;
14
- breadcrumbLastItemColor : string ;
15
- breadcrumbSeparatorMargin : number ;
16
- breadcrumbSeparatorColor : string ;
4
+ import { genFocusStyle , resetComponent } from '../../style' ;
5
+ import type { FullToken , GenerateStyle , GetDefaultToken } from '../../theme/internal' ;
6
+ import { genStyleHooks , mergeToken } from '../../theme/internal' ;
7
+
8
+ export interface ComponentToken {
9
+ /**
10
+ * @desc 面包屑项文字颜色
11
+ * @descEN Text color of Breadcrumb item
12
+ */
13
+ itemColor : string ;
14
+ /**
15
+ * @desc 图标大小
16
+ * @descEN Icon size
17
+ */
18
+ iconFontSize : number ;
19
+ /**
20
+ * @desc 链接文字颜色
21
+ * @descEN Text color of link
22
+ */
23
+ linkColor : string ;
24
+ /**
25
+ * @desc 链接文字悬浮颜色
26
+ * @descEN Color of hovered link
27
+ */
28
+ linkHoverColor : string ;
29
+ /**
30
+ * @desc 最后一项文字颜色
31
+ * @descEN Text color of the last item
32
+ */
33
+ lastItemColor : string ;
34
+ /**
35
+ * @desc 分隔符外间距
36
+ * @descEN Margin of separator
37
+ */
38
+ separatorMargin : number ;
39
+ /**
40
+ * @desc 分隔符颜色
41
+ * @descEN Color of separator
42
+ */
43
+ separatorColor : string ;
17
44
}
18
45
46
+ interface BreadcrumbToken extends FullToken < 'Breadcrumb' > { }
47
+
19
48
const genBreadcrumbStyle : GenerateStyle < BreadcrumbToken , CSSObject > = token => {
20
- const { componentCls, iconCls } = token ;
49
+ const { componentCls, iconCls, calc } = token ;
21
50
22
51
return {
23
52
[ componentCls ] : {
24
53
...resetComponent ( token ) ,
25
- color : token . breadcrumbBaseColor ,
26
- fontSize : token . breadcrumbFontSize ,
54
+ color : token . itemColor ,
55
+ fontSize : token . fontSize ,
27
56
28
57
[ iconCls ] : {
29
- fontSize : token . breadcrumbIconFontSize ,
58
+ fontSize : token . iconFontSize ,
30
59
} ,
31
60
32
61
ol : {
@@ -38,33 +67,29 @@ const genBreadcrumbStyle: GenerateStyle<BreadcrumbToken, CSSObject> = token => {
38
67
} ,
39
68
40
69
a : {
41
- color : token . breadcrumbLinkColor ,
70
+ color : token . linkColor ,
42
71
transition : `color ${ token . motionDurationMid } ` ,
43
- padding : `0 ${ token . paddingXXS } px ` ,
72
+ padding : `0 ${ unit ( token . paddingXXS ) } ` ,
44
73
borderRadius : token . borderRadiusSM ,
45
- height : token . lineHeight * token . fontSize ,
74
+ height : token . fontHeight ,
46
75
display : 'inline-block' ,
47
- marginInline : - token . marginXXS ,
76
+ marginInline : calc ( token . marginXXS ) . mul ( - 1 ) . equal ( ) ,
48
77
49
78
'&:hover' : {
50
- color : token . breadcrumbLinkColorHover ,
79
+ color : token . linkHoverColor ,
51
80
backgroundColor : token . colorBgTextHover ,
52
81
} ,
53
82
54
83
...genFocusStyle ( token ) ,
55
84
} ,
56
85
57
- [ `li:last-child` ] : {
58
- color : token . breadcrumbLastItemColor ,
59
-
60
- [ `& > ${ componentCls } -separator` ] : {
61
- display : 'none' ,
62
- } ,
86
+ 'li:last-child' : {
87
+ color : token . lastItemColor ,
63
88
} ,
64
89
65
90
[ `${ componentCls } -separator` ] : {
66
- marginInline : token . breadcrumbSeparatorMargin ,
67
- color : token . breadcrumbSeparatorColor ,
91
+ marginInline : token . separatorMargin ,
92
+ color : token . separatorColor ,
68
93
} ,
69
94
70
95
[ `${ componentCls } -link` ] : {
@@ -78,22 +103,22 @@ const genBreadcrumbStyle: GenerateStyle<BreadcrumbToken, CSSObject> = token => {
78
103
79
104
[ `${ componentCls } -overlay-link` ] : {
80
105
borderRadius : token . borderRadiusSM ,
81
- height : token . lineHeight * token . fontSize ,
106
+ height : token . fontHeight ,
82
107
display : 'inline-block' ,
83
- padding : `0 ${ token . paddingXXS } px ` ,
84
- marginInline : - token . marginXXS ,
108
+ padding : `0 ${ unit ( token . paddingXXS ) } ` ,
109
+ marginInline : calc ( token . marginXXS ) . mul ( - 1 ) . equal ( ) ,
85
110
86
111
[ `> ${ iconCls } ` ] : {
87
112
marginInlineStart : token . marginXXS ,
88
113
fontSize : token . fontSizeIcon ,
89
114
} ,
90
115
91
116
'&:hover' : {
92
- color : token . breadcrumbLinkColorHover ,
117
+ color : token . linkHoverColor ,
93
118
backgroundColor : token . colorBgTextHover ,
94
119
95
120
a : {
96
- color : token . breadcrumbLinkColorHover ,
121
+ color : token . linkHoverColor ,
97
122
} ,
98
123
} ,
99
124
@@ -112,18 +137,22 @@ const genBreadcrumbStyle: GenerateStyle<BreadcrumbToken, CSSObject> = token => {
112
137
} ;
113
138
} ;
114
139
115
- // ============================== Export ==============================
116
- export default genComponentStyleHook ( 'Breadcrumb' , token => {
117
- const BreadcrumbToken = mergeToken < BreadcrumbToken > ( token , {
118
- breadcrumbBaseColor : token . colorTextDescription ,
119
- breadcrumbFontSize : token . fontSize ,
120
- breadcrumbIconFontSize : token . fontSize ,
121
- breadcrumbLinkColor : token . colorTextDescription ,
122
- breadcrumbLinkColorHover : token . colorText ,
123
- breadcrumbLastItemColor : token . colorText ,
124
- breadcrumbSeparatorMargin : token . marginXS ,
125
- breadcrumbSeparatorColor : token . colorTextDescription ,
126
- } ) ;
127
-
128
- return [ genBreadcrumbStyle ( BreadcrumbToken ) ] ;
140
+ export const prepareComponentToken : GetDefaultToken < 'Breadcrumb' > = token => ( {
141
+ itemColor : token . colorTextDescription ,
142
+ lastItemColor : token . colorText ,
143
+ iconFontSize : token . fontSize ,
144
+ linkColor : token . colorTextDescription ,
145
+ linkHoverColor : token . colorText ,
146
+ separatorColor : token . colorTextDescription ,
147
+ separatorMargin : token . marginXS ,
129
148
} ) ;
149
+
150
+ // ============================== Export ==============================
151
+ export default genStyleHooks (
152
+ 'Breadcrumb' ,
153
+ token => {
154
+ const breadcrumbToken = mergeToken < BreadcrumbToken > ( token , { } ) ;
155
+ return genBreadcrumbStyle ( breadcrumbToken ) ;
156
+ } ,
157
+ prepareComponentToken ,
158
+ ) ;
0 commit comments