- Introduced a new server package with Fastify for handling API requests and workflows. - Implemented user authentication and authorization with JWT and cookie management. - Added endpoints for managing workflows, runs, and user accounts. - Established a dashboard for monitoring workflow status and statistics. - Included a script sandbox for executing user-defined scripts securely. - Updated README with setup instructions and API documentation. - Configured database migrations for user management. - Enhanced logging capabilities for better traceability.
28 lines
741 B
React
28 lines
741 B
React
import { createContext, useContext, useEffect, useState } from "react";
|
|
|
|
const ThemeContext = createContext(null);
|
|
|
|
export function ThemeProvider({ children }) {
|
|
const [theme, setTheme] = useState(() => {
|
|
if (typeof localStorage === "undefined") return "light";
|
|
return localStorage.getItem("theme") || "light";
|
|
});
|
|
|
|
useEffect(() => {
|
|
document.documentElement.setAttribute("data-theme", theme);
|
|
localStorage.setItem("theme", theme);
|
|
}, [theme]);
|
|
|
|
const toggle = () => setTheme((t) => (t === "dark" ? "light" : "dark"));
|
|
|
|
return (
|
|
<ThemeContext.Provider value={{ theme, setTheme, toggle }}>
|
|
{children}
|
|
</ThemeContext.Provider>
|
|
);
|
|
}
|
|
|
|
export function useTheme() {
|
|
return useContext(ThemeContext);
|
|
}
|