diff --git a/eslint.config.mjs b/eslint.config.mjs index c85fb67..d8ee553 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -6,11 +6,16 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const compat = new FlatCompat({ - baseDirectory: __dirname, + baseDirectory: __dirname, }); const eslintConfig = [ - ...compat.extends("next/core-web-vitals", "next/typescript"), + ...compat.extends("next/core-web-vitals", "next/typescript"), + { + rules: { + 'react-hooks/exhaustive-deps': 'off' + } + } ]; export default eslintConfig; diff --git a/package-lock.json b/package-lock.json index 64ad011..7e9bd5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "clipfusion-community", + "name": "clipfusion-editor", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "clipfusion-community", + "name": "clipfusion-editor", "version": "1.0.0", "dependencies": { "@hookform/resolvers": "^5.1.1", diff --git a/package.json b/package.json index 5154f33..12e39a6 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "clipfusion-community", + "name": "clipfusion-editor", "version": "1.0.0", "private": true, "scripts": { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 223ff74..f4d9af5 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,11 +1,10 @@ import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import { ReactNode } from "react"; -import { ThemeProvider } from "next-themes"; import { SidebarProvider } from "@/components/ui/sidebar"; import Dashboard from "@/components/dashboard"; import "./globals.css"; -import Providers from "./providers"; +import ThemeProvider from "./theme-provider"; const geist = Geist({ variable: "--font-geist", @@ -32,14 +31,14 @@ export default function RootLayout({ - +
{children}
-
+ ); diff --git a/src/app/providers.tsx b/src/app/providers.tsx deleted file mode 100644 index 43d017e..0000000 --- a/src/app/providers.tsx +++ /dev/null @@ -1,17 +0,0 @@ -"use client"; -import { ThemeProvider } from "next-themes"; -import { ReactNode } from "react"; - -const Providers = ({ - children -}: { - children: ReactNode -}): ReactNode => { - return ( - - {children} - - ) -}; - -export default Providers; \ No newline at end of file diff --git a/src/app/theme-provider.tsx b/src/app/theme-provider.tsx new file mode 100644 index 0000000..4af23e7 --- /dev/null +++ b/src/app/theme-provider.tsx @@ -0,0 +1,13 @@ +"use client"; +import { ThemeProvider as NextThemeProvider } from "next-themes"; +import { ComponentProps, ReactNode } from "react"; + +const ThemeProvider = (props: ComponentProps): ReactNode => { + return ( + + {props.children} + + ) +}; + +export default ThemeProvider; \ No newline at end of file diff --git a/src/components/dashboard/Dashboard.tsx b/src/components/dashboard/Dashboard.tsx index 4bd7bdc..7566d7a 100644 --- a/src/components/dashboard/Dashboard.tsx +++ b/src/components/dashboard/Dashboard.tsx @@ -1,19 +1,12 @@ "use client"; -import { FolderOpenIcon, HomeIcon, LucideIcon, PlusIcon, SettingsIcon } from "lucide-react"; -import { useTheme } from "next-themes"; -import { ReactNode, useState, useCallback, useEffect } from "react"; -import { SidebarMenuItem, SidebarMenuButton, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarHeader, SidebarSeparator, SidebarFooter, Sidebar, SidebarGroupLabel, SidebarGroupAction } from "../ui/sidebar"; +import { FolderOpenIcon, LucideIcon, PlusIcon, SettingsIcon } from "lucide-react"; +import { ReactNode } from "react"; +import { SidebarMenuItem, SidebarMenuButton, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarHeader, SidebarFooter, Sidebar, SidebarGroupLabel, SidebarGroupAction } from "../ui/sidebar"; import Link from "next/link"; -import Image from "next/image"; -import { Switch } from "../ui/switch"; import { Label } from "../ui/label"; import ClipFusionLogo from "../clipfusion-logo"; -import { Input } from "../ui/input"; -import Search from "../search"; import ThemeSwitcher from "../theme-switcher"; -const WHITESPACE_REGEX = /\s+/g; - interface DashboardItem { title: string; icon: LucideIcon; @@ -35,18 +28,6 @@ const items: DashboardItem[] = [ export const Dashboard = (): ReactNode => { - const { theme, setTheme } = useTheme(); - const [darkModeChecked, setDarkModeChecked] = useState(false); - - const darkModeCallback = useCallback((checked: boolean) => { - setTheme(checked ? "dark" : "light"); - setDarkModeChecked(checked); - }, []); - - useEffect(() => { - setDarkModeChecked(theme == "dark"); - }, []); - return ( diff --git a/src/components/theme-switcher/ThemeSwitcher.tsx b/src/components/theme-switcher/ThemeSwitcher.tsx index f08f8f3..1e38286 100644 --- a/src/components/theme-switcher/ThemeSwitcher.tsx +++ b/src/components/theme-switcher/ThemeSwitcher.tsx @@ -15,11 +15,11 @@ export const ThemeSwitcher = ({ const onThemeChange = useCallback(() => { setTheme(theme == "dark" ? "light" : "dark"); setDark(!dark); - }, [theme, dark]); + }, [theme, dark, setTheme]); useEffect(() => { setDark(theme == "dark"); - }, []); + }); return ( diff --git a/src/components/ui/sidebar.tsx b/src/components/ui/sidebar.tsx index 61805aa..9024b66 100644 --- a/src/components/ui/sidebar.tsx +++ b/src/components/ui/sidebar.tsx @@ -3,7 +3,7 @@ import * as React from "react" import { Slot } from "@radix-ui/react-slot" import { cva, VariantProps } from "class-variance-authority" -import { PanelLeftCloseIcon, PanelLeftIcon, PanelLeftOpenIcon } from "lucide-react" +import { PanelLeftCloseIcon, PanelLeftOpenIcon } from "lucide-react" import { useIsMobile } from "@/hooks/use-mobile" import { cn } from "@/lib/utils"