From 75d31bd23eec00d6c7ed87d56177bbf56414513c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Carri=C3=B3n?= Date: Wed, 25 Mar 2026 03:29:37 -0300 Subject: [PATCH 1/3] refactor: remove redundant code --- components/ui/ThemeToggle.tsx | 37 ++++++----------------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/components/ui/ThemeToggle.tsx b/components/ui/ThemeToggle.tsx index 3b6676f..561b2c2 100644 --- a/components/ui/ThemeToggle.tsx +++ b/components/ui/ThemeToggle.tsx @@ -1,42 +1,17 @@ "use client"; -import { useEffect, useState } from "react"; -import { Sun, Moon } from "lucide-react"; +import { Moon, Sun } from "lucide-react"; +import { useTheme } from "next-themes"; export function ThemeToggle() { - // 1. Initialize state properly to avoid cascading renders - const [dark, setDark] = useState(() => { - if (typeof window !== "undefined") { - return localStorage.getItem("theme") === "dark"; - } - return false; - }); - - // 2. Synchronize the HTML class with the state - useEffect(() => { - if (dark) { - document.documentElement.classList.add("dark"); - // eslint-disable-next-line react-hooks/set-state-in-effect - setDark(true); - } else { - document.documentElement.classList.remove("dark"); - } - }, [dark]); - - const toggleTheme = () => { - setDark((prev) => { - const newDark = !prev; - localStorage.setItem("theme", newDark ? "dark" : "light"); - return newDark; - }); - }; + const { theme, setTheme } = useTheme(); return ( ); -} \ No newline at end of file +} From d5f7b65c5bdbb9b2f8a0f9ee14bfc6e9d190674d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Carri=C3=B3n?= Date: Wed, 25 Mar 2026 03:30:10 -0300 Subject: [PATCH 2/3] feta: add theme provider to layout --- app/layout.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/layout.tsx b/app/layout.tsx index 2d44398..7c9ceeb 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -2,6 +2,7 @@ import React from "react" import type { Metadata } from 'next' import { Analytics } from '@vercel/analytics/next' import './globals.css' +import { ThemeProvider } from "@/components/theme-provider" export const metadata: Metadata = { title: 'TaskChain', @@ -32,10 +33,16 @@ export default function RootLayout({ children: React.ReactNode }>) { return ( - + - {children} - + + {children} + + ) From bbfbfbe2a135feb1347f28ebb81d930f3324a369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Carri=C3=B3n?= Date: Wed, 25 Mar 2026 03:31:46 -0300 Subject: [PATCH 3/3] feat: Add colors for WCAG --- app/globals.css | 2 +- components/how-it-works.tsx | 2 +- components/ui/button.tsx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/globals.css b/app/globals.css index 8484040..425d188 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,7 +1,7 @@ @import 'tailwindcss'; @import 'tw-animate-css'; -@custom-variant dark (&:is(.dark *)); +@custom-variant dark (&:where(.dark, .dark *)); :root { --background: oklch(0.98 0.01 260); diff --git a/components/how-it-works.tsx b/components/how-it-works.tsx index d545541..aee3f63 100644 --- a/components/how-it-works.tsx +++ b/components/how-it-works.tsx @@ -47,7 +47,7 @@ export function HowItWorks() {
-
+
{step.number}
diff --git a/components/ui/button.tsx b/components/ui/button.tsx index b5ea4ab..0ca3558 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -9,13 +9,13 @@ const buttonVariants = cva( { variants: { variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", + default: "bg-primary text-primary-foreground hover:bg-primary/85", destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", + "bg-secondary text-primary-foreground hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", link: "text-primary underline-offset-4 hover:underline",