SPB Git
1.3 KB · 18 lines typescript
1"use client";2/** User preferences stored in users.preferences and mirrored in localStorage so they apply before the first fetch. */3export interface Prefs { density?: "compact" | "comfortable"; editorFont?: "sans" | "serif"; defaultSection?: "notes" | "documents" | "projects" | "research"; aiDefaultTask?: string; aiAlwaysCite?: boolean }4const KEY = "note-prefs";5export function readLocalPrefs(): Prefs { try { return JSON.parse(localStorage.getItem(KEY) ?? "{}"); } catch { return {}; } }6/** Apply density + editor font to the document (root font-size and an injected style for the editor). */7export function applyPrefs(p: Prefs) {8  if (typeof document === "undefined") return;9  const merged = { ...readLocalPrefs(), ...p }; localStorage.setItem(KEY, JSON.stringify(merged));10  const root = document.documentElement;11  root.dataset.density = merged.density ?? "comfortable";12  root.style.fontSize = merged.density === "compact" ? "15px" : "";13  root.dataset.editorFont = merged.editorFont ?? "sans";14  let st = document.getElementById("note-prefs-style") as HTMLStyleElement | null;15  if (!st) { st = document.createElement("style"); st.id = "note-prefs-style"; document.head.appendChild(st); }16  st.textContent = merged.editorFont === "serif" ? `.note-editor .ProseMirror { font-family: var(--font-serif); }` : "";17}18
Files · main
Menu

Theme