useThemeChange

Hook for changing daisyUI themes dynamically.

Import

import { useThemeChange } from "amvasdev-ui";

Signature

useThemeChange(): { changeTheme }

Returns

{ changeTheme: (theme: string) => void }

Object containing the changeTheme function

Live Demo

Current Theme: light

light
dark
cupcake
emerald
dracula
winter
night
halloween
autumn
business
nord
dim
lemonade
sunset
valentine

Examples

Theme Selector

import { useThemeChange } from "amvasdev-ui";

function ThemeSelector() {
  const { changeTheme } = useThemeChange();

  return (
    <select onChange={(e) => changeTheme(e.target.value)}>
      <option value="light">Light</option>
      <option value="dark">Dark</option>
      <option value="emerald">Emerald</option>
      <option value="dracula">Dracula</option>
      <option value="winter">Winter</option>
      <option value="night">Night</option>
      <option value="halloween">Halloween</option>
      <option value="autumn">Autumn</option>
      <option value="business">Business</option>
      <option value="nord">Nord</option>
      <option value="dim">Dim</option>
      <option value="lemonade">Lemonade</option>
      <option value="sunset">Sunset</option>
      <option value="valentine">Valentine</option>
    </select>
  );
}

With ColorPalette Component

import { ColorPalette, useThemeChange } from "amvasdev-ui";
import { useState } from "react";

function ThemeSelector() {
  const { changeTheme } = useThemeChange();
  const [currentTheme, setCurrentTheme] = useState("light");

  const handleThemeChange = (theme) => {
    changeTheme(theme);
    setCurrentTheme(theme);
  };

  const themes = ["light", "dark", "cupcake", "emerald", "dracula"];

  return (
    <div className="flex flex-col gap-2">
      {themes.map((theme) => (
        <ColorPalette
          key={theme}
          theme={theme}
          isSelected={currentTheme === theme}
          onClick={() => handleThemeChange(theme)}
          className="cursor-pointer"
        />
      ))}
    </div>
  );
}

Notes

  • Supports all daisyUI themes
  • Theme changes persist in the DOM data-theme attribute