export const APP_FONT_SANS_CSS_VAR = "--font-sans"; export const DATA_GRID_FONT_FAMILY_CSS_VAR = "--dbx-data-grid-font-family"; export const DEFAULT_UI_FONT_FAMILY = `"Geist Variable", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", system-ui, sans-serif`; export const DEFAULT_DATA_GRID_FONT_FAMILY = `"Geist Variable Tabular", "Geist Variable", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif`; // Native-feeling UI option without DBX's bundled/brand font at the front of the stack. export const SYSTEM_UI_FONT_FAMILY = `system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`; export const FONT_FAMILIES: { value: string; label: string }[] = [ { value: "'Fira Code', 'Cascadia Code', 'Cascadia Mono', 'JetBrains Mono', monospace", label: "Fira Code" }, { value: "'JetBrains Mono', 'Fira Code', monospace", label: "JetBrains Mono" }, { value: "'Cascadia Code', 'Cascadia Mono', monospace", label: "Cascadia Code" }, { value: "'Source Code Pro', monospace", label: "Source Code Pro" }, { value: "'SF Mono', 'Menlo', monospace", label: "SF Mono / Menlo" }, { value: "'Consolas', 'Courier New', monospace", label: "Consolas" }, { value: "monospace", label: "System Monospace" }, ]; export function cssFontFamilyForName(name: string): string { return `'${name.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}', monospace`; } export function readableFontFamily(value: string): string { const firstFamily = value.split(",")[0]?.trim() ?? value; return firstFamily.replace(/^['"]|['"]$/g, "").replace(/\\'/g, "'"); } export function normalizeCustomFontFamilyInput(value: string): string { const trimmed = value.trim(); if (!trimmed) return ""; if (trimmed.includes(",") || trimmed.includes("'") || trimmed.includes('"')) return trimmed; return cssFontFamilyForName(trimmed); }