import { Label, Listbox, ListboxButton, ListboxOption, ListboxOptions } from "@headlessui/react"; import React, { useEffect, useState } from "react"; import { useTheme } from "@/hooks/useTheme"; import clsx from "clsx"; const themes = [ { name: "Clair", value: "light", icon: LightIcon }, { name: "Sombre", value: "dark", icon: DarkIcon }, ]; function LightIcon(props: React.ComponentPropsWithoutRef<"svg">) { return ( ); } function DarkIcon(props: React.ComponentPropsWithoutRef<"svg">) { return ( ); } export function ThemeSelector(props: React.ComponentPropsWithoutRef>) { const [mounted, setMounted] = useState(false); const { theme, setTheme } = useTheme(); useEffect(() => { setMounted(true); }, []); if (!mounted) { return
; } return ( {themes.map((theme) => ( clsx("flex cursor-pointer items-center rounded-[0.625rem] p-1 select-none", { "text-violet-500": selected, "text-slate-900 dark:text-white": focus && !selected, "text-slate-700 dark:text-slate-400": !focus && !selected, "bg-slate-100 dark:bg-slate-900/40": focus, }) } > {({ selected }) => ( <>
{theme.name}
)}
))}
); }