ardo 2.4.0 → 2.5.0

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.
Files changed (65) hide show
  1. package/dist/{Features-BlVr5s_C.d.ts → Features-rHF_bj67.d.ts} +27 -12
  2. package/dist/Search-RJRSEY42.js +9 -0
  3. package/dist/Search-RJRSEY42.js.map +1 -0
  4. package/dist/{chunk-EOV2OUTW.js → chunk-3O2PF4HA.js} +2 -42
  5. package/dist/chunk-3O2PF4HA.js.map +1 -0
  6. package/dist/{chunk-PCMPLBJA.js → chunk-5K5L7ZYS.js} +15 -16
  7. package/dist/chunk-5K5L7ZYS.js.map +1 -0
  8. package/dist/{chunk-4IRLOOXV.js → chunk-7L64KVOU.js} +110 -1
  9. package/dist/chunk-7L64KVOU.js.map +1 -0
  10. package/dist/{chunk-FGRL2G4S.js → chunk-BH7JD5XJ.js} +2 -1
  11. package/dist/chunk-BH7JD5XJ.js.map +1 -0
  12. package/dist/chunk-FZP2AVJL.js +43 -0
  13. package/dist/chunk-FZP2AVJL.js.map +1 -0
  14. package/dist/chunk-GAYGMYIS.js +194 -0
  15. package/dist/chunk-GAYGMYIS.js.map +1 -0
  16. package/dist/{chunk-O64PX2AK.js → chunk-M5VLOQYV.js} +2 -2
  17. package/dist/chunk-MJQGGJQZ.js +88 -0
  18. package/dist/chunk-MJQGGJQZ.js.map +1 -0
  19. package/dist/{chunk-2L4ZS6W2.js → chunk-NJWWPDO2.js} +23 -14
  20. package/dist/chunk-NJWWPDO2.js.map +1 -0
  21. package/dist/chunk-X7MG5VTZ.js +682 -0
  22. package/dist/chunk-X7MG5VTZ.js.map +1 -0
  23. package/dist/config/index.d.ts +4 -3
  24. package/dist/config/index.js +3 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.js +15 -10
  27. package/dist/mdx/provider.js +4 -2
  28. package/dist/mdx/provider.js.map +1 -1
  29. package/dist/runtime/index.d.ts +1 -1
  30. package/dist/runtime/index.js +5 -3
  31. package/dist/typedoc/index.d.ts +2 -0
  32. package/dist/typedoc/index.js +2 -2
  33. package/dist/{types-tjxB5eh7.d.ts → types-DSD5zwMd.d.ts} +6 -1
  34. package/dist/ui/icons/alert-triangle.svg +1 -0
  35. package/dist/ui/icons/check.svg +1 -0
  36. package/dist/ui/icons/chevron-down.svg +1 -0
  37. package/dist/ui/icons/copy.svg +1 -0
  38. package/dist/ui/icons/file-text.svg +1 -0
  39. package/dist/ui/icons/github.svg +1 -0
  40. package/dist/ui/icons/info.svg +1 -0
  41. package/dist/ui/icons/lightbulb.svg +1 -0
  42. package/dist/ui/icons/linkedin.svg +1 -0
  43. package/dist/ui/icons/message-circle.svg +1 -0
  44. package/dist/ui/icons/monitor.svg +1 -0
  45. package/dist/ui/icons/moon.svg +1 -0
  46. package/dist/ui/icons/package.svg +1 -0
  47. package/dist/ui/icons/search.svg +1 -0
  48. package/dist/ui/icons/sun.svg +1 -0
  49. package/dist/ui/icons/twitter.svg +1 -0
  50. package/dist/ui/icons/x-circle.svg +1 -0
  51. package/dist/ui/icons/youtube.svg +1 -0
  52. package/dist/ui/index.d.ts +11 -7
  53. package/dist/ui/index.js +8 -4
  54. package/dist/ui/styles.css +117 -0
  55. package/dist/vite/index.d.ts +1 -1
  56. package/dist/vite/index.js +3 -3
  57. package/package.json +10 -2
  58. package/dist/chunk-2L4ZS6W2.js.map +0 -1
  59. package/dist/chunk-4IRLOOXV.js.map +0 -1
  60. package/dist/chunk-C4W4YI7C.js +0 -812
  61. package/dist/chunk-C4W4YI7C.js.map +0 -1
  62. package/dist/chunk-EOV2OUTW.js.map +0 -1
  63. package/dist/chunk-FGRL2G4S.js.map +0 -1
  64. package/dist/chunk-PCMPLBJA.js.map +0 -1
  65. /package/dist/{chunk-O64PX2AK.js.map → chunk-M5VLOQYV.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/Layout.tsx","../src/ui/Header.tsx","../src/ui/components/ThemeToggle.tsx","../src/ui/Sidebar.tsx","../src/ui/Footer.tsx","../src/ui/Nav.tsx","../src/ui/TOC.tsx","../src/ui/DocPage.tsx","../src/ui/HomePage.tsx","../src/ui/components/Hero.tsx","../src/ui/components/Features.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 ?? \"ardo-layout\"}>\n <a href=\"#main-content\" className=\"ardo-skip-link\">\n Skip to content\n </a>\n {header}\n <div className=\"ardo-layout-container\">\n {sidebar}\n <main id=\"main-content\" className=\"ardo-main\">\n {children}\n </main>\n </div>\n {footer}\n </div>\n )\n}\n","import { useState, lazy, Suspense, type ReactNode } from \"react\"\nimport { Link } from \"react-router\"\nimport {\n GithubIcon,\n TwitterIcon,\n MessageCircleIcon,\n LinkedinIcon,\n YoutubeIcon,\n PackageIcon,\n} from \"./icons\"\nimport { ThemeToggle } from \"./components/ThemeToggle\"\n\nconst LazySearch = lazy(() => import(\"./components/Search\").then((m) => ({ default: m.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 ?? \"ardo-header\"}>\n <div className=\"ardo-header-container\">\n {/* Left: Mobile menu button + Logo/Title */}\n <div className=\"ardo-header-left\">\n <button\n className=\"ardo-mobile-menu-button\"\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n aria-label=\"Toggle menu\"\n aria-expanded={mobileMenuOpen}\n >\n <span className=\"ardo-hamburger\">\n <span></span>\n <span></span>\n <span></span>\n </span>\n </button>\n\n <Link to=\"/\" className=\"ardo-logo-link\">\n {logo && (\n <img\n src={typeof logo === \"string\" ? logo : logo.light}\n alt={title ?? \"Logo\"}\n className=\"ardo-logo\"\n />\n )}\n {title && <span className=\"ardo-site-title\">{title}</span>}\n </Link>\n </div>\n\n {/* Center: Navigation */}\n {nav && <div className=\"ardo-nav\">{nav}</div>}\n\n {/* Right: Search, Theme Toggle, Actions */}\n <div className=\"ardo-header-right\">\n {search && (\n <Suspense fallback={<span className=\"ardo-search-placeholder\" />}>\n <LazySearch />\n </Suspense>\n )}\n {themeToggle && <ThemeToggle />}\n {actions}\n </div>\n </div>\n\n {/* Mobile menu */}\n {mobileMenuOpen && (\n <div className=\"ardo-mobile-menu\">\n <nav className=\"ardo-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 ?? \"ardo-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\nconst socialIcons = {\n github: GithubIcon,\n twitter: TwitterIcon,\n discord: MessageCircleIcon,\n linkedin: LinkedinIcon,\n youtube: YoutubeIcon,\n npm: PackageIcon,\n} as const\n\nfunction SocialIcon({ icon }: { icon: string }) {\n const IconComponent = socialIcons[icon as keyof typeof socialIcons] ?? GithubIcon\n return <IconComponent size={20} />\n}\n","import { useState, useEffect } from \"react\"\nimport { SunIcon, MoonIcon, MonitorIcon } from \"../icons\"\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(\"ardo-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(\"ardo-theme\", nextTheme)\n applyTheme(nextTheme)\n }\n\n if (!mounted) {\n return (\n <button className=\"ardo-theme-toggle\" aria-label=\"Toggle theme\">\n <span className=\"ardo-theme-icon\">\n <SunIcon size={20} />\n </span>\n </button>\n )\n }\n\n return (\n <button\n className=\"ardo-theme-toggle\"\n onClick={toggleTheme}\n aria-label={`Switch to ${theme === \"light\" ? \"dark\" : theme === \"dark\" ? \"system\" : \"light\"} theme`}\n >\n <span className=\"ardo-theme-icon\">\n {theme === \"light\" && <SunIcon size={20} />}\n {theme === \"dark\" && <MoonIcon size={20} />}\n {theme === \"system\" && <MonitorIcon size={20} />}\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","import {\n useState,\n type ReactNode,\n type ComponentProps,\n Children,\n isValidElement,\n createContext,\n useContext,\n} from \"react\"\nimport { NavLink, useLocation } from \"react-router\"\nimport { ChevronDownIcon } from \"./icons\"\nimport type { SidebarItem as SidebarItemType } from \"../config/types\"\n\n/** Route path type - uses React Router's NavLink 'to' prop type for type-safe routes */\ntype RoutePath = ComponentProps<typeof NavLink>[\"to\"]\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 } = useLocation()\n\n return (\n <SidebarContext.Provider value={{ currentPath: pathname }}>\n <aside className={className ?? \"ardo-sidebar\"}>\n <nav className=\"ardo-sidebar-nav\" aria-label=\"Main navigation\">\n {items ? (\n <SidebarItems items={items} depth={0} />\n ) : (\n <ul className=\"ardo-sidebar-list ardo-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 = [\"ardo-sidebar-text\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const linkClassName = [\"ardo-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 ?? \"ardo-sidebar-item\"}>\n <div className=\"ardo-sidebar-item-header\">\n {to ? (\n <NavLink\n to={to}\n className={({ isActive }) =>\n [linkClassName, isActive && \"active\"].filter(Boolean).join(\" \")\n }\n >\n {title}\n </NavLink>\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={[\"ardo-sidebar-collapse\", collapsed && \"collapsed\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? \"Expand\" : \"Collapse\"}\n >\n <ChevronDownIcon size={16} />\n </button>\n )}\n </div>\n\n {hasChildren && !collapsed && (\n <ul className=\"ardo-sidebar-list ardo-sidebar-list-1\">{children}</ul>\n )}\n </li>\n )\n}\n\n// =============================================================================\n// SidebarLink Component\n// =============================================================================\n\nexport interface SidebarLinkProps {\n /** Internal route path (type-safe with React Router's registered routes) */\n to: RoutePath\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 const baseClassName = className ?? \"ardo-sidebar-link\"\n return (\n <li className=\"ardo-sidebar-item\">\n <NavLink\n to={to}\n className={({ isActive }) =>\n [baseClassName, isActive && \"active\"].filter(Boolean).join(\" \")\n }\n >\n {children}\n </NavLink>\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={`ardo-sidebar-list ardo-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 = [\"ardo-sidebar-link\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n const textClassName = [\"ardo-sidebar-text\", isChildActive && \"child-active\"]\n .filter(Boolean)\n .join(\" \")\n\n return (\n <li className=\"ardo-sidebar-item\">\n <div className=\"ardo-sidebar-item-header\">\n {item.link ? (\n <NavLink\n to={item.link}\n className={({ isActive }) =>\n [linkClassName, isActive && \"active\"].filter(Boolean).join(\" \")\n }\n >\n {item.text}\n </NavLink>\n ) : (\n <span className={textClassName} onClick={() => hasChildren && setCollapsed(!collapsed)}>\n {item.text}\n </span>\n )}\n\n {hasChildren && (\n <button\n className={[\"ardo-sidebar-collapse\", collapsed && \"collapsed\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setCollapsed(!collapsed)}\n aria-label={collapsed ? \"Expand\" : \"Collapse\"}\n >\n <ChevronDownIcon size={16} />\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\"\nimport type { ProjectMeta, SponsorConfig } from \"../config/types\"\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 all automatic rendering) */\n children?: ReactNode\n /** Additional CSS classes */\n className?: string\n /** Project metadata — renders linked \"name vX.Y.Z\" */\n project?: ProjectMeta\n /** Sponsor link — renders \"Sponsored by X\" */\n sponsor?: SponsorConfig\n /** Build timestamp (ISO string) — renders formatted date */\n buildTime?: string\n /** Show \"Built with Ardo\" link (default: true) */\n ardoLink?: boolean\n}\n\nfunction formatBuildTime(iso: string): string {\n try {\n const date = new Date(iso)\n return date.toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n })\n } catch {\n return iso\n }\n}\n\n/**\n * Footer component with structured layout for project info, sponsor, and build metadata.\n *\n * When `children` is provided, all automatic rendering is skipped.\n *\n * @example Structured usage\n * ```tsx\n * <Footer\n * project={config.project}\n * sponsor={{ text: \"Sebastian Software\", link: \"https://sebastian-software.com/oss\" }}\n * buildTime={config.buildTime}\n * message=\"Released under the MIT License.\"\n * copyright=\"Copyright 2026 Sebastian Software GmbH\"\n * />\n * ```\n *\n * @example Simple usage\n * ```tsx\n * <Footer message=\"MIT License\" copyright=\"2026 Sebastian Software\" />\n * ```\n *\n * @example Custom content\n * ```tsx\n * <Footer>\n * <CustomFooterContent />\n * </Footer>\n * ```\n */\nexport function Footer({\n message,\n copyright,\n children,\n className,\n project,\n sponsor,\n buildTime,\n ardoLink = true,\n}: FooterProps) {\n const hasContent = message || copyright || children || project || sponsor || buildTime || ardoLink\n\n if (!hasContent) {\n return null\n }\n\n return (\n <footer className={className ?? \"ardo-footer\"}>\n <div className=\"ardo-footer-container\">\n {children ?? (\n <>\n {/* Primary line: project · ardo · sponsor */}\n {(project || ardoLink || sponsor) && (\n <p className=\"ardo-footer-primary\">\n {project?.name && (\n <>\n {project.homepage ? (\n <a href={project.homepage} className=\"ardo-footer-link\">\n {project.name}\n {project.version ? ` v${project.version}` : \"\"}\n </a>\n ) : (\n <span>\n {project.name}\n {project.version ? ` v${project.version}` : \"\"}\n </span>\n )}\n </>\n )}\n {project?.name && ardoLink && (\n <span className=\"ardo-footer-separator\" aria-hidden=\"true\" />\n )}\n {ardoLink && (\n <a href=\"https://ardo.dev\" className=\"ardo-footer-link\">\n Built with Ardo\n </a>\n )}\n {(project?.name || ardoLink) && sponsor && (\n <span className=\"ardo-footer-separator\" aria-hidden=\"true\" />\n )}\n {sponsor && (\n <a href={sponsor.link} className=\"ardo-footer-link\">\n Sponsored by {sponsor.text}\n </a>\n )}\n </p>\n )}\n {/* Secondary line: message / copyright */}\n {message && (\n <p className=\"ardo-footer-message\" dangerouslySetInnerHTML={{ __html: message }} />\n )}\n {copyright && (\n <p\n className=\"ardo-footer-copyright\"\n dangerouslySetInnerHTML={{ __html: copyright }}\n />\n )}\n {/* Tertiary line: build timestamp */}\n {buildTime && (\n <p className=\"ardo-footer-build-time\">Built on {formatBuildTime(buildTime)}</p>\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, type ComponentProps, useState, createContext, useContext } from \"react\"\nimport { NavLink as RouterNavLink } from \"react-router\"\n\n/** Route path type - uses React Router's NavLink 'to' prop type for type-safe routes */\ntype RoutePath = ComponentProps<typeof RouterNavLink>[\"to\"]\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 ?? \"ardo-nav\"}>{children}</nav>\n}\n\n// =============================================================================\n// NavLink Component\n// =============================================================================\n\nexport interface NavLinkProps {\n /** Internal route path (type-safe with React Router's registered routes) */\n to?: RoutePath\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({\n to,\n href,\n children,\n className,\n activeMatch: _activeMatch,\n}: NavLinkProps) {\n const navContext = useNavContext()\n const baseClassName = className ?? \"ardo-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 <RouterNavLink\n to={to}\n className={({ isActive }: { isActive: boolean }) =>\n [baseClassName, isActive && \"active\"].filter(Boolean).join(\" \")\n }\n onClick={handleClick}\n >\n {children}\n </RouterNavLink>\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 ?? \"ardo-nav-dropdown\"}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n >\n <button className=\"ardo-nav-dropdown-button\">\n {text}\n <span className=\"ardo-nav-dropdown-icon\">▼</span>\n </button>\n {open && <div className=\"ardo-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=\"ardo-toc\">\n <div className=\"ardo-toc-container\">\n <h3 className=\"ardo-toc-title\">{label}</h3>\n <nav className=\"ardo-toc-nav\" aria-label=\"Table of contents\">\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=\"ardo-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=\"ardo-toc-item\">\n <a\n href={`#${item.id}`}\n className={[\n `ardo-toc-link ardo-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 } 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=\"ardo-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=\"ardo-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 \"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=\"ardo-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=\"ardo-home-main\">\n {hero && (\n <section className=\"ardo-hero\">\n <div className=\"ardo-hero-container\">\n {hero.image && (\n <div className=\"ardo-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=\"ardo-hero-content\">\n {hero.name && <h1 className=\"ardo-hero-name\">{hero.name}</h1>}\n {hero.text && <p className=\"ardo-hero-text\">{hero.text}</p>}\n {hero.tagline && <p className=\"ardo-hero-tagline\">{hero.tagline}</p>}\n\n {hero.actions && hero.actions.length > 0 && (\n <div className=\"ardo-hero-actions\">\n {hero.actions.map((action, index) => (\n <Link\n key={index}\n to={action.link}\n className={`ardo-hero-action ardo-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=\"ardo-features\">\n <div className=\"ardo-features-container\">\n {features.map((feature, index) => (\n <div key={index} className=\"ardo-feature\">\n {feature.icon && <div className=\"ardo-feature-icon\">{feature.icon}</div>}\n <h3 className=\"ardo-feature-title\">{feature.title}</h3>\n <p className=\"ardo-feature-details\">{feature.details}</p>\n {feature.link && (\n <Link to={feature.link} className=\"ardo-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 { type ComponentProps, type ReactNode } from \"react\"\nimport { Link } from \"react-router\"\n\n/** Internal route path from React Router */\ntype RoutePath = ComponentProps<typeof Link>[\"to\"]\n\n/** External URL starting with http:// or https:// */\ntype ExternalUrl = `http://${string}` | `https://${string}`\n\nexport interface HeroAction {\n /** Button text */\n text: string\n /** Link destination - internal route path or external URL */\n link: RoutePath | ExternalUrl\n /** Visual theme: \"brand\" for primary, \"alt\" for secondary */\n theme?: \"brand\" | \"alt\"\n /** Optional icon as ReactNode (e.g. Lucide icon component) */\n icon?: ReactNode\n}\n\nexport interface HeroImage {\n /** Image for light mode */\n light: string\n /** Image for dark mode */\n dark?: string\n /** Alt text for the image */\n alt?: string\n}\n\nexport interface HeroProps {\n /** Large title displayed prominently */\n name?: string\n /** Secondary text below the name */\n text?: string\n /** Descriptive tagline */\n tagline?: string\n /** Hero image - can be a string URL or an object with light/dark variants */\n image?: string | HeroImage\n /** Call-to-action buttons */\n actions?: HeroAction[]\n /** Additional CSS class */\n className?: string\n /** Version string displayed as a pill badge above the name */\n version?: string\n}\n\n/**\n * Hero section component for landing pages.\n *\n * @example\n * ```tsx\n * import { ArrowRight, Github } from \"lucide-react\"\n *\n * <Hero\n * name=\"Ardo\"\n * text=\"React-first Documentation\"\n * tagline=\"Build beautiful documentation sites with React.\"\n * image=\"/logo.svg\"\n * actions={[\n * { text: \"Get Started\", link: \"/guide/getting-started\", theme: \"brand\", icon: <ArrowRight size={16} /> },\n * { text: \"GitHub\", link: \"https://github.com/...\", theme: \"alt\", icon: <Github size={16} /> }\n * ]}\n * />\n * ```\n */\nexport function Hero({ name, text, tagline, image, actions, className, version }: HeroProps) {\n const imageUrl = typeof image === \"string\" ? image : image?.light\n const imageAlt = typeof image === \"string\" ? name : (image?.alt ?? name)\n\n return (\n <section className={className ?? \"ardo-hero\"}>\n <div className=\"ardo-hero-container ardo-hero-animate\">\n {image && (\n <div className=\"ardo-hero-image\">\n <img src={imageUrl} alt={imageAlt} />\n </div>\n )}\n\n <div className=\"ardo-hero-content\">\n {version && <span className=\"ardo-hero-version\">v{version}</span>}\n {name && <h1 className=\"ardo-hero-name\">{name}</h1>}\n {text && <p className=\"ardo-hero-text\">{text}</p>}\n {tagline && <p className=\"ardo-hero-tagline\">{tagline}</p>}\n\n {actions && actions.length > 0 && (\n <div className=\"ardo-hero-actions\">\n {actions.map((action, index) => {\n const link = action.link\n const isExternal =\n typeof link === \"string\" &&\n (link.startsWith(\"http://\") || link.startsWith(\"https://\"))\n const className = `ardo-hero-action ardo-hero-action-${action.theme || \"brand\"}`\n\n const content = (\n <>\n {action.icon}\n {action.text}\n </>\n )\n\n if (isExternal) {\n return (\n <a\n key={index}\n href={link}\n className={className}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {content}\n </a>\n )\n }\n\n return (\n <Link key={index} to={link} className={className}>\n {content}\n </Link>\n )\n })}\n </div>\n )}\n </div>\n </div>\n </section>\n )\n}\n","import { Link } from \"react-router\"\nimport type { CSSProperties, ReactNode } from \"react\"\n\nexport interface FeatureItem {\n /** Feature title */\n title: string\n /** Icon as ReactNode (emoji, Lucide icon component, or any JSX) */\n icon?: ReactNode\n /** Feature description */\n details: string\n /** Optional link */\n link?: string\n /** Link text (defaults to \"Learn more\") */\n linkText?: string\n}\n\nexport interface FeaturesProps {\n /** Array of feature items to display */\n items: FeatureItem[]\n /** Section title */\n title?: string\n /** Section subtitle */\n subtitle?: string\n /** Additional CSS class */\n className?: string\n}\n\nexport interface FeatureCardProps extends FeatureItem {\n /** Additional CSS class */\n className?: string\n}\n\n/**\n * Individual feature card component.\n *\n * @example\n * ```tsx\n * import { Zap } from \"lucide-react\"\n *\n * // Using emoji\n * <FeatureCard title=\"Fast\" icon=\"⚡\" details=\"Lightning fast.\" />\n *\n * // Using Lucide icon (tree-shakeable)\n * <FeatureCard title=\"Fast\" icon={<Zap size={28} />} details=\"Lightning fast.\" />\n * ```\n */\nexport function FeatureCard({\n title,\n icon,\n details,\n link,\n linkText,\n className,\n style,\n}: FeatureCardProps & { style?: CSSProperties }) {\n return (\n <div className={className ?? \"ardo-feature\"} style={style}>\n {icon && <div className=\"ardo-feature-icon\">{icon}</div>}\n <h3 className=\"ardo-feature-title\">{title}</h3>\n <p className=\"ardo-feature-details\">{details}</p>\n {link && (\n <Link to={link} className=\"ardo-feature-link\">\n {linkText || \"Learn more\"}\n </Link>\n )}\n </div>\n )\n}\n\n/**\n * Features grid component for displaying multiple feature cards.\n *\n * @example\n * ```tsx\n * <Features\n * title=\"Key Features\"\n * subtitle=\"Everything you need to build great docs\"\n * items={[\n * { title: \"React-First\", icon: \"⚛️\", details: \"Built on React.\" },\n * { title: \"Fast\", icon: \"⚡\", details: \"Powered by Vite.\" },\n * { title: \"Type-Safe\", icon: \"📝\", details: \"Full TypeScript support.\" },\n * ]}\n * />\n * ```\n */\nexport function Features({ items, title, subtitle, className }: FeaturesProps) {\n if (!items || items.length === 0) {\n return null\n }\n\n return (\n <section className={className ?? \"ardo-features\"}>\n {(title || subtitle) && (\n <div className=\"ardo-features-header\">\n {title && <h2 className=\"ardo-features-title\">{title}</h2>}\n {subtitle && <p className=\"ardo-features-subtitle\">{subtitle}</p>}\n </div>\n )}\n <div className=\"ardo-features-container\">\n {items.map((feature, index) => (\n <FeatureCard key={index} {...feature} style={{ animationDelay: `${index * 80}ms` }} />\n ))}\n </div>\n </section>\n )\n}\n"],"mappings":"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","names":["useState","jsx","jsxs","jsx","jsxs","useState","useState","jsx","jsxs","useState","jsx","jsxs","useState","createContext","useContext","jsx","jsxs","NavLink","useState","useEffect","jsx","jsxs","useState","useEffect","jsx","jsxs","Link","jsx","jsxs","NavLink","Link","Link","Fragment","jsx","jsxs","className","Link","jsx","jsxs"]}
@@ -1,9 +1,10 @@
1
- import { b as PressConfig, R as ResolvedConfig } from '../types-tjxB5eh7.js';
2
- export { H as HeadConfig, M as MarkdownConfig, N as NavItem, P as PageData, a as PageFrontmatter, c as ProjectMeta, S as SidebarItem, d as SocialLink, T as TOCItem, e as ThemeConfig, f as TypeDocConfig } from '../types-tjxB5eh7.js';
1
+ import { b as PressConfig, R as ResolvedConfig, M as MarkdownConfig } from '../types-DSD5zwMd.js';
2
+ export { H as HeadConfig, N as NavItem, P as PageData, a as PageFrontmatter, c as ProjectMeta, S as SidebarItem, d as SocialLink, g as SponsorConfig, T as TOCItem, e as ThemeConfig, f as TypeDocConfig } from '../types-DSD5zwMd.js';
3
3
  import 'shiki';
4
4
 
5
5
  declare function defineConfig(config: PressConfig): PressConfig;
6
+ declare const defaultMarkdownConfig: MarkdownConfig;
6
7
  declare function resolveConfig(config: PressConfig, root: string): ResolvedConfig;
7
8
  declare function loadConfig(root: string): Promise<ResolvedConfig>;
8
9
 
9
- export { PressConfig, ResolvedConfig, defineConfig, loadConfig, resolveConfig };
10
+ export { MarkdownConfig, PressConfig, ResolvedConfig, defaultMarkdownConfig, defineConfig, loadConfig, resolveConfig };
@@ -1,9 +1,11 @@
1
1
  import {
2
+ defaultMarkdownConfig,
2
3
  defineConfig,
3
4
  loadConfig,
4
5
  resolveConfig
5
- } from "../chunk-FGRL2G4S.js";
6
+ } from "../chunk-BH7JD5XJ.js";
6
7
  export {
8
+ defaultMarkdownConfig,
7
9
  defineConfig,
8
10
  loadConfig,
9
11
  resolveConfig
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export { defineConfig, loadConfig, resolveConfig } from './config/index.js';
2
2
  export { ArdoPluginOptions, ardo as ardoPlugin, generateSidebar, getPageDataForRoute, getSlugFromPath, loadAllDocs, loadDoc, transformMarkdown, transformMarkdownToReact } from './vite/index.js';
3
- export { H as HeadConfig, M as MarkdownConfig, N as NavItem, P as PageData, a as PageFrontmatter, b as PressConfig, c as ProjectMeta, R as ResolvedConfig, S as SidebarItem, d as SocialLink, T as TOCItem, e as ThemeConfig, f as TypeDocConfig } from './types-tjxB5eh7.js';
3
+ export { H as HeadConfig, M as MarkdownConfig, N as NavItem, P as PageData, a as PageFrontmatter, b as PressConfig, c as ProjectMeta, R as ResolvedConfig, S as SidebarItem, d as SocialLink, T as TOCItem, e as ThemeConfig, f as TypeDocConfig } from './types-DSD5zwMd.js';
4
4
  export { PressProvider, findCurrentSidebarItem, getPrevNextLinks, useConfig, usePageData, usePressContext, useSidebar, useTOC, useThemeConfig } from './runtime/index.js';
5
- export { C as CodeBlock, a as CodeBlockProps, b as CodeGroup, c as CodeGroupProps, d as Container, e as ContainerProps, f as ContainerType, g as Content, h as CopyButton, D as Danger, i as DangerProps, j as DocLayout, k as DocPage, F as FeatureCard, l as FeatureCardProps, m as FeatureItem, n as Features, o as FeaturesProps, p as Footer, H as Header, q as Hero, r as HeroAction, s as HeroImage, t as HeroProps, u as HomePage, I as Info, v as InfoProps, L as Layout, N as Note, w as NoteProps, S as Search, x as Sidebar, T as TOC, y as Tab, z as TabList, A as TabListProps, B as TabPanel, E as TabPanelProps, G as TabPanels, J as TabPanelsProps, K as TabProps, M as Tabs, O as TabsProps, P as ThemeToggle, Q as Tip, R as TipProps, W as Warning, U as WarningProps } from './Features-BlVr5s_C.js';
5
+ export { C as CodeBlock, a as CodeBlockProps, b as CodeGroup, c as CodeGroupProps, d as Container, e as ContainerProps, f as ContainerType, g as Content, h as CopyButton, D as Danger, i as DangerProps, j as DocLayout, k as DocPage, F as FeatureCard, l as FeatureCardProps, m as FeatureItem, n as Features, o as FeaturesProps, p as Footer, H as Header, q as Hero, r as HeroAction, s as HeroImage, t as HeroProps, u as HomePage, I as Info, v as InfoProps, L as Layout, N as Note, w as NoteProps, S as Search, x as Sidebar, T as TOC, y as Tab, z as TabList, A as TabListProps, B as TabPanel, E as TabPanelProps, G as TabPanels, J as TabPanelsProps, K as TabProps, M as Tabs, O as TabsProps, P as ThemeToggle, Q as Tip, R as TipProps, W as Warning, U as WarningProps } from './Features-rHF_bj67.js';
6
6
  export { ApiDocHierarchy, ApiDocItem, ApiDocKind, ApiDocParameter, ApiDocReturn, ApiDocSource, ApiDocTag, ApiDocTypeParameter, ApiHierarchy, ApiItem, ApiKindBadge, ApiParametersTable, ApiReturns, ApiSignature, GeneratedApiDoc, TypeDocGenerator, TypeDocPluginOptions, createTypedocWatcher, generateApiDocs, typedocPlugin } from './typedoc/index.js';
7
7
  import 'vite';
8
8
  import 'shiki';
package/dist/index.js CHANGED
@@ -7,12 +7,12 @@ import {
7
7
  loadDoc,
8
8
  transformMarkdown,
9
9
  transformMarkdownToReact
10
- } from "./chunk-PCMPLBJA.js";
10
+ } from "./chunk-5K5L7ZYS.js";
11
11
  import {
12
12
  defineConfig,
13
13
  loadConfig,
14
14
  resolveConfig
15
- } from "./chunk-FGRL2G4S.js";
15
+ } from "./chunk-BH7JD5XJ.js";
16
16
  import "./chunk-R2QKY6G3.js";
17
17
  import {
18
18
  DocLayout,
@@ -24,11 +24,13 @@ import {
24
24
  Hero,
25
25
  HomePage,
26
26
  Layout,
27
- Search,
28
27
  Sidebar,
29
28
  TOC,
30
29
  ThemeToggle
31
- } from "./chunk-C4W4YI7C.js";
30
+ } from "./chunk-X7MG5VTZ.js";
31
+ import {
32
+ Search
33
+ } from "./chunk-GAYGMYIS.js";
32
34
  import {
33
35
  ApiHierarchy,
34
36
  ApiItem,
@@ -38,11 +40,11 @@ import {
38
40
  ApiSignature,
39
41
  createTypedocWatcher,
40
42
  typedocPlugin
41
- } from "./chunk-O64PX2AK.js";
43
+ } from "./chunk-M5VLOQYV.js";
42
44
  import {
43
45
  TypeDocGenerator,
44
46
  generateApiDocs
45
- } from "./chunk-4IRLOOXV.js";
47
+ } from "./chunk-7L64KVOU.js";
46
48
  import {
47
49
  CodeBlock,
48
50
  CodeGroup,
@@ -59,18 +61,21 @@ import {
59
61
  Tabs,
60
62
  Tip,
61
63
  Warning
62
- } from "./chunk-2L4ZS6W2.js";
64
+ } from "./chunk-NJWWPDO2.js";
65
+ import "./chunk-MJQGGJQZ.js";
63
66
  import {
64
- PressProvider,
65
67
  findCurrentSidebarItem,
66
- getPrevNextLinks,
68
+ getPrevNextLinks
69
+ } from "./chunk-FZP2AVJL.js";
70
+ import {
71
+ PressProvider,
67
72
  useConfig,
68
73
  usePageData,
69
74
  usePressContext,
70
75
  useSidebar,
71
76
  useTOC,
72
77
  useThemeConfig
73
- } from "./chunk-EOV2OUTW.js";
78
+ } from "./chunk-3O2PF4HA.js";
74
79
  export {
75
80
  ApiHierarchy,
76
81
  ApiItem,
@@ -14,8 +14,10 @@ import {
14
14
  Tabs,
15
15
  Tip,
16
16
  Warning
17
- } from "../chunk-2L4ZS6W2.js";
18
- import "../chunk-EOV2OUTW.js";
17
+ } from "../chunk-NJWWPDO2.js";
18
+ import "../chunk-MJQGGJQZ.js";
19
+ import "../chunk-FZP2AVJL.js";
20
+ import "../chunk-3O2PF4HA.js";
19
21
 
20
22
  // src/mdx/provider.tsx
21
23
  import { Link } from "react-router";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mdx/provider.tsx"],"sourcesContent":["import type { MDXComponents } from \"mdx/types\"\nimport type {\n ReactNode,\n HTMLAttributes,\n AnchorHTMLAttributes,\n ImgHTMLAttributes,\n TableHTMLAttributes,\n TdHTMLAttributes,\n ThHTMLAttributes,\n} from \"react\"\nimport { Link } from \"react-router\"\nimport { Content } from \"../ui/Content\"\nimport { CopyButton } from \"../ui/components/CopyButton\"\nimport { Icon } from \"../ui/components/Icon\"\nimport { Tip, Warning, Danger, Info, Note } from \"../ui/components/Container\"\nimport { Tabs, TabList, Tab, TabPanel, TabPanels } from \"../ui/components/Tabs\"\nimport { CodeBlock, CodeGroup } from \"../ui/components/CodeBlock\"\n\n/**\n * Smart link component that uses React Router for internal links\n * and regular anchor tags for external links.\n */\nfunction SmartLink({\n href,\n children,\n className,\n ...props\n}: AnchorHTMLAttributes<HTMLAnchorElement>) {\n const isExternal = href?.startsWith(\"http\") || href?.startsWith(\"//\")\n const isAnchor = href?.startsWith(\"#\")\n\n if (isExternal) {\n return (\n <a\n href={href}\n className={className ?? \"ardo-link\"}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n {...props}\n >\n {children}\n </a>\n )\n }\n\n if (isAnchor || !href) {\n return (\n <a href={href} className={className ?? \"ardo-link\"} {...props}>\n {children}\n </a>\n )\n }\n\n // Internal link - use React Router Link for proper basename handling\n return (\n <Link to={href} className={className ?? \"ardo-link\"} {...props}>\n {children}\n </Link>\n )\n}\n\n/**\n * Extracts text content from React children (for copy button)\n */\nfunction extractTextContent(children: ReactNode): string {\n if (typeof children === \"string\") {\n return children\n }\n if (Array.isArray(children)) {\n return children.map(extractTextContent).join(\"\")\n }\n if (children && typeof children === \"object\" && \"props\" in children) {\n return extractTextContent((children as { props: { children?: ReactNode } }).props.children)\n }\n return \"\"\n}\n\n/**\n * Code block wrapper with copy button and optional title.\n * Forwards data-label for CodeGroup tab labels.\n */\nfunction PreBlock({\n children,\n \"data-title\": dataTitle,\n \"data-label\": dataLabel,\n ...props\n}: HTMLAttributes<HTMLPreElement> & { \"data-title\"?: string; \"data-label\"?: string }) {\n const code = extractTextContent(children)\n\n return (\n <div className=\"ardo-code-block\" data-label={dataLabel}>\n {dataTitle && <div className=\"ardo-code-title\">{dataTitle}</div>}\n <div className=\"ardo-code-wrapper\">\n <pre {...props}>{children}</pre>\n <CopyButton code={code} />\n </div>\n </div>\n )\n}\n\n/**\n * Provides MDX components for rendering documentation content.\n * Used as the providerImportSource for @mdx-js/rollup.\n */\nexport function useMDXComponents(): MDXComponents {\n return {\n // Wrapper for the entire MDX content - uses Content for styling\n wrapper: ({ children }: { children: ReactNode }) => <Content>{children}</Content>,\n\n // Custom components for markdown elements with ardo- prefix\n h1: (props: HTMLAttributes<HTMLHeadingElement>) => <h1 className=\"ardo-heading-1\" {...props} />,\n h2: (props: HTMLAttributes<HTMLHeadingElement>) => <h2 className=\"ardo-heading-2\" {...props} />,\n h3: (props: HTMLAttributes<HTMLHeadingElement>) => <h3 className=\"ardo-heading-3\" {...props} />,\n h4: (props: HTMLAttributes<HTMLHeadingElement>) => <h4 className=\"ardo-heading-4\" {...props} />,\n h5: (props: HTMLAttributes<HTMLHeadingElement>) => <h5 className=\"ardo-heading-5\" {...props} />,\n h6: (props: HTMLAttributes<HTMLHeadingElement>) => <h6 className=\"ardo-heading-6\" {...props} />,\n p: (props: HTMLAttributes<HTMLParagraphElement>) => <p className=\"ardo-paragraph\" {...props} />,\n a: SmartLink,\n ul: (props: HTMLAttributes<HTMLUListElement>) => (\n <ul className=\"ardo-list ardo-list-unordered\" {...props} />\n ),\n ol: (props: HTMLAttributes<HTMLOListElement>) => (\n <ol className=\"ardo-list ardo-list-ordered\" {...props} />\n ),\n li: (props: HTMLAttributes<HTMLLIElement>) => <li className=\"ardo-list-item\" {...props} />,\n blockquote: (props: HTMLAttributes<HTMLQuoteElement>) => (\n <blockquote className=\"ardo-blockquote\" {...props} />\n ),\n pre: PreBlock,\n code: (props: HTMLAttributes<HTMLElement>) => <code className=\"ardo-code\" {...props} />,\n table: (props: TableHTMLAttributes<HTMLTableElement>) => (\n <table className=\"ardo-table\" {...props} />\n ),\n thead: (props: HTMLAttributes<HTMLTableSectionElement>) => (\n <thead className=\"ardo-table-head\" {...props} />\n ),\n tbody: (props: HTMLAttributes<HTMLTableSectionElement>) => (\n <tbody className=\"ardo-table-body\" {...props} />\n ),\n tr: (props: HTMLAttributes<HTMLTableRowElement>) => (\n <tr className=\"ardo-table-row\" {...props} />\n ),\n th: (props: ThHTMLAttributes<HTMLTableCellElement>) => (\n <th className=\"ardo-table-header\" {...props} />\n ),\n td: (props: TdHTMLAttributes<HTMLTableCellElement>) => (\n <td className=\"ardo-table-cell\" {...props} />\n ),\n hr: (props: HTMLAttributes<HTMLHRElement>) => <hr className=\"ardo-divider\" {...props} />,\n img: (props: ImgHTMLAttributes<HTMLImageElement>) => <img className=\"ardo-image\" {...props} />,\n\n // Custom Ardo components available in MDX\n Icon,\n Tip,\n Warning,\n Danger,\n Info,\n Note,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n TabPanels,\n CodeBlock,\n CodeGroup,\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/mdx/provider.tsx"],"sourcesContent":["import type { MDXComponents } from \"mdx/types\"\nimport type {\n ReactNode,\n HTMLAttributes,\n AnchorHTMLAttributes,\n ImgHTMLAttributes,\n TableHTMLAttributes,\n TdHTMLAttributes,\n ThHTMLAttributes,\n} from \"react\"\nimport { Link } from \"react-router\"\nimport { Content } from \"../ui/Content\"\nimport { CopyButton } from \"../ui/components/CopyButton\"\nimport { Icon } from \"../ui/components/Icon\"\nimport { Tip, Warning, Danger, Info, Note } from \"../ui/components/Container\"\nimport { Tabs, TabList, Tab, TabPanel, TabPanels } from \"../ui/components/Tabs\"\nimport { CodeBlock, CodeGroup } from \"../ui/components/CodeBlock\"\n\n/**\n * Smart link component that uses React Router for internal links\n * and regular anchor tags for external links.\n */\nfunction SmartLink({\n href,\n children,\n className,\n ...props\n}: AnchorHTMLAttributes<HTMLAnchorElement>) {\n const isExternal = href?.startsWith(\"http\") || href?.startsWith(\"//\")\n const isAnchor = href?.startsWith(\"#\")\n\n if (isExternal) {\n return (\n <a\n href={href}\n className={className ?? \"ardo-link\"}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n {...props}\n >\n {children}\n </a>\n )\n }\n\n if (isAnchor || !href) {\n return (\n <a href={href} className={className ?? \"ardo-link\"} {...props}>\n {children}\n </a>\n )\n }\n\n // Internal link - use React Router Link for proper basename handling\n return (\n <Link to={href} className={className ?? \"ardo-link\"} {...props}>\n {children}\n </Link>\n )\n}\n\n/**\n * Extracts text content from React children (for copy button)\n */\nfunction extractTextContent(children: ReactNode): string {\n if (typeof children === \"string\") {\n return children\n }\n if (Array.isArray(children)) {\n return children.map(extractTextContent).join(\"\")\n }\n if (children && typeof children === \"object\" && \"props\" in children) {\n return extractTextContent((children as { props: { children?: ReactNode } }).props.children)\n }\n return \"\"\n}\n\n/**\n * Code block wrapper with copy button and optional title.\n * Forwards data-label for CodeGroup tab labels.\n */\nfunction PreBlock({\n children,\n \"data-title\": dataTitle,\n \"data-label\": dataLabel,\n ...props\n}: HTMLAttributes<HTMLPreElement> & { \"data-title\"?: string; \"data-label\"?: string }) {\n const code = extractTextContent(children)\n\n return (\n <div className=\"ardo-code-block\" data-label={dataLabel}>\n {dataTitle && <div className=\"ardo-code-title\">{dataTitle}</div>}\n <div className=\"ardo-code-wrapper\">\n <pre {...props}>{children}</pre>\n <CopyButton code={code} />\n </div>\n </div>\n )\n}\n\n/**\n * Provides MDX components for rendering documentation content.\n * Used as the providerImportSource for @mdx-js/rollup.\n */\nexport function useMDXComponents(): MDXComponents {\n return {\n // Wrapper for the entire MDX content - uses Content for styling\n wrapper: ({ children }: { children: ReactNode }) => <Content>{children}</Content>,\n\n // Custom components for markdown elements with ardo- prefix\n h1: (props: HTMLAttributes<HTMLHeadingElement>) => <h1 className=\"ardo-heading-1\" {...props} />,\n h2: (props: HTMLAttributes<HTMLHeadingElement>) => <h2 className=\"ardo-heading-2\" {...props} />,\n h3: (props: HTMLAttributes<HTMLHeadingElement>) => <h3 className=\"ardo-heading-3\" {...props} />,\n h4: (props: HTMLAttributes<HTMLHeadingElement>) => <h4 className=\"ardo-heading-4\" {...props} />,\n h5: (props: HTMLAttributes<HTMLHeadingElement>) => <h5 className=\"ardo-heading-5\" {...props} />,\n h6: (props: HTMLAttributes<HTMLHeadingElement>) => <h6 className=\"ardo-heading-6\" {...props} />,\n p: (props: HTMLAttributes<HTMLParagraphElement>) => <p className=\"ardo-paragraph\" {...props} />,\n a: SmartLink,\n ul: (props: HTMLAttributes<HTMLUListElement>) => (\n <ul className=\"ardo-list ardo-list-unordered\" {...props} />\n ),\n ol: (props: HTMLAttributes<HTMLOListElement>) => (\n <ol className=\"ardo-list ardo-list-ordered\" {...props} />\n ),\n li: (props: HTMLAttributes<HTMLLIElement>) => <li className=\"ardo-list-item\" {...props} />,\n blockquote: (props: HTMLAttributes<HTMLQuoteElement>) => (\n <blockquote className=\"ardo-blockquote\" {...props} />\n ),\n pre: PreBlock,\n code: (props: HTMLAttributes<HTMLElement>) => <code className=\"ardo-code\" {...props} />,\n table: (props: TableHTMLAttributes<HTMLTableElement>) => (\n <table className=\"ardo-table\" {...props} />\n ),\n thead: (props: HTMLAttributes<HTMLTableSectionElement>) => (\n <thead className=\"ardo-table-head\" {...props} />\n ),\n tbody: (props: HTMLAttributes<HTMLTableSectionElement>) => (\n <tbody className=\"ardo-table-body\" {...props} />\n ),\n tr: (props: HTMLAttributes<HTMLTableRowElement>) => (\n <tr className=\"ardo-table-row\" {...props} />\n ),\n th: (props: ThHTMLAttributes<HTMLTableCellElement>) => (\n <th className=\"ardo-table-header\" {...props} />\n ),\n td: (props: TdHTMLAttributes<HTMLTableCellElement>) => (\n <td className=\"ardo-table-cell\" {...props} />\n ),\n hr: (props: HTMLAttributes<HTMLHRElement>) => <hr className=\"ardo-divider\" {...props} />,\n img: (props: ImgHTMLAttributes<HTMLImageElement>) => <img className=\"ardo-image\" {...props} />,\n\n // Custom Ardo components available in MDX\n Icon,\n Tip,\n Warning,\n Danger,\n Info,\n Note,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n TabPanels,\n CodeBlock,\n CodeGroup,\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
3
  import { ReactNode } from 'react';
4
- import { b as PressConfig, S as SidebarItem, P as PageData, T as TOCItem, e as ThemeConfig } from '../types-tjxB5eh7.js';
4
+ import { b as PressConfig, S as SidebarItem, P as PageData, T as TOCItem, e as ThemeConfig } from '../types-DSD5zwMd.js';
5
5
  import 'shiki';
6
6
 
7
7
  interface PressContextValue {
@@ -1,16 +1,18 @@
1
1
  import "../chunk-R2QKY6G3.js";
2
+ import {
3
+ findCurrentSidebarItem,
4
+ getPrevNextLinks
5
+ } from "../chunk-FZP2AVJL.js";
2
6
  import {
3
7
  PressContext,
4
8
  PressProvider,
5
- findCurrentSidebarItem,
6
- getPrevNextLinks,
7
9
  useConfig,
8
10
  usePageData,
9
11
  usePressContext,
10
12
  useSidebar,
11
13
  useTOC,
12
14
  useThemeConfig
13
- } from "../chunk-EOV2OUTW.js";
15
+ } from "../chunk-3O2PF4HA.js";
14
16
  export {
15
17
  PressContext,
16
18
  PressProvider,
@@ -176,6 +176,7 @@ interface GeneratedApiDoc {
176
176
  title: string;
177
177
  description?: string;
178
178
  sidebar_position?: number;
179
+ sidebar?: boolean;
179
180
  };
180
181
  }
181
182
 
@@ -187,6 +188,7 @@ declare class TypeDocGenerator {
187
188
  constructor(config: TypeDocConfig);
188
189
  generate(outputDir: string): Promise<GeneratedApiDoc[]>;
189
190
  private generateMarkdownDocs;
191
+ private generateCategoryIndexPages;
190
192
  private generateGroupedFunctionsPage;
191
193
  private generateGroupedTypesPage;
192
194
  private getModuleNameFromPath;
@@ -7,11 +7,11 @@ import {
7
7
  ApiSignature,
8
8
  createTypedocWatcher,
9
9
  typedocPlugin
10
- } from "../chunk-O64PX2AK.js";
10
+ } from "../chunk-M5VLOQYV.js";
11
11
  import {
12
12
  TypeDocGenerator,
13
13
  generateApiDocs
14
- } from "../chunk-4IRLOOXV.js";
14
+ } from "../chunk-7L64KVOU.js";
15
15
  export {
16
16
  ApiHierarchy,
17
17
  ApiItem,
@@ -12,6 +12,10 @@ interface NavItem {
12
12
  items?: NavItem[];
13
13
  activeMatch?: string;
14
14
  }
15
+ interface SponsorConfig {
16
+ text: string;
17
+ link: string;
18
+ }
15
19
  interface SocialLink {
16
20
  icon: "github" | "twitter" | "discord" | "linkedin" | "youtube" | "npm";
17
21
  link: string;
@@ -40,6 +44,7 @@ interface ThemeConfig {
40
44
  footer?: {
41
45
  message?: string;
42
46
  copyright?: string;
47
+ sponsor?: SponsorConfig;
43
48
  };
44
49
  /** Search configuration */
45
50
  search?: {
@@ -234,4 +239,4 @@ interface ResolvedConfig extends Required<Omit<PressConfig, "vite" | "typedoc" |
234
239
  contentDir: string;
235
240
  }
236
241
 
237
- export type { HeadConfig as H, MarkdownConfig as M, NavItem as N, PageData as P, ResolvedConfig as R, SidebarItem as S, TOCItem as T, PageFrontmatter as a, PressConfig as b, ProjectMeta as c, SocialLink as d, ThemeConfig as e, TypeDocConfig as f };
242
+ export type { HeadConfig as H, MarkdownConfig as M, NavItem as N, PageData as P, ResolvedConfig as R, SidebarItem as S, TOCItem as T, PageFrontmatter as a, PressConfig as b, ProjectMeta as c, SocialLink as d, ThemeConfig as e, TypeDocConfig as f, SponsorConfig as g };
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"/><path d="M14 2v5a1 1 0 0 0 1 1h5"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"/><path d="M9 18c-4.51 2-5-2-7-2"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect width="4" height="12" x="2" y="9"/><circle cx="4" cy="4" r="2"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"/><path d="M12 22V12"/><polyline points="3.29 7 12 12 20.71 7"/><path d="m7.5 4.27 9 5.15"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.34-4.34"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17"/><path d="m10 15 5-3-5-3z"/></svg>
@@ -1,9 +1,8 @@
1
- export { C as CodeBlock, a as CodeBlockProps, b as CodeGroup, c as CodeGroupProps, d as Container, e as ContainerProps, f as ContainerType, g as Content, h as CopyButton, D as Danger, i as DangerProps, V as DocContent, j as DocLayout, k as DocPage, F as FeatureCard, l as FeatureCardProps, m as FeatureItem, n as Features, o as FeaturesProps, p as Footer, X as FooterCopyrightProps, Y as FooterMessageProps, Z as FooterProps, H as Header, _ as HeaderProps, q as Hero, r as HeroAction, s as HeroImage, t as HeroProps, u as HomePage, I as Info, v as InfoProps, L as Layout, $ as LayoutProps, N as Note, w as NoteProps, S as Search, x as Sidebar, a0 as SidebarGroup, a1 as SidebarGroupProps, a2 as SidebarLink, a3 as SidebarLinkProps, a4 as SidebarProps, a5 as SocialLink, a6 as SocialLinkProps, T as TOC, y as Tab, z as TabList, A as TabListProps, B as TabPanel, E as TabPanelProps, G as TabPanels, J as TabPanelsProps, K as TabProps, M as Tabs, O as TabsProps, P as ThemeToggle, Q as Tip, R as TipProps, W as Warning, U as WarningProps } from '../Features-BlVr5s_C.js';
1
+ export { C as CodeBlock, a as CodeBlockProps, b as CodeGroup, c as CodeGroupProps, d as Container, e as ContainerProps, f as ContainerType, g as Content, h as CopyButton, D as Danger, i as DangerProps, V as DocContent, j as DocLayout, k as DocPage, F as FeatureCard, l as FeatureCardProps, m as FeatureItem, n as Features, o as FeaturesProps, p as Footer, X as FooterCopyrightProps, Y as FooterMessageProps, Z as FooterProps, H as Header, _ as HeaderProps, q as Hero, r as HeroAction, s as HeroImage, t as HeroProps, u as HomePage, I as Info, v as InfoProps, L as Layout, $ as LayoutProps, N as Note, w as NoteProps, S as Search, x as Sidebar, a0 as SidebarGroup, a1 as SidebarGroupProps, a2 as SidebarLink, a3 as SidebarLinkProps, a4 as SidebarProps, a5 as SocialLink, a6 as SocialLinkProps, T as TOC, y as Tab, z as TabList, A as TabListProps, B as TabPanel, E as TabPanelProps, G as TabPanels, J as TabPanelsProps, K as TabProps, M as Tabs, O as TabsProps, P as ThemeToggle, Q as Tip, R as TipProps, W as Warning, U as WarningProps } from '../Features-rHF_bj67.js';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
- import { ReactNode, ComponentProps } from 'react';
3
+ import { ReactNode, ComponentProps, SVGAttributes, ComponentType } from 'react';
4
4
  import { NavLink as NavLink$1 } from 'react-router';
5
- import { LucideProps, LucideIcon } from 'lucide-react';
6
- import '../types-tjxB5eh7.js';
5
+ import '../types-DSD5zwMd.js';
7
6
  import 'shiki';
8
7
 
9
8
  /** Route path type - uses React Router's NavLink 'to' prop type for type-safe routes */
@@ -71,9 +70,14 @@ interface NavDropdownProps {
71
70
  */
72
71
  declare function NavDropdown({ text, children, className }: NavDropdownProps): react_jsx_runtime.JSX.Element;
73
72
 
74
- interface IconProps extends Omit<LucideProps, "ref"> {
73
+ type IconComponent = ComponentType<SVGAttributes<SVGSVGElement> & {
74
+ size?: number;
75
+ }>;
76
+ interface IconProps extends SVGAttributes<SVGSVGElement> {
75
77
  /** Name of the registered icon */
76
78
  name: string;
79
+ /** Icon size */
80
+ size?: number;
77
81
  }
78
82
  /**
79
83
  * Register icons for use with the Icon component.
@@ -88,13 +92,13 @@ interface IconProps extends Omit<LucideProps, "ref"> {
88
92
  * registerIcons({ Zap, Rocket, Code })
89
93
  * ```
90
94
  */
91
- declare function registerIcons(icons: Record<string, LucideIcon>): void;
95
+ declare function registerIcons(icons: Record<string, IconComponent>): void;
92
96
  /**
93
97
  * Get all registered icon names (useful for documentation).
94
98
  */
95
99
  declare function getRegisteredIconNames(): string[];
96
100
  /**
97
- * Renders a registered Lucide icon by name.
101
+ * Renders a registered icon by name.
98
102
  * Icons must be registered first using `registerIcons()`.
99
103
  *
100
104
  * @example
package/dist/ui/index.js CHANGED
@@ -12,14 +12,16 @@ import {
12
12
  Nav,
13
13
  NavDropdown,
14
14
  NavLink,
15
- Search,
16
15
  Sidebar,
17
16
  SidebarGroup,
18
17
  SidebarLink,
19
18
  SocialLink,
20
19
  TOC,
21
20
  ThemeToggle
22
- } from "../chunk-C4W4YI7C.js";
21
+ } from "../chunk-X7MG5VTZ.js";
22
+ import {
23
+ Search
24
+ } from "../chunk-GAYGMYIS.js";
23
25
  import {
24
26
  CodeBlock,
25
27
  CodeGroup,
@@ -39,8 +41,10 @@ import {
39
41
  Warning,
40
42
  getRegisteredIconNames,
41
43
  registerIcons
42
- } from "../chunk-2L4ZS6W2.js";
43
- import "../chunk-EOV2OUTW.js";
44
+ } from "../chunk-NJWWPDO2.js";
45
+ import "../chunk-MJQGGJQZ.js";
46
+ import "../chunk-FZP2AVJL.js";
47
+ import "../chunk-3O2PF4HA.js";
44
48
  export {
45
49
  CodeBlock,
46
50
  CodeGroup,