@revenuecat/purchases-ui-js
Version:
Web components for Paywalls. Powered by RevenueCat
18 lines (17 loc) • 748 B
JavaScript
import { readable } from "svelte/store";
// Create a readable store that updates when the system theme changes
export const prefersDarkMode = readable(false, (set) => {
// Check if window is defined (client-side)
if (typeof window !== "undefined") {
// Set initial value
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
set(mediaQuery.matches);
// Update value when system preference changes
const handler = (e) => set(e.matches);
mediaQuery.addEventListener("change", handler);
// Cleanup when store is destroyed
return () => mediaQuery.removeEventListener("change", handler);
}
// Return empty cleanup function for SSR
return () => { };
});