Restructure blogs as Astro monorepo
Some checks are pending
Build / build (push) Waiting to run

This commit is contained in:
Neeldhara Misra 2026-06-13 21:15:16 +02:00
parent fb5a3b8093
commit 58d8b661a8
1055 changed files with 116254 additions and 89 deletions

View file

@ -0,0 +1,22 @@
import { type ComponentProps } from "react";
import { cn } from "@/lib/utils";
type HeaderLinkProps = ComponentProps<"a">;
export default function HeaderLink({
className,
children,
...props
}: HeaderLinkProps) {
return (
<a
{...props}
className={cn(
"inline-block text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-200",
className,
)}
>
{children}
</a>
);
}

View file

@ -0,0 +1,44 @@
import { Moon, Sun } from "lucide-react";
import { useEffect, useState } from "react";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
const ThemeToggle = ({ className }: { className?: string }) => {
const [theme, setTheme] = useState<"light" | "dark">("light");
useEffect(() => {
// Get initial theme from localStorage or system preference
const savedTheme = localStorage.getItem("theme");
const systemTheme = window.matchMedia("(prefers-color-scheme: dark)")
.matches
? "dark"
: "light";
const initialTheme = savedTheme || systemTheme;
setTheme(initialTheme as "light" | "dark");
document.documentElement.classList.toggle("dark", initialTheme === "dark");
}, []);
const toggleTheme = () => {
const newTheme = theme === "light" ? "dark" : "light";
setTheme(newTheme);
document.documentElement.classList.toggle("dark");
localStorage.setItem("theme", newTheme);
};
return (
<Button
variant="outline"
size="icon"
className={cn("size-8", className)}
onClick={toggleTheme}
>
<Sun className="size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
<Moon className="absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
<span className="sr-only">Toggle theme</span>
</Button>
);
};
export { ThemeToggle };