Skip to content

Commit 15e5399

Browse files
committed
Convert SelectableMenuItem to CSS modules
1 parent c06f375 commit 15e5399

File tree

3 files changed

+49
-61
lines changed

3 files changed

+49
-61
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
.container {
2+
composes: -menuItemFullButton from './shared.module.css';
3+
4+
&:hover {
5+
color: var(--header-tint);
6+
}
7+
}
8+
9+
.selected {
10+
composes: container;
11+
color: var(--header-tint);
12+
font-weight: 600;
13+
}
14+
15+
.header {
16+
display: flex;
17+
align-items: center;
18+
}
19+
20+
.name {
21+
composes: -menuItemTitle from './shared.module.css';
22+
}
23+
24+
.description {
25+
padding-left: 2em;
26+
}
27+
28+
.checkmark {
29+
margin-right: 0.5em;
30+
opacity: 0;
31+
transition: opacity 0.15s ease-in-out;
32+
}
33+
34+
.selected .checkmark,
35+
.selected:hover .checkmark {
36+
opacity: 1;
37+
}
38+
39+
.container:hover .checkmark {
40+
color: var(--header-tint);
41+
opacity: 0.5;
42+
}

ui/frontend/SelectableMenuItem.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import React from 'react';
33
import { CheckmarkIcon } from './Icon';
44
import MenuItem from './MenuItem';
55

6+
import styles from './SelectableMenuItem.module.css';
7+
68
type Button = JSX.IntrinsicElements['button'];
79

810
interface SelectableMenuItemProps extends Button {
@@ -12,14 +14,14 @@ interface SelectableMenuItemProps extends Button {
1214

1315
const SelectableMenuItem: React.SFC<SelectableMenuItemProps> = ({ name, selected, children, ...props }) => (
1416
<MenuItem>
15-
<button className={`selectable-item ${selected ? 'selectable-item--selected' : ''}`} {...props}>
16-
<div className="selectable-item__header">
17-
<span className="selectable-item__checkmark">
17+
<button className={selected ? styles.selected : styles.container} {...props}>
18+
<div className={styles.header}>
19+
<span className={styles.checkmark}>
1820
<CheckmarkIcon />
1921
</span>
20-
<span className="selectable-item__name">{name}</span>
22+
<span className={styles.name}>{name}</span>
2123
</div>
22-
<div className="selectable-item__description">{children}</div>
24+
<div className={styles.description}>{children}</div>
2325
</button>
2426
</MenuItem>
2527
);

ui/frontend/index.scss

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -356,62 +356,6 @@ $header-transition: 0.2s ease-in-out;
356356
}
357357
}
358358

359-
@mixin menu-item-title {
360-
font-size: 13px;
361-
font-weight: 600;
362-
}
363-
364-
@mixin full-menu-button {
365-
@include button-reset;
366-
367-
width: 100%;
368-
transition: color $header-transition;
369-
user-select: text;
370-
}
371-
372-
.selectable-item {
373-
@include full-menu-button;
374-
375-
&__header {
376-
display: flex;
377-
align-items: center;
378-
}
379-
380-
&__name {
381-
@include menu-item-title;
382-
}
383-
384-
&__description {
385-
padding-left: 2em;
386-
}
387-
388-
&:hover {
389-
color: $header-tint;
390-
}
391-
392-
&--selected {
393-
font-weight: 600;
394-
color: $header-tint;
395-
}
396-
397-
&__checkmark {
398-
margin-right: 0.5em;
399-
400-
opacity: 0;
401-
transition: opacity 0.15s ease-in-out;
402-
}
403-
404-
&:hover &__checkmark {
405-
opacity: 0.5;
406-
color: $header-tint;
407-
}
408-
409-
&--selected &__checkmark,
410-
&--selected:hover &__checkmark {
411-
opacity: 1;
412-
}
413-
}
414-
415359
.config-element {
416360
display: flex;
417361
align-items: center;

0 commit comments

Comments
 (0)