ardo 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -777,10 +777,19 @@ import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
777
777
  function HomePage() {
778
778
  const pageData = usePageData();
779
779
  const config = useConfig();
780
+ const themeConfig = useThemeConfig();
780
781
  const hero = pageData?.frontmatter.hero;
781
782
  const features = pageData?.frontmatter.features;
782
783
  return /* @__PURE__ */ jsxs11("div", { className: "press-home", children: [
783
- /* @__PURE__ */ jsx11(Header, {}),
784
+ /* @__PURE__ */ jsx11(
785
+ Header,
786
+ {
787
+ logo: themeConfig.logo,
788
+ title: themeConfig.siteTitle !== false ? config.title : void 0,
789
+ nav: themeConfig.nav && themeConfig.nav.length > 0 ? /* @__PURE__ */ jsx11(Nav, { children: themeConfig.nav.map((item, index) => /* @__PURE__ */ jsx11(NavLink, { to: item.link, children: item.text }, index)) }) : void 0,
790
+ actions: themeConfig.socialLinks?.map((link, index) => /* @__PURE__ */ jsx11(SocialLink, { href: link.link, icon: link.icon, ariaLabel: link.ariaLabel }, index))
791
+ }
792
+ ),
784
793
  /* @__PURE__ */ jsxs11("main", { className: "press-home-main", children: [
785
794
  hero && /* @__PURE__ */ jsx11("section", { className: "press-hero", children: /* @__PURE__ */ jsxs11("div", { className: "press-hero-container", children: [
786
795
  hero.image && /* @__PURE__ */ jsx11("div", { className: "press-hero-image", children: /* @__PURE__ */ jsx11(
@@ -1132,4 +1141,4 @@ export {
1132
1141
  TabPanel,
1133
1142
  TabPanels
1134
1143
  };
1135
- //# sourceMappingURL=chunk-BPJODFL7.js.map
1144
+ //# sourceMappingURL=chunk-2JBVPO6S.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/Layout.tsx","../src/theme/Header.tsx","../src/theme/components/ThemeToggle.tsx","../src/theme/components/Search.tsx","../src/theme/Sidebar.tsx","../src/theme/Footer.tsx","../src/theme/Nav.tsx","../src/theme/TOC.tsx","../src/theme/Content.tsx","../src/theme/DocPage.tsx","../src/theme/HomePage.tsx","../src/theme/components/CodeBlock.tsx","../src/theme/components/CopyButton.tsx","../src/theme/components/Container.tsx","../src/theme/components/Tabs.tsx"],"sourcesContent":["import { type ReactNode } from \"react\"\n\n// =============================================================================\n// Layout Component\n// =============================================================================\n\nexport interface LayoutProps {\n /** Header content */\n header?: ReactNode\n /** Sidebar content */\n sidebar?: ReactNode\n /** Footer content */\n footer?: ReactNode\n /** Main content */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Layout component with explicit slot props.\n *\n * @example\n * ```tsx\n * <Layout\n * header={<Header logo=\"/logo.svg\" title=\"Ardo\" nav={...} />}\n * sidebar={<Sidebar>...</Sidebar>}\n * footer={<Footer message=\"MIT License\" />}\n * >\n * <Outlet />\n * </Layout>\n * ```\n */\nexport function Layout({ header, sidebar, footer, children, className }: LayoutProps) {\n return (\n <div className={className ?? \"press-layout\"}>\n {header}\n <div className=\"press-layout-container\">\n {sidebar}\n <main className=\"press-main\">{children}</main>\n </div>\n {footer}\n </div>\n )\n}\n","import { useState, type ReactNode } from \"react\"\nimport { Link } from \"@tanstack/react-router\"\nimport { ThemeToggle } from \"./components/ThemeToggle\"\nimport { Search } from \"./components/Search\"\n\n// =============================================================================\n// Header Component\n// =============================================================================\n\nexport interface HeaderProps {\n /** Logo image URL or light/dark variants */\n logo?: string | { light: string; dark: string }\n /** Site title displayed next to logo */\n title?: string\n /** Navigation content (Nav component or custom) */\n nav?: ReactNode\n /** Actions/right side content (social links, custom buttons) */\n actions?: ReactNode\n /** Show search (default: true) */\n search?: boolean\n /** Show theme toggle (default: true) */\n themeToggle?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Header component with explicit slot props.\n *\n * @example\n * ```tsx\n * <Header\n * logo=\"/logo.svg\"\n * title=\"Ardo\"\n * nav={\n * <Nav>\n * <NavLink to=\"/guide\">Guide</NavLink>\n * <NavLink to=\"/api\">API</NavLink>\n * </Nav>\n * }\n * actions={\n * <SocialLink href=\"https://github.com/...\" icon=\"github\" />\n * }\n * />\n * ```\n */\nexport function Header({\n logo,\n title,\n nav,\n actions,\n search = true,\n themeToggle = true,\n className,\n}: HeaderProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n\n return (\n <header className={className ?? \"press-header\"}>\n <div className=\"press-header-container\">\n {/* Left: Mobile menu button + Logo/Title */}\n <div className=\"press-header-left\">\n <button\n className=\"press-mobile-menu-button\"\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n aria-label=\"Toggle menu\"\n aria-expanded={mobileMenuOpen}\n >\n <span className=\"press-hamburger\">\n <span></span>\n <span></span>\n <span></span>\n </span>\n </button>\n\n <Link to=\"/\" className=\"press-logo-link\">\n {logo && (\n <img\n src={typeof logo === \"string\" ? logo : logo.light}\n alt={title ?? \"Logo\"}\n className=\"press-logo\"\n />\n )}\n {title && <span className=\"press-site-title\">{title}</span>}\n </Link>\n </div>\n\n {/* Center: Navigation */}\n {nav && <div className=\"press-nav\">{nav}</div>}\n\n {/* Right: Search, Theme Toggle, Actions */}\n <div className=\"press-header-right\">\n {search && <Search />}\n {themeToggle && <ThemeToggle />}\n {actions}\n </div>\n </div>\n\n {/* Mobile menu */}\n {mobileMenuOpen && (\n <div className=\"press-mobile-menu\">\n <nav className=\"press-mobile-nav\" onClick={() => setMobileMenuOpen(false)}>\n {nav}\n </nav>\n </div>\n )}\n </header>\n )\n}\n\n// =============================================================================\n// SocialLink Component\n// =============================================================================\n\nexport interface SocialLinkProps {\n /** URL to link to */\n href: string\n /** Social icon type */\n icon: \"github\" | \"twitter\" | \"discord\" | \"linkedin\" | \"youtube\" | \"npm\"\n /** Accessible label */\n ariaLabel?: string\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Social media link with icon.\n *\n * @example\n * ```tsx\n * <SocialLink href=\"https://github.com/...\" icon=\"github\" />\n * ```\n */\nexport function SocialLink({ href, icon, ariaLabel, className }: SocialLinkProps) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className ?? \"press-social-link\"}\n aria-label={ariaLabel ?? icon}\n >\n <SocialIcon icon={icon} />\n </a>\n )\n}\n\n// =============================================================================\n// Social Icon Component (internal)\n// =============================================================================\n\nfunction SocialIcon({ icon }: { icon: string }) {\n const icons: Record<string, string> = {\n github:\n \"M12 2C6.477 2 2 6.477 2 12c0 4.42 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.008-.866-.013-1.7-2.782.604-3.369-1.34-3.369-1.34-.454-1.156-1.11-1.463-1.11-1.463-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.831.092-.646.35-1.086.636-1.336-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.743 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z\",\n twitter:\n \"M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z\",\n discord:\n \"M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028 14.09 14.09 0 001.226-1.994.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\",\n linkedin:\n \"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\",\n youtube:\n \"M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\",\n npm: \"M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z\",\n }\n\n const path = icons[icon] || icons.github\n\n return (\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\n <path d={path} />\n </svg>\n )\n}\n","import { useState, useEffect } from \"react\"\n\ntype Theme = \"light\" | \"dark\" | \"system\"\n\nexport function ThemeToggle() {\n const [theme, setTheme] = useState<Theme>(\"system\")\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n\n const stored = localStorage.getItem(\"press-theme\") as Theme | null\n if (stored) {\n setTheme(stored)\n applyTheme(stored)\n } else {\n applyTheme(\"system\")\n }\n }, [])\n\n const toggleTheme = () => {\n const nextTheme: Theme = theme === \"light\" ? \"dark\" : theme === \"dark\" ? \"system\" : \"light\"\n setTheme(nextTheme)\n localStorage.setItem(\"press-theme\", nextTheme)\n applyTheme(nextTheme)\n }\n\n if (!mounted) {\n return (\n <button className=\"press-theme-toggle\" aria-label=\"Toggle theme\">\n <span className=\"press-theme-icon\">\n <SunIcon />\n </span>\n </button>\n )\n }\n\n return (\n <button\n className=\"press-theme-toggle\"\n onClick={toggleTheme}\n aria-label={`Switch to ${theme === \"light\" ? \"dark\" : theme === \"dark\" ? \"system\" : \"light\"} theme`}\n >\n <span className=\"press-theme-icon\">\n {theme === \"light\" && <SunIcon />}\n {theme === \"dark\" && <MoonIcon />}\n {theme === \"system\" && <SystemIcon />}\n </span>\n </button>\n )\n}\n\nfunction applyTheme(theme: Theme) {\n const root = document.documentElement\n\n if (theme === \"system\") {\n const isDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n root.classList.toggle(\"dark\", isDark)\n root.classList.toggle(\"light\", !isDark)\n } else {\n root.classList.toggle(\"dark\", theme === \"dark\")\n root.classList.toggle(\"light\", theme === \"light\")\n }\n}\n\nfunction SunIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </svg>\n )\n}\n\nfunction MoonIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n )\n}\n\nfunction SystemIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </svg>\n )\n}\n","import { useState, useEffect, useRef, useCallback } from \"react\"\nimport { Link } from \"@tanstack/react-router\"\nimport { useThemeConfig } from \"../../runtime/hooks\"\nimport MiniSearch, { type SearchResult } from \"minisearch\"\n\ninterface SearchDoc {\n id: string\n title: string\n content: string\n path: string\n section?: string\n}\n\nlet searchIndex: MiniSearch<SearchDoc> | null = null\n\nexport function Search() {\n const [isOpen, setIsOpen] = useState(false)\n const [query, setQuery] = useState(\"\")\n const [results, setResults] = useState<SearchResult[]>([])\n const [selectedIndex, setSelectedIndex] = useState(0)\n const inputRef = useRef<HTMLInputElement>(null)\n const themeConfig = useThemeConfig()\n\n const placeholder = themeConfig.search?.placeholder ?? \"Search...\"\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\n e.preventDefault()\n setIsOpen(true)\n }\n\n if (e.key === \"Escape\") {\n setIsOpen(false)\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown)\n return () => document.removeEventListener(\"keydown\", handleKeyDown)\n }, [])\n\n useEffect(() => {\n if (isOpen && inputRef.current) {\n inputRef.current.focus()\n }\n }, [isOpen])\n\n useEffect(() => {\n if (!isOpen) {\n setQuery(\"\")\n setResults([])\n setSelectedIndex(0)\n }\n }, [isOpen])\n\n const loadSearchIndex = useCallback(async () => {\n if (searchIndex) return searchIndex\n\n try {\n const response = await fetch(\"/_press/search-index.json\")\n if (!response.ok) return null\n\n const docs: SearchDoc[] = await response.json()\n\n searchIndex = new MiniSearch<SearchDoc>({\n fields: [\"title\", \"content\", \"section\"],\n storeFields: [\"title\", \"path\", \"section\"],\n searchOptions: {\n boost: { title: 2 },\n fuzzy: 0.2,\n prefix: true,\n },\n })\n\n searchIndex.addAll(docs)\n return searchIndex\n } catch {\n return null\n }\n }, [])\n\n const handleSearch = useCallback(\n async (searchQuery: string) => {\n setQuery(searchQuery)\n\n if (!searchQuery.trim()) {\n setResults([])\n return\n }\n\n const index = await loadSearchIndex()\n if (!index) {\n setResults([])\n return\n }\n\n const searchResults = index.search(searchQuery).slice(0, 10)\n setResults(searchResults)\n setSelectedIndex(0)\n },\n [loadSearchIndex]\n )\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setSelectedIndex((prev) => Math.min(prev + 1, results.length - 1))\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setSelectedIndex((prev) => Math.max(prev - 1, 0))\n } else if (e.key === \"Enter\" && results[selectedIndex]) {\n e.preventDefault()\n const result = results[selectedIndex]\n window.location.href = result.path as string\n setIsOpen(false)\n }\n }\n\n return (\n <>\n <button className=\"press-search-button\" onClick={() => setIsOpen(true)} aria-label=\"Search\">\n <SearchIcon />\n <span className=\"press-search-button-text\">{placeholder}</span>\n <span className=\"press-search-kbd\">\n <kbd>⌘</kbd>\n <kbd>K</kbd>\n </span>\n </button>\n\n {isOpen && (\n <div className=\"press-search-modal\" onClick={() => setIsOpen(false)}>\n <div className=\"press-search-dialog\" onClick={(e) => e.stopPropagation()}>\n <div className=\"press-search-input-wrapper\">\n <SearchIcon />\n <input\n ref={inputRef}\n type=\"text\"\n className=\"press-search-input\"\n placeholder={placeholder}\n value={query}\n onChange={(e) => handleSearch(e.target.value)}\n onKeyDown={handleKeyDown}\n />\n {query && (\n <button\n className=\"press-search-clear\"\n onClick={() => handleSearch(\"\")}\n aria-label=\"Clear search\"\n >\n ×\n </button>\n )}\n </div>\n\n {results.length > 0 && (\n <ul className=\"press-search-results\">\n {results.map((result, index) => (\n <li key={result.id}>\n <Link\n to={result.path as string}\n className={[\"press-search-result\", index === selectedIndex && \"selected\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setIsOpen(false)}\n >\n <span className=\"press-search-result-title\">{result.title as string}</span>\n {result.section && (\n <span className=\"press-search-result-section\">\n {result.section as string}\n </span>\n )}\n </Link>\n </li>\n ))}\n </ul>\n )}\n\n {query && results.length === 0 && (\n <div className=\"press-search-no-results\">No results found for \"{query}\"</div>\n )}\n\n <div className=\"press-search-footer\">\n <span>\n <kbd>↑</kbd> <kbd>↓</kbd> to navigate\n </span>\n <span>\n <kbd>↵</kbd> to select\n </span>\n <span>\n <kbd>esc</kbd> to close\n </span>\n </div>\n </div>\n </div>\n )}\n </>\n )\n}\n\nfunction SearchIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n )\n}\n","import {\n useState,\n type ReactNode,\n Children,\n isValidElement,\n createContext,\n useContext,\n} from \"react\"\nimport { Link, useRouterState } from \"@tanstack/react-router\"\nimport type { SidebarItem as SidebarItemType } from \"../config/types\"\n\n// =============================================================================\n// Sidebar Context\n// =============================================================================\n\ninterface SidebarContextValue {\n currentPath: string\n}\n\nconst SidebarContext = createContext<SidebarContextValue>({ currentPath: \"\" })\n\nfunction useSidebarContext() {\n return useContext(SidebarContext)\n}\n\n// =============================================================================\n// Sidebar Component Types\n// =============================================================================\n\nexport interface SidebarProps {\n /** Sidebar items (for data-driven approach) */\n items?: SidebarItemType[]\n /** Children for JSX composition (SidebarGroup, SidebarLink) */\n children?: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n// =============================================================================\n// Sidebar Main Component\n// =============================================================================\n\n/**\n * Sidebar component supporting both data-driven and JSX composition patterns.\n *\n * @example Data-driven (items prop)\n * ```tsx\n * <Sidebar items={[\n * { text: 'Introduction', link: '/intro' },\n * { text: 'Guide', items: [\n * { text: 'Getting Started', link: '/guide/getting-started' }\n * ]}\n * ]} />\n * ```\n *\n * @example JSX composition\n * ```tsx\n * <Sidebar>\n * <SidebarLink to=\"/intro\">Introduction</SidebarLink>\n * <SidebarGroup title=\"Guide\">\n * <SidebarLink to=\"/guide/getting-started\">Getting Started</SidebarLink>\n * </SidebarGroup>\n * </Sidebar>\n * ```\n */\nexport function Sidebar({ items, children, className }: SidebarProps) {\n const pathname = useRouterState({ select: (s) => s.location.pathname })\n\n return (\n <SidebarContext.Provider value={{ currentPath: pathname }}>\n <aside className={className ?? \"press-sidebar\"}>\n <nav className=\"press-sidebar-nav\">\n {items ? (\n <SidebarItems items={items} depth={0} />\n ) : (\n <ul className=\"press-sidebar-list press-sidebar-list-0\">{children}</ul>\n )}\n </nav>\n </aside>\n </SidebarContext.Provider>\n )\n}\n\n// =============================================================================\n// SidebarGroup Component\n// =============================================================================\n\nexport interface SidebarGroupProps {\n /** Group title */\n title: string\n /** Optional link for the group title */\n to?: string\n /** Initial collapsed state (default: false) */\n collapsed?: boolean\n /** Whether group is collapsible (default: true if has children) */\n collapsible?: boolean\n /** Children (SidebarLink, nested SidebarGroup) */\n children?: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Group component for organizing sidebar links.\n *\n * @example\n * ```tsx\n * <SidebarGroup title=\"Guide\">\n * <SidebarLink to=\"/guide/intro\">Introduction</SidebarLink>\n * <SidebarLink to=\"/guide/setup\">Setup</SidebarLink>\n * </SidebarGroup>\n * ```\n *\n * @example With collapsible state\n * ```tsx\n * <SidebarGroup title=\"Advanced\" collapsed>\n * <SidebarLink to=\"/advanced/config\">Configuration</SidebarLink>\n * </SidebarGroup>\n * ```\n */\nexport function SidebarGroup({\n title,\n to,\n collapsed: initialCollapsed = false,\n collapsible = true,\n children,\n className,\n}: SidebarGroupProps) {\n const [collapsed, setCollapsed] = useState(initialCollapsed)\n const { currentPath } = useSidebarContext()\n\n // Check if any child is active\n const isChildActive = checkChildrenActive(children, currentPath)\n\n const textClassName = [\"press-sidebar-text\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const linkClassName = [\"press-sidebar-link\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const hasChildren = Children.count(children) > 0\n\n return (\n <li className={className ?? \"press-sidebar-item\"}>\n <div className=\"press-sidebar-item-header\">\n {to ? (\n <Link to={to} className={linkClassName} activeProps={{ className: \"active\" }}>\n {title}\n </Link>\n ) : (\n <span\n className={textClassName}\n onClick={() => collapsible && hasChildren && setCollapsed(!collapsed)}\n style={collapsible && hasChildren ? { cursor: \"pointer\" } : undefined}\n >\n {title}\n </span>\n )}\n\n {collapsible && hasChildren && (\n <button\n className={[\"press-sidebar-collapse\", collapsed && \"collapsed\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? \"Expand\" : \"Collapse\"}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </button>\n )}\n </div>\n\n {hasChildren && !collapsed && (\n <ul className=\"press-sidebar-list press-sidebar-list-1\">{children}</ul>\n )}\n </li>\n )\n}\n\n// =============================================================================\n// SidebarLink Component\n// =============================================================================\n\nexport interface SidebarLinkProps {\n /** Internal route path */\n to: string\n /** Link text */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Sidebar navigation link.\n *\n * @example\n * ```tsx\n * <SidebarLink to=\"/guide/getting-started\">Getting Started</SidebarLink>\n * ```\n */\nexport function SidebarLink({ to, children, className }: SidebarLinkProps) {\n return (\n <li className=\"press-sidebar-item\">\n <Link\n to={to}\n className={className ?? \"press-sidebar-link\"}\n activeProps={{ className: \"active\" }}\n >\n {children}\n </Link>\n </li>\n )\n}\n\n// =============================================================================\n// Internal: Data-driven sidebar rendering\n// =============================================================================\n\ninterface SidebarItemsProps {\n items: SidebarItemType[]\n depth: number\n}\n\nfunction SidebarItems({ items, depth }: SidebarItemsProps) {\n return (\n <ul className={`press-sidebar-list press-sidebar-list-${depth}`}>\n {items.map((item, index) => (\n <SidebarItemComponent key={index} item={item} depth={depth} />\n ))}\n </ul>\n )\n}\n\ninterface SidebarItemComponentProps {\n item: SidebarItemType\n depth: number\n}\n\nfunction SidebarItemComponent({ item, depth }: SidebarItemComponentProps) {\n const { currentPath } = useSidebarContext()\n const [collapsed, setCollapsed] = useState(item.collapsed ?? false)\n\n const hasChildren = item.items && item.items.length > 0\n\n const isChildActive =\n hasChildren &&\n item.items!.some(\n (child) =>\n child.link === currentPath ||\n (child.items && child.items.some((grandchild) => grandchild.link === currentPath))\n )\n\n const linkClassName = [\"press-sidebar-link\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const textClassName = [\"press-sidebar-text\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n return (\n <li className=\"press-sidebar-item\">\n <div className=\"press-sidebar-item-header\">\n {item.link ? (\n <Link to={item.link} className={linkClassName} activeProps={{ className: \"active\" }}>\n {item.text}\n </Link>\n ) : (\n <span className={textClassName} onClick={() => hasChildren && setCollapsed(!collapsed)}>\n {item.text}\n </span>\n )}\n\n {hasChildren && (\n <button\n className={[\"press-sidebar-collapse\", collapsed && \"collapsed\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? \"Expand\" : \"Collapse\"}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </button>\n )}\n </div>\n\n {hasChildren && !collapsed && <SidebarItems items={item.items!} depth={depth + 1} />}\n </li>\n )\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\nfunction checkChildrenActive(children: ReactNode, currentPath: string): boolean {\n let isActive = false\n\n Children.forEach(children, (child) => {\n if (isActive) return\n\n if (isValidElement(child)) {\n // Check SidebarLink\n if (child.type === SidebarLink && (child.props as SidebarLinkProps).to === currentPath) {\n isActive = true\n return\n }\n\n // Check nested SidebarGroup\n if (child.type === SidebarGroup) {\n const groupProps = child.props as SidebarGroupProps\n if (groupProps.to === currentPath) {\n isActive = true\n return\n }\n if (groupProps.children && checkChildrenActive(groupProps.children, currentPath)) {\n isActive = true\n return\n }\n }\n }\n })\n\n return isActive\n}\n","import { type ReactNode } from \"react\"\n\n// =============================================================================\n// Footer Component\n// =============================================================================\n\nexport interface FooterProps {\n /** Footer message (supports HTML string) */\n message?: string\n /** Copyright text (supports HTML string) */\n copyright?: string\n /** Custom content (overrides message/copyright) */\n children?: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Footer component with message and copyright props.\n *\n * @example Simple usage\n * ```tsx\n * <Footer message=\"MIT License\" copyright=\"2026 Sebastian Software\" />\n * ```\n *\n * @example With HTML\n * ```tsx\n * <Footer\n * message=\"Built with <a href='...'>Ardo</a>\"\n * copyright=\"Copyright &copy; 2026\"\n * />\n * ```\n *\n * @example Custom content\n * ```tsx\n * <Footer>\n * <CustomFooterContent />\n * </Footer>\n * ```\n */\nexport function Footer({ message, copyright, children, className }: FooterProps) {\n const hasContent = message || copyright || children\n\n if (!hasContent) {\n return null\n }\n\n return (\n <footer className={className ?? \"press-footer\"}>\n <div className=\"press-footer-container\">\n {children ?? (\n <>\n {message && (\n <p className=\"press-footer-message\" dangerouslySetInnerHTML={{ __html: message }} />\n )}\n {copyright && (\n <p\n className=\"press-footer-copyright\"\n dangerouslySetInnerHTML={{ __html: copyright }}\n />\n )}\n </>\n )}\n </div>\n </footer>\n )\n}\n\n// Type exports for compound pattern (kept for backwards compatibility)\nexport interface FooterMessageProps {\n children: ReactNode\n className?: string\n}\n\nexport interface FooterCopyrightProps {\n children: ReactNode\n className?: string\n}\n","import { type ReactNode, useState, createContext, useContext } from \"react\"\nimport { Link } from \"@tanstack/react-router\"\n\n// Nav context for shared state\ninterface NavContextValue {\n mobileMenuOpen: boolean\n setMobileMenuOpen: (open: boolean) => void\n}\n\nconst NavContext = createContext<NavContextValue | null>(null)\n\nfunction useNavContext() {\n return useContext(NavContext)\n}\n\n// =============================================================================\n// Nav Component\n// =============================================================================\n\nexport interface NavProps {\n children?: ReactNode\n className?: string\n}\n\n/**\n * Navigation container component for composing navigation links.\n *\n * @example\n * ```tsx\n * <Nav>\n * <NavLink to=\"/guide\">Guide</NavLink>\n * <NavLink to=\"/api\">API</NavLink>\n * <NavLink href=\"https://github.com/...\">GitHub</NavLink>\n * </Nav>\n * ```\n */\nexport function Nav({ children, className }: NavProps) {\n return <nav className={className ?? \"press-nav\"}>{children}</nav>\n}\n\n// =============================================================================\n// NavLink Component\n// =============================================================================\n\nexport interface NavLinkProps {\n /** Internal route path (uses TanStack Router Link) */\n to?: string\n /** External URL (uses anchor tag) */\n href?: string\n /** Link text or children */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n /** Active state match pattern */\n activeMatch?: string\n}\n\n/**\n * Navigation link component supporting both internal routes and external URLs.\n *\n * @example\n * ```tsx\n * // Internal link\n * <NavLink to=\"/guide\">Guide</NavLink>\n *\n * // External link\n * <NavLink href=\"https://github.com/...\">GitHub</NavLink>\n * ```\n */\nexport function NavLink({ to, href, children, className, activeMatch }: NavLinkProps) {\n const navContext = useNavContext()\n const baseClassName = className ?? \"press-nav-link\"\n\n // Handle click for mobile menu\n const handleClick = () => {\n navContext?.setMobileMenuOpen(false)\n }\n\n // External link\n if (href) {\n return (\n <a\n href={href}\n className={baseClassName}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={handleClick}\n >\n {children}\n </a>\n )\n }\n\n // Internal link\n if (to) {\n return (\n <Link\n to={to}\n className={baseClassName}\n activeProps={{ className: \"active\" }}\n activeOptions={activeMatch ? { exact: false } : { exact: false }}\n onClick={handleClick}\n >\n {children}\n </Link>\n )\n }\n\n // Text-only (no link)\n return <span className={baseClassName}>{children}</span>\n}\n\n// =============================================================================\n// NavDropdown Component\n// =============================================================================\n\nexport interface NavDropdownProps {\n /** Dropdown trigger text */\n text: string\n /** Dropdown items */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Dropdown navigation menu for grouping related links.\n *\n * @example\n * ```tsx\n * <NavDropdown text=\"Resources\">\n * <NavLink to=\"/docs\">Documentation</NavLink>\n * <NavLink to=\"/blog\">Blog</NavLink>\n * </NavDropdown>\n * ```\n */\nexport function NavDropdown({ text, children, className }: NavDropdownProps) {\n const [open, setOpen] = useState(false)\n\n return (\n <div\n className={className ?? \"press-nav-dropdown\"}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n >\n <button className=\"press-nav-dropdown-button\">\n {text}\n <span className=\"press-nav-dropdown-icon\">▼</span>\n </button>\n {open && <div className=\"press-nav-dropdown-menu\">{children}</div>}\n </div>\n )\n}\n\n// =============================================================================\n// NavProvider Component\n// =============================================================================\n\nexport interface NavProviderProps {\n children: ReactNode\n}\n\n/**\n * Provider for Nav context (mobile menu state).\n * Used internally by Header component.\n */\nexport function NavProvider({ children }: NavProviderProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n\n return (\n <NavContext.Provider value={{ mobileMenuOpen, setMobileMenuOpen }}>\n {children}\n </NavContext.Provider>\n )\n}\n\n// Export context hook for external use\nexport { useNavContext }\n","import { useState, useEffect } from \"react\"\nimport { useTOC, useThemeConfig } from \"../runtime/hooks\"\nimport type { TOCItem } from \"../config/types\"\n\nexport function TOC() {\n const toc = useTOC()\n const themeConfig = useThemeConfig()\n const [activeId, setActiveId] = useState<string>(\"\")\n\n const label = themeConfig.outline?.label ?? \"On this page\"\n\n useEffect(() => {\n if (toc.length === 0) return\n\n const headingElements = toc.map((item) => document.getElementById(item.id)).filter(Boolean)\n\n if (headingElements.length === 0) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id)\n break\n }\n }\n },\n {\n rootMargin: \"-80px 0px -80% 0px\",\n threshold: 0,\n }\n )\n\n headingElements.forEach((el) => el && observer.observe(el))\n\n return () => {\n headingElements.forEach((el) => el && observer.unobserve(el))\n }\n }, [toc])\n\n if (toc.length === 0) {\n return null\n }\n\n return (\n <aside className=\"press-toc\">\n <div className=\"press-toc-container\">\n <h3 className=\"press-toc-title\">{label}</h3>\n <nav className=\"press-toc-nav\">\n <TOCItems items={toc} activeId={activeId} />\n </nav>\n </div>\n </aside>\n )\n}\n\ninterface TOCItemsProps {\n items: TOCItem[]\n activeId: string\n}\n\nfunction TOCItems({ items, activeId }: TOCItemsProps) {\n return (\n <ul className=\"press-toc-list\">\n {items.map((item) => (\n <TOCItemComponent key={item.id} item={item} activeId={activeId} />\n ))}\n </ul>\n )\n}\n\ninterface TOCItemComponentProps {\n item: TOCItem\n activeId: string\n}\n\nfunction TOCItemComponent({ item, activeId }: TOCItemComponentProps) {\n const isActive = item.id === activeId\n const hasActiveChild = hasActiveDescendant(item, activeId)\n\n return (\n <li className=\"press-toc-item\">\n <a\n href={`#${item.id}`}\n className={[\n `press-toc-link press-toc-link-${item.level}`,\n isActive && \"active\",\n hasActiveChild && \"child-active\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={(e) => {\n e.preventDefault()\n const element = document.getElementById(item.id)\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\" })\n window.history.pushState(null, \"\", `#${item.id}`)\n }\n }}\n >\n {item.text}\n </a>\n {item.children && item.children.length > 0 && (\n <TOCItems items={item.children} activeId={activeId} />\n )}\n </li>\n )\n}\n\nfunction hasActiveDescendant(item: TOCItem, activeId: string): boolean {\n if (!item.children) return false\n\n for (const child of item.children) {\n if (child.id === activeId) return true\n if (hasActiveDescendant(child, activeId)) return true\n }\n\n return false\n}\n","import { type ReactNode } from \"react\"\nimport { usePageData, useThemeConfig, useSidebar } from \"../runtime/hooks\"\nimport { getPrevNextLinks } from \"../runtime/sidebar-utils\"\nimport { Link, useLocation } from \"@tanstack/react-router\"\n\ninterface ContentProps {\n children: ReactNode\n}\n\nexport function Content({ children }: ContentProps) {\n const pageData = usePageData()\n const themeConfig = useThemeConfig()\n const sidebar = useSidebar()\n const location = useLocation()\n\n const { prev, next } = getPrevNextLinks(sidebar, location.pathname)\n\n const showEditLink = pageData?.frontmatter.editLink !== false && themeConfig.editLink?.pattern\n\n const showLastUpdated =\n pageData?.frontmatter.lastUpdated !== false &&\n themeConfig.lastUpdated?.enabled &&\n pageData?.lastUpdated\n\n const editLink = showEditLink\n ? themeConfig.editLink!.pattern.replace(\":path\", pageData?.relativePath || \"\")\n : null\n\n const lastUpdatedText = showLastUpdated\n ? new Date(pageData!.lastUpdated!).toLocaleDateString(\n undefined,\n themeConfig.lastUpdated?.formatOptions ?? {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }\n )\n : null\n\n return (\n <article className=\"press-content-container\">\n {pageData?.frontmatter.title && (\n <header className=\"press-content-header\">\n <h1 className=\"press-content-title\">{pageData.frontmatter.title}</h1>\n {pageData.frontmatter.description && (\n <p className=\"press-content-description\">{pageData.frontmatter.description}</p>\n )}\n </header>\n )}\n\n <div className=\"press-content-body\">{children}</div>\n\n <footer className=\"press-content-footer\">\n {(showEditLink || showLastUpdated) && (\n <div className=\"press-content-meta\">\n {showEditLink && (\n <a\n href={editLink!}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"press-edit-link\"\n >\n {themeConfig.editLink?.text ?? \"Edit this page\"}\n </a>\n )}\n {showLastUpdated && (\n <span className=\"press-last-updated\">\n {themeConfig.lastUpdated?.text ?? \"Last updated\"}: {lastUpdatedText}\n </span>\n )}\n </div>\n )}\n\n {(prev || next) && (\n <nav className=\"press-prev-next\">\n {prev ? (\n <Link to={prev.link!} className=\"press-prev-link\">\n <span className=\"press-prev-next-label\">Previous</span>\n <span className=\"press-prev-next-title\">{prev.text}</span>\n </Link>\n ) : (\n <div />\n )}\n {next ? (\n <Link to={next.link!} className=\"press-next-link\">\n <span className=\"press-prev-next-label\">Next</span>\n <span className=\"press-prev-next-title\">{next.text}</span>\n </Link>\n ) : (\n <div />\n )}\n </nav>\n )}\n </footer>\n </article>\n )\n}\n","import { type ReactNode } from \"react\"\nimport { usePageData } from \"../runtime/hooks\"\nimport { Layout } from \"./Layout\"\nimport { Content } from \"./Content\"\nimport { TOC } from \"./TOC\"\n\n// =============================================================================\n// DocPage Component (includes Layout - for backwards compatibility)\n// =============================================================================\n\ninterface DocPageProps {\n children: ReactNode\n}\n\n/**\n * Full documentation page with Layout wrapper.\n * Use this when you don't have a _layout.tsx file.\n *\n * @example\n * ```tsx\n * <DocPage>\n * <Content />\n * </DocPage>\n * ```\n */\nexport function DocPage({ children }: DocPageProps) {\n const pageData = usePageData()\n const showToc =\n pageData?.frontmatter.outline !== false && pageData?.toc && pageData.toc.length > 0\n\n return (\n <Layout>\n <div className=\"press-doc-page\">\n <Content>{children}</Content>\n {showToc && <TOC />}\n </div>\n </Layout>\n )\n}\n\n// =============================================================================\n// DocContent Component (without Layout - for use with _layout.tsx)\n// =============================================================================\n\ninterface DocContentProps {\n children: ReactNode\n}\n\n/**\n * Documentation content without Layout wrapper.\n * Use this when you have a _layout.tsx that provides the Layout.\n *\n * @example\n * ```tsx\n * // In _layout.tsx:\n * <Layout>\n * <Header ... />\n * <Sidebar ... />\n * <Outlet />\n * <Footer ... />\n * </Layout>\n *\n * // In page routes:\n * <DocContent>\n * <MarkdownContent />\n * </DocContent>\n * ```\n */\nexport function DocContent({ children }: DocContentProps) {\n const pageData = usePageData()\n const showToc =\n pageData?.frontmatter.outline !== false && pageData?.toc && pageData.toc.length > 0\n\n return (\n <div className=\"press-doc-page\">\n <Content>{children}</Content>\n {showToc && <TOC />}\n </div>\n )\n}\n\n// =============================================================================\n// DocLayout Component (legacy alias)\n// =============================================================================\n\ninterface DocLayoutProps {\n content: ReactNode\n}\n\n/**\n * @deprecated Use DocPage or DocContent instead\n */\nexport function DocLayout({ content }: DocLayoutProps) {\n return <DocPage>{content}</DocPage>\n}\n","import { Link } from \"@tanstack/react-router\"\nimport { usePageData, useConfig } from \"../runtime/hooks\"\nimport { Header } from \"./Header\"\nimport { Footer } from \"./Footer\"\n\nexport function HomePage() {\n const pageData = usePageData()\n const config = useConfig()\n\n const hero = pageData?.frontmatter.hero\n const features = pageData?.frontmatter.features\n\n return (\n <div className=\"press-home\">\n <Header />\n\n <main className=\"press-home-main\">\n {hero && (\n <section className=\"press-hero\">\n <div className=\"press-hero-container\">\n {hero.image && (\n <div className=\"press-hero-image\">\n <img\n src={typeof hero.image === \"string\" ? hero.image : hero.image.light}\n alt={hero.name || config.title}\n />\n </div>\n )}\n\n <div className=\"press-hero-content\">\n {hero.name && <h1 className=\"press-hero-name\">{hero.name}</h1>}\n {hero.text && <p className=\"press-hero-text\">{hero.text}</p>}\n {hero.tagline && <p className=\"press-hero-tagline\">{hero.tagline}</p>}\n\n {hero.actions && hero.actions.length > 0 && (\n <div className=\"press-hero-actions\">\n {hero.actions.map((action, index) => (\n <Link\n key={index}\n to={action.link}\n className={`press-hero-action press-hero-action-${action.theme || \"brand\"}`}\n >\n {action.text}\n </Link>\n ))}\n </div>\n )}\n </div>\n </div>\n </section>\n )}\n\n {features && features.length > 0 && (\n <section className=\"press-features\">\n <div className=\"press-features-container\">\n {features.map((feature, index) => (\n <div key={index} className=\"press-feature\">\n {feature.icon && <div className=\"press-feature-icon\">{feature.icon}</div>}\n <h3 className=\"press-feature-title\">{feature.title}</h3>\n <p className=\"press-feature-details\">{feature.details}</p>\n {feature.link && (\n <Link to={feature.link} className=\"press-feature-link\">\n {feature.linkText || \"Learn more\"}\n </Link>\n )}\n </div>\n ))}\n </div>\n </section>\n )}\n </main>\n\n <Footer />\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { CopyButton } from \"./CopyButton\"\n\ninterface CodeBlockProps {\n code: string\n language?: string\n title?: string\n lineNumbers?: boolean\n highlightLines?: number[]\n children?: React.ReactNode\n}\n\nexport function CodeBlock({\n code,\n language = \"text\",\n title,\n lineNumbers = false,\n highlightLines = [],\n children,\n}: CodeBlockProps) {\n const lines = code.split(\"\\n\")\n\n return (\n <div className=\"press-code-block\" data-lang={language}>\n {title && <div className=\"press-code-title\">{title}</div>}\n <div className=\"press-code-wrapper\">\n {children || (\n <pre className={`language-${language}`}>\n <code>\n {lines.map((line, index) => {\n const lineNum = index + 1\n const isHighlighted = highlightLines.includes(lineNum)\n const classes = [\"press-code-line\"]\n if (isHighlighted) classes.push(\"highlighted\")\n\n return (\n <span key={index} className={classes.join(\" \")}>\n {lineNumbers && <span className=\"press-line-number\">{lineNum}</span>}\n <span className=\"press-line-content\">{line}</span>\n {index < lines.length - 1 && \"\\n\"}\n </span>\n )\n })}\n </code>\n </pre>\n )}\n <CopyButton code={code} />\n </div>\n </div>\n )\n}\n\ninterface CodeGroupProps {\n children: React.ReactNode\n}\n\nexport function CodeGroup({ children }: CodeGroupProps) {\n const [activeTab, setActiveTab] = useState(0)\n\n const childArray = Array.isArray(children) ? children : [children]\n const tabs = childArray.map((child, index) => {\n const props = (child as React.ReactElement)?.props as { title?: string; language?: string }\n return props?.title || props?.language || `Tab ${index + 1}`\n })\n\n return (\n <div className=\"press-code-group\">\n <div className=\"press-code-group-tabs\">\n {tabs.map((tab, index) => (\n <button\n key={index}\n className={[\"press-code-group-tab\", index === activeTab && \"active\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setActiveTab(index)}\n >\n {tab}\n </button>\n ))}\n </div>\n <div className=\"press-code-group-panels\">\n {childArray.map((child, index) => (\n <div\n key={index}\n className={[\"press-code-group-panel\", index === activeTab && \"active\"]\n .filter(Boolean)\n .join(\" \")}\n style={{ display: index === activeTab ? \"block\" : \"none\" }}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n )\n}\n","import { useState } from \"react\"\n\ninterface CopyButtonProps {\n code: string\n}\n\nexport function CopyButton({ code }: CopyButtonProps) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error(\"Failed to copy:\", err)\n }\n }\n\n return (\n <button\n className=\"press-copy-button\"\n onClick={handleCopy}\n aria-label={copied ? \"Copied!\" : \"Copy code\"}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n <span className=\"press-copy-text\">{copied ? \"Copied!\" : \"Copy\"}</span>\n </button>\n )\n}\n\nfunction CopyIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\" />\n </svg>\n )\n}\n\nfunction CheckIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <polyline points=\"20,6 9,17 4,12\" />\n </svg>\n )\n}\n","import { type ReactNode } from \"react\"\n\ntype ContainerType = \"tip\" | \"warning\" | \"danger\" | \"info\" | \"note\"\n\ninterface ContainerProps {\n type: ContainerType\n title?: string\n children: ReactNode\n}\n\nconst defaultTitles: Record<ContainerType, string> = {\n tip: \"TIP\",\n warning: \"WARNING\",\n danger: \"DANGER\",\n info: \"INFO\",\n note: \"NOTE\",\n}\n\nconst icons: Record<ContainerType, ReactNode> = {\n tip: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M9 18h6M12 2v1M12 21v-6M4.22 4.22l.71.71M19.07 4.93l-.71.71M1 12h2M21 12h2M4.22 19.78l.71-.71M19.07 19.07l-.71-.71\" />\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n </svg>\n ),\n warning: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n ),\n danger: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n ),\n info: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n ),\n note: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z\" />\n <polyline points=\"14,2 14,8 20,8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <line x1=\"10\" y1=\"9\" x2=\"8\" y2=\"9\" />\n </svg>\n ),\n}\n\nexport function Container({ type, title, children }: ContainerProps) {\n const displayTitle = title || defaultTitles[type]\n\n return (\n <div className={`press-container press-container-${type}`}>\n <p className=\"press-container-title\">\n <span className=\"press-container-icon\">{icons[type]}</span>\n {displayTitle}\n </p>\n <div className=\"press-container-content\">{children}</div>\n </div>\n )\n}\n\nexport function Tip({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"tip\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Warning({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"warning\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Danger({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"danger\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Info({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"info\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Note({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"note\" title={title}>\n {children}\n </Container>\n )\n}\n","import { useState, createContext, useContext, type ReactNode } from \"react\"\n\ninterface TabsContextValue {\n activeTab: string\n setActiveTab: (tab: string) => void\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null)\n\nfunction useTabsContext() {\n const context = useContext(TabsContext)\n if (!context) {\n throw new Error(\"Tab components must be used within a Tabs component\")\n }\n return context\n}\n\ninterface TabsProps {\n defaultValue?: string\n children: ReactNode\n}\n\nexport function Tabs({ defaultValue, children }: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultValue || \"\")\n\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab }}>\n <div className=\"press-tabs\">{children}</div>\n </TabsContext.Provider>\n )\n}\n\ninterface TabListProps {\n children: ReactNode\n}\n\nexport function TabList({ children }: TabListProps) {\n return (\n <div className=\"press-tab-list\" role=\"tablist\">\n {children}\n </div>\n )\n}\n\ninterface TabProps {\n value: string\n children: ReactNode\n}\n\nexport function Tab({ value, children }: TabProps) {\n const { activeTab, setActiveTab } = useTabsContext()\n const isActive = activeTab === value\n\n return (\n <button\n role=\"tab\"\n aria-selected={isActive}\n className={[\"press-tab\", isActive && \"active\"].filter(Boolean).join(\" \")}\n onClick={() => setActiveTab(value)}\n >\n {children}\n </button>\n )\n}\n\ninterface TabPanelProps {\n value: string\n children: ReactNode\n}\n\nexport function TabPanel({ value, children }: TabPanelProps) {\n const { activeTab } = useTabsContext()\n const isActive = activeTab === value\n\n if (!isActive) {\n return null\n }\n\n return (\n <div role=\"tabpanel\" className=\"press-tab-panel\">\n {children}\n </div>\n )\n}\n\ninterface TabPanelsProps {\n children: ReactNode\n}\n\nexport function TabPanels({ children }: TabPanelsProps) {\n return <div className=\"press-tab-panels\">{children}</div>\n}\n"],"mappings":"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","names":["useState","Link","jsx","jsxs","useState","useEffect","jsx","jsxs","useState","useEffect","handleKeyDown","jsx","jsxs","useState","Link","icons","useState","Link","jsx","jsxs","Fragment","jsx","jsxs","useState","createContext","useContext","Link","jsx","jsxs","useState","useEffect","jsx","jsxs","useState","useEffect","Link","jsx","jsxs","jsx","jsxs","Link","jsx","jsxs","Link","useState","useState","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","useState","createContext","useContext","jsx"]}
1
+ {"version":3,"sources":["../src/theme/Layout.tsx","../src/theme/Header.tsx","../src/theme/components/ThemeToggle.tsx","../src/theme/components/Search.tsx","../src/theme/Sidebar.tsx","../src/theme/Footer.tsx","../src/theme/Nav.tsx","../src/theme/TOC.tsx","../src/theme/Content.tsx","../src/theme/DocPage.tsx","../src/theme/HomePage.tsx","../src/theme/components/CodeBlock.tsx","../src/theme/components/CopyButton.tsx","../src/theme/components/Container.tsx","../src/theme/components/Tabs.tsx"],"sourcesContent":["import { type ReactNode } from \"react\"\n\n// =============================================================================\n// Layout Component\n// =============================================================================\n\nexport interface LayoutProps {\n /** Header content */\n header?: ReactNode\n /** Sidebar content */\n sidebar?: ReactNode\n /** Footer content */\n footer?: ReactNode\n /** Main content */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Layout component with explicit slot props.\n *\n * @example\n * ```tsx\n * <Layout\n * header={<Header logo=\"/logo.svg\" title=\"Ardo\" nav={...} />}\n * sidebar={<Sidebar>...</Sidebar>}\n * footer={<Footer message=\"MIT License\" />}\n * >\n * <Outlet />\n * </Layout>\n * ```\n */\nexport function Layout({ header, sidebar, footer, children, className }: LayoutProps) {\n return (\n <div className={className ?? \"press-layout\"}>\n {header}\n <div className=\"press-layout-container\">\n {sidebar}\n <main className=\"press-main\">{children}</main>\n </div>\n {footer}\n </div>\n )\n}\n","import { useState, type ReactNode } from \"react\"\nimport { Link } from \"@tanstack/react-router\"\nimport { ThemeToggle } from \"./components/ThemeToggle\"\nimport { Search } from \"./components/Search\"\n\n// =============================================================================\n// Header Component\n// =============================================================================\n\nexport interface HeaderProps {\n /** Logo image URL or light/dark variants */\n logo?: string | { light: string; dark: string }\n /** Site title displayed next to logo */\n title?: string\n /** Navigation content (Nav component or custom) */\n nav?: ReactNode\n /** Actions/right side content (social links, custom buttons) */\n actions?: ReactNode\n /** Show search (default: true) */\n search?: boolean\n /** Show theme toggle (default: true) */\n themeToggle?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Header component with explicit slot props.\n *\n * @example\n * ```tsx\n * <Header\n * logo=\"/logo.svg\"\n * title=\"Ardo\"\n * nav={\n * <Nav>\n * <NavLink to=\"/guide\">Guide</NavLink>\n * <NavLink to=\"/api\">API</NavLink>\n * </Nav>\n * }\n * actions={\n * <SocialLink href=\"https://github.com/...\" icon=\"github\" />\n * }\n * />\n * ```\n */\nexport function Header({\n logo,\n title,\n nav,\n actions,\n search = true,\n themeToggle = true,\n className,\n}: HeaderProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n\n return (\n <header className={className ?? \"press-header\"}>\n <div className=\"press-header-container\">\n {/* Left: Mobile menu button + Logo/Title */}\n <div className=\"press-header-left\">\n <button\n className=\"press-mobile-menu-button\"\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n aria-label=\"Toggle menu\"\n aria-expanded={mobileMenuOpen}\n >\n <span className=\"press-hamburger\">\n <span></span>\n <span></span>\n <span></span>\n </span>\n </button>\n\n <Link to=\"/\" className=\"press-logo-link\">\n {logo && (\n <img\n src={typeof logo === \"string\" ? logo : logo.light}\n alt={title ?? \"Logo\"}\n className=\"press-logo\"\n />\n )}\n {title && <span className=\"press-site-title\">{title}</span>}\n </Link>\n </div>\n\n {/* Center: Navigation */}\n {nav && <div className=\"press-nav\">{nav}</div>}\n\n {/* Right: Search, Theme Toggle, Actions */}\n <div className=\"press-header-right\">\n {search && <Search />}\n {themeToggle && <ThemeToggle />}\n {actions}\n </div>\n </div>\n\n {/* Mobile menu */}\n {mobileMenuOpen && (\n <div className=\"press-mobile-menu\">\n <nav className=\"press-mobile-nav\" onClick={() => setMobileMenuOpen(false)}>\n {nav}\n </nav>\n </div>\n )}\n </header>\n )\n}\n\n// =============================================================================\n// SocialLink Component\n// =============================================================================\n\nexport interface SocialLinkProps {\n /** URL to link to */\n href: string\n /** Social icon type */\n icon: \"github\" | \"twitter\" | \"discord\" | \"linkedin\" | \"youtube\" | \"npm\"\n /** Accessible label */\n ariaLabel?: string\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Social media link with icon.\n *\n * @example\n * ```tsx\n * <SocialLink href=\"https://github.com/...\" icon=\"github\" />\n * ```\n */\nexport function SocialLink({ href, icon, ariaLabel, className }: SocialLinkProps) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className ?? \"press-social-link\"}\n aria-label={ariaLabel ?? icon}\n >\n <SocialIcon icon={icon} />\n </a>\n )\n}\n\n// =============================================================================\n// Social Icon Component (internal)\n// =============================================================================\n\nfunction SocialIcon({ icon }: { icon: string }) {\n const icons: Record<string, string> = {\n github:\n \"M12 2C6.477 2 2 6.477 2 12c0 4.42 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.008-.866-.013-1.7-2.782.604-3.369-1.34-3.369-1.34-.454-1.156-1.11-1.463-1.11-1.463-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.831.092-.646.35-1.086.636-1.336-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.743 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z\",\n twitter:\n \"M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z\",\n discord:\n \"M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028 14.09 14.09 0 001.226-1.994.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\",\n linkedin:\n \"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\",\n youtube:\n \"M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\",\n npm: \"M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z\",\n }\n\n const path = icons[icon] || icons.github\n\n return (\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\n <path d={path} />\n </svg>\n )\n}\n","import { useState, useEffect } from \"react\"\n\ntype Theme = \"light\" | \"dark\" | \"system\"\n\nexport function ThemeToggle() {\n const [theme, setTheme] = useState<Theme>(\"system\")\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n\n const stored = localStorage.getItem(\"press-theme\") as Theme | null\n if (stored) {\n setTheme(stored)\n applyTheme(stored)\n } else {\n applyTheme(\"system\")\n }\n }, [])\n\n const toggleTheme = () => {\n const nextTheme: Theme = theme === \"light\" ? \"dark\" : theme === \"dark\" ? \"system\" : \"light\"\n setTheme(nextTheme)\n localStorage.setItem(\"press-theme\", nextTheme)\n applyTheme(nextTheme)\n }\n\n if (!mounted) {\n return (\n <button className=\"press-theme-toggle\" aria-label=\"Toggle theme\">\n <span className=\"press-theme-icon\">\n <SunIcon />\n </span>\n </button>\n )\n }\n\n return (\n <button\n className=\"press-theme-toggle\"\n onClick={toggleTheme}\n aria-label={`Switch to ${theme === \"light\" ? \"dark\" : theme === \"dark\" ? \"system\" : \"light\"} theme`}\n >\n <span className=\"press-theme-icon\">\n {theme === \"light\" && <SunIcon />}\n {theme === \"dark\" && <MoonIcon />}\n {theme === \"system\" && <SystemIcon />}\n </span>\n </button>\n )\n}\n\nfunction applyTheme(theme: Theme) {\n const root = document.documentElement\n\n if (theme === \"system\") {\n const isDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n root.classList.toggle(\"dark\", isDark)\n root.classList.toggle(\"light\", !isDark)\n } else {\n root.classList.toggle(\"dark\", theme === \"dark\")\n root.classList.toggle(\"light\", theme === \"light\")\n }\n}\n\nfunction SunIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </svg>\n )\n}\n\nfunction MoonIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n )\n}\n\nfunction SystemIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </svg>\n )\n}\n","import { useState, useEffect, useRef, useCallback } from \"react\"\nimport { Link } from \"@tanstack/react-router\"\nimport { useThemeConfig } from \"../../runtime/hooks\"\nimport MiniSearch, { type SearchResult } from \"minisearch\"\n\ninterface SearchDoc {\n id: string\n title: string\n content: string\n path: string\n section?: string\n}\n\nlet searchIndex: MiniSearch<SearchDoc> | null = null\n\nexport function Search() {\n const [isOpen, setIsOpen] = useState(false)\n const [query, setQuery] = useState(\"\")\n const [results, setResults] = useState<SearchResult[]>([])\n const [selectedIndex, setSelectedIndex] = useState(0)\n const inputRef = useRef<HTMLInputElement>(null)\n const themeConfig = useThemeConfig()\n\n const placeholder = themeConfig.search?.placeholder ?? \"Search...\"\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\n e.preventDefault()\n setIsOpen(true)\n }\n\n if (e.key === \"Escape\") {\n setIsOpen(false)\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown)\n return () => document.removeEventListener(\"keydown\", handleKeyDown)\n }, [])\n\n useEffect(() => {\n if (isOpen && inputRef.current) {\n inputRef.current.focus()\n }\n }, [isOpen])\n\n useEffect(() => {\n if (!isOpen) {\n setQuery(\"\")\n setResults([])\n setSelectedIndex(0)\n }\n }, [isOpen])\n\n const loadSearchIndex = useCallback(async () => {\n if (searchIndex) return searchIndex\n\n try {\n const response = await fetch(\"/_press/search-index.json\")\n if (!response.ok) return null\n\n const docs: SearchDoc[] = await response.json()\n\n searchIndex = new MiniSearch<SearchDoc>({\n fields: [\"title\", \"content\", \"section\"],\n storeFields: [\"title\", \"path\", \"section\"],\n searchOptions: {\n boost: { title: 2 },\n fuzzy: 0.2,\n prefix: true,\n },\n })\n\n searchIndex.addAll(docs)\n return searchIndex\n } catch {\n return null\n }\n }, [])\n\n const handleSearch = useCallback(\n async (searchQuery: string) => {\n setQuery(searchQuery)\n\n if (!searchQuery.trim()) {\n setResults([])\n return\n }\n\n const index = await loadSearchIndex()\n if (!index) {\n setResults([])\n return\n }\n\n const searchResults = index.search(searchQuery).slice(0, 10)\n setResults(searchResults)\n setSelectedIndex(0)\n },\n [loadSearchIndex]\n )\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setSelectedIndex((prev) => Math.min(prev + 1, results.length - 1))\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setSelectedIndex((prev) => Math.max(prev - 1, 0))\n } else if (e.key === \"Enter\" && results[selectedIndex]) {\n e.preventDefault()\n const result = results[selectedIndex]\n window.location.href = result.path as string\n setIsOpen(false)\n }\n }\n\n return (\n <>\n <button className=\"press-search-button\" onClick={() => setIsOpen(true)} aria-label=\"Search\">\n <SearchIcon />\n <span className=\"press-search-button-text\">{placeholder}</span>\n <span className=\"press-search-kbd\">\n <kbd>⌘</kbd>\n <kbd>K</kbd>\n </span>\n </button>\n\n {isOpen && (\n <div className=\"press-search-modal\" onClick={() => setIsOpen(false)}>\n <div className=\"press-search-dialog\" onClick={(e) => e.stopPropagation()}>\n <div className=\"press-search-input-wrapper\">\n <SearchIcon />\n <input\n ref={inputRef}\n type=\"text\"\n className=\"press-search-input\"\n placeholder={placeholder}\n value={query}\n onChange={(e) => handleSearch(e.target.value)}\n onKeyDown={handleKeyDown}\n />\n {query && (\n <button\n className=\"press-search-clear\"\n onClick={() => handleSearch(\"\")}\n aria-label=\"Clear search\"\n >\n ×\n </button>\n )}\n </div>\n\n {results.length > 0 && (\n <ul className=\"press-search-results\">\n {results.map((result, index) => (\n <li key={result.id}>\n <Link\n to={result.path as string}\n className={[\"press-search-result\", index === selectedIndex && \"selected\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setIsOpen(false)}\n >\n <span className=\"press-search-result-title\">{result.title as string}</span>\n {result.section && (\n <span className=\"press-search-result-section\">\n {result.section as string}\n </span>\n )}\n </Link>\n </li>\n ))}\n </ul>\n )}\n\n {query && results.length === 0 && (\n <div className=\"press-search-no-results\">No results found for \"{query}\"</div>\n )}\n\n <div className=\"press-search-footer\">\n <span>\n <kbd>↑</kbd> <kbd>↓</kbd> to navigate\n </span>\n <span>\n <kbd>↵</kbd> to select\n </span>\n <span>\n <kbd>esc</kbd> to close\n </span>\n </div>\n </div>\n </div>\n )}\n </>\n )\n}\n\nfunction SearchIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n )\n}\n","import {\n useState,\n type ReactNode,\n Children,\n isValidElement,\n createContext,\n useContext,\n} from \"react\"\nimport { Link, useRouterState } from \"@tanstack/react-router\"\nimport type { SidebarItem as SidebarItemType } from \"../config/types\"\n\n// =============================================================================\n// Sidebar Context\n// =============================================================================\n\ninterface SidebarContextValue {\n currentPath: string\n}\n\nconst SidebarContext = createContext<SidebarContextValue>({ currentPath: \"\" })\n\nfunction useSidebarContext() {\n return useContext(SidebarContext)\n}\n\n// =============================================================================\n// Sidebar Component Types\n// =============================================================================\n\nexport interface SidebarProps {\n /** Sidebar items (for data-driven approach) */\n items?: SidebarItemType[]\n /** Children for JSX composition (SidebarGroup, SidebarLink) */\n children?: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n// =============================================================================\n// Sidebar Main Component\n// =============================================================================\n\n/**\n * Sidebar component supporting both data-driven and JSX composition patterns.\n *\n * @example Data-driven (items prop)\n * ```tsx\n * <Sidebar items={[\n * { text: 'Introduction', link: '/intro' },\n * { text: 'Guide', items: [\n * { text: 'Getting Started', link: '/guide/getting-started' }\n * ]}\n * ]} />\n * ```\n *\n * @example JSX composition\n * ```tsx\n * <Sidebar>\n * <SidebarLink to=\"/intro\">Introduction</SidebarLink>\n * <SidebarGroup title=\"Guide\">\n * <SidebarLink to=\"/guide/getting-started\">Getting Started</SidebarLink>\n * </SidebarGroup>\n * </Sidebar>\n * ```\n */\nexport function Sidebar({ items, children, className }: SidebarProps) {\n const pathname = useRouterState({ select: (s) => s.location.pathname })\n\n return (\n <SidebarContext.Provider value={{ currentPath: pathname }}>\n <aside className={className ?? \"press-sidebar\"}>\n <nav className=\"press-sidebar-nav\">\n {items ? (\n <SidebarItems items={items} depth={0} />\n ) : (\n <ul className=\"press-sidebar-list press-sidebar-list-0\">{children}</ul>\n )}\n </nav>\n </aside>\n </SidebarContext.Provider>\n )\n}\n\n// =============================================================================\n// SidebarGroup Component\n// =============================================================================\n\nexport interface SidebarGroupProps {\n /** Group title */\n title: string\n /** Optional link for the group title */\n to?: string\n /** Initial collapsed state (default: false) */\n collapsed?: boolean\n /** Whether group is collapsible (default: true if has children) */\n collapsible?: boolean\n /** Children (SidebarLink, nested SidebarGroup) */\n children?: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Group component for organizing sidebar links.\n *\n * @example\n * ```tsx\n * <SidebarGroup title=\"Guide\">\n * <SidebarLink to=\"/guide/intro\">Introduction</SidebarLink>\n * <SidebarLink to=\"/guide/setup\">Setup</SidebarLink>\n * </SidebarGroup>\n * ```\n *\n * @example With collapsible state\n * ```tsx\n * <SidebarGroup title=\"Advanced\" collapsed>\n * <SidebarLink to=\"/advanced/config\">Configuration</SidebarLink>\n * </SidebarGroup>\n * ```\n */\nexport function SidebarGroup({\n title,\n to,\n collapsed: initialCollapsed = false,\n collapsible = true,\n children,\n className,\n}: SidebarGroupProps) {\n const [collapsed, setCollapsed] = useState(initialCollapsed)\n const { currentPath } = useSidebarContext()\n\n // Check if any child is active\n const isChildActive = checkChildrenActive(children, currentPath)\n\n const textClassName = [\"press-sidebar-text\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const linkClassName = [\"press-sidebar-link\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const hasChildren = Children.count(children) > 0\n\n return (\n <li className={className ?? \"press-sidebar-item\"}>\n <div className=\"press-sidebar-item-header\">\n {to ? (\n <Link to={to} className={linkClassName} activeProps={{ className: \"active\" }}>\n {title}\n </Link>\n ) : (\n <span\n className={textClassName}\n onClick={() => collapsible && hasChildren && setCollapsed(!collapsed)}\n style={collapsible && hasChildren ? { cursor: \"pointer\" } : undefined}\n >\n {title}\n </span>\n )}\n\n {collapsible && hasChildren && (\n <button\n className={[\"press-sidebar-collapse\", collapsed && \"collapsed\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? \"Expand\" : \"Collapse\"}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </button>\n )}\n </div>\n\n {hasChildren && !collapsed && (\n <ul className=\"press-sidebar-list press-sidebar-list-1\">{children}</ul>\n )}\n </li>\n )\n}\n\n// =============================================================================\n// SidebarLink Component\n// =============================================================================\n\nexport interface SidebarLinkProps {\n /** Internal route path */\n to: string\n /** Link text */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Sidebar navigation link.\n *\n * @example\n * ```tsx\n * <SidebarLink to=\"/guide/getting-started\">Getting Started</SidebarLink>\n * ```\n */\nexport function SidebarLink({ to, children, className }: SidebarLinkProps) {\n return (\n <li className=\"press-sidebar-item\">\n <Link\n to={to}\n className={className ?? \"press-sidebar-link\"}\n activeProps={{ className: \"active\" }}\n >\n {children}\n </Link>\n </li>\n )\n}\n\n// =============================================================================\n// Internal: Data-driven sidebar rendering\n// =============================================================================\n\ninterface SidebarItemsProps {\n items: SidebarItemType[]\n depth: number\n}\n\nfunction SidebarItems({ items, depth }: SidebarItemsProps) {\n return (\n <ul className={`press-sidebar-list press-sidebar-list-${depth}`}>\n {items.map((item, index) => (\n <SidebarItemComponent key={index} item={item} depth={depth} />\n ))}\n </ul>\n )\n}\n\ninterface SidebarItemComponentProps {\n item: SidebarItemType\n depth: number\n}\n\nfunction SidebarItemComponent({ item, depth }: SidebarItemComponentProps) {\n const { currentPath } = useSidebarContext()\n const [collapsed, setCollapsed] = useState(item.collapsed ?? false)\n\n const hasChildren = item.items && item.items.length > 0\n\n const isChildActive =\n hasChildren &&\n item.items!.some(\n (child) =>\n child.link === currentPath ||\n (child.items && child.items.some((grandchild) => grandchild.link === currentPath))\n )\n\n const linkClassName = [\"press-sidebar-link\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const textClassName = [\"press-sidebar-text\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n return (\n <li className=\"press-sidebar-item\">\n <div className=\"press-sidebar-item-header\">\n {item.link ? (\n <Link to={item.link} className={linkClassName} activeProps={{ className: \"active\" }}>\n {item.text}\n </Link>\n ) : (\n <span className={textClassName} onClick={() => hasChildren && setCollapsed(!collapsed)}>\n {item.text}\n </span>\n )}\n\n {hasChildren && (\n <button\n className={[\"press-sidebar-collapse\", collapsed && \"collapsed\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? \"Expand\" : \"Collapse\"}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </button>\n )}\n </div>\n\n {hasChildren && !collapsed && <SidebarItems items={item.items!} depth={depth + 1} />}\n </li>\n )\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\nfunction checkChildrenActive(children: ReactNode, currentPath: string): boolean {\n let isActive = false\n\n Children.forEach(children, (child) => {\n if (isActive) return\n\n if (isValidElement(child)) {\n // Check SidebarLink\n if (child.type === SidebarLink && (child.props as SidebarLinkProps).to === currentPath) {\n isActive = true\n return\n }\n\n // Check nested SidebarGroup\n if (child.type === SidebarGroup) {\n const groupProps = child.props as SidebarGroupProps\n if (groupProps.to === currentPath) {\n isActive = true\n return\n }\n if (groupProps.children && checkChildrenActive(groupProps.children, currentPath)) {\n isActive = true\n return\n }\n }\n }\n })\n\n return isActive\n}\n","import { type ReactNode } from \"react\"\n\n// =============================================================================\n// Footer Component\n// =============================================================================\n\nexport interface FooterProps {\n /** Footer message (supports HTML string) */\n message?: string\n /** Copyright text (supports HTML string) */\n copyright?: string\n /** Custom content (overrides message/copyright) */\n children?: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Footer component with message and copyright props.\n *\n * @example Simple usage\n * ```tsx\n * <Footer message=\"MIT License\" copyright=\"2026 Sebastian Software\" />\n * ```\n *\n * @example With HTML\n * ```tsx\n * <Footer\n * message=\"Built with <a href='...'>Ardo</a>\"\n * copyright=\"Copyright &copy; 2026\"\n * />\n * ```\n *\n * @example Custom content\n * ```tsx\n * <Footer>\n * <CustomFooterContent />\n * </Footer>\n * ```\n */\nexport function Footer({ message, copyright, children, className }: FooterProps) {\n const hasContent = message || copyright || children\n\n if (!hasContent) {\n return null\n }\n\n return (\n <footer className={className ?? \"press-footer\"}>\n <div className=\"press-footer-container\">\n {children ?? (\n <>\n {message && (\n <p className=\"press-footer-message\" dangerouslySetInnerHTML={{ __html: message }} />\n )}\n {copyright && (\n <p\n className=\"press-footer-copyright\"\n dangerouslySetInnerHTML={{ __html: copyright }}\n />\n )}\n </>\n )}\n </div>\n </footer>\n )\n}\n\n// Type exports for compound pattern (kept for backwards compatibility)\nexport interface FooterMessageProps {\n children: ReactNode\n className?: string\n}\n\nexport interface FooterCopyrightProps {\n children: ReactNode\n className?: string\n}\n","import { type ReactNode, useState, createContext, useContext } from \"react\"\nimport { Link } from \"@tanstack/react-router\"\n\n// Nav context for shared state\ninterface NavContextValue {\n mobileMenuOpen: boolean\n setMobileMenuOpen: (open: boolean) => void\n}\n\nconst NavContext = createContext<NavContextValue | null>(null)\n\nfunction useNavContext() {\n return useContext(NavContext)\n}\n\n// =============================================================================\n// Nav Component\n// =============================================================================\n\nexport interface NavProps {\n children?: ReactNode\n className?: string\n}\n\n/**\n * Navigation container component for composing navigation links.\n *\n * @example\n * ```tsx\n * <Nav>\n * <NavLink to=\"/guide\">Guide</NavLink>\n * <NavLink to=\"/api\">API</NavLink>\n * <NavLink href=\"https://github.com/...\">GitHub</NavLink>\n * </Nav>\n * ```\n */\nexport function Nav({ children, className }: NavProps) {\n return <nav className={className ?? \"press-nav\"}>{children}</nav>\n}\n\n// =============================================================================\n// NavLink Component\n// =============================================================================\n\nexport interface NavLinkProps {\n /** Internal route path (uses TanStack Router Link) */\n to?: string\n /** External URL (uses anchor tag) */\n href?: string\n /** Link text or children */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n /** Active state match pattern */\n activeMatch?: string\n}\n\n/**\n * Navigation link component supporting both internal routes and external URLs.\n *\n * @example\n * ```tsx\n * // Internal link\n * <NavLink to=\"/guide\">Guide</NavLink>\n *\n * // External link\n * <NavLink href=\"https://github.com/...\">GitHub</NavLink>\n * ```\n */\nexport function NavLink({ to, href, children, className, activeMatch }: NavLinkProps) {\n const navContext = useNavContext()\n const baseClassName = className ?? \"press-nav-link\"\n\n // Handle click for mobile menu\n const handleClick = () => {\n navContext?.setMobileMenuOpen(false)\n }\n\n // External link\n if (href) {\n return (\n <a\n href={href}\n className={baseClassName}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={handleClick}\n >\n {children}\n </a>\n )\n }\n\n // Internal link\n if (to) {\n return (\n <Link\n to={to}\n className={baseClassName}\n activeProps={{ className: \"active\" }}\n activeOptions={activeMatch ? { exact: false } : { exact: false }}\n onClick={handleClick}\n >\n {children}\n </Link>\n )\n }\n\n // Text-only (no link)\n return <span className={baseClassName}>{children}</span>\n}\n\n// =============================================================================\n// NavDropdown Component\n// =============================================================================\n\nexport interface NavDropdownProps {\n /** Dropdown trigger text */\n text: string\n /** Dropdown items */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\n/**\n * Dropdown navigation menu for grouping related links.\n *\n * @example\n * ```tsx\n * <NavDropdown text=\"Resources\">\n * <NavLink to=\"/docs\">Documentation</NavLink>\n * <NavLink to=\"/blog\">Blog</NavLink>\n * </NavDropdown>\n * ```\n */\nexport function NavDropdown({ text, children, className }: NavDropdownProps) {\n const [open, setOpen] = useState(false)\n\n return (\n <div\n className={className ?? \"press-nav-dropdown\"}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n >\n <button className=\"press-nav-dropdown-button\">\n {text}\n <span className=\"press-nav-dropdown-icon\">▼</span>\n </button>\n {open && <div className=\"press-nav-dropdown-menu\">{children}</div>}\n </div>\n )\n}\n\n// =============================================================================\n// NavProvider Component\n// =============================================================================\n\nexport interface NavProviderProps {\n children: ReactNode\n}\n\n/**\n * Provider for Nav context (mobile menu state).\n * Used internally by Header component.\n */\nexport function NavProvider({ children }: NavProviderProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n\n return (\n <NavContext.Provider value={{ mobileMenuOpen, setMobileMenuOpen }}>\n {children}\n </NavContext.Provider>\n )\n}\n\n// Export context hook for external use\nexport { useNavContext }\n","import { useState, useEffect } from \"react\"\nimport { useTOC, useThemeConfig } from \"../runtime/hooks\"\nimport type { TOCItem } from \"../config/types\"\n\nexport function TOC() {\n const toc = useTOC()\n const themeConfig = useThemeConfig()\n const [activeId, setActiveId] = useState<string>(\"\")\n\n const label = themeConfig.outline?.label ?? \"On this page\"\n\n useEffect(() => {\n if (toc.length === 0) return\n\n const headingElements = toc.map((item) => document.getElementById(item.id)).filter(Boolean)\n\n if (headingElements.length === 0) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id)\n break\n }\n }\n },\n {\n rootMargin: \"-80px 0px -80% 0px\",\n threshold: 0,\n }\n )\n\n headingElements.forEach((el) => el && observer.observe(el))\n\n return () => {\n headingElements.forEach((el) => el && observer.unobserve(el))\n }\n }, [toc])\n\n if (toc.length === 0) {\n return null\n }\n\n return (\n <aside className=\"press-toc\">\n <div className=\"press-toc-container\">\n <h3 className=\"press-toc-title\">{label}</h3>\n <nav className=\"press-toc-nav\">\n <TOCItems items={toc} activeId={activeId} />\n </nav>\n </div>\n </aside>\n )\n}\n\ninterface TOCItemsProps {\n items: TOCItem[]\n activeId: string\n}\n\nfunction TOCItems({ items, activeId }: TOCItemsProps) {\n return (\n <ul className=\"press-toc-list\">\n {items.map((item) => (\n <TOCItemComponent key={item.id} item={item} activeId={activeId} />\n ))}\n </ul>\n )\n}\n\ninterface TOCItemComponentProps {\n item: TOCItem\n activeId: string\n}\n\nfunction TOCItemComponent({ item, activeId }: TOCItemComponentProps) {\n const isActive = item.id === activeId\n const hasActiveChild = hasActiveDescendant(item, activeId)\n\n return (\n <li className=\"press-toc-item\">\n <a\n href={`#${item.id}`}\n className={[\n `press-toc-link press-toc-link-${item.level}`,\n isActive && \"active\",\n hasActiveChild && \"child-active\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={(e) => {\n e.preventDefault()\n const element = document.getElementById(item.id)\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\" })\n window.history.pushState(null, \"\", `#${item.id}`)\n }\n }}\n >\n {item.text}\n </a>\n {item.children && item.children.length > 0 && (\n <TOCItems items={item.children} activeId={activeId} />\n )}\n </li>\n )\n}\n\nfunction hasActiveDescendant(item: TOCItem, activeId: string): boolean {\n if (!item.children) return false\n\n for (const child of item.children) {\n if (child.id === activeId) return true\n if (hasActiveDescendant(child, activeId)) return true\n }\n\n return false\n}\n","import { type ReactNode } from \"react\"\nimport { usePageData, useThemeConfig, useSidebar } from \"../runtime/hooks\"\nimport { getPrevNextLinks } from \"../runtime/sidebar-utils\"\nimport { Link, useLocation } from \"@tanstack/react-router\"\n\ninterface ContentProps {\n children: ReactNode\n}\n\nexport function Content({ children }: ContentProps) {\n const pageData = usePageData()\n const themeConfig = useThemeConfig()\n const sidebar = useSidebar()\n const location = useLocation()\n\n const { prev, next } = getPrevNextLinks(sidebar, location.pathname)\n\n const showEditLink = pageData?.frontmatter.editLink !== false && themeConfig.editLink?.pattern\n\n const showLastUpdated =\n pageData?.frontmatter.lastUpdated !== false &&\n themeConfig.lastUpdated?.enabled &&\n pageData?.lastUpdated\n\n const editLink = showEditLink\n ? themeConfig.editLink!.pattern.replace(\":path\", pageData?.relativePath || \"\")\n : null\n\n const lastUpdatedText = showLastUpdated\n ? new Date(pageData!.lastUpdated!).toLocaleDateString(\n undefined,\n themeConfig.lastUpdated?.formatOptions ?? {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }\n )\n : null\n\n return (\n <article className=\"press-content-container\">\n {pageData?.frontmatter.title && (\n <header className=\"press-content-header\">\n <h1 className=\"press-content-title\">{pageData.frontmatter.title}</h1>\n {pageData.frontmatter.description && (\n <p className=\"press-content-description\">{pageData.frontmatter.description}</p>\n )}\n </header>\n )}\n\n <div className=\"press-content-body\">{children}</div>\n\n <footer className=\"press-content-footer\">\n {(showEditLink || showLastUpdated) && (\n <div className=\"press-content-meta\">\n {showEditLink && (\n <a\n href={editLink!}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"press-edit-link\"\n >\n {themeConfig.editLink?.text ?? \"Edit this page\"}\n </a>\n )}\n {showLastUpdated && (\n <span className=\"press-last-updated\">\n {themeConfig.lastUpdated?.text ?? \"Last updated\"}: {lastUpdatedText}\n </span>\n )}\n </div>\n )}\n\n {(prev || next) && (\n <nav className=\"press-prev-next\">\n {prev ? (\n <Link to={prev.link!} className=\"press-prev-link\">\n <span className=\"press-prev-next-label\">Previous</span>\n <span className=\"press-prev-next-title\">{prev.text}</span>\n </Link>\n ) : (\n <div />\n )}\n {next ? (\n <Link to={next.link!} className=\"press-next-link\">\n <span className=\"press-prev-next-label\">Next</span>\n <span className=\"press-prev-next-title\">{next.text}</span>\n </Link>\n ) : (\n <div />\n )}\n </nav>\n )}\n </footer>\n </article>\n )\n}\n","import { type ReactNode } from \"react\"\nimport { usePageData } from \"../runtime/hooks\"\nimport { Layout } from \"./Layout\"\nimport { Content } from \"./Content\"\nimport { TOC } from \"./TOC\"\n\n// =============================================================================\n// DocPage Component (includes Layout - for backwards compatibility)\n// =============================================================================\n\ninterface DocPageProps {\n children: ReactNode\n}\n\n/**\n * Full documentation page with Layout wrapper.\n * Use this when you don't have a _layout.tsx file.\n *\n * @example\n * ```tsx\n * <DocPage>\n * <Content />\n * </DocPage>\n * ```\n */\nexport function DocPage({ children }: DocPageProps) {\n const pageData = usePageData()\n const showToc =\n pageData?.frontmatter.outline !== false && pageData?.toc && pageData.toc.length > 0\n\n return (\n <Layout>\n <div className=\"press-doc-page\">\n <Content>{children}</Content>\n {showToc && <TOC />}\n </div>\n </Layout>\n )\n}\n\n// =============================================================================\n// DocContent Component (without Layout - for use with _layout.tsx)\n// =============================================================================\n\ninterface DocContentProps {\n children: ReactNode\n}\n\n/**\n * Documentation content without Layout wrapper.\n * Use this when you have a _layout.tsx that provides the Layout.\n *\n * @example\n * ```tsx\n * // In _layout.tsx:\n * <Layout>\n * <Header ... />\n * <Sidebar ... />\n * <Outlet />\n * <Footer ... />\n * </Layout>\n *\n * // In page routes:\n * <DocContent>\n * <MarkdownContent />\n * </DocContent>\n * ```\n */\nexport function DocContent({ children }: DocContentProps) {\n const pageData = usePageData()\n const showToc =\n pageData?.frontmatter.outline !== false && pageData?.toc && pageData.toc.length > 0\n\n return (\n <div className=\"press-doc-page\">\n <Content>{children}</Content>\n {showToc && <TOC />}\n </div>\n )\n}\n\n// =============================================================================\n// DocLayout Component (legacy alias)\n// =============================================================================\n\ninterface DocLayoutProps {\n content: ReactNode\n}\n\n/**\n * @deprecated Use DocPage or DocContent instead\n */\nexport function DocLayout({ content }: DocLayoutProps) {\n return <DocPage>{content}</DocPage>\n}\n","import { Link } from \"@tanstack/react-router\"\nimport { usePageData, useConfig, useThemeConfig } from \"../runtime/hooks\"\nimport { Header, SocialLink } from \"./Header\"\nimport { Footer } from \"./Footer\"\nimport { Nav, NavLink } from \"./Nav\"\n\nexport function HomePage() {\n const pageData = usePageData()\n const config = useConfig()\n const themeConfig = useThemeConfig()\n\n const hero = pageData?.frontmatter.hero\n const features = pageData?.frontmatter.features\n\n return (\n <div className=\"press-home\">\n <Header\n logo={themeConfig.logo}\n title={themeConfig.siteTitle !== false ? config.title : undefined}\n nav={\n themeConfig.nav && themeConfig.nav.length > 0 ? (\n <Nav>\n {themeConfig.nav.map((item, index) => (\n <NavLink key={index} to={item.link}>\n {item.text}\n </NavLink>\n ))}\n </Nav>\n ) : undefined\n }\n actions={themeConfig.socialLinks?.map((link, index) => (\n <SocialLink key={index} href={link.link} icon={link.icon} ariaLabel={link.ariaLabel} />\n ))}\n />\n\n <main className=\"press-home-main\">\n {hero && (\n <section className=\"press-hero\">\n <div className=\"press-hero-container\">\n {hero.image && (\n <div className=\"press-hero-image\">\n <img\n src={typeof hero.image === \"string\" ? hero.image : hero.image.light}\n alt={hero.name || config.title}\n />\n </div>\n )}\n\n <div className=\"press-hero-content\">\n {hero.name && <h1 className=\"press-hero-name\">{hero.name}</h1>}\n {hero.text && <p className=\"press-hero-text\">{hero.text}</p>}\n {hero.tagline && <p className=\"press-hero-tagline\">{hero.tagline}</p>}\n\n {hero.actions && hero.actions.length > 0 && (\n <div className=\"press-hero-actions\">\n {hero.actions.map((action, index) => (\n <Link\n key={index}\n to={action.link}\n className={`press-hero-action press-hero-action-${action.theme || \"brand\"}`}\n >\n {action.text}\n </Link>\n ))}\n </div>\n )}\n </div>\n </div>\n </section>\n )}\n\n {features && features.length > 0 && (\n <section className=\"press-features\">\n <div className=\"press-features-container\">\n {features.map((feature, index) => (\n <div key={index} className=\"press-feature\">\n {feature.icon && <div className=\"press-feature-icon\">{feature.icon}</div>}\n <h3 className=\"press-feature-title\">{feature.title}</h3>\n <p className=\"press-feature-details\">{feature.details}</p>\n {feature.link && (\n <Link to={feature.link} className=\"press-feature-link\">\n {feature.linkText || \"Learn more\"}\n </Link>\n )}\n </div>\n ))}\n </div>\n </section>\n )}\n </main>\n\n <Footer />\n </div>\n )\n}\n","import { useState } from \"react\"\nimport { CopyButton } from \"./CopyButton\"\n\ninterface CodeBlockProps {\n code: string\n language?: string\n title?: string\n lineNumbers?: boolean\n highlightLines?: number[]\n children?: React.ReactNode\n}\n\nexport function CodeBlock({\n code,\n language = \"text\",\n title,\n lineNumbers = false,\n highlightLines = [],\n children,\n}: CodeBlockProps) {\n const lines = code.split(\"\\n\")\n\n return (\n <div className=\"press-code-block\" data-lang={language}>\n {title && <div className=\"press-code-title\">{title}</div>}\n <div className=\"press-code-wrapper\">\n {children || (\n <pre className={`language-${language}`}>\n <code>\n {lines.map((line, index) => {\n const lineNum = index + 1\n const isHighlighted = highlightLines.includes(lineNum)\n const classes = [\"press-code-line\"]\n if (isHighlighted) classes.push(\"highlighted\")\n\n return (\n <span key={index} className={classes.join(\" \")}>\n {lineNumbers && <span className=\"press-line-number\">{lineNum}</span>}\n <span className=\"press-line-content\">{line}</span>\n {index < lines.length - 1 && \"\\n\"}\n </span>\n )\n })}\n </code>\n </pre>\n )}\n <CopyButton code={code} />\n </div>\n </div>\n )\n}\n\ninterface CodeGroupProps {\n children: React.ReactNode\n}\n\nexport function CodeGroup({ children }: CodeGroupProps) {\n const [activeTab, setActiveTab] = useState(0)\n\n const childArray = Array.isArray(children) ? children : [children]\n const tabs = childArray.map((child, index) => {\n const props = (child as React.ReactElement)?.props as { title?: string; language?: string }\n return props?.title || props?.language || `Tab ${index + 1}`\n })\n\n return (\n <div className=\"press-code-group\">\n <div className=\"press-code-group-tabs\">\n {tabs.map((tab, index) => (\n <button\n key={index}\n className={[\"press-code-group-tab\", index === activeTab && \"active\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setActiveTab(index)}\n >\n {tab}\n </button>\n ))}\n </div>\n <div className=\"press-code-group-panels\">\n {childArray.map((child, index) => (\n <div\n key={index}\n className={[\"press-code-group-panel\", index === activeTab && \"active\"]\n .filter(Boolean)\n .join(\" \")}\n style={{ display: index === activeTab ? \"block\" : \"none\" }}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n )\n}\n","import { useState } from \"react\"\n\ninterface CopyButtonProps {\n code: string\n}\n\nexport function CopyButton({ code }: CopyButtonProps) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error(\"Failed to copy:\", err)\n }\n }\n\n return (\n <button\n className=\"press-copy-button\"\n onClick={handleCopy}\n aria-label={copied ? \"Copied!\" : \"Copy code\"}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n <span className=\"press-copy-text\">{copied ? \"Copied!\" : \"Copy\"}</span>\n </button>\n )\n}\n\nfunction CopyIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\" />\n </svg>\n )\n}\n\nfunction CheckIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <polyline points=\"20,6 9,17 4,12\" />\n </svg>\n )\n}\n","import { type ReactNode } from \"react\"\n\ntype ContainerType = \"tip\" | \"warning\" | \"danger\" | \"info\" | \"note\"\n\ninterface ContainerProps {\n type: ContainerType\n title?: string\n children: ReactNode\n}\n\nconst defaultTitles: Record<ContainerType, string> = {\n tip: \"TIP\",\n warning: \"WARNING\",\n danger: \"DANGER\",\n info: \"INFO\",\n note: \"NOTE\",\n}\n\nconst icons: Record<ContainerType, ReactNode> = {\n tip: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M9 18h6M12 2v1M12 21v-6M4.22 4.22l.71.71M19.07 4.93l-.71.71M1 12h2M21 12h2M4.22 19.78l.71-.71M19.07 19.07l-.71-.71\" />\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n </svg>\n ),\n warning: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n ),\n danger: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n ),\n info: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n ),\n note: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z\" />\n <polyline points=\"14,2 14,8 20,8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <line x1=\"10\" y1=\"9\" x2=\"8\" y2=\"9\" />\n </svg>\n ),\n}\n\nexport function Container({ type, title, children }: ContainerProps) {\n const displayTitle = title || defaultTitles[type]\n\n return (\n <div className={`press-container press-container-${type}`}>\n <p className=\"press-container-title\">\n <span className=\"press-container-icon\">{icons[type]}</span>\n {displayTitle}\n </p>\n <div className=\"press-container-content\">{children}</div>\n </div>\n )\n}\n\nexport function Tip({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"tip\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Warning({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"warning\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Danger({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"danger\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Info({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"info\" title={title}>\n {children}\n </Container>\n )\n}\n\nexport function Note({ title, children }: Omit<ContainerProps, \"type\">) {\n return (\n <Container type=\"note\" title={title}>\n {children}\n </Container>\n )\n}\n","import { useState, createContext, useContext, type ReactNode } from \"react\"\n\ninterface TabsContextValue {\n activeTab: string\n setActiveTab: (tab: string) => void\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null)\n\nfunction useTabsContext() {\n const context = useContext(TabsContext)\n if (!context) {\n throw new Error(\"Tab components must be used within a Tabs component\")\n }\n return context\n}\n\ninterface TabsProps {\n defaultValue?: string\n children: ReactNode\n}\n\nexport function Tabs({ defaultValue, children }: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultValue || \"\")\n\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab }}>\n <div className=\"press-tabs\">{children}</div>\n </TabsContext.Provider>\n )\n}\n\ninterface TabListProps {\n children: ReactNode\n}\n\nexport function TabList({ children }: TabListProps) {\n return (\n <div className=\"press-tab-list\" role=\"tablist\">\n {children}\n </div>\n )\n}\n\ninterface TabProps {\n value: string\n children: ReactNode\n}\n\nexport function Tab({ value, children }: TabProps) {\n const { activeTab, setActiveTab } = useTabsContext()\n const isActive = activeTab === value\n\n return (\n <button\n role=\"tab\"\n aria-selected={isActive}\n className={[\"press-tab\", isActive && \"active\"].filter(Boolean).join(\" \")}\n onClick={() => setActiveTab(value)}\n >\n {children}\n </button>\n )\n}\n\ninterface TabPanelProps {\n value: string\n children: ReactNode\n}\n\nexport function TabPanel({ value, children }: TabPanelProps) {\n const { activeTab } = useTabsContext()\n const isActive = activeTab === value\n\n if (!isActive) {\n return null\n }\n\n return (\n <div role=\"tabpanel\" className=\"press-tab-panel\">\n {children}\n </div>\n )\n}\n\ninterface TabPanelsProps {\n children: ReactNode\n}\n\nexport function TabPanels({ children }: TabPanelsProps) {\n return <div className=\"press-tab-panels\">{children}</div>\n}\n"],"mappings":"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","names":["useState","Link","jsx","jsxs","useState","useEffect","jsx","jsxs","useState","useEffect","handleKeyDown","jsx","jsxs","useState","Link","icons","useState","Link","jsx","jsxs","Fragment","jsx","jsxs","useState","createContext","useContext","Link","jsx","jsxs","useState","useEffect","jsx","jsxs","useState","useEffect","Link","jsx","jsxs","jsx","jsxs","Link","jsx","jsxs","Link","useState","useState","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","useState","createContext","useContext","jsx"]}
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ import {
40
40
  ThemeToggle,
41
41
  Tip,
42
42
  Warning
43
- } from "./chunk-BPJODFL7.js";
43
+ } from "./chunk-2JBVPO6S.js";
44
44
  import {
45
45
  PressProvider,
46
46
  findCurrentSidebarItem,
@@ -31,7 +31,7 @@ import {
31
31
  ThemeToggle,
32
32
  Tip,
33
33
  Warning
34
- } from "../chunk-BPJODFL7.js";
34
+ } from "../chunk-2JBVPO6S.js";
35
35
  import "../chunk-EOV2OUTW.js";
36
36
  export {
37
37
  CodeBlock,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ardo",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "React-first Static Documentation Framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -71,7 +71,7 @@
71
71
  "@types/react-dom": "^19.2.3",
72
72
  "tsup": "^8.5.1",
73
73
  "typescript": "^5.9.3",
74
- "vite": "^8.0.0-beta.9"
74
+ "vite": "^8.0.0-beta.11"
75
75
  },
76
76
  "keywords": [
77
77
  "documentation",