@fumapress/mintlify 0.0.2

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.
@@ -0,0 +1,42 @@
1
+ import { t as MintlifyDocsJson } from "./schema-DcUwCmHR.mjs";
2
+ import * as _$fumadocs_core_i18n0 from "fumadocs-core/i18n";
3
+ import { ConfigContext, ServerPlugin } from "fumapress";
4
+
5
+ //#region src/i18n.d.ts
6
+ interface MintlifyI18nOptions {
7
+ /** Override Mintlify -> Fumapress locale mapping */
8
+ localeMap?: Record<string, string>;
9
+ /** Override default language when not specified in docs.json */
10
+ defaultLanguage?: string;
11
+ }
12
+ declare function defineMintlifyI18n(docs: MintlifyDocsJson, options?: MintlifyI18nOptions): _$fumadocs_core_i18n0.I18nAPI<string>;
13
+ //#endregion
14
+ //#region src/read-config.d.ts
15
+ interface ReadMintlifyDocsOptions {
16
+ /** Path to docs.json, relative to cwd or absolute. Default: `docs.json` */
17
+ path?: string;
18
+ /** Project root for validating $ref paths. Default: cwd */
19
+ root?: string;
20
+ }
21
+ //#endregion
22
+ //#region src/index.d.ts
23
+ interface MintlifyPluginOptions extends ReadMintlifyDocsOptions, MintlifyI18nOptions {
24
+ /**
25
+ * Docs collection folder name inside `content/`.
26
+ * @default "docs"
27
+ */
28
+ docsDir?: string;
29
+ /**
30
+ * Apply Mintlify navbar links and site name to the docs layout.
31
+ * @default true
32
+ */
33
+ applyNavbar?: boolean;
34
+ /**
35
+ * Apply Mintlify redirects as middleware.
36
+ * @default true
37
+ */
38
+ applyRedirects?: boolean;
39
+ }
40
+ declare function mintlifyPlugin<C extends ConfigContext = ConfigContext>(options?: MintlifyPluginOptions): ServerPlugin<C>;
41
+ //#endregion
42
+ export { type MintlifyI18nOptions, MintlifyPluginOptions, defineMintlifyI18n, mintlifyPlugin };
package/dist/index.mjs ADDED
@@ -0,0 +1,345 @@
1
+ import { t as readMintlifyDocs } from "./read-config-Dd-lAs0k.mjs";
2
+ import { defineI18n } from "fumadocs-core/i18n";
3
+ //#region src/i18n.ts
4
+ /** Mintlify locale -> display name */
5
+ const LANGUAGE_LABELS = {
6
+ en: "English",
7
+ cn: "Chinese",
8
+ zh: "Chinese",
9
+ "zh-Hans": "Chinese (Simplified)",
10
+ "zh-Hant": "Chinese (Traditional)",
11
+ ja: "Japanese",
12
+ jp: "Japanese",
13
+ "ja-jp": "Japanese",
14
+ fr: "French",
15
+ "fr-ca": "French (Canada)",
16
+ "fr-CA": "French (Canada)",
17
+ de: "German",
18
+ es: "Spanish",
19
+ ko: "Korean",
20
+ pt: "Portuguese",
21
+ "pt-BR": "Portuguese (Brazil)",
22
+ it: "Italian",
23
+ ru: "Russian",
24
+ ar: "Arabic",
25
+ hi: "Hindi",
26
+ tr: "Turkish",
27
+ nl: "Dutch",
28
+ sv: "Swedish",
29
+ no: "Norwegian",
30
+ da: "Danish",
31
+ pl: "Polish",
32
+ uk: "Ukrainian",
33
+ vi: "Vietnamese"
34
+ };
35
+ function getMintlifyLanguages(docs) {
36
+ return docs.navigation.languages ?? docs.navigation.global?.languages ?? [];
37
+ }
38
+ function defineMintlifyI18n(docs, options = {}) {
39
+ const { localeMap } = options;
40
+ const languageEntries = getMintlifyLanguages(docs);
41
+ if (languageEntries.length === 0) throw new Error("[Fumapress Mintlify] docs.json does not define navigation.languages");
42
+ function toPressLocale(mintlifyLocale) {
43
+ return localeMap?.[mintlifyLocale] ?? mintlifyLocale;
44
+ }
45
+ function getMintlifyLanguage(locale) {
46
+ return pressLocaleToMintlify.get(locale);
47
+ }
48
+ const pressLocaleToMintlify = /* @__PURE__ */ new Map();
49
+ for (const entry of languageEntries) pressLocaleToMintlify.set(toPressLocale(entry.language), entry.language);
50
+ const i18n = defineI18n({
51
+ languages: Array.from(pressLocaleToMintlify.keys()),
52
+ defaultLanguage: toPressLocale(options.defaultLanguage ?? languageEntries.find((entry) => entry.default)?.language ?? languageEntries[0].language)
53
+ });
54
+ i18n._getMintlifyLanguage = getMintlifyLanguage;
55
+ const createTranslations = i18n.translations;
56
+ i18n.translations = () => {
57
+ const t = createTranslations();
58
+ for (const entry of languageEntries) {
59
+ const displayName = LANGUAGE_LABELS[entry.language];
60
+ if (!displayName) continue;
61
+ t.preset(toPressLocale(entry.language), {
62
+ name: "fumapress:mintlify",
63
+ value: { ui: { displayName } }
64
+ });
65
+ }
66
+ return t;
67
+ };
68
+ return i18n;
69
+ }
70
+ //#endregion
71
+ //#region src/navigation.ts
72
+ let nodeId = 0;
73
+ function nextId(prefix) {
74
+ nodeId += 1;
75
+ return `mintlify:${prefix}:${nodeId}`;
76
+ }
77
+ function normalizeMintPath(pagePath) {
78
+ return pagePath.replace(/^\//, "").replace(/^content\/(?:docs\/)?/, "").replace(/^docs\//, "").replace(/\.(mdx?|md)$/, "");
79
+ }
80
+ function versionFolderSlug(version) {
81
+ return version.trim().toLowerCase().replace(/[^\w.-]+/g, "-").replace(/-+/g, "-");
82
+ }
83
+ function iconName(icon) {
84
+ if (typeof icon === "string") return icon;
85
+ if (icon && typeof icon === "object" && "name" in icon) return icon.name;
86
+ }
87
+ function createPageIndex(root) {
88
+ const map = /* @__PURE__ */ new Map();
89
+ function add(key, item) {
90
+ if (!map.has(key)) map.set(key, item);
91
+ }
92
+ function walk(nodes) {
93
+ for (const node of nodes) {
94
+ if (node.type === "page") {
95
+ if (typeof node.$ref === "string") {
96
+ const ref = normalizeMintPath(node.$ref);
97
+ add(ref, node);
98
+ const base = ref.split("/").pop();
99
+ if (base) add(base, node);
100
+ }
101
+ continue;
102
+ }
103
+ if (node.type === "folder") {
104
+ if (node.index && typeof node.index.$ref === "string") add(normalizeMintPath(node.index.$ref), node.index);
105
+ walk(node.children);
106
+ }
107
+ }
108
+ }
109
+ walk(root.children);
110
+ return map;
111
+ }
112
+ function pagePathCandidates(pagePath, options = {}) {
113
+ const normalized = normalizeMintPath(pagePath);
114
+ const docsDir = options.docsDir ?? "docs";
115
+ const candidates = new Set([normalized]);
116
+ if (options.version) candidates.add(`${versionFolderSlug(options.version)}/${normalized}`);
117
+ if (!normalized.startsWith(`${docsDir}/`)) candidates.add(`${docsDir}/${normalized}`);
118
+ if (options.version) candidates.add(`${versionFolderSlug(options.version)}/${docsDir}/${normalized}`);
119
+ return [...candidates];
120
+ }
121
+ function findPage(pagePath, pageIndex, options = {}) {
122
+ for (const candidate of pagePathCandidates(pagePath, options)) {
123
+ const page = pageIndex.get(candidate);
124
+ if (page) return page;
125
+ }
126
+ const normalized = normalizeMintPath(pagePath);
127
+ const suffix = normalized.split("/").pop() ?? normalized;
128
+ return pageIndex.get(suffix) ?? [...pageIndex.entries()].find(([key]) => key.endsWith(`/${normalized}`))?.[1];
129
+ }
130
+ function buildExternalPage(name, href, icon) {
131
+ return {
132
+ $id: nextId("external"),
133
+ type: "page",
134
+ name,
135
+ url: href,
136
+ external: true,
137
+ icon
138
+ };
139
+ }
140
+ function buildGroupFolder(group, pageIndex, options) {
141
+ if (group.hidden) return void 0;
142
+ const children = [];
143
+ for (const entry of group.pages ?? []) {
144
+ const node = buildNavEntry(entry, pageIndex, options);
145
+ if (node) children.push(node);
146
+ }
147
+ if (children.length === 0 && !group.root) return void 0;
148
+ const folder = {
149
+ $id: nextId("group"),
150
+ type: "folder",
151
+ name: group.group,
152
+ icon: iconName(group.icon),
153
+ defaultOpen: group.expanded,
154
+ children,
155
+ $ref: { folder: normalizeMintPath(group.root ?? group.group) }
156
+ };
157
+ if (group.root) {
158
+ const index = findPage(group.root, pageIndex, options);
159
+ if (index) folder.index = index;
160
+ }
161
+ return folder;
162
+ }
163
+ function buildNavEntry(entry, pageIndex, options) {
164
+ if (typeof entry === "string") {
165
+ const page = findPage(entry, pageIndex, options);
166
+ if (page) return page;
167
+ if (/^https?:\/\//.test(entry)) return buildExternalPage(entry, entry);
168
+ console.warn(`[Fumapress Mintlify] Page not found in content source: ${entry}`);
169
+ return;
170
+ }
171
+ return buildGroupFolder(entry, pageIndex, options);
172
+ }
173
+ function buildSection(name, container, pageIndex, options, icon, href) {
174
+ if (href) return buildExternalPage(name, href, icon);
175
+ const children = buildNavigationChildren(container, pageIndex, options);
176
+ if (children.length === 0) return void 0;
177
+ return {
178
+ $id: nextId("section"),
179
+ type: "folder",
180
+ name,
181
+ icon,
182
+ children,
183
+ $ref: { folder: name.toLowerCase().replace(/\s+/g, "-") }
184
+ };
185
+ }
186
+ function buildNavigationChildren(container, pageIndex, options) {
187
+ const nodes = [];
188
+ if (container.pages) for (const entry of container.pages) {
189
+ const node = buildNavEntry(entry, pageIndex, options);
190
+ if (node) nodes.push(node);
191
+ }
192
+ if (container.groups) for (const group of container.groups) {
193
+ const node = buildGroupFolder(group, pageIndex, options);
194
+ if (node) nodes.push(node);
195
+ }
196
+ if (container.menu) for (const item of container.menu) {
197
+ const node = buildSection(item.item, item, pageIndex, options, iconName(item.icon), item.href);
198
+ if (node) nodes.push(node);
199
+ }
200
+ if (container.tabs) for (const tab of container.tabs) {
201
+ if (tab.hidden) continue;
202
+ const node = buildSection(tab.tab, tab, pageIndex, options, iconName(tab.icon), tab.href);
203
+ if (node) nodes.push(node);
204
+ }
205
+ if (container.anchors) for (const anchor of container.anchors) {
206
+ if (anchor.hidden) continue;
207
+ const node = buildSection(anchor.anchor, anchor, pageIndex, options, iconName(anchor.icon), anchor.href);
208
+ if (node) nodes.push(node);
209
+ }
210
+ if (container.dropdowns) for (const dropdown of container.dropdowns) {
211
+ if (dropdown.hidden) continue;
212
+ const node = buildSection(dropdown.dropdown, dropdown, pageIndex, options, iconName(dropdown.icon), dropdown.href);
213
+ if (node) nodes.push(node);
214
+ }
215
+ if (container.products) for (const product of container.products) {
216
+ if (product.hidden) continue;
217
+ const node = buildSection(product.name ?? product.product, product, pageIndex, options, iconName(product.icon), product.href);
218
+ if (node) nodes.push(node);
219
+ }
220
+ return nodes;
221
+ }
222
+ function pickLanguage(languages, language) {
223
+ if (!languages?.length) return void 0;
224
+ return languages.find((item) => item.language === language) ?? languages.find((item) => item.default) ?? languages[0];
225
+ }
226
+ function resolveNavigationContainer(navigation, options = {}) {
227
+ let container = navigation;
228
+ const language = pickLanguage(container.languages, options.language);
229
+ if (language) container = language;
230
+ return container;
231
+ }
232
+ function buildVersionRootFolder(version, pageIndex, options) {
233
+ if (version.hidden) return void 0;
234
+ const children = buildNavigationChildren(version, pageIndex, {
235
+ docsDir: options.docsDir,
236
+ version: version.version
237
+ });
238
+ if (children.length === 0) return void 0;
239
+ return {
240
+ $id: nextId("version"),
241
+ type: "folder",
242
+ name: version.version,
243
+ root: true,
244
+ defaultOpen: version.default,
245
+ children,
246
+ $ref: { folder: versionFolderSlug(version.version) }
247
+ };
248
+ }
249
+ function buildPageTreeFromNavigation(navigation, pageIndex, options = {}) {
250
+ nodeId = 0;
251
+ const container = resolveNavigationContainer(navigation, options);
252
+ const matchOptions = { docsDir: options.docsDir };
253
+ if (container.versions?.length) return container.versions.map((version) => buildVersionRootFolder(version, pageIndex, options)).filter((node) => node !== void 0);
254
+ return buildNavigationChildren(container, pageIndex, matchOptions);
255
+ }
256
+ //#endregion
257
+ //#region src/index.ts
258
+ function navbarLinkLabel(link) {
259
+ if (link.label) return link.label;
260
+ if (link.type === "github") return "GitHub";
261
+ if (link.type === "discord") return "Discord";
262
+ return link.href;
263
+ }
264
+ function navbarLinks(docs) {
265
+ const links = [];
266
+ if (docs.navbar?.links) for (const link of docs.navbar.links) links.push({
267
+ text: navbarLinkLabel(link),
268
+ url: link.href
269
+ });
270
+ const primary = docs.navbar?.primary;
271
+ if (primary) links.push({
272
+ text: navbarLinkLabel(primary),
273
+ url: primary.href
274
+ });
275
+ return links;
276
+ }
277
+ function mintlifyPlugin(options = {}) {
278
+ const { applyNavbar = true, applyRedirects = true, docsDir = "docs", ...readOptions } = options;
279
+ let docs;
280
+ function initNavigationRenderer(data, ctx) {
281
+ (data.renderers ??= []).push(async function(props) {
282
+ const root = (await ctx.getLoader()).getPageTree(this.page.locale);
283
+ const pageIndex = createPageIndex(root);
284
+ let mintlifyLanguage;
285
+ if (this.page.locale && ctx.i18nConfig) {
286
+ const { _getMintlifyLanguage } = ctx.i18nConfig;
287
+ mintlifyLanguage = _getMintlifyLanguage?.(this.page.locale);
288
+ }
289
+ const children = buildPageTreeFromNavigation(docs.navigation, pageIndex, {
290
+ language: mintlifyLanguage,
291
+ docsDir
292
+ });
293
+ if (children.length === 0) {
294
+ console.warn("[Fumapress Mintlify] No navigation entries matched existing pages; keeping default page tree");
295
+ return props;
296
+ }
297
+ props.layoutProps.tree = {
298
+ ...root,
299
+ name: docs.name,
300
+ children
301
+ };
302
+ return props;
303
+ });
304
+ }
305
+ return {
306
+ name: "fumapress:mintlify",
307
+ init() {
308
+ docs = readMintlifyDocs(readOptions);
309
+ if (getMintlifyLanguages(docs).length > 0 && !this.i18nConfig) console.warn("[Fumapress Mintlify] docs.json defines navigation.languages but i18n is not configured. Use defineMintlifyI18n() in press.config.tsx");
310
+ if (applyNavbar) {
311
+ const links = navbarLinks(docs);
312
+ const previousDefaultProps = this.layouts.defaultProps;
313
+ this.layouts.defaultProps = async function(env) {
314
+ const inherited = await previousDefaultProps?.call(this, env);
315
+ return {
316
+ ...inherited,
317
+ links: links.length > 0 ? [...links, ...inherited?.links ?? []] : inherited?.links,
318
+ nav: {
319
+ ...inherited?.nav,
320
+ title: docs.name
321
+ }
322
+ };
323
+ };
324
+ }
325
+ initNavigationRenderer(this.data["core:docs-layout"] ??= {}, this);
326
+ initNavigationRenderer(this.data["core:notebook-layout"] ??= {}, this);
327
+ },
328
+ createMiddlewares() {
329
+ if (!applyRedirects) return;
330
+ const redirects = docs.redirects;
331
+ if (!redirects?.length) return;
332
+ const middleware = async (c, next) => {
333
+ const pathname = c.req.path;
334
+ for (const redirect of redirects) {
335
+ if (pathname !== redirect.source && pathname !== `${redirect.source}/`) continue;
336
+ return c.redirect(redirect.destination, redirect.permanent === false ? 307 : 308);
337
+ }
338
+ return next();
339
+ };
340
+ return [middleware];
341
+ }
342
+ };
343
+ }
344
+ //#endregion
345
+ export { defineMintlifyI18n, mintlifyPlugin };
@@ -0,0 +1,15 @@
1
+ import { t as MintlifyDocsJson } from "./schema-DcUwCmHR.mjs";
2
+ import { OpenAPIOptions, OpenAPIServer } from "fumadocs-openapi/server";
3
+
4
+ //#region src/openapi.d.ts
5
+ interface MintlifyOpenAPIOptions extends OpenAPIOptions {
6
+ /** path to `docs.json` */
7
+ configPath?: string;
8
+ /** project directory, default to cwd */
9
+ root?: string;
10
+ /** override the content of `docs.json` */
11
+ _config?: MintlifyDocsJson;
12
+ }
13
+ declare function createMintlifyOpenAPI(options?: MintlifyOpenAPIOptions): OpenAPIServer;
14
+ //#endregion
15
+ export { MintlifyOpenAPIOptions, createMintlifyOpenAPI };
@@ -0,0 +1,32 @@
1
+ import { t as readMintlifyDocs } from "./read-config-Dd-lAs0k.mjs";
2
+ import path from "node:path";
3
+ import { createOpenAPI } from "fumadocs-openapi/server";
4
+ //#region src/openapi.ts
5
+ function collectSources(value, root) {
6
+ if (!value) return [];
7
+ return (Array.isArray(value) ? value : [value]).map((source) => {
8
+ if (typeof source === "string") return path.resolve(root, source);
9
+ return path.resolve(root, source.source);
10
+ });
11
+ }
12
+ function createMintlifyOpenAPI(options = {}) {
13
+ const { configPath, root = process.cwd(), _config, ...overrides } = options;
14
+ const docs = _config ?? readMintlifyDocs({
15
+ path: configPath,
16
+ root
17
+ });
18
+ function getOpenAPIOptions() {
19
+ if (!docs.api) return null;
20
+ const input = collectSources(docs.api.openapi, root);
21
+ return {
22
+ input: input.length > 0 ? input : void 0,
23
+ proxyUrl: docs.api?.playground?.proxy === false ? void 0 : "/api/proxy"
24
+ };
25
+ }
26
+ return createOpenAPI({
27
+ ...getOpenAPIOptions(),
28
+ ...overrides
29
+ });
30
+ }
31
+ //#endregion
32
+ export { createMintlifyOpenAPI };
@@ -0,0 +1,210 @@
1
+ import { readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { z } from "zod/mini";
4
+ //#region src/schema.ts
5
+ /**
6
+ * Mintlify docs.json schema.
7
+ *
8
+ * Based on https://www.mintlify.com/docs/organize/settings-reference
9
+ *
10
+ * Only properties currently used by @fumapress/mintlify are enabled.
11
+ * Unsupported properties are commented out for future backports.
12
+ */
13
+ const hexColor = z.string();
14
+ const iconSchema = z.union([z.string(), z.looseObject({
15
+ style: z.optional(z.string()),
16
+ name: z.string(),
17
+ library: z.optional(z.enum([
18
+ "fontawesome",
19
+ "lucide",
20
+ "tabler"
21
+ ]))
22
+ })]);
23
+ const mintlifyGroupSchema = z.lazy(() => z.looseObject({
24
+ group: z.string(),
25
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
26
+ icon: z.optional(iconSchema),
27
+ root: z.optional(z.string()),
28
+ expanded: z.optional(z.boolean()),
29
+ hidden: z.optional(z.boolean())
30
+ }));
31
+ const mintlifyNavEntrySchema = z.union([z.string(), mintlifyGroupSchema]);
32
+ const mintlifyMenuItemSchema = z.looseObject({
33
+ item: z.string(),
34
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
35
+ groups: z.optional(z.array(mintlifyGroupSchema)),
36
+ icon: z.optional(iconSchema),
37
+ description: z.optional(z.string()),
38
+ href: z.optional(z.string())
39
+ });
40
+ const mintlifyTabSchema = z.looseObject({
41
+ tab: z.string(),
42
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
43
+ groups: z.optional(z.array(mintlifyGroupSchema)),
44
+ menu: z.optional(z.array(mintlifyMenuItemSchema)),
45
+ icon: z.optional(iconSchema),
46
+ href: z.optional(z.string()),
47
+ hidden: z.optional(z.boolean())
48
+ });
49
+ const mintlifyAnchorSchema = z.looseObject({
50
+ anchor: z.string(),
51
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
52
+ groups: z.optional(z.array(mintlifyGroupSchema)),
53
+ icon: z.optional(iconSchema),
54
+ href: z.optional(z.string()),
55
+ hidden: z.optional(z.boolean())
56
+ });
57
+ const mintlifyDropdownSchema = z.looseObject({
58
+ dropdown: z.string(),
59
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
60
+ groups: z.optional(z.array(mintlifyGroupSchema)),
61
+ icon: z.optional(iconSchema),
62
+ href: z.optional(z.string()),
63
+ hidden: z.optional(z.boolean())
64
+ });
65
+ const mintlifyProductSchema = z.looseObject({
66
+ product: z.string(),
67
+ name: z.optional(z.string()),
68
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
69
+ groups: z.optional(z.array(mintlifyGroupSchema)),
70
+ icon: z.optional(iconSchema),
71
+ href: z.optional(z.string()),
72
+ hidden: z.optional(z.boolean())
73
+ });
74
+ const mintlifyVersionNavSchema = z.lazy(() => z.looseObject({
75
+ version: z.string(),
76
+ default: z.optional(z.boolean()),
77
+ tag: z.optional(z.string()),
78
+ hidden: z.optional(z.boolean()),
79
+ href: z.optional(z.string()),
80
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
81
+ groups: z.optional(z.array(mintlifyGroupSchema)),
82
+ tabs: z.optional(z.array(mintlifyTabSchema)),
83
+ anchors: z.optional(z.array(mintlifyAnchorSchema)),
84
+ dropdowns: z.optional(z.array(mintlifyDropdownSchema)),
85
+ products: z.optional(z.array(mintlifyProductSchema)),
86
+ languages: z.optional(z.array(mintlifyLanguageNavSchema))
87
+ }));
88
+ const mintlifyLanguageNavSchema = z.looseObject({
89
+ language: z.string(),
90
+ default: z.optional(z.boolean()),
91
+ hidden: z.optional(z.boolean()),
92
+ href: z.optional(z.string()),
93
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
94
+ groups: z.optional(z.array(mintlifyGroupSchema)),
95
+ tabs: z.optional(z.array(mintlifyTabSchema)),
96
+ anchors: z.optional(z.array(mintlifyAnchorSchema)),
97
+ dropdowns: z.optional(z.array(mintlifyDropdownSchema)),
98
+ products: z.optional(z.array(mintlifyProductSchema)),
99
+ versions: z.optional(z.array(mintlifyVersionNavSchema))
100
+ });
101
+ const mintlifyNavigationSchema = z.looseObject({
102
+ global: z.optional(z.looseObject({
103
+ tabs: z.optional(z.array(mintlifyTabSchema)),
104
+ anchors: z.optional(z.array(mintlifyAnchorSchema)),
105
+ dropdowns: z.optional(z.array(mintlifyDropdownSchema)),
106
+ languages: z.optional(z.array(mintlifyLanguageNavSchema)),
107
+ versions: z.optional(z.array(mintlifyVersionNavSchema)),
108
+ products: z.optional(z.array(mintlifyProductSchema))
109
+ })),
110
+ languages: z.optional(z.array(mintlifyLanguageNavSchema)),
111
+ versions: z.optional(z.array(mintlifyVersionNavSchema)),
112
+ tabs: z.optional(z.array(mintlifyTabSchema)),
113
+ anchors: z.optional(z.array(mintlifyAnchorSchema)),
114
+ dropdowns: z.optional(z.array(mintlifyDropdownSchema)),
115
+ products: z.optional(z.array(mintlifyProductSchema)),
116
+ groups: z.optional(z.array(mintlifyGroupSchema)),
117
+ pages: z.optional(z.array(mintlifyNavEntrySchema)),
118
+ menu: z.optional(z.array(mintlifyMenuItemSchema))
119
+ });
120
+ const mintlifyNavbarLinkSchema = z.looseObject({
121
+ label: z.optional(z.string()),
122
+ href: z.string(),
123
+ type: z.optional(z.union([
124
+ z.literal("github"),
125
+ z.literal("discord"),
126
+ z.string()
127
+ ])),
128
+ icon: z.optional(iconSchema)
129
+ });
130
+ const mintlifyNavbarSchema = z.looseObject({
131
+ links: z.optional(z.array(mintlifyNavbarLinkSchema)),
132
+ primary: z.optional(mintlifyNavbarLinkSchema)
133
+ });
134
+ const mintlifyRedirectSchema = z.looseObject({
135
+ source: z.string(),
136
+ destination: z.string(),
137
+ permanent: z.optional(z.boolean())
138
+ });
139
+ const mintlifyOpenAPISourceSchema = z.union([z.string(), z.looseObject({
140
+ source: z.string(),
141
+ directory: z.optional(z.string())
142
+ })]);
143
+ const mintlifyApiSchema = z.looseObject({
144
+ openapi: z.optional(z.union([mintlifyOpenAPISourceSchema, z.array(mintlifyOpenAPISourceSchema)])),
145
+ playground: z.optional(z.looseObject({ proxy: z.optional(z.boolean()) })),
146
+ url: z.optional(z.literal("full"))
147
+ });
148
+ const mintlifyDocsJsonSchema = z.looseObject({
149
+ $schema: z.optional(z.string()),
150
+ theme: z.string(),
151
+ name: z.string(),
152
+ colors: z.looseObject({ primary: hexColor }),
153
+ navigation: mintlifyNavigationSchema,
154
+ description: z.optional(z.string()),
155
+ navbar: z.optional(mintlifyNavbarSchema),
156
+ redirects: z.optional(z.array(mintlifyRedirectSchema)),
157
+ api: z.optional(mintlifyApiSchema)
158
+ });
159
+ function parseMintlifyDocsJson(input) {
160
+ const result = mintlifyDocsJsonSchema.safeParse(input);
161
+ if (!result.success) {
162
+ const message = result.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join("\n");
163
+ throw new Error(`[Fumapress Mintlify] Invalid docs.json:\n${message}`);
164
+ }
165
+ return result.data;
166
+ }
167
+ //#endregion
168
+ //#region src/read-config.ts
169
+ function isObject(value) {
170
+ return typeof value === "object" && value !== null && !Array.isArray(value);
171
+ }
172
+ function assertInRoot(root, target) {
173
+ const relative = path.relative(root, target);
174
+ if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error(`[Fumapress Mintlify] Invalid $ref path "${target}": must stay within project root`);
175
+ }
176
+ function readJsonFile(filePath) {
177
+ const raw = readFileSync(filePath, "utf8");
178
+ return JSON.parse(raw);
179
+ }
180
+ function resolveValue(value, baseDir, root, stack) {
181
+ if (Array.isArray(value)) return value.map((item) => resolveValue(item, baseDir, root, stack));
182
+ if (!isObject(value)) return value;
183
+ if ("$ref" in value && typeof value.$ref === "string") {
184
+ const refPath = path.resolve(baseDir, value.$ref);
185
+ assertInRoot(root, refPath);
186
+ if (stack.has(refPath)) throw new Error(`[Fumapress Mintlify] Circular $ref detected: ${refPath}`);
187
+ stack.add(refPath);
188
+ const referenced = resolveValue(readJsonFile(refPath), path.dirname(refPath), root, stack);
189
+ stack.delete(refPath);
190
+ const { $ref: _ref, ...siblings } = value;
191
+ if (!isObject(referenced) && Object.keys(siblings).length > 0) return referenced;
192
+ if (isObject(referenced)) return resolveValue({
193
+ ...referenced,
194
+ ...siblings
195
+ }, baseDir, root, stack);
196
+ return referenced;
197
+ }
198
+ const out = {};
199
+ for (const [key, child] of Object.entries(value)) out[key] = resolveValue(child, baseDir, root, stack);
200
+ return out;
201
+ }
202
+ function readMintlifyDocs(options = {}) {
203
+ const root = path.resolve(options.root ?? process.cwd());
204
+ const configPath = path.resolve(root, options.path ?? "docs.json");
205
+ const parsed = resolveValue(readJsonFile(configPath), path.dirname(configPath), root, /* @__PURE__ */ new Set());
206
+ if (!isObject(parsed)) throw new Error(`[Fumapress Mintlify] Expected docs.json to resolve to an object`);
207
+ return parseMintlifyDocsJson(parsed);
208
+ }
209
+ //#endregion
210
+ export { readMintlifyDocs as t };
@@ -0,0 +1,639 @@
1
+ import { output, z } from "zod/mini";
2
+
3
+ //#region src/schema.d.ts
4
+ declare const iconSchema: z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
5
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
6
+ name: z.ZodMiniString<string>;
7
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
8
+ fontawesome: "fontawesome";
9
+ lucide: "lucide";
10
+ tabler: "tabler";
11
+ }>>;
12
+ }, z.core.$loose>]>;
13
+ type MintlifyIcon = output<typeof iconSchema>;
14
+ interface MintlifyGroup {
15
+ group: string;
16
+ pages?: MintlifyNavEntry[];
17
+ icon?: MintlifyIcon;
18
+ root?: string;
19
+ expanded?: boolean;
20
+ hidden?: boolean;
21
+ }
22
+ declare const mintlifyNavEntrySchema: z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>;
23
+ type MintlifyNavEntry = z.output<typeof mintlifyNavEntrySchema>;
24
+ declare const mintlifyTabSchema: z.ZodMiniObject<{
25
+ tab: z.ZodMiniString<string>;
26
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
27
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
28
+ menu: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
29
+ item: z.ZodMiniString<string>;
30
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
31
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
32
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
33
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
34
+ name: z.ZodMiniString<string>;
35
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
36
+ fontawesome: "fontawesome";
37
+ lucide: "lucide";
38
+ tabler: "tabler";
39
+ }>>;
40
+ }, z.core.$loose>]>>;
41
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
42
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
43
+ }, z.core.$loose>>>;
44
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
45
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
46
+ name: z.ZodMiniString<string>;
47
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
48
+ fontawesome: "fontawesome";
49
+ lucide: "lucide";
50
+ tabler: "tabler";
51
+ }>>;
52
+ }, z.core.$loose>]>>;
53
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
54
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
55
+ }, z.core.$loose>;
56
+ declare const mintlifyAnchorSchema: z.ZodMiniObject<{
57
+ anchor: z.ZodMiniString<string>;
58
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
59
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
60
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
61
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
62
+ name: z.ZodMiniString<string>;
63
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
64
+ fontawesome: "fontawesome";
65
+ lucide: "lucide";
66
+ tabler: "tabler";
67
+ }>>;
68
+ }, z.core.$loose>]>>;
69
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
70
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
71
+ }, z.core.$loose>;
72
+ declare const mintlifyDropdownSchema: z.ZodMiniObject<{
73
+ dropdown: z.ZodMiniString<string>;
74
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
75
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
76
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
77
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
78
+ name: z.ZodMiniString<string>;
79
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
80
+ fontawesome: "fontawesome";
81
+ lucide: "lucide";
82
+ tabler: "tabler";
83
+ }>>;
84
+ }, z.core.$loose>]>>;
85
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
86
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
87
+ }, z.core.$loose>;
88
+ declare const mintlifyProductSchema: z.ZodMiniObject<{
89
+ product: z.ZodMiniString<string>;
90
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
91
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
92
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
93
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
94
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
95
+ name: z.ZodMiniString<string>;
96
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
97
+ fontawesome: "fontawesome";
98
+ lucide: "lucide";
99
+ tabler: "tabler";
100
+ }>>;
101
+ }, z.core.$loose>]>>;
102
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
103
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
104
+ }, z.core.$loose>;
105
+ type MintlifyTab = output<typeof mintlifyTabSchema>;
106
+ type MintlifyAnchor = output<typeof mintlifyAnchorSchema>;
107
+ type MintlifyDropdown = output<typeof mintlifyDropdownSchema>;
108
+ type MintlifyProduct = output<typeof mintlifyProductSchema>;
109
+ type MintlifyLanguageNav = output<typeof mintlifyLanguageNavSchema>;
110
+ interface MintlifyVersionNav {
111
+ version: string;
112
+ default?: boolean;
113
+ tag?: string;
114
+ hidden?: boolean;
115
+ href?: string;
116
+ pages?: MintlifyNavEntry[];
117
+ groups?: MintlifyGroup[];
118
+ tabs?: MintlifyTab[];
119
+ anchors?: MintlifyAnchor[];
120
+ dropdowns?: MintlifyDropdown[];
121
+ products?: MintlifyProduct[];
122
+ languages?: MintlifyLanguageNav[];
123
+ }
124
+ declare const mintlifyLanguageNavSchema: z.ZodMiniObject<{
125
+ language: z.ZodMiniString<string>;
126
+ default: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
127
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
128
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
129
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
130
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
131
+ tabs: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
132
+ tab: z.ZodMiniString<string>;
133
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
134
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
135
+ menu: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
136
+ item: z.ZodMiniString<string>;
137
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
138
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
139
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
140
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
141
+ name: z.ZodMiniString<string>;
142
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
143
+ fontawesome: "fontawesome";
144
+ lucide: "lucide";
145
+ tabler: "tabler";
146
+ }>>;
147
+ }, z.core.$loose>]>>;
148
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
149
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
150
+ }, z.core.$loose>>>;
151
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
152
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
153
+ name: z.ZodMiniString<string>;
154
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
155
+ fontawesome: "fontawesome";
156
+ lucide: "lucide";
157
+ tabler: "tabler";
158
+ }>>;
159
+ }, z.core.$loose>]>>;
160
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
161
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
162
+ }, z.core.$loose>>>;
163
+ anchors: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
164
+ anchor: z.ZodMiniString<string>;
165
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
166
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
167
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
168
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
169
+ name: z.ZodMiniString<string>;
170
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
171
+ fontawesome: "fontawesome";
172
+ lucide: "lucide";
173
+ tabler: "tabler";
174
+ }>>;
175
+ }, z.core.$loose>]>>;
176
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
177
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
178
+ }, z.core.$loose>>>;
179
+ dropdowns: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
180
+ dropdown: z.ZodMiniString<string>;
181
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
182
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
183
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
184
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
185
+ name: z.ZodMiniString<string>;
186
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
187
+ fontawesome: "fontawesome";
188
+ lucide: "lucide";
189
+ tabler: "tabler";
190
+ }>>;
191
+ }, z.core.$loose>]>>;
192
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
193
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
194
+ }, z.core.$loose>>>;
195
+ products: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
196
+ product: z.ZodMiniString<string>;
197
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
198
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
199
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
200
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
201
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
202
+ name: z.ZodMiniString<string>;
203
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
204
+ fontawesome: "fontawesome";
205
+ lucide: "lucide";
206
+ tabler: "tabler";
207
+ }>>;
208
+ }, z.core.$loose>]>>;
209
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
210
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
211
+ }, z.core.$loose>>>;
212
+ versions: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyVersionNav, unknown, z.core.$ZodTypeInternals<MintlifyVersionNav, unknown>>>>;
213
+ }, z.core.$loose>;
214
+ declare const mintlifyDocsJsonSchema: z.ZodMiniObject<{
215
+ $schema: z.ZodMiniOptional<z.ZodMiniString<string>>;
216
+ theme: z.ZodMiniString<string>;
217
+ name: z.ZodMiniString<string>;
218
+ colors: z.ZodMiniObject<{
219
+ primary: z.ZodMiniString<string>;
220
+ }, z.core.$loose>;
221
+ navigation: z.ZodMiniObject<{
222
+ global: z.ZodMiniOptional<z.ZodMiniObject<{
223
+ tabs: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
224
+ tab: z.ZodMiniString<string>;
225
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
226
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
227
+ menu: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
228
+ item: z.ZodMiniString<string>;
229
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
230
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
231
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
232
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
233
+ name: z.ZodMiniString<string>;
234
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
235
+ fontawesome: "fontawesome";
236
+ lucide: "lucide";
237
+ tabler: "tabler";
238
+ }>>;
239
+ }, z.core.$loose>]>>;
240
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
241
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
242
+ }, z.core.$loose>>>;
243
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
244
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
245
+ name: z.ZodMiniString<string>;
246
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
247
+ fontawesome: "fontawesome";
248
+ lucide: "lucide";
249
+ tabler: "tabler";
250
+ }>>;
251
+ }, z.core.$loose>]>>;
252
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
253
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
254
+ }, z.core.$loose>>>;
255
+ anchors: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
256
+ anchor: z.ZodMiniString<string>;
257
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
258
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
259
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
260
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
261
+ name: z.ZodMiniString<string>;
262
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
263
+ fontawesome: "fontawesome";
264
+ lucide: "lucide";
265
+ tabler: "tabler";
266
+ }>>;
267
+ }, z.core.$loose>]>>;
268
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
269
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
270
+ }, z.core.$loose>>>;
271
+ dropdowns: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
272
+ dropdown: z.ZodMiniString<string>;
273
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
274
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
275
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
276
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
277
+ name: z.ZodMiniString<string>;
278
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
279
+ fontawesome: "fontawesome";
280
+ lucide: "lucide";
281
+ tabler: "tabler";
282
+ }>>;
283
+ }, z.core.$loose>]>>;
284
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
285
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
286
+ }, z.core.$loose>>>;
287
+ languages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
288
+ language: z.ZodMiniString<string>;
289
+ default: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
290
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
291
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
292
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
293
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
294
+ tabs: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
295
+ tab: z.ZodMiniString<string>;
296
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
297
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
298
+ menu: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
299
+ item: z.ZodMiniString<string>;
300
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
301
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
302
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
303
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
304
+ name: z.ZodMiniString<string>;
305
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
306
+ fontawesome: "fontawesome";
307
+ lucide: "lucide";
308
+ tabler: "tabler";
309
+ }>>;
310
+ }, z.core.$loose>]>>;
311
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
312
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
313
+ }, z.core.$loose>>>;
314
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
315
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
316
+ name: z.ZodMiniString<string>;
317
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
318
+ fontawesome: "fontawesome";
319
+ lucide: "lucide";
320
+ tabler: "tabler";
321
+ }>>;
322
+ }, z.core.$loose>]>>;
323
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
324
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
325
+ }, z.core.$loose>>>;
326
+ anchors: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
327
+ anchor: z.ZodMiniString<string>;
328
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
329
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
330
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
331
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
332
+ name: z.ZodMiniString<string>;
333
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
334
+ fontawesome: "fontawesome";
335
+ lucide: "lucide";
336
+ tabler: "tabler";
337
+ }>>;
338
+ }, z.core.$loose>]>>;
339
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
340
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
341
+ }, z.core.$loose>>>;
342
+ dropdowns: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
343
+ dropdown: z.ZodMiniString<string>;
344
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
345
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
346
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
347
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
348
+ name: z.ZodMiniString<string>;
349
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
350
+ fontawesome: "fontawesome";
351
+ lucide: "lucide";
352
+ tabler: "tabler";
353
+ }>>;
354
+ }, z.core.$loose>]>>;
355
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
356
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
357
+ }, z.core.$loose>>>;
358
+ products: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
359
+ product: z.ZodMiniString<string>;
360
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
361
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
362
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
363
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
364
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
365
+ name: z.ZodMiniString<string>;
366
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
367
+ fontawesome: "fontawesome";
368
+ lucide: "lucide";
369
+ tabler: "tabler";
370
+ }>>;
371
+ }, z.core.$loose>]>>;
372
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
373
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
374
+ }, z.core.$loose>>>;
375
+ versions: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyVersionNav, unknown, z.core.$ZodTypeInternals<MintlifyVersionNav, unknown>>>>;
376
+ }, z.core.$loose>>>;
377
+ versions: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyVersionNav, unknown, z.core.$ZodTypeInternals<MintlifyVersionNav, unknown>>>>;
378
+ products: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
379
+ product: z.ZodMiniString<string>;
380
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
381
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
382
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
383
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
384
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
385
+ name: z.ZodMiniString<string>;
386
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
387
+ fontawesome: "fontawesome";
388
+ lucide: "lucide";
389
+ tabler: "tabler";
390
+ }>>;
391
+ }, z.core.$loose>]>>;
392
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
393
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
394
+ }, z.core.$loose>>>;
395
+ }, z.core.$loose>>;
396
+ languages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
397
+ language: z.ZodMiniString<string>;
398
+ default: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
399
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
400
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
401
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
402
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
403
+ tabs: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
404
+ tab: z.ZodMiniString<string>;
405
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
406
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
407
+ menu: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
408
+ item: z.ZodMiniString<string>;
409
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
410
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
411
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
412
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
413
+ name: z.ZodMiniString<string>;
414
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
415
+ fontawesome: "fontawesome";
416
+ lucide: "lucide";
417
+ tabler: "tabler";
418
+ }>>;
419
+ }, z.core.$loose>]>>;
420
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
421
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
422
+ }, z.core.$loose>>>;
423
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
424
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
425
+ name: z.ZodMiniString<string>;
426
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
427
+ fontawesome: "fontawesome";
428
+ lucide: "lucide";
429
+ tabler: "tabler";
430
+ }>>;
431
+ }, z.core.$loose>]>>;
432
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
433
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
434
+ }, z.core.$loose>>>;
435
+ anchors: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
436
+ anchor: z.ZodMiniString<string>;
437
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
438
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
439
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
440
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
441
+ name: z.ZodMiniString<string>;
442
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
443
+ fontawesome: "fontawesome";
444
+ lucide: "lucide";
445
+ tabler: "tabler";
446
+ }>>;
447
+ }, z.core.$loose>]>>;
448
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
449
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
450
+ }, z.core.$loose>>>;
451
+ dropdowns: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
452
+ dropdown: z.ZodMiniString<string>;
453
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
454
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
455
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
456
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
457
+ name: z.ZodMiniString<string>;
458
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
459
+ fontawesome: "fontawesome";
460
+ lucide: "lucide";
461
+ tabler: "tabler";
462
+ }>>;
463
+ }, z.core.$loose>]>>;
464
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
465
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
466
+ }, z.core.$loose>>>;
467
+ products: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
468
+ product: z.ZodMiniString<string>;
469
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
470
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
471
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
472
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
473
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
474
+ name: z.ZodMiniString<string>;
475
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
476
+ fontawesome: "fontawesome";
477
+ lucide: "lucide";
478
+ tabler: "tabler";
479
+ }>>;
480
+ }, z.core.$loose>]>>;
481
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
482
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
483
+ }, z.core.$loose>>>;
484
+ versions: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyVersionNav, unknown, z.core.$ZodTypeInternals<MintlifyVersionNav, unknown>>>>;
485
+ }, z.core.$loose>>>;
486
+ versions: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyVersionNav, unknown, z.core.$ZodTypeInternals<MintlifyVersionNav, unknown>>>>;
487
+ tabs: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
488
+ tab: z.ZodMiniString<string>;
489
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
490
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
491
+ menu: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
492
+ item: z.ZodMiniString<string>;
493
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
494
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
495
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
496
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
497
+ name: z.ZodMiniString<string>;
498
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
499
+ fontawesome: "fontawesome";
500
+ lucide: "lucide";
501
+ tabler: "tabler";
502
+ }>>;
503
+ }, z.core.$loose>]>>;
504
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
505
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
506
+ }, z.core.$loose>>>;
507
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
508
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
509
+ name: z.ZodMiniString<string>;
510
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
511
+ fontawesome: "fontawesome";
512
+ lucide: "lucide";
513
+ tabler: "tabler";
514
+ }>>;
515
+ }, z.core.$loose>]>>;
516
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
517
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
518
+ }, z.core.$loose>>>;
519
+ anchors: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
520
+ anchor: z.ZodMiniString<string>;
521
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
522
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
523
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
524
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
525
+ name: z.ZodMiniString<string>;
526
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
527
+ fontawesome: "fontawesome";
528
+ lucide: "lucide";
529
+ tabler: "tabler";
530
+ }>>;
531
+ }, z.core.$loose>]>>;
532
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
533
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
534
+ }, z.core.$loose>>>;
535
+ dropdowns: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
536
+ dropdown: z.ZodMiniString<string>;
537
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
538
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
539
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
540
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
541
+ name: z.ZodMiniString<string>;
542
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
543
+ fontawesome: "fontawesome";
544
+ lucide: "lucide";
545
+ tabler: "tabler";
546
+ }>>;
547
+ }, z.core.$loose>]>>;
548
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
549
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
550
+ }, z.core.$loose>>>;
551
+ products: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
552
+ product: z.ZodMiniString<string>;
553
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
554
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
555
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
556
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
557
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
558
+ name: z.ZodMiniString<string>;
559
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
560
+ fontawesome: "fontawesome";
561
+ lucide: "lucide";
562
+ tabler: "tabler";
563
+ }>>;
564
+ }, z.core.$loose>]>>;
565
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
566
+ hidden: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
567
+ }, z.core.$loose>>>;
568
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
569
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
570
+ menu: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
571
+ item: z.ZodMiniString<string>;
572
+ pages: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>]>>>;
573
+ groups: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniType<MintlifyGroup, unknown, z.core.$ZodTypeInternals<MintlifyGroup, unknown>>>>;
574
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
575
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
576
+ name: z.ZodMiniString<string>;
577
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
578
+ fontawesome: "fontawesome";
579
+ lucide: "lucide";
580
+ tabler: "tabler";
581
+ }>>;
582
+ }, z.core.$loose>]>>;
583
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
584
+ href: z.ZodMiniOptional<z.ZodMiniString<string>>;
585
+ }, z.core.$loose>>>;
586
+ }, z.core.$loose>;
587
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
588
+ navbar: z.ZodMiniOptional<z.ZodMiniObject<{
589
+ links: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
590
+ label: z.ZodMiniOptional<z.ZodMiniString<string>>;
591
+ href: z.ZodMiniString<string>;
592
+ type: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniLiteral<"github">, z.ZodMiniLiteral<"discord">, z.ZodMiniString<string>]>>;
593
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
594
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
595
+ name: z.ZodMiniString<string>;
596
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
597
+ fontawesome: "fontawesome";
598
+ lucide: "lucide";
599
+ tabler: "tabler";
600
+ }>>;
601
+ }, z.core.$loose>]>>;
602
+ }, z.core.$loose>>>;
603
+ primary: z.ZodMiniOptional<z.ZodMiniObject<{
604
+ label: z.ZodMiniOptional<z.ZodMiniString<string>>;
605
+ href: z.ZodMiniString<string>;
606
+ type: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniLiteral<"github">, z.ZodMiniLiteral<"discord">, z.ZodMiniString<string>]>>;
607
+ icon: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
608
+ style: z.ZodMiniOptional<z.ZodMiniString<string>>;
609
+ name: z.ZodMiniString<string>;
610
+ library: z.ZodMiniOptional<z.ZodMiniEnum<{
611
+ fontawesome: "fontawesome";
612
+ lucide: "lucide";
613
+ tabler: "tabler";
614
+ }>>;
615
+ }, z.core.$loose>]>>;
616
+ }, z.core.$loose>>;
617
+ }, z.core.$loose>>;
618
+ redirects: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
619
+ source: z.ZodMiniString<string>;
620
+ destination: z.ZodMiniString<string>;
621
+ permanent: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
622
+ }, z.core.$loose>>>;
623
+ api: z.ZodMiniOptional<z.ZodMiniObject<{
624
+ openapi: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
625
+ source: z.ZodMiniString<string>;
626
+ directory: z.ZodMiniOptional<z.ZodMiniString<string>>;
627
+ }, z.core.$loose>]>, z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniObject<{
628
+ source: z.ZodMiniString<string>;
629
+ directory: z.ZodMiniOptional<z.ZodMiniString<string>>;
630
+ }, z.core.$loose>]>>]>>;
631
+ playground: z.ZodMiniOptional<z.ZodMiniObject<{
632
+ proxy: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
633
+ }, z.core.$loose>>;
634
+ url: z.ZodMiniOptional<z.ZodMiniLiteral<"full">>;
635
+ }, z.core.$loose>>;
636
+ }, z.core.$loose>;
637
+ type MintlifyDocsJson = output<typeof mintlifyDocsJsonSchema>;
638
+ //#endregion
639
+ export { MintlifyDocsJson as t };
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@fumapress/mintlify",
3
+ "version": "0.0.2",
4
+ "description": "Mintlify auto-migration for Fumapress",
5
+ "keywords": [
6
+ "Docs",
7
+ "Fumadocs",
8
+ "Fumapress"
9
+ ],
10
+ "homepage": "https://press.fumadocs.dev",
11
+ "license": "MIT",
12
+ "author": "Fuma Nama",
13
+ "repository": "github:fuma-nama/fumapress",
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "type": "module",
18
+ "exports": {
19
+ ".": "./dist/index.mjs",
20
+ "./openapi": "./dist/openapi.mjs",
21
+ "./package.json": "./package.json"
22
+ },
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "scripts": {
27
+ "build": "tsdown",
28
+ "dev": "tsdown --watch --clean false",
29
+ "types:check": "tsc --noEmit"
30
+ },
31
+ "dependencies": {
32
+ "fumadocs-core": "^16.9.3",
33
+ "fumadocs-ui": "^16.9.3",
34
+ "fumapress": "workspace:*",
35
+ "zod": "^4.4.3"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^25.9.1",
39
+ "@types/react": "^19.2.15",
40
+ "fumadocs-openapi": "^10.9.1",
41
+ "react": "^19.2.6",
42
+ "tsdown": "0.22.0",
43
+ "typescript": "^6.0.3",
44
+ "vitest": "^4.1.7"
45
+ },
46
+ "peerDependencies": {
47
+ "fumadocs-openapi": "^10.9.0",
48
+ "hono": "*"
49
+ },
50
+ "peerDependenciesMeta": {
51
+ "fumadocs-openapi": {
52
+ "optional": true
53
+ },
54
+ "hono": {
55
+ "optional": true
56
+ }
57
+ }
58
+ }