Przeglądaj źródła

删除next-theme

fogwind 1 tydzień temu
rodzic
commit
5247b77034

+ 0 - 1
package.json

@@ -38,7 +38,6 @@
     "lucide-react": "^0.563.0",
     "next": "16.2.3",
     "next-auth": "^4.24.13",
-    "next-themes": "^0.4.6",
     "react": "19.2.5",
     "react-dom": "19.2.5",
     "react-hook-form": "^7.66.1",

+ 0 - 14
pnpm-lock.yaml

@@ -93,9 +93,6 @@ importers:
       next-auth:
         specifier: ^4.24.13
         version: 4.24.13(next@16.2.3(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
-      next-themes:
-        specifier: ^0.4.6
-        version: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
       react:
         specifier: 19.2.5
         version: 19.2.5
@@ -2580,12 +2577,6 @@ packages:
       nodemailer:
         optional: true
 
-  next-themes@0.4.6:
-    resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
-    peerDependencies:
-      react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
-      react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
-
   next@16.2.3:
     resolution: {integrity: sha512-9V3zV4oZFza3PVev5/poB9g0dEafVcgNyQ8eTRop8GvxZjV2G15FC5ARuG1eFD42QgeYkzJBJzHghNP8Ad9xtA==}
     engines: {node: '>=20.9.0'}
@@ -6158,11 +6149,6 @@ snapshots:
       react-dom: 19.2.5(react@19.2.5)
       uuid: 8.3.2
 
-  next-themes@0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
-    dependencies:
-      react: 19.2.5
-      react-dom: 19.2.5(react@19.2.5)
-
   next@16.2.3(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
     dependencies:
       '@next/env': 16.2.3

+ 0 - 78
src/components/theme/theme-switch/ThemeSwitch.tsx

@@ -1,78 +0,0 @@
-"use client";
-
-import { FC } from "react";
-import { VisuallyHidden } from "@react-aria/visually-hidden";
-import { SwitchProps, useSwitch } from "@heroui/switch";
-import { useTheme } from "next-themes";
-import clsx from "clsx";
-import { MoonFilledIcon, SunFilledIcon } from "@/components/common/icons/product-icons";
-
-import { IconSkeleton } from "@/components/common/skeleton/IconSkeleton";
-
-export interface ThemeSwitchProps {
-  className?: string;
-  classNames?: SwitchProps["classNames"];
-}
-
-const ThemeSwitch: FC<ThemeSwitchProps> = ({ className, classNames }) => {
-  const { setTheme, resolvedTheme } = useTheme();
-
-  const isReady = resolvedTheme !== undefined;
-  const isDark = resolvedTheme === "dark";
-
-  const onChange = () => {
-    const newTheme = isDark ? "light" : "dark";
-    setTheme(newTheme);
-  };
-
-  const {
-    Component,
-    slots,
-    getBaseProps,
-    getInputProps,
-    getWrapperProps,
-  } = useSwitch({
-    isSelected: isDark,
-    "aria-label": `Switch to ${isDark ? "light" : "dark"} mode`,
-    onChange,
-  });
-
-  if (!isReady) {
-    return <IconSkeleton />;
-  }
-
-  return (
-    <Component
-      {...getBaseProps({
-        className: clsx(
-          "flex size-9 lg:size-11 max-w-auto cursor-pointer items-center justify-center rounded-sm border border-solid border-neutral-200 transition-opacity dark:border-neutral-700",
-          className,
-          classNames?.base
-        ),
-      })}
-    >
-      <VisuallyHidden>
-        <input {...getInputProps()} />
-      </VisuallyHidden>
-
-      <div
-        {...getWrapperProps()}
-        className={slots.wrapper({
-          class: clsx(
-            [
-              "mx-0 h-auto w-auto rounded-lg bg-transparent px-0 pt-px",
-              "flex items-center justify-center",
-              "group-data-[selected=true]:bg-transparent",
-              "fill-black/60 stroke-black/60 dark:stroke-white/60 dark:fill-white/60",
-            ],
-            classNames?.wrapper
-          ),
-        })}
-      >
-        {isDark ? <SunFilledIcon size={20} /> : <MoonFilledIcon size={20} />}
-      </div>
-    </Component>
-  );
-};
-
-export default ThemeSwitch;

+ 0 - 13
src/components/theme/theme-switch/index.tsx

@@ -1,13 +0,0 @@
-"use client";
-
-import dynamic from "next/dynamic";
-import { IconSkeleton } from "@/components/common/skeleton/IconSkeleton";
-
-const ThemeSwitcher = dynamic(() => import("./ThemeSwitch"), {
-  ssr: false,
-  loading: () => <IconSkeleton />,
-});
-
-export default function ThemeSwitcherWrapper() {
-  return <ThemeSwitcher />;
-}

+ 3 - 11
src/providers/ThemeProvider.tsx

@@ -1,15 +1,14 @@
 "use client";
 
-import type { ThemeProviderProps } from "next-themes";
+
 import * as React from "react";
 import { HeroUIProvider } from "@heroui/system";
 import { useRouter } from "next/navigation";
-import { ThemeProvider as NextThemesProvider } from "next-themes";
+
 
 
 export interface ProvidersProps {
   children: React.ReactNode;
-  themeProps?: ThemeProviderProps;
 }
 
 
@@ -22,18 +21,11 @@ declare module "@react-types/shared" {
 }
 
 
-export function ThemeProvider({ children, themeProps }: ProvidersProps) {
+export function ThemeProvider({ children }: ProvidersProps) {
   const router = useRouter();
   return (
     <HeroUIProvider navigate={router.push}>
-      <NextThemesProvider  
-        attribute="class"
-        defaultTheme='light'
-        enableSystem={false}
-        {...themeProps}
-      >
         {children}
-      </NextThemesProvider>
     </HeroUIProvider>
   );
 }