From 7e7b6fe5e9fbdb782cd33d0e8afb9c50f7491590 Mon Sep 17 00:00:00 2001 From: jessiemongeon1 Date: Tue, 23 Jun 2026 18:19:40 -0500 Subject: [PATCH 1/8] feat(docs): add Kapa.ai sidebar integration Add AI-powered knowledge assistant (Kapa.ai) as a sidebar widget to the SDK documentation site. Includes KapaWidget React component with sidebar state detection, navbar trigger button, and CSS rules for responsive content shifting. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/docs/app/global.css | 51 +++++++++++ packages/docs/app/layout.config.tsx | 2 + packages/docs/app/layout.tsx | 16 ++++ packages/docs/components/KapaWidget.tsx | 111 ++++++++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 packages/docs/components/KapaWidget.tsx diff --git a/packages/docs/app/global.css b/packages/docs/app/global.css index 2bf66070c..021fdc4f0 100644 --- a/packages/docs/app/global.css +++ b/packages/docs/app/global.css @@ -3,3 +3,54 @@ @import 'fumadocs-ui/css/preset.css'; @source '../node_modules/fumadocs-ui/dist/**/*.js'; + +/* ---- Kapa sidebar content shift ---- */ +html.kapa-sidebar-open body { + width: calc(100vw - 500px) !important; + overflow-x: hidden; + transition: width 0.3s ease; +} + +html.kapa-sidebar-open nav { + right: 500px !important; + overflow: hidden; + transition: right 0.3s ease; +} + +html.kapa-sidebar-open .kapa-trigger-btn { + display: none !important; +} + +nav { + transition: right 0.3s ease; +} + +body { + transition: width 0.3s ease; +} + +@media (max-width: 768px) { + html.kapa-sidebar-open body { + width: 100vw !important; + } +} + +/* Kapa trigger button */ +.kapa-trigger-btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + cursor: pointer; + background: var(--fd-background); + color: var(--fd-foreground); + font-weight: 500; + font-size: 0.875rem; + padding: 0.5rem 1rem; + border-radius: 9999px; + border: 1px solid var(--fd-border); + transition: background-color 0.15s; +} + +.kapa-trigger-btn:hover { + background: var(--fd-muted); +} diff --git a/packages/docs/app/layout.config.tsx b/packages/docs/app/layout.config.tsx index d5d2e5f03..c3412527a 100644 --- a/packages/docs/app/layout.config.tsx +++ b/packages/docs/app/layout.config.tsx @@ -1,6 +1,7 @@ // Copyright (c) Mysten Labs, Inc. // SPDX-License-Identifier: Apache-2.0 import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; +import { KapaButton } from '@/components/KapaWidget'; /** * Shared layout configurations @@ -12,6 +13,7 @@ import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; export const baseOptions: BaseLayoutProps = { nav: { title: 'Mysten Labs SDKs', + children: , }, links: [ { diff --git a/packages/docs/app/layout.tsx b/packages/docs/app/layout.tsx index 3ded3165e..b884a280e 100644 --- a/packages/docs/app/layout.tsx +++ b/packages/docs/app/layout.tsx @@ -9,6 +9,7 @@ import { Inter } from 'next/font/google'; import Link from 'next/link'; import Script from 'next/script'; import CloudFlareAnalytics from '@/components/CloudFlareAnalytics'; +import { KapaSidebar } from '@/components/KapaWidget'; export const metadata: Metadata = { title: { @@ -72,6 +73,21 @@ export default function Layout({ children }: { children: React.ReactNode }) { {children} + +