import "@tanstack/react-start/server-only" import { getCookie, setCookie } from "@tanstack/react-start/server" import { type UiState, type UiStateKey, uiStateDefinitions, } from "@workspace/blocks/appearance" const LEGACY_THEME_COOKIE = "simple-shop-admin-theme" export function readUiState(): UiState { return { "main-compacted": uiStateDefinitions["main-compacted"].parse( getCookie(uiStateDefinitions["main-compacted"].cookie) ), "sidebar-collapsed": uiStateDefinitions["sidebar-collapsed"].parse( getCookie(uiStateDefinitions["sidebar-collapsed"].cookie) ), "theme-mode": uiStateDefinitions["theme-mode"].parse( getCookie(uiStateDefinitions["theme-mode"].cookie) ?? getCookie(LEGACY_THEME_COOKIE) ), "theme-light": uiStateDefinitions["theme-light"].parse( getCookie(uiStateDefinitions["theme-light"].cookie) ), "theme-dark": uiStateDefinitions["theme-dark"].parse( getCookie(uiStateDefinitions["theme-dark"].cookie) ), } } export function writeUiState(key: K, value: UiState[K]) { const definition = uiStateDefinitions[key] setCookie(definition.cookie, definition.serialize(value), { path: "/", sameSite: "lax", maxAge: 60 * 60 * 24 * 365, }) }