ardo 3.3.0 → 3.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.
- package/dist/{DocPage-B0Fr09xS.js → DocPage-EIVMae_6.js} +23 -21
- package/dist/DocPage-EIVMae_6.js.map +1 -0
- package/dist/assets/src/ui/{DocPage.css.ts.vanilla-BzG5Z7uL.css → DocPage.css.ts.vanilla-CWL92vUE.css} +8 -19
- package/dist/assets/src/ui/ErrorBoundary.css.ts.vanilla-C4usIU4z.css +112 -0
- package/dist/assets/src/ui/{Footer.css.ts.vanilla-YkYGSrJ5.css → Footer.css.ts.vanilla-DGTyff5Y.css} +39 -17
- package/dist/assets/src/ui/{Header.css.ts.vanilla-DoHPoq3b.css → Header.css.ts.vanilla-DEcLj8r0.css} +27 -45
- package/dist/assets/src/ui/{Layout.css.ts.vanilla-C7TVummJ.css → Layout.css.ts.vanilla-ClOa1YZm.css} +0 -3
- package/dist/assets/src/ui/{Sidebar.css.ts.vanilla-PyKaHp0J.css → Sidebar.css.ts.vanilla-IxNEQEBv.css} +57 -31
- package/dist/assets/src/ui/{Toc.css.ts.vanilla-Py3sLE1P.css → Toc.css.ts.vanilla-CQbpEdTg.css} +5 -5
- package/dist/assets/src/ui/components/{CodeBlock.css.ts.vanilla-DL4KE8dp.css → CodeBlock.css.ts.vanilla-DYyQRTxk.css} +18 -16
- package/dist/assets/src/ui/components/{Container.css.ts.vanilla-CUhRUA9t.css → Container.css.ts.vanilla-B8_jKj0Q.css} +6 -0
- package/dist/assets/src/ui/components/{CopyButton.css.ts.vanilla-DSjVT6G0.css → CopyButton.css.ts.vanilla-CO2awD6S.css} +4 -5
- package/dist/assets/src/ui/components/{Features.css.ts.vanilla-ggYasCFy.css → Features.css.ts.vanilla-CcCxB5Q6.css} +1 -1
- package/dist/assets/src/ui/components/HeaderSearch.css.ts.vanilla-KAo_Mlc-.css +68 -0
- package/dist/assets/src/ui/components/{Search.css.ts.vanilla-CX2EM6hW.css → Search.css.ts.vanilla-NQZH1eLo.css} +17 -6
- package/dist/assets/src/ui/{content.css.ts.vanilla-CJnrOQNh.css → content.css.ts.vanilla-B5a1kmaY.css} +12 -2
- package/dist/assets/src/ui/theme/{dark.css.ts.vanilla-C40AfyaZ.css → dark.css.ts.vanilla-CSJkJvIz.css} +12 -7
- package/dist/assets/src/ui/theme/{light.css.ts.vanilla-D0oxKOX2.css → light.css.ts.vanilla-CFz9jeJK.css} +12 -7
- package/dist/{brand-icons-DLJKqTun.js → brand-icons-Di8w0Nu9.js} +1 -1
- package/dist/{brand-icons-DLJKqTun.js.map → brand-icons-Di8w0Nu9.js.map} +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/{contract.css-ZxmDpwAM.d.ts → contract.css-eFQbUr4z.d.ts} +6 -1
- package/dist/contract.css-eFQbUr4z.d.ts.map +1 -0
- package/dist/{generator-DX0PP1xf.js → generator-CYSyo4Vz.js} +7 -6
- package/dist/generator-CYSyo4Vz.js.map +1 -0
- package/dist/icons/index.js +1 -1
- package/dist/{index-CWfXolzQ.d.ts → index-BcekgOfA.d.ts} +68 -7
- package/dist/index-BcekgOfA.d.ts.map +1 -0
- package/dist/{index-BNKprp9_.d.ts → index-CuMTHUxX.d.ts} +8 -2
- package/dist/index-CuMTHUxX.d.ts.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/mdx/provider.js +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/{sidebar-utils-1Skqle1Q.js → sidebar-utils-C06DJsx4.js} +15 -4
- package/dist/sidebar-utils-C06DJsx4.js.map +1 -0
- package/dist/theme/index.d.ts +18 -4
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +48 -23
- package/dist/theme/index.js.map +1 -1
- package/dist/typedoc/components/index.d.ts +1 -1
- package/dist/typedoc/index.d.ts +1 -1
- package/dist/typedoc/index.d.ts.map +1 -1
- package/dist/typedoc/index.js +1 -1
- package/dist/{types-Do3OQY8G.d.ts → types-B75OhnGa.d.ts} +13 -2
- package/dist/types-B75OhnGa.d.ts.map +1 -0
- package/dist/{types-DvGYhH63.d.ts → types-Ck2Vm7NB.d.ts} +2 -2
- package/dist/{types-DvGYhH63.d.ts.map → types-Ck2Vm7NB.d.ts.map} +1 -1
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.js +3 -3
- package/dist/ui/styles.css +367 -313
- package/dist/ui/styles.js +14 -14
- package/dist/{ui-BzUIfYJm.js → ui-B6X8gAvz.js} +585 -277
- package/dist/ui-B6X8gAvz.js.map +1 -0
- package/dist/vite/index.d.ts +1 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +165 -24
- package/dist/vite/index.js.map +1 -1
- package/package.json +13 -13
- package/dist/DocPage-B0Fr09xS.js.map +0 -1
- package/dist/contract.css-ZxmDpwAM.d.ts.map +0 -1
- package/dist/generator-DX0PP1xf.js.map +0 -1
- package/dist/index-BNKprp9_.d.ts.map +0 -1
- package/dist/index-CWfXolzQ.d.ts.map +0 -1
- package/dist/sidebar-utils-1Skqle1Q.js.map +0 -1
- package/dist/types-Do3OQY8G.d.ts.map +0 -1
- package/dist/ui-BzUIfYJm.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ardo",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "React-first Static Documentation Framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -64,20 +64,20 @@
|
|
|
64
64
|
],
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@mdx-js/rollup": "^3.1.1",
|
|
67
|
-
"@react-router/dev": "^7.15.
|
|
67
|
+
"@react-router/dev": "^7.15.1",
|
|
68
68
|
"@resvg/resvg-js": "^2.6.2",
|
|
69
|
-
"@shikijs/rehype": "^4.0
|
|
69
|
+
"@shikijs/rehype": "^4.1.0",
|
|
70
70
|
"@vanilla-extract/css": "^1.20.1",
|
|
71
71
|
"@vanilla-extract/esbuild-plugin": "^2.3.22",
|
|
72
72
|
"@vanilla-extract/recipes": "^0.5.7",
|
|
73
73
|
"@vanilla-extract/vite-plugin": "^5.2.2",
|
|
74
|
-
"@vitejs/plugin-react": "^6.0.
|
|
74
|
+
"@vitejs/plugin-react": "^6.0.2",
|
|
75
75
|
"gray-matter": "^4.0.3",
|
|
76
76
|
"hast-util-to-jsx-runtime": "^2.3.6",
|
|
77
77
|
"minisearch": "^7.2.0",
|
|
78
78
|
"react": "^19.2.6",
|
|
79
79
|
"react-dom": "^19.2.6",
|
|
80
|
-
"react-router": "^7.15.
|
|
80
|
+
"react-router": "^7.15.1",
|
|
81
81
|
"read-package-up": "^12.0.0",
|
|
82
82
|
"rehype-parse": "^9.0.1",
|
|
83
83
|
"rehype-stringify": "^10.0.1",
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
"remark-mdx-frontmatter": "^5.2.0",
|
|
87
87
|
"remark-parse": "^11.0.0",
|
|
88
88
|
"remark-rehype": "^11.1.2",
|
|
89
|
-
"shiki": "^4.0
|
|
90
|
-
"tailwindcss": "^4.
|
|
89
|
+
"shiki": "^4.1.0",
|
|
90
|
+
"tailwindcss": "^4.3.0",
|
|
91
91
|
"typedoc": "^0.28.19",
|
|
92
92
|
"unified": "^11.0.5",
|
|
93
93
|
"unist-util-visit": "^5.1.0"
|
|
@@ -102,21 +102,21 @@
|
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@storybook/react": "^10.
|
|
106
|
-
"@storybook/react-vite": "^10.
|
|
105
|
+
"@storybook/react": "^10.4.0",
|
|
106
|
+
"@storybook/react-vite": "^10.4.0",
|
|
107
107
|
"@types/hast": "^3.0.4",
|
|
108
108
|
"@types/mdast": "^4.0.4",
|
|
109
109
|
"@types/mdx": "^2.0.13",
|
|
110
|
-
"@types/node": "^25.
|
|
111
|
-
"@types/react": "^19.2.
|
|
110
|
+
"@types/node": "^25.9.1",
|
|
111
|
+
"@types/react": "^19.2.15",
|
|
112
112
|
"@types/react-dom": "^19.2.3",
|
|
113
113
|
"@vanilla-extract/rollup-plugin": "^1.5.3",
|
|
114
114
|
"estree-util-value-to-estree": "^3.5.0",
|
|
115
115
|
"tsdown": "^0.22.0",
|
|
116
116
|
"typescript": "^6.0.3",
|
|
117
117
|
"unist-util-mdx-define": "^1.1.2",
|
|
118
|
-
"vite": "^8.0.
|
|
119
|
-
"vitest": "^4.1.
|
|
118
|
+
"vite": "^8.0.14",
|
|
119
|
+
"vitest": "^4.1.7"
|
|
120
120
|
},
|
|
121
121
|
"keywords": [
|
|
122
122
|
"documentation",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocPage-B0Fr09xS.js","names":["styles.skipLink","styles.layoutContainer","styles.main","styles.copyButton","styles.copyText","styles.codeLine","styles.codeBlock","styles.codeWrapper","styles.codeGroup","styles.codeGroupTabs","styles.codeGroupTab","styles.codeGroupPanels","styles.codeGroupPanel","styles.container","styles.containerIcon","styles.containerBody","styles.containerTitle","styles.containerContent","styles.steps","styles.tabs","styles.tabList","styles.tab","styles.tabPanel","styles.tabPanels","styles.breadcrumb","styles.breadcrumbCurrent","docStyles.contentBody","docStyles.contentContainer","docStyles.contentHeader","docStyles.contentTitle","footerStyles.contentMeta","prevLink","nextLink","footerStyles.prevNext","footerStyles.prevLink","footerStyles.prevNextLabel","footerStyles.prevNextTitle","footerStyles.nextLink","toc","styles.toc","styles.tocTitle","styles.tocList","styles.tocLink","styles.docPage","styles.pageRail"],"sources":["../src/ui/Footer.css.ts","../src/ui/Layout.css.ts","../src/ui/Layout.tsx","../src/ui/BareContent.tsx","../src/ui/components/CodeBlock.css.ts","../src/ui/components/CopyButton.css.ts","../src/ui/components/CopyButton.tsx","../src/ui/components/CodeBlock.tsx","../src/ui/components/Container.css.ts","../src/ui/components/Container.tsx","../src/ui/components/Icon.tsx","../src/ui/components/Steps.css.ts","../src/ui/components/Steps.tsx","../src/ui/components/Tabs.css.ts","../src/ui/components/Tabs.tsx","../src/ui/Breadcrumb.css.ts","../src/ui/Breadcrumb.tsx","../src/ui/content.css.ts","../src/ui/DocPage.css.ts","../src/ui/Content.tsx","../src/ui/Toc.css.ts","../src/ui/Toc.tsx","../src/ui/DocPage.tsx"],"sourcesContent":["import { globalStyle, style } from \"@vanilla-extract/css\"\n\nimport * as layoutStyles from \"./Layout.css\"\nimport { vars } from \"./theme/contract.css\"\n\nexport const footer = style({\n width: \"100%\",\n padding: `${vars.space[\"2xl\"]} ${vars.space.xl}`,\n textAlign: \"left\",\n background: `color-mix(in oklch, ${vars.color.brand} 6%, ${vars.color.bgMute})`,\n margin: `${vars.space[\"2xl\"]} 0 0`,\n \"@media\": {\n \"(max-width: 768px)\": {\n padding: `${vars.space.xl} ${vars.space.md}`,\n },\n },\n})\n\nglobalStyle(`main > .${footer}`, {\n width: `calc(100% + (${vars.space.xl} * 2))`,\n marginRight: `calc(${vars.space.xl} * -1)`,\n marginBottom: `calc(${vars.space.xl} * -1)`,\n marginLeft: `calc(${vars.space.xl} * -1)`,\n \"@media\": {\n \"(max-width: 1024px)\": {\n width: `calc(100% + (${vars.space.md} * 2))`,\n marginRight: `calc(${vars.space.md} * -1)`,\n marginLeft: `calc(${vars.space.md} * -1)`,\n },\n },\n})\n\nglobalStyle(`.${layoutStyles.home} .${layoutStyles.main} > .${footer}`, {\n width: \"100%\",\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n})\n\nexport const footerContainer = style({\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 1fr) auto\",\n alignItems: \"start\",\n gap: `${vars.space.xs} ${vars.space[\"2xl\"]}`,\n width: \"100%\",\n maxWidth: \"80rem\",\n margin: \"0 auto\",\n \"@media\": {\n \"(max-width: 768px)\": {\n gridTemplateColumns: \"1fr\",\n gap: vars.space.xs,\n },\n },\n})\n\nexport const footerPrimary = style({\n display: \"flex\",\n alignItems: \"center\",\n gap: 0,\n flexWrap: \"wrap\",\n fontSize: vars.fontSize.sm,\n color: vars.color.textLight,\n marginBottom: 0,\n})\n\nexport const footerSeparator = style({\n display: \"inline-block\",\n width: vars.space.xs,\n height: vars.space.xs,\n borderRadius: \"50%\",\n background: vars.color.textLighter,\n margin: `0 0.75rem`,\n verticalAlign: \"middle\",\n})\n\nexport const footerLink = style({\n color: vars.color.brand,\n textDecoration: \"none\",\n transition: `opacity ${vars.transition.fast}`,\n selectors: {\n \"&:hover\": {\n opacity: 0.8,\n },\n },\n})\n\nexport const footerMessage = style({\n gridColumn: \"1\",\n fontSize: vars.fontSize.sm,\n color: vars.color.textLighter,\n})\n\nexport const footerCopyright = style({\n gridColumn: \"1\",\n fontSize: vars.fontSize.sm,\n color: vars.color.textLighter,\n})\n\nexport const footerBuildTime = style({\n gridColumn: \"2\",\n gridRow: \"1 / span 3\",\n justifySelf: \"end\",\n fontSize: vars.fontSize.xs,\n color: vars.color.textLighter,\n marginTop: \"2px\",\n textAlign: \"right\",\n \"@media\": {\n \"(max-width: 768px)\": {\n gridColumn: \"1\",\n gridRow: \"auto\",\n justifySelf: \"start\",\n textAlign: \"left\",\n },\n },\n})\n\nexport const contentFooter = style({\n marginTop: vars.space[\"2xl\"],\n})\n\nexport const contentMeta = style({\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: vars.space.lg,\n fontSize: vars.fontSize.sm,\n color: vars.color.textLighter,\n})\n\nexport const editLink = style({\n color: vars.color.brand,\n textDecoration: \"none\",\n fontWeight: 500,\n transition: `opacity ${vars.transition.fast}`,\n selectors: {\n \"&:hover\": {\n opacity: 0.8,\n },\n },\n})\n\nexport const prevNext = style({\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: vars.space.md,\n maxWidth: \"80rem\",\n})\n\nconst prevNextLinkBase = style({\n display: \"flex\",\n flexDirection: \"column\",\n padding: vars.space.lg,\n border: `1px solid ${vars.color.border}`,\n borderRadius: vars.radius.base,\n textDecoration: \"none\",\n transition: `all ${vars.transition.base}`,\n selectors: {\n \"&:hover\": {\n borderColor: vars.color.brand,\n background: vars.color.bgSoft,\n },\n },\n})\n\nexport const prevLink = style([prevNextLinkBase])\n\nexport const nextLink = style([prevNextLinkBase, { textAlign: \"right\" }])\n\nexport const prevNextLabel = style({\n fontSize: vars.fontSize.xs,\n fontWeight: 500,\n color: vars.color.textLighter,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n marginBottom: vars.space.xs,\n})\n\nexport const prevNextTitle = style({\n fontWeight: 600,\n color: vars.color.brand,\n})\n","import { globalStyle, style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"./theme/contract.css\"\n\nexport const layout = style({\n height: \"100vh\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n background: vars.color.sidebarBg,\n overflow: \"hidden\",\n})\n\nexport const layoutContainer = style({\n display: \"flex\",\n flex: 1,\n width: \"100%\",\n paddingTop: vars.layout.headerHeight,\n minHeight: 0,\n \"@media\": {\n \"(max-width: 1024px)\": {\n paddingTop: `calc(${vars.layout.headerHeight} + 2.75rem)`,\n },\n },\n})\n\nexport const main = style({\n flex: 1,\n minWidth: 0,\n width: \"100%\",\n background: vars.color.bg,\n overflowY: \"auto\",\n scrollPaddingTop: vars.space[\"2xl\"],\n padding: `0 ${vars.space.xl} ${vars.space.xl}`,\n \"@media\": {\n \"(max-width: 1024px)\": {\n padding: `0 ${vars.space.md} ${vars.space.xl}`,\n },\n },\n})\n\nexport const home = style({\n height: \"auto\",\n minHeight: \"100vh\",\n overflow: \"visible\",\n})\n\nexport const homeMain = style({\n paddingTop: vars.layout.headerHeight,\n})\n\n// No card styling on home page\nglobalStyle(`${home} .${main}`, {\n marginLeft: 0,\n padding: 0,\n margin: 0,\n borderRadius: 0,\n border: \"none\",\n background: vars.color.bg,\n overflow: \"visible\",\n})\n\nexport const skipLink = style({\n position: \"absolute\",\n top: \"-100%\",\n left: vars.space.md,\n zIndex: 200,\n padding: `0.75rem ${vars.space.lg}`,\n background: vars.color.brand,\n color: \"white\",\n fontWeight: 600,\n fontSize: vars.fontSize.sm,\n textDecoration: \"none\",\n borderRadius: vars.radius.base,\n boxShadow: vars.color.shadowMd,\n selectors: {\n \"&:focus\": {\n top: vars.space.md,\n },\n },\n})\n","import { type ReactNode, use } from \"react\"\nimport { Links, Meta, Scripts, ScrollRestoration } from \"react-router\"\n\nimport { ArdoContext } from \"../runtime/hooks\"\nimport { ARDO_FAVICON_DATA_URL } from \"./favicon\"\nimport * as styles from \"./Layout.css\"\n\n// =============================================================================\n// RootLayout Component (html/head/body shell)\n// =============================================================================\n\nexport type ArdoRootLayoutProps = {\n children: ReactNode\n /** Favicon URL for the SVG icon link. Defaults to the generated /icon.svg asset. */\n favicon?: string\n /**\n * Base URL for generated icon files.\n * Set to `false` to render only the inline fallback favicon link.\n */\n iconBasePath?: false | string\n /** Language attribute for <html> (default: from config or \"en\") */\n lang?: string\n}\n\n/**\n * Default HTML shell for Ardo sites. Replaces the boilerplate `Layout` export\n * that every root.tsx must define for React Router.\n *\n * @example Basic usage\n * ```tsx\n * // app/root.tsx\n * export { RootLayout as Layout } from \"ardo/ui\"\n * ```\n *\n * @example With favicon\n * ```tsx\n * import logo from \"./assets/logo.svg\"\n * export const Layout = (props) => <RootLayout favicon={logo} {...props} />\n * ```\n */\nexport function ArdoRootLayout({\n children,\n favicon,\n iconBasePath = \"/\",\n lang,\n}: ArdoRootLayoutProps) {\n // Use optional context (RootLayout renders before ArdoProvider is available)\n const context = use(ArdoContext)\n const resolvedLang = lang ?? context?.config.lang ?? \"en\"\n const iconBaseUrl = iconBasePath === false ? undefined : normalizeIconBasePath(iconBasePath)\n\n return (\n <html lang={resolvedLang} suppressHydrationWarning>\n <head>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n {iconBaseUrl == null ? (\n <link rel=\"icon\" type=\"image/svg+xml\" href={favicon ?? ARDO_FAVICON_DATA_URL} />\n ) : (\n <>\n <link rel=\"icon\" href={`${iconBaseUrl}favicon.ico`} sizes=\"32x32\" />\n <link rel=\"icon\" href={favicon ?? `${iconBaseUrl}icon.svg`} type=\"image/svg+xml\" />\n <link rel=\"apple-touch-icon\" href={`${iconBaseUrl}apple-touch-icon.png`} />\n </>\n )}\n <Meta />\n <Links />\n </head>\n <body suppressHydrationWarning>\n {children}\n <ScrollRestoration />\n <Scripts />\n </body>\n </html>\n )\n}\n\nfunction normalizeIconBasePath(basePath: string): string {\n if (basePath === \"\") {\n return \"/\"\n }\n\n return `${basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath}/`\n}\n\n// =============================================================================\n// Layout Component\n// =============================================================================\n\nexport type ArdoLayoutProps = {\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 ArdoLayout({ header, sidebar, footer, children, className }: ArdoLayoutProps) {\n return (\n <div className={className ?? styles.layout}>\n <a href=\"#main-content\" className={styles.skipLink}>\n Skip to content\n </a>\n {header}\n <div className={styles.layoutContainer}>\n {sidebar}\n <main id=\"main-content\" className={styles.main}>\n {children}\n {footer}\n </main>\n </div>\n </div>\n )\n}\n","import { createContext, type ReactNode, use } from \"react\"\n\nconst BareContentContext = createContext(false)\n\n/**\n * Wraps imported MDX content to render without the full Content wrapper\n * (article, header, footer, navigation). Only the content body is rendered.\n *\n * ```tsx\n * import MySnippet from \"./snippet.mdx\"\n *\n * <BareContent>\n * <MySnippet />\n * </BareContent>\n * ```\n */\nexport function ArdoBareContent({ children }: { children: ReactNode }) {\n return <BareContentContext value>{children}</BareContentContext>\n}\n\nexport function useBareContent(): boolean {\n return use(BareContentContext)\n}\n","import { globalStyle, style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"../theme/contract.css\"\nimport { shikiContainerClassName } from \"./code-block-classes\"\n\n// =============================================================================\n// React CodeBlock component styles\n// =============================================================================\n\nexport const codeBlock = style({\n margin: `${vars.space.lg} 0`,\n maxWidth: \"120ch\",\n borderRadius: vars.radius.base,\n overflow: \"hidden\",\n background: vars.color.codeBg,\n border: `1px solid ${vars.color.codeBorder}`,\n boxShadow: vars.color.codeShadow,\n})\n\nexport const codeTitle = style({\n padding: `${vars.space.sm} ${vars.space.md}`,\n fontSize: vars.fontSize.xs,\n fontWeight: 500,\n fontFamily: vars.font.mono,\n color: vars.color.textLighter,\n background: vars.color.bgSoft,\n borderBottom: `1px solid ${vars.color.codeBorder}`,\n})\n\nexport const codeWrapper = style({\n position: \"relative\",\n})\n\nglobalStyle(`${codeWrapper} pre`, {\n margin: 0,\n padding: `${vars.space.lg} ${vars.space.md}`,\n overflowX: \"auto\",\n fontFamily: vars.font.mono,\n fontSize: vars.fontSize.sm,\n lineHeight: 1.7,\n color: vars.color.text,\n background: \"transparent !important\",\n})\n\nglobalStyle(`.dark ${codeWrapper} pre`, {\n color: \"#e2e8f0\",\n})\n\nglobalStyle(`${codeWrapper} pre code`, {\n display: \"flex\",\n flexDirection: \"column\",\n})\n\nglobalStyle(`${codeWrapper} pre code .line`, {\n minHeight: \"1lh\",\n})\n\nexport const codeLine = style({\n display: \"block\",\n margin: `0 -${vars.space.md}`,\n padding: `0 ${vars.space.md}`,\n borderLeft: \"3px solid transparent\",\n selectors: {\n \"&.highlighted\": {\n background: `color-mix(in oklch, ${vars.color.brand} 11%, transparent)`,\n borderLeftColor: vars.color.brand,\n },\n },\n})\n\nexport const lineNumber = style({\n display: \"inline-block\",\n width: \"2rem\",\n color: vars.color.textLighter,\n textAlign: \"right\",\n marginRight: vars.space.md,\n userSelect: \"none\",\n selectors: {\n \".dark &\": {\n color: \"#475569\",\n },\n },\n})\n\n// =============================================================================\n// Server-rendered shiki code blocks\n// =============================================================================\n\nconst s = `.${shikiContainerClassName}`\n\nglobalStyle(`${s} > [data-title]`, {\n padding: `${vars.space.sm} ${vars.space.md}`,\n fontSize: vars.fontSize.xs,\n fontWeight: 500,\n fontFamily: vars.font.mono,\n color: vars.color.textLighter,\n background: vars.color.bgSoft,\n borderBottom: `1px solid ${vars.color.codeBorder}`,\n})\n\nglobalStyle(s, {\n margin: `${vars.space.lg} 0`,\n maxWidth: \"120ch\",\n borderRadius: vars.radius.base,\n overflow: \"hidden\",\n background: vars.color.codeBg,\n border: `1px solid ${vars.color.codeBorder}`,\n boxShadow: vars.color.codeShadow,\n})\n\nglobalStyle(`${s} > [data-lang]`, {\n position: \"relative\",\n})\n\nglobalStyle(`${s} pre`, {\n margin: 0,\n padding: `${vars.space.lg} ${vars.space.md}`,\n overflowX: \"auto\",\n fontFamily: vars.font.mono,\n fontSize: vars.fontSize.sm,\n lineHeight: 1.7,\n color: vars.color.text,\n background: \"transparent !important\",\n})\n\nglobalStyle(`.dark ${s} pre`, {\n color: \"#e2e8f0\",\n})\n\nglobalStyle(`${s} pre code`, {\n display: \"flex\",\n flexDirection: \"column\",\n})\n\nglobalStyle(`${s} .line`, {\n display: \"block\",\n minHeight: \"1lh\",\n margin: `0 -${vars.space.md}`,\n padding: `0 ${vars.space.md}`,\n borderLeft: \"3px solid transparent\",\n})\n\nglobalStyle(`${s} .line.highlighted`, {\n background: `color-mix(in oklch, ${vars.color.brand} 11%, transparent)`,\n borderLeftColor: vars.color.brand,\n})\n\nglobalStyle(`${s} .line[data-ln]::before`, {\n content: \"attr(data-ln)\",\n display: \"inline-block\",\n width: \"2rem\",\n color: vars.color.textLighter,\n textAlign: \"right\",\n marginRight: vars.space.md,\n userSelect: \"none\",\n})\n\nglobalStyle(`.dark ${s} .line[data-ln]::before`, {\n color: \"#475569\",\n})\n\n// Copy button - hidden by default, shown on hover\nglobalStyle(`${s} button[data-code]`, {\n position: \"absolute\",\n top: vars.space.sm,\n right: vars.space.sm,\n display: \"flex\",\n alignItems: \"center\",\n gap: vars.space.xs,\n padding: `${vars.space.xs} ${vars.space.sm}`,\n background: vars.color.bgSoft,\n border: `1px solid ${vars.color.codeBorder}`,\n borderRadius: vars.radius.sm,\n cursor: \"pointer\",\n fontSize: vars.fontSize.xs,\n fontFamily: vars.font.family,\n color: vars.color.textLight,\n opacity: 0.72,\n transition: `all ${vars.transition.base}`,\n})\n\nglobalStyle(`${s}:hover button[data-code]`, {\n opacity: 1,\n})\n\nglobalStyle(`${s} button[data-code]:hover`, {\n opacity: 1,\n borderColor: vars.color.brand,\n color: vars.color.brand,\n})\n\n// =============================================================================\n// Shiki theme integration\n// =============================================================================\n\nglobalStyle(\".shiki\", {\n background: \"transparent !important\",\n})\n\nglobalStyle(\".shiki span\", {\n color: \"var(--shiki-light)\",\n})\n\nglobalStyle(\".dark .shiki span\", {\n color: \"var(--shiki-dark)\",\n})\n\n// =============================================================================\n// Code group styles\n// =============================================================================\n\nexport const codeGroup = style({\n margin: `${vars.space.lg} 0`,\n maxWidth: \"120ch\",\n borderRadius: vars.radius.base,\n overflow: \"hidden\",\n background: vars.color.codeBg,\n border: `1px solid ${vars.color.codeBorder}`,\n boxShadow: vars.color.codeShadow,\n})\n\nexport const codeGroupTabs = style({\n display: \"flex\",\n background: vars.color.bgSoft,\n borderBottom: `1px solid ${vars.color.codeBorder}`,\n})\n\nexport const codeGroupTab = style({\n padding: `${vars.space.sm} ${vars.space.md}`,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: vars.fontSize.sm,\n fontFamily: vars.font.mono,\n color: vars.color.textLighter,\n borderBottom: \"2px solid transparent\",\n marginBottom: \"-1px\",\n transition: `all ${vars.transition.fast}`,\n selectors: {\n \"&:hover\": {\n color: vars.color.text,\n },\n \"&.active\": {\n color: vars.color.brand,\n borderBottomColor: vars.color.brand,\n },\n },\n})\n\nexport const codeGroupPanels = style({})\n\nexport const codeGroupPanel = style({})\n\nglobalStyle(`${codeGroupPanel} ${codeBlock}`, {\n margin: 0,\n border: \"none\",\n borderRadius: 0,\n boxShadow: \"none\",\n background: \"transparent\",\n})\n","import { style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"../theme/contract.css\"\n\nexport const copyText = style({})\n\nexport const copyButton = style({\n position: \"absolute\",\n top: vars.space.sm,\n right: vars.space.sm,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n padding: \"6px 10px\",\n background: vars.color.bgSoft,\n border: `1px solid ${vars.color.codeBorder}`,\n borderRadius: vars.radius.sm,\n cursor: \"pointer\",\n fontSize: \"12px\",\n fontFamily: vars.font.family,\n color: vars.color.textLight,\n opacity: 0.72,\n transition: `all ${vars.transition.base}`,\n selectors: {\n \"&:hover\": {\n opacity: 1,\n background: vars.color.bg,\n borderColor: vars.color.brand,\n color: vars.color.brand,\n },\n },\n})\n","import { useState } from \"react\"\n\nimport { CheckIcon, CopyIcon } from \"../icons\"\nimport * as styles from \"./CopyButton.css\"\n\ntype CopyButtonProps = {\n code: string\n}\n\nexport function ArdoCopyButton({ 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(() => {\n setCopied(false)\n }, 2000)\n } catch (error) {\n console.error(\"Failed to copy:\", error)\n }\n }\n\n return (\n <button\n type=\"button\"\n className={styles.copyButton}\n onClick={() => {\n void handleCopy()\n }}\n aria-label={copied ? \"Copied!\" : \"Copy code\"}\n >\n {copied ? <CheckIcon size={16} /> : <CopyIcon size={16} />}\n <span className={styles.copyText}>{copied ? \"Copied!\" : \"Copy\"}</span>\n </button>\n )\n}\n","import { Children, isValidElement, useState } from \"react\"\n\nimport * as styles from \"./CodeBlock.css\"\nimport { ArdoCopyButton } from \"./CopyButton\"\n\nconst EMPTY_HIGHLIGHT_LINES: number[] = []\n\n/**\n * Strips leading/trailing blank lines and removes common leading whitespace\n * so that template literals in indented JSX render cleanly.\n */\nfunction outdent(text: string): string {\n let start = 0\n while (start < text.length && text[start] === \"\\n\") {\n start++\n }\n\n let end = text.length\n while (\n end > start &&\n (text[end - 1] === \"\\n\" ||\n text[end - 1] === \"\\r\" ||\n text[end - 1] === \"\\t\" ||\n text[end - 1] === \" \")\n ) {\n end--\n }\n\n const trimmed = text.slice(start, end)\n const lines = trimmed.split(\"\\n\")\n\n // Find minimum indentation (ignoring empty lines)\n const indent = lines.reduce((min, line) => {\n if (line.trim().length === 0) return min\n const match = /^(\\s*)/.exec(line)\n return match ? Math.min(min, match[1].length) : min\n }, Infinity)\n\n if (indent === 0 || indent === Infinity) return trimmed\n return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nexport type ArdoCodeBlockProps = {\n /** The code to display (as prop or as children string) */\n code?: string\n /** Programming language for syntax highlighting */\n language?: string\n /** Optional title shown above the code */\n title?: string\n /** Show line numbers */\n lineNumbers?: boolean\n /** Line numbers to highlight */\n highlightLines?: number[]\n /** Code as children — supports template literals with auto-outdent */\n children?: React.ReactNode\n /** Pre-rendered Shiki HTML (injected by ardo:codeblock-highlight plugin) */\n __html?: string\n}\n\nfunction CodeBlockContent({\n html,\n hasHtml,\n hasCustomChildren,\n language,\n lines,\n highlightLines,\n lineNumbers,\n children,\n}: {\n html?: string\n hasHtml: boolean\n hasCustomChildren: boolean\n language: string\n lines: string[]\n highlightLines: number[]\n lineNumbers: boolean\n children?: React.ReactNode\n}) {\n if (hasHtml) return <div dangerouslySetInnerHTML={{ __html: html ?? \"\" }} />\n if (hasCustomChildren) return <>{children}</>\n return (\n <pre className={`language-${language}`}>\n <code>\n {lines.map((line, index) => {\n const lineNum = index + 1\n const cls = highlightLines.includes(lineNum)\n ? `${styles.codeLine} highlighted`\n : styles.codeLine\n return (\n <span key={`${lineNum}-${line}`} className={cls}>\n {lineNumbers && <span className={styles.lineNumber}>{lineNum}</span>}\n <span>{line}</span>\n {index < lines.length - 1 && \"\\n\"}\n </span>\n )\n })}\n </code>\n </pre>\n )\n}\n\n/**\n * Syntax-highlighted code block with copy button.\n *\n * Code can be provided via the `code` prop or as children:\n * ```tsx\n * <CodeBlock language=\"typescript\">{`\n * const x = 42\n * `}</CodeBlock>\n * ```tsx\n * When children is a string, leading/trailing blank lines and common\n * indentation are stripped automatically.\n */\nexport function ArdoCodeBlock({\n code: codeProp,\n language = \"text\",\n title,\n lineNumbers = false,\n highlightLines = EMPTY_HIGHLIGHT_LINES,\n children,\n __html,\n}: ArdoCodeBlockProps) {\n const code = codeProp ?? (typeof children === \"string\" ? outdent(children) : \"\")\n const hasCustomChildren = children != null && typeof children !== \"string\"\n const hasHtml = (__html ?? \"\") !== \"\"\n const hasTitle = (title ?? \"\") !== \"\"\n const lines = code.split(\"\\n\")\n\n return (\n <div className={styles.codeBlock} data-lang={language}>\n {hasTitle && <div className={styles.codeTitle}>{title}</div>}\n <div className={styles.codeWrapper}>\n <CodeBlockContent\n html={__html}\n hasHtml={hasHtml}\n hasCustomChildren={hasCustomChildren}\n language={language}\n lines={lines}\n highlightLines={highlightLines}\n lineNumbers={lineNumbers}\n >\n {children}\n </CodeBlockContent>\n <ArdoCopyButton code={code} />\n </div>\n </div>\n )\n}\n\nexport type ArdoCodeGroupProps = {\n /** CodeBlock components to display as tabs */\n children: React.ReactNode\n /** Comma-separated tab labels */\n labels?: string\n}\n\n/**\n * Tabbed group of code blocks.\n * Labels come from the `labels` prop (set at remark level) or fall back to\n * data-label / title / language props on children.\n */\nexport function ArdoCodeGroup({ children, labels: labelsStr }: ArdoCodeGroupProps) {\n const [activeTab, setActiveTab] = useState(0)\n const hasLabels = (labelsStr ?? \"\") !== \"\"\n\n // Filter to only valid React elements (skip whitespace text nodes)\n const childArray = Children.toArray(children).filter((child) => isValidElement(child))\n const labelArray = hasLabels ? (labelsStr ?? \"\").split(\",\") : []\n const tabs = childArray.map((child, index) => {\n if (index < labelArray.length) {\n const explicitLabel = labelArray[index]\n if (explicitLabel !== \"\") return explicitLabel\n }\n\n return (\n readStringProp(child.props, \"data-label\") ??\n readStringProp(child.props, \"title\") ??\n readStringProp(child.props, \"language\") ??\n `Tab ${index + 1}`\n )\n })\n\n return (\n <div className={styles.codeGroup}>\n <div className={styles.codeGroupTabs}>\n {tabs.map((tab, index) => (\n <button\n type=\"button\"\n key={tab}\n className={[styles.codeGroupTab, index === activeTab && \"active\"]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => {\n setActiveTab(index)\n }}\n >\n {tab}\n </button>\n ))}\n </div>\n <div className={styles.codeGroupPanels}>\n {childArray.map((child, index) => (\n <div\n key={tabAt(tabs, index)}\n className={[styles.codeGroupPanel, 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\nfunction readStringProp(props: unknown, name: string): string | undefined {\n if (!isRecord(props)) {\n return undefined\n }\n\n const value = props[name]\n return typeof value === \"string\" && value !== \"\" ? value : undefined\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === \"object\"\n}\n\nfunction tabAt(tabs: string[], index: number): string {\n return tabs[index]\n}\n","import { style } from \"@vanilla-extract/css\"\nimport { recipe } from \"@vanilla-extract/recipes\"\n\nimport { vars } from \"../theme/contract.css\"\n\nexport const container = recipe({\n base: {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: vars.space.md,\n margin: `${vars.space.md} 0`,\n padding: `${vars.space.md} ${vars.space.lg}`,\n borderRadius: vars.radius.lg,\n border: \"1px solid\",\n },\n variants: {\n type: {\n tip: {\n background: vars.color.tipBg,\n borderColor: vars.color.tipBorder,\n color: vars.color.tip,\n },\n warning: {\n background: vars.color.warningBg,\n borderColor: vars.color.warningBorder,\n color: vars.color.warning,\n },\n danger: {\n background: vars.color.dangerBg,\n borderColor: vars.color.dangerBorder,\n color: vars.color.danger,\n },\n info: {\n background: vars.color.infoBg,\n borderColor: vars.color.infoBorder,\n color: vars.color.info,\n },\n note: {\n background: vars.color.noteBg,\n borderColor: vars.color.noteBorder,\n color: vars.color.note,\n },\n },\n },\n})\n\nexport const containerIcon = recipe({\n base: {\n flexShrink: 0,\n marginTop: \"0.125rem\",\n },\n variants: {\n type: {\n tip: { color: vars.color.tip },\n warning: { color: vars.color.warning },\n danger: { color: vars.color.danger },\n info: { color: vars.color.info },\n note: { color: vars.color.note },\n },\n },\n})\n\nexport const containerBody = style({\n flex: 1,\n minWidth: 0,\n color: vars.color.text,\n fontSize: vars.fontSize.sm,\n lineHeight: 1.6,\n})\n\nexport const containerTitle = recipe({\n base: {\n fontWeight: 600,\n fontSize: vars.fontSize.sm,\n marginBottom: vars.space.xs,\n },\n variants: {\n type: {\n tip: { color: vars.color.tip },\n warning: { color: vars.color.warning },\n danger: { color: vars.color.danger },\n info: { color: vars.color.info },\n note: { color: vars.color.note },\n },\n },\n})\n\nexport const containerContent = style({})\n","import type { ReactNode } from \"react\"\n\nimport { AlertTriangleIcon, FileTextIcon, InfoIcon, LightbulbIcon, XCircleIcon } from \"../icons\"\nimport * as styles from \"./Container.css\"\n\nexport type ArdoContainerType = \"danger\" | \"info\" | \"note\" | \"tip\" | \"warning\"\n\nexport type ArdoContainerProps = {\n /** Container type determining the style */\n type: ArdoContainerType\n /** Optional custom title */\n title?: string\n /** Content to display inside the container */\n children: ReactNode\n}\n\nconst defaultTitles: Record<ArdoContainerType, string> = {\n tip: \"TIP\",\n warning: \"WARNING\",\n danger: \"DANGER\",\n info: \"INFO\",\n note: \"NOTE\",\n}\n\nconst icons: Record<ArdoContainerType, ReactNode> = {\n tip: <LightbulbIcon size={18} />,\n warning: <AlertTriangleIcon size={18} />,\n danger: <XCircleIcon size={18} />,\n info: <InfoIcon size={18} />,\n note: <FileTextIcon size={18} />,\n}\n\n/**\n * A styled container for callouts, tips, warnings, etc.\n */\nexport function ArdoContainer({ type, title, children }: ArdoContainerProps) {\n const hasCustomTitle = title != null && title !== \"\" && title !== defaultTitles[type]\n\n return (\n <div className={styles.container({ type })}>\n <span className={styles.containerIcon({ type })}>{icons[type]}</span>\n <div className={styles.containerBody}>\n {hasCustomTitle && <p className={styles.containerTitle({ type })}>{title}</p>}\n <div className={styles.containerContent}>{children}</div>\n </div>\n </div>\n )\n}\n\nexport type ArdoTipProps = {\n /** Optional custom title */\n title?: string\n /** Content to display */\n children: ReactNode\n}\n\n/**\n * A tip container for helpful information.\n */\nexport function ArdoTip({ title, children }: ArdoTipProps) {\n return (\n <ArdoContainer type=\"tip\" title={title}>\n {children}\n </ArdoContainer>\n )\n}\n\nexport type ArdoWarningProps = {\n /** Optional custom title */\n title?: string\n /** Content to display */\n children: ReactNode\n}\n\n/**\n * A warning container for cautionary information.\n */\nexport function ArdoWarning({ title, children }: ArdoWarningProps) {\n return (\n <ArdoContainer type=\"warning\" title={title}>\n {children}\n </ArdoContainer>\n )\n}\n\nexport type ArdoDangerProps = {\n /** Optional custom title */\n title?: string\n /** Content to display */\n children: ReactNode\n}\n\n/**\n * A danger container for critical warnings.\n */\nexport function ArdoDanger({ title, children }: ArdoDangerProps) {\n return (\n <ArdoContainer type=\"danger\" title={title}>\n {children}\n </ArdoContainer>\n )\n}\n\nexport type ArdoInfoProps = {\n /** Optional custom title */\n title?: string\n /** Content to display */\n children: ReactNode\n}\n\n/**\n * An info container for informational content.\n */\nexport function ArdoInfo({ title, children }: ArdoInfoProps) {\n return (\n <ArdoContainer type=\"info\" title={title}>\n {children}\n </ArdoContainer>\n )\n}\n\nexport type ArdoNoteProps = {\n /** Optional custom title */\n title?: string\n /** Content to display */\n children: ReactNode\n}\n\n/**\n * A note container for additional information.\n */\nexport function ArdoNote({ title, children }: ArdoNoteProps) {\n return (\n <ArdoContainer type=\"note\" title={title}>\n {children}\n </ArdoContainer>\n )\n}\n","import type { ComponentType, ReactNode, SVGAttributes } from \"react\"\n\ntype IconComponent = ComponentType<{ size?: number } & SVGAttributes<SVGSVGElement>>\n\nexport type ArdoIconProps = {\n /** Name of the registered icon */\n name: string\n /** Icon size */\n size?: number\n} & SVGAttributes<SVGSVGElement>\n\n// Icon registry - users register only the icons they need\nconst iconRegistry = new Map<string, IconComponent>()\n\n/**\n * Register icons for use with the Icon component.\n * Only registered icons are included in your bundle.\n *\n * @example\n * ```tsx\n * // In your app's entry point or layout:\n * import { registerIcons } from \"ardo/ui\"\n * import { Zap, Rocket, Code } from \"lucide-react\"\n *\n * registerIcons({ Zap, Rocket, Code })\n * ```\n */\nexport function registerIcons(icons: Record<string, IconComponent>): void {\n for (const [name, icon] of Object.entries(icons)) {\n iconRegistry.set(name, icon)\n }\n}\n\n/**\n * Get all registered icon names (useful for documentation).\n */\nexport function getRegisteredIconNames(): string[] {\n return [...iconRegistry.keys()]\n}\n\n/**\n * Renders a registered icon by name.\n * Icons must be registered first using `registerIcons()`.\n *\n * @example\n * ```tsx\n * // First register icons in your app:\n * import { registerIcons } from \"ardo/ui\"\n * import { Zap, Rocket } from \"lucide-react\"\n * registerIcons({ Zap, Rocket })\n *\n * // Then use in MDX:\n * <Icon name=\"Zap\" size={24} />\n * <Icon name=\"Rocket\" className=\"text-brand\" />\n * ```\n *\n * @see https://lucide.dev/icons for available icon names\n */\nexport function ArdoIcon({ name, ...props }: ArdoIconProps): ReactNode {\n const IconComp = iconRegistry.get(name)\n\n if (!IconComp) {\n console.warn(`[Ardo] Icon \"${name}\" not found. Did you register it with registerIcons()?`)\n return null\n }\n\n return <IconComp {...props} />\n}\n","import { globalStyle, style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"../theme/contract.css\"\n\nexport const steps = style({\n margin: \"24px 0\",\n})\n\nglobalStyle(`${steps} ol`, {\n listStyle: \"none\",\n paddingLeft: 0,\n counterReset: \"ardo-step\",\n})\n\nglobalStyle(`${steps} ol > li`, {\n position: \"relative\",\n paddingLeft: \"48px\",\n paddingBottom: \"24px\",\n counterIncrement: \"ardo-step\",\n marginBottom: 0,\n})\n\nglobalStyle(`${steps} ol > li:last-child`, {\n paddingBottom: 0,\n})\n\nglobalStyle(`${steps} ol > li::before`, {\n content: \"counter(ardo-step)\",\n position: \"absolute\",\n left: 0,\n top: \"2px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"50%\",\n background: vars.color.brand,\n color: \"white\",\n fontSize: \"14px\",\n fontWeight: 700,\n lineHeight: 1,\n flexShrink: 0,\n})\n\nglobalStyle(`${steps} ol > li::after`, {\n content: '\"\"',\n position: \"absolute\",\n left: \"15px\",\n top: \"38px\",\n bottom: 0,\n width: \"2px\",\n background: vars.color.border,\n})\n\nglobalStyle(`${steps} ol > li:last-child::after`, {\n display: \"none\",\n})\n\nglobalStyle(`.ardo-content ${steps} ol`, {\n paddingLeft: 0,\n maxWidth: \"none\",\n})\n\nglobalStyle(`.ardo-content ${steps} ol > li`, {\n paddingLeft: \"48px\",\n marginBottom: 0,\n})\n\nglobalStyle(`.ardo-content ${steps} ol > li::marker`, {\n content: \"none\",\n})\n","import type { ReactNode } from \"react\"\n\nimport * as styles from \"./Steps.css\"\n\nexport type ArdoStepsProps = {\n /** Content to display, typically an ordered list (`<ol>`) */\n children: ReactNode\n}\n\n/**\n * A wrapper for step-by-step instructions rendered as an ordered list.\n *\n * @example\n * ```tsx\n * <ArdoSteps>\n * <ol>\n * <li>Install the package</li>\n * <li>Configure your site</li>\n * <li>Start writing</li>\n * </ol>\n * </ArdoSteps>\n * ```\n */\nexport function ArdoSteps({ children }: ArdoStepsProps) {\n return <div className={styles.steps}>{children}</div>\n}\n","import { style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"../theme/contract.css\"\n\nexport const tabs = style({\n margin: \"20px 0\",\n})\n\nexport const tabList = style({\n display: \"flex\",\n borderBottom: `1px solid ${vars.color.border}`,\n gap: \"4px\",\n})\n\nexport const tab = style({\n padding: \"10px 18px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"14px\",\n fontWeight: 500,\n color: vars.color.textLight,\n borderBottom: \"2px solid transparent\",\n marginBottom: \"-1px\",\n transition: `all ${vars.transition.fast}`,\n selectors: {\n \"&:hover\": {\n color: vars.color.text,\n },\n \"&.active\": {\n color: vars.color.brand,\n borderBottomColor: vars.color.brand,\n },\n },\n})\n\nexport const tabPanel = style({\n padding: \"20px 0\",\n})\n\nexport const tabPanels = style({})\n","import {\n Children,\n createContext,\n isValidElement,\n type ReactNode,\n use,\n useMemo,\n useRef,\n useState,\n} from \"react\"\n\nimport * as styles from \"./Tabs.css\"\n\ntype TabsContextValue = {\n activeTab: string\n setActiveTab: (tab: string) => void\n getTabValue: (value?: string) => string\n getPanelValue: (value?: string) => string\n}\n\nconst TabsContext = createContext<null | TabsContextValue>(null)\nconst AUTO_TAB_PREFIX = \"__ardo-tab-\"\n\nfunction useTabsContext() {\n const context = use(TabsContext)\n if (!context) {\n throw new Error(\"Tab components must be used within an ArdoTabs component\")\n }\n return context\n}\n\nexport type ArdoTabsProps = {\n /** Default active tab value */\n defaultValue?: string\n /** Tab components (ArdoTabList and ArdoTabPanels) */\n children: ReactNode\n}\n\n/**\n * Tabs container component for organizing content into tabbed panels.\n */\nexport function ArdoTabs({ defaultValue, children }: ArdoTabsProps) {\n const [activeTab, setActiveTab] = useState(() => defaultValue ?? findFirstTabValue(children))\n const tabIndexRef = useRef(0)\n const panelIndexRef = useRef(0)\n\n tabIndexRef.current = 0\n panelIndexRef.current = 0\n\n const getTabValue = (value?: string) => {\n const index = tabIndexRef.current++\n return value ?? `${AUTO_TAB_PREFIX}${index}`\n }\n\n const getPanelValue = (value?: string) => {\n const index = panelIndexRef.current++\n return value ?? `${AUTO_TAB_PREFIX}${index}`\n }\n\n const effectiveTab = defaultValue ?? activeTab\n\n const contextValue = useMemo(\n () => ({ activeTab: effectiveTab, setActiveTab, getTabValue, getPanelValue }),\n [effectiveTab]\n )\n\n return (\n <TabsContext value={contextValue}>\n <div className={styles.tabs}>{children}</div>\n </TabsContext>\n )\n}\n\nexport type ArdoTabListProps = {\n /** Tab buttons */\n children: ReactNode\n}\n\n/**\n * Container for ArdoTab buttons.\n */\nexport function ArdoTabList({ children }: ArdoTabListProps) {\n return (\n <div className={styles.tabList} role=\"tablist\">\n {children}\n </div>\n )\n}\n\nexport type ArdoTabProps = {\n /** Unique value identifying this tab (optional if tab order matches panels) */\n value?: string\n /** Tab button label */\n children: ReactNode\n}\n\n/**\n * Individual tab button.\n */\nexport function ArdoTab({ value, children }: ArdoTabProps) {\n const { activeTab, setActiveTab, getTabValue } = useTabsContext()\n const resolvedValue = getTabValue(value)\n const isActive = activeTab === resolvedValue\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n className={[styles.tab, isActive && \"active\"].filter(Boolean).join(\" \")}\n onClick={() => {\n setActiveTab(resolvedValue)\n }}\n >\n {children}\n </button>\n )\n}\n\nexport type ArdoTabPanelProps = {\n /** Value matching the corresponding ArdoTab (optional if panel order matches tabs) */\n value?: string\n /** Panel content */\n children: ReactNode\n}\n\n/**\n * Content panel for a tab.\n */\nexport function ArdoTabPanel({ value, children }: ArdoTabPanelProps) {\n const { activeTab, getPanelValue } = useTabsContext()\n const resolvedValue = getPanelValue(value)\n const isActive = activeTab === resolvedValue\n\n if (!isActive) {\n return null\n }\n\n return (\n <div role=\"tabpanel\" className={styles.tabPanel}>\n {children}\n </div>\n )\n}\n\nexport type ArdoTabPanelsProps = {\n /** ArdoTabPanel components */\n children: ReactNode\n}\n\n/**\n * Container for ArdoTabPanel components.\n */\nexport function ArdoTabPanels({ children }: ArdoTabPanelsProps) {\n return <div className={styles.tabPanels}>{children}</div>\n}\n\nfunction findFirstTabValue(children: ReactNode): string {\n for (const child of Children.toArray(children)) {\n const tabValue = getFirstTabValueFromChild(child)\n if (tabValue != null) {\n return tabValue\n }\n }\n\n return \"\"\n}\n\nfunction getFirstTabValueFromChild(child: ReactNode): null | string {\n if (!isValidElement<{ children?: ReactNode }>(child)) {\n return null\n }\n\n if (isValidElement<ArdoTabProps>(child) && child.type === ArdoTab) {\n return child.props.value ?? `${AUTO_TAB_PREFIX}0`\n }\n\n const nestedChildren = child.props.children\n if (nestedChildren == null) {\n return null\n }\n\n const nestedValue = findFirstTabValue(nestedChildren)\n return nestedValue === \"\" ? null : nestedValue\n}\n","import { style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"./theme/contract.css\"\n\nexport const breadcrumb = style({\n display: \"none\",\n alignItems: \"center\",\n gap: vars.space.sm,\n fontSize: vars.fontSize.sm,\n color: vars.color.textLighter,\n marginBottom: vars.space.md,\n \"@media\": {\n \"(max-width: 1024px)\": {\n display: \"flex\",\n },\n },\n})\n\nexport const breadcrumbSeparator = style({\n color: vars.color.textLighter,\n})\n\nexport const breadcrumbCurrent = style({\n color: vars.color.text,\n fontWeight: 500,\n})\n","import { useLocation } from \"react-router\"\n\nimport type { SidebarItem } from \"../config/types\"\n\nimport { useArdoSidebar } from \"../runtime/hooks\"\nimport * as styles from \"./Breadcrumb.css\"\n\ntype BreadcrumbResult = {\n section?: string\n page?: string\n}\n\nfunction matchInChildren(\n groupText: string,\n items: SidebarItem[],\n path: string\n): BreadcrumbResult | undefined {\n for (const item of items) {\n if (item.link === path) return { section: groupText, page: item.text }\n if (item.items != null) {\n const sub = item.items.find((s) => s.link === path)\n if (sub != null) return { section: groupText, page: sub.text }\n }\n }\n return undefined\n}\n\nfunction findBreadcrumb(sidebar: SidebarItem[], currentPath: string): BreadcrumbResult {\n for (const group of sidebar) {\n if (group.link === currentPath) return { page: group.text }\n if (group.items != null) {\n const found = matchInChildren(group.text, group.items, currentPath)\n if (found != null) return found\n }\n }\n return {}\n}\n\nexport function ArdoBreadcrumb() {\n const sidebar = useArdoSidebar()\n const location = useLocation()\n const { section, page } = findBreadcrumb(sidebar, location.pathname)\n\n if (page == null || page === \"\") return null\n\n return (\n <nav className={styles.breadcrumb} aria-label=\"Breadcrumb\">\n {section != null && section !== \"\" && (\n <>\n <span>{section}</span>\n <span className={styles.breadcrumbSeparator} aria-hidden>\n ›\n </span>\n </>\n )}\n <span className={styles.breadcrumbCurrent}>{page}</span>\n </nav>\n )\n}\n","import { globalStyle, style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"./theme/contract.css\"\n\nexport const ardoContent = style({})\nconst c = `.${ardoContent}`\n\nglobalStyle(`${c} h1, ${c} h2, ${c} h3, ${c} h4, ${c} h5, ${c} h6`, {\n fontFamily: vars.font.familyHeading,\n fontWeight: 600,\n lineHeight: 1.22,\n marginTop: vars.space[\"2xl\"],\n marginBottom: vars.space.md,\n letterSpacing: \"-0.01em\",\n maxWidth: vars.layout.contentMaxWidth,\n textWrap: \"balance\",\n})\n\nglobalStyle(`${c} h1`, {\n fontSize: vars.fontSize[\"2xl\"],\n fontWeight: 700,\n marginTop: vars.space[\"2xl\"],\n})\n\nglobalStyle(`${c} h2`, {\n fontSize: \"1.375rem\",\n paddingTop: vars.space.md,\n})\n\nglobalStyle(`${c} h3`, {\n fontSize: vars.fontSize.lg,\n fontWeight: 600,\n})\n\nglobalStyle(`${c} h4`, {\n fontSize: vars.fontSize.sm,\n fontWeight: 600,\n})\n\nglobalStyle(`${c} p`, {\n marginBottom: vars.space.lg,\n maxWidth: vars.layout.contentMaxWidth,\n fontSize: vars.fontSize.base,\n lineHeight: vars.font.lineHeight,\n overflowWrap: \"break-word\",\n textWrap: \"pretty\",\n})\n\nglobalStyle(`${c} a`, {\n color: vars.color.brand,\n textDecoration: \"underline\",\n textDecorationColor: `color-mix(in oklch, ${vars.color.brand} 35%, transparent)`,\n textDecorationThickness: \"1px\",\n textUnderlineOffset: \"3px\",\n transition: `text-decoration-color ${vars.transition.fast}`,\n})\n\nglobalStyle(`${c} a:hover`, {\n textDecorationColor: vars.color.brand,\n})\n\nglobalStyle(`${c} ul, ${c} ol`, {\n marginBottom: vars.space.lg,\n paddingLeft: vars.space.lg,\n maxWidth: vars.layout.contentMaxWidth,\n textWrap: \"pretty\",\n})\n\nglobalStyle(`${c} li`, {\n marginBottom: vars.space.xs,\n lineHeight: vars.font.lineHeight,\n overflowWrap: \"break-word\",\n textWrap: \"pretty\",\n})\n\nglobalStyle(`${c} li::marker`, {\n color: vars.color.textLighter,\n})\n\nglobalStyle(`${c} blockquote`, {\n margin: `${vars.space.lg} 0`,\n padding: `${vars.space.md} ${vars.space.lg}`,\n borderLeft: `3px solid ${vars.color.brand}`,\n background: vars.color.brandSubtle,\n borderRadius: `0 ${vars.radius.base} ${vars.radius.base} 0`,\n color: vars.color.text,\n fontSize: vars.fontSize.base,\n maxWidth: vars.layout.contentMaxWidth,\n})\n\nglobalStyle(`${c} hr`, {\n margin: `${vars.space.xl} 0`,\n border: \"none\",\n borderTop: `1px solid ${vars.color.border}`,\n})\n\nglobalStyle(`${c} table`, {\n display: \"block\",\n width: \"100%\",\n maxWidth: \"100%\",\n overflowX: \"auto\",\n margin: `${vars.space.lg} 0`,\n borderCollapse: \"collapse\",\n fontSize: vars.fontSize.sm,\n borderRadius: vars.radius.base,\n border: `1px solid ${vars.color.border}`,\n background: vars.color.bg,\n})\n\nglobalStyle(`${c} tbody, ${c} thead`, {\n width: \"100%\",\n})\n\nglobalStyle(`${c} tr`, {\n display: \"table-row\",\n})\n\nglobalStyle(`${c} thead`, {\n display: \"table-header-group\",\n})\n\nglobalStyle(`${c} tbody`, {\n display: \"table-row-group\",\n})\n\nglobalStyle(`${c} th, ${c} td`, {\n padding: `${vars.space.sm} ${vars.space.md}`,\n borderBottom: `1px solid ${vars.color.borderLight}`,\n textAlign: \"left\",\n})\n\nglobalStyle(`${c} th`, {\n background: vars.color.bgSoft,\n fontWeight: 600,\n fontSize: vars.fontSize.xs,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n})\n\nglobalStyle(`${c} img`, {\n maxWidth: \"100%\",\n borderRadius: vars.radius.base,\n border: `1px solid ${vars.color.border}`,\n})\n\n// Inline code\nglobalStyle(`${c} code`, {\n fontFamily: vars.font.mono,\n fontSize: \"0.875em\",\n padding: \"0.125rem 0.375rem\",\n background: vars.color.bgSoft,\n border: `1px solid ${vars.color.borderLight}`,\n borderRadius: vars.radius.sm,\n fontWeight: 500,\n})\n\nglobalStyle(`${c} pre code`, {\n padding: 0,\n background: \"none\",\n border: \"none\",\n fontWeight: 400,\n})\n","import { style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"./theme/contract.css\"\n\n/**\n * 3-column layout: Sidebar (fixed) | Content (fluid) | TOC (fixed)\n */\nexport const docPage = style({\n display: \"grid\",\n flex: 1,\n minWidth: 0,\n width: \"100%\",\n gridTemplateColumns: `minmax(0, 72rem) ${vars.layout.tocWidth}`,\n justifyContent: \"start\",\n gap: \"clamp(2rem, 4vw, 4rem)\",\n maxWidth: \"100rem\",\n margin: \"0 auto\",\n paddingTop: vars.space[\"2xl\"],\n \"@media\": {\n \"(min-width: 1536px)\": {\n gridTemplateColumns: `minmax(0, 78rem) ${vars.layout.tocWidth}`,\n },\n \"(max-width: 1280px)\": {\n gridTemplateColumns: \"minmax(0, 1fr)\",\n maxWidth: \"min(100%, 72rem)\",\n justifyContent: \"center\",\n },\n \"(max-width: 1024px)\": {\n paddingTop: vars.space.xl,\n },\n },\n})\n\nexport const contentContainer = style({\n minWidth: 0,\n width: \"100%\",\n maxWidth: \"100%\",\n})\n\nexport const contentHeader = style({\n marginBottom: vars.space.xl,\n paddingBottom: vars.space.lg,\n borderBottom: `1px solid ${vars.color.border}`,\n})\n\nexport const contentTitle = style({\n fontSize: \"clamp(2rem, 4vw, 3.15rem)\",\n fontFamily: vars.font.familyHeading,\n fontWeight: 700,\n lineHeight: 1.08,\n letterSpacing: \"-0.01em\",\n marginBottom: vars.space.sm,\n overflowWrap: \"break-word\",\n textWrap: \"balance\",\n})\n\nexport const contentDescription = style({\n fontSize: vars.fontSize.lg,\n color: vars.color.textLight,\n lineHeight: 1.65,\n maxWidth: vars.layout.contentMaxWidth,\n overflowWrap: \"break-word\",\n textWrap: \"pretty\",\n})\n\nexport const contentBody = style({\n lineHeight: vars.font.lineHeight,\n overflowWrap: \"break-word\",\n})\n\nexport const pageRail = style({\n width: vars.layout.tocWidth,\n position: \"sticky\",\n top: vars.space.xl,\n alignSelf: \"start\",\n maxHeight: `calc(100vh - ${vars.layout.headerHeight} - ${vars.space[\"2xl\"]})`,\n padding: `${vars.space.md} ${vars.space.md} ${vars.space.lg}`,\n background: `linear-gradient(180deg, color-mix(in oklch, ${vars.color.bg} 94%, ${vars.color.bgSoft}), ${vars.color.bg})`,\n border: `1px solid ${vars.color.borderLight}`,\n borderRadius: vars.radius.lg,\n boxShadow: `0 16px 42px oklch(0 0 0 / 0.035)`,\n overflowY: \"auto\",\n zIndex: 1,\n selectors: {\n \".dark &\": {\n background: `linear-gradient(180deg, color-mix(in oklch, ${vars.color.bg} 88%, ${vars.color.bgSoft}), ${vars.color.bg})`,\n boxShadow: \"0 18px 46px oklch(0 0 0 / 0.22)\",\n },\n },\n \"@media\": {\n \"(max-width: 1280px)\": {\n display: \"none\",\n },\n },\n})\n\nexport const pageRailSection = style({\n padding: `${vars.space.md} 0`,\n borderBottom: `1px solid ${vars.color.borderLight}`,\n selectors: {\n \"&:first-child\": {\n paddingTop: 0,\n },\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n },\n})\n\nexport const pageRailTitle = style({\n fontSize: vars.fontSize.xs,\n fontWeight: 700,\n textTransform: \"uppercase\",\n letterSpacing: \"0.07em\",\n color: vars.color.textLight,\n marginBottom: vars.space.sm,\n})\n\nexport const pageRailText = style({\n fontSize: vars.fontSize.sm,\n lineHeight: 1.5,\n color: vars.color.textLight,\n})\n\nexport const pageRailLink = style({\n display: \"inline-flex\",\n alignItems: \"center\",\n color: vars.color.text,\n textDecoration: \"none\",\n fontSize: vars.fontSize.sm,\n fontWeight: 500,\n transition: `color ${vars.transition.fast}`,\n selectors: {\n \"&:hover\": {\n color: vars.color.brand,\n },\n },\n})\n\nexport const pageRailSelect = style({\n width: \"100%\",\n minHeight: \"2.5rem\",\n padding: `0 ${vars.space.sm}`,\n border: `1px solid ${vars.color.border}`,\n borderRadius: vars.radius.base,\n background: vars.color.bg,\n color: vars.color.text,\n font: \"inherit\",\n fontSize: vars.fontSize.sm,\n})\n","import type { ReactNode } from \"react\"\n\nimport { Link, useLocation } from \"react-router\"\n\nimport { useArdoPageData, useArdoSidebar, useArdoSiteConfig } from \"../runtime/hooks\"\nimport { getPrevNextLinks } from \"../runtime/sidebar-utils\"\nimport { useBareContent } from \"./BareContent\"\nimport { ArdoBreadcrumb } from \"./Breadcrumb\"\nimport { ardoContent } from \"./content.css\"\nimport * as docStyles from \"./DocPage.css\"\nimport * as footerStyles from \"./Footer.css\"\n\ntype ContentProps = {\n children: ReactNode\n /** Edit link configuration (overrides ArdoSiteConfig) */\n editLink?: { pattern: string; text?: string }\n /** Last updated configuration (overrides ArdoSiteConfig) */\n lastUpdated?: { enabled?: boolean; text?: string; formatOptions?: Intl.DateTimeFormatOptions }\n /** Where to render edit/updated metadata (default: footer) */\n metaPlacement?: \"footer\" | \"none\"\n}\n\ntype ContentMetaInput = {\n pageData: ReturnType<typeof useArdoPageData>\n editLink: ContentProps[\"editLink\"]\n lastUpdated: ContentProps[\"lastUpdated\"]\n siteConfig: ReturnType<typeof useArdoSiteConfig>\n}\n\nfunction resolveEditLink(input: ContentMetaInput) {\n const resolved = input.editLink ?? input.siteConfig.editLink\n const pattern = resolved?.pattern ?? \"\"\n const relativePath = input.pageData?.relativePath ?? \"\"\n const show =\n input.pageData?.frontmatter.editLink !== false && pattern !== \"\" && input.pageData !== undefined\n return {\n href: show ? pattern.replace(\":path\", relativePath) : undefined,\n text: resolved?.text ?? \"Edit this page\",\n show,\n }\n}\n\nfunction resolveLastUpdated(input: ContentMetaInput) {\n const resolved = input.lastUpdated ?? input.siteConfig.lastUpdated\n const value = input.pageData?.lastUpdated\n const show =\n input.pageData?.frontmatter.lastUpdated !== false &&\n resolved?.enabled === true &&\n typeof value === \"number\"\n const formatOptions = resolved?.formatOptions ?? {\n year: \"numeric\" as const,\n month: \"long\" as const,\n day: \"numeric\" as const,\n }\n return {\n label: resolved?.text ?? \"Last updated\",\n text: show ? new Date(value).toLocaleDateString(undefined, formatOptions) : undefined,\n show,\n }\n}\n\nexport function ArdoContent({\n children,\n editLink,\n lastUpdated,\n metaPlacement = \"footer\",\n}: ContentProps) {\n const isBare = useBareContent()\n const pageData = useArdoPageData()\n const siteConfig = useArdoSiteConfig()\n const sidebar = useArdoSidebar()\n const location = useLocation()\n\n if (isBare) {\n return <div className={`${docStyles.contentBody} ${ardoContent}`}>{children}</div>\n }\n\n const input: ContentMetaInput = { pageData, editLink, lastUpdated, siteConfig }\n const edit = resolveEditLink(input)\n const updated = resolveLastUpdated(input)\n const { prev, next } = getPrevNextLinks(sidebar, location.pathname)\n\n return (\n <article className={docStyles.contentContainer}>\n <ArdoBreadcrumb />\n <ContentHeader\n title={pageData?.frontmatter.title ?? \"\"}\n description={pageData?.frontmatter.description ?? \"\"}\n />\n <div className={`${docStyles.contentBody} ${ardoContent}`}>{children}</div>\n {metaPlacement === \"footer\" && <ContentMeta edit={edit} updated={updated} />}\n <ContentPrevNext prev={prev} next={next} />\n </article>\n )\n}\n\nfunction ContentHeader({ title, description }: { title: string; description: string }) {\n if (title === \"\") return null\n return (\n <header className={docStyles.contentHeader}>\n <h1 className={docStyles.contentTitle}>{title}</h1>\n {description !== \"\" && <p className={docStyles.contentDescription}>{description}</p>}\n </header>\n )\n}\n\nfunction ContentMeta({\n edit,\n updated,\n}: {\n edit: ReturnType<typeof resolveEditLink>\n updated: ReturnType<typeof resolveLastUpdated>\n}) {\n if (!edit.show && !updated.show) return null\n return (\n <div className={footerStyles.contentMeta}>\n {edit.show && (\n <a\n href={edit.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={footerStyles.editLink}\n >\n {edit.text}\n </a>\n )}\n {updated.show && (\n <span>\n {updated.label}: {updated.text}\n </span>\n )}\n </div>\n )\n}\n\nfunction ContentPrevNext({\n prev,\n next,\n}: {\n prev: ReturnType<typeof getPrevNextLinks>[\"prev\"]\n next: ReturnType<typeof getPrevNextLinks>[\"next\"]\n}) {\n const prevLink = prev?.link ?? \"\"\n const nextLink = next?.link ?? \"\"\n const hasPrev = prevLink !== \"\"\n const hasNext = nextLink !== \"\"\n if (!hasPrev && !hasNext) return null\n\n return (\n <nav className={footerStyles.prevNext} aria-label=\"Page navigation\">\n {hasPrev ? (\n <Link to={prevLink} className={footerStyles.prevLink}>\n <span className={footerStyles.prevNextLabel}>Previous</span>\n <span className={footerStyles.prevNextTitle}>{prev?.text}</span>\n </Link>\n ) : (\n <div />\n )}\n {hasNext ? (\n <Link to={nextLink} className={footerStyles.nextLink}>\n <span className={footerStyles.prevNextLabel}>Next</span>\n <span className={footerStyles.prevNextTitle}>{next?.text}</span>\n </Link>\n ) : (\n <div />\n )}\n </nav>\n )\n}\n","import { style } from \"@vanilla-extract/css\"\n\nimport { vars } from \"./theme/contract.css\"\n\nexport const toc = style({\n width: \"100%\",\n})\n\nexport const tocTitle = style({\n fontSize: vars.fontSize.xs,\n fontWeight: 700,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n color: vars.color.textLight,\n marginBottom: vars.space.sm,\n})\n\nexport const tocList = style({\n listStyle: \"none\",\n})\n\nexport const tocLink = style({\n display: \"block\",\n padding: `${vars.space.xs} 0 ${vars.space.xs} ${vars.space.sm}`,\n color: vars.color.textLighter,\n textDecoration: \"none\",\n fontSize: vars.fontSize.sm,\n lineHeight: 1.5,\n fontWeight: 400,\n borderLeft: \"2px solid transparent\",\n transition: `all ${vars.transition.fast}`,\n selectors: {\n \"&:hover\": {\n color: vars.color.text,\n borderLeftColor: vars.color.border,\n },\n \"&.active\": {\n color: vars.color.brand,\n borderLeftColor: vars.color.brand,\n fontWeight: 500,\n },\n },\n})\n\nexport const tocLink3 = style({\n paddingLeft: \"1.75rem\",\n})\n\nexport const tocLink4 = style({\n paddingLeft: \"2.5rem\",\n})\n","import { useEffect, useRef, useState } from \"react\"\n\nimport type { TOCItem } from \"../config/types\"\n\nimport { useArdoSiteConfig, useArdoTOC } from \"../runtime/hooks\"\nimport * as styles from \"./Toc.css\"\n\nexport type ArdoTOCProps = {\n /** Label for the TOC heading (default: \"On this page\") */\n label?: string\n}\n\nexport function ArdoTOC({ label: labelProp }: ArdoTOCProps = {}) {\n const toc = useArdoTOC()\n const siteConfig = useArdoSiteConfig()\n const [activeId, setActiveId] = useState<string>(\"\")\n const scrollContainerRef = useRef<HTMLElement | null>(null)\n const isClickScrolling = useRef(false)\n\n const label = labelProp ?? siteConfig.tocLabel ?? \"On this page\"\n\n useEffect(() => {\n scrollContainerRef.current = document.getElementById(\"main-content\")\n }, [])\n\n useEffect(() => {\n if (toc.length === 0) return\n\n const scrollContainer = scrollContainerRef.current\n if (!scrollContainer) return\n\n const headingElements = toc.map((item) => document.getElementById(item.id)).filter(Boolean)\n if (headingElements.length === 0) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (isClickScrolling.current) return\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id)\n break\n }\n }\n },\n {\n root: scrollContainer,\n // Shrink the detection zone to a narrow band at the top.\n // The -20px top accounts for scroll-padding, -85% bottom means\n // only headings in the top ~15% of the container trigger activation.\n rootMargin: \"-20px 0px -85% 0px\",\n threshold: 0,\n }\n )\n\n for (const element of headingElements) {\n if (element !== null) observer.observe(element)\n }\n\n return () => {\n for (const element of headingElements) {\n if (element !== null) observer.unobserve(element)\n }\n }\n }, [toc])\n\n const handleClickItem = (id: string) => {\n setActiveId(id)\n isClickScrolling.current = true\n const element = document.getElementById(id)\n const container = scrollContainerRef.current\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\", block: \"start\" })\n globalThis.history.pushState(null, \"\", `#${id}`)\n }\n // Re-enable observer after scroll finishes\n if (container) {\n const onScrollEnd = () => {\n isClickScrolling.current = false\n container.removeEventListener(\"scrollend\", onScrollEnd)\n }\n container.addEventListener(\"scrollend\", onScrollEnd, { once: true })\n // Fallback for browsers without scrollend\n setTimeout(() => {\n isClickScrolling.current = false\n }, 1000)\n } else {\n isClickScrolling.current = false\n }\n }\n\n if (toc.length === 0) {\n return null\n }\n\n return (\n <aside className={styles.toc}>\n <div>\n <h3 className={styles.tocTitle}>{label}</h3>\n <nav aria-label=\"Table of contents\">\n <TOCItems items={toc} activeId={activeId} onClickItem={handleClickItem} />\n </nav>\n </div>\n </aside>\n )\n}\n\ntype TOCItemsProps = {\n items: TOCItem[]\n activeId: string\n onClickItem: (id: string) => void\n}\n\nfunction TOCItems({ items, activeId, onClickItem }: TOCItemsProps) {\n return (\n <ul className={styles.tocList}>\n {items.map((item) => (\n <TOCItemComponent key={item.id} item={item} activeId={activeId} onClickItem={onClickItem} />\n ))}\n </ul>\n )\n}\n\ntype TOCItemComponentProps = {\n item: TOCItem\n activeId: string\n onClickItem: (id: string) => void\n}\n\nfunction TOCItemComponent({ item, activeId, onClickItem }: TOCItemComponentProps) {\n const isActive = item.id === activeId\n const hasActiveChild = hasActiveDescendant(item, activeId)\n\n return (\n <li>\n <a\n href={`#${item.id}`}\n className={[\n styles.tocLink,\n item.level === 3 && styles.tocLink3,\n item.level === 4 && styles.tocLink4,\n isActive && \"active\",\n hasActiveChild && \"child-active\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={(e) => {\n e.preventDefault()\n onClickItem(item.id)\n }}\n >\n {item.text}\n </a>\n {item.children && item.children.length > 0 && (\n <TOCItems items={item.children} activeId={activeId} onClickItem={onClickItem} />\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\"\n\nimport { useArdoConfig, useArdoPageData, useArdoSiteConfig } from \"../runtime/hooks\"\nimport { ArdoContent } from \"./Content\"\nimport * as styles from \"./DocPage.css\"\nimport { ArdoLayout } from \"./Layout\"\nimport { ArdoTOC } from \"./Toc\"\n\n// =============================================================================\n// DocPage Component (includes Layout - for backwards compatibility)\n// =============================================================================\n\ntype DocPageProps = {\n children: ReactNode\n /** Edit link configuration (forwarded to Content) */\n editLink?: { pattern: string; text?: string }\n /** Last updated configuration (forwarded to Content) */\n lastUpdated?: { enabled?: boolean; text?: string; formatOptions?: Intl.DateTimeFormatOptions }\n /** TOC label (forwarded to TOC) */\n tocLabel?: string\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 ArdoDocPage({ children, editLink, lastUpdated, tocLabel }: DocPageProps) {\n const pageData = useArdoPageData()\n const hideToc = pageData?.frontmatter.outline === false\n\n return (\n <ArdoLayout>\n <div className={styles.docPage}>\n <ArdoContent editLink={editLink} lastUpdated={lastUpdated} metaPlacement=\"none\">\n {children}\n </ArdoContent>\n <ArdoPageRail\n editLink={editLink}\n lastUpdated={lastUpdated}\n tocLabel={tocLabel}\n hideToc={hideToc}\n />\n </div>\n </ArdoLayout>\n )\n}\n\n// =============================================================================\n// DocContent Component (without Layout - for use with _layout.tsx)\n// =============================================================================\n\ntype DocContentProps = {\n children: ReactNode\n /** Edit link configuration (forwarded to Content) */\n editLink?: { pattern: string; text?: string }\n /** Last updated configuration (forwarded to Content) */\n lastUpdated?: { enabled?: boolean; text?: string; formatOptions?: Intl.DateTimeFormatOptions }\n /** TOC label (forwarded to TOC) */\n tocLabel?: string\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 ArdoDocContent({ children, editLink, lastUpdated, tocLabel }: DocContentProps) {\n const pageData = useArdoPageData()\n const hideToc = pageData?.frontmatter.outline === false\n\n return (\n <div className={styles.docPage}>\n <ArdoContent editLink={editLink} lastUpdated={lastUpdated} metaPlacement=\"none\">\n {children}\n </ArdoContent>\n <ArdoPageRail\n editLink={editLink}\n lastUpdated={lastUpdated}\n tocLabel={tocLabel}\n hideToc={hideToc}\n />\n </div>\n )\n}\n\nfunction ArdoPageRail({\n editLink,\n lastUpdated,\n tocLabel,\n hideToc = false,\n}: {\n editLink?: { pattern: string; text?: string }\n lastUpdated?: { enabled?: boolean; text?: string; formatOptions?: Intl.DateTimeFormatOptions }\n tocLabel?: string\n hideToc?: boolean\n}) {\n const config = useArdoConfig()\n const siteConfig = useArdoSiteConfig()\n const pageData = useArdoPageData()\n const version = config.project?.version ?? \"\"\n const edit = resolveRailEditLink({ pageData, editLink, siteConfig })\n const updated = resolveRailLastUpdated({ pageData, lastUpdated, siteConfig })\n const hasMeta = edit.show || updated.show\n const hasVersion = version !== \"\"\n\n if (!hasVersion && !hasMeta && hideToc) return null\n\n return (\n <aside className={styles.pageRail}>\n {hasVersion && (\n <section className={styles.pageRailSection}>\n <h2 className={styles.pageRailTitle}>Version</h2>\n <select className={styles.pageRailSelect} defaultValue={version} aria-label=\"Version\">\n <option value={version}>{version}</option>\n </select>\n </section>\n )}\n {hasMeta && (\n <section className={styles.pageRailSection}>\n <h2 className={styles.pageRailTitle}>Page</h2>\n {edit.show && (\n <a\n href={edit.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={styles.pageRailLink}\n >\n {edit.text}\n </a>\n )}\n {updated.show && (\n <p className={styles.pageRailText}>\n {updated.label}: {updated.text}\n </p>\n )}\n </section>\n )}\n {!hideToc && (\n <section className={styles.pageRailSection}>\n <ArdoTOC label={tocLabel} />\n </section>\n )}\n </aside>\n )\n}\n\ntype RailMetaInput = {\n pageData: ReturnType<typeof useArdoPageData>\n siteConfig: ReturnType<typeof useArdoSiteConfig>\n}\n\nfunction resolveRailEditLink({\n pageData,\n editLink,\n siteConfig,\n}: { editLink?: { pattern: string; text?: string } } & RailMetaInput) {\n const resolved = editLink ?? siteConfig.editLink\n const pattern = resolved?.pattern ?? \"\"\n const relativePath = pageData?.relativePath ?? \"\"\n const show = pageData?.frontmatter.editLink !== false && pattern !== \"\" && pageData !== undefined\n return {\n href: show ? pattern.replace(\":path\", relativePath) : undefined,\n text: resolved?.text ?? \"Edit this page\",\n show,\n }\n}\n\nfunction resolveRailLastUpdated({\n pageData,\n lastUpdated,\n siteConfig,\n}: {\n lastUpdated?: { enabled?: boolean; text?: string; formatOptions?: Intl.DateTimeFormatOptions }\n} & RailMetaInput) {\n const resolved = lastUpdated ?? siteConfig.lastUpdated\n const value = pageData?.lastUpdated\n const show =\n pageData?.frontmatter.lastUpdated !== false &&\n resolved?.enabled === true &&\n typeof value === \"number\"\n const formatOptions = resolved?.formatOptions ?? {\n year: \"numeric\" as const,\n month: \"long\" as const,\n day: \"numeric\" as const,\n }\n return {\n label: resolved?.text ?? \"Last updated\",\n text: show ? new Date(value).toLocaleDateString(undefined, formatOptions) : undefined,\n show,\n }\n}\n\n// =============================================================================\n// DocLayout Component (legacy alias)\n// =============================================================================\n\ntype DocLayoutProps = {\n content: ReactNode\n}\n\n/**\n * @deprecated Use DocPage or DocContent instead\n */\nexport function ArdoDocLayout({ content }: DocLayoutProps) {\n return <ArdoDocPage>{content}</ArdoDocPage>\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract.css-ZxmDpwAM.d.ts","names":[],"sources":["../src/ui/theme/contract.css.ts"],"mappings":";cAIa,IAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generator-DX0PP1xf.js","names":["appendExamples","appendSourceLink"],"sources":["../src/typedoc/generator-config.ts","../src/typedoc/generator-shared.ts","../src/typedoc/generator-pages-categories.ts","../src/typedoc/generator-render-component.ts","../src/typedoc/generator-pages-components.ts","../src/typedoc/generator-render.ts","../src/typedoc/generator-pages-grouped.ts","../src/typedoc/generator-pages-index.ts","../src/typedoc/generator-reflection-tags.ts","../src/typedoc/generator-reflection.ts","../src/typedoc/generator-docs.ts","../src/typedoc/generator.ts"],"sourcesContent":["import type { ProjectReflection } from \"typedoc\"\n\nimport type { TypeDocConfig } from \"./types\"\n\nexport type ResolvedTypeDocConfig = {\n out: string\n sidebar: {\n title: string\n position: number\n collapsed: boolean\n }\n markdown: {\n breadcrumbs: boolean\n hierarchy: boolean\n sourceLinks: boolean\n codeBlocks: boolean\n sourceBaseUrl?: string\n }\n} & Omit<TypeDocConfig, \"markdown\" | \"out\" | \"sidebar\">\n\nexport type TypeDocRuntimeContext = {\n basePath: string\n config: ResolvedTypeDocConfig\n packageNameCache: Map<string, string | undefined>\n project: ProjectReflection\n}\n\nexport function resolveTypeDocConfig(config: TypeDocConfig): ResolvedTypeDocConfig {\n const sidebar = resolveSidebarConfig(config.sidebar)\n const markdown = resolveMarkdownConfig(config.markdown)\n\n return {\n ...config,\n excludeExternals: withDefault(config.excludeExternals, true),\n excludeInternal: withDefault(config.excludeInternal, true),\n excludePrivate: withDefault(config.excludePrivate, true),\n excludeProtected: withDefault(config.excludeProtected, false),\n markdown,\n out: withDefault(config.out, \"api\"),\n sidebar,\n sort: withDefault(config.sort, [\"source-order\"]),\n }\n}\n\nexport function getTypedocOptions(config: ResolvedTypeDocConfig): Record<string, unknown> {\n const options: Record<string, unknown> = {\n entryPoints: config.entryPoints,\n excludeExternals: config.excludeExternals,\n excludeInternal: config.excludeInternal,\n excludePrivate: config.excludePrivate,\n excludeProtected: config.excludeProtected,\n sort: config.sort,\n tsconfig: config.tsconfig,\n }\n\n applyOptionalOption(options, \"exclude\", config.exclude)\n applyOptionalOption(options, \"categoryOrder\", config.categoryOrder)\n applyOptionalOption(options, \"groupOrder\", config.groupOrder)\n applyOptionalOption(options, \"plugin\", config.plugin)\n applyOptionalOption(options, \"readme\", config.readme)\n\n return options\n}\n\nfunction applyOptionalOption(\n options: Record<string, unknown>,\n key: string,\n value: null | string | string[] | undefined\n): void {\n if (value != null) {\n options[key] = value\n }\n}\n\nfunction withDefault<T>(value: T | undefined, fallback: T): T {\n return value ?? fallback\n}\n\nfunction resolveSidebarConfig(sidebar: TypeDocConfig[\"sidebar\"]): ResolvedTypeDocConfig[\"sidebar\"] {\n return {\n collapsed: withDefault(sidebar?.collapsed, false),\n position: withDefault(sidebar?.position, 100),\n title: withDefault(sidebar?.title, \"API Reference\"),\n }\n}\n\nfunction resolveMarkdownConfig(\n markdown: TypeDocConfig[\"markdown\"]\n): ResolvedTypeDocConfig[\"markdown\"] {\n return {\n breadcrumbs: withDefault(markdown?.breadcrumbs, true),\n codeBlocks: withDefault(markdown?.codeBlocks, true),\n hierarchy: withDefault(markdown?.hierarchy, true),\n sourceBaseUrl: markdown?.sourceBaseUrl,\n sourceLinks: withDefault(markdown?.sourceLinks, true),\n }\n}\n","import { type DeclarationReflection, type ProjectReflection, ReflectionKind } from \"typedoc\"\n\nexport type GroupedReflections = {\n componentItems: DeclarationReflection[]\n functionsByFile: Map<string, DeclarationReflection[]>\n standaloneItems: DeclarationReflection[]\n typesByFile: Map<string, DeclarationReflection[]>\n}\n\nexport type ReflectionNavigation = {\n next: DeclarationReflection | null\n prev: DeclarationReflection | null\n}\n\nexport type ComponentProp = {\n description: string\n name: string\n optional: boolean\n type: string\n}\n\nexport type CommentPart = {\n kind: string\n text: string\n}\n\nexport function groupProjectChildren(\n project: ProjectReflection,\n isComponentName: (name: string) => boolean\n): GroupedReflections {\n const grouped: GroupedReflections = {\n componentItems: [],\n functionsByFile: new Map<string, DeclarationReflection[]>(),\n standaloneItems: [],\n typesByFile: new Map<string, DeclarationReflection[]>(),\n }\n\n const children = project.children ?? []\n for (const child of children) {\n if (appendFunctionReflection(grouped, child, isComponentName)) {\n continue\n }\n if (appendTypeAliasReflection(grouped, child)) {\n continue\n }\n grouped.standaloneItems.push(child)\n }\n\n return grouped\n}\n\nfunction appendFunctionReflection(\n grouped: GroupedReflections,\n child: DeclarationReflection,\n isComponentName: (name: string) => boolean\n): boolean {\n const sourceFile = child.sources?.[0]?.fileName\n if (child.kind !== ReflectionKind.Function || sourceFile == null) {\n return false\n }\n\n if (isComponentName(child.name)) {\n grouped.componentItems.push(child)\n return true\n }\n\n appendToMapList(grouped.functionsByFile, sourceFile, child)\n return true\n}\n\nfunction appendTypeAliasReflection(\n grouped: GroupedReflections,\n child: DeclarationReflection\n): boolean {\n const sourceFile = child.sources?.[0]?.fileName\n if (child.kind !== ReflectionKind.TypeAlias || sourceFile == null) {\n return false\n }\n\n appendToMapList(grouped.typesByFile, sourceFile, child)\n return true\n}\n\nexport function appendToMapList<T>(map: Map<string, T[]>, key: string, item: T): void {\n const items = map.get(key) ?? []\n items.push(item)\n map.set(key, items)\n}\n\nexport function sortReflectionsByName<T extends { name: string }>(items: T[]): T[] {\n return [...items].sort((left, right) => left.name.localeCompare(right.name))\n}\n\nexport function getModuleNameFromPath(\n filePath: string,\n packageNameCache: Map<string, string | undefined>\n): string {\n const parts = filePath.split(\"/\")\n const filePart = parts.pop() ?? filePath\n const basename = filePart.replace(/\\.(?:ts|tsx|js|jsx)$/u, \"\")\n const parent = parts.pop()\n\n if (parent != null && parent !== \"src\") {\n return `${parent}/${basename}`\n }\n\n if (basename === \"index\") {\n for (const packageName of packageNameCache.values()) {\n if (packageName != null && packageName.length > 0) {\n return packageName\n }\n }\n }\n\n return basename\n}\n\nexport function renderComment(parts: CommentPart[]): string {\n return parts.map((part) => part.text).join(\"\")\n}\n\nexport function renderCommentShort(parts: CommentPart[]): string {\n const text = renderComment(parts)\n const firstSentence = text.split(/[!.?]\\s/u)[0]\n if (firstSentence.length < text.length) {\n return `${firstSentence}.`\n }\n return text\n}\n\nexport function getSlug(name: string): string {\n return name\n .toLowerCase()\n .replaceAll(/[^\\da-z]+/gu, \"-\")\n .replaceAll(/^-|-$/gu, \"\")\n}\n\nexport function buildLink(basePath: string, category: string, slug: string): string {\n if (slug === \"index\") {\n return `${basePath}/${category}`\n }\n return `${basePath}/${category}/${slug}`\n}\n\nexport function getSourceUrl(\n sourceBaseUrl: string | undefined,\n fileName: string,\n line: number\n): null | string {\n if (sourceBaseUrl == null || sourceBaseUrl.length === 0) {\n return null\n }\n const baseUrl = sourceBaseUrl.replace(/\\/$/u, \"\")\n return `${baseUrl}/${fileName}#L${line}`\n}\n\nexport function getKindName(kind: ReflectionKind): string {\n const kindNames: Partial<Record<ReflectionKind, string>> = {\n [ReflectionKind.Project]: \"Project\",\n [ReflectionKind.Module]: \"Module\",\n [ReflectionKind.Namespace]: \"Namespace\",\n [ReflectionKind.Enum]: \"Enum\",\n [ReflectionKind.EnumMember]: \"Enum Member\",\n [ReflectionKind.Variable]: \"Variable\",\n [ReflectionKind.Function]: \"Function\",\n [ReflectionKind.Class]: \"Class\",\n [ReflectionKind.Interface]: \"Interface\",\n [ReflectionKind.Constructor]: \"Constructor\",\n [ReflectionKind.Property]: \"Property\",\n [ReflectionKind.Method]: \"Method\",\n [ReflectionKind.TypeAlias]: \"Type\",\n }\n return kindNames[kind] ?? \"Unknown\"\n}\n\nexport function getGroupUrlPrefix(kind: ReflectionKind): string {\n const prefixes: Partial<Record<ReflectionKind, string>> = {\n [ReflectionKind.Enum]: \"enums\",\n [ReflectionKind.Variable]: \"variables\",\n [ReflectionKind.Class]: \"classes\",\n [ReflectionKind.Interface]: \"interfaces\",\n [ReflectionKind.Namespace]: \"namespaces\",\n [ReflectionKind.Module]: \"modules\",\n }\n return prefixes[kind] ?? \"other\"\n}\n\nexport function getKindGroupName(kind: ReflectionKind, name: string): string {\n if (kind === ReflectionKind.Function) {\n if (name.startsWith(\"use\")) {\n return \"React Hooks\"\n }\n if (isReactComponent(name)) {\n return \"React Components\"\n }\n return \"Functions\"\n }\n\n const groupNames: Partial<Record<ReflectionKind, string>> = {\n [ReflectionKind.Class]: \"Classes\",\n [ReflectionKind.Enum]: \"Enums\",\n [ReflectionKind.Interface]: \"Interfaces\",\n [ReflectionKind.TypeAlias]: \"Types\",\n [ReflectionKind.Variable]: \"Variables\",\n }\n\n return groupNames[kind] ?? \"Other\"\n}\n\nexport function isReactComponent(name: string): boolean {\n const first = name.slice(0, 1)\n if (first.length === 0 || first !== first.toUpperCase()) {\n return false\n }\n if (name.includes(\"_\") || name.startsWith(\"use\")) {\n return false\n }\n if (name.endsWith(\"Props\") || name.endsWith(\"Options\") || name.endsWith(\"Config\")) {\n return false\n }\n return true\n}\n\nexport function createBreadcrumbs(basePath: string, pagePath: string): string {\n const parts = pagePath.split(\"/\")\n const breadcrumbs: string[] = [`[API](${basePath})`]\n let currentPath = \"\"\n\n for (const part of parts.slice(0, -1)) {\n currentPath = currentPath.length > 0 ? `${currentPath}/${part}` : part\n breadcrumbs.push(`[${part}](${basePath}/${currentPath})`)\n }\n\n const leaf = parts.at(-1)\n if (leaf != null) {\n breadcrumbs.push(leaf)\n }\n\n return breadcrumbs.join(\" / \")\n}\n\nexport function createNavigationLine(params: {\n basePath: string\n kind: ReflectionKind\n navigation: ReflectionNavigation\n}): null | string {\n const { basePath, kind, navigation } = params\n const prefix = getGroupUrlPrefix(kind)\n const prevLink =\n navigation.prev == null\n ? \"\"\n : `[← ${navigation.prev.name}](${buildLink(basePath, prefix, getSlug(navigation.prev.name))})`\n const nextLink =\n navigation.next == null\n ? \"\"\n : `[${navigation.next.name} →](${buildLink(basePath, prefix, getSlug(navigation.next.name))})`\n\n if (prevLink.length > 0 && nextLink.length > 0) {\n return `${prevLink} | ${nextLink}`\n }\n\n if (prevLink.length > 0) {\n return prevLink\n }\n\n if (nextLink.length > 0) {\n return nextLink\n }\n\n return null\n}\n","import { type DeclarationReflection, ReflectionKind } from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\nimport type { GeneratedApiDoc } from \"./types\"\n\nimport {\n buildLink,\n getModuleNameFromPath,\n getSlug,\n type GroupedReflections,\n renderCommentShort,\n sortReflectionsByName,\n} from \"./generator-shared\"\n\nexport function generateCategoryIndexPages(\n context: TypeDocRuntimeContext,\n grouped: GroupedReflections\n): GeneratedApiDoc[] {\n const pages: GeneratedApiDoc[] = []\n\n pushIfNotNull(pages, createComponentsIndexPage(context, grouped.componentItems))\n pushIfNotNull(pages, createFunctionsIndexPage(context, grouped.functionsByFile))\n pushIfNotNull(pages, createInterfacesIndexPage(context, grouped.standaloneItems))\n pushIfNotNull(pages, createTypesIndexPage(context, grouped.typesByFile))\n pushIfNotNull(pages, createClassesIndexPage(context, grouped.standaloneItems))\n\n return pages\n}\n\nfunction pushIfNotNull(docs: GeneratedApiDoc[], doc: GeneratedApiDoc | null): void {\n if (doc != null) {\n docs.push(doc)\n }\n}\n\nfunction createComponentsIndexPage(\n context: TypeDocRuntimeContext,\n components: DeclarationReflection[]\n): GeneratedApiDoc | null {\n if (components.length === 0) {\n return null\n }\n\n return {\n content: renderSimpleItemIndex({\n basePath: context.basePath,\n category: \"components\",\n items: components,\n title: \"Components\",\n }),\n frontmatter: { sidebar: false, title: \"Components\" },\n path: \"components/index.md\",\n }\n}\n\nfunction createInterfacesIndexPage(\n context: TypeDocRuntimeContext,\n standaloneItems: DeclarationReflection[]\n): GeneratedApiDoc | null {\n const interfaces = standaloneItems.filter((item) => item.kind === ReflectionKind.Interface)\n if (interfaces.length === 0) {\n return null\n }\n\n return {\n content: renderSimpleItemIndex({\n basePath: context.basePath,\n category: \"interfaces\",\n items: interfaces,\n title: \"Interfaces\",\n }),\n frontmatter: { sidebar: false, title: \"Interfaces\" },\n path: \"interfaces/index.md\",\n }\n}\n\nfunction createClassesIndexPage(\n context: TypeDocRuntimeContext,\n standaloneItems: DeclarationReflection[]\n): GeneratedApiDoc | null {\n const classes = standaloneItems.filter((item) => item.kind === ReflectionKind.Class)\n if (classes.length === 0) {\n return null\n }\n\n return {\n content: renderSimpleItemIndex({\n basePath: context.basePath,\n category: \"classes\",\n items: classes,\n title: \"Classes\",\n }),\n frontmatter: { sidebar: false, title: \"Classes\" },\n path: \"classes/index.md\",\n }\n}\n\nfunction renderSimpleItemIndex(params: {\n basePath: string\n category: string\n items: DeclarationReflection[]\n title: string\n}): string {\n const lines: string[] = [`# ${params.title}`, \"\"]\n const sortedItems = sortReflectionsByName(params.items)\n\n for (const item of sortedItems) {\n const summary = item.comment?.summary\n const description = summary == null ? \"\" : ` - ${renderCommentShort(summary)}`\n const link = buildLink(params.basePath, params.category, getSlug(item.name))\n lines.push(`- [${item.name}](${link})${description}`)\n }\n\n lines.push(\"\")\n return lines.join(\"\\n\")\n}\n\nfunction createFunctionsIndexPage(\n context: TypeDocRuntimeContext,\n functionsByFile: Map<string, DeclarationReflection[]>\n): GeneratedApiDoc | null {\n if (functionsByFile.size === 0) {\n return null\n }\n\n return {\n content: renderModuleIndex({\n basePath: context.basePath,\n category: \"functions\",\n modules: functionsByFile,\n packageNameCache: context.packageNameCache,\n title: \"Functions\",\n }),\n frontmatter: { sidebar: false, title: \"Functions\" },\n path: \"functions/index.md\",\n }\n}\n\nfunction createTypesIndexPage(\n context: TypeDocRuntimeContext,\n typesByFile: Map<string, DeclarationReflection[]>\n): GeneratedApiDoc | null {\n if (typesByFile.size === 0) {\n return null\n }\n\n return {\n content: renderModuleIndex({\n basePath: context.basePath,\n category: \"types\",\n modules: typesByFile,\n packageNameCache: context.packageNameCache,\n title: \"Types\",\n }),\n frontmatter: { sidebar: false, title: \"Types\" },\n path: \"types/index.md\",\n }\n}\n\nfunction renderModuleIndex(params: {\n basePath: string\n category: string\n modules: Map<string, DeclarationReflection[]>\n packageNameCache: Map<string, string | undefined>\n title: string\n}): string {\n const lines: string[] = [`# ${params.title}`, \"\"]\n const sortedModules = [...params.modules.entries()].sort(([left], [right]) => {\n const leftName = getModuleNameFromPath(left, params.packageNameCache)\n const rightName = getModuleNameFromPath(right, params.packageNameCache)\n return leftName.localeCompare(rightName)\n })\n\n for (const [sourceFile, items] of sortedModules) {\n const moduleName = getModuleNameFromPath(sourceFile, params.packageNameCache)\n const slug = getSlug(moduleName)\n const itemNames = items\n .map((item) => item.name)\n .sort()\n .join(\", \")\n lines.push(\n `- [${moduleName}](${buildLink(params.basePath, params.category, slug)}) - ${itemNames}`\n )\n }\n\n lines.push(\"\")\n return lines.join(\"\\n\")\n}\n","import { DeclarationReflection, type SignatureReflection } from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\n\nimport { buildLink, type ComponentProp, getSlug, renderCommentShort } from \"./generator-shared\"\n\nexport function getTypeName(paramType: unknown): null | string {\n if (!isRecord(paramType)) {\n return null\n }\n\n if (typeof paramType.name === \"string\" && paramType.name.length > 0) {\n return paramType.name\n }\n\n if (paramType.type !== \"reference\") {\n return null\n }\n\n if (typeof paramType.qualifiedName === \"string\" && paramType.qualifiedName.length > 0) {\n return paramType.qualifiedName\n }\n\n return null\n}\n\nexport function getPropsFromType(\n context: TypeDocRuntimeContext,\n paramType: unknown\n): ComponentProp[] {\n const inlineProps = getInlineDeclarationProps(paramType)\n if (inlineProps.length > 0) {\n return inlineProps\n }\n\n const typeName = getTypeName(paramType)\n if (typeName == null) {\n return []\n }\n\n const reflection = findReflectionByName(context, typeName)\n if (reflection == null) {\n return []\n }\n\n return extractPropsFromChildren(reflection.children ?? [])\n}\n\nfunction getInlineDeclarationProps(paramType: unknown): ComponentProp[] {\n if (!isRecord(paramType)) {\n return []\n }\n\n const declaration = paramType.declaration\n if (declaration == null) {\n return []\n }\n\n return declaration instanceof DeclarationReflection\n ? extractPropsFromChildren(declaration.children ?? [])\n : []\n}\n\nfunction findReflectionByName(\n context: TypeDocRuntimeContext,\n typeName: string\n): DeclarationReflection | null {\n const direct = context.project.getChildByName(typeName)\n if (direct instanceof DeclarationReflection) {\n return direct\n }\n\n const children = context.project.children ?? []\n for (const child of children) {\n if (child.name === typeName) {\n return child\n }\n }\n\n return null\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === \"object\"\n}\n\nfunction extractPropsFromChildren(children: DeclarationReflection[]): ComponentProp[] {\n return children.map((child) => ({\n description: child.comment?.summary == null ? \"\" : renderCommentShort(child.comment.summary),\n name: child.name,\n optional: child.flags.isOptional,\n type: child.type == null ? \"unknown\" : child.type.toString(),\n }))\n}\n\nexport function renderComponentSignature(\n context: TypeDocRuntimeContext,\n signature: SignatureReflection,\n componentName: string\n): string {\n const lines: string[] = []\n const propsParam = signature.parameters?.[0]\n const props = propsParam == null ? [] : getPropsFromType(context, propsParam.type)\n const propsTypeName = propsParam == null ? null : getTypeName(propsParam.type)\n\n appendComponentUsageBlock(lines, componentName, props)\n appendComponentPropsTable({\n context,\n lines,\n props,\n propsTypeName,\n })\n\n return lines.join(\"\\n\")\n}\n\nfunction appendComponentUsageBlock(\n lines: string[],\n componentName: string,\n props: ComponentProp[]\n): void {\n const hasChildren = props.some((prop) => prop.name === \"children\")\n const displayProps = props.filter((prop) => prop.name !== \"children\")\n\n lines.push(\"```tsx\")\n lines.push(`<${componentName}`)\n\n if (displayProps.length > 0) {\n for (const prop of displayProps) {\n const optionalMark = prop.optional ? \"?\" : \"\"\n lines.push(` ${prop.name}${optionalMark}={${prop.type}}`)\n }\n } else if (!hasChildren) {\n lines.push(\" {...props}\")\n }\n\n if (hasChildren) {\n lines.push(\">\")\n lines.push(\" {children}\")\n lines.push(`</${componentName}>`)\n } else {\n lines.push(\"/>\")\n }\n\n lines.push(\"```\")\n}\n\nfunction appendComponentPropsTable(params: {\n context: TypeDocRuntimeContext\n lines: string[]\n props: ComponentProp[]\n propsTypeName: null | string\n}): void {\n const { context, lines, props, propsTypeName } = params\n if (props.length === 0) {\n return\n }\n\n lines.push(\"\")\n lines.push(getPropsHeading(context.basePath, propsTypeName))\n\n lines.push(\"\")\n lines.push(\"| Prop | Type | Required | Description |\")\n lines.push(\"|------|------|----------|-------------|\")\n\n for (const prop of props) {\n const required = prop.optional ? \"No\" : \"Yes\"\n const description = prop.description.length > 0 ? prop.description : \"-\"\n lines.push(`| ${prop.name} | \\`${prop.type}\\` | ${required} | ${description} |`)\n }\n}\n\nfunction getPropsHeading(basePath: string, propsTypeName: null | string): string {\n if (propsTypeName == null) {\n return \"## Props\"\n }\n\n const propsSlug = getSlug(propsTypeName)\n const propsLink = buildLink(basePath, \"interfaces\", propsSlug)\n return `## [Props](${propsLink})`\n}\n","import type { DeclarationReflection } from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\nimport type { GeneratedApiDoc } from \"./types\"\n\nimport { renderComponentSignature } from \"./generator-render-component\"\nimport {\n createNavigationLine,\n getSlug,\n getSourceUrl,\n type ReflectionNavigation,\n renderComment,\n renderCommentShort,\n} from \"./generator-shared\"\n\nexport function generateComponentPage(params: {\n component: DeclarationReflection\n context: TypeDocRuntimeContext\n navigation: ReflectionNavigation\n}): GeneratedApiDoc {\n const { component, context, navigation } = params\n const slug = getSlug(component.name)\n const content = createComponentContent(context, component, navigation)\n\n return {\n content,\n frontmatter: {\n description:\n component.comment?.summary == null\n ? `${component.name} component`\n : renderCommentShort(component.comment.summary),\n title: component.name,\n },\n path: `components/${slug}.md`,\n }\n}\n\nfunction createComponentContent(\n context: TypeDocRuntimeContext,\n component: DeclarationReflection,\n navigation: ReflectionNavigation\n): string {\n const lines: string[] = [`# ${component.name}`, \"\"]\n\n const summary = component.comment?.summary\n if (summary != null) {\n lines.push(renderComment(summary))\n lines.push(\"\")\n }\n\n appendComponentUsage(lines, context, component)\n appendExamples(lines, component)\n appendSourceLink(lines, context, component)\n appendComponentNavigation({\n component,\n context,\n lines,\n navigation,\n })\n\n return lines.join(\"\\n\")\n}\n\nfunction appendComponentUsage(\n lines: string[],\n context: TypeDocRuntimeContext,\n component: DeclarationReflection\n): void {\n const signatures = component.signatures ?? []\n if (signatures.length === 0) {\n return\n }\n\n lines.push(\"## Usage\")\n lines.push(\"\")\n\n for (const signature of signatures) {\n lines.push(renderComponentSignature(context, signature, component.name))\n lines.push(\"\")\n }\n}\n\nfunction appendExamples(lines: string[], reflection: DeclarationReflection): void {\n const tags = reflection.comment?.blockTags ?? []\n const examples = tags.filter((tag) => tag.tag === \"@example\")\n if (examples.length === 0) {\n return\n }\n\n lines.push(\"## Example\")\n lines.push(\"\")\n\n for (const example of examples) {\n lines.push(renderComment(example.content))\n lines.push(\"\")\n }\n}\n\nfunction appendSourceLink(\n lines: string[],\n context: TypeDocRuntimeContext,\n reflection: DeclarationReflection\n): void {\n if (!context.config.markdown.sourceLinks) {\n return\n }\n\n const source = reflection.sources?.[0]\n if (source == null) {\n return\n }\n\n const sourceUrl = getSourceUrl(\n context.config.markdown.sourceBaseUrl,\n source.fileName,\n source.line\n )\n if (sourceUrl == null) {\n return\n }\n\n lines.push(`[Source](${sourceUrl})`)\n lines.push(\"\")\n}\n\nfunction appendComponentNavigation(params: {\n component: DeclarationReflection\n context: TypeDocRuntimeContext\n lines: string[]\n navigation: ReflectionNavigation\n}): void {\n const { component, context, lines, navigation } = params\n const line = createNavigationLine({\n basePath: context.basePath,\n kind: component.kind,\n navigation,\n })\n\n if (line == null) {\n return\n }\n\n lines.push(\"---\")\n lines.push(\"\")\n lines.push(line)\n lines.push(\"\")\n}\n","import type {\n DeclarationReflection,\n ParameterReflection,\n SignatureReflection,\n TypeParameterReflection,\n} from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\n\nimport { renderComment, renderCommentShort } from \"./generator-shared\"\n\nexport function renderSignature(\n context: TypeDocRuntimeContext,\n signature: SignatureReflection\n): string {\n const lines: string[] = []\n\n appendCodeFenceStart(lines, context)\n lines.push(getSignatureLine(signature))\n appendCodeFenceEnd(lines, context)\n appendSignatureParameters(lines, signature)\n appendSignatureReturn(lines, signature)\n\n return lines.join(\"\\n\")\n}\n\nfunction appendCodeFenceStart(lines: string[], context: TypeDocRuntimeContext): void {\n if (context.config.markdown.codeBlocks) {\n lines.push(\"```typescript\")\n }\n}\n\nfunction appendCodeFenceEnd(lines: string[], context: TypeDocRuntimeContext): void {\n if (context.config.markdown.codeBlocks) {\n lines.push(\"```\")\n }\n}\n\nfunction getSignatureLine(signature: SignatureReflection): string {\n const typeParameters = renderTypeParameterNames(signature.typeParameters)\n const parameters = renderSignatureParameters(signature)\n const returnType = signature.type == null ? \"\" : `: ${signature.type.toString()}`\n return `function ${signature.name}${typeParameters}(${parameters})${returnType}`\n}\n\nfunction renderTypeParameterNames(typeParameters: SignatureReflection[\"typeParameters\"]): string {\n if (typeParameters == null || typeParameters.length === 0) {\n return \"\"\n }\n return `<${typeParameters.map((item) => item.name).join(\", \")}>`\n}\n\nfunction renderSignatureParameters(signature: SignatureReflection): string {\n const parameters = signature.parameters ?? []\n return parameters\n .map((parameter) => {\n const optional = parameter.flags.isOptional ? \"?\" : \"\"\n const type = parameter.type == null ? \"\" : `: ${parameter.type.toString()}`\n return `${parameter.name}${optional}${type}`\n })\n .join(\", \")\n}\n\nfunction appendSignatureParameters(lines: string[], signature: SignatureReflection): void {\n const parameters = signature.parameters ?? []\n if (parameters.length === 0) {\n return\n }\n\n lines.push(\"\")\n lines.push(\"### Parameters\")\n lines.push(\"\")\n lines.push(\"| Name | Type | Description |\")\n lines.push(\"|------|------|-------------|\")\n\n for (const parameter of parameters) {\n lines.push(renderSignatureParameterRow(parameter))\n }\n}\n\nfunction renderSignatureParameterRow(parameter: ParameterReflection): string {\n const optional = parameter.flags.isOptional ? \" (optional)\" : \"\"\n const type = parameter.type == null ? \"-\" : `\\`${parameter.type.toString()}\\``\n const summary = parameter.comment?.summary\n const description = summary == null ? \"-\" : renderCommentShort(summary)\n return `| ${parameter.name}${optional} | ${type} | ${description} |`\n}\n\nfunction appendSignatureReturn(lines: string[], signature: SignatureReflection): void {\n const returnType = signature.type\n if (returnType == null || returnType.toString() === \"void\") {\n return\n }\n\n lines.push(\"\")\n lines.push(\"### Returns\")\n lines.push(\"\")\n lines.push(`\\`${returnType.toString()}\\``)\n\n const returnTag = signature.comment?.blockTags.find((tag) => tag.tag === \"@returns\")\n if (returnTag == null) {\n return\n }\n\n lines.push(\"\")\n lines.push(renderComment(returnTag.content))\n}\n\nexport function renderProperty(property: DeclarationReflection): string {\n const lines: string[] = []\n const flags = getPropertyFlags(property)\n\n lines.push(`### ${property.name}`)\n if (flags.length > 0) {\n lines.push(`*${flags.join(\", \")}*`)\n }\n lines.push(\"\")\n\n appendPropertyType(lines, property)\n appendPropertySummary(lines, property)\n appendPropertyDefaultValue(lines, property)\n\n return lines.join(\"\\n\")\n}\n\nfunction getPropertyFlags(property: DeclarationReflection): string[] {\n const flags: string[] = []\n if (property.flags.isOptional) flags.push(\"optional\")\n if (property.flags.isReadonly) flags.push(\"readonly\")\n if (property.flags.isStatic) flags.push(\"static\")\n return flags\n}\n\nfunction appendPropertyType(lines: string[], property: DeclarationReflection): void {\n if (property.type == null) {\n return\n }\n lines.push(\"```typescript\")\n lines.push(`${property.name}: ${property.type.toString()}`)\n lines.push(\"```\")\n lines.push(\"\")\n}\n\nfunction appendPropertySummary(lines: string[], property: DeclarationReflection): void {\n const summary = property.comment?.summary\n if (summary != null) {\n lines.push(renderComment(summary))\n }\n}\n\nfunction appendPropertyDefaultValue(lines: string[], property: DeclarationReflection): void {\n if (property.defaultValue == null || property.defaultValue.length === 0) {\n return\n }\n lines.push(\"\")\n lines.push(`**Default:** \\`${property.defaultValue}\\``)\n}\n\nexport function renderMethod(\n context: TypeDocRuntimeContext,\n method: DeclarationReflection\n): string {\n const lines: string[] = []\n lines.push(`### ${method.name}()`)\n lines.push(\"\")\n\n const signatures = method.signatures ?? []\n for (const signature of signatures) {\n appendMethodSignature(lines, context, signature)\n }\n\n return lines.join(\"\\n\")\n}\n\nfunction appendMethodSignature(\n lines: string[],\n context: TypeDocRuntimeContext,\n signature: SignatureReflection\n): void {\n const summary = signature.comment?.summary\n if (summary != null) {\n lines.push(renderComment(summary))\n lines.push(\"\")\n }\n\n lines.push(renderSignature(context, signature))\n lines.push(\"\")\n}\n\nexport function renderTypeParameters(typeParameters: TypeParameterReflection[]): string {\n const lines: string[] = []\n lines.push(\"| Name | Constraint | Default | Description |\")\n lines.push(\"|------|------------|---------|-------------|\")\n\n for (const typeParameter of typeParameters) {\n lines.push(renderTypeParameterRow(typeParameter))\n }\n\n return lines.join(\"\\n\")\n}\n\nfunction renderTypeParameterRow(typeParameter: TypeParameterReflection): string {\n const constraint = typeParameter.type == null ? \"-\" : `\\`${typeParameter.type.toString()}\\``\n const defaultValue =\n typeParameter.default == null ? \"-\" : `\\`${typeParameter.default.toString()}\\``\n const summary = typeParameter.comment?.summary\n const description = summary == null ? \"-\" : renderCommentShort(summary)\n return `| ${typeParameter.name} | ${constraint} | ${defaultValue} | ${description} |`\n}\n\nexport function renderHierarchy(reflection: DeclarationReflection): null | string {\n const lines: string[] = []\n\n appendHierarchySection(lines, \"**Extends:**\", reflection.extendedTypes)\n appendHierarchySection(lines, \"**Implements:**\", reflection.implementedTypes)\n appendHierarchySection(lines, \"**Extended by:**\", reflection.extendedBy)\n appendHierarchySection(lines, \"**Implemented by:**\", reflection.implementedBy)\n\n return lines.length === 0 ? null : lines.join(\"\\n\")\n}\n\nfunction appendHierarchySection(\n lines: string[],\n title: string,\n types: DeclarationReflection[\"extendedTypes\"]\n): void {\n if (types == null || types.length === 0) {\n return\n }\n\n lines.push(title)\n for (const item of types) {\n lines.push(`- \\`${item.toString()}\\``)\n }\n}\n","import type { DeclarationReflection } from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\nimport type { GeneratedApiDoc } from \"./types\"\n\nimport { renderSignature } from \"./generator-render\"\nimport {\n getModuleNameFromPath,\n getSlug,\n getSourceUrl,\n renderComment,\n sortReflectionsByName,\n} from \"./generator-shared\"\n\nexport function generateGroupedFunctionsPage(params: {\n context: TypeDocRuntimeContext\n functions: DeclarationReflection[]\n sourceFile: string\n}): GeneratedApiDoc {\n const { context, functions, sourceFile } = params\n const moduleName = getModuleNameFromPath(sourceFile, context.packageNameCache)\n const content = createGroupedFunctionsContent({\n context,\n functions,\n moduleName,\n sourceFile,\n })\n\n return {\n content,\n frontmatter: {\n description: `Functions from ${sourceFile}`,\n title: `${moduleName} Functions`,\n },\n path: `functions/${getSlug(moduleName)}.md`,\n }\n}\n\nfunction createGroupedFunctionsContent(params: {\n context: TypeDocRuntimeContext\n functions: DeclarationReflection[]\n moduleName: string\n sourceFile: string\n}): string {\n const { context, functions, moduleName, sourceFile } = params\n const lines: string[] = [\n `# ${moduleName} Functions`,\n \"\",\n `Functions exported from \\`${sourceFile}\\``,\n \"\",\n ]\n const sortedFunctions = sortReflectionsByName(functions)\n\n for (const fn of sortedFunctions) {\n appendGroupedFunction(lines, context, fn)\n }\n\n return lines.join(\"\\n\")\n}\n\nfunction appendGroupedFunction(\n lines: string[],\n context: TypeDocRuntimeContext,\n fn: DeclarationReflection\n): void {\n lines.push(`## ${fn.name}`)\n lines.push(\"\")\n\n const summary = fn.comment?.summary\n if (summary != null) {\n lines.push(renderComment(summary))\n lines.push(\"\")\n }\n\n const signatures = fn.signatures ?? []\n for (const signature of signatures) {\n lines.push(renderSignature(context, signature))\n lines.push(\"\")\n }\n\n appendExamples(lines, fn)\n appendSourceLink(lines, context, fn)\n lines.push(\"---\")\n lines.push(\"\")\n}\n\nfunction appendExamples(lines: string[], reflection: DeclarationReflection): void {\n const tags = reflection.comment?.blockTags ?? []\n const examples = tags.filter((tag) => tag.tag === \"@example\")\n if (examples.length === 0) {\n return\n }\n\n lines.push(\"### Example\")\n lines.push(\"\")\n\n for (const example of examples) {\n lines.push(renderComment(example.content))\n lines.push(\"\")\n }\n}\n\nfunction appendSourceLink(\n lines: string[],\n context: TypeDocRuntimeContext,\n reflection: DeclarationReflection\n): void {\n if (!context.config.markdown.sourceLinks) {\n return\n }\n\n const source = reflection.sources?.[0]\n if (source == null) {\n return\n }\n\n const sourceUrl = getSourceUrl(\n context.config.markdown.sourceBaseUrl,\n source.fileName,\n source.line\n )\n if (sourceUrl == null) {\n return\n }\n\n lines.push(`[Source](${sourceUrl})`)\n lines.push(\"\")\n}\n\nexport function generateGroupedTypesPage(params: {\n context: TypeDocRuntimeContext\n sourceFile: string\n types: DeclarationReflection[]\n}): GeneratedApiDoc {\n const { context, sourceFile, types } = params\n const moduleName = getModuleNameFromPath(sourceFile, context.packageNameCache)\n const content = createGroupedTypesContent({\n context,\n moduleName,\n sourceFile,\n types,\n })\n\n return {\n content,\n frontmatter: {\n description: `Type definitions from ${sourceFile}`,\n title: `${moduleName} Types`,\n },\n path: `types/${getSlug(moduleName)}.md`,\n }\n}\n\nfunction createGroupedTypesContent(params: {\n context: TypeDocRuntimeContext\n moduleName: string\n sourceFile: string\n types: DeclarationReflection[]\n}): string {\n const { context, moduleName, sourceFile, types } = params\n const lines: string[] = [\n `# ${moduleName} Types`,\n \"\",\n `Type definitions from \\`${sourceFile}\\``,\n \"\",\n ]\n const sortedTypes = sortReflectionsByName(types)\n\n for (const typeAlias of sortedTypes) {\n appendGroupedType(lines, context, typeAlias)\n }\n\n return lines.join(\"\\n\")\n}\n\nfunction appendGroupedType(\n lines: string[],\n context: TypeDocRuntimeContext,\n typeAlias: DeclarationReflection\n): void {\n lines.push(`## ${typeAlias.name}`)\n lines.push(\"\")\n\n const summary = typeAlias.comment?.summary\n if (summary != null) {\n lines.push(renderComment(summary))\n lines.push(\"\")\n }\n\n if (typeAlias.type != null) {\n lines.push(\"```typescript\")\n lines.push(`type ${typeAlias.name} = ${typeAlias.type.toString()}`)\n lines.push(\"```\")\n lines.push(\"\")\n }\n\n appendSourceLink(lines, context, typeAlias)\n lines.push(\"---\")\n lines.push(\"\")\n}\n","import type { DeclarationReflection } from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\nimport type { GeneratedApiDoc } from \"./types\"\n\nimport {\n appendToMapList,\n buildLink,\n getKindGroupName,\n getModuleNameFromPath,\n getSlug,\n type GroupedReflections,\n renderComment,\n renderCommentShort,\n sortReflectionsByName,\n} from \"./generator-shared\"\n\nexport function generateIndexPage(\n context: TypeDocRuntimeContext,\n grouped: GroupedReflections\n): GeneratedApiDoc {\n const lines: string[] = [`# ${context.config.sidebar.title}`, \"\", getProjectSummary(context), \"\"]\n\n appendComponentSection(lines, context, grouped.componentItems)\n appendFunctionsSection(lines, context, grouped.functionsByFile)\n appendTypesSection(lines, context, grouped.typesByFile)\n appendStandaloneSections(lines, context, grouped.standaloneItems)\n\n return {\n content: lines.join(\"\\n\"),\n frontmatter: {\n description: \"Auto-generated API documentation\",\n sidebar_position: 0,\n title: context.config.sidebar.title,\n },\n path: \"index.md\",\n }\n}\n\nfunction getProjectSummary(context: TypeDocRuntimeContext): string {\n const summary = context.project.comment?.summary\n if (summary == null) {\n return \"Auto-generated API documentation.\"\n }\n return renderComment(summary)\n}\n\nfunction appendComponentSection(\n lines: string[],\n context: TypeDocRuntimeContext,\n components: DeclarationReflection[]\n): void {\n if (components.length === 0) {\n return\n }\n\n lines.push(\"## Components\")\n lines.push(\"\")\n\n for (const component of sortReflectionsByName(components)) {\n const description = component.comment?.summary\n const suffix = description == null ? \"\" : ` - ${renderCommentShort(description)}`\n const link = buildLink(context.basePath, \"components\", getSlug(component.name))\n lines.push(`- [${component.name}](${link})${suffix}`)\n }\n\n lines.push(\"\")\n}\n\nfunction appendFunctionsSection(\n lines: string[],\n context: TypeDocRuntimeContext,\n functionsByFile: Map<string, DeclarationReflection[]>\n): void {\n if (functionsByFile.size === 0) {\n return\n }\n\n lines.push(\"## Functions\")\n lines.push(\"\")\n lines.push(...renderModuleSectionItems(context, functionsByFile, \"functions\"))\n lines.push(\"\")\n}\n\nfunction appendTypesSection(\n lines: string[],\n context: TypeDocRuntimeContext,\n typesByFile: Map<string, DeclarationReflection[]>\n): void {\n if (typesByFile.size === 0) {\n return\n }\n\n lines.push(\"## Type Aliases\")\n lines.push(\"\")\n lines.push(...renderModuleSectionItems(context, typesByFile, \"types\"))\n lines.push(\"\")\n}\n\nfunction renderModuleSectionItems(\n context: TypeDocRuntimeContext,\n modules: Map<string, DeclarationReflection[]>,\n category: string\n): string[] {\n const sortedModules = [...modules.entries()].sort(([left], [right]) => {\n const leftName = getModuleNameFromPath(left, context.packageNameCache)\n const rightName = getModuleNameFromPath(right, context.packageNameCache)\n return leftName.localeCompare(rightName)\n })\n\n return sortedModules.map(([sourceFile, items]) => {\n const moduleName = getModuleNameFromPath(sourceFile, context.packageNameCache)\n const itemNames = items\n .map((item) => item.name)\n .sort()\n .join(\", \")\n const link = buildLink(context.basePath, category, getSlug(moduleName))\n return `- [${moduleName}](${link}) - ${itemNames}`\n })\n}\n\nfunction appendStandaloneSections(\n lines: string[],\n context: TypeDocRuntimeContext,\n standaloneItems: DeclarationReflection[]\n): void {\n const groups = new Map<string, DeclarationReflection[]>()\n for (const item of standaloneItems) {\n appendToMapList(groups, getKindGroupName(item.kind, item.name), item)\n }\n\n const orderedGroups = [\"Interfaces\", \"Classes\", \"Variables\", \"Enums\", \"Other\"]\n for (const groupName of orderedGroups) {\n const groupItems = groups.get(groupName)\n if (groupItems == null || groupItems.length === 0) {\n continue\n }\n appendStandaloneGroup({\n context,\n groupItems,\n groupName,\n lines,\n })\n }\n}\n\nfunction appendStandaloneGroup(params: {\n context: TypeDocRuntimeContext\n groupItems: DeclarationReflection[]\n groupName: string\n lines: string[]\n}): void {\n const { context, groupItems, groupName, lines } = params\n lines.push(`## ${groupName}`)\n lines.push(\"\")\n\n for (const item of sortReflectionsByName(groupItems)) {\n const description = item.comment?.summary\n const suffix = description == null ? \"\" : ` - ${renderCommentShort(description)}`\n const prefix = groupName.toLowerCase()\n const link = buildLink(context.basePath, prefix, getSlug(item.name))\n lines.push(`- [${item.name}](${link})${suffix}`)\n }\n\n lines.push(\"\")\n}\n","import type { DeclarationReflection } from \"typedoc\"\n\nimport { renderComment } from \"./generator-shared\"\n\nexport function appendReflectionCommentTags(\n lines: string[],\n reflection: DeclarationReflection\n): void {\n const blockTags = reflection.comment?.blockTags ?? []\n\n appendTagExamples(lines, blockTags)\n appendTagDeprecated(lines, blockTags)\n appendTagSeeAlso(lines, blockTags)\n}\n\nfunction appendTagExamples(\n lines: string[],\n blockTags: NonNullable<DeclarationReflection[\"comment\"]>[\"blockTags\"]\n): void {\n const examples = blockTags.filter((tag) => tag.tag === \"@example\")\n if (examples.length === 0) {\n return\n }\n\n lines.push(\"## Examples\")\n lines.push(\"\")\n\n for (const example of examples) {\n lines.push(renderComment(example.content))\n lines.push(\"\")\n }\n}\n\nfunction appendTagDeprecated(\n lines: string[],\n blockTags: NonNullable<DeclarationReflection[\"comment\"]>[\"blockTags\"]\n): void {\n const deprecatedTag = blockTags.find((tag) => tag.tag === \"@deprecated\")\n if (deprecatedTag == null) {\n return\n }\n\n lines.push('<Warning title=\"Deprecated\">')\n lines.push(renderComment(deprecatedTag.content))\n lines.push(\"</Warning>\")\n lines.push(\"\")\n}\n\nfunction appendTagSeeAlso(\n lines: string[],\n blockTags: NonNullable<DeclarationReflection[\"comment\"]>[\"blockTags\"]\n): void {\n const seeTags = blockTags.filter((tag) => tag.tag === \"@see\")\n if (seeTags.length === 0) {\n return\n }\n\n lines.push(\"## See Also\")\n lines.push(\"\")\n for (const seeTag of seeTags) {\n lines.push(`- ${renderComment(seeTag.content)}`)\n }\n lines.push(\"\")\n}\n","import { type DeclarationReflection, ReflectionKind } from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\nimport type { GeneratedApiDoc } from \"./types\"\n\nimport { appendReflectionCommentTags } from \"./generator-reflection-tags\"\nimport {\n renderHierarchy,\n renderMethod,\n renderProperty,\n renderSignature,\n renderTypeParameters,\n} from \"./generator-render\"\nimport {\n createBreadcrumbs,\n createNavigationLine,\n getGroupUrlPrefix,\n getKindName,\n getSlug,\n getSourceUrl,\n type ReflectionNavigation,\n renderComment,\n renderCommentShort,\n} from \"./generator-shared\"\n\nexport function generateReflectionDocs(params: {\n context: TypeDocRuntimeContext\n navigation: ReflectionNavigation\n parentPath: string\n reflection: DeclarationReflection\n}): GeneratedApiDoc[] {\n const { context, navigation, parentPath, reflection } = params\n const pagePath = getReflectionPagePath(reflection, parentPath)\n const docs: GeneratedApiDoc[] = [\n generateReflectionPage({ context, navigation, pagePath, reflection }),\n ]\n const childRefs = reflection.children ?? []\n for (const child of childRefs) {\n if (hasOwnPage(child.kind)) {\n docs.push(\n ...generateReflectionDocs({\n context,\n navigation: { next: null, prev: null },\n parentPath: pagePath,\n reflection: child,\n })\n )\n }\n }\n return docs\n}\nfunction getReflectionPagePath(reflection: DeclarationReflection, parentPath: string): string {\n const slug = getSlug(reflection.name)\n if (parentPath.length > 0) {\n return `${parentPath}/${slug}`\n }\n const prefix = getGroupUrlPrefix(reflection.kind)\n return prefix.length === 0 ? slug : `${prefix}/${slug}`\n}\nfunction hasOwnPage(kind: ReflectionKind): boolean {\n return [\n ReflectionKind.Class,\n ReflectionKind.Enum,\n ReflectionKind.Interface,\n ReflectionKind.Module,\n ReflectionKind.Namespace,\n ].includes(kind)\n}\nexport function generateReflectionPage(params: {\n context: TypeDocRuntimeContext\n navigation: ReflectionNavigation\n pagePath: string\n reflection: DeclarationReflection\n}): GeneratedApiDoc {\n const { context, navigation, pagePath, reflection } = params\n const lines: string[] = []\n appendReflectionSections({\n context,\n lines,\n navigation,\n pagePath,\n reflection,\n })\n return {\n content: lines.join(\"\\n\"),\n frontmatter: {\n description:\n reflection.comment?.summary == null\n ? `${getKindName(reflection.kind)} ${reflection.name}`\n : renderCommentShort(reflection.comment.summary),\n title: reflection.name,\n },\n path: `${pagePath}.md`,\n }\n}\nfunction appendReflectionSections(params: {\n context: TypeDocRuntimeContext\n lines: string[]\n navigation: ReflectionNavigation\n pagePath: string\n reflection: DeclarationReflection\n}): void {\n const { context, lines, navigation, pagePath, reflection } = params\n appendBreadcrumbs(lines, context, pagePath)\n appendTitle(lines, reflection)\n appendDescription(lines, reflection)\n appendTypeParameters(lines, reflection)\n appendHierarchy(lines, context, reflection)\n appendSignatures(lines, context, reflection)\n appendProperties(lines, reflection)\n appendMethods(lines, context, reflection)\n appendEnumMembers(lines, reflection)\n appendTypeAlias(lines, reflection)\n appendSourceSection(lines, context, reflection)\n appendReflectionCommentTags(lines, reflection)\n appendNavigation({ context, lines, navigation, reflection })\n}\nfunction appendBreadcrumbs(\n lines: string[],\n context: TypeDocRuntimeContext,\n pagePath: string\n): void {\n if (!context.config.markdown.breadcrumbs) {\n return\n }\n lines.push(createBreadcrumbs(context.basePath, pagePath))\n lines.push(\"\")\n}\nfunction appendTitle(lines: string[], reflection: DeclarationReflection): void {\n const kind = getKindName(reflection.kind)\n lines.push(`# ${kind}: ${reflection.name}`)\n lines.push(\"\")\n}\nfunction appendDescription(lines: string[], reflection: DeclarationReflection): void {\n const summary = reflection.comment?.summary\n if (summary == null) {\n return\n }\n lines.push(renderComment(summary))\n lines.push(\"\")\n}\nfunction appendTypeParameters(lines: string[], reflection: DeclarationReflection): void {\n const typeParameters = reflection.typeParameters ?? []\n if (typeParameters.length === 0) {\n return\n }\n lines.push(\"## Type Parameters\")\n lines.push(\"\")\n lines.push(renderTypeParameters(typeParameters))\n lines.push(\"\")\n}\nfunction appendHierarchy(\n lines: string[],\n context: TypeDocRuntimeContext,\n reflection: DeclarationReflection\n): void {\n if (!context.config.markdown.hierarchy) {\n return\n }\n const hierarchy = renderHierarchy(reflection)\n if (hierarchy == null) {\n return\n }\n lines.push(\"## Hierarchy\")\n lines.push(\"\")\n lines.push(hierarchy)\n lines.push(\"\")\n}\nfunction appendSignatures(\n lines: string[],\n context: TypeDocRuntimeContext,\n reflection: DeclarationReflection\n): void {\n const signatures = reflection.signatures ?? []\n if (signatures.length === 0) {\n return\n }\n lines.push(\"## Signature\")\n lines.push(\"\")\n for (const signature of signatures) {\n lines.push(renderSignature(context, signature))\n lines.push(\"\")\n }\n}\nfunction appendProperties(lines: string[], reflection: DeclarationReflection): void {\n const children = reflection.children ?? []\n const properties = children.filter((child) => child.kind === ReflectionKind.Property)\n if (properties.length === 0) {\n return\n }\n lines.push(\"## Properties\")\n lines.push(\"\")\n for (const property of properties) {\n lines.push(renderProperty(property))\n lines.push(\"\")\n }\n}\nfunction appendMethods(\n lines: string[],\n context: TypeDocRuntimeContext,\n reflection: DeclarationReflection\n): void {\n const children = reflection.children ?? []\n const methods = children.filter((child) => child.kind === ReflectionKind.Method)\n if (methods.length === 0) {\n return\n }\n lines.push(\"## Methods\")\n lines.push(\"\")\n for (const method of methods) {\n lines.push(renderMethod(context, method))\n lines.push(\"\")\n }\n}\nfunction appendEnumMembers(lines: string[], reflection: DeclarationReflection): void {\n const children = reflection.children ?? []\n const enumMembers = children.filter((child) => child.kind === ReflectionKind.EnumMember)\n if (enumMembers.length === 0) {\n return\n }\n lines.push(\"## Members\")\n lines.push(\"\")\n lines.push(\"| Member | Value | Description |\")\n lines.push(\"|--------|-------|-------------|\")\n for (const member of enumMembers) {\n const value = member.defaultValue ?? \"\"\n const summary = member.comment?.summary\n const description = summary == null ? \"\" : renderCommentShort(summary)\n lines.push(`| \\`${member.name}\\` | \\`${value}\\` | ${description} |`)\n }\n lines.push(\"\")\n}\nfunction appendTypeAlias(lines: string[], reflection: DeclarationReflection): void {\n if (reflection.kind !== ReflectionKind.TypeAlias || reflection.type == null) {\n return\n }\n lines.push(\"## Type\")\n lines.push(\"\")\n lines.push(\"```typescript\")\n lines.push(`type ${reflection.name} = ${reflection.type.toString()}`)\n lines.push(\"```\")\n lines.push(\"\")\n}\nfunction appendSourceSection(\n lines: string[],\n context: TypeDocRuntimeContext,\n reflection: DeclarationReflection\n): void {\n if (!context.config.markdown.sourceLinks) {\n return\n }\n const source = reflection.sources?.[0]\n if (source == null) {\n return\n }\n lines.push(\"## Source\")\n lines.push(\"\")\n const sourceUrl = getSourceUrl(\n context.config.markdown.sourceBaseUrl,\n source.fileName,\n source.line\n )\n if (sourceUrl == null) {\n lines.push(`${source.fileName}:${source.line}`)\n } else {\n lines.push(`[${source.fileName}:${source.line}](${sourceUrl})`)\n }\n lines.push(\"\")\n}\nfunction appendNavigation(params: {\n context: TypeDocRuntimeContext\n lines: string[]\n navigation: ReflectionNavigation\n reflection: DeclarationReflection\n}): void {\n const { context, lines, navigation, reflection } = params\n const line = createNavigationLine({\n basePath: context.basePath,\n kind: reflection.kind,\n navigation,\n })\n if (line == null) {\n return\n }\n lines.push(\"---\")\n lines.push(\"\")\n lines.push(line)\n lines.push(\"\")\n}\n","import type { DeclarationReflection, ReflectionKind } from \"typedoc\"\n\nimport type { TypeDocRuntimeContext } from \"./generator-config\"\nimport type { GeneratedApiDoc } from \"./types\"\n\nimport { generateCategoryIndexPages } from \"./generator-pages-categories\"\nimport { generateComponentPage } from \"./generator-pages-components\"\nimport { generateGroupedFunctionsPage, generateGroupedTypesPage } from \"./generator-pages-grouped\"\nimport { generateIndexPage } from \"./generator-pages-index\"\nimport { generateReflectionDocs } from \"./generator-reflection\"\nimport {\n groupProjectChildren,\n isReactComponent,\n type ReflectionNavigation,\n sortReflectionsByName,\n} from \"./generator-shared\"\n\nexport function generateMarkdownDocs(context: TypeDocRuntimeContext): GeneratedApiDoc[] {\n const grouped = groupProjectChildren(context.project, isReactComponent)\n const docs: GeneratedApiDoc[] = [generateIndexPage(context, grouped)]\n\n addGroupedFunctionPages(context, docs, grouped.functionsByFile)\n addGroupedTypePages(context, docs, grouped.typesByFile)\n addComponentPages(context, docs, grouped.componentItems)\n addStandalonePages(context, docs, grouped.standaloneItems)\n\n docs.push(...generateCategoryIndexPages(context, grouped))\n return docs\n}\n\nfunction addGroupedFunctionPages(\n context: TypeDocRuntimeContext,\n docs: GeneratedApiDoc[],\n functionsByFile: Map<string, DeclarationReflection[]>\n): void {\n for (const [sourceFile, functions] of functionsByFile) {\n docs.push(generateGroupedFunctionsPage({ context, functions, sourceFile }))\n }\n}\n\nfunction addGroupedTypePages(\n context: TypeDocRuntimeContext,\n docs: GeneratedApiDoc[],\n typesByFile: Map<string, DeclarationReflection[]>\n): void {\n for (const [sourceFile, types] of typesByFile) {\n docs.push(generateGroupedTypesPage({ context, sourceFile, types }))\n }\n}\n\nfunction addComponentPages(\n context: TypeDocRuntimeContext,\n docs: GeneratedApiDoc[],\n componentItems: DeclarationReflection[]\n): void {\n const sorted = sortReflectionsByName(componentItems)\n for (const [index, component] of sorted.entries()) {\n docs.push(\n generateComponentPage({ component, context, navigation: getNavigation(sorted, index) })\n )\n }\n}\n\nfunction addStandalonePages(\n context: TypeDocRuntimeContext,\n docs: GeneratedApiDoc[],\n standaloneItems: DeclarationReflection[]\n): void {\n const itemsByKind = groupStandaloneByKind(standaloneItems)\n\n for (const items of itemsByKind.values()) {\n const sorted = sortReflectionsByName(items)\n for (const [index, reflection] of sorted.entries()) {\n docs.push(\n ...generateReflectionDocs({\n context,\n navigation: getNavigation(sorted, index),\n parentPath: \"\",\n reflection,\n })\n )\n }\n }\n}\n\nfunction groupStandaloneByKind(\n standaloneItems: DeclarationReflection[]\n): Map<ReflectionKind, DeclarationReflection[]> {\n const itemsByKind = new Map<ReflectionKind, DeclarationReflection[]>()\n\n for (const item of standaloneItems) {\n const existing = itemsByKind.get(item.kind) ?? []\n existing.push(item)\n itemsByKind.set(item.kind, existing)\n }\n\n return itemsByKind\n}\n\nfunction getNavigation(sortedItems: DeclarationReflection[], index: number): ReflectionNavigation {\n return {\n next: index < sortedItems.length - 1 ? sortedItems[index + 1] : null,\n prev: index > 0 ? sortedItems[index - 1] : null,\n }\n}\n","import fs from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { readPackageUp } from \"read-package-up\"\nimport { Application, TSConfigReader, TypeDocReader } from \"typedoc\"\n\nimport type { GeneratedApiDoc, TypeDocConfig } from \"./types\"\n\nimport {\n getTypedocOptions,\n type ResolvedTypeDocConfig,\n resolveTypeDocConfig,\n type TypeDocRuntimeContext,\n} from \"./generator-config\"\nimport { generateMarkdownDocs } from \"./generator-docs\"\n\nexport class TypeDocGenerator {\n private readonly basePath: string\n private readonly config: ResolvedTypeDocConfig\n private readonly packageNameCache = new Map<string, string | undefined>()\n\n constructor(config: TypeDocConfig) {\n this.config = resolveTypeDocConfig(config)\n this.basePath = `/${this.config.out}`\n }\n\n async generate(outputDir: string): Promise<GeneratedApiDoc[]> {\n await this.populatePackageNameCache()\n\n const app = await Application.bootstrapWithPlugins(getTypedocOptions(this.config), [\n new TSConfigReader(),\n new TypeDocReader(),\n ])\n\n const project = await app.convert()\n if (project == null) {\n throw new Error(\"TypeDoc conversion failed\")\n }\n\n const context: TypeDocRuntimeContext = {\n basePath: this.basePath,\n config: this.config,\n packageNameCache: this.packageNameCache,\n project,\n }\n\n const docs = generateMarkdownDocs(context)\n await this.writeDocs(outputDir, docs)\n return docs\n }\n\n private async populatePackageNameCache(): Promise<void> {\n for (const entryPoint of this.config.entryPoints) {\n await this.resolvePackageName(entryPoint)\n }\n }\n\n private async resolvePackageName(filePath: string): Promise<string | undefined> {\n const directory = path.dirname(path.resolve(filePath))\n\n if (this.packageNameCache.has(directory)) {\n return this.packageNameCache.get(directory)\n }\n\n const packageResult = await readPackageUp({ cwd: directory })\n const packageName = packageResult?.packageJson.name\n const resolvedName =\n packageName == null || packageName.length === 0\n ? undefined\n : packageName.replace(/^@[^/]+\\//u, \"\")\n\n this.packageNameCache.set(directory, resolvedName)\n return resolvedName\n }\n\n private async writeDocs(outputDir: string, docs: GeneratedApiDoc[]): Promise<void> {\n const apiDirectory = path.join(outputDir, this.config.out)\n await fs.rm(apiDirectory, { force: true, recursive: true })\n await fs.mkdir(apiDirectory, { recursive: true })\n\n for (const doc of docs) {\n await this.writeSingleDoc(apiDirectory, doc)\n }\n }\n\n private async writeSingleDoc(apiDirectory: string, doc: GeneratedApiDoc): Promise<void> {\n const filePath = path.join(apiDirectory, doc.path)\n await fs.mkdir(path.dirname(filePath), { recursive: true })\n\n const frontmatter = createFrontmatter(doc)\n await fs.writeFile(filePath, `${frontmatter}${doc.content}`)\n }\n}\n\nfunction createFrontmatter(doc: GeneratedApiDoc): string {\n const lines: string[] = [\"---\", `title: ${doc.frontmatter.title}`]\n\n if (doc.frontmatter.description != null && doc.frontmatter.description.length > 0) {\n lines.push(`description: ${doc.frontmatter.description}`)\n }\n\n if (doc.frontmatter.sidebar_position != null) {\n lines.push(`sidebar_position: ${doc.frontmatter.sidebar_position}`)\n }\n\n if (doc.frontmatter.sidebar === false) {\n lines.push(\"sidebar: false\")\n }\n\n lines.push(\"---\", \"\")\n return `${lines.join(\"\\n\")}\\n`\n}\n\nexport async function generateApiDocs(\n config: TypeDocConfig,\n outputDir: string\n): Promise<GeneratedApiDoc[]> {\n const generator = new TypeDocGenerator(config)\n return generator.generate(outputDir)\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BNKprp9_.d.ts","names":[],"sources":["../src/runtime/hooks.tsx","../src/runtime/sidebar-utils.ts"],"mappings":";;;;;;KAIK,gBAAA;EACH,MAAA,EAAQ,UAAA;EACR,OAAA,EAAS,WAAA;EACT,WAAA,GAAc,QAAA;AAAA;AAAA,cAGV,WAAA,EAAW,OAAA,CAAA,OAAA,CAAA,gBAAA;AAAA,iBAED,cAAA,CAAA,GAAkB,gBAAA;AAAA,iBAQlB,aAAA,CAAA,GAAiB,UAAA;AAAA,iBAKjB,cAAA,CAAA,GAAkB,WAAA;AAAA,iBAKlB,eAAA,CAAA,GAAmB,QAAA;AAAA,iBAKnB,UAAA,CAAA,GAAc,OAAA;AAAA,KAKzB,iBAAA;EACH,MAAA,EAAQ,UAAA;EACR,OAAA,EAAS,WAAA;EACT,WAAA,GAAc,QAAA;EACd,QAAA,EAAU,SAAA;AAAA;AAAA,iBAGI,YAAA,CAAA;EAAe,MAAA;EAAQ,OAAA;EAAS,WAAA;EAAa;AAAA,GAAY,iBAAA,GAAiB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KAerF,yBAAA;EACH,WAAA,EAAa,QAAA;EACb,GAAA,EAAK,OAAA;EACL,QAAA,EAAU,SAAA;AAAA;AAAA,iBAGI,oBAAA,CAAA;EAAuB,WAAA;EAAa,GAAA;EAAK;AAAA,GAAY,yBAAA,GAAyB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KA0BlF,cAAA;EACV,QAAA;IAAa,OAAA;IAAiB,IAAA;EAAA;EAC9B,WAAA;IAAgB,OAAA;IAAmB,IAAA;IAAe,aAAA,GAAgB,IAAA,CAAK,qBAAA;EAAA;EACvE,QAAA;AAAA;AAAA,iBAKc,iBAAA,CAAA,GAAqB,cAAA;AAAA,KAIhC,2BAAA;EACH,KAAA,EAAO,cAAA;EACP,QAAA,EAAU,SAAA;AAAA;AAAA,iBAGI,sBAAA,CAAA;EAAyB,KAAA;EAAO;AAAA,GAAY,2BAAA,GAA2B,oBAAA,CAAA,GAAA,CAAA,OAAA;;;;;;;iBCzGvE,sBAAA,CACd,OAAA,EAAS,WAAA,IACT,WAAA,WACC,WAAA;ADP8E;;;;AAAA,iBC4BjE,gBAAA,CACd,OAAA,EAAS,WAAA,IACT,WAAA;EACG,IAAA,GAAO,WAAA;EAAa,IAAA,GAAO,WAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CWfXolzQ.d.ts","names":[],"sources":["../src/ui/Footer.tsx","../src/ui/Header.tsx","../src/ui/Sidebar.tsx","../src/ui/ArdoRoot.tsx","../src/ui/BareContent.tsx","../src/ui/components/CodeBlock.tsx","../src/ui/components/Container.tsx","../src/ui/components/CopyButton.tsx","../src/ui/components/Features.tsx","../src/ui/components/Hero.tsx","../src/ui/components/Icon.tsx","../src/ui/components/Search.tsx","../src/ui/components/Steps.tsx","../src/ui/components/Tabs.tsx","../src/ui/components/ThemeToggle.tsx","../src/ui/Content.tsx","../src/ui/DocPage.tsx","../src/ui/HomePage.tsx","../src/ui/Layout.tsx","../src/ui/Nav.tsx","../src/ui/Toc.tsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-utils-1Skqle1Q.js","names":[],"sources":["../src/runtime/hooks.tsx","../src/runtime/sidebar-utils.ts"],"sourcesContent":["import { createContext, type ReactNode, use, useMemo } from \"react\"\n\nimport type { ArdoConfig, PageData, SidebarItem, TOCItem } from \"../config/types\"\n\ntype ArdoContextValue = {\n config: ArdoConfig\n sidebar: SidebarItem[]\n currentPage?: PageData\n}\n\nconst ArdoContext = createContext<ArdoContextValue | null>(null)\n\nexport function useArdoContext(): ArdoContextValue {\n const context = use(ArdoContext)\n if (!context) {\n throw new Error(\"useArdoContext must be used within an ArdoProvider\")\n }\n return context\n}\n\nexport function useArdoConfig(): ArdoConfig {\n const { config } = useArdoContext()\n return config\n}\n\nexport function useArdoSidebar(): SidebarItem[] {\n const { sidebar } = useArdoContext()\n return sidebar\n}\n\nexport function useArdoPageData(): PageData | undefined {\n const { currentPage } = useArdoContext()\n return currentPage\n}\n\nexport function useArdoTOC(): TOCItem[] {\n const { currentPage } = useArdoContext()\n return currentPage?.toc ?? []\n}\n\ntype ArdoProviderProps = {\n config: ArdoConfig\n sidebar: SidebarItem[]\n currentPage?: PageData\n children: ReactNode\n}\n\nexport function ArdoProvider({ config, sidebar, currentPage, children }: ArdoProviderProps) {\n const contextValue = useMemo(\n () => ({ config, sidebar, currentPage }),\n [config, currentPage, sidebar]\n )\n return <ArdoContext value={contextValue}>{children}</ArdoContext>\n}\n\nexport { ArdoContext }\n\n// =============================================================================\n// ArdoPageDataProvider — injects page-level data (frontmatter, toc) into context\n// Used by the Vite transform to wrap MDX default exports.\n// =============================================================================\n\ntype ArdoPageDataProviderProps = {\n frontmatter: PageData[\"frontmatter\"]\n toc: TOCItem[]\n children: ReactNode\n}\n\nexport function ArdoPageDataProvider({ frontmatter, toc, children }: ArdoPageDataProviderProps) {\n const parent = use(ArdoContext)\n const pageData: PageData = useMemo(\n () => ({\n title: typeof frontmatter.title === \"string\" ? frontmatter.title : \"\",\n frontmatter,\n toc,\n content: \"\",\n filePath: \"\",\n relativePath: \"\",\n }),\n [frontmatter, toc]\n )\n const value = useMemo(\n () => (parent ? { ...parent, currentPage: pageData } : null),\n [parent, pageData]\n )\n\n if (!value) return <>{children}</>\n return <ArdoContext value={value}>{children}</ArdoContext>\n}\n\n// =============================================================================\n// ArdoSiteConfig — cross-cutting content settings (editLink, lastUpdated, TOC)\n// =============================================================================\n\nexport type ArdoSiteConfig = {\n editLink?: { pattern: string; text?: string }\n lastUpdated?: { enabled?: boolean; text?: string; formatOptions?: Intl.DateTimeFormatOptions }\n tocLabel?: string\n}\n\nconst ArdoSiteConfigContext = createContext<ArdoSiteConfig>({})\n\nexport function useArdoSiteConfig(): ArdoSiteConfig {\n return use(ArdoSiteConfigContext)\n}\n\ntype ArdoSiteConfigProviderProps = {\n value: ArdoSiteConfig\n children: ReactNode\n}\n\nexport function ArdoSiteConfigProvider({ value, children }: ArdoSiteConfigProviderProps) {\n return <ArdoSiteConfigContext value={value}>{children}</ArdoSiteConfigContext>\n}\n","import type { SidebarItem } from \"../config/types\"\n\n/**\n * Find the current sidebar item based on the current path.\n * This is client-safe and does not use any Node.js modules.\n */\nexport function findCurrentSidebarItem(\n sidebar: SidebarItem[],\n currentPath: string\n): SidebarItem | undefined {\n for (const item of sidebar) {\n if (item.link === currentPath) {\n return item\n }\n\n if (item.items) {\n const found = findCurrentSidebarItem(item.items, currentPath)\n if (found) {\n return found\n }\n }\n }\n\n return undefined\n}\n\n/**\n * Get the previous and next sidebar items for navigation.\n * This is client-safe and does not use any Node.js modules.\n */\nexport function getPrevNextLinks(\n sidebar: SidebarItem[],\n currentPath: string\n): { prev?: SidebarItem; next?: SidebarItem } {\n const flatItems = flattenSidebar(sidebar)\n const currentIndex = flatItems.findIndex((item) => item.link === currentPath)\n\n if (currentIndex === -1) {\n return {}\n }\n\n const prev = currentIndex > 0 ? flatItems[currentIndex - 1] : undefined\n const next = currentIndex < flatItems.length - 1 ? flatItems[currentIndex + 1] : undefined\n\n return { prev, next }\n}\n\nfunction flattenSidebar(sidebar: SidebarItem[]): SidebarItem[] {\n const result: SidebarItem[] = []\n\n for (const item of sidebar) {\n if ((item.link ?? \"\") !== \"\") {\n result.push(item)\n }\n\n if (item.items) {\n result.push(...flattenSidebar(item.items))\n }\n }\n\n return result\n}\n"],"mappings":";;;AAUA,MAAM,cAAc,cAAuC,KAAK;AAEhE,SAAgB,iBAAmC;CACjD,MAAM,UAAU,IAAI,YAAY;CAChC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,qDAAqD;CAEvE,OAAO;;AAGT,SAAgB,gBAA4B;CAC1C,MAAM,EAAE,WAAW,gBAAgB;CACnC,OAAO;;AAGT,SAAgB,iBAAgC;CAC9C,MAAM,EAAE,YAAY,gBAAgB;CACpC,OAAO;;AAGT,SAAgB,kBAAwC;CACtD,MAAM,EAAE,gBAAgB,gBAAgB;CACxC,OAAO;;AAGT,SAAgB,aAAwB;CACtC,MAAM,EAAE,gBAAgB,gBAAgB;CACxC,OAAO,aAAa,OAAO,EAAE;;AAU/B,SAAgB,aAAa,EAAE,QAAQ,SAAS,aAAa,YAA+B;CAK1F,OAAO,oBAAC,aAAD;EAAa,OAJC,eACZ;GAAE;GAAQ;GAAS;GAAa,GACvC;GAAC;GAAQ;GAAa;GAAQ,CAEO;EAAG;EAAuB,CAAA;;AAgBnE,SAAgB,qBAAqB,EAAE,aAAa,KAAK,YAAuC;CAC9F,MAAM,SAAS,IAAI,YAAY;CAC/B,MAAM,WAAqB,eAClB;EACL,OAAO,OAAO,YAAY,UAAU,WAAW,YAAY,QAAQ;EACnE;EACA;EACA,SAAS;EACT,UAAU;EACV,cAAc;EACf,GACD,CAAC,aAAa,IAAI,CACnB;CACD,MAAM,QAAQ,cACL,SAAS;EAAE,GAAG;EAAQ,aAAa;EAAU,GAAG,MACvD,CAAC,QAAQ,SAAS,CACnB;CAED,IAAI,CAAC,OAAO,OAAO,oBAAA,UAAA,EAAG,UAAY,CAAA;CAClC,OAAO,oBAAC,aAAD;EAAoB;EAAQ;EAAuB,CAAA;;AAa5D,MAAM,wBAAwB,cAA8B,EAAE,CAAC;AAE/D,SAAgB,oBAAoC;CAClD,OAAO,IAAI,sBAAsB;;AAQnC,SAAgB,uBAAuB,EAAE,OAAO,YAAyC;CACvF,OAAO,oBAAC,uBAAD;EAA8B;EAAQ;EAAiC,CAAA;;;;;;;;AC1GhF,SAAgB,uBACd,SACA,aACyB;CACzB,KAAK,MAAM,QAAQ,SAAS;EAC1B,IAAI,KAAK,SAAS,aAChB,OAAO;EAGT,IAAI,KAAK,OAAO;GACd,MAAM,QAAQ,uBAAuB,KAAK,OAAO,YAAY;GAC7D,IAAI,OACF,OAAO;;;;;;;;AAYf,SAAgB,iBACd,SACA,aAC4C;CAC5C,MAAM,YAAY,eAAe,QAAQ;CACzC,MAAM,eAAe,UAAU,WAAW,SAAS,KAAK,SAAS,YAAY;CAE7E,IAAI,iBAAiB,IACnB,OAAO,EAAE;CAMX,OAAO;EAAE,MAHI,eAAe,IAAI,UAAU,eAAe,KAAK,KAAA;EAG/C,MAFF,eAAe,UAAU,SAAS,IAAI,UAAU,eAAe,KAAK,KAAA;EAE5D;;AAGvB,SAAS,eAAe,SAAuC;CAC7D,MAAM,SAAwB,EAAE;CAEhC,KAAK,MAAM,QAAQ,SAAS;EAC1B,KAAK,KAAK,QAAQ,QAAQ,IACxB,OAAO,KAAK,KAAK;EAGnB,IAAI,KAAK,OACP,OAAO,KAAK,GAAG,eAAe,KAAK,MAAM,CAAC;;CAI9C,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-Do3OQY8G.d.ts","names":[],"sources":["../src/config/types.ts"],"mappings":";;;;KAOY,WAAA;EACV,IAAA;EACA,IAAA;EACA,IAAA;EACA,SAAA;EACA,KAAA,GAAQ,WAAA;AAAA;AAAA,KAGE,aAAA;EALV,2EAOA,YAAA;AAAA;AAAA,KAOU,OAAA;EACV,IAAA;EACA,IAAA;EACA,KAAA,GAAQ,OAAA;EACR,WAAA;AAAA;AAAA,KAOU,aAAA;EACV,IAAA;EACA,IAAA;AAAA;AAAA,KAOU,UAAA;EACV,IAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,KAOU,cAAA;EA1BV,gCA4BA,KAAA;IAAU,KAAA,EAAO,YAAA;IAAc,IAAA,EAAM,YAAA;EAAA,IAAiB,YAAA;EAEtD,WAAA,YArBI;EAuBJ,MAAA,YAhBoB;EAkBpB,GAAA;IACE,KAAA;EAAA,GAjBF;EAoBA,aAAA,GAAgB,aAAA,EAnBP;EAqBT,aAAA,GAAgB,aAAA;AAAA;AAAA,KAON,UAAA;EACV,GAAA;EACA,KAAA,GAAQ,MAAA;EACR,QAAA;AAAA;AAAA,KAOU,aAAA;EACV,OAAA;EACA,WAAA;EACA,QAAA;EACA,GAAA;EACA,MAAA;EACA,MAAA;EACA,OAAA;EACA,gBAAA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,IAAA,GAAO,KAAA;EAQP,aAAA;EACA,UAAA;EACA,KAAA;EACA,OAAA;IACE,KAAA;IACA,QAAA;IACA,SAAA;EAAA;EAEF,QAAA;IACE,WAAA;IACA,SAAA;IACA,WAAA;IACA,aAAA;IACA,UAAA;EAAA;AAAA;AAAA,KAQQ,WAAA;EAzCA,qCA2CV,IAAA;EAEA,QAAA,WA5CA;EA8CA,UAAA,WA5CA;EA8CA,OAAA,WA5CA;EA8CA,MAAA,WA5CA;EA8CA,OAAA;AAAA;;;;;;;KAaU,UAAA;EA3CV,8CA6CA,KAAA,UA3CE;EA6CF,WAAA,WA1CA;EA4CA,cAAA,WA1CE;EA4CF,IAAA,WA1CE;EA4CF,MAAA,WA3CY;EA6CZ,MAAA,WArCU;EAuCV,IAAA;EAEA,IAAA,GAAO,UAAA,IAvCP;EAyCA,QAAA,GAAW,cAAA,EArCX;EAuCA,OAAA,GAAU,aAAA;EAnCV;;;;AAeF;EA0BE,OAAA,UAAiB,aAAA;EAEjB,IAAA,GAAO,MAAA;EAVI;;;;EAeX,OAAA,GAAU,WAAA,EAAW;EAErB,SAAA,WAjCA;EAmCA,SAAA;AAAA;AAAA,KAOU,eAAA;EACV,KAAA;EACA,WAAA;EACA,KAAA;EACA,SAAA;EACA,MAAA;EACA,OAAA;EACA,OAAA;EACA,QAAA;EACA,WAAA;EACA,IAAA;IAAS,IAAA;IAAc,IAAA;EAAA;EACvB,IAAA;IAAS,IAAA;IAAc,IAAA;EAAA;EACvB,IAAA;IACE,IAAA;IACA,IAAA;IACA,OAAA;IACA,KAAA;MAAU,KAAA;MAAe,IAAA;IAAA;IACzB,OAAA,GAAU,KAAA;MACR,IAAA;MACA,IAAA;MACA,KAAA;IAAA;EAAA;EAGJ,QAAA,GAAW,KAAA;IACT,IAAA;IACA,KAAA;IACA,OAAA;IACA,IAAA;IACA,QAAA;EAAA;AAAA,IAEA,MAAA;AAAA,KAEQ,OAAA;EACV,EAAA;EACA,IAAA;EACA,KAAA;EACA,QAAA,GAAW,OAAA;AAAA;AAAA,KAGD,QAAA;EACV,KAAA;EACA,WAAA;EACA,WAAA,EAAa,eAAA;EACb,OAAA;EACA,GAAA,EAAK,OAAA;EACL,WAAA;EACA,QAAA;EACA,YAAA;AAAA;AAAA,KAOU,cAAA;EACV,OAAA,EAAS,WAAA;EACT,IAAA,GAAO,MAAA;EACP,OAAA,GAAU,aAAA;EACV,IAAA;EACA,UAAA;AAAA,IACE,QAAA,CAAS,IAAA,CAAK,UAAA"}
|