ardo 3.0.3 → 3.0.4

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/index.d.ts CHANGED
@@ -1,11 +1,8 @@
1
1
  export { defineConfig, loadConfig, resolveConfig } from './config/index.js';
2
- export { ArdoPluginOptions, ardo as ardoPlugin, generateSidebar, getPageDataForRoute, getSlugFromPath, loadAllDocs, loadDoc, transformMarkdown, transformMarkdownToReact } from './vite/index.js';
3
- export { A as ArdoConfig, H as HeadConfig, M as MarkdownConfig, N as NavItem, P as PageData, a as PageFrontmatter, b as ProjectMeta, R as ResolvedConfig, S as SidebarItem, c as SocialLink, T as TOCItem, d as ThemeConfig, e as TypeDocConfig } from './types-CLkHwCch.js';
4
2
  export { ArdoProvider, findCurrentSidebarItem, getPrevNextLinks, useArdoContext, useConfig, usePageData, useSidebar, useTOC, useThemeConfig } from './runtime/index.js';
5
3
  export { C as CodeBlock, a as CodeBlockProps, b as CodeGroup, c as CodeGroupProps, d as Container, e as ContainerProps, f as ContainerType, g as Content, h as CopyButton, D as Danger, i as DangerProps, j as DocLayout, k as DocPage, F as FeatureCard, l as FeatureCardProps, m as FeatureItem, n as Features, o as FeaturesProps, p as FileTree, q as FileTreeProps, r as Footer, H as Header, s as Hero, t as HeroAction, u as HeroImage, v as HeroProps, w as HomePage, I as Info, x as InfoProps, L as Layout, N as Note, y as NoteProps, S as Search, z as Sidebar, A as Steps, B as StepsProps, T as TOC, E as Tab, G as TabList, J as TabListProps, K as TabPanel, M as TabPanelProps, O as TabPanels, P as TabPanelsProps, Q as TabProps, R as Tabs, U as TabsProps, V as ThemeToggle, W as Tip, X as TipProps, Y as Warning, Z as WarningProps } from './FileTree-K0YVFXhg.js';
6
- export { ApiDocHierarchy, ApiDocItem, ApiDocKind, ApiDocParameter, ApiDocReturn, ApiDocSource, ApiDocTag, ApiDocTypeParameter, ApiHierarchy, ApiItem, ApiKindBadge, ApiParametersTable, ApiReturns, ApiSignature, GeneratedApiDoc, TypeDocGenerator, TypeDocPluginOptions, createTypedocWatcher, generateApiDocs, typedocPlugin } from './typedoc/index.js';
7
- import 'vite';
8
- import 'shiki';
4
+ export { A as ArdoConfig, H as HeadConfig, M as MarkdownConfig, N as NavItem, P as PageData, a as PageFrontmatter, b as ProjectMeta, R as ResolvedConfig, S as SidebarItem, c as SocialLink, T as TOCItem, d as ThemeConfig, e as TypeDocConfig } from './types-CLkHwCch.js';
9
5
  import 'react/jsx-runtime';
10
6
  import 'react';
11
7
  import 'react-router';
8
+ import 'shiki';
package/dist/index.js CHANGED
@@ -1,13 +1,3 @@
1
- import {
2
- ardoPlugin,
3
- generateSidebar,
4
- getPageDataForRoute,
5
- getSlugFromPath,
6
- loadAllDocs,
7
- loadDoc,
8
- transformMarkdown,
9
- transformMarkdownToReact
10
- } from "./chunk-TTOK7CO6.js";
11
1
  import {
12
2
  defineConfig,
13
3
  loadConfig,
@@ -33,20 +23,6 @@ import {
33
23
  import {
34
24
  Search
35
25
  } from "./chunk-BHHI2BO4.js";
36
- import {
37
- ApiHierarchy,
38
- ApiItem,
39
- ApiKindBadge,
40
- ApiParametersTable,
41
- ApiReturns,
42
- ApiSignature,
43
- createTypedocWatcher,
44
- typedocPlugin
45
- } from "./chunk-Y46KCHBO.js";
46
- import {
47
- TypeDocGenerator,
48
- generateApiDocs
49
- } from "./chunk-PGHUPTGL.js";
50
26
  import {
51
27
  CodeBlock,
52
28
  CodeGroup,
@@ -79,12 +55,6 @@ import {
79
55
  useThemeConfig
80
56
  } from "./chunk-QELSOHIY.js";
81
57
  export {
82
- ApiHierarchy,
83
- ApiItem,
84
- ApiKindBadge,
85
- ApiParametersTable,
86
- ApiReturns,
87
- ApiSignature,
88
58
  ArdoProvider,
89
59
  CodeBlock,
90
60
  CodeGroup,
@@ -115,24 +85,12 @@ export {
115
85
  Tabs,
116
86
  ThemeToggle,
117
87
  Tip,
118
- TypeDocGenerator,
119
88
  Warning,
120
- ardoPlugin,
121
- createTypedocWatcher,
122
89
  defineConfig,
123
90
  findCurrentSidebarItem,
124
- generateApiDocs,
125
- generateSidebar,
126
- getPageDataForRoute,
127
91
  getPrevNextLinks,
128
- getSlugFromPath,
129
- loadAllDocs,
130
92
  loadConfig,
131
- loadDoc,
132
93
  resolveConfig,
133
- transformMarkdown,
134
- transformMarkdownToReact,
135
- typedocPlugin,
136
94
  useArdoContext,
137
95
  useConfig,
138
96
  usePageData,
@@ -1,17 +1,266 @@
1
- import {
2
- ApiHierarchy,
3
- ApiItem,
4
- ApiKindBadge,
5
- ApiParametersTable,
6
- ApiReturns,
7
- ApiSignature,
8
- createTypedocWatcher,
9
- typedocPlugin
10
- } from "../chunk-Y46KCHBO.js";
11
1
  import {
12
2
  TypeDocGenerator,
13
3
  generateApiDocs
14
4
  } from "../chunk-PGHUPTGL.js";
5
+
6
+ // src/typedoc/vite-plugin.ts
7
+ import path from "path";
8
+ import fsSync from "fs";
9
+ function typedocPlugin(options = {}) {
10
+ const {
11
+ contentDir = "./content",
12
+ runOnBuild,
13
+ runOnStart = true,
14
+ // TypeDoc config with defaults
15
+ enabled = true,
16
+ entryPoints = ["./src/index.ts"],
17
+ out = "api-reference",
18
+ excludePrivate = true,
19
+ excludeInternal = true,
20
+ ...restConfig
21
+ } = options;
22
+ const config = {
23
+ enabled,
24
+ entryPoints,
25
+ out,
26
+ excludePrivate,
27
+ excludeInternal,
28
+ ...restConfig
29
+ };
30
+ let isBuilding = false;
31
+ let hasGenerated = false;
32
+ async function generate() {
33
+ if (!config.enabled) return;
34
+ console.log("[ardo] Generating API documentation with TypeDoc...");
35
+ const startTime = Date.now();
36
+ try {
37
+ const docs = await generateApiDocs(config, contentDir);
38
+ const duration = Date.now() - startTime;
39
+ console.log(`[ardo] Generated ${docs.length} API documentation pages in ${duration}ms`);
40
+ hasGenerated = true;
41
+ } catch (error) {
42
+ console.error("[ardo] TypeDoc generation failed:", error);
43
+ throw error;
44
+ }
45
+ }
46
+ return {
47
+ name: "ardo:typedoc",
48
+ async buildStart() {
49
+ if (runOnStart && !hasGenerated) {
50
+ await generate();
51
+ }
52
+ },
53
+ async buildEnd() {
54
+ if (isBuilding && runOnBuild !== false) {
55
+ await generate();
56
+ }
57
+ },
58
+ configResolved(config2) {
59
+ isBuilding = config2.command === "build";
60
+ },
61
+ async handleHotUpdate({ file }) {
62
+ if (config.watch && config.entryPoints.some((ep) => file.includes(ep))) {
63
+ await generate();
64
+ return [];
65
+ }
66
+ }
67
+ };
68
+ }
69
+ function createTypedocWatcher(config, contentDir, onChange) {
70
+ let watcher = null;
71
+ return {
72
+ async start() {
73
+ if (!config.watch || !config.entryPoints.length) return;
74
+ const entryDir = path.dirname(config.entryPoints[0]);
75
+ try {
76
+ watcher = fsSync.watch(entryDir, { recursive: true }, async (event, filename) => {
77
+ if (filename?.endsWith(".ts") || filename?.endsWith(".tsx")) {
78
+ console.log(`[ardo] Source file changed: ${filename}`);
79
+ await generateApiDocs(config, contentDir);
80
+ onChange?.();
81
+ }
82
+ });
83
+ } catch {
84
+ console.warn("[ardo] Could not start TypeDoc watcher");
85
+ }
86
+ },
87
+ stop() {
88
+ if (watcher) {
89
+ watcher.close();
90
+ watcher = null;
91
+ }
92
+ }
93
+ };
94
+ }
95
+
96
+ // src/typedoc/components/ApiSignature.tsx
97
+ import { jsx, jsxs } from "react/jsx-runtime";
98
+ function ApiSignature({
99
+ name,
100
+ typeParameters,
101
+ parameters,
102
+ returns,
103
+ className = ""
104
+ }) {
105
+ const typeParamsStr = typeParameters?.length ? `<${typeParameters.map((tp) => tp.name).join(", ")}>` : "";
106
+ const paramsStr = parameters?.map((p) => {
107
+ const optional = p.optional ? "?" : "";
108
+ return `${p.name}${optional}: ${p.type}`;
109
+ }).join(", ");
110
+ const returnStr = returns?.type ? `: ${returns.type}` : "";
111
+ return /* @__PURE__ */ jsx("div", { className: `ardo-api-signature ${className}`, children: /* @__PURE__ */ jsx("pre", { className: "ardo-api-signature-code", children: /* @__PURE__ */ jsxs("code", { children: [
112
+ /* @__PURE__ */ jsx("span", { className: "ardo-api-keyword", children: "function" }),
113
+ " ",
114
+ /* @__PURE__ */ jsx("span", { className: "ardo-api-function-name", children: name }),
115
+ typeParamsStr && /* @__PURE__ */ jsx("span", { className: "ardo-api-type-params", children: typeParamsStr }),
116
+ /* @__PURE__ */ jsxs("span", { className: "ardo-api-params", children: [
117
+ "(",
118
+ paramsStr,
119
+ ")"
120
+ ] }),
121
+ returnStr && /* @__PURE__ */ jsx("span", { className: "ardo-api-return-type", children: returnStr })
122
+ ] }) }) });
123
+ }
124
+ function ApiParametersTable({ parameters }) {
125
+ if (!parameters.length) return null;
126
+ return /* @__PURE__ */ jsxs("div", { className: "ardo-api-parameters", children: [
127
+ /* @__PURE__ */ jsx("h4", { className: "ardo-api-section-title", children: "Parameters" }),
128
+ /* @__PURE__ */ jsxs("table", { className: "ardo-api-table", children: [
129
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
130
+ /* @__PURE__ */ jsx("th", { children: "Name" }),
131
+ /* @__PURE__ */ jsx("th", { children: "Type" }),
132
+ /* @__PURE__ */ jsx("th", { children: "Description" })
133
+ ] }) }),
134
+ /* @__PURE__ */ jsx("tbody", { children: parameters.map((param) => /* @__PURE__ */ jsxs("tr", { children: [
135
+ /* @__PURE__ */ jsxs("td", { children: [
136
+ /* @__PURE__ */ jsx("code", { children: param.name }),
137
+ param.optional && /* @__PURE__ */ jsx("span", { className: "ardo-api-optional", children: "(optional)" })
138
+ ] }),
139
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("code", { children: param.type }) }),
140
+ /* @__PURE__ */ jsxs("td", { children: [
141
+ param.description,
142
+ param.defaultValue && /* @__PURE__ */ jsxs("span", { className: "ardo-api-default", children: [
143
+ "Default: ",
144
+ /* @__PURE__ */ jsx("code", { children: param.defaultValue })
145
+ ] })
146
+ ] })
147
+ ] }, param.name)) })
148
+ ] })
149
+ ] });
150
+ }
151
+ function ApiReturns({ returns }) {
152
+ return /* @__PURE__ */ jsxs("div", { className: "ardo-api-returns", children: [
153
+ /* @__PURE__ */ jsx("h4", { className: "ardo-api-section-title", children: "Returns" }),
154
+ /* @__PURE__ */ jsxs("p", { children: [
155
+ /* @__PURE__ */ jsx("code", { children: returns.type }),
156
+ returns.description && /* @__PURE__ */ jsxs("span", { children: [
157
+ " - ",
158
+ returns.description
159
+ ] })
160
+ ] })
161
+ ] });
162
+ }
163
+
164
+ // src/typedoc/components/ApiItem.tsx
165
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
166
+ function ApiItem({ item, level = 2 }) {
167
+ const HeadingTag = `h${Math.min(level, 6)}`;
168
+ return /* @__PURE__ */ jsxs2("div", { className: `ardo-api-item ardo-api-item-${item.kind}`, id: item.id, children: [
169
+ /* @__PURE__ */ jsxs2(HeadingTag, { className: "ardo-api-item-title", children: [
170
+ /* @__PURE__ */ jsx2(ApiKindBadge, { kind: item.kind }),
171
+ /* @__PURE__ */ jsx2("span", { className: "ardo-api-item-name", children: item.name }),
172
+ /* @__PURE__ */ jsx2("a", { href: `#${item.id}`, className: "ardo-api-anchor", children: "#" })
173
+ ] }),
174
+ item.description && /* @__PURE__ */ jsx2("p", { className: "ardo-api-item-description", children: item.description }),
175
+ item.signature && /* @__PURE__ */ jsx2(
176
+ ApiSignature,
177
+ {
178
+ name: item.name,
179
+ typeParameters: item.typeParameters,
180
+ parameters: item.parameters,
181
+ returns: item.returns
182
+ }
183
+ ),
184
+ item.parameters && item.parameters.length > 0 && /* @__PURE__ */ jsx2(ApiParametersTable, { parameters: item.parameters }),
185
+ item.returns && /* @__PURE__ */ jsx2(ApiReturns, { returns: item.returns }),
186
+ item.examples && item.examples.length > 0 && /* @__PURE__ */ jsxs2("div", { className: "ardo-api-examples", children: [
187
+ /* @__PURE__ */ jsx2("h4", { className: "ardo-api-section-title", children: "Examples" }),
188
+ item.examples.map((example, i) => /* @__PURE__ */ jsx2("pre", { className: "ardo-api-example", children: /* @__PURE__ */ jsx2("code", { children: example }) }, i))
189
+ ] }),
190
+ item.source && /* @__PURE__ */ jsx2("div", { className: "ardo-api-source", children: item.source.url ? /* @__PURE__ */ jsxs2("a", { href: item.source.url, target: "_blank", rel: "noopener noreferrer", children: [
191
+ item.source.file,
192
+ ":",
193
+ item.source.line
194
+ ] }) : /* @__PURE__ */ jsxs2("span", { children: [
195
+ item.source.file,
196
+ ":",
197
+ item.source.line
198
+ ] }) }),
199
+ item.children && item.children.length > 0 && /* @__PURE__ */ jsx2("div", { className: "ardo-api-children", children: item.children.map((child) => /* @__PURE__ */ jsx2(ApiItem, { item: child, level: level + 1 }, child.id)) })
200
+ ] });
201
+ }
202
+ function ApiKindBadge({ kind }) {
203
+ const kindLabels = {
204
+ module: "Module",
205
+ namespace: "Namespace",
206
+ class: "Class",
207
+ interface: "Interface",
208
+ type: "Type",
209
+ enum: "Enum",
210
+ function: "Function",
211
+ variable: "Variable",
212
+ property: "Property",
213
+ method: "Method",
214
+ accessor: "Accessor",
215
+ constructor: "Constructor",
216
+ parameter: "Parameter",
217
+ typeParameter: "Type Parameter",
218
+ enumMember: "Enum Member"
219
+ };
220
+ const kindColors = {
221
+ class: "ardo-api-badge-class",
222
+ interface: "ardo-api-badge-interface",
223
+ type: "ardo-api-badge-type",
224
+ enum: "ardo-api-badge-enum",
225
+ function: "ardo-api-badge-function",
226
+ method: "ardo-api-badge-method",
227
+ property: "ardo-api-badge-property"
228
+ };
229
+ return /* @__PURE__ */ jsx2("span", { className: `ardo-api-badge ${kindColors[kind] || ""}`, children: kindLabels[kind] });
230
+ }
231
+ function ApiHierarchy({ hierarchy }) {
232
+ if (!hierarchy) return null;
233
+ const {
234
+ extends: extendsTypes,
235
+ implements: implementsTypes,
236
+ extendedBy,
237
+ implementedBy
238
+ } = hierarchy;
239
+ if (!extendsTypes?.length && !implementsTypes?.length && !extendedBy?.length && !implementedBy?.length) {
240
+ return null;
241
+ }
242
+ return /* @__PURE__ */ jsxs2("div", { className: "ardo-api-hierarchy", children: [
243
+ /* @__PURE__ */ jsx2("h4", { className: "ardo-api-section-title", children: "Hierarchy" }),
244
+ /* @__PURE__ */ jsxs2("ul", { className: "ardo-api-hierarchy-list", children: [
245
+ extendsTypes?.map((type) => /* @__PURE__ */ jsxs2("li", { children: [
246
+ /* @__PURE__ */ jsx2("span", { className: "ardo-api-hierarchy-label", children: "extends" }),
247
+ /* @__PURE__ */ jsx2("code", { children: type })
248
+ ] }, type)),
249
+ implementsTypes?.map((type) => /* @__PURE__ */ jsxs2("li", { children: [
250
+ /* @__PURE__ */ jsx2("span", { className: "ardo-api-hierarchy-label", children: "implements" }),
251
+ /* @__PURE__ */ jsx2("code", { children: type })
252
+ ] }, type)),
253
+ extendedBy?.map((type) => /* @__PURE__ */ jsxs2("li", { children: [
254
+ /* @__PURE__ */ jsx2("span", { className: "ardo-api-hierarchy-label", children: "extended by" }),
255
+ /* @__PURE__ */ jsx2("code", { children: type })
256
+ ] }, type)),
257
+ implementedBy?.map((type) => /* @__PURE__ */ jsxs2("li", { children: [
258
+ /* @__PURE__ */ jsx2("span", { className: "ardo-api-hierarchy-label", children: "implemented by" }),
259
+ /* @__PURE__ */ jsx2("code", { children: type })
260
+ ] }, type))
261
+ ] })
262
+ ] });
263
+ }
15
264
  export {
16
265
  ApiHierarchy,
17
266
  ApiItem,
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/typedoc/vite-plugin.ts","../../src/typedoc/components/ApiSignature.tsx","../../src/typedoc/components/ApiItem.tsx"],"sourcesContent":["import type { Plugin } from \"vite\"\nimport type { TypeDocConfig } from \"./types\"\nimport { generateApiDocs } from \"./generator\"\nimport path from \"path\"\nimport fsSync from \"fs\"\nimport type { FSWatcher } from \"fs\"\n\nexport interface TypeDocPluginOptions extends Partial<TypeDocConfig> {\n /**\n * Content directory where markdown files are stored\n * @default './content'\n */\n contentDir?: string\n\n /**\n * Run TypeDoc on every build\n * @default false in dev, true in build\n */\n runOnBuild?: boolean\n\n /**\n * Run TypeDoc on startup\n * @default true\n */\n runOnStart?: boolean\n}\n\n/**\n * Vite plugin for generating API documentation with TypeDoc.\n *\n * @example\n * ```ts\n * // Minimal config (uses ./src/index.ts as entry point)\n * typedocPlugin()\n *\n * // Custom entry point\n * typedocPlugin({ entryPoints: ['./lib/index.ts'] })\n *\n * // Full config\n * typedocPlugin({\n * entryPoints: ['./src/index.ts'],\n * out: 'api-reference',\n * excludePrivate: true,\n * })\n * ```\n */\nexport function typedocPlugin(options: TypeDocPluginOptions = {}): Plugin {\n const {\n contentDir = \"./content\",\n runOnBuild,\n runOnStart = true,\n // TypeDoc config with defaults\n enabled = true,\n entryPoints = [\"./src/index.ts\"],\n out = \"api-reference\",\n excludePrivate = true,\n excludeInternal = true,\n ...restConfig\n } = options\n\n const config: TypeDocConfig = {\n enabled,\n entryPoints,\n out,\n excludePrivate,\n excludeInternal,\n ...restConfig,\n }\n\n let isBuilding = false\n let hasGenerated = false\n\n async function generate() {\n if (!config.enabled) return\n\n console.log(\"[ardo] Generating API documentation with TypeDoc...\")\n const startTime = Date.now()\n\n try {\n const docs = await generateApiDocs(config, contentDir)\n const duration = Date.now() - startTime\n console.log(`[ardo] Generated ${docs.length} API documentation pages in ${duration}ms`)\n hasGenerated = true\n } catch (error) {\n console.error(\"[ardo] TypeDoc generation failed:\", error)\n throw error\n }\n }\n\n return {\n name: \"ardo:typedoc\",\n\n async buildStart() {\n if (runOnStart && !hasGenerated) {\n await generate()\n }\n },\n\n async buildEnd() {\n if (isBuilding && runOnBuild !== false) {\n await generate()\n }\n },\n\n configResolved(config) {\n isBuilding = config.command === \"build\"\n },\n\n async handleHotUpdate({ file }) {\n // Regenerate on source file changes in watch mode\n if (config.watch && config.entryPoints.some((ep) => file.includes(ep))) {\n await generate()\n return []\n }\n },\n }\n}\n\nexport function createTypedocWatcher(\n config: TypeDocConfig,\n contentDir: string,\n onChange?: () => void\n): { start: () => Promise<void>; stop: () => void } {\n let watcher: FSWatcher | null = null\n\n return {\n async start() {\n if (!config.watch || !config.entryPoints.length) return\n\n const entryDir = path.dirname(config.entryPoints[0])\n\n try {\n watcher = fsSync.watch(entryDir, { recursive: true }, async (event, filename) => {\n if (filename?.endsWith(\".ts\") || filename?.endsWith(\".tsx\")) {\n console.log(`[ardo] Source file changed: ${filename}`)\n await generateApiDocs(config, contentDir)\n onChange?.()\n }\n })\n } catch {\n console.warn(\"[ardo] Could not start TypeDoc watcher\")\n }\n },\n\n stop() {\n if (watcher) {\n watcher.close()\n watcher = null\n }\n },\n }\n}\n","import type { ApiDocParameter, ApiDocReturn, ApiDocTypeParameter } from \"../types\"\n\ninterface ApiSignatureProps {\n name: string\n typeParameters?: ApiDocTypeParameter[]\n parameters?: ApiDocParameter[]\n returns?: ApiDocReturn\n className?: string\n}\n\nexport function ApiSignature({\n name,\n typeParameters,\n parameters,\n returns,\n className = \"\",\n}: ApiSignatureProps) {\n const typeParamsStr = typeParameters?.length\n ? `<${typeParameters.map((tp) => tp.name).join(\", \")}>`\n : \"\"\n\n const paramsStr = parameters\n ?.map((p) => {\n const optional = p.optional ? \"?\" : \"\"\n return `${p.name}${optional}: ${p.type}`\n })\n .join(\", \")\n\n const returnStr = returns?.type ? `: ${returns.type}` : \"\"\n\n return (\n <div className={`ardo-api-signature ${className}`}>\n <pre className=\"ardo-api-signature-code\">\n <code>\n <span className=\"ardo-api-keyword\">function</span>{\" \"}\n <span className=\"ardo-api-function-name\">{name}</span>\n {typeParamsStr && <span className=\"ardo-api-type-params\">{typeParamsStr}</span>}\n <span className=\"ardo-api-params\">({paramsStr})</span>\n {returnStr && <span className=\"ardo-api-return-type\">{returnStr}</span>}\n </code>\n </pre>\n </div>\n )\n}\n\ninterface ApiParametersTableProps {\n parameters: ApiDocParameter[]\n}\n\nexport function ApiParametersTable({ parameters }: ApiParametersTableProps) {\n if (!parameters.length) return null\n\n return (\n <div className=\"ardo-api-parameters\">\n <h4 className=\"ardo-api-section-title\">Parameters</h4>\n <table className=\"ardo-api-table\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Type</th>\n <th>Description</th>\n </tr>\n </thead>\n <tbody>\n {parameters.map((param) => (\n <tr key={param.name}>\n <td>\n <code>{param.name}</code>\n {param.optional && <span className=\"ardo-api-optional\">(optional)</span>}\n </td>\n <td>\n <code>{param.type}</code>\n </td>\n <td>\n {param.description}\n {param.defaultValue && (\n <span className=\"ardo-api-default\">\n Default: <code>{param.defaultValue}</code>\n </span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n\ninterface ApiReturnsProps {\n returns: ApiDocReturn\n}\n\nexport function ApiReturns({ returns }: ApiReturnsProps) {\n return (\n <div className=\"ardo-api-returns\">\n <h4 className=\"ardo-api-section-title\">Returns</h4>\n <p>\n <code>{returns.type}</code>\n {returns.description && <span> - {returns.description}</span>}\n </p>\n </div>\n )\n}\n","import type { ApiDocItem, ApiDocKind } from \"../types\"\nimport { ApiSignature, ApiParametersTable, ApiReturns } from \"./ApiSignature\"\nimport type { JSX } from \"react\"\n\ninterface ApiItemProps {\n item: ApiDocItem\n level?: number\n}\n\nexport function ApiItem({ item, level = 2 }: ApiItemProps) {\n const HeadingTag = `h${Math.min(level, 6)}` as keyof JSX.IntrinsicElements\n\n return (\n <div className={`ardo-api-item ardo-api-item-${item.kind}`} id={item.id}>\n <HeadingTag className=\"ardo-api-item-title\">\n <ApiKindBadge kind={item.kind} />\n <span className=\"ardo-api-item-name\">{item.name}</span>\n <a href={`#${item.id}`} className=\"ardo-api-anchor\">\n #\n </a>\n </HeadingTag>\n\n {item.description && <p className=\"ardo-api-item-description\">{item.description}</p>}\n\n {item.signature && (\n <ApiSignature\n name={item.name}\n typeParameters={item.typeParameters}\n parameters={item.parameters}\n returns={item.returns}\n />\n )}\n\n {item.parameters && item.parameters.length > 0 && (\n <ApiParametersTable parameters={item.parameters} />\n )}\n\n {item.returns && <ApiReturns returns={item.returns} />}\n\n {item.examples && item.examples.length > 0 && (\n <div className=\"ardo-api-examples\">\n <h4 className=\"ardo-api-section-title\">Examples</h4>\n {item.examples.map((example, i) => (\n <pre key={i} className=\"ardo-api-example\">\n <code>{example}</code>\n </pre>\n ))}\n </div>\n )}\n\n {item.source && (\n <div className=\"ardo-api-source\">\n {item.source.url ? (\n <a href={item.source.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {item.source.file}:{item.source.line}\n </a>\n ) : (\n <span>\n {item.source.file}:{item.source.line}\n </span>\n )}\n </div>\n )}\n\n {item.children && item.children.length > 0 && (\n <div className=\"ardo-api-children\">\n {item.children.map((child) => (\n <ApiItem key={child.id} item={child} level={level + 1} />\n ))}\n </div>\n )}\n </div>\n )\n}\n\ninterface ApiKindBadgeProps {\n kind: ApiDocKind\n}\n\nexport function ApiKindBadge({ kind }: ApiKindBadgeProps) {\n const kindLabels: Record<ApiDocKind, string> = {\n module: \"Module\",\n namespace: \"Namespace\",\n class: \"Class\",\n interface: \"Interface\",\n type: \"Type\",\n enum: \"Enum\",\n function: \"Function\",\n variable: \"Variable\",\n property: \"Property\",\n method: \"Method\",\n accessor: \"Accessor\",\n constructor: \"Constructor\",\n parameter: \"Parameter\",\n typeParameter: \"Type Parameter\",\n enumMember: \"Enum Member\",\n }\n\n const kindColors: Record<string, string> = {\n class: \"ardo-api-badge-class\",\n interface: \"ardo-api-badge-interface\",\n type: \"ardo-api-badge-type\",\n enum: \"ardo-api-badge-enum\",\n function: \"ardo-api-badge-function\",\n method: \"ardo-api-badge-method\",\n property: \"ardo-api-badge-property\",\n }\n\n return <span className={`ardo-api-badge ${kindColors[kind] || \"\"}`}>{kindLabels[kind]}</span>\n}\n\ninterface ApiHierarchyProps {\n hierarchy: ApiDocItem[\"hierarchy\"]\n}\n\nexport function ApiHierarchy({ hierarchy }: ApiHierarchyProps) {\n if (!hierarchy) return null\n\n const {\n extends: extendsTypes,\n implements: implementsTypes,\n extendedBy,\n implementedBy,\n } = hierarchy\n\n if (\n !extendsTypes?.length &&\n !implementsTypes?.length &&\n !extendedBy?.length &&\n !implementedBy?.length\n ) {\n return null\n }\n\n return (\n <div className=\"ardo-api-hierarchy\">\n <h4 className=\"ardo-api-section-title\">Hierarchy</h4>\n <ul className=\"ardo-api-hierarchy-list\">\n {extendsTypes?.map((type) => (\n <li key={type}>\n <span className=\"ardo-api-hierarchy-label\">extends</span>\n <code>{type}</code>\n </li>\n ))}\n {implementsTypes?.map((type) => (\n <li key={type}>\n <span className=\"ardo-api-hierarchy-label\">implements</span>\n <code>{type}</code>\n </li>\n ))}\n {extendedBy?.map((type) => (\n <li key={type}>\n <span className=\"ardo-api-hierarchy-label\">extended by</span>\n <code>{type}</code>\n </li>\n ))}\n {implementedBy?.map((type) => (\n <li key={type}>\n <span className=\"ardo-api-hierarchy-label\">implemented by</span>\n <code>{type}</code>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n"],"mappings":"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","names":["config","jsx","jsxs"]}
@@ -1,5 +1,5 @@
1
1
  import { Plugin } from 'vite';
2
- import { A as ArdoConfig, P as PageData, R as ResolvedConfig, a as PageFrontmatter, T as TOCItem, S as SidebarItem, M as MarkdownConfig } from '../types-CLkHwCch.js';
2
+ import { A as ArdoConfig, R as ResolvedConfig, a as PageFrontmatter, T as TOCItem, P as PageData, S as SidebarItem, M as MarkdownConfig } from '../types-CLkHwCch.js';
3
3
  import { Highlighter } from 'shiki';
4
4
 
5
5
  interface ArdoRoutesPluginOptions {