diff --git a/packages/ghost-ui/.shadcn/skills.md b/packages/ghost-ui/.shadcn/skills.md
index f0a8fbc..edf7f26 100644
--- a/packages/ghost-ui/.shadcn/skills.md
+++ b/packages/ghost-ui/.shadcn/skills.md
@@ -4,7 +4,7 @@
Ghost UI is a magazine-inspired design system built on shadcn/ui with:
- **Pill geometry**: 999px border-radius on buttons, inputs, and pills
-- **HK Grotesk typography**: Self-hosted, 7 weights (300-900), magazine-scale heading hierarchy
+- **System font stack**: consumers bring their own typeface, magazine-scale heading hierarchy
- **4-tier shadow hierarchy**: mini, card, elevated, modal
- **97 components** across 9 categories
- **323+ CSS custom properties** with full light/dark mode support
diff --git a/packages/ghost-ui/registry.json b/packages/ghost-ui/registry.json
index 299175f..3ae005f 100644
--- a/packages/ghost-ui/registry.json
+++ b/packages/ghost-ui/registry.json
@@ -7,12 +7,12 @@
"name": "ghost-ui-base",
"type": "registry:base",
"title": "Ghost UI",
- "description": "Magazine-inspired design system — pill geometry, HK Grotesk typography, 4-tier shadow hierarchy",
+ "description": "ghost design language",
"author": "block",
"style": "ghost",
"iconLibrary": "lucide",
"baseColor": "neutral",
- "registryDependencies": ["styles-main", "font-hk-grotesk", "utils"],
+ "registryDependencies": ["styles-main", "font-faces", "utils"],
"dependencies": ["tw-animate-css", "clsx", "tailwind-merge"],
"devDependencies": ["tailwindcss"],
"files": [],
@@ -93,10 +93,10 @@
"--color-surface-dark-text": "var(--surface-dark-text)",
"--color-surface-dark-muted": "var(--surface-dark-muted)",
"--color-surface-dark-border": "var(--surface-dark-border)",
- "--font-sans": "\"HK Grotesk\", sans-serif",
+ "--font-sans": "system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif",
"--font-mono": "\"Geist Mono\", monospace",
"--font-serif": "serif",
- "--font-display": "\"HK Grotesk\", sans-serif",
+ "--font-display": "system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif",
"--radius-pill": "999px",
"--radius-button": "999px",
"--radius-input": "999px",
@@ -353,7 +353,7 @@
"type": "registry:style",
"dependencies": ["tw-animate-css"],
"devDependencies": ["tailwindcss"],
- "registryDependencies": ["font-hk-grotesk"],
+ "registryDependencies": ["font-faces"],
"files": [
{
"type": "registry:theme",
@@ -363,7 +363,7 @@
]
},
{
- "name": "font-hk-grotesk-faces",
+ "name": "font-faces",
"type": "registry:style",
"files": [
{
@@ -373,59 +373,6 @@
}
]
},
- {
- "name": "font-hk-grotesk",
- "type": "registry:font",
- "font": {
- "family": "HK Grotesk",
- "provider": "google",
- "import": "HK_Grotesk",
- "variable": "--font-hk-grotesk",
- "weight": ["300", "400", "500", "600", "700", "800", "900"],
- "subsets": ["latin"]
- },
- "meta": {
- "selfHosted": true
- },
- "registryDependencies": ["font-hk-grotesk-faces"],
- "files": [
- {
- "type": "registry:file",
- "path": "src/fonts/HKGrotesk-Light.woff2",
- "target": "public/fonts/HKGrotesk-Light.woff2"
- },
- {
- "type": "registry:file",
- "path": "src/fonts/HKGrotesk-Regular.woff2",
- "target": "public/fonts/HKGrotesk-Regular.woff2"
- },
- {
- "type": "registry:file",
- "path": "src/fonts/HKGrotesk-Medium.woff2",
- "target": "public/fonts/HKGrotesk-Medium.woff2"
- },
- {
- "type": "registry:file",
- "path": "src/fonts/HKGrotesk-SemiBold.woff2",
- "target": "public/fonts/HKGrotesk-SemiBold.woff2"
- },
- {
- "type": "registry:file",
- "path": "src/fonts/HKGrotesk-Bold.woff2",
- "target": "public/fonts/HKGrotesk-Bold.woff2"
- },
- {
- "type": "registry:file",
- "path": "src/fonts/HKGrotesk-ExtraBold.woff2",
- "target": "public/fonts/HKGrotesk-ExtraBold.woff2"
- },
- {
- "type": "registry:file",
- "path": "src/fonts/HKGrotesk-Black.woff2",
- "target": "public/fonts/HKGrotesk-Black.woff2"
- }
- ]
- },
{
"name": "utils",
"type": "registry:lib",
diff --git a/packages/ghost-ui/scripts/build-base-vars.mjs b/packages/ghost-ui/scripts/build-base-vars.mjs
index 935e75b..8b2046d 100644
--- a/packages/ghost-ui/scripts/build-base-vars.mjs
+++ b/packages/ghost-ui/scripts/build-base-vars.mjs
@@ -58,13 +58,12 @@ if (!baseItem) {
name: "ghost-ui-base",
type: "registry:base",
title: "Ghost UI",
- description:
- "Magazine-inspired design system — pill geometry, HK Grotesk typography, 4-tier shadow hierarchy",
+ description: "ghost design language",
author: "block",
style: "ghost",
iconLibrary: "lucide",
baseColor: "neutral",
- registryDependencies: ["styles-main", "font-hk-grotesk", "utils"],
+ registryDependencies: ["styles-main", "font-faces", "utils"],
dependencies: ["tw-animate-css", "clsx", "tailwind-merge"],
devDependencies: ["tailwindcss"],
files: [],
diff --git a/packages/ghost-ui/scripts/generate-skills.mjs b/packages/ghost-ui/scripts/generate-skills.mjs
index b2f344b..47bc182 100644
--- a/packages/ghost-ui/scripts/generate-skills.mjs
+++ b/packages/ghost-ui/scripts/generate-skills.mjs
@@ -126,7 +126,7 @@ const markdown = `# Ghost UI — Agent Skills
Ghost UI is a magazine-inspired design system built on shadcn/ui with:
- **Pill geometry**: 999px border-radius on buttons, inputs, and pills
-- **HK Grotesk typography**: Self-hosted, 7 weights (300-900), magazine-scale heading hierarchy
+- **System font stack**: consumers bring their own typeface, magazine-scale heading hierarchy
- **4-tier shadow hierarchy**: mini, card, elevated, modal
- **${uiItems.length} components** across ${Object.keys(categories).length} categories
- **${tokenCount}+ CSS custom properties** with full light/dark mode support
diff --git a/packages/ghost-ui/src/App.tsx b/packages/ghost-ui/src/App.tsx
index 1474f93..3726098 100644
--- a/packages/ghost-ui/src/App.tsx
+++ b/packages/ghost-ui/src/App.tsx
@@ -1,18 +1,25 @@
-import { Route, Routes } from "react-router";
+import { Navigate, Route, Routes, useParams } from "react-router";
import ComponentPage from "@/app/components/[name]/page";
import ComponentsIndex from "@/app/components/page";
import CLIReferencePage from "@/app/docs/cli/page";
import ConceptsPage from "@/app/docs/concepts/page";
import GettingStartedPage from "@/app/docs/getting-started/page";
-import DocsIndex from "@/app/docs/page";
+import DriftEngineIndex from "@/app/docs/page";
import SelfHostingPage from "@/app/docs/self-hosting/page";
import ColorsPage from "@/app/foundations/colors/page";
import FoundationsIndex from "@/app/foundations/page";
import TypographyPage from "@/app/foundations/typography/page";
import HomePage from "@/app/page";
+import ToolsIndex from "@/app/tools/page";
+import DesignLanguageIndex from "@/app/ui/page";
import { Dock } from "@/components/docs/dock";
import { ThemeProvider } from "@/components/theme/ThemeProvider";
+function ComponentRedirect() {
+ const { name } = useParams<{ name: string }>();
+ return ;
+}
+
export function App() {
return (
} />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
+
+ {/* Tools */}
+ } />
+ } />
+ }
+ />
+ } />
+ } />
+ }
+ />
+
+ {/* Design Language */}
+ } />
+ } />
+ } />
+ }
+ />
+ } />
+ } />
+
+ {/* Redirects from old URLs */}
+ } />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
+ } />
diff --git a/packages/ghost-ui/src/app/components/[name]/page.tsx b/packages/ghost-ui/src/app/components/[name]/page.tsx
index 0f2cba3..0d7f3e3 100644
--- a/packages/ghost-ui/src/app/components/[name]/page.tsx
+++ b/packages/ghost-ui/src/app/components/[name]/page.tsx
@@ -28,10 +28,10 @@ function getDemoSource(
export default function ComponentPage() {
const { name } = useParams<{ name: string }>();
- if (!name) return ;
+ if (!name) return ;
const component = getComponent(name);
- if (!component) return ;
+ if (!component) return ;
const category = getCategory(component.primaryCategory);
const siblings = getComponentsByCategory(component.primaryCategory);
diff --git a/packages/ghost-ui/src/app/components/page.tsx b/packages/ghost-ui/src/app/components/page.tsx
index 2a7998a..f3d4ff1 100644
--- a/packages/ghost-ui/src/app/components/page.tsx
+++ b/packages/ghost-ui/src/app/components/page.tsx
@@ -123,7 +123,7 @@ export default function ComponentsIndex() {
function ComponentPill({ slug, name }: { slug: string; name: string }) {
return (
diff --git a/packages/ghost-ui/src/app/docs/cli/page.tsx b/packages/ghost-ui/src/app/docs/cli/page.tsx
index a7a6cc7..156974a 100644
--- a/packages/ghost-ui/src/app/docs/cli/page.tsx
+++ b/packages/ghost-ui/src/app/docs/cli/page.tsx
@@ -309,11 +309,11 @@ ghost viz *.json --port 8080`}
See{" "}
-
+
Core Concepts
{" "}
for the ideas behind these commands, or{" "}
-
+
Getting Started
{" "}
for a guided walkthrough.
diff --git a/packages/ghost-ui/src/app/docs/getting-started/page.tsx b/packages/ghost-ui/src/app/docs/getting-started/page.tsx
index 367ddbe..d8a1e40 100644
--- a/packages/ghost-ui/src/app/docs/getting-started/page.tsx
+++ b/packages/ghost-ui/src/app/docs/getting-started/page.tsx
@@ -206,12 +206,12 @@ export default defineConfig({
Next:{" "}
-
+
Core Concepts
{" "}
to understand fingerprints, drift, and evolution in depth. Or jump
to the{" "}
-
+
CLI Reference
{" "}
for every command and flag.
diff --git a/packages/ghost-ui/src/app/docs/page.tsx b/packages/ghost-ui/src/app/docs/page.tsx
index 1e7dc91..e92e842 100644
--- a/packages/ghost-ui/src/app/docs/page.tsx
+++ b/packages/ghost-ui/src/app/docs/page.tsx
@@ -1,13 +1,6 @@
"use client";
-import {
- BookOpen,
- Compass,
- Fingerprint,
- Layers,
- Rocket,
- Server,
-} from "lucide-react";
+import { BookOpen, Fingerprint, Rocket, Server } from "lucide-react";
import type { ReactNode } from "react";
import { Link } from "react-router";
import { AnimatedPageHeader } from "@/components/docs/animated-page-header";
@@ -16,7 +9,7 @@ import { useStaggerReveal } from "@/hooks/use-scroll-reveal";
const hero = {
name: "Core Concepts",
- href: "/docs/concepts",
+ href: "/tools/drift/concepts",
description:
"Fingerprints, drift detection, evolution tracking, and fleet observability — the ideas behind Ghost.",
hook: "Start here",
@@ -31,39 +24,25 @@ const sections: {
}[] = [
{
name: "Getting Started",
- href: "/docs/getting-started",
+ href: "/tools/drift/getting-started",
description:
"Install Ghost, create your first config, and run your first drift scan in under five minutes.",
icon: ,
},
{
name: "CLI Reference",
- href: "/docs/cli",
+ href: "/tools/drift/cli",
description:
"All nine commands — scan, profile, compare, diff, ack, adopt, diverge, fleet, and viz.",
icon: ,
},
{
name: "Self-Hosting",
- href: "/docs/self-hosting",
+ href: "/tools/drift/self-hosting",
description:
"Run Ghost UI as your own design system documentation site with your registry and tokens.",
icon: ,
},
- {
- name: "Ghost UI",
- href: "/components",
- description:
- "Browse the component catalogue — 49 primitives and 48 AI-native elements ready to use.",
- icon: ,
- },
- {
- name: "Foundations",
- href: "/foundations",
- description:
- "Color, typography, and the design tokens that underpin every Ghost UI component.",
- icon: ,
- },
];
export default function DocsIndex() {
@@ -76,8 +55,8 @@ export default function DocsIndex() {
return (
diff --git a/packages/ghost-ui/src/app/docs/self-hosting/page.tsx b/packages/ghost-ui/src/app/docs/self-hosting/page.tsx
index 45996bd..0dddfe8 100644
--- a/packages/ghost-ui/src/app/docs/self-hosting/page.tsx
+++ b/packages/ghost-ui/src/app/docs/self-hosting/page.tsx
@@ -102,10 +102,7 @@ pnpm build:registry`}
-
- Ghost UI uses self-hosted HK Grotesk (WOFF2). Font files live in{" "}
- src/fonts/. To use your own typeface:
-
+ Ghost UI defaults to system fonts. To use a custom typeface:
Add your font files to the fonts directory
@@ -191,11 +188,11 @@ RUN echo 'server { listen 80; location / { try_files $uri /index.html; } }' \\
See{" "}
-
+
Getting Started
{" "}
for the consumer-side setup, or browse the{" "}
-
+
Component Catalogue
{" "}
to see what ships out of the box.
diff --git a/packages/ghost-ui/src/app/foundations/page.tsx b/packages/ghost-ui/src/app/foundations/page.tsx
index f8721e3..560b170 100644
--- a/packages/ghost-ui/src/app/foundations/page.tsx
+++ b/packages/ghost-ui/src/app/foundations/page.tsx
@@ -46,16 +46,16 @@ const foundations: {
}[] = [
{
name: "Colors",
- href: "/foundations/colors",
+ href: "/ui/foundations/colors",
description:
"A pure monochromatic scale with selective semantic color for status and utility.",
visual: ,
},
{
name: "Typography",
- href: "/foundations/typography",
+ href: "/ui/foundations/typography",
description:
- "Magazine-grade hierarchy with HK Grotesk. Display for headers, Regular for body, Mono for data.",
+ "Magazine-grade hierarchy. Display for headers, Regular for body, Mono for data.",
visual: ,
},
];
diff --git a/packages/ghost-ui/src/app/foundations/typography/page.tsx b/packages/ghost-ui/src/app/foundations/typography/page.tsx
index f54784f..ee32b5e 100644
--- a/packages/ghost-ui/src/app/foundations/typography/page.tsx
+++ b/packages/ghost-ui/src/app/foundations/typography/page.tsx
@@ -18,7 +18,7 @@ export default function TypographyPage() {
diff --git a/packages/ghost-ui/src/app/tools/page.tsx b/packages/ghost-ui/src/app/tools/page.tsx
new file mode 100644
index 0000000..5bda754
--- /dev/null
+++ b/packages/ghost-ui/src/app/tools/page.tsx
@@ -0,0 +1,61 @@
+"use client";
+
+import { Fingerprint } from "lucide-react";
+import { Link } from "react-router";
+import { AnimatedPageHeader } from "@/components/docs/animated-page-header";
+import { SectionWrapper } from "@/components/docs/wrappers";
+import { useStaggerReveal } from "@/hooks/use-scroll-reveal";
+
+const tools = [
+ {
+ name: "Drift Engine",
+ href: "/tools/drift",
+ description:
+ "Fingerprint design systems, track their evolution, and surface divergence before it compounds.",
+ icon: ,
+ },
+];
+
+export default function ToolsIndex() {
+ const ref = useStaggerReveal(".tool-card", {
+ stagger: 0.06,
+ y: 30,
+ duration: 0.7,
+ });
+
+ return (
+
+
+
+
+ {tools.map((tool) => (
+
+
+ {tool.icon}
+
+
+
+ {tool.name}
+
+
+
+
+ {tool.description}
+
+
+ ))}
+
+
+ );
+}
diff --git a/packages/ghost-ui/src/app/ui/page.tsx b/packages/ghost-ui/src/app/ui/page.tsx
new file mode 100644
index 0000000..0451f28
--- /dev/null
+++ b/packages/ghost-ui/src/app/ui/page.tsx
@@ -0,0 +1,128 @@
+"use client";
+
+import { type ReactNode } from "react";
+import { Link } from "react-router";
+import { AnimatedPageHeader } from "@/components/docs/animated-page-header";
+import { SectionWrapper } from "@/components/docs/wrappers";
+import { useStaggerReveal } from "@/hooks/use-scroll-reveal";
+import { getAllComponents } from "@/lib/component-registry";
+
+function ColorsVisual() {
+ return (
+
+ {[
+ "bg-foreground",
+ "bg-foreground/80",
+ "bg-foreground/60",
+ "bg-foreground/40",
+ "bg-foreground/20",
+ "bg-foreground/10",
+ ].map((bg, i) => (
+
+ ))}
+
+ );
+}
+
+function TypographyVisual() {
+ return (
+
+ );
+}
+
+function ComponentsVisual() {
+ const count = getAllComponents().length;
+ return (
+
+ {Array.from({ length: 8 }).map((_, i) => (
+
+ ))}
+
+ {count} components
+
+
+ );
+}
+
+const sections: {
+ name: string;
+ href: string;
+ description: string;
+ visual: ReactNode;
+}[] = [
+ {
+ name: "Foundations",
+ href: "/ui/foundations",
+ description:
+ "Color, typography, and the design tokens that underpin every Ghost UI component.",
+ visual: (
+
+ ),
+ },
+ {
+ name: "Components",
+ href: "/ui/components",
+ description:
+ "Production-ready building blocks. Every component follows Ghost UI — pill-first, monochromatic, accessible.",
+ visual: ,
+ },
+];
+
+export default function DesignLanguageIndex() {
+ const ref = useStaggerReveal(".dl-card", {
+ stagger: 0.06,
+ y: 30,
+ duration: 0.7,
+ });
+
+ return (
+
+
+
+
+ {sections.map((item) => (
+
+
{item.visual}
+
+ {item.name}
+
+
+ {item.description}
+
+
+ ))}
+
+
+ );
+}
diff --git a/packages/ghost-ui/src/components/docs/component-page-shell.tsx b/packages/ghost-ui/src/components/docs/component-page-shell.tsx
index 8fc4b2e..c6a846b 100644
--- a/packages/ghost-ui/src/components/docs/component-page-shell.tsx
+++ b/packages/ghost-ui/src/components/docs/component-page-shell.tsx
@@ -147,7 +147,7 @@ export function ComponentPageShell({
@@ -337,7 +337,7 @@ export function ComponentPageShell({
{component.registryDependencies.map((dep) => (
{dep}
@@ -376,7 +376,7 @@ export function ComponentPageShell({
{prev ? (
@@ -394,7 +394,7 @@ export function ComponentPageShell({
)}
{next ? (
diff --git a/packages/ghost-ui/src/components/docs/dock.tsx b/packages/ghost-ui/src/components/docs/dock.tsx
index e5f7234..ca4d956 100644
--- a/packages/ghost-ui/src/components/docs/dock.tsx
+++ b/packages/ghost-ui/src/components/docs/dock.tsx
@@ -2,14 +2,13 @@
import type { LucideIcon } from "lucide-react";
import {
- BookOpen,
Home,
- LayoutGrid,
Monitor,
Moon,
Palette,
Search,
Sun,
+ Wrench,
} from "lucide-react";
import { motion } from "motion/react";
import { useCallback, useEffect, useState } from "react";
@@ -37,9 +36,8 @@ import { cn } from "@/lib/utils";
const nav: { name: string; path: string; icon: LucideIcon }[] = [
{ name: "Home", path: "/", icon: Home },
- { name: "Docs", path: "/docs", icon: BookOpen },
- { name: "Foundations", path: "/foundations", icon: Palette },
- { name: "Components", path: "/components", icon: LayoutGrid },
+ { name: "Tools", path: "/tools", icon: Wrench },
+ { name: "Design Language", path: "/ui", icon: Palette },
];
export function Dock() {
@@ -194,7 +192,7 @@ export function Dock() {
{
- navigate("/foundations/colors");
+ navigate("/ui/foundations/colors");
setSearchOpen(false);
}}
>
@@ -203,7 +201,7 @@ export function Dock() {
{
- navigate("/foundations/typography");
+ navigate("/ui/foundations/typography");
setSearchOpen(false);
}}
>
@@ -212,50 +210,50 @@ export function Dock() {
-
+
{
- navigate("/docs");
+ navigate("/tools/drift");
setSearchOpen(false);
}}
>
-
- Docs Overview
+
+ Drift Engine
{
- navigate("/docs/getting-started");
+ navigate("/tools/drift/getting-started");
setSearchOpen(false);
}}
>
-
+
Getting Started
{
- navigate("/docs/cli");
+ navigate("/tools/drift/cli");
setSearchOpen(false);
}}
>
-
+
CLI Reference
{
- navigate("/docs/concepts");
+ navigate("/tools/drift/concepts");
setSearchOpen(false);
}}
>
-
+
Core Concepts
{
- navigate("/docs/self-hosting");
+ navigate("/tools/drift/self-hosting");
setSearchOpen(false);
}}
>
-
+
Self-Hosting
@@ -269,7 +267,7 @@ export function Dock() {
{
- navigate(`/components/${item.slug}`);
+ navigate(`/ui/components/${item.slug}`);
setSearchOpen(false);
}}
>
diff --git a/packages/ghost-ui/src/components/docs/foundations/typography.tsx b/packages/ghost-ui/src/components/docs/foundations/typography.tsx
index a47572d..17c8b74 100644
--- a/packages/ghost-ui/src/components/docs/foundations/typography.tsx
+++ b/packages/ghost-ui/src/components/docs/foundations/typography.tsx
@@ -18,7 +18,7 @@ export function TypographyDemos() {
Display
- Display / 64–96px / Black (900) / HK Grotesk / -0.05em / 0.88 lh
+ Display / 64–96px / Black (900) /-0.05em / 0.88 lh
@@ -29,7 +29,7 @@ export function TypographyDemos() {
Section heading
- Section / 44–64px / Bold (700) / HK Grotesk / -0.035em / 0.95 lh
+ Section / 44–64px / Bold (700) /-0.035em / 0.95 lh
@@ -40,7 +40,7 @@ export function TypographyDemos() {
Subsection heading
- Sub / 28–40px / Bold (700) / HK Grotesk / -0.02em / 1.0 lh
+ Sub / 28–40px / Bold (700) /-0.02em / 1.0 lh
@@ -51,7 +51,7 @@ export function TypographyDemos() {
Card heading
- Card / 20–28px / Semibold (600) / HK Grotesk / -0.01em / 1.1 lh
+ Card / 20–28px / Semibold (600) /-0.01em / 1.1 lh
@@ -106,7 +106,7 @@ export function TypographyDemos() {
- 11px / Semibold (600) / HK Grotesk / uppercase / +0.12em tracking
+ 11px / Semibold (600) / uppercase / +0.12em tracking
@@ -274,13 +274,13 @@ export function TypographyDemos() {
- HK Grotesk — The quick brown fox jumps over the lazy dog
+ The quick brown fox jumps over the lazy dog
font-sans
- HK Grotesk — The quick brown fox
+ The quick brown fox jumps over the lazy dog
font-display
diff --git a/packages/ghost-ui/src/components/docs/hero.tsx b/packages/ghost-ui/src/components/docs/hero.tsx
index f5168a7..126ece2 100644
--- a/packages/ghost-ui/src/components/docs/hero.tsx
+++ b/packages/ghost-ui/src/components/docs/hero.tsx
@@ -101,7 +101,7 @@ export function Hero() {
className="mt-4 text-center text-muted-foreground leading-relaxed whitespace-nowrap"
style={{ fontSize: "clamp(0.875rem, 1.5vw, 1.125rem)" }}
>
- design language and drift detection for decentralized systems.
+ design infrastructure for decentralized systems.
diff --git a/packages/ghost-ui/src/components/docs/registry-sidebar.tsx b/packages/ghost-ui/src/components/docs/registry-sidebar.tsx
index 88880e4..18835df 100644
--- a/packages/ghost-ui/src/components/docs/registry-sidebar.tsx
+++ b/packages/ghost-ui/src/components/docs/registry-sidebar.tsx
@@ -31,9 +31,9 @@ import {
const topNav = [
{ name: "home", path: "/" },
- { name: "colors", path: "/foundations/colors" },
- { name: "typography", path: "/foundations/typography" },
- { name: "all components", path: "/components" },
+ { name: "colors", path: "/ui/foundations/colors" },
+ { name: "typography", path: "/ui/foundations/typography" },
+ { name: "all components", path: "/ui/components" },
];
export function RegistrySidebar() {
@@ -170,9 +170,12 @@ function CategorySection({
-
+
{item.name}
diff --git a/packages/ghost-ui/src/main.tsx b/packages/ghost-ui/src/main.tsx
index acda205..a833076 100644
--- a/packages/ghost-ui/src/main.tsx
+++ b/packages/ghost-ui/src/main.tsx
@@ -3,6 +3,7 @@ import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router";
import { App } from "./App";
import "./styles/main.css";
+import "./styles/dev-fonts.css";
createRoot(document.getElementById("root")!).render(
diff --git a/packages/ghost-ui/src/styles/font-faces.css b/packages/ghost-ui/src/styles/font-faces.css
index bce7e45..8c278e0 100644
--- a/packages/ghost-ui/src/styles/font-faces.css
+++ b/packages/ghost-ui/src/styles/font-faces.css
@@ -1,50 +1 @@
-/* ── HK Grotesk ── */
-@font-face {
- font-family: "HK Grotesk";
- src: url("../fonts/HKGrotesk-Light.woff2") format("woff2");
- font-weight: 300;
- font-style: normal;
- font-display: swap;
-}
-@font-face {
- font-family: "HK Grotesk";
- src: url("../fonts/HKGrotesk-Regular.woff2") format("woff2");
- font-weight: 400;
- font-style: normal;
- font-display: swap;
-}
-@font-face {
- font-family: "HK Grotesk";
- src: url("../fonts/HKGrotesk-Medium.woff2") format("woff2");
- font-weight: 500;
- font-style: normal;
- font-display: swap;
-}
-@font-face {
- font-family: "HK Grotesk";
- src: url("../fonts/HKGrotesk-SemiBold.woff2") format("woff2");
- font-weight: 600;
- font-style: normal;
- font-display: swap;
-}
-@font-face {
- font-family: "HK Grotesk";
- src: url("../fonts/HKGrotesk-Bold.woff2") format("woff2");
- font-weight: 700;
- font-style: normal;
- font-display: swap;
-}
-@font-face {
- font-family: "HK Grotesk";
- src: url("../fonts/HKGrotesk-ExtraBold.woff2") format("woff2");
- font-weight: 800;
- font-style: normal;
- font-display: swap;
-}
-@font-face {
- font-family: "HK Grotesk";
- src: url("../fonts/HKGrotesk-Black.woff2") format("woff2");
- font-weight: 900;
- font-style: normal;
- font-display: swap;
-}
+/* Design system ships with no bundled fonts — consumers bring their own. */
diff --git a/packages/ghost-ui/src/styles/main.css b/packages/ghost-ui/src/styles/main.css
index 596fc8b..af1869b 100644
--- a/packages/ghost-ui/src/styles/main.css
+++ b/packages/ghost-ui/src/styles/main.css
@@ -363,10 +363,12 @@
--color-surface-dark-border: var(--surface-dark-border);
/* fonts */
- --font-sans: "HK Grotesk", sans-serif;
+ --font-sans:
+ system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--font-mono: "Geist Mono", monospace;
--font-serif: serif;
- --font-display: "HK Grotesk", sans-serif;
+ --font-display:
+ system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
/* shape — pill-first radius system */
--radius-pill: 999px;