{
@@ -147,7 +147,7 @@ const displayMode = p.display ?? "text";
{p.description}
diff --git a/src/components/ThemeSwitcher.astro b/src/components/ThemeSwitcher.astro
index 43fa9e4..167764c 100644
--- a/src/components/ThemeSwitcher.astro
+++ b/src/components/ThemeSwitcher.astro
@@ -1,198 +1,158 @@
---
import type { HTMLAttributes } from "astro/types";
+import Dropdown from "./Dropdown.astro";
import { Icon } from "astro-icon/components";
interface Props extends HTMLAttributes<"div"> {
storageKey?: string;
- rootSelector?: string; // where to toggle theme, e.g. "html"
- compact?: boolean; // smaller trigger button
- darkBgClass?: string[]; // non–pure-black dark background class
- lightBgClass?: string[]; // light background class
- rootExtraClass?: string; // always-on root class (optional)
- showLabel?: boolean; // show text next to icon in trigger
+ rootSelector?: string;
+ compact?: boolean;
+ showLabel?: boolean;
+ darkBgClass?: string[];
+ lightBgClass?: string[];
+ rootExtraClass?: string;
}
const {
storageKey = "wr-theme",
rootSelector = "html",
compact = false,
- darkBgClass = ["wr-theme-dark-soft"],
- lightBgClass = ["wr-theme-light"],
- rootExtraClass = "",
showLabel = false,
+ darkBgClass = [],
+ lightBgClass = [],
+ rootExtraClass = "",
class: className,
...rest
}: Props = Astro.props;
-const iconBtn =
- "wr:py-3 wr:px-4 wr:inline-flex wr:items-center wr:gap-x-2 wr:text-sm wr:font-medium wr:rounded-lg wr:border wr:border-gray-200 wr:bg-white wr:text-gray-800 wr:shadow-2xs wr:hover:bg-gray-50 wr:focus:outline-hidden wr:focus:bg-gray-50 wr:disabled:opacity-50 wr:disabled:pointer-events-none wr:dark:bg-neutral-800 wr:dark:border-neutral-700 wr:dark:text-white wr:dark:hover:bg-neutral-700 wr:dark:focus:bg-neutral-700";
-
-const menuBtn =
- "wr:py-3 wr:px-4 wr:inline-flex wr:items-center wr:gap-x-2 wr:text-sm wr:font-medium wr:rounded-lg wr:border wr:border-gray-200 wr:bg-white wr:text-gray-800 wr:shadow-2xs wr:hover:bg-gray-50 wr:focus:outline-hidden wr:focus:bg-gray-50 wr:disabled:opacity-50 wr:disabled:pointer-events-none wr:dark:bg-neutral-800 wr:dark:border-neutral-700 wr:dark:text-white wr:dark:hover:bg-neutral-700 wr:dark:focus:bg-neutral-700";
-
+const containerId = `ts-${Math.random().toString(36).slice(2)}`;
+const icon = "wr:size-4";
const item =
"wr:flex wr:items-center wr:gap-3 wr:w-full wr:px-3 wr:py-2.5 wr:rounded-lg wr:text-sm wr:hover:bg-muted/70 wr:transition wr:duration-150";
-
-const icon = "wr:size-4";
const checkBase = "wr:size-4 wr:opacity-0 wr:scale-90 wr:transition";
-const containerId = `ts-${Math.random().toString(36).slice(2)}`;
---
-
-
-