chore: replace mermaid with beautiful-mermaid#42
Merged
Conversation
Prepare Page type for backend-provided prev/next links used by the docs sub-navbar. Adds PageNavLink/PageNav types, extends Page via extends PageNav, unifies PageData with Page in page context, and threads null placeholders through SSR + hydration until backend computes real values. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
nitro@3.0.260311-beta lists std-env in devDependencies but its runtime imports it. Node ESM resolution from nitro's isolated cache path fails without std-env at top-level node_modules. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drop the top Navbar; move navigation into a per-section tab bar alongside the sidebar. Resize sidebar to 262px, swap button-based nav links for pill-style tabs using mini typography tokens. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add getPageNav helper that flattens the page tree and returns the adjacent PageNavLinks for a slug. Both the /api/page handler and SSR pageData now populate prev/next so the client can render navigation without re-flattening the tree. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Default theme now renders the main content inside a rounded, bordered card with a sub-navbar at the top containing prev/next IconButtons driven by the server-provided page nav, followed by breadcrumbs. Breadcrumbs move out of Page.tsx since the Layout owns the chrome. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add sidebar top navbar with placeholder logo, icon-only search, and IconButton-based theme switcher using resolvedTheme so system mode lands on the correct icon. - Simplify Search component to IconButton only, drop cmdk kbd trigger. - Wrap content in a bordered card, remove TOC from Page, align heading + paragraph typography with Aurora tokens. - Secondary bg on sidebar + card wrapper, primary bg on content area. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
TOC renders as short horizontal markers floating right-center, each width scaled from the heading text length (base + per char, clamped). Hovering the aside fades the markers out and reveals a panel with the full heading list, active state highlighted. Shadows switch to the Apsara --rs-shadow-soft token. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- page-context: coerce prev/next from API response to null so the state always matches the Page type instead of carrying undefined. - source.getPageNav: guard PageNavLink.title to string-only page names so ReactNode names don't stringify to "[object Object]". - Layout tabs: compute per-entry active state from api.basePath instead of the shared isApiRoute boolean, so only the matching API tab highlights when multiple APIs are configured. - Layout: skip breadcrumbs on API routes since the docs tree doesn't include API paths. - Search: add title="Search (⌘K)" so the keyboard shortcut stays discoverable after the kbd hint was removed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- search shortcut tooltip: platform-neutral "Ctrl/⌘K" - TOC: mirror :hover with :focus-within for keyboard users - getPageNav: derive PageNavLink.title from URL when page name is non-string Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- getPageNav: accept pre-loaded tree to avoid redundant tree rebuild - entry-server: skip getPageNav when page is null; share tree with nav - entry-client: nullable frontmatter/relativePath/originalPath in EmbeddedData; narrow at usage Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- SidebarNode recurses to depth 1 with data-depth attr on section - Depth 0: non-collapsible section header - Depth 1: collapsible sub-group with right-aligned chevron - Grandchildren folders (depth > 1) ignored - Hide sidebar scrollbar - Style navGroup header/trigger/label/chevron via apsara classNames slots Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Drop tabBar (ContentDirButtons + API tabs) and subNav card-chrome - Sidebar header: logo + search + theme only (version switcher moved out) - Sidebar footer: holds VersionSwitcher, hidden when no versions - Sidebar bg uses --rs-color-background-base-secondary - Card: border-left only, no border-radius - cardWrapper: drop horizontal padding - TOC: drop extra right offset Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Render content-dir entries and API entries as Sidebar.Item cells at the top of Sidebar.Main, above the page tree - Hidden when total (content + API) count is ≤ 1 - Drop Apsara's default header margin-bottom Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Top content links: tertiary text by default, primary when active, transparent bg
- Nav group label uses secondary for section headers, primary for sub-groups
- Nav group: zero out default margin-top, apply space-7 only to top-level (data-depth=0)
- Zero out gap on Sidebar.Main and nav-group-items
- Breadcrumbs: use render={<RouterLink>} so SPA navigation works (not-current items)
- Wrap top content/API links in .topLinks div with bottom margin
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- New SidebarLogo component reads config.logo.light/dark - Falls back to BookOpenIcon when no logo is configured - Picks src based on resolvedTheme from Apsara useTheme() Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Schema accepts icon string on content entries and api entries - Icon can be a URL or an inline SVG string (uses currentColor) - renderConfigIcon helper picks <img> for URL or inlines SVG - Fallback to DocumentTextIcon / CodeBracketSquareIcon when absent Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Drop llms config section; routes serve unconditionally - Remove llms.enabled gating from .md slug route and llms.txt routes - Clean up llms: enabled: true from docs and versioned example yamls Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Remove footerSchema + FooterConfig from config schema - Delete Footer component and CSS - Remove Footer usage from paper theme Layout - Clean footer: sections from docs and basic example yamls Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Head accepts optional markdownHref; DocsPage passes `/${slug}.md` so
crawlers and AI assistants can discover the raw markdown source.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds OpenInAI menu in the subNav with four actions: - Copy as MD (fetches the page's .md and writes to clipboard) - View MD (opens the raw .md in a new tab) - Open in ChatGPT (chatgpt.com/?q=Read <mdUrl>) - Open in Claude (claude.ai/new?q=Read <mdUrl>) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Bump @raystack/apsara to 1.0.0-rc.4 - Drop manual Dialog wrapper; use Command.Dialog + Command.DialogContent - Command.List -> Command.Content - Command.Group heading -> <Command.Label> - Item onSelect -> onClick; Input leadingIcon replaces external icon - Style dialogContent (width/radius/top) to position at 20% from top Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace four 48px usages (sidebar header, sidebar footer, subNav, etc) with var(--navbar-height) defined on .layout. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Inline SVG icons using currentColor so they inherit the text color. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Layout: tighten isApiRoute match (exact /apis or /apis/ prefix) so breadcrumb suppression doesn't catch unrelated paths - Sidebar: flex: 0 0 262px + flex-column so it doesn't shrink; Main gets overflow-y: auto + min-height: 0 for long trees - Card: overflow visible so floating TOC + focus rings aren't clipped - Toc markers: aria-hidden + tabIndex=-1 so the panel nav is the single accessible entry - Toc: hide below 900px viewport via media query Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
beautiful-mermaid renders SVG synchronously with zero DOM deps, removing the need for a dynamic import and the mermaid runtime. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Sync renderMermaidSVG inside useMemo (no flash, no async state) - Map bg/fg/line/accent/muted/surface/border to apsara color tokens - Surface render errors as a <pre> message instead of crashing Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughSummary by CodeRabbitRelease Notes
WalkthroughPackage dependency replaced from Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
rohilsurana
approved these changes
Apr 28, 2026
rsbh
added a commit
that referenced
this pull request
Apr 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Library: https://github.com/lukilabs/beautiful-mermaid
Summary
mermaid@^11.13.0forbeautiful-mermaid@^1.1.3useMemo(no dynamic import, no flash, no async state)bg:--rs-color-background-base-primaryfg:--rs-color-foreground-base-primaryline:--rs-color-border-base-focusaccent:--rs-color-foreground-accent-primarymuted:--rs-color-foreground-base-secondarysurface:--rs-color-background-neutral-secondaryborder:--rs-color-border-base-tertiary<pre>instead of crashing the pageTest plan
bun run dev:examples:frontier— diagrams render with current theme🤖 Generated with Claude Code