@dogsbay/format-mkdocs 0.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/autodoc/markdown-generator.d.ts +6 -0
  2. package/dist/autodoc/markdown-generator.d.ts.map +1 -0
  3. package/dist/autodoc/markdown-generator.js +242 -0
  4. package/dist/autodoc/markdown-generator.js.map +1 -0
  5. package/dist/autodoc/module-resolver.d.ts +8 -0
  6. package/dist/autodoc/module-resolver.d.ts.map +1 -0
  7. package/dist/autodoc/module-resolver.js +218 -0
  8. package/dist/autodoc/module-resolver.js.map +1 -0
  9. package/dist/autodoc/python-docstring.d.ts +7 -0
  10. package/dist/autodoc/python-docstring.d.ts.map +1 -0
  11. package/dist/autodoc/python-docstring.js +324 -0
  12. package/dist/autodoc/python-docstring.js.map +1 -0
  13. package/dist/autodoc/python-parser.d.ts +10 -0
  14. package/dist/autodoc/python-parser.d.ts.map +1 -0
  15. package/dist/autodoc/python-parser.js +541 -0
  16. package/dist/autodoc/python-parser.js.map +1 -0
  17. package/dist/autodoc/tree-builder.d.ts +9 -0
  18. package/dist/autodoc/tree-builder.d.ts.map +1 -0
  19. package/dist/autodoc/tree-builder.js +279 -0
  20. package/dist/autodoc/tree-builder.js.map +1 -0
  21. package/dist/autodoc/types.d.ts +128 -0
  22. package/dist/autodoc/types.d.ts.map +1 -0
  23. package/dist/autodoc/types.js +2 -0
  24. package/dist/autodoc/types.js.map +1 -0
  25. package/dist/cli.d.ts +3 -0
  26. package/dist/cli.d.ts.map +1 -0
  27. package/dist/cli.js +32 -0
  28. package/dist/cli.js.map +1 -0
  29. package/dist/export/to-astro.d.ts +26 -0
  30. package/dist/export/to-astro.d.ts.map +1 -0
  31. package/dist/export/to-astro.js +551 -0
  32. package/dist/export/to-astro.js.map +1 -0
  33. package/dist/export/to-mkdocs-project.d.ts +27 -0
  34. package/dist/export/to-mkdocs-project.d.ts.map +1 -0
  35. package/dist/export/to-mkdocs-project.js +192 -0
  36. package/dist/export/to-mkdocs-project.js.map +1 -0
  37. package/dist/export/to-mkdocs.d.ts +6 -0
  38. package/dist/export/to-mkdocs.d.ts.map +1 -0
  39. package/dist/export/to-mkdocs.js +178 -0
  40. package/dist/export/to-mkdocs.js.map +1 -0
  41. package/dist/importer.d.ts +30 -0
  42. package/dist/importer.d.ts.map +1 -0
  43. package/dist/importer.js +376 -0
  44. package/dist/importer.js.map +1 -0
  45. package/dist/index.d.ts +57 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +170 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/inline-walker.d.ts +17 -0
  50. package/dist/inline-walker.d.ts.map +1 -0
  51. package/dist/inline-walker.js +167 -0
  52. package/dist/inline-walker.js.map +1 -0
  53. package/dist/loader.d.ts +42 -0
  54. package/dist/loader.d.ts.map +1 -0
  55. package/dist/loader.js +765 -0
  56. package/dist/loader.js.map +1 -0
  57. package/dist/parse.d.ts +12 -0
  58. package/dist/parse.d.ts.map +1 -0
  59. package/dist/parse.js +46 -0
  60. package/dist/parse.js.map +1 -0
  61. package/dist/renderers/mermaid.d.ts +9 -0
  62. package/dist/renderers/mermaid.d.ts.map +1 -0
  63. package/dist/renderers/mermaid.js +117 -0
  64. package/dist/renderers/mermaid.js.map +1 -0
  65. package/dist/rules/admonition.d.ts +6 -0
  66. package/dist/rules/admonition.d.ts.map +1 -0
  67. package/dist/rules/admonition.js +73 -0
  68. package/dist/rules/admonition.js.map +1 -0
  69. package/dist/rules/annotations.d.ts +6 -0
  70. package/dist/rules/annotations.d.ts.map +1 -0
  71. package/dist/rules/annotations.js +57 -0
  72. package/dist/rules/annotations.js.map +1 -0
  73. package/dist/rules/autodoc.d.ts +7 -0
  74. package/dist/rules/autodoc.d.ts.map +1 -0
  75. package/dist/rules/autodoc.js +102 -0
  76. package/dist/rules/autodoc.js.map +1 -0
  77. package/dist/rules/blocks.d.ts +6 -0
  78. package/dist/rules/blocks.d.ts.map +1 -0
  79. package/dist/rules/blocks.js +172 -0
  80. package/dist/rules/blocks.js.map +1 -0
  81. package/dist/rules/content-tabs.d.ts +6 -0
  82. package/dist/rules/content-tabs.d.ts.map +1 -0
  83. package/dist/rules/content-tabs.js +67 -0
  84. package/dist/rules/content-tabs.js.map +1 -0
  85. package/dist/rules/docusaurus-admonitions.d.ts +7 -0
  86. package/dist/rules/docusaurus-admonitions.d.ts.map +1 -0
  87. package/dist/rules/docusaurus-admonitions.js +101 -0
  88. package/dist/rules/docusaurus-admonitions.js.map +1 -0
  89. package/dist/rules/file-include.d.ts +28 -0
  90. package/dist/rules/file-include.d.ts.map +1 -0
  91. package/dist/rules/file-include.js +198 -0
  92. package/dist/rules/file-include.js.map +1 -0
  93. package/dist/rules/footnotes.d.ts +6 -0
  94. package/dist/rules/footnotes.d.ts.map +1 -0
  95. package/dist/rules/footnotes.js +161 -0
  96. package/dist/rules/footnotes.js.map +1 -0
  97. package/dist/rules/icon-shortcode.d.ts +30 -0
  98. package/dist/rules/icon-shortcode.d.ts.map +1 -0
  99. package/dist/rules/icon-shortcode.js +169 -0
  100. package/dist/rules/icon-shortcode.js.map +1 -0
  101. package/dist/rules/keys.d.ts +6 -0
  102. package/dist/rules/keys.d.ts.map +1 -0
  103. package/dist/rules/keys.js +30 -0
  104. package/dist/rules/keys.js.map +1 -0
  105. package/dist/rules/link-rewrite.d.ts +7 -0
  106. package/dist/rules/link-rewrite.d.ts.map +1 -0
  107. package/dist/rules/link-rewrite.js +93 -0
  108. package/dist/rules/link-rewrite.js.map +1 -0
  109. package/dist/rules/math.d.ts +14 -0
  110. package/dist/rules/math.d.ts.map +1 -0
  111. package/dist/rules/math.js +114 -0
  112. package/dist/rules/math.js.map +1 -0
  113. package/dist/rules/md-in-html.d.ts +6 -0
  114. package/dist/rules/md-in-html.d.ts.map +1 -0
  115. package/dist/rules/md-in-html.js +135 -0
  116. package/dist/rules/md-in-html.js.map +1 -0
  117. package/dist/rules/snippets.d.ts +10 -0
  118. package/dist/rules/snippets.d.ts.map +1 -0
  119. package/dist/rules/snippets.js +109 -0
  120. package/dist/rules/snippets.js.map +1 -0
  121. package/dist/rules/templates.d.ts +15 -0
  122. package/dist/rules/templates.d.ts.map +1 -0
  123. package/dist/rules/templates.js +105 -0
  124. package/dist/rules/templates.js.map +1 -0
  125. package/dist/rules/variants.d.ts +12 -0
  126. package/dist/rules/variants.d.ts.map +1 -0
  127. package/dist/rules/variants.js +148 -0
  128. package/dist/rules/variants.js.map +1 -0
  129. package/dist/tree.d.ts +2 -0
  130. package/dist/tree.d.ts.map +1 -0
  131. package/dist/tree.js +2 -0
  132. package/dist/tree.js.map +1 -0
  133. package/dist/utils/indent.d.ts +18 -0
  134. package/dist/utils/indent.d.ts.map +1 -0
  135. package/dist/utils/indent.js +56 -0
  136. package/dist/utils/indent.js.map +1 -0
  137. package/dist/utils/types.d.ts +19 -0
  138. package/dist/utils/types.d.ts.map +1 -0
  139. package/dist/utils/types.js +63 -0
  140. package/dist/utils/types.js.map +1 -0
  141. package/dist/walker.d.ts +8 -0
  142. package/dist/walker.d.ts.map +1 -0
  143. package/dist/walker.js +193 -0
  144. package/dist/walker.js.map +1 -0
  145. package/package.json +71 -0
@@ -0,0 +1,551 @@
1
+ const COMPONENT_IMPORTS = {
2
+ callout: [
3
+ 'import Alert from "@ui/alert/Alert.astro";',
4
+ 'import AlertTitle from "@ui/alert/AlertTitle.astro";',
5
+ 'import AlertDescription from "@ui/alert/AlertDescription.astro";',
6
+ ],
7
+ details: [
8
+ 'import CollapsibleAlert from "@ui/alert/CollapsibleAlert.astro";',
9
+ ],
10
+ code: [
11
+ 'import CodeBlock from "@ui/code-block/CodeBlock.astro";',
12
+ ],
13
+ "code-rich": [
14
+ 'import CodeRich from "@ui/code-rich/CodeRich.astro";',
15
+ 'import "@ui/code-rich/code-rich.css";',
16
+ ],
17
+ tabs: [
18
+ 'import Tabs from "@ui/tabs/Tabs.astro";',
19
+ 'import TabsList from "@ui/tabs/TabsList.astro";',
20
+ 'import TabsTrigger from "@ui/tabs/TabsTrigger.astro";',
21
+ 'import TabsContent from "@ui/tabs/TabsContent.astro";',
22
+ ],
23
+ table: [
24
+ 'import Table from "@ui/table/Table.astro";',
25
+ 'import TableHeader from "@ui/table/TableHeader.astro";',
26
+ 'import TableBody from "@ui/table/TableBody.astro";',
27
+ 'import TableRow from "@ui/table/TableRow.astro";',
28
+ 'import TableHead from "@ui/table/TableHead.astro";',
29
+ 'import TableCell from "@ui/table/TableCell.astro";',
30
+ ],
31
+ diagram: ['import Diagram from "@ui/diagram/Diagram.astro";'],
32
+ youtube: ['import YouTube from "@ui/youtube/YouTube.astro";'],
33
+ "math-block": ['import MathKatex from "./MathKatex.astro";'],
34
+ image: ['import BlockImage from "@ui/image/Image.astro";'],
35
+ "api-class": ['import ApiSymbol from "@ui/api-symbol/ApiSymbol.astro";'],
36
+ "api-doc": ['import ApiDoc from "@ui/api-doc/ApiDoc.astro";'],
37
+ "api-params": ['import ApiParams from "@ui/api-params/ApiParams.astro";'],
38
+ "api-source": ['import ApiSource from "@ui/api-source/ApiSource.astro";'],
39
+ steps: [
40
+ 'import Steps from "@ui/steps/Steps.astro";',
41
+ 'import Step from "@ui/steps/Step.astro";',
42
+ ],
43
+ substeps: [
44
+ 'import SubSteps from "@ui/steps/SubSteps.astro";',
45
+ ],
46
+ grid: [
47
+ 'import Grid from "@ui/grid/Grid.astro";',
48
+ ],
49
+ card: [
50
+ 'import Card from "@ui/card/Card.astro";',
51
+ 'import CardContent from "@ui/card/CardContent.astro";',
52
+ ],
53
+ };
54
+ // ─── Escaping helpers ─────────────────────────────────────────────
55
+ /** Escape for use inside an Astro {expression}. Uses JSON.stringify for safety. */
56
+ export function escapeExpr(s) {
57
+ // JSON.stringify handles all special characters (quotes, backslashes, newlines, etc.)
58
+ // and produces a valid JS string literal. This avoids template literal edge cases
59
+ // where backtick + brace combinations create false expression boundaries.
60
+ return JSON.stringify(s);
61
+ }
62
+ /** Escape for use in an HTML attribute value (double-quoted). */
63
+ export function escapeAttr(s) {
64
+ return s.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;");
65
+ }
66
+ /** Escape text for use directly in an Astro template (not inside an expression). */
67
+ export function escapeTemplate(s) {
68
+ let result = "";
69
+ for (const ch of s) {
70
+ switch (ch) {
71
+ case "&":
72
+ result += "&amp;";
73
+ break;
74
+ case "<":
75
+ result += "&lt;";
76
+ break;
77
+ case ">":
78
+ result += "&gt;";
79
+ break;
80
+ case "{":
81
+ result += '{"{"}';
82
+ break;
83
+ case "}":
84
+ result += '{"}"}';
85
+ break;
86
+ default: result += ch;
87
+ }
88
+ }
89
+ return result;
90
+ }
91
+ // ─── Main entry point ─────────────────────────────────────────────
92
+ export function treeToAstro(nodes, options) {
93
+ const ctx = {
94
+ imports: new Set(),
95
+ indent: 0,
96
+ scripts: new Set(),
97
+ mode: options?.mode ?? "template",
98
+ };
99
+ const body = nodes.map((n) => nodeToAstro(n, ctx)).filter(Boolean).join("\n");
100
+ const imports = [];
101
+ const seen = new Set();
102
+ for (const key of ctx.imports) {
103
+ const stmts = COMPONENT_IMPORTS[key];
104
+ if (stmts) {
105
+ for (const stmt of stmts) {
106
+ if (!seen.has(stmt)) {
107
+ seen.add(stmt);
108
+ imports.push(stmt);
109
+ }
110
+ }
111
+ }
112
+ }
113
+ return {
114
+ body,
115
+ imports: imports.sort(),
116
+ scripts: [...ctx.scripts],
117
+ };
118
+ }
119
+ // ─── Node dispatcher ──────────────────────────────────────────────
120
+ function nodeToAstro(node, ctx) {
121
+ switch (node.type) {
122
+ case "prose":
123
+ return proseToAstro(node, ctx);
124
+ case "heading":
125
+ return headingToAstro(node, ctx);
126
+ case "paragraph":
127
+ return paragraphToAstro(node, ctx);
128
+ case "code":
129
+ return codeToAstro(node, ctx);
130
+ case "callout":
131
+ return calloutToAstro(node, ctx);
132
+ case "details":
133
+ return detailsToAstro(node, ctx);
134
+ case "tabs":
135
+ return tabsToAstro(node, ctx);
136
+ case "ordered-list":
137
+ return `<ol>\n${childrenToAstro(node, ctx)}\n</ol>`;
138
+ case "unordered-list":
139
+ return `<ul>\n${childrenToAstro(node, ctx)}\n</ul>`;
140
+ case "list-item":
141
+ return `<li>${childrenToAstro(node, ctx)}</li>`;
142
+ case "blockquote":
143
+ return `<blockquote class="border-l-4 border-border pl-4 italic text-muted-foreground">\n${childrenToAstro(node, ctx)}\n</blockquote>`;
144
+ case "hr":
145
+ return `<hr class="my-8 border-border" />`;
146
+ case "html":
147
+ // Raw HTML always uses set:html — it may contain anything
148
+ return `<Fragment set:html={${escapeExpr(node.html ?? "")}} />`;
149
+ case "table":
150
+ return tableToAstro(node, ctx);
151
+ case "thead":
152
+ ctx.imports.add("table");
153
+ return `<TableHeader>\n${childrenToAstro(node, ctx)}\n</TableHeader>`;
154
+ case "tbody":
155
+ ctx.imports.add("table");
156
+ return `<TableBody>\n${childrenToAstro(node, ctx)}\n</TableBody>`;
157
+ case "tr":
158
+ ctx.imports.add("table");
159
+ return `<TableRow>\n${childrenToAstro(node, ctx)}\n</TableRow>`;
160
+ case "th":
161
+ ctx.imports.add("table");
162
+ return `<TableHead>${childrenToAstro(node, ctx)}</TableHead>`;
163
+ case "td":
164
+ ctx.imports.add("table");
165
+ return `<TableCell>${childrenToAstro(node, ctx)}</TableCell>`;
166
+ case "deflist":
167
+ return `<dl class="my-4 space-y-2">\n${childrenToAstro(node, ctx)}\n</dl>`;
168
+ case "dt":
169
+ return `<dt class="font-semibold">${childrenToAstro(node, ctx)}</dt>`;
170
+ case "dd":
171
+ return `<dd class="ml-6 text-muted-foreground">${childrenToAstro(node, ctx)}</dd>`;
172
+ case "diagram":
173
+ return diagramToAstro(node, ctx);
174
+ case "youtube":
175
+ return youtubeToAstro(node, ctx);
176
+ case "math-block":
177
+ return mathBlockToAstro(node, ctx);
178
+ case "footnote-list":
179
+ return `<ol class="list-decimal pl-6 space-y-1 text-sm text-muted-foreground" data-footnote-list>\n${childrenToAstro(node, ctx)}\n</ol>`;
180
+ case "footnote-def":
181
+ return footnoteDefToAstro(node, ctx);
182
+ case "api-class":
183
+ case "api-member":
184
+ return apiSymbolToAstro(node, ctx);
185
+ case "api-doc":
186
+ return apiDocToAstro(node, ctx);
187
+ case "api-params":
188
+ return apiParamsToAstro(node, ctx);
189
+ case "api-source":
190
+ return apiSourceToAstro(node, ctx);
191
+ case "html-container":
192
+ return htmlContainerToAstro(node, ctx);
193
+ case "steps":
194
+ ctx.imports.add("steps");
195
+ return `<Steps>\n${childrenToAstro(node, ctx)}\n</Steps>`;
196
+ case "step":
197
+ ctx.imports.add("steps");
198
+ return `<Step>\n${childrenToAstro(node, ctx)}\n</Step>`;
199
+ case "substeps":
200
+ ctx.imports.add("substeps");
201
+ ctx.imports.add("steps");
202
+ return `<SubSteps>\n${childrenToAstro(node, ctx)}\n</SubSteps>`;
203
+ case "annotation-list":
204
+ return `<div class="my-2 rounded-md border-l-4 border-info/50 bg-info/5 p-4">\n${childrenToAstro(node, ctx)}\n</div>`;
205
+ case "cards":
206
+ return cardsToAstro(node, ctx);
207
+ case "grid":
208
+ ctx.imports.add("grid");
209
+ return `<Grid cols={[1, 2]} gap={4}>\n${childrenToAstro(node, ctx)}\n</Grid>`;
210
+ default:
211
+ if (node.html)
212
+ return `<Fragment set:html={${escapeExpr(node.html)}} />`;
213
+ if (node.children)
214
+ return childrenToAstro(node, ctx);
215
+ return "";
216
+ }
217
+ }
218
+ // ─── Inline rendering ─────────────────────────────────────────────
219
+ /** Render inline nodes as Astro template markup (clean, editable). */
220
+ function inlineToTemplate(nodes) {
221
+ return nodes.map(inlineNodeToTemplate).join("");
222
+ }
223
+ function inlineNodeToTemplate(node) {
224
+ switch (node.type) {
225
+ case "text": {
226
+ let text = escapeTemplate(node.text);
227
+ if (node.bold)
228
+ text = `<strong>${text}</strong>`;
229
+ if (node.italic)
230
+ text = `<em>${text}</em>`;
231
+ if (node.strikethrough)
232
+ text = `<s>${text}</s>`;
233
+ return text;
234
+ }
235
+ case "link": {
236
+ const titleAttr = node.title ? ` title="${escapeAttr(node.title)}"` : "";
237
+ return `<a href="${escapeAttr(node.href)}"${titleAttr}>${inlineToTemplate(node.children)}</a>`;
238
+ }
239
+ case "image":
240
+ return `<img src="${escapeAttr(node.src)}" alt="${escapeAttr(node.alt ?? "")}" loading="lazy" />`;
241
+ case "code":
242
+ return `<code>${escapeTemplate(node.text)}</code>`;
243
+ case "footnote-ref":
244
+ return `<sup><a href="#fn-${escapeAttr(node.label)}" id="fnref-${escapeAttr(node.label)}" class="text-primary hover:underline">[${escapeTemplate(node.label)}]</a></sup>`;
245
+ case "kbd":
246
+ return node.keys.map((k) => `<kbd>${escapeTemplate(k)}</kbd>`).join("+");
247
+ case "math":
248
+ return `<code class="math-inline">${escapeTemplate(node.latex)}</code>`;
249
+ case "icon":
250
+ return `:${node.name}:`;
251
+ case "html-inline":
252
+ // Raw HTML inline — must use set:html to avoid brace issues
253
+ return `<Fragment set:html={${escapeExpr(node.html)}} />`;
254
+ case "break":
255
+ return "<br />";
256
+ default:
257
+ return "";
258
+ }
259
+ }
260
+ /** Render inline nodes as HTML string (for hybrid mode set:html). */
261
+ function inlineToHtml(nodes) {
262
+ return nodes.map(inlineNodeToHtml).join("");
263
+ }
264
+ function inlineNodeToHtml(node) {
265
+ switch (node.type) {
266
+ case "text": {
267
+ let text = escapeHtml(node.text);
268
+ if (node.bold)
269
+ text = `<strong>${text}</strong>`;
270
+ if (node.italic)
271
+ text = `<em>${text}</em>`;
272
+ if (node.strikethrough)
273
+ text = `<s>${text}</s>`;
274
+ return text;
275
+ }
276
+ case "link": {
277
+ const titleAttr = node.title ? ` title="${escapeAttr(node.title)}"` : "";
278
+ return `<a href="${escapeAttr(node.href)}"${titleAttr}>${inlineToHtml(node.children)}</a>`;
279
+ }
280
+ case "image":
281
+ return `<img src="${escapeAttr(node.src)}" alt="${escapeAttr(node.alt ?? "")}" loading="lazy" />`;
282
+ case "code":
283
+ return `<code>${escapeHtml(node.text)}</code>`;
284
+ case "footnote-ref":
285
+ return `<sup><a href="#fn-${escapeAttr(node.label)}" id="fnref-${escapeAttr(node.label)}" class="text-primary hover:underline">[${escapeHtml(node.label)}]</a></sup>`;
286
+ case "kbd":
287
+ return node.keys.map((k) => `<kbd>${escapeHtml(k)}</kbd>`).join("+");
288
+ case "math":
289
+ return `<code class="math-inline">${escapeHtml(node.latex)}</code>`;
290
+ case "icon":
291
+ return `:${node.name}:`;
292
+ case "html-inline":
293
+ return node.html;
294
+ case "break":
295
+ return "<br />";
296
+ default:
297
+ return "";
298
+ }
299
+ }
300
+ /** Render inline content in the current mode. */
301
+ function renderInline(nodes, ctx) {
302
+ if (ctx.mode === "hybrid") {
303
+ const html = inlineToHtml(nodes);
304
+ return `<Fragment set:html={${escapeExpr(html)}} />`;
305
+ }
306
+ return inlineToTemplate(nodes);
307
+ }
308
+ /** Render an HTML string in the current mode. */
309
+ function renderHtml(html, ctx) {
310
+ // Always use set:html for pre-rendered HTML — it may contain anything
311
+ return `<Fragment set:html={${escapeExpr(html)}} />`;
312
+ }
313
+ // ─── Node type handlers ───────────────────────────────────────────
314
+ function proseToAstro(node, ctx) {
315
+ if (node.inline)
316
+ return renderInline(node.inline, ctx);
317
+ if (node.html)
318
+ return renderHtml(node.html, ctx);
319
+ return "";
320
+ }
321
+ function headingToAstro(node, ctx) {
322
+ const level = node.props?.level ?? 1;
323
+ const slug = node.props?.slug ?? "";
324
+ const anchor = `<a href="#${escapeAttr(slug)}" class="ml-2 text-muted-foreground opacity-0 group-hover:opacity-100 no-underline" aria-hidden="true" tabindex="-1">&para;</a>`;
325
+ if (ctx.mode === "template" && node.inline) {
326
+ const text = inlineToTemplate(node.inline);
327
+ return `<h${level} id="${escapeAttr(slug)}" class="group scroll-mt-20">${text}${anchor}</h${level}>`;
328
+ }
329
+ // Hybrid or no inline — use set:html for the whole heading
330
+ const text = node.inline ? inlineToHtml(node.inline) : node.props?.text ?? "";
331
+ const html = `<h${level} id="${escapeAttr(slug)}" class="group scroll-mt-20">${text}${anchor}</h${level}>`;
332
+ return `<Fragment set:html={${escapeExpr(html)}} />`;
333
+ }
334
+ function paragraphToAstro(node, ctx) {
335
+ // Block image detection
336
+ if (node.children?.length === 1 && node.children[0].type === "prose" && node.children[0].inline) {
337
+ const inlines = node.children[0].inline;
338
+ const meaningful = inlines.filter((n) => !(n.type === "text" && !n.text.trim()));
339
+ if (meaningful.length === 1 && meaningful[0].type === "image") {
340
+ const img = meaningful[0];
341
+ ctx.imports.add("image");
342
+ return `<BlockImage src="${escapeAttr(img.src)}" alt="${escapeAttr(img.alt ?? "")}" />`;
343
+ }
344
+ }
345
+ if (ctx.mode === "template") {
346
+ return `<p>${childrenToAstro(node, ctx)}</p>`;
347
+ }
348
+ // Hybrid: render paragraph content as set:html
349
+ const html = (node.children ?? []).map((c) => {
350
+ if (c.inline)
351
+ return inlineToHtml(c.inline);
352
+ return c.html ?? "";
353
+ }).join("");
354
+ return `<p set:html={${escapeExpr(html)}} />`;
355
+ }
356
+ function codeToAstro(node, ctx) {
357
+ const lang = node.props?.lang || "plaintext";
358
+ const code = node.props?.code ?? "";
359
+ const title = node.props?.title;
360
+ const highlights = node.props?.highlights;
361
+ const lineNumbers = node.props?.lineNumbers;
362
+ const isRich = lineNumbers || highlights || code.includes("[!code");
363
+ if (isRich) {
364
+ ctx.imports.add("code-rich");
365
+ const attrs = [`code={${escapeExpr(code)}}`, `lang="${escapeAttr(lang)}"`];
366
+ if (title)
367
+ attrs.push(`title="${escapeAttr(title)}"`);
368
+ if (lineNumbers)
369
+ attrs.push("lineNumbers");
370
+ if (highlights)
371
+ attrs.push(`highlights="${escapeAttr(highlights)}"`);
372
+ return `<CodeRich ${attrs.join(" ")} />`;
373
+ }
374
+ ctx.imports.add("code");
375
+ const attrs = [`code={${escapeExpr(code)}}`, `lang="${escapeAttr(lang)}"`];
376
+ if (title)
377
+ attrs.push(`title="${escapeAttr(title)}"`);
378
+ return `<CodeBlock ${attrs.join(" ")} />`;
379
+ }
380
+ function calloutToAstro(node, ctx) {
381
+ ctx.imports.add("callout");
382
+ const variant = node.props?.variant ?? "note";
383
+ const title = node.props?.title ?? "";
384
+ const inner = childrenToAstro(node, ctx);
385
+ return `<Alert variant="${escapeAttr(variant)}" class="my-4">
386
+ <AlertTitle>${escapeTemplate(title)}</AlertTitle>
387
+ <AlertDescription>
388
+ ${indentStr(inner, 4)}
389
+ </AlertDescription>
390
+ </Alert>`;
391
+ }
392
+ function detailsToAstro(node, ctx) {
393
+ ctx.imports.add("details");
394
+ const variant = node.props?.variant ?? "note";
395
+ const title = node.props?.title ?? "Details";
396
+ const open = node.props?.open;
397
+ const inner = childrenToAstro(node, ctx);
398
+ const attrs = [`variant="${escapeAttr(variant)}"`, `title="${escapeAttr(title)}"`];
399
+ if (open)
400
+ attrs.push("open");
401
+ return `<CollapsibleAlert ${attrs.join(" ")} class="my-4">
402
+ ${indentStr(inner, 2)}
403
+ </CollapsibleAlert>`;
404
+ }
405
+ function tabsToAstro(node, ctx) {
406
+ ctx.imports.add("tabs");
407
+ const tabs = node.children ?? [];
408
+ if (tabs.length === 0)
409
+ return "";
410
+ const tabItems = tabs.map((tab, i) => {
411
+ const value = tab.props?.value || tab.props?.label || `tab-${i}`;
412
+ const label = tab.props?.label || tab.props?.value || `Tab ${i + 1}`;
413
+ return { value, label, node: tab };
414
+ });
415
+ const defaultValue = tabItems[0].value;
416
+ const triggers = tabItems
417
+ .map((t) => ` <TabsTrigger value="${escapeAttr(t.value)}">${escapeTemplate(t.label)}</TabsTrigger>`)
418
+ .join("\n");
419
+ const contents = tabItems
420
+ .map((t) => {
421
+ const inner = childrenToAstro(t.node, ctx);
422
+ return ` <TabsContent value="${escapeAttr(t.value)}">\n${indentStr(inner, 4)}\n </TabsContent>`;
423
+ })
424
+ .join("\n");
425
+ return `<Tabs defaultValue="${escapeAttr(defaultValue)}" class="my-4">
426
+ <TabsList>
427
+ ${triggers}
428
+ </TabsList>
429
+ ${contents}
430
+ </Tabs>`;
431
+ }
432
+ function tableToAstro(node, ctx) {
433
+ ctx.imports.add("table");
434
+ return `<Table class="my-4">\n${childrenToAstro(node, ctx)}\n</Table>`;
435
+ }
436
+ function diagramToAstro(node, ctx) {
437
+ ctx.imports.add("diagram");
438
+ const lang = node.props?.lang || "mermaid";
439
+ const code = node.props?.code ?? "";
440
+ const svg = node.props?.svg ?? "";
441
+ const title = node.props?.title;
442
+ const attrs = [`lang="${escapeAttr(lang)}"`, `code={${escapeExpr(code)}}`, `svg={${escapeExpr(svg)}}`];
443
+ if (title)
444
+ attrs.push(`title="${escapeAttr(title)}"`);
445
+ return `<Diagram ${attrs.join(" ")} />`;
446
+ }
447
+ function youtubeToAstro(node, ctx) {
448
+ ctx.imports.add("youtube");
449
+ const id = node.props?.id ?? "";
450
+ const title = node.props?.title ?? "";
451
+ return `<YouTube id="${escapeAttr(id)}" title="${escapeAttr(title)}" class="my-4" />`;
452
+ }
453
+ function mathBlockToAstro(node, ctx) {
454
+ ctx.imports.add("math-block");
455
+ const latex = node.props?.latex ?? "";
456
+ return `<MathKatex latex={${escapeExpr(latex)}} display />`;
457
+ }
458
+ function footnoteDefToAstro(node, ctx) {
459
+ const id = node.props?.id ?? "";
460
+ const backrefId = node.props?.backrefId ?? "";
461
+ if (ctx.mode === "template" && node.inline) {
462
+ const content = inlineToTemplate(node.inline);
463
+ const backref = backrefId ? ` <a href="#${escapeAttr(backrefId)}" class="text-primary hover:underline">↩</a>` : "";
464
+ return `<li id="${escapeAttr(id)}" class="text-sm text-muted-foreground">${content}${backref}</li>`;
465
+ }
466
+ const content = node.inline ? inlineToHtml(node.inline) : (node.html ?? "");
467
+ const backref = backrefId ? ` <a href="#${escapeAttr(backrefId)}" class="text-primary hover:underline">↩</a>` : "";
468
+ return `<li id="${escapeAttr(id)}" class="text-sm text-muted-foreground" set:html={${escapeExpr(content + backref)}} />`;
469
+ }
470
+ function apiSymbolToAstro(node, ctx) {
471
+ ctx.imports.add("api-class");
472
+ const name = node.props?.name ?? "";
473
+ const kind = node.props?.kind ?? "func";
474
+ const signature = node.props?.signature;
475
+ const bases = node.props?.bases || [];
476
+ const level = node.type === "api-class" ? 2 : 3;
477
+ const attrs = [`name="${escapeAttr(name)}"`, `kind="${escapeAttr(kind)}"`, `level={${level}}`];
478
+ if (signature)
479
+ attrs.push(`signature={${escapeExpr(signature)}}`);
480
+ if (bases.length > 0)
481
+ attrs.push(`bases={${JSON.stringify(bases)}}`);
482
+ const inner = childrenToAstro(node, ctx);
483
+ return `<ApiSymbol ${attrs.join(" ")}>\n${indentStr(inner, 2)}\n</ApiSymbol>`;
484
+ }
485
+ function apiDocToAstro(node, ctx) {
486
+ ctx.imports.add("api-doc");
487
+ const html = node.props?.html ?? "";
488
+ return `<ApiDoc html={${escapeExpr(html)}} />`;
489
+ }
490
+ function apiParamsToAstro(node, ctx) {
491
+ ctx.imports.add("api-params");
492
+ const params = node.props?.params ?? [];
493
+ return `<ApiParams params={${JSON.stringify(params)}} />`;
494
+ }
495
+ function apiSourceToAstro(node, ctx) {
496
+ ctx.imports.add("api-source");
497
+ const code = node.props?.code ?? "";
498
+ const file = node.props?.file;
499
+ const line = node.props?.line;
500
+ const attrs = [`code={${escapeExpr(code)}}`];
501
+ if (file)
502
+ attrs.push(`file="${escapeAttr(file)}"`);
503
+ if (line)
504
+ attrs.push(`line={${line}}`);
505
+ return `<ApiSource ${attrs.join(" ")} />`;
506
+ }
507
+ function cardsToAstro(node, ctx) {
508
+ ctx.imports.add("grid");
509
+ ctx.imports.add("card");
510
+ const items = (node.children ?? [])
511
+ .filter((c) => c.type === "unordered-list")
512
+ .flatMap((ul) => ul.children ?? []);
513
+ if (items.length === 0) {
514
+ // Fallback: render children directly in grid
515
+ return `<Grid cols={[1, 2]} gap={4}>\n${childrenToAstro(node, ctx)}\n</Grid>`;
516
+ }
517
+ const cards = items
518
+ .map((item) => `<Card>\n<CardContent>\n${childrenToAstro(item, ctx)}\n</CardContent>\n</Card>`)
519
+ .join("\n");
520
+ return `<Grid cols={[1, 2]} gap={4}>\n${cards}\n</Grid>`;
521
+ }
522
+ function htmlContainerToAstro(node, ctx) {
523
+ const attrs = node.props?.attrs ?? {};
524
+ const classes = attrs.class ?? "";
525
+ if (classes.includes("grid") && classes.includes("cards")) {
526
+ return cardsToAstro(node, ctx);
527
+ }
528
+ if (classes.includes("mdx-columns")) {
529
+ const inner = childrenToAstro(node, ctx);
530
+ return `<div class="columns-1 sm:columns-2 gap-4 [&_ul]:m-0">\n${inner}\n</div>`;
531
+ }
532
+ const inner = childrenToAstro(node, ctx);
533
+ return `<div>\n${inner}\n</div>`;
534
+ }
535
+ // ─── Utilities ────────────────────────────────────────────────────
536
+ function childrenToAstro(node, ctx) {
537
+ if (!node.children || node.children.length === 0)
538
+ return "";
539
+ return node.children.map((n) => nodeToAstro(n, ctx)).filter(Boolean).join("\n");
540
+ }
541
+ function indentStr(text, spaces) {
542
+ const prefix = " ".repeat(spaces);
543
+ return text
544
+ .split("\n")
545
+ .map((line) => (line ? `${prefix}${line}` : line))
546
+ .join("\n");
547
+ }
548
+ function escapeHtml(s) {
549
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
550
+ }
551
+ //# sourceMappingURL=to-astro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-astro.js","sourceRoot":"","sources":["../../src/export/to-astro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { ExportPage, NavItem } from "@dogsbay/types";
2
+ /**
3
+ * Options for project export.
4
+ */
5
+ export interface MkdocsProjectOptions {
6
+ siteName: string;
7
+ siteUrl?: string;
8
+ repoUrl?: string;
9
+ /** Override auto-detected extensions */
10
+ extraExtensions?: string[];
11
+ /** Theme name (default: "material") */
12
+ theme?: string;
13
+ }
14
+ /**
15
+ * Result of a project export.
16
+ * A map of file paths → file contents, ready to write to disk.
17
+ */
18
+ export interface MkdocsProjectExport {
19
+ files: Map<string, string>;
20
+ mkdocsYml: string;
21
+ }
22
+ /**
23
+ * Export a set of pages + navigation to a complete MkDocs project.
24
+ * Returns file map (path → content) including mkdocs.yml and all .md files.
25
+ */
26
+ export declare function exportMkdocsProject(pages: ExportPage[], nav: NavItem[], options: MkdocsProjectOptions): MkdocsProjectExport;
27
+ //# sourceMappingURL=to-mkdocs-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-mkdocs-project.d.ts","sourceRoot":"","sources":["../../src/export/to-mkdocs-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGpE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EAAE,EACnB,GAAG,EAAE,OAAO,EAAE,EACd,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAuBrB"}