@@ -9,40 +9,39 @@ const StyledContainer = styled.div<{ disabled: boolean }>`
9
9
background-color: var(--transparent-color);
10
10
` ;
11
11
12
- const StyledRadioOuter = styled . div < { $disabled : boolean ; $diameterRadioBorder : number } > `
12
+ const StyledRadioOuter = styled . div < {
13
+ $disabled : boolean ;
14
+ $selected : boolean ;
15
+ $diameterRadioBorder : number ;
16
+ } > `
13
17
width: ${ props => props . $diameterRadioBorder } px;
14
18
height: ${ props => props . $diameterRadioBorder } px;
15
19
border: 1px solid var(--text-primary-color);
16
20
border-radius: 50%;
17
- background-color: transparent;
21
+
18
22
cursor: ${ props => ( props . $disabled ? 'not-allowed' : 'pointer' ) } ;
19
23
position: relative;
20
- ` ;
21
24
22
- const StyledSelectedInner = styled . div < {
23
- $disabled : boolean ;
24
- $selected : boolean ;
25
- $diameterRadioBg : number ;
26
- } > `
27
- width: ${ props => props . $diameterRadioBg } px;
28
- height: ${ props => props . $diameterRadioBg } px;
29
- border-radius: 50%;
30
- opacity: ${ props => ( props . $selected ? 1 : 0 ) } ;
31
- background: ${ props => ( props . $disabled ? 'var(--disabled-color)' : 'var(--primary-color)' ) } ;
32
- pointer-events: none;
33
- transition-duration: var(--default-duration);
34
- position: absolute;
35
- top: 50%;
36
- left: 50%;
37
- transform: translate(-50%, -50%);
25
+ &::before {
26
+ content: '';
27
+ position: absolute;
28
+ inset: 0;
29
+ border-radius: 50%;
30
+ background: ${ props =>
31
+ props . $disabled
32
+ ? 'var(--disabled-color)'
33
+ : 'radial-gradient(circle, var(--primary-color) 0%, var(--primary-color) 60%, transparent 60%, transparent 100%)' } ;
34
+ opacity: ${ props => ( props . $selected ? 1 : 0 ) } ;
35
+ transition: opacity 0.3s ease;
36
+ pointer-events: none;
37
+ }
38
38
` ;
39
39
40
40
function RadioButton ( {
41
41
disabled,
42
42
onClick,
43
43
selected,
44
44
dataTestId,
45
- diameterRadioBg,
46
45
diameterRadioBorder,
47
46
style,
48
47
ariaLabel,
@@ -51,7 +50,6 @@ function RadioButton({
51
50
onClick : MouseEventHandler < HTMLDivElement > ;
52
51
disabled : boolean ;
53
52
dataTestId : SessionDataTestId | undefined ;
54
- diameterRadioBg : number ;
55
53
diameterRadioBorder : number ;
56
54
style ?: CSSProperties ;
57
55
ariaLabel ?: string ;
@@ -68,13 +66,8 @@ function RadioButton({
68
66
aria-label = { ariaLabel }
69
67
data-checked = { selected }
70
68
data-disabled = { disabled }
71
- >
72
- < StyledSelectedInner
73
- $disabled = { disabled }
74
- $selected = { selected }
75
- $diameterRadioBg = { diameterRadioBg }
76
- />
77
- </ StyledRadioOuter >
69
+ $selected = { selected }
70
+ />
78
71
) ;
79
72
}
80
73
@@ -120,7 +113,6 @@ export const SessionRadio = (props: SessionRadioProps) => {
120
113
} ;
121
114
122
115
const diameterRadioBorder = 26 ;
123
- const diameterRadioBg = 20 ;
124
116
125
117
return (
126
118
< StyledContainer
@@ -156,7 +148,6 @@ export const SessionRadio = (props: SessionRadioProps) => {
156
148
disabled = { disabled }
157
149
dataTestId = { inputDataTestId }
158
150
diameterRadioBorder = { diameterRadioBorder }
159
- diameterRadioBg = { diameterRadioBg }
160
151
/>
161
152
</ Flex >
162
153
</ StyledContainer >
@@ -186,7 +177,6 @@ export const SessionRadioPrimaryColors = (props: {
186
177
187
178
// this component has no padding between the selected background and the border
188
179
const diameterRadioBorder = 26 ;
189
- const diameterRadioBg = 22 ;
190
180
191
181
const overriddenColorsVars = {
192
182
'--primary-color' : color ,
@@ -201,7 +191,6 @@ export const SessionRadioPrimaryColors = (props: {
201
191
disabled = { false }
202
192
dataTestId = { undefined }
203
193
diameterRadioBorder = { diameterRadioBorder }
204
- diameterRadioBg = { diameterRadioBg }
205
194
style = { overriddenColorsVars }
206
195
ariaLabel = { ariaLabel }
207
196
/>
0 commit comments