Skip to content

Commit 9d718ba

Browse files
committed
Convert ConfigElement to CSS modules
1 parent 0d2b0f8 commit 9d718ba

File tree

3 files changed

+75
-76
lines changed

3 files changed

+75
-76
lines changed

ui/frontend/ConfigElement.module.css

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
.container {
2+
display: flex;
3+
align-items: center;
4+
}
5+
6+
.name {
7+
flex: 1;
8+
font-size: 13px;
9+
}
10+
11+
.notDefault {
12+
composes: name;
13+
color: var(--header-tint);
14+
font-weight: 600;
15+
}
16+
17+
.value {
18+
flex: 1;
19+
}
20+
21+
.select {
22+
width: 100%;
23+
}
24+
25+
.toggle {
26+
display: flex;
27+
28+
& label {
29+
$border: 1px solid #bbb;
30+
31+
flex: 1;
32+
padding: 0 1em;
33+
border: $border;
34+
border-right-width: 0;
35+
border-bottom-left-radius: var(--header-border-radius);
36+
border-top-left-radius: var(--header-border-radius);
37+
color: #777;
38+
cursor: pointer;
39+
font-size: 11px;
40+
font-weight: 600;
41+
text-align: center;
42+
text-transform: uppercase;
43+
44+
& ~ label {
45+
border-right-width: 1px;
46+
border-left: $border;
47+
border-radius: 0 var(--header-border-radius) var(--header-border-radius) 0;
48+
}
49+
50+
&:hover {
51+
background: hsla(208, 100%, 43%, 0.1);
52+
}
53+
}
54+
55+
& input {
56+
display: none;
57+
58+
&:checked + label {
59+
border-color: var(--header-tint);
60+
background: var(--header-tint);
61+
color: #fff;
62+
63+
& ~ label {
64+
border-left-width: 0;
65+
}
66+
}
67+
}
68+
}

ui/frontend/ConfigElement.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import React from 'react';
22

33
import MenuItem from './MenuItem';
44

5+
import styles from './ConfigElement.module.css';
6+
57
interface EitherProps extends ConfigElementProps {
68
id: string;
79
a: string;
@@ -15,7 +17,7 @@ interface EitherProps extends ConfigElementProps {
1517
export const Either: React.SFC<EitherProps> =
1618
({ id, a, b, aLabel = a, bLabel = b, value, onChange, ...rest }) => (
1719
<ConfigElement {...rest}>
18-
<div className="config-element__toggle">
20+
<div className={styles.toggle}>
1921
<input id={`${id}-a`}
2022
name={id}
2123
value={a}
@@ -41,7 +43,7 @@ interface SelectProps extends ConfigElementProps {
4143

4244
export const Select: React.SFC<SelectProps> = ({ value, onChange, children, ...rest }) => (
4345
<ConfigElement {...rest}>
44-
<select className="config-element__select" value={value} onChange={e => onChange(e.target.value)}>
46+
<select className={styles.select} value={value} onChange={e => onChange(e.target.value)}>
4547
{children}
4648
</select>
4749
</ConfigElement>
@@ -54,9 +56,9 @@ interface ConfigElementProps {
5456

5557
const ConfigElement: React.SFC<ConfigElementProps> = ({ name, isNotDefault, children }) => (
5658
<MenuItem>
57-
<div className="config-element">
58-
<span className={`config-element__name ${isNotDefault ? 'config-element__name--not-default' : ''}`}>{name}</span>
59-
<div className="config-element__value">
59+
<div className={styles.container}>
60+
<span className={isNotDefault ? styles.notDefault : styles.name}>{name}</span>
61+
<div className={styles.value}>
6062
{children}
6163
</div>
6264
</div>

ui/frontend/index.scss

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -262,77 +262,6 @@ $header-transition: 0.2s ease-in-out;
262262
}
263263
}
264264

265-
.config-element {
266-
display: flex;
267-
align-items: center;
268-
269-
&__name {
270-
flex: 1;
271-
font-size: 13px;
272-
273-
&--not-default {
274-
font-weight: 600;
275-
color: $header-tint;
276-
}
277-
}
278-
279-
&__value {
280-
flex: 1;
281-
}
282-
283-
&__select {
284-
width: 100%;
285-
}
286-
287-
&__toggle {
288-
display: flex;
289-
290-
input {
291-
display: none;
292-
}
293-
294-
label {
295-
$border: 1px solid #bbb;
296-
297-
flex: 1;
298-
padding: 0 1em;
299-
300-
text-transform: uppercase;
301-
font-size: 11px;
302-
font-weight: 600;
303-
color: #777;
304-
text-align: center;
305-
306-
cursor: pointer;
307-
308-
border: $border;
309-
border-top-left-radius: $header-border-radius;
310-
border-bottom-left-radius: $header-border-radius;
311-
border-right-width: 0;
312-
313-
~ label {
314-
border-right-width: 1px;
315-
border-left: $border;
316-
border-radius: 0 $header-border-radius $header-border-radius 0;
317-
}
318-
319-
&:hover {
320-
background: hsla(208, 100%, 43%, 0.1);
321-
}
322-
}
323-
324-
:checked + label {
325-
border-color: $header-tint;
326-
background: $header-tint;
327-
color: #fff;
328-
329-
~ label {
330-
border-left-width: 0;
331-
}
332-
}
333-
}
334-
}
335-
336265
:root {
337266
--border-color: #{$border-color};
338267
--header-main-border: #{$header-main-border};

0 commit comments

Comments
 (0)