Files
copilotkit__copilotkit/showcase/shell/src/app/globals.css
Atai Barkai c1b595596e feat(showcase/shell): port /docs routing + framework-scoped routes from 4084
Port the full docs routing + rendering infrastructure from the 4084
branch (atai/2026-04-17/internal-showcase-followups):

- New [framework]/[[...slug]] catch-all that validates the first
  segment against the registry and renders framework-scoped docs
  with a "not available for this framework" banner when the page's
  defaultCell is not tagged in the framework's cells.
- FrameworkProvider + selector: framework is strictly URL-derived,
  storedFramework is an advisory localStorage signal. No
  auto-redirect from localStorage.
- /docs/[[...slug]] rewritten as a thin wrapper around DocsPageView
  with a new DocsOverview landing: framework picker + topic cards.
- New lib/docs-render.tsx centralising snippet inlining,
  frontmatter parsing, nav tree + breadcrumb builders.
- New lib/mdx-registry.tsx consolidating the ~700-line component
  shim used by both routes.
- Server <Snippet> component with demo-content regions + syntax
  highlighting via highlight.js.
- Per-feature <InlineDemo> iframe embedder pointing at the
  integration's backend (single-container shape
  http://localhost:3100/demos/<cell>).
- FrameworkTabs, docs-callout, docs-steps, docs-tabs, router-pivot,
  stored-framework-highlight components for the MDX registry.
- Global typography + color pivot in globals.css: Plus Jakarta
  Sans body, Spline Sans Mono code, cool-gray background, purple
  accent.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:22:28 -07:00

190 lines
4.3 KiB
CSS

@import "tailwindcss";
@import "@copilotkitnext/react/styles.css";
@import "highlight.js/styles/github.css";
:root {
/* Backgrounds — match reference (oklch(0.9038 0.0149 286.1) ≈ #e6e6ec).
* Shell keeps a slightly lighter cast so code blocks on white surface
* still read well; key is that it's the same cool-gray family. */
--bg: #eaeaee;
--bg-surface: #ffffff;
--bg-elevated: #f1f1f6;
--bg-hover: #e5e5eb;
--border: #d9d9e0;
--border-dim: #e9e9ef;
--sidebar: #efeff3;
--text: #010507;
--text-secondary: #2b3238;
--text-muted: #6a7079;
--text-faint: #a3a8af;
/* Reference primary is oklch(0.55 0.25 285) — a blue-violet. Hex approx. */
--accent: #5a3cd1;
--accent-light: #ebe7fa;
--accent-dim: rgba(90, 60, 209, 0.06);
--blue: #1a5fb4;
--violet: #5a3cd1;
--violet-light: #ebe7fa;
/* Font stacks — fed by next/font CSS variables in layout.tsx with
* safe fallbacks for environments where the font fails to load.
* We expose them under `--font-prose`/`--font-code` and use those
* names in component CSS so Tailwind's own `--font-sans`/`--font-mono`
* theme tokens don't collide. */
--font-docs-prose:
var(--font-prose, "Plus Jakarta Sans"), -apple-system, BlinkMacSystemFont,
"Segoe UI", Roboto, sans-serif;
--font-docs-code:
var(--font-mono, "Spline Sans Mono"), ui-monospace, SFMono-Regular,
"SF Mono", Menlo, monospace;
}
html,
body {
background: var(--bg);
color: var(--text);
font-family: var(--font-docs-prose);
font-feature-settings: "cv11", "ss01";
letter-spacing: -0.005em;
}
/* Code font inherits Spline Sans Mono via CSS variable */
code,
pre,
kbd,
samp {
font-family: var(--font-docs-code);
}
/* Reference content (MDX) typography — calibrated against docs.copilotkit.ai.
* The reference uses fumadocs' default prose scale: body ~15px, h2 ~1.5rem
* with tighter tracking, and tonally-darker headings than body. */
.reference-content {
font-size: 0.9375rem; /* 15px */
line-height: 1.65;
color: var(--text-secondary);
}
.reference-content h2 {
font-size: 1.5rem;
font-weight: 700;
color: var(--text);
margin-top: 2.5rem;
margin-bottom: 0.75rem;
padding-bottom: 0;
letter-spacing: -0.015em;
}
.reference-content h3 {
font-size: 1.125rem;
font-weight: 600;
color: var(--text);
margin-top: 2rem;
margin-bottom: 0.5rem;
letter-spacing: -0.01em;
}
.reference-content h4 {
font-size: 1rem;
font-weight: 600;
color: var(--text);
margin-top: 1.25rem;
margin-bottom: 0.25rem;
}
.reference-content p {
font-size: 0.9375rem;
color: var(--text-secondary);
line-height: 1.7;
margin-bottom: 1rem;
}
.reference-content ul,
.reference-content ol {
font-size: 0.9375rem;
color: var(--text-secondary);
padding-left: 1.5rem;
margin-bottom: 1rem;
line-height: 1.65;
}
.reference-content li {
margin-bottom: 0.375rem;
}
.reference-content ul {
list-style-type: disc;
}
.reference-content ol {
list-style-type: decimal;
}
.reference-content code {
font-size: 0.8125rem;
background: var(--bg-elevated);
padding: 0.125rem 0.375rem;
border-radius: 0.25rem;
font-family: var(--font-docs-code);
color: var(--text);
}
/* Bare <pre> fallback (when an MDX page uses a triple-fence rather than
* <Snippet>). Mirrors the chrome on <Snippet>'s figure so pages look
* consistent whether the code is live-from-cell or inline. */
.reference-content pre {
background: var(--bg-surface);
border: 1px solid var(--border);
border-radius: 0.5rem;
padding: 1rem;
overflow-x: auto;
margin-bottom: 1.25rem;
font-size: 0.8125rem;
line-height: 1.6;
}
.reference-content pre code {
background: transparent;
padding: 0;
border-radius: 0;
}
.reference-content a {
color: var(--accent);
text-decoration: underline;
text-underline-offset: 2px;
}
.reference-content a:hover {
opacity: 0.8;
}
.reference-content table {
width: 100%;
font-size: 0.8125rem;
border-collapse: collapse;
margin-bottom: 1rem;
}
.reference-content th,
.reference-content td {
border: 1px solid var(--border);
padding: 0.5rem 0.75rem;
text-align: left;
}
.reference-content th {
background: var(--bg-elevated);
font-weight: 600;
}
.reference-content strong {
font-weight: 600;
color: var(--text);
}
.reference-content hr {
border: none;
border-top: 1px solid var(--border);
margin: 1.5rem 0;
}