jamdesk 1.1.127 → 1.1.129
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/commands/broken-links.d.ts +2 -0
- package/dist/commands/broken-links.d.ts.map +1 -1
- package/dist/commands/broken-links.js +11 -2
- package/dist/commands/broken-links.js.map +1 -1
- package/dist/lib/deps.d.ts.map +1 -1
- package/dist/lib/deps.js +5 -0
- package/dist/lib/deps.js.map +1 -1
- package/package.json +2 -1
- package/vendored/app/api/markdown-export/[project]/[...slug]/route.ts +71 -1
- package/vendored/app/layout.tsx +8 -0
- package/vendored/components/AIActionsMenu.tsx +72 -3
- package/vendored/components/layout/EmbedLinkInterceptor.tsx +37 -0
- package/vendored/components/layout/LayoutWrapper.tsx +29 -1
- package/vendored/components/layout/PageColumns.tsx +10 -5
- package/vendored/components/navigation/Breadcrumb.tsx +6 -1
- package/vendored/components/navigation/SocialFooter.tsx +40 -17
- package/vendored/lib/api-spec-menu-gate.ts +49 -0
- package/vendored/lib/api-spec-offer.ts +50 -0
- package/vendored/lib/api-specs-bundle.ts +255 -0
- package/vendored/lib/api-specs-markdown-hint.ts +49 -0
- package/vendored/lib/api-specs-route.ts +45 -0
- package/vendored/lib/docs-types.ts +1 -1
- package/vendored/lib/heading-extractor.ts +34 -30
- package/vendored/lib/layout-helpers.tsx +19 -2
- package/vendored/lib/middleware-helpers.ts +29 -0
- package/vendored/lib/render-doc-page.tsx +93 -76
- package/vendored/lib/scanner-blocklist.ts +7 -0
- package/vendored/lib/static-artifacts.ts +39 -9
- package/vendored/lib/static-file-route.ts +35 -1
- package/vendored/scripts/github-slugger-regex.cjs +13 -0
- package/vendored/scripts/validate-links.cjs +136 -22
- package/vendored/themes/jam/variables.css +8 -0
- package/vendored/workspace-package-lock.json +128 -120
|
@@ -9,6 +9,8 @@ export interface BrokenLink {
|
|
|
9
9
|
file: string;
|
|
10
10
|
line: number | null;
|
|
11
11
|
link: string;
|
|
12
|
+
/** Present for fragment-not-found warnings; carries any "Did you mean #x?" hint. */
|
|
13
|
+
message?: string;
|
|
12
14
|
suggestion?: string;
|
|
13
15
|
}
|
|
14
16
|
export interface BrokenLinksOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broken-links.d.ts","sourceRoot":"","sources":["../../src/commands/broken-links.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"broken-links.d.ts","sourceRoot":"","sources":["../../src/commands/broken-links.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwG5E"}
|
|
@@ -66,6 +66,10 @@ export async function brokenLinks(options) {
|
|
|
66
66
|
spin.stop();
|
|
67
67
|
// Add suggestions using Levenshtein distance
|
|
68
68
|
const brokenWithSuggestions = warnings.map((w) => {
|
|
69
|
+
// Fragment-not-found warnings carry their own message (incl. any
|
|
70
|
+
// "Did you mean #anchor?" hint); a page-path Levenshtein guess would be noise.
|
|
71
|
+
if (w.message)
|
|
72
|
+
return { ...w };
|
|
69
73
|
let suggestion;
|
|
70
74
|
let minDistance = Infinity;
|
|
71
75
|
// Normalize the link for comparison
|
|
@@ -86,10 +90,15 @@ export async function brokenLinks(options) {
|
|
|
86
90
|
process.exit(0);
|
|
87
91
|
}
|
|
88
92
|
console.log('\nBroken links found:\n');
|
|
89
|
-
for (const { file, line, link, suggestion } of brokenWithSuggestions) {
|
|
93
|
+
for (const { file, line, link, message, suggestion } of brokenWithSuggestions) {
|
|
90
94
|
const location = line ? `${file}:${line}` : file;
|
|
91
95
|
console.log(`${location} - ${link}`);
|
|
92
|
-
if (
|
|
96
|
+
if (message) {
|
|
97
|
+
// Fragment-not-found: show the validator's message verbatim (it already
|
|
98
|
+
// includes "Did you mean #anchor?" when a near-miss heading exists).
|
|
99
|
+
console.log(` └─ ${message}`);
|
|
100
|
+
}
|
|
101
|
+
else if (suggestion) {
|
|
93
102
|
console.log(` └─ Did you mean: ${suggestion}`);
|
|
94
103
|
}
|
|
95
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broken-links.js","sourceRoot":"","sources":["../../src/commands/broken-links.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"broken-links.js","sourceRoot":"","sources":["../../src/commands/broken-links.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/deps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiFhD,CAAC;AA0CF;;;;;;;;;GASG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAalB;AAoFD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;CAUpB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AA+B7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,4BAA4B,CAChD,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CAmDf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB;AA+SD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/lib/deps.js
CHANGED
|
@@ -55,6 +55,9 @@ export const REQUIRED_DEPS = {
|
|
|
55
55
|
'rehype-highlight': '^7.0.0',
|
|
56
56
|
'rehype-katex': '^7.0.1',
|
|
57
57
|
'rehype-slug': '^6.0.0',
|
|
58
|
+
// Used directly by vendored heading-extractor (TOC/Update/Step anchors) —
|
|
59
|
+
// the same slugger rehype-slug assigns real heading ids with.
|
|
60
|
+
'github-slugger': '^2.0.0',
|
|
58
61
|
'remark-gfm': '^4.0.0',
|
|
59
62
|
'remark-math': '^6.0.0',
|
|
60
63
|
'remark-smartypants': '^3.0.2',
|
|
@@ -65,6 +68,8 @@ export const REQUIRED_DEPS = {
|
|
|
65
68
|
'mermaid': '^11.14.0',
|
|
66
69
|
// YAML parsing (for OpenAPI specs)
|
|
67
70
|
'js-yaml': '^4.1.1',
|
|
71
|
+
// Zip assembly for the "Download API spec" bundle (vendored api-specs-bundle.ts)
|
|
72
|
+
'fflate': '^0.8.2',
|
|
68
73
|
// Schema validation
|
|
69
74
|
'ajv': '^8.17.1',
|
|
70
75
|
'ajv-formats': '^3.0.1',
|
package/dist/lib/deps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamdesk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.129",
|
|
4
4
|
"description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jamdesk",
|
|
@@ -110,6 +110,7 @@
|
|
|
110
110
|
"dictionary-en": "^4.0.0",
|
|
111
111
|
"fastest-levenshtein": "^1.0.16",
|
|
112
112
|
"fs-extra": "^11.2.0",
|
|
113
|
+
"github-slugger": "^2.0.0",
|
|
113
114
|
"glob": "^13.0.6",
|
|
114
115
|
"gray-matter": "^4.0.3",
|
|
115
116
|
"ignore": "^7.0.5",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NextResponse } from 'next/server';
|
|
2
2
|
import {
|
|
3
3
|
fetchMdxContent,
|
|
4
|
+
fetchDocsConfig,
|
|
4
5
|
R2_NOT_FOUND_ERROR_NAMES,
|
|
5
6
|
R2_NOT_FOUND_MESSAGE_PREFIX,
|
|
6
7
|
} from '@/lib/r2-content';
|
|
@@ -11,6 +12,13 @@ import {
|
|
|
11
12
|
MARKDOWN_CACHE_PUBLIC,
|
|
12
13
|
MARKDOWN_CACHE_PRIVATE,
|
|
13
14
|
} from '@/lib/content-negotiation';
|
|
15
|
+
import { parseFrontmatterLenient } from '@/lib/frontmatter-utils';
|
|
16
|
+
import { siteHasOpenApiSpecs } from '@/lib/api-specs-bundle';
|
|
17
|
+
import { getContextualOptions } from '@/lib/contextual-defaults';
|
|
18
|
+
import { isIsrMode, getBaseUrlFromConfig } from '@/lib/page-isr-helpers';
|
|
19
|
+
import { apiSpecsMarkdownFooter } from '@/lib/api-specs-markdown-hint';
|
|
20
|
+
import { logger } from '@/shared/logger';
|
|
21
|
+
import type { DocsConfig } from '@/lib/docs-types';
|
|
14
22
|
|
|
15
23
|
export const runtime = 'nodejs';
|
|
16
24
|
export const dynamic = 'force-dynamic';
|
|
@@ -52,6 +60,10 @@ export async function GET(
|
|
|
52
60
|
}
|
|
53
61
|
|
|
54
62
|
const filtered = filterVisibility(raw, 'agents');
|
|
63
|
+
// Arg order is load-bearing: `filtered` is the agent-visible body the footer
|
|
64
|
+
// is appended to; `raw` is the unfiltered source the helper reads frontmatter
|
|
65
|
+
// from (visibility filtering never touches the leading YAML block).
|
|
66
|
+
const body = await withApiSpecsHint(filtered, raw, project);
|
|
55
67
|
|
|
56
68
|
// Two paths reach this handler via proxy rewrite:
|
|
57
69
|
// (a) `.md` URL: unique CDN cache key, safe to share.
|
|
@@ -62,7 +74,7 @@ export async function GET(
|
|
|
62
74
|
? MARKDOWN_CACHE_PRIVATE
|
|
63
75
|
: MARKDOWN_CACHE_PUBLIC;
|
|
64
76
|
|
|
65
|
-
return new NextResponse(
|
|
77
|
+
return new NextResponse(body, {
|
|
66
78
|
headers: {
|
|
67
79
|
'Content-Type': 'text/markdown; charset=utf-8',
|
|
68
80
|
'Content-Disposition': 'inline',
|
|
@@ -74,3 +86,61 @@ export async function GET(
|
|
|
74
86
|
},
|
|
75
87
|
});
|
|
76
88
|
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Append the agent-facing "download all OpenAPI specs" footer when the page is
|
|
92
|
+
* an API/OpenAPI page of a spec-bearing site whose AI-actions menu is enabled,
|
|
93
|
+
* in ISR. Non-fatal: any failure returns the markdown unchanged — it never throws
|
|
94
|
+
* and never 500s an export.
|
|
95
|
+
*
|
|
96
|
+
* The URL is built from the server-known project slug (getBaseUrlFromConfig), not
|
|
97
|
+
* request headers — so it's unspoofable, deterministic, and cache-safe. The
|
|
98
|
+
* api-specs.zip route is registered at both `/` and `/docs`, so
|
|
99
|
+
* `https://<slug>.jamdesk.app[/docs]/api-specs.zip` always resolves.
|
|
100
|
+
*/
|
|
101
|
+
async function withApiSpecsHint(
|
|
102
|
+
markdown: string,
|
|
103
|
+
raw: string,
|
|
104
|
+
project: string,
|
|
105
|
+
): Promise<string> {
|
|
106
|
+
try {
|
|
107
|
+
if (!isIsrMode()) return markdown;
|
|
108
|
+
|
|
109
|
+
const { data } = parseFrontmatterLenient(raw);
|
|
110
|
+
const pageHasOpenApi = !!data.openapi;
|
|
111
|
+
const pageHasApi = !!data.api;
|
|
112
|
+
if (!(pageHasOpenApi || pageHasApi)) return markdown;
|
|
113
|
+
|
|
114
|
+
// Config drives the site-wide spec check, the menu-enabled check, and the
|
|
115
|
+
// hostAtDocs link prefix. A failure must not 500 the export and must not
|
|
116
|
+
// block a page-level `openapi:` page (which qualifies on its own). Treat a
|
|
117
|
+
// failed/missing config as "no site specs" but keep the default-enabled menu.
|
|
118
|
+
let config: DocsConfig | null = null;
|
|
119
|
+
try {
|
|
120
|
+
config = await fetchDocsConfig(project);
|
|
121
|
+
} catch (err) {
|
|
122
|
+
logger.warn('[api-specs-hint] config fetch failed', {
|
|
123
|
+
project,
|
|
124
|
+
error: err instanceof Error ? err.message : String(err),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const zipUrl = `${getBaseUrlFromConfig(project, !!config?.hostAtDocs)}/api-specs.zip`;
|
|
129
|
+
|
|
130
|
+
const footer = apiSpecsMarkdownFooter({
|
|
131
|
+
isIsr: true,
|
|
132
|
+
menuEnabled: config ? getContextualOptions(config).length > 0 : true,
|
|
133
|
+
pageHasOpenApi,
|
|
134
|
+
pageHasApi,
|
|
135
|
+
siteHasSpecs: !!config && siteHasOpenApiSpecs(config),
|
|
136
|
+
zipUrl,
|
|
137
|
+
});
|
|
138
|
+
return footer ? markdown + footer : markdown;
|
|
139
|
+
} catch (err) {
|
|
140
|
+
logger.warn('[api-specs-hint] skipped', {
|
|
141
|
+
project,
|
|
142
|
+
error: err instanceof Error ? err.message : String(err),
|
|
143
|
+
});
|
|
144
|
+
return markdown;
|
|
145
|
+
}
|
|
146
|
+
}
|
package/vendored/app/layout.tsx
CHANGED
|
@@ -56,6 +56,8 @@ async function generateMetadataImpl(): Promise<Metadata> {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
const faviconIcons = getFaviconIcons(config.favicon, config.assetVersion);
|
|
59
|
+
// Embed variant is a chrome-less duplicate of the page — don't index it.
|
|
60
|
+
const isEmbed = isIsrMode() && (await headers()).get('x-jd-layout') === 'embed';
|
|
59
61
|
return {
|
|
60
62
|
title: {
|
|
61
63
|
template: `%s — ${config.name}`,
|
|
@@ -63,6 +65,7 @@ async function generateMetadataImpl(): Promise<Metadata> {
|
|
|
63
65
|
},
|
|
64
66
|
description: config.description || `Documentation for ${config.name}`,
|
|
65
67
|
...(faviconIcons && { icons: { icon: faviconIcons } }),
|
|
68
|
+
...(isEmbed && { robots: { index: false, follow: false } }),
|
|
66
69
|
};
|
|
67
70
|
}
|
|
68
71
|
|
|
@@ -178,6 +181,9 @@ async function rootLayoutImpl({
|
|
|
178
181
|
customJs = getLocalFileContent('custom.js');
|
|
179
182
|
}
|
|
180
183
|
|
|
184
|
+
const embed = headersList.get('x-jd-layout') === 'embed';
|
|
185
|
+
const embedTheme = (headersList.get('x-jd-embed-theme') as 'light' | 'dark' | 'auto' | null) ?? 'auto';
|
|
186
|
+
|
|
181
187
|
const projectDefaultLang = resolveLanguageWithFallback(null, config.navigation?.languages);
|
|
182
188
|
const lang = getLanguageFromRequest(headersList) ?? projectDefaultLang;
|
|
183
189
|
const dir = isRTLLanguage(lang) ? 'rtl' : undefined;
|
|
@@ -193,6 +199,8 @@ async function rootLayoutImpl({
|
|
|
193
199
|
projectDefaultLang={projectDefaultLang}
|
|
194
200
|
customCss={customCss}
|
|
195
201
|
customJs={customJs}
|
|
202
|
+
embed={embed}
|
|
203
|
+
embedTheme={embedTheme}
|
|
196
204
|
>
|
|
197
205
|
{children}
|
|
198
206
|
</DocsChrome>
|
|
@@ -79,6 +79,16 @@ function FileTextIcon({ className }: { className?: string }) {
|
|
|
79
79
|
);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
function DownloadIcon({ className }: { className?: string }) {
|
|
83
|
+
return (
|
|
84
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}>
|
|
85
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
|
|
86
|
+
<polyline points="7 10 12 15 17 10" />
|
|
87
|
+
<line x1="12" y1="15" x2="12" y2="3" />
|
|
88
|
+
</svg>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
82
92
|
function PlugIcon({ className }: { className?: string }) {
|
|
83
93
|
return (
|
|
84
94
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className={className}>
|
|
@@ -150,7 +160,7 @@ function VSCodeIcon({ className }: { className?: string }) {
|
|
|
150
160
|
// BUILTIN OPTION METADATA
|
|
151
161
|
// =============================================================================
|
|
152
162
|
|
|
153
|
-
const BUILTIN_OPTIONS: Record<string, BuiltinOptionMeta> = {
|
|
163
|
+
export const BUILTIN_OPTIONS: Record<string, BuiltinOptionMeta> = {
|
|
154
164
|
copy: {
|
|
155
165
|
title: 'Copy page',
|
|
156
166
|
description: 'Copy page as Markdown for LLMs',
|
|
@@ -205,6 +215,12 @@ const BUILTIN_OPTIONS: Record<string, BuiltinOptionMeta> = {
|
|
|
205
215
|
icon: <VSCodeIcon className="w-4 h-4" />,
|
|
206
216
|
isExternal: true,
|
|
207
217
|
},
|
|
218
|
+
'download-api-spec': {
|
|
219
|
+
title: 'Download API spec',
|
|
220
|
+
description: 'Download all OpenAPI specs as a zip',
|
|
221
|
+
icon: <DownloadIcon className="w-4 h-4" />,
|
|
222
|
+
isExternal: false,
|
|
223
|
+
},
|
|
208
224
|
};
|
|
209
225
|
|
|
210
226
|
// =============================================================================
|
|
@@ -244,6 +260,20 @@ function buildMcpServerName(projectName: string): string {
|
|
|
244
260
|
return `${slug}-docs`;
|
|
245
261
|
}
|
|
246
262
|
|
|
263
|
+
/** Absolute URL of the site's api-specs.zip, honoring the hostAtDocs link prefix. */
|
|
264
|
+
export function buildApiSpecZipUrl(origin: string, linkPrefix: string): string {
|
|
265
|
+
return `${origin}${linkPrefix}/api-specs.zip`;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* True only for a real zip response. Guards the download from saving a 404 body
|
|
270
|
+
* or the password-unlock HTML page (both return 200 text/html) as "api-specs.zip".
|
|
271
|
+
*/
|
|
272
|
+
export function isZipContentType(contentType: string): boolean {
|
|
273
|
+
const ct = contentType.toLowerCase();
|
|
274
|
+
return ct.includes('zip') || ct.includes('octet-stream');
|
|
275
|
+
}
|
|
276
|
+
|
|
247
277
|
function buildMcpConfig(projectName: string, mcpUrl: string) {
|
|
248
278
|
return {
|
|
249
279
|
mcpServers: {
|
|
@@ -293,7 +323,9 @@ export function AIActionsMenu({ options, projectName }: AIActionsMenuProps) {
|
|
|
293
323
|
const [isOpen, setIsOpen] = useState(false);
|
|
294
324
|
const [copyFeedback, setCopyFeedback] = useState<FeedbackState>('idle');
|
|
295
325
|
const [mcpFeedback, setMcpFeedback] = useState<FeedbackState>('idle');
|
|
326
|
+
const [downloadFeedback, setDownloadFeedback] = useState<FeedbackState>('idle');
|
|
296
327
|
const copyLoadingRef = useRef(false);
|
|
328
|
+
const downloadLoadingRef = useRef(false);
|
|
297
329
|
const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
298
330
|
const menuRef = useRef<HTMLDivElement>(null);
|
|
299
331
|
const triggerRef = useRef<HTMLButtonElement>(null);
|
|
@@ -306,6 +338,7 @@ export function AIActionsMenu({ options, projectName }: AIActionsMenuProps) {
|
|
|
306
338
|
const mdRelativePath = `${pathname}.md`;
|
|
307
339
|
const mdAbsoluteUrl = `${origin}${pathname}.md`;
|
|
308
340
|
const mcpUrl = `${origin}${linkPrefix}/_mcp`;
|
|
341
|
+
const apiSpecZipUrl = buildApiSpecZipUrl(origin, linkPrefix);
|
|
309
342
|
|
|
310
343
|
// Close on navigation
|
|
311
344
|
useEffect(() => {
|
|
@@ -336,6 +369,7 @@ export function AIActionsMenu({ options, projectName }: AIActionsMenuProps) {
|
|
|
336
369
|
// Reset feedback states after 2s
|
|
337
370
|
useFeedbackTimer(copyFeedback, setCopyFeedback);
|
|
338
371
|
useFeedbackTimer(mcpFeedback, setMcpFeedback);
|
|
372
|
+
useFeedbackTimer(downloadFeedback, setDownloadFeedback);
|
|
339
373
|
|
|
340
374
|
const handleCopy = useCallback(async () => {
|
|
341
375
|
if (copyLoadingRef.current) return;
|
|
@@ -384,6 +418,35 @@ export function AIActionsMenu({ options, projectName }: AIActionsMenuProps) {
|
|
|
384
418
|
}
|
|
385
419
|
}, [projectName, mcpUrl]);
|
|
386
420
|
|
|
421
|
+
const handleDownloadSpec = useCallback(async () => {
|
|
422
|
+
if (downloadLoadingRef.current) return;
|
|
423
|
+
downloadLoadingRef.current = true;
|
|
424
|
+
setDownloadFeedback('loading');
|
|
425
|
+
try {
|
|
426
|
+
const res = await fetch(apiSpecZipUrl);
|
|
427
|
+
if (!res.ok) throw new Error(`Failed to fetch: ${res.status}`);
|
|
428
|
+
if (!isZipContentType(res.headers.get('content-type') || '')) {
|
|
429
|
+
throw new Error(`Unexpected content-type: ${res.headers.get('content-type')}`);
|
|
430
|
+
}
|
|
431
|
+
const blob = await res.blob();
|
|
432
|
+
const url = URL.createObjectURL(blob);
|
|
433
|
+
const a = document.createElement('a');
|
|
434
|
+
a.href = url;
|
|
435
|
+
a.download = 'api-specs.zip';
|
|
436
|
+
document.body.appendChild(a);
|
|
437
|
+
a.click();
|
|
438
|
+
a.remove();
|
|
439
|
+
// Defer revoke: Safari fires the download asynchronously after click(),
|
|
440
|
+
// and revoking the object URL synchronously can cancel the download.
|
|
441
|
+
setTimeout(() => URL.revokeObjectURL(url), 100);
|
|
442
|
+
setDownloadFeedback('success');
|
|
443
|
+
} catch {
|
|
444
|
+
setDownloadFeedback('error');
|
|
445
|
+
} finally {
|
|
446
|
+
downloadLoadingRef.current = false;
|
|
447
|
+
}
|
|
448
|
+
}, [apiSpecZipUrl]);
|
|
449
|
+
|
|
387
450
|
const handleAction = useCallback((option: ContextualOption) => {
|
|
388
451
|
if (typeof option !== 'string') {
|
|
389
452
|
// Custom option — open href
|
|
@@ -399,6 +462,9 @@ export function AIActionsMenu({ options, projectName }: AIActionsMenuProps) {
|
|
|
399
462
|
case 'view':
|
|
400
463
|
window.open(mdRelativePath, '_blank', 'noopener,noreferrer');
|
|
401
464
|
break;
|
|
465
|
+
case 'download-api-spec':
|
|
466
|
+
handleDownloadSpec();
|
|
467
|
+
break;
|
|
402
468
|
case 'chatgpt':
|
|
403
469
|
case 'claude':
|
|
404
470
|
case 'gemini':
|
|
@@ -434,13 +500,13 @@ export function AIActionsMenu({ options, projectName }: AIActionsMenuProps) {
|
|
|
434
500
|
}
|
|
435
501
|
|
|
436
502
|
// Close dropdown — copy actions close after brief delay so user sees feedback
|
|
437
|
-
if (option === 'copy' || option === 'mcp') {
|
|
503
|
+
if (option === 'copy' || option === 'mcp' || option === 'download-api-spec') {
|
|
438
504
|
if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
|
|
439
505
|
closeTimerRef.current = setTimeout(() => setIsOpen(false), COPY_FEEDBACK_DELAY_MS);
|
|
440
506
|
} else {
|
|
441
507
|
setIsOpen(false);
|
|
442
508
|
}
|
|
443
|
-
}, [handleCopy, handleMcpCopy, mdRelativePath, mdAbsoluteUrl, projectName, mcpUrl]);
|
|
509
|
+
}, [handleCopy, handleMcpCopy, handleDownloadSpec, mdRelativePath, mdAbsoluteUrl, projectName, mcpUrl]);
|
|
444
510
|
|
|
445
511
|
// Keyboard navigation within dropdown
|
|
446
512
|
const handleMenuKeyDown = useCallback((e: React.KeyboardEvent) => {
|
|
@@ -620,6 +686,9 @@ export function AIActionsMenu({ options, projectName }: AIActionsMenuProps) {
|
|
|
620
686
|
: option === 'mcp'
|
|
621
687
|
? (mcpFeedback === 'success' ? <CheckIcon className="w-4 h-4 text-emerald-500" /> :
|
|
622
688
|
mcpFeedback === 'error' ? <XIcon className="w-4 h-4 text-red-500" /> : meta.icon)
|
|
689
|
+
: option === 'download-api-spec'
|
|
690
|
+
? (downloadFeedback === 'success' ? <CheckIcon className="w-4 h-4 text-emerald-500" /> :
|
|
691
|
+
downloadFeedback === 'error' ? <XIcon className="w-4 h-4 text-red-500" /> : meta.icon)
|
|
623
692
|
: meta.icon;
|
|
624
693
|
|
|
625
694
|
return (
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* In embed mode the page lives inside a cross-origin iframe (the widget modal).
|
|
7
|
+
* Same-page hash anchors must scroll in-frame; any link that would navigate to
|
|
8
|
+
* a different page is broken OUT of the iframe into a new tab so users aren't
|
|
9
|
+
* trapped in the small modal. Uses event delegation so it covers MDX-rendered
|
|
10
|
+
* links without touching every anchor component. `display:contents` keeps the
|
|
11
|
+
* wrapper out of layout (prose CSS undisturbed) while clicks still bubble up.
|
|
12
|
+
*/
|
|
13
|
+
export function EmbedLinkInterceptor({ children }: { children: ReactNode }) {
|
|
14
|
+
const onClick = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
15
|
+
// Defer entirely to the browser for modified / non-primary clicks: the user
|
|
16
|
+
// has already asked for new-tab (cmd/ctrl), new-window (shift) or background
|
|
17
|
+
// (middle) behavior — hijacking it would double-open or break their intent.
|
|
18
|
+
if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
|
|
19
|
+
const anchor = (e.target as HTMLElement).closest('a');
|
|
20
|
+
if (!anchor) return;
|
|
21
|
+
const href = anchor.getAttribute('href');
|
|
22
|
+
if (!href) return;
|
|
23
|
+
// Same-page hash anchors (and pure "#") scroll inside the frame — leave them.
|
|
24
|
+
if (href.startsWith('#')) return;
|
|
25
|
+
// Non-navigable schemes (mail/phone/js) must use their native handler,
|
|
26
|
+
// not a blank new tab.
|
|
27
|
+
if (/^(mailto:|tel:|javascript:)/i.test(href)) return;
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
window.open(href, '_blank', 'noopener');
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<div onClick={onClick} style={{ display: 'contents' }}>
|
|
34
|
+
{children}
|
|
35
|
+
</div>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -15,6 +15,8 @@ import { getTheme, type ThemeName } from '@/themes';
|
|
|
15
15
|
interface LayoutWrapperProps {
|
|
16
16
|
config: DocsConfig;
|
|
17
17
|
children: React.ReactNode;
|
|
18
|
+
/** When true, render content only — no Header, Sidebar, TabsNav, chat, or footer chrome. */
|
|
19
|
+
embed?: boolean;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
/**
|
|
@@ -35,7 +37,7 @@ function useMediaQuery(query: string): boolean {
|
|
|
35
37
|
return matches;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
export function LayoutWrapper({ config, children }: LayoutWrapperProps) {
|
|
40
|
+
export function LayoutWrapper({ config, children, embed }: LayoutWrapperProps) {
|
|
39
41
|
const [isSidebarOpen, setIsSidebarOpen] = useState(false);
|
|
40
42
|
// Chat button is shown in both dev and production so the layout matches.
|
|
41
43
|
// In dev mode, clicking it shows a "production only" notice instead of opening the panel.
|
|
@@ -47,6 +49,32 @@ export function LayoutWrapper({ config, children }: LayoutWrapperProps) {
|
|
|
47
49
|
// Handle hash navigation for three-column independent scroll layout
|
|
48
50
|
useHashNavigation();
|
|
49
51
|
|
|
52
|
+
// Embed mode: render content only — no Header, Sidebar, TabsNav, chat,
|
|
53
|
+
// or footer chrome. Keeps theme + typography (provided by DocsChrome).
|
|
54
|
+
// Must appear AFTER all hook calls (Rules of Hooks).
|
|
55
|
+
if (embed) {
|
|
56
|
+
// Background sits on the full-height wrapper (not on <main> as in the
|
|
57
|
+
// chrome'd layouts) intentionally: embed has no sidebar column, so the
|
|
58
|
+
// wrapper IS the page surface.
|
|
59
|
+
return (
|
|
60
|
+
<div data-embed="true" className="min-h-screen bg-[var(--color-bg-primary)] transition-colors">
|
|
61
|
+
{/* Horizontal inset for embed content lives on the wrapper, not the
|
|
62
|
+
<article>: on mobile (<=1023px) the jam theme pins `#main-content
|
|
63
|
+
article` left/right padding to 0.5rem with !important, which an
|
|
64
|
+
article-level style can't beat — so the breathing room has to come
|
|
65
|
+
from a parent the rule doesn't target. The gradient (on <body>) and
|
|
66
|
+
the document scrollbar still reach the modal edge; only the content
|
|
67
|
+
insets. NOTE: that jam pin is mobile-only, so at >=1024px this wrapper
|
|
68
|
+
padding stacks on the article's own px-* — acceptable because the
|
|
69
|
+
default 560px modal renders at the mobile breakpoint; only unusually
|
|
70
|
+
wide modals see the extra inset. */}
|
|
71
|
+
<main id="main-content" className="flex flex-col overflow-x-hidden px-5 sm:px-6">
|
|
72
|
+
{children}
|
|
73
|
+
</main>
|
|
74
|
+
</div>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
50
78
|
// The body.scrolled toggle used to live here, but #content-scroll-container
|
|
51
79
|
// is rendered by PageColumns (in page.tsx) and remounts on every navigation.
|
|
52
80
|
// The listener attached once at LayoutWrapper mount referenced a detached
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { useEffect, useRef, type ReactNode } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { useChatPanelOptional } from '@/hooks/useChatPanel';
|
|
5
5
|
|
|
6
6
|
interface PageColumnsProps {
|
|
7
7
|
children: ReactNode;
|
|
8
8
|
toc: ReactNode;
|
|
9
9
|
isWideMode?: boolean;
|
|
10
|
+
embed?: boolean;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -14,8 +15,12 @@ interface PageColumnsProps {
|
|
|
14
15
|
* On xl+ screens, the TOC is hidden when chat is open (chat renders at layout level).
|
|
15
16
|
* On <xl screens, only content is rendered (TOC hidden, chat is a mobile overlay).
|
|
16
17
|
*/
|
|
17
|
-
export function PageColumns({ children, toc, isWideMode }: PageColumnsProps) {
|
|
18
|
-
|
|
18
|
+
export function PageColumns({ children, toc, isWideMode, embed }: PageColumnsProps) {
|
|
19
|
+
// Embed mode renders this column OUTSIDE the ChatPanelProvider (the embed
|
|
20
|
+
// LayoutWrapper branch drops the provider along with the rest of the chrome),
|
|
21
|
+
// so the throwing useChatPanel() would 500 the whole embed render. Use the
|
|
22
|
+
// optional accessor: no provider → chat closed, and `!embed` hides the TOC anyway.
|
|
23
|
+
const isChatOpen = useChatPanelOptional()?.isChatOpen ?? false;
|
|
19
24
|
const scrollRef = useRef<HTMLDivElement>(null);
|
|
20
25
|
|
|
21
26
|
// Toggle body.scrolled when the user scrolls past 500px in the content
|
|
@@ -50,8 +55,8 @@ export function PageColumns({ children, toc, isWideMode }: PageColumnsProps) {
|
|
|
50
55
|
{children}
|
|
51
56
|
</div>
|
|
52
57
|
|
|
53
|
-
{/* TOC — shown when chat is closed
|
|
54
|
-
{!isChatOpen && !isWideMode && (
|
|
58
|
+
{/* TOC — shown when chat is closed, not in wide mode, and not embedded */}
|
|
59
|
+
{!isChatOpen && !isWideMode && !embed && (
|
|
55
60
|
<aside className="hidden xl:block w-72 flex-shrink-0 xl:h-full xl:overflow-y-auto toc-scroll xl:ml-0.5 pr-2">
|
|
56
61
|
<div className="py-6 sm:py-10 pr-4">
|
|
57
62
|
{toc}
|
|
@@ -8,6 +8,9 @@ import { useLinkPrefix } from '@/lib/link-prefix-context';
|
|
|
8
8
|
interface BreadcrumbProps {
|
|
9
9
|
slug: string[];
|
|
10
10
|
config?: DocsConfig;
|
|
11
|
+
/** Embed render (widget modal): drop the breadcrumb — its links navigate the
|
|
12
|
+
* full docs and read as out of place inside an embedded changelog. */
|
|
13
|
+
hidden?: boolean;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
interface BreadcrumbItem {
|
|
@@ -245,8 +248,10 @@ function findPageNavTitle(config: DocsConfig, targetSlug: string): string | null
|
|
|
245
248
|
return null;
|
|
246
249
|
}
|
|
247
250
|
|
|
248
|
-
export function Breadcrumb({ slug, config }: BreadcrumbProps) {
|
|
251
|
+
export function Breadcrumb({ slug, config, hidden }: BreadcrumbProps) {
|
|
252
|
+
// Call hooks before the early return so hook order stays stable (Rules of Hooks).
|
|
249
253
|
const linkPrefix = useLinkPrefix();
|
|
254
|
+
if (hidden) return null;
|
|
250
255
|
const homeLink = config ? `${linkPrefix}/${getFirstPage(config)}` : `${linkPrefix}/introduction`;
|
|
251
256
|
const targetSlug = slug.join('/');
|
|
252
257
|
|