From 99bfd58c494a7b28e75f20f5470cfe2cb424daff Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Thu, 26 Dec 2024 22:14:57 +0000 Subject: [PATCH] feat: toggle tool settings --- src/components/menubar/ViewMenu.tsx | 11 +++++++ src/components/tool-settings/index.tsx | 42 +++++++++++++++++++------- src/context/Settings.tsx | 3 ++ src/types.d.ts | 4 ++- 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/src/components/menubar/ViewMenu.tsx b/src/components/menubar/ViewMenu.tsx index 9d17656..dddc836 100644 --- a/src/components/menubar/ViewMenu.tsx +++ b/src/components/menubar/ViewMenu.tsx @@ -24,6 +24,17 @@ function ViewMenu() { Canvas Border + + + + Color Picker + + + Radius Changer + + + Block Selector + ); diff --git a/src/components/tool-settings/index.tsx b/src/components/tool-settings/index.tsx index 7cb82f5..7882d6d 100644 --- a/src/components/tool-settings/index.tsx +++ b/src/components/tool-settings/index.tsx @@ -1,4 +1,6 @@ -import { useEffect, useRef, useState } from "react"; +import { useContext, useEffect, useRef, useState } from "react"; + +import { SettingsContext } from "@/context/Settings"; import { Input } from "@/components/ui/input"; import { Separator } from "@/components/ui/separator"; @@ -8,6 +10,8 @@ import Radius from "./Radius"; import SelectorBlocks from "./SelectorBlocks"; function ToolSettings() { + const { settings } = useContext(SettingsContext); + const divRef = useRef(null); const [stageWidth, setStageWidth] = useState(0); const [searchInput, setSearchInput] = useState(""); @@ -19,18 +23,34 @@ function ToolSettings() { }, []); return ( -
- - + <> + {(settings.colorPicker || settings.radiusChanger || settings.blockSelector) && ( +
+ {settings.colorPicker && ( + <> + + + + )} - - + {settings.radiusChanger && ( + <> + + + + )} - setSearchInput(e.target.value)} /> -
- -
-
+ {settings.blockSelector && ( + <> + setSearchInput(e.target.value)} /> +
+ +
+ + )} +
+ )} + ); } diff --git a/src/context/Settings.tsx b/src/context/Settings.tsx index a8c304d..a8d9afb 100644 --- a/src/context/Settings.tsx +++ b/src/context/Settings.tsx @@ -7,6 +7,9 @@ interface Props { const defaultSettings: Settings = { grid: true, canvasBorder: false, + colorPicker: false, + radiusChanger: true, + blockSelector: true, }; export const SettingsContext = createContext({ diff --git a/src/types.d.ts b/src/types.d.ts index f80f98a..cab4479 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -24,9 +24,11 @@ interface Block extends Position { type Tool = "hand" | "pencil" | "eraser" | "eyedropper" | "zoom"; interface Settings { - blockSelectorWindow: boolean; grid: boolean; canvasBorder: boolean; + colorPicker: boolean; + radiusChanger: boolean; + blockSelector: boolean; } interface DialogProps {