diff --git a/src/components/app/app.tsx b/src/components/app/app.tsx index 1cd3257..7842dcc 100644 --- a/src/components/app/app.tsx +++ b/src/components/app/app.tsx @@ -9,7 +9,8 @@ import { StoreConsumer } from '@/components/store-consumer'; import { Buttons } from '@/components/buttons'; import { Categories } from '@/components/categories'; import { ScrollToTop } from '@/components/scroll-to-top'; -import { Shuffle } from '@/components/shuffle'; +// import { Shuffle } from '@/components/shuffle'; +import { Menu } from '@/components/menu/menu'; import { SnackbarProvider } from '@/contexts/snackbar'; import { sounds } from '@/data/sounds'; @@ -60,7 +61,8 @@ export function App() { - + + {/* */} ); diff --git a/src/components/menu/index.ts b/src/components/menu/index.ts new file mode 100644 index 0000000..01435c7 --- /dev/null +++ b/src/components/menu/index.ts @@ -0,0 +1 @@ +export { Menu } from './menu'; diff --git a/src/components/menu/menu.module.css b/src/components/menu/menu.module.css new file mode 100644 index 0000000..53979f3 --- /dev/null +++ b/src/components/menu/menu.module.css @@ -0,0 +1,57 @@ +.wrapper { + position: fixed; + right: 20px; + bottom: 20px; + z-index: 5; + + & .menuButton { + display: flex; + align-items: center; + justify-content: center; + width: 45px; + height: 45px; + font-size: var(--font-md); + color: var(--color-foreground); + cursor: pointer; + background-color: var(--color-neutral-100); + border: 1px solid var(--color-neutral-300); + border-radius: 50%; + transition: 0.2s; + + &:hover { + background-color: var(--color-neutral-200); + } + } + + & .menu { + position: absolute; + right: 0; + bottom: calc(100% + 12px); + width: 200px; + padding: 4px; + background-color: var(--color-neutral-100); + border: 1px solid var(--color-neutral-200); + border-radius: 4px; + + & .menuItem { + position: flex; + align-items: center; + width: 100%; + padding: 12px 8px; + font-size: var(--font-sm); + font-weight: 500; + color: var(--color-foreground-subtle); + cursor: pointer; + background-color: transparent; + border: 1px solid var(--color-neutral-200); + border-radius: 4px; + outline: none; + transition: 0.2s; + + &:hover { + color: var(--color-foreground); + background-color: var(--color-neutral-200); + } + } + } +} diff --git a/src/components/menu/menu.tsx b/src/components/menu/menu.tsx new file mode 100644 index 0000000..11b2b57 --- /dev/null +++ b/src/components/menu/menu.tsx @@ -0,0 +1,34 @@ +import { useState } from 'react'; +import { IoMenu, IoClose } from 'react-icons/io5/index'; + +import { Tooltip } from '@/components/tooltip'; +import { useSoundStore } from '@/store'; + +import styles from './menu.module.css'; + +export function Menu() { + const [isOpen, setIsOpen] = useState(false); + + const shuffle = useSoundStore(state => state.shuffle); + + return ( +
+ + + + + {isOpen && ( +
+ +
+ )} +
+ ); +}