import React, { useEffect, useState } from "react"; import { useTheme } from "next-themes"; import { useForm } from "react-hook-form"; // ui import { PrimaryButton } from "components/ui"; import { ColorPickerInput } from "components/core"; // types import { ICustomTheme } from "types"; // mobx react lite import { observer } from "mobx-react-lite"; // mobx store import { useMobxStore } from "lib/mobx/store-provider"; type Props = { preLoadedData?: Partial | null; }; const defaultValues: ICustomTheme = { background: "#0d101b", text: "#c5c5c5", primary: "#3f76ff", sidebarBackground: "#0d101b", sidebarText: "#c5c5c5", darkPalette: false, palette: "", theme: "custom", }; export const CustomThemeSelector: React.FC = observer(({ preLoadedData }) => { const store: any = useMobxStore(); const { setTheme } = useTheme(); const [darkPalette, setDarkPalette] = useState(false); const { register, formState: { errors, isSubmitting }, handleSubmit, watch, setValue, reset, } = useForm({ defaultValues, }); useEffect(() => { reset({ ...defaultValues, ...preLoadedData, }); }, [preLoadedData, reset]); const handleUpdateTheme = async (formData: any) => { const payload: ICustomTheme = { background: formData.background, text: formData.text, primary: formData.primary, sidebarBackground: formData.sidebarBackground, sidebarText: formData.sidebarText, darkPalette: darkPalette, palette: `${formData.background},${formData.text},${formData.primary},${formData.sidebarBackground},${formData.sidebarText}`, theme: "custom", }; setTheme("custom"); return store.user .updateCurrentUserSettings({ theme: payload }) .then((response: any) => response) .catch((error: any) => error); }; return (

Customize your theme

Background color

Text color

Primary(Theme) color

Sidebar background color

Sidebar text color

{isSubmitting ? "Creating Theme..." : "Set Theme"}
); });