diff --git a/understand-anything-plugin/packages/dashboard/src/App.tsx b/understand-anything-plugin/packages/dashboard/src/App.tsx index f169f62..8abc0e8 100644 --- a/understand-anything-plugin/packages/dashboard/src/App.tsx +++ b/understand-anything-plugin/packages/dashboard/src/App.tsx @@ -401,7 +401,7 @@ function Dashboard({ accessToken }: { accessToken: string }) {
{/* Left — fixed */}
-

+

{graph?.project.name ?? "Understand Anything"}

diff --git a/understand-anything-plugin/packages/dashboard/src/components/CodeViewer.tsx b/understand-anything-plugin/packages/dashboard/src/components/CodeViewer.tsx index 4d8b018..66ad67c 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/CodeViewer.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/CodeViewer.tsx @@ -155,7 +155,7 @@ export default function CodeViewer({ {lineInfo}
-
+
{node.name}
{node.filePath && ( diff --git a/understand-anything-plugin/packages/dashboard/src/components/ContainerNode.tsx b/understand-anything-plugin/packages/dashboard/src/components/ContainerNode.tsx index 941e5e4..e0d4f1c 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/ContainerNode.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/ContainerNode.tsx @@ -59,7 +59,7 @@ function ContainerNodeComponent({ data, width, height }: NodeProps
-
+
{truncatedName}
diff --git a/understand-anything-plugin/packages/dashboard/src/components/DomainClusterNode.tsx b/understand-anything-plugin/packages/dashboard/src/components/DomainClusterNode.tsx index 317cbfc..57468ba 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/DomainClusterNode.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/DomainClusterNode.tsx @@ -33,7 +33,7 @@ function DomainClusterNode({ data }: NodeProps) { -
+
{data.label}
diff --git a/understand-anything-plugin/packages/dashboard/src/components/KeyboardShortcutsHelp.tsx b/understand-anything-plugin/packages/dashboard/src/components/KeyboardShortcutsHelp.tsx index c9fcd1f..b05c65e 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/KeyboardShortcutsHelp.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/KeyboardShortcutsHelp.tsx @@ -31,7 +31,7 @@ export default function KeyboardShortcutsHelp({ {/* Header */}
-

+

Keyboard Shortcuts

diff --git a/understand-anything-plugin/packages/dashboard/src/components/LayerClusterNode.tsx b/understand-anything-plugin/packages/dashboard/src/components/LayerClusterNode.tsx index c63cad9..f7c51ec 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/LayerClusterNode.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/LayerClusterNode.tsx @@ -72,7 +72,7 @@ function LayerClusterNode({

{/* Layer name */} -
+
{data.layerName}
diff --git a/understand-anything-plugin/packages/dashboard/src/components/LearnPanel.tsx b/understand-anything-plugin/packages/dashboard/src/components/LearnPanel.tsx index 7e4344b..ab48bdc 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/LearnPanel.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/LearnPanel.tsx @@ -39,7 +39,7 @@ export default function LearnPanel() { return (
-

Project Tour

+

Project Tour

{tourSteps.length} steps · Guided walkthrough of the codebase

@@ -112,7 +112,7 @@ export default function LearnPanel() { {/* Scrollable content */}
{/* Step title */} -

{step.title}

+

{step.title}

{/* Description via ReactMarkdown */}
diff --git a/understand-anything-plugin/packages/dashboard/src/components/MobileDrawer.tsx b/understand-anything-plugin/packages/dashboard/src/components/MobileDrawer.tsx index 5247e4d..5e4335e 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/MobileDrawer.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/MobileDrawer.tsx @@ -107,7 +107,7 @@ export default function MobileDrawer({ Controls -

+

{graph?.project.name ?? "Dashboard"}

diff --git a/understand-anything-plugin/packages/dashboard/src/components/MobileLayout.tsx b/understand-anything-plugin/packages/dashboard/src/components/MobileLayout.tsx index ab82759..72d3d4e 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/MobileLayout.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/MobileLayout.tsx @@ -95,7 +95,7 @@ export default function MobileLayout({ -

+

{graph?.project.name ?? "Understand Anything"}

diff --git a/understand-anything-plugin/packages/dashboard/src/components/NodeInfo.tsx b/understand-anything-plugin/packages/dashboard/src/components/NodeInfo.tsx index 748f405..eb954f4 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/NodeInfo.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/NodeInfo.tsx @@ -410,7 +410,7 @@ export default function NodeInfo() {
-

{node.name}

+

{node.name}

{/* Name */} -

+

{data.label}

diff --git a/understand-anything-plugin/packages/dashboard/src/components/PathFinderModal.tsx b/understand-anything-plugin/packages/dashboard/src/components/PathFinderModal.tsx index 729a64b..3e0e3c0 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/PathFinderModal.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/PathFinderModal.tsx @@ -124,7 +124,7 @@ export default function PathFinderModal({ isOpen, onClose }: PathFinderModalProp d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" /> -

Dependency Path Finder

+

Dependency Path Finder

+ + {/* Heading font */} +
+
+ Heading Font +
+
+ {([ + { id: "serif" as HeadingFont, label: "Serif", sample: "Aa" }, + { id: "sans" as HeadingFont, label: "Sans", sample: "Aa" }, + { id: "mono" as HeadingFont, label: "Mono", sample: "Aa" }, + ]).map((opt) => ( + + ))} +
+
)}
diff --git a/understand-anything-plugin/packages/dashboard/src/components/TokenGate.tsx b/understand-anything-plugin/packages/dashboard/src/components/TokenGate.tsx index 5d74d67..62d2a78 100644 --- a/understand-anything-plugin/packages/dashboard/src/components/TokenGate.tsx +++ b/understand-anything-plugin/packages/dashboard/src/components/TokenGate.tsx @@ -39,7 +39,7 @@ export default function TokenGate({ onTokenValid }: TokenGateProps) {
{/* Heading */} -

+

Access Token Required

diff --git a/understand-anything-plugin/packages/dashboard/src/index.css b/understand-anything-plugin/packages/dashboard/src/index.css index b8b6841..785f327 100644 --- a/understand-anything-plugin/packages/dashboard/src/index.css +++ b/understand-anything-plugin/packages/dashboard/src/index.css @@ -80,8 +80,11 @@ --font-serif: 'DM Serif Display', Georgia, serif; --font-mono: 'JetBrains Mono', 'Fira Code', monospace; --font-sans: 'Inter', system-ui, sans-serif; + --font-heading: var(--font-serif); } +.font-heading { font-family: var(--font-heading); } + /* Base styles */ html { transition: background-color 0.2s ease, color 0.2s ease; diff --git a/understand-anything-plugin/packages/dashboard/src/themes/ThemeContext.tsx b/understand-anything-plugin/packages/dashboard/src/themes/ThemeContext.tsx index dc12fcc..c5a7ceb 100644 --- a/understand-anything-plugin/packages/dashboard/src/themes/ThemeContext.tsx +++ b/understand-anything-plugin/packages/dashboard/src/themes/ThemeContext.tsx @@ -7,7 +7,7 @@ import { useState, type ReactNode, } from "react"; -import type { PresetId, ThemeConfig, ThemePreset } from "./types.ts"; +import type { HeadingFont, PresetId, ThemeConfig, ThemePreset } from "./types.ts"; import { DEFAULT_THEME_CONFIG } from "./types.ts"; import { getPreset } from "./presets.ts"; import { applyTheme } from "./theme-engine.ts"; @@ -19,6 +19,7 @@ interface ThemeContextValue { preset: ThemePreset; setPreset: (presetId: PresetId) => void; setAccent: (accentId: string) => void; + setHeadingFont: (font: HeadingFont) => void; } const ThemeContext = createContext(null); @@ -85,10 +86,14 @@ export function ThemeProvider({ metaTheme, children }: ThemeProviderProps) { setConfig((prev) => ({ ...prev, accentId })); }, []); + const setHeadingFont = useCallback((font: HeadingFont) => { + setConfig((prev) => ({ ...prev, headingFont: font })); + }, []); + const preset = getPreset(config.presetId); return ( - + {children} ); diff --git a/understand-anything-plugin/packages/dashboard/src/themes/index.ts b/understand-anything-plugin/packages/dashboard/src/themes/index.ts index c033d59..0adb54e 100644 --- a/understand-anything-plugin/packages/dashboard/src/themes/index.ts +++ b/understand-anything-plugin/packages/dashboard/src/themes/index.ts @@ -1,5 +1,5 @@ export { ThemeProvider, useTheme } from "./ThemeContext.tsx"; export { PRESETS, getPreset, getAccent } from "./presets.ts"; export { applyTheme } from "./theme-engine.ts"; -export type { PresetId, ThemeConfig, ThemePreset, AccentSwatch } from "./types.ts"; +export type { HeadingFont, PresetId, ThemeConfig, ThemePreset, AccentSwatch } from "./types.ts"; export { DEFAULT_THEME_CONFIG } from "./types.ts"; diff --git a/understand-anything-plugin/packages/dashboard/src/themes/theme-engine.ts b/understand-anything-plugin/packages/dashboard/src/themes/theme-engine.ts index 23004ca..ceb7bda 100644 --- a/understand-anything-plugin/packages/dashboard/src/themes/theme-engine.ts +++ b/understand-anything-plugin/packages/dashboard/src/themes/theme-engine.ts @@ -53,4 +53,13 @@ export function applyTheme(config: ThemeConfig): void { // 4. Set data-theme for CSS-only selectors document.documentElement.setAttribute("data-theme", preset.isDark ? "dark" : "light"); + + // 5. Apply heading font preference + const fontMap: Record = { + serif: "var(--font-serif)", + sans: "var(--font-sans)", + mono: "var(--font-mono)", + }; + const headingFont = config.headingFont ?? "serif"; + style.setProperty("--font-heading", fontMap[headingFont] ?? fontMap.serif); } diff --git a/understand-anything-plugin/packages/dashboard/src/themes/types.ts b/understand-anything-plugin/packages/dashboard/src/themes/types.ts index 2d09590..0c4cfd3 100644 --- a/understand-anything-plugin/packages/dashboard/src/themes/types.ts +++ b/understand-anything-plugin/packages/dashboard/src/themes/types.ts @@ -22,9 +22,12 @@ export interface ThemePreset { defaultAccentId: string; } +export type HeadingFont = "serif" | "sans" | "mono"; + export interface ThemeConfig { presetId: PresetId; accentId: string; + headingFont?: HeadingFont; } export const DEFAULT_THEME_CONFIG: ThemeConfig = {