Skip to content

Commit 6fce8f2

Browse files
rsbhclaude
andauthored
chore: replace mermaid with beautiful-mermaid (#42)
* feat: add prev/next nav fields to Page type 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> * fix: add std-env as root dep to unblock nitro beta 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> * feat: restructure default theme layout with tab bar 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> * chore: switch docs theme to default Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat: compute page prev/next on the server 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> * feat: wrap content in card with prev/next sub-navbar 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> * feat: sidebar top navbar and layout polish - 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> * feat: floating TOC with hover panel 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> * fix: address PR review feedback - 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> * feat: show sidebar on landing, fix sidebar header height Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix: address copilot review feedback (phase 1) - 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> * refactor: address copilot review feedback (phase 2) - 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> * feat(default theme): nested collapsible sidebar groups - 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> * docs: rename Tabs.Trigger to Tabs.Tab in components doc Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * refactor(default theme): align sidebar + card to Figma - 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> * feat(default theme): content-dir + API cells at top of sidebar - 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> * refactor(default theme): align sidebar text + spacing to Figma - 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> * feat(default theme): config-driven sidebar logo - 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> * feat(config): optional icon per content dir and API - 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> * feat: always enable raw .md and llms.txt endpoints - 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> * feat: drop Footer component and footer config - 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> * feat: add <link rel="alternate"> markdown version on docs pages 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> * feat(default theme): Open in AI dropdown 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> * feat(search): migrate to apsara 1.0.0-rc.4 Command API - 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> * refactor(default theme): extract --navbar-height CSS variable 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> * feat(OpenInAI): add ChatGPT and Claude brand icons to menu items Inline SVG icons using currentColor so they inherit the text color. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix: address coderabbit review feedback - 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> * chore: replace mermaid with beautiful-mermaid 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> * feat(mdx): render Mermaid synchronously via beautiful-mermaid - 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> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent e0336dc commit 6fce8f2

3 files changed

Lines changed: 31 additions & 272 deletions

File tree

0 commit comments

Comments
 (0)