Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
909 B ยท 26 lines
TypeScript
123456789101112131415161718192021222324252627import { type Theme, parseThemeInput } from "@openstatus/theme-store";
/** Set by the explorer, read by `FloatingTheme` to preview a builder theme on `/status`. */export const THEME_DRAFT_STORAGE_KEY = "community-theme-draft";
export function saveThemeDraft(theme: Theme) { sessionStorage.setItem(THEME_DRAFT_STORAGE_KEY, JSON.stringify(theme));}
export function clearThemeDraft() { sessionStorage.removeItem(THEME_DRAFT_STORAGE_KEY);}
/** Re-validates on read so a hand-edited storage entry can't inject styles. */export function readThemeDraft(): Theme | null { const raw = sessionStorage.getItem(THEME_DRAFT_STORAGE_KEY); if (!raw) return null; const result = parseThemeInput(raw); if (!result.ok) return null; return { id: result.info.id ?? "draft", name: result.info.name ?? "Draft", author: result.info.author ?? { name: "", url: "" }, ...result.definition, };}