| import React from "react"; | |
| import { Menu, Text, Flex, Badge } from "@mantine/core"; | |
| import { BsCheck2 } from "react-icons/bs"; | |
| import { MdSettings } from "react-icons/md"; | |
| import useConfig from "src/store/useConfig"; | |
| import * as Styles from "./styles"; | |
| export const OptionsMenu = () => { | |
| const toggleGestures = useConfig(state => state.toggleGestures); | |
| const toggleChildrenCount = useConfig(state => state.toggleChildrenCount); | |
| const toggleDarkMode = useConfig(state => state.toggleDarkMode); | |
| const toggleRulers = useConfig(state => state.toggleRulers); | |
| const toggleCollapseButton = useConfig(state => state.toggleCollapseButton); | |
| const toggleImagePreview = useConfig(state => state.toggleImagePreview); | |
| const toggleAI = useConfig(state => state.toggleAI); | |
| const gesturesEnabled = useConfig(state => state.gesturesEnabled); | |
| const childrenCountVisible = useConfig(state => state.childrenCountVisible); | |
| const darkmodeEnabled = useConfig(state => state.darkmodeEnabled); | |
| const rulersEnabled = useConfig(state => state.rulersEnabled); | |
| const collapseButtonVisible = useConfig(state => state.collapseButtonVisible); | |
| const imagePreviewEnabled = useConfig(state => state.imagePreviewEnabled); | |
| const aiEnabled = useConfig(state => state.aiEnabled); | |
| return ( | |
| <Menu shadow="md" trigger="click" closeOnItemClick={false} withArrow> | |
| <Menu.Target> | |
| <Styles.StyledToolElement> | |
| <Flex gap={4}> | |
| <MdSettings size="18" /> | |
| </Flex> | |
| </Styles.StyledToolElement> | |
| </Menu.Target> | |
| <Menu.Dropdown> | |
| <Menu.Item | |
| leftSection={<BsCheck2 opacity={rulersEnabled ? 100 : 0} />} | |
| onClick={() => toggleRulers(!rulersEnabled)} | |
| > | |
| <Text size="xs">Rulers</Text> | |
| </Menu.Item> | |
| <Menu.Item | |
| leftSection={<BsCheck2 opacity={gesturesEnabled ? 100 : 0} />} | |
| onClick={() => toggleGestures(!gesturesEnabled)} | |
| > | |
| <Text size="xs">Trackpad Gestures</Text> | |
| </Menu.Item> | |
| <Menu.Item | |
| leftSection={<BsCheck2 opacity={childrenCountVisible ? 100 : 0} />} | |
| onClick={() => toggleChildrenCount(!childrenCountVisible)} | |
| > | |
| <Text size="xs">Item Count</Text> | |
| </Menu.Item> | |
| <Menu.Item | |
| leftSection={<BsCheck2 opacity={imagePreviewEnabled ? 100 : 0} />} | |
| onClick={() => toggleImagePreview(!imagePreviewEnabled)} | |
| > | |
| <Text size="xs">Image Link Preview</Text> | |
| </Menu.Item> | |
| <Menu.Item | |
| leftSection={<BsCheck2 opacity={collapseButtonVisible ? 100 : 0} />} | |
| onClick={() => toggleCollapseButton(!collapseButtonVisible)} | |
| > | |
| <Text size="xs">Show Expand/Collapse</Text> | |
| </Menu.Item> | |
| <Menu.Item | |
| leftSection={<BsCheck2 opacity={darkmodeEnabled ? 100 : 0} />} | |
| onClick={() => toggleDarkMode(!darkmodeEnabled)} | |
| > | |
| <Text size="xs">Dark Mode</Text> | |
| </Menu.Item> | |
| <Menu.Item | |
| leftSection={<BsCheck2 opacity={aiEnabled ? 100 : 0} />} | |
| onClick={() => toggleAI(!aiEnabled)} | |
| > | |
| <Text size="xs"> | |
| JSON Crack AI{" "} | |
| <Badge ml={2} size="xs" variant="light" radius={2}> | |
| Alpha | |
| </Badge> | |
| </Text> | |
| </Menu.Item> | |
| </Menu.Dropdown> | |
| </Menu> | |
| ); | |
| }; | |