Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
16b51e7
refactor(docs): simplify guides page UI with compact icons
asl677 Jan 29, 2026
8365b92
Standardize prose styles and fix layout overflow
asl677 Jan 29, 2026
a738a5f
Standardize card shadows and theme-aware styles
asl677 Jan 29, 2026
40ddb1c
Remove duplicate typography properties
asl677 Jan 29, 2026
f8cbe23
Match landing page max-width to child pages
asl677 Jan 29, 2026
ea9bbfa
Expand max-width to 6xl on large breakpoints
asl677 Jan 29, 2026
054f1a5
Standardize page layouts, prose styles, and widths
asl677 Jan 29, 2026
a7052a6
Add border and radius to image components
asl677 Jan 29, 2026
7204d2e
Add icon and badges to guide detail pages
asl677 Jan 29, 2026
2a82cc5
Reduce badge spacing and remove duplicate guide headers
asl677 Jan 29, 2026
dc4ace9
Restore GuideHeader to display frontmatter badges
asl677 Jan 29, 2026
5d16d53
Add badges after titles in guide MDX files
asl677 Jan 29, 2026
3d63b12
Add icon above title and Badge component below title in guides
asl677 Jan 29, 2026
e9c238c
Standardize CTACard icon styles to match GuideIcon
asl677 Jan 29, 2026
576ceee
Fix mobile nav z-index by moving menu inside sticky nav
asl677 Jan 29, 2026
2984e12
Remove breadcrumbs from top-level section index pages
asl677 Jan 29, 2026
0c72c02
Hide breadcrumbs from hosting and AI overview pages
asl677 Jan 29, 2026
fc03acc
Standardize prose h1 styles with consistent margins
asl677 Jan 29, 2026
d24a1e0
Match guides page max-width to docs pages
asl677 Jan 29, 2026
0f9344b
Replace IconBadge with standard Badge component across moosestack pages
asl677 Jan 29, 2026
f2c1634
Update horizontal CTACard to match guides footer card style
asl677 Jan 29, 2026
a349328
Fix guides page width to max-w-4xl (no sidebar)
asl677 Jan 29, 2026
a96d3d3
Fix guides page header to use article element for consistent prose st…
asl677 Jan 29, 2026
59649b5
Add language and tag badges to guide cards
asl677 Jan 29, 2026
245decf
Make CTACards stretch full width
asl677 Jan 29, 2026
94adf5e
Change guide card button text to Read
asl677 Jan 29, 2026
a795f32
Add grouped mode to CTACards for guide-style stacked layout
asl677 Jan 29, 2026
40c7a21
fix: accessibility and HTML validity issues in guide components
asl677 Feb 3, 2026
bb17f18
chore(docs): remove unused GuidePreview component
asl677 Feb 3, 2026
390f79d
chore(docs): remove dead code for guide preview system
asl677 Feb 3, 2026
631907b
chore(docs): add explicit return type to DocLayout component
asl677 Feb 3, 2026
012e1e6
refactor(docs): extract GuideMetadata interface from inline type
asl677 Feb 3, 2026
f5d98a2
refactor(docs): extract UtilityControls component from TopNav
asl677 Feb 3, 2026
d2fd5b2
fix(docs): use semantic header element for guides page intro
asl677 Feb 3, 2026
2d949a4
refactor(docs): consolidate prose color in Tailwind typography config
asl677 Feb 3, 2026
ca687a6
fix(docs): add prose-invert typography config for dark mode
asl677 Feb 4, 2026
9e795b5
fix(docs): improve accessibility and always show MarkdownMenu
asl677 Feb 4, 2026
76ccbfb
fix(docs): use explicit allowlist for top-level index pages
asl677 Feb 4, 2026
b7e1671
Merge origin/main into fix/guides-page-ui-styles
asl677 Feb 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions apps/framework-docs-v2/content/guides/chat-in-your-app.mdx
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
---
title: Chat in Your App
description: Build AI-powered chat experiences with real-time analytics using MooseStack
previewVariant: "chat"
languages: ["typescript"]
tags: ["MCP"]
---

import { FileTree, CTACards, CTACard, Callout, BulletPointsCard, ToggleBlock } from "@/components/mdx";
import { FileTree, CTACards, CTACard, Callout, BulletPointsCard, ToggleBlock, GuideBadges } from "@/components/mdx";
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@/components/ui/accordion";

# Building a data-aware chat on top of your ClickHouse database with Next.js and MooseStack

<GuideBadges languages={["typescript"]} tags={["MCP"]} />

<Callout type="info" title="TL;DR">
* It can be simple to set up high performance chat in your applications.
* That baseline delivers real value.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ description: Build your own Customer Data Platform with MooseStack
languages: ["typescript"]
---

import { GuideBadges } from "@/components/mdx";

# Customer Data Platform (CDP)

<GuideBadges languages={["typescript"]} />

This guide walks you through building a Customer Data Platform that unifies customer data from multiple sources.

## What You'll Learn
Expand Down
4 changes: 4 additions & 0 deletions apps/framework-docs-v2/content/guides/data-warehouses.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ description: Build scalable data warehouses with MooseStack and ClickHouse
languages: ["python"]
---

import { GuideBadges } from "@/components/mdx";

# Building Your First Data Warehouse

<GuideBadges languages={["python"]} />

## Build a working data warehouse in one afternoon

This guide gets you building immediately. You'll create a real analytics system that answers business questions in seconds instead of minutes or hours.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
title: Improving the Performance of Your Dashboards
description: Build fast dashboards using MooseStack and ClickHouse
previewVariant: "dashboards"
languages: ["typescript"]
---

Expand All @@ -15,11 +14,14 @@ import {
CustomizeGrid,
SelectField,
ConditionalContent,
GuideBadges,
CommunityCallout,
} from "@/components/mdx";

# Improving the Performance of Your Dashboards

<GuideBadges languages={["typescript"]} />

<Callout type="info" title="TL;DR">
* Slow dashboards are usually a database architecture problem, not a frontend or charting library problem.
* Running analytical queries on your transactional database degrades your entire application's performance and reliability.
Expand Down
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is to make sure the tag badges should up like in the figma

Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ description: Automate report generation with MooseStack workflows
languages: ["typescript"]
---

import { FileTree, CTACards, CTACard, Callout, BulletPointsCard, ToggleBlock } from "@/components/mdx";
import { FileTree, CTACards, CTACard, Callout, BulletPointsCard, ToggleBlock, GuideBadges } from "@/components/mdx";
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@/components/ui/accordion";

# Static Report Generation

<GuideBadges languages={["typescript"]} />

<Callout type="info" title="TL;DR">
* Static reports are pre-generated snapshots (PDF, Excel, CSV) that capture data at a specific point in time
* They remain essential for compliance, auditability, and stakeholder workflows despite interactive dashboards
Expand Down
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I see, this is the tag badges added to badge the figma

Original file line number Diff line number Diff line change
Expand Up @@ -328,24 +328,22 @@ Create alternating left-right layouts for showcasing features:
- `children`: Code component (typically `CodeEditorWrapper`)
- `language`: Language for syntax highlighting (default: `"ts"`)

### IconBadge
### Badges

Small badges for highlighting features or technologies:
Small badges for highlighting features or technologies. Use the standard shadcn Badge component:

```tsx
import { IconBadge } from "@/components/mdx/icon-badge";
import { Badge } from "@/components/ui/badge";

<div className="flex items-center gap-4 my-8 flex-wrap">
<IconBadge Icon="Rocket" label="5 minute setup" variant="moose" />
<IconBadge Icon="Database" label="Pre-integrated ClickHouse" variant="moose" />
<div className="flex items-center gap-2 mt-4 mb-4 flex-wrap">
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">5 minute setup</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Pre-integrated ClickHouse</Badge>
</div>
```

**Props:**
- `Icon`: Lucide icon name (string) or icon component (optional)
- `label`: Badge text (required)
- `variant`: `"moose" | "boreal" | "sloan" | "default"` (default: `"moose"`)
- `rounded`: `"md" | "full"` (default: `"md"`)
- `variant`: `"default" | "secondary" | "destructive" | "outline"` (use `"outline"` for standard doc badges)
- `className`: Additional styling (use `"bg-muted border-border text-muted-foreground"` for consistent styling)

### CodeEditorWrapper

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ order: 2
category: getting-started
---

import { Callout, ToggleBlock, ZoomImg, MuxVideo, BulletPointsCard, IconBadge, CTACards, CTACard, LanguageTabs, LanguageTabContent, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Callout, ToggleBlock, ZoomImg, MuxVideo, BulletPointsCard, CTACards, CTACard, LanguageTabs, LanguageTabContent, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Badge } from "@/components/ui/badge";
import { PathConfig } from "@/lib/path-config";

# Use Moose with Your Existing ClickHouse

<div className="flex flex-wrap md:flex-nowrap gap-4 my-8">
<IconBadge Icon="Clock" label="5 min setup" variant="moose" />
<IconBadge Icon="Check" label="Zero disruption to prod" variant="moose" />
<IconBadge Icon="DeviceLaptop" label="Code-first, local dev" variant="moose" />
<div className="flex items-center gap-2 mt-4 mb-4 flex-wrap">
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">5 min setup</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Zero disruption to prod</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Code-first, local dev</Badge>
</div>

## What This Guide Does
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@ category: getting-started
---


import { Callout, ToggleBlock, MuxVideo, BulletPointsCard, IconBadge, CTACards, CTACard, LanguageTabs, LanguageTabContent, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Callout, ToggleBlock, MuxVideo, BulletPointsCard, CTACards, CTACard, LanguageTabs, LanguageTabContent, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Badge } from "@/components/ui/badge";
import { PathConfig } from "@/lib/path-config";

# 5-Minute Quickstart

<div className="flex items-center gap-4 my-8 flex-wrap">
<IconBadge Icon="Clock" label="5 minute setup" variant="moose" />
<IconBadge Icon="Check" label="Zero config" variant="moose" />
<IconBadge Icon="DeviceLaptop" label="Local ClickHouse, Redpanda, and APIs" variant="moose" />
<div className="flex items-center gap-2 mt-4 mb-4 flex-wrap">
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">5 minute setup</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Zero config</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Local ClickHouse, Redpanda, and APIs</Badge>
</div>

<LanguageTabs>
Expand Down
13 changes: 7 additions & 6 deletions apps/framework-docs-v2/content/moosestack/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,17 @@ order: 1
category: getting-started
---

import { IconBadge, CTACard, CTACards, StaggeredCard, StaggeredCards, StaggeredContent, StaggeredCode, Callout, LanguageTabs, LanguageTabContent, CodeEditorWrapper } from "@/components/mdx";
import { CTACard, CTACards, StaggeredCard, StaggeredCards, StaggeredContent, StaggeredCode, Callout, LanguageTabs, LanguageTabContent, CodeEditorWrapper } from "@/components/mdx";
import { Badge } from "@/components/ui/badge";
import { Separator } from "@/components/ui/separator";
import { PathConfig } from "@/lib/path-config";

# MooseStack

<div className="flex items-center gap-4 my-8 flex-wrap">
<IconBadge Icon="Rocket" label="5 minute setup" variant="moose" />
<IconBadge Icon="Database" label="Pre-integrated ClickHouse, Redpanda, Temporal" variant="moose" />
<IconBadge Icon="DeviceLaptop" label="Hot-reload development" variant="moose" />
<div className="flex items-center gap-2 mt-4 mb-4 flex-wrap">
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">5 minute setup</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Pre-integrated ClickHouse, Redpanda, Temporal</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Hot-reload development</Badge>
</div>

Type-safe, code-first tooling for building real-time analytical backends--OLAP Databases, Data Streaming, ETL Workflows, Query APIs, and more.
Expand All @@ -25,7 +26,7 @@ Type-safe, code-first tooling for building real-time analytical backends--OLAP D
bash -i <(curl -fsSL https://fiveonefour.com/install.sh) moose
```

<CTACards rows={3} columns={1}>
<CTACards grouped>
<CTACard
title="5-minute Quickstart"
description="Start with a simple demo app to get a feel for Moose"
Expand Down
11 changes: 6 additions & 5 deletions apps/framework-docs-v2/content/moosestack/olap/model-table.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ order: 1
category: olap
---

import { Callout, BulletPointsCard, LanguageTabs, LanguageTabContent, IconBadge, CTACards, CTACard, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Callout, BulletPointsCard, LanguageTabs, LanguageTabContent, CTACards, CTACard, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Badge } from "@/components/ui/badge";
import { PathConfig } from "@/lib/path-config";

# Modeling Tables

<div className="flex items-center gap-4 my-8 flex-wrap">
<IconBadge Icon="Database" label="Code-first schema" variant="moose" />
<IconBadge Icon="Check" label="Type-safe" variant="moose" />
<IconBadge Icon="DeviceLaptop" label="Hot-reload" variant="moose" />
<div className="flex items-center gap-2 mt-4 mb-4 flex-wrap">
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Code-first schema</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Type-safe</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Hot-reload</Badge>
</div>

## Overview
Expand Down
11 changes: 6 additions & 5 deletions apps/framework-docs-v2/content/moosestack/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ order: 0
category: getting-started
---

import { Callout, ToggleBlock, LanguageTabs, LanguageTabContent, MuxVideo, BulletPointsCard, IconBadge, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Callout, ToggleBlock, LanguageTabs, LanguageTabContent, MuxVideo, BulletPointsCard, FileTree, Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/mdx";
import { Badge } from "@/components/ui/badge";

# 5-Minute Quickstart

<div className="flex items-center gap-4 my-8 flex-wrap">
<IconBadge Icon="Clock" label="5 minute setup" variant="moose" />
<IconBadge Icon="Check" label="Zero config" variant="moose" />
<IconBadge Icon="DeviceLaptop" label="Local ClickHouse, Redpanda, and APIs" variant="moose" />
<div className="flex items-center gap-2 mt-4 mb-4 flex-wrap">
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">5 minute setup</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Zero config</Badge>
<Badge variant="outline" className="bg-muted border-border text-muted-foreground">Local ClickHouse, Redpanda, and APIs</Badge>
</div>

<LanguageTabs>
Expand Down
17 changes: 14 additions & 3 deletions apps/framework-docs-v2/src/app/(docs)/[...slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -108,19 +108,30 @@ export default async function DocPage({ params }: PageProps) {
// Copy button is always enabled - it's a client component that works with static pages
const showCopyButton = true;

// Hide breadcrumbs for top-level section index pages
const topLevelIndexPages = [
"moosestack",
"moosestack/index",
"hosting/overview",
"hosting/index",
"ai/overview",
"ai/index",
];
const isTopLevelIndex = topLevelIndexPages.includes(slug);
Comment on lines +111 to +120
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Include root /ai and /hosting in top‑level index allowlist.

generateStaticParams adds ["ai"] and ["hosting"], but topLevelIndexPages doesn’t include "ai" or "hosting", so breadcrumbs still show on those index routes.

✅ Proposed fix
 const topLevelIndexPages = [
   "moosestack",
   "moosestack/index",
+  "hosting",
   "hosting/overview",
   "hosting/index",
+  "ai",
   "ai/overview",
   "ai/index",
 ];
🤖 Prompt for AI Agents
In `@apps/framework-docs-v2/src/app/`(docs)/[...slug]/page.tsx around lines 111 -
120, topLevelIndexPages currently lists "ai/index" and "hosting/index" but is
missing the root entries "ai" and "hosting", so breadcrumbs still appear for
those index routes; update the topLevelIndexPages array (used with
isTopLevelIndex) to include the strings "ai" and "hosting" (in addition to the
existing "ai/index" and "hosting/index") so that generateStaticParams entries
like ["ai"] and ["hosting"] are recognized as top‑level index pages and
breadcrumbs are hidden.


return (
<>
<div className="flex w-full flex-col gap-6 pt-4">
<div className="flex w-full min-w-0 flex-col gap-6 pt-4">
<div className="flex items-center justify-between">
<DocBreadcrumbs items={breadcrumbs} />
{!isTopLevelIndex && <DocBreadcrumbs items={breadcrumbs} />}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Menu shifts left when breadcrumbs are hidden

Low Severity

When isTopLevelIndex is true, the DocBreadcrumbs component is not rendered, leaving only the MarkdownMenu inside the flex container with justify-between. With a single child, flexbox positions it at the start (left side) rather than the end (right side). This causes the menu/copy button to unexpectedly shift from right to left on top-level index pages like /moosestack or /hosting/overview, creating visual inconsistency compared to other pages.

Fix in Cursor Fix in Web

{showCopyButton && (
<MarkdownMenu
content={content.content}
isMDX={content.isMDX ?? false}
/>
)}
</div>
<article className="prose prose-slate dark:prose-invert max-w-none w-full min-w-0">
<article className="prose dark:prose-invert max-w-none w-full min-w-0 overflow-x-auto">
{content.isMDX ?
<MDXRenderer source={content.content} />
: <div dangerouslySetInnerHTML={{ __html: content.content }} />}
Expand Down
17 changes: 12 additions & 5 deletions apps/framework-docs-v2/src/app/(docs)/guides/[...slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import { MDXRenderer } from "@/components/mdx-renderer";
import { DocBreadcrumbs } from "@/components/navigation/doc-breadcrumbs";
import { DynamicGuideBuilder } from "@/components/guides/dynamic-guide-builder";
import { MarkdownMenu } from "@/components/markdown-menu";
import { GuideIcon } from "@/components/guides/guide-header";
import { getGuideMetadataBySlug } from "@/config/navigation";

// Force static generation despite searchParams access
export const dynamic = "force-static";
Expand Down Expand Up @@ -109,14 +111,17 @@ export default async function GuidePage({ params }: PageProps) {
// Check if this is a dynamic guide by checking for guide.toml
const guideManifest = await parseGuideManifest(slug);

// Get guide metadata (icon) from navigation config
const guideMetadata = getGuideMetadataBySlug(slug);

if (guideManifest) {
// DYNAMIC GUIDE LOGIC
// Dynamic guides show a form first, steps load based on user selection
// No steps are pre-rendered - they load when user makes selections

return (
<>
<div className="flex w-full flex-col gap-6 pt-4">
<div className="flex w-full min-w-0 flex-col gap-6 pt-4">
<div className="flex items-center justify-between">
<DocBreadcrumbs items={breadcrumbs} />
{showCopyButton && (
Expand All @@ -126,7 +131,8 @@ export default async function GuidePage({ params }: PageProps) {
/>
)}
</div>
<article className="prose prose-slate dark:prose-invert max-w-none w-full min-w-0">
<GuideIcon iconName={guideMetadata?.iconName} />
<article className="prose dark:prose-invert max-w-none w-full min-w-0 overflow-x-auto">
{content.isMDX ?
<MDXRenderer source={content.content} />
: <div dangerouslySetInnerHTML={{ __html: content.content }} />}
Expand Down Expand Up @@ -197,7 +203,7 @@ export default async function GuidePage({ params }: PageProps) {

return (
<>
<div className="flex w-full flex-col gap-6 pt-4">
<div className="flex w-full min-w-0 flex-col gap-6 pt-4">
<div className="flex items-center justify-between">
<DocBreadcrumbs items={breadcrumbs} />
{showCopyButton && (
Expand All @@ -207,7 +213,8 @@ export default async function GuidePage({ params }: PageProps) {
/>
)}
</div>
<article className="prose prose-slate dark:prose-invert max-w-none w-full min-w-0">
<GuideIcon iconName={guideMetadata?.iconName} />
<article className="prose dark:prose-invert max-w-none w-full min-w-0 overflow-x-auto">
{content.isMDX ?
<MDXRenderer source={content.content} />
: <div dangerouslySetInnerHTML={{ __html: content.content }} />}
Expand All @@ -217,7 +224,7 @@ export default async function GuidePage({ params }: PageProps) {
<article
key={`step-${step.stepNumber}`}
id={`step-${step.stepNumber}`}
className="prose prose-slate dark:prose-invert max-w-none w-full min-w-0 scroll-mt-20"
className="prose dark:prose-invert max-w-none w-full min-w-0 overflow-x-auto scroll-mt-20"
>
<h2>
{step.stepNumber}. {step.title}
Expand Down
13 changes: 7 additions & 6 deletions apps/framework-docs-v2/src/app/(docs)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import type { ReactNode } from "react";
import { Suspense } from "react";
import React, { type ReactNode, Suspense } from "react";
import { SideNavServer } from "@/components/navigation/side-nav-server";
import { SidebarInset } from "@/components/ui/sidebar";
import { AnalyticsProvider } from "@/components/analytics-provider";
Expand All @@ -8,17 +7,19 @@ interface DocLayoutProps {
children: ReactNode;
}

export default function DocLayout({ children }: DocLayoutProps) {
export default function DocLayout({
children,
}: DocLayoutProps): React.JSX.Element {
return (
<AnalyticsProvider>
<div className="flex flex-1">
<div className="flex flex-1 min-w-0 w-full overflow-hidden">
<Suspense fallback={<div className="w-64" />}>
<SideNavServer />
</Suspense>
<SidebarInset>
<div className="container flex-1 pt-6 pb-12 lg:pt-8">
<div className="w-full min-w-0 flex-1 pt-6 pb-12 lg:pt-8 px-4 sm:px-6 lg:px-8 overflow-x-hidden">
{/* Reserve space for the right TOC on xl+ screens */}
<main className="relative flex flex-col gap-10 xl:grid xl:grid-cols-[minmax(0,1fr)_240px] xl:gap-12">
<main className="relative flex flex-col gap-10 xl:grid xl:grid-cols-[minmax(0,1fr)_240px] xl:gap-12 min-w-0 w-full max-w-5xl lg:max-w-6xl mx-auto">
{children}
</main>
</div>
Expand Down
Loading
Loading