@@ -34,7 +34,12 @@ export interface BadgeStyleProps {
34
34
*
35
35
* @default 'neutral'
36
36
*/
37
- variant : 'accent' | 'informative' | 'neutral' | 'positive' | 'notice' | 'negative' | 'gray' | 'red' | 'orange' | 'yellow' | 'charteuse' | 'celery' | 'green' | 'seafoam' | 'cyan' | 'blue' | 'indigo' | 'purple' | 'fuchsia' | 'magenta' | 'pink' | 'turquoise' | 'brown' | 'cinnamon' | 'silver'
37
+ variant ?: 'accent' | 'informative' | 'neutral' | 'positive' | 'notice' | 'negative' | 'gray' | 'red' | 'orange' | 'yellow' | 'charteuse' | 'celery' | 'green' | 'seafoam' | 'cyan' | 'blue' | 'indigo' | 'purple' | 'fuchsia' | 'magenta' | 'pink' | 'turquoise' | 'brown' | 'cinnamon' | 'silver' ,
38
+ /**
39
+ * The fill of the badge.
40
+ * @default 'bold'
41
+ */
42
+ fillStyle ?: 'bold' | 'subtle' | 'outline'
38
43
}
39
44
40
45
export interface BadgeProps extends DOMProps , AriaLabelingProps , StyleProps , BadgeStyleProps , SlotProps {
@@ -73,42 +78,100 @@ const badge = style<BadgeStyleProps>({
73
78
} ,
74
79
columnGap : 'text-to-visual' ,
75
80
color : {
76
- default : 'white' ,
77
- variant : {
78
- notice : 'black' ,
79
- orange : 'black' ,
80
- yellow : 'black' ,
81
- charteuse : 'black' ,
82
- celery : 'black'
81
+ fillStyle : {
82
+ bold : {
83
+ default : 'white' ,
84
+ variant : {
85
+ notice : 'black' ,
86
+ orange : 'black' ,
87
+ yellow : 'black' ,
88
+ charteuse : 'black' ,
89
+ celery : 'black'
90
+ }
91
+ } ,
92
+ subtle : 'gray-1000' ,
93
+ outline : 'gray-1000'
83
94
}
84
95
} ,
85
96
backgroundColor : {
86
- variant : {
87
- accent : 'accent' ,
88
- informative : 'informative' ,
89
- neutral : 'neutral-subdued' ,
90
- positive : 'positive' ,
91
- notice : 'notice' ,
92
- negative : 'negative' ,
93
- gray : 'gray' ,
94
- red : 'red' ,
95
- orange : 'orange' ,
96
- yellow : 'yellow' ,
97
- charteuse : 'chartreuse' ,
98
- celery : 'celery' ,
99
- green : 'green' ,
100
- seafoam : 'seafoam' ,
101
- cyan : 'cyan' ,
102
- blue : 'blue' ,
103
- indigo : 'indigo' ,
104
- purple : 'purple' ,
105
- fuchsia : 'fuchsia' ,
106
- magenta : 'magenta' ,
107
- pink : 'pink' ,
108
- turquoise : 'turquoise' ,
109
- brown : 'brown' ,
110
- cinnamon : 'cinnamon' ,
111
- silver : 'silver'
97
+ fillStyle : {
98
+ bold : {
99
+ variant : {
100
+ accent : 'accent' ,
101
+ informative : 'informative' ,
102
+ neutral : 'neutral-subdued' ,
103
+ positive : 'positive' ,
104
+ notice : 'notice' ,
105
+ negative : 'negative' ,
106
+ gray : 'gray' ,
107
+ red : 'red' ,
108
+ orange : 'orange' ,
109
+ yellow : 'yellow' ,
110
+ charteuse : 'chartreuse' ,
111
+ celery : 'celery' ,
112
+ green : 'green' ,
113
+ seafoam : 'seafoam' ,
114
+ cyan : 'cyan' ,
115
+ blue : 'blue' ,
116
+ indigo : 'indigo' ,
117
+ purple : 'purple' ,
118
+ fuchsia : 'fuchsia' ,
119
+ magenta : 'magenta' ,
120
+ pink : 'pink' ,
121
+ turquoise : 'turquoise' ,
122
+ brown : 'brown' ,
123
+ cinnamon : 'cinnamon' ,
124
+ silver : 'silver'
125
+ }
126
+ } ,
127
+ subtle : {
128
+ variant : {
129
+ accent : 'accent-200' ,
130
+ informative : 'informative-subtle' ,
131
+ neutral : 'neutral-subtle' ,
132
+ positive : 'positive-subtle' ,
133
+ notice : 'notice-subtle' ,
134
+ negative : 'negative-subtle' ,
135
+ gray : 'gray-100' ,
136
+ red : 'red-200' ,
137
+ orange : 'orange-200' ,
138
+ yellow : 'yellow-200' ,
139
+ charteuse : 'chartreuse-200' ,
140
+ celery : 'celery-200' ,
141
+ green : 'green-200' ,
142
+ seafoam : 'seafoam-200' ,
143
+ cyan : 'cyan-200' ,
144
+ blue : 'blue-200' ,
145
+ indigo : 'indigo-200' ,
146
+ purple : 'purple-200' ,
147
+ fuchsia : 'fuchsia-200' ,
148
+ magenta : 'magenta-200' ,
149
+ pink : 'pink-200' ,
150
+ turquoise : 'turquoise-200' ,
151
+ brown : 'brown-200' ,
152
+ cinnamon : 'cinnamon-200' ,
153
+ silver : 'silver-200'
154
+ }
155
+ } ,
156
+ outline : 'gray-25'
157
+ }
158
+ } ,
159
+ borderStyle : 'solid' ,
160
+ boxSizing : 'border-box' ,
161
+ borderWidth : 2 ,
162
+ borderColor : {
163
+ default : 'transparent' ,
164
+ fillStyle : {
165
+ outline : {
166
+ variant : {
167
+ accent : 'accent-800' ,
168
+ informative : 'informative-800' ,
169
+ neutral : 'gray-700' ,
170
+ positive : 'positive-700' ,
171
+ notice : 'notice-700' ,
172
+ negative : 'negative-800' ,
173
+ }
174
+ }
112
175
}
113
176
} ,
114
177
'--iconPrimary' : {
@@ -123,6 +186,7 @@ function Badge(props: BadgeProps, ref: DOMRef<HTMLDivElement>) {
123
186
children,
124
187
variant = 'neutral' ,
125
188
size = 'S' ,
189
+ fillStyle = 'bold' ,
126
190
...otherProps
127
191
} = props ; // useProviderProps(props) in v3
128
192
let domRef = useDOMRef ( ref ) ;
@@ -140,7 +204,7 @@ function Badge(props: BadgeProps, ref: DOMRef<HTMLDivElement>) {
140
204
< span
141
205
{ ...filterDOMProps ( otherProps ) }
142
206
role = "presentation"
143
- className = { ( props . UNSAFE_className || '' ) + badge ( { variant, size} , props . styles ) }
207
+ className = { ( props . UNSAFE_className || '' ) + badge ( { variant, size, fillStyle } , props . styles ) }
144
208
ref = { domRef } >
145
209
{
146
210
typeof children === 'string' || isTextOnly
0 commit comments