style: add icon to menu items

This commit is contained in:
MAZE 2024-01-03 20:01:58 +03:30
parent 0f62f0795c
commit 131ab29621
4 changed files with 22 additions and 7 deletions

View file

@ -1,11 +1,15 @@
.item { .item {
position: flex; display: flex;
column-gap: 8px;
align-items: center; align-items: center;
justify-content: flex-start;
width: 100%; width: 100%;
padding: 12px 8px; padding: 16px 12px;
font-size: var(--font-sm); font-size: var(--font-sm);
font-weight: 500; font-weight: 500;
line-height: 1;
color: var(--color-foreground-subtle); color: var(--color-foreground-subtle);
text-align: left;
cursor: pointer; cursor: pointer;
background-color: transparent; background-color: transparent;
border: 1px solid var(--color-neutral-200); border: 1px solid var(--color-neutral-200);
@ -17,4 +21,8 @@
color: var(--color-foreground); color: var(--color-foreground);
background-color: var(--color-neutral-200); background-color: var(--color-neutral-200);
} }
& .icon {
color: var(--color-foreground);
}
} }

View file

@ -1,14 +1,15 @@
import styles from './item.module.css'; import styles from './item.module.css';
interface ItemProps { interface ItemProps {
children: React.ReactNode; icon: React.ReactElement;
label: string;
onClick: () => void; onClick: () => void;
} }
export function Item({ children, onClick }: ItemProps) { export function Item({ icon, label, onClick }: ItemProps) {
return ( return (
<button className={styles.item} onClick={onClick}> <button className={styles.item} onClick={onClick}>
{children} <span className={styles.icon}>{icon}</span> {label}
</button> </button>
); );
} }

View file

@ -1,3 +1,5 @@
import { IoShareSocialSharp } from 'react-icons/io5/index';
import { Item } from '../item'; import { Item } from '../item';
interface ShareProps { interface ShareProps {
@ -5,5 +7,7 @@ interface ShareProps {
} }
export function Share({ open }: ShareProps) { export function Share({ open }: ShareProps) {
return <Item onClick={open}>Share Sounds</Item>; return (
<Item icon={<IoShareSocialSharp />} label="Share Sounds" onClick={open} />
);
} }

View file

@ -1,3 +1,5 @@
import { BiShuffle } from 'react-icons/bi/index';
import { useSoundStore } from '@/store'; import { useSoundStore } from '@/store';
import { Item } from '../item'; import { Item } from '../item';
@ -5,5 +7,5 @@ import { Item } from '../item';
export function Shuffle() { export function Shuffle() {
const shuffle = useSoundStore(state => state.shuffle); const shuffle = useSoundStore(state => state.shuffle);
return <Item onClick={shuffle}>Shuffle Sounds</Item>; return <Item icon={<BiShuffle />} label="Shuffle Sounds" onClick={shuffle} />;
} }