blodemd 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +2 -2
  2. package/dev-server/app/[[...slug]]/page.tsx +139 -0
  3. package/dev-server/app/blodemd-dev/invalidate/route.ts +12 -0
  4. package/dev-server/app/blodemd-dev/static/[...path]/route.ts +32 -0
  5. package/dev-server/app/blodemd-dev/version/route.ts +14 -0
  6. package/dev-server/app/blodemd-internal/proxy/route.ts +86 -0
  7. package/dev-server/app/error.tsx +24 -0
  8. package/dev-server/app/favicon.ico +0 -0
  9. package/dev-server/app/globals.css +4 -0
  10. package/dev-server/app/layout.tsx +38 -0
  11. package/dev-server/app/not-found.tsx +18 -0
  12. package/dev-server/app/search/route.ts +17 -0
  13. package/dev-server/components/dev-reload-script.tsx +86 -0
  14. package/dev-server/components/providers.tsx +15 -0
  15. package/dev-server/lib/dev-state.ts +8 -0
  16. package/dev-server/lib/local-content-source.ts +103 -0
  17. package/dev-server/lib/local-runtime.tsx +558 -0
  18. package/dev-server/next-env.d.ts +5 -0
  19. package/dev-server/next.config.js +46 -0
  20. package/dev-server/package.json +57 -0
  21. package/dev-server/postcss.config.mjs +7 -0
  22. package/dev-server/public/glide-variable.woff2 +0 -0
  23. package/dev-server/tsconfig.json +50 -0
  24. package/dist/cli.mjs +311 -86
  25. package/dist/cli.mjs.map +1 -1
  26. package/docs/app/globals.css +457 -0
  27. package/docs/components/api/api-playground.tsx +295 -0
  28. package/docs/components/api/api-reference.tsx +121 -0
  29. package/docs/components/content/collection-index.tsx +114 -0
  30. package/docs/components/docs/contextual-menu.tsx +406 -0
  31. package/docs/components/docs/copy-page-menu.tsx +255 -0
  32. package/docs/components/docs/doc-header.tsx +210 -0
  33. package/docs/components/docs/doc-shell.tsx +313 -0
  34. package/docs/components/docs/doc-sidebar.tsx +211 -0
  35. package/docs/components/docs/doc-toc.tsx +45 -0
  36. package/docs/components/docs/mobile-nav.tsx +205 -0
  37. package/docs/components/icons/doc-icon.tsx +96 -0
  38. package/docs/components/mdx/accordion.tsx +83 -0
  39. package/docs/components/mdx/badge.tsx +79 -0
  40. package/docs/components/mdx/callout.tsx +88 -0
  41. package/docs/components/mdx/card.tsx +110 -0
  42. package/docs/components/mdx/code-block.tsx +75 -0
  43. package/docs/components/mdx/code-group.tsx +94 -0
  44. package/docs/components/mdx/color.tsx +87 -0
  45. package/docs/components/mdx/columns.tsx +25 -0
  46. package/docs/components/mdx/expandable.tsx +45 -0
  47. package/docs/components/mdx/field-layout.tsx +77 -0
  48. package/docs/components/mdx/frame.tsx +23 -0
  49. package/docs/components/mdx/get-text-content.ts +18 -0
  50. package/docs/components/mdx/icon.tsx +12 -0
  51. package/docs/components/mdx/index.tsx +107 -0
  52. package/docs/components/mdx/installer.tsx +20 -0
  53. package/docs/components/mdx/panel.tsx +11 -0
  54. package/docs/components/mdx/param-field.tsx +56 -0
  55. package/docs/components/mdx/preview.tsx +36 -0
  56. package/docs/components/mdx/prompt.tsx +63 -0
  57. package/docs/components/mdx/request-example.tsx +27 -0
  58. package/docs/components/mdx/response-field.tsx +42 -0
  59. package/docs/components/mdx/steps.tsx +92 -0
  60. package/docs/components/mdx/tabs.tsx +88 -0
  61. package/docs/components/mdx/tile.tsx +43 -0
  62. package/docs/components/mdx/tooltip.tsx +71 -0
  63. package/docs/components/mdx/tree.tsx +120 -0
  64. package/docs/components/mdx/type-table.tsx +71 -0
  65. package/docs/components/mdx/update.tsx +44 -0
  66. package/docs/components/mdx/video.tsx +12 -0
  67. package/docs/components/mdx/view.tsx +66 -0
  68. package/docs/components/providers.tsx +15 -0
  69. package/docs/components/ui/breadcrumb.tsx +92 -0
  70. package/docs/components/ui/button.tsx +90 -0
  71. package/docs/components/ui/card.tsx +92 -0
  72. package/docs/components/ui/command.tsx +139 -0
  73. package/docs/components/ui/dialog.tsx +97 -0
  74. package/docs/components/ui/field.tsx +237 -0
  75. package/docs/components/ui/input.tsx +105 -0
  76. package/docs/components/ui/label.tsx +22 -0
  77. package/docs/components/ui/popover.tsx +72 -0
  78. package/docs/components/ui/search.tsx +384 -0
  79. package/docs/components/ui/separator.tsx +26 -0
  80. package/docs/components/ui/sheet.tsx +104 -0
  81. package/docs/components/ui/sidebar.tsx +433 -0
  82. package/docs/components/ui/theme-toggle.tsx +62 -0
  83. package/docs/components/ui/tooltip.tsx +53 -0
  84. package/docs/lib/contextual-options.ts +193 -0
  85. package/docs/lib/docs-collection.ts +22 -0
  86. package/docs/lib/mdx.ts +87 -0
  87. package/docs/lib/navigation.ts +288 -0
  88. package/docs/lib/openapi.ts +158 -0
  89. package/docs/lib/routes.ts +44 -0
  90. package/docs/lib/server-cache.ts +83 -0
  91. package/docs/lib/shiki.ts +40 -0
  92. package/docs/lib/theme.ts +29 -0
  93. package/docs/lib/toc.ts +2 -0
  94. package/docs/lib/utils.ts +5 -0
  95. package/package.json +43 -6
  96. package/packages/@repo/common/dist/index.d.ts +9 -0
  97. package/packages/@repo/common/dist/index.d.ts.map +1 -0
  98. package/packages/@repo/common/dist/index.js +42 -0
  99. package/packages/@repo/common/package.json +34 -0
  100. package/packages/@repo/common/src/index.ts +51 -0
  101. package/packages/@repo/contracts/dist/api-key.d.ts +30 -0
  102. package/packages/@repo/contracts/dist/api-key.d.ts.map +1 -0
  103. package/packages/@repo/contracts/dist/api-key.js +20 -0
  104. package/packages/@repo/contracts/dist/dates.d.ts +4 -0
  105. package/packages/@repo/contracts/dist/dates.d.ts.map +1 -0
  106. package/packages/@repo/contracts/dist/dates.js +2 -0
  107. package/packages/@repo/contracts/dist/deployment.d.ts +71 -0
  108. package/packages/@repo/contracts/dist/deployment.d.ts.map +1 -0
  109. package/packages/@repo/contracts/dist/deployment.js +46 -0
  110. package/packages/@repo/contracts/dist/domain.d.ts +94 -0
  111. package/packages/@repo/contracts/dist/domain.d.ts.map +1 -0
  112. package/packages/@repo/contracts/dist/domain.js +36 -0
  113. package/packages/@repo/contracts/dist/ids.d.ts +14 -0
  114. package/packages/@repo/contracts/dist/ids.d.ts.map +1 -0
  115. package/packages/@repo/contracts/dist/ids.js +10 -0
  116. package/packages/@repo/contracts/dist/index.d.ts +10 -0
  117. package/packages/@repo/contracts/dist/index.d.ts.map +1 -0
  118. package/packages/@repo/contracts/dist/index.js +11 -0
  119. package/packages/@repo/contracts/dist/pagination.d.ts +23 -0
  120. package/packages/@repo/contracts/dist/pagination.d.ts.map +1 -0
  121. package/packages/@repo/contracts/dist/pagination.js +15 -0
  122. package/packages/@repo/contracts/dist/project.d.ts +25 -0
  123. package/packages/@repo/contracts/dist/project.d.ts.map +1 -0
  124. package/packages/@repo/contracts/dist/project.js +23 -0
  125. package/packages/@repo/contracts/dist/tenant.d.ts +111 -0
  126. package/packages/@repo/contracts/dist/tenant.d.ts.map +1 -0
  127. package/packages/@repo/contracts/dist/tenant.js +56 -0
  128. package/packages/@repo/contracts/dist/user.d.ts +9 -0
  129. package/packages/@repo/contracts/dist/user.d.ts.map +1 -0
  130. package/packages/@repo/contracts/dist/user.js +9 -0
  131. package/packages/@repo/contracts/package.json +37 -0
  132. package/packages/@repo/contracts/src/api-key.ts +27 -0
  133. package/packages/@repo/contracts/src/dates.ts +4 -0
  134. package/packages/@repo/contracts/src/deployment.ts +73 -0
  135. package/packages/@repo/contracts/src/domain.ts +51 -0
  136. package/packages/@repo/contracts/src/ids.ts +22 -0
  137. package/packages/@repo/contracts/src/index.ts +11 -0
  138. package/packages/@repo/contracts/src/pagination.ts +21 -0
  139. package/packages/@repo/contracts/src/project.ts +30 -0
  140. package/packages/@repo/contracts/src/tenant.ts +92 -0
  141. package/packages/@repo/contracts/src/user.ts +12 -0
  142. package/packages/@repo/models/dist/docs-config.d.ts +985 -0
  143. package/packages/@repo/models/dist/docs-config.d.ts.map +1 -0
  144. package/packages/@repo/models/dist/docs-config.js +548 -0
  145. package/packages/@repo/models/dist/index.d.ts +3 -0
  146. package/packages/@repo/models/dist/index.d.ts.map +1 -0
  147. package/packages/@repo/models/dist/index.js +3 -0
  148. package/packages/@repo/models/dist/tenant.d.ts +25 -0
  149. package/packages/@repo/models/dist/tenant.d.ts.map +1 -0
  150. package/packages/@repo/models/dist/tenant.js +1 -0
  151. package/packages/@repo/models/package.json +37 -0
  152. package/packages/@repo/models/src/docs-config.ts +648 -0
  153. package/packages/@repo/models/src/index.ts +3 -0
  154. package/packages/@repo/models/src/tenant.ts +29 -0
  155. package/packages/@repo/prebuild/dist/index.d.ts +2 -0
  156. package/packages/@repo/prebuild/dist/index.d.ts.map +1 -0
  157. package/packages/@repo/prebuild/dist/index.js +2 -0
  158. package/packages/@repo/prebuild/dist/openapi.d.ts +43 -0
  159. package/packages/@repo/prebuild/dist/openapi.d.ts.map +1 -0
  160. package/packages/@repo/prebuild/dist/openapi.js +58 -0
  161. package/packages/@repo/prebuild/package.json +39 -0
  162. package/packages/@repo/prebuild/src/index.ts +2 -0
  163. package/packages/@repo/prebuild/src/openapi.ts +116 -0
  164. package/packages/@repo/previewing/dist/blob-source.d.ts +16 -0
  165. package/packages/@repo/previewing/dist/blob-source.d.ts.map +1 -0
  166. package/packages/@repo/previewing/dist/blob-source.js +110 -0
  167. package/packages/@repo/previewing/dist/content-source.d.ts +12 -0
  168. package/packages/@repo/previewing/dist/content-source.d.ts.map +1 -0
  169. package/packages/@repo/previewing/dist/content-source.js +1 -0
  170. package/packages/@repo/previewing/dist/fs-source.d.ts +11 -0
  171. package/packages/@repo/previewing/dist/fs-source.d.ts.map +1 -0
  172. package/packages/@repo/previewing/dist/fs-source.js +72 -0
  173. package/packages/@repo/previewing/dist/index.d.ts +120 -0
  174. package/packages/@repo/previewing/dist/index.d.ts.map +1 -0
  175. package/packages/@repo/previewing/dist/index.js +984 -0
  176. package/packages/@repo/previewing/package.json +41 -0
  177. package/packages/@repo/previewing/src/blob-source.ts +167 -0
  178. package/packages/@repo/previewing/src/content-source.ts +12 -0
  179. package/packages/@repo/previewing/src/fs-source.ts +104 -0
  180. package/packages/@repo/previewing/src/index.ts +1490 -0
  181. package/packages/@repo/validation/dist/index.d.ts +12 -0
  182. package/packages/@repo/validation/dist/index.d.ts.map +1 -0
  183. package/packages/@repo/validation/dist/index.js +30 -0
  184. package/packages/@repo/validation/package.json +37 -0
  185. package/packages/@repo/validation/src/index.ts +59 -0
  186. package/packages/@repo/validation/src/mintlify-docs-schema.json +5016 -0
  187. package/scripts/prepare-package.mjs +39 -0
@@ -0,0 +1,648 @@
1
+ import { z } from "zod";
2
+
3
+ const UrlOrPathSchema = z.string().min(1);
4
+
5
+ export const DocsColorsSchema = z
6
+ .object({
7
+ background: z.string().optional(),
8
+ border: z.string().optional(),
9
+ dark: z.string().optional(),
10
+ light: z.string().optional(),
11
+ muted: z.string().optional(),
12
+ primary: z.string().min(1),
13
+ surface: z.string().optional(),
14
+ })
15
+ .strict();
16
+
17
+ export const DocsFontsSchema = z
18
+ .object({
19
+ body: z.string().optional(),
20
+ cssUrl: z.string().optional(),
21
+ heading: z.string().optional(),
22
+ mono: z.string().optional(),
23
+ provider: z.enum(["google", "local", "custom"]).optional(),
24
+ })
25
+ .strict();
26
+
27
+ export const DocsLogoSchema = z
28
+ .object({
29
+ alt: z.string().optional(),
30
+ dark: UrlOrPathSchema.optional(),
31
+ light: UrlOrPathSchema.optional(),
32
+ })
33
+ .strict();
34
+
35
+ export const DocsNavLinkSchema = z
36
+ .object({
37
+ href: z.string().min(1),
38
+ label: z.string().min(1),
39
+ })
40
+ .strict();
41
+
42
+ export const DocsNavAnchorSchema = z
43
+ .object({
44
+ href: z.string().min(1),
45
+ label: z.string().min(1),
46
+ })
47
+ .strict();
48
+
49
+ export const DocsNavLocaleSchema = z
50
+ .object({
51
+ label: z.string().min(1),
52
+ locale: z.string().optional(),
53
+ url: z.string().min(1),
54
+ })
55
+ .strict();
56
+
57
+ export const DocsNavVersionSchema = z
58
+ .object({
59
+ label: z.string().min(1),
60
+ url: z.string().min(1),
61
+ })
62
+ .strict();
63
+
64
+ export const DocsOpenApiSourceSchema = z
65
+ .object({
66
+ basePath: z.string().optional(),
67
+ directory: z.string().optional(),
68
+ include: z.array(z.string()).optional(),
69
+ source: z.string().min(1),
70
+ })
71
+ .strict();
72
+
73
+ export const DocsNavGroupSchema = z
74
+ .object({
75
+ expanded: z.boolean().optional(),
76
+ group: z.string().optional(),
77
+ hidden: z.boolean().optional(),
78
+ openapi: z.union([z.string().min(1), DocsOpenApiSourceSchema]).optional(),
79
+ pages: z.array(z.string()).optional(),
80
+ })
81
+ .strict();
82
+
83
+ export const DocsNavTabSchema = z
84
+ .object({
85
+ groups: z.array(DocsNavGroupSchema).optional(),
86
+ href: z.string().min(1).optional(),
87
+ icon: z.string().optional(),
88
+ label: z.string().min(1),
89
+ pages: z.array(z.string()).optional(),
90
+ })
91
+ .strict()
92
+ .refine(
93
+ (value) =>
94
+ Boolean(value.groups?.length || value.pages?.length || value.href),
95
+ { message: "tab must define groups, pages, or href", path: [] }
96
+ );
97
+
98
+ export const DocsNavigationSchema = z
99
+ .object({
100
+ global: z
101
+ .object({
102
+ anchors: z.array(DocsNavAnchorSchema).optional(),
103
+ links: z.array(DocsNavLinkSchema).optional(),
104
+ })
105
+ .strict()
106
+ .optional(),
107
+ groups: z.array(DocsNavGroupSchema).optional(),
108
+ hidden: z.array(z.string()).optional(),
109
+ languages: z.array(DocsNavLocaleSchema).optional(),
110
+ pages: z.array(z.string()).optional(),
111
+ tabs: z.array(DocsNavTabSchema).optional(),
112
+ versions: z.array(DocsNavVersionSchema).optional(),
113
+ })
114
+ .strict();
115
+
116
+ export const DocsScriptsSchema = z
117
+ .object({
118
+ body: z.array(z.string()).optional(),
119
+ head: z.array(z.string()).optional(),
120
+ })
121
+ .strict();
122
+
123
+ export const DocsSeoSchema = z
124
+ .object({
125
+ indexing: z.enum(["all", "default"]).optional(),
126
+ })
127
+ .strict();
128
+
129
+ export const DocsFeatureFlagsSchema = z
130
+ .object({
131
+ rightToc: z.boolean().optional(),
132
+ search: z.boolean().optional(),
133
+ themeToggle: z.boolean().optional(),
134
+ toc: z.boolean().optional(),
135
+ })
136
+ .strict();
137
+
138
+ export const DocsOpenApiProxySchema = z
139
+ .object({
140
+ allowedHosts: z.array(z.string()).optional(),
141
+ enabled: z.boolean().optional(),
142
+ })
143
+ .strict();
144
+
145
+ const MintlifyFontSchema = z
146
+ .object({
147
+ family: z.string().min(1),
148
+ format: z.enum(["woff", "woff2"]).optional(),
149
+ source: z.string().min(1).optional(),
150
+ weight: z.number().optional(),
151
+ })
152
+ .strict();
153
+
154
+ const MintlifyFontsSchema = z
155
+ .object({
156
+ body: MintlifyFontSchema.optional(),
157
+ family: z.string().min(1).optional(),
158
+ format: z.enum(["woff", "woff2"]).optional(),
159
+ heading: MintlifyFontSchema.optional(),
160
+ source: z.string().min(1).optional(),
161
+ weight: z.number().optional(),
162
+ })
163
+ .strict();
164
+
165
+ const MintlifyLogoSchema = z.union([
166
+ UrlOrPathSchema,
167
+ z
168
+ .object({
169
+ dark: UrlOrPathSchema,
170
+ href: z.string().min(1).optional(),
171
+ light: UrlOrPathSchema,
172
+ })
173
+ .strict(),
174
+ ]);
175
+
176
+ const MintlifyFaviconSchema = z.union([
177
+ UrlOrPathSchema,
178
+ z
179
+ .object({
180
+ dark: UrlOrPathSchema,
181
+ light: UrlOrPathSchema,
182
+ })
183
+ .strict(),
184
+ ]);
185
+
186
+ const MintlifyNavbarLinkSchema = z
187
+ .object({
188
+ href: z.string().min(1),
189
+ icon: z.string().optional(),
190
+ iconType: z.string().optional(),
191
+ label: z.string().optional(),
192
+ type: z.enum(["discord", "github"]).optional(),
193
+ })
194
+ .strict();
195
+
196
+ const MintlifyNavbarPrimarySchema = z
197
+ .object({
198
+ href: z.string().min(1),
199
+ label: z.string().optional(),
200
+ type: z.enum(["button", "discord", "github"]),
201
+ })
202
+ .strict();
203
+
204
+ const MintlifyNavbarSchema = z
205
+ .object({
206
+ links: z.array(MintlifyNavbarLinkSchema).optional(),
207
+ primary: MintlifyNavbarPrimarySchema.optional(),
208
+ })
209
+ .strict();
210
+
211
+ const MintlifyNavigationGlobalSchema = z
212
+ .object({
213
+ anchors: z
214
+ .array(
215
+ z
216
+ .object({
217
+ anchor: z.string().min(1),
218
+ color: z
219
+ .object({
220
+ dark: z.string().optional(),
221
+ light: z.string().optional(),
222
+ })
223
+ .strict()
224
+ .optional(),
225
+ hidden: z.boolean().optional(),
226
+ href: z.string().min(1),
227
+ icon: z.string().optional(),
228
+ iconType: z.string().optional(),
229
+ })
230
+ .strict()
231
+ )
232
+ .optional(),
233
+ })
234
+ .strict();
235
+
236
+ const MintlifyNavigationGroupSchema = z
237
+ .object({
238
+ expanded: z.boolean().optional(),
239
+ group: z.string().min(1),
240
+ hidden: z.boolean().optional(),
241
+ icon: z.string().optional(),
242
+ pages: z.array(z.string()).optional(),
243
+ root: z.string().optional(),
244
+ tag: z.string().optional(),
245
+ })
246
+ .strict();
247
+
248
+ const MintlifyNavTabSchema = z
249
+ .object({
250
+ groups: z.array(MintlifyNavigationGroupSchema).optional(),
251
+ hidden: z.boolean().optional(),
252
+ href: z.string().min(1).optional(),
253
+ icon: z.string().optional(),
254
+ pages: z.array(z.string()).optional(),
255
+ tab: z.string().min(1),
256
+ })
257
+ .strict();
258
+
259
+ const MintlifyNavigationSchema = z
260
+ .object({
261
+ global: MintlifyNavigationGlobalSchema.optional(),
262
+ groups: z.array(MintlifyNavigationGroupSchema).optional(),
263
+ languages: z
264
+ .array(
265
+ z
266
+ .object({
267
+ default: z.boolean().optional(),
268
+ hidden: z.boolean().optional(),
269
+ href: z.string().min(1),
270
+ language: z.string().min(1),
271
+ })
272
+ .strict()
273
+ )
274
+ .optional(),
275
+ pages: z.array(z.string()).optional(),
276
+ tabs: z.array(MintlifyNavTabSchema).optional(),
277
+ versions: z
278
+ .array(
279
+ z
280
+ .object({
281
+ default: z.boolean().optional(),
282
+ hidden: z.boolean().optional(),
283
+ href: z.string().min(1),
284
+ version: z.string().min(1),
285
+ })
286
+ .strict()
287
+ )
288
+ .optional(),
289
+ })
290
+ .strict()
291
+ .refine(
292
+ (value) =>
293
+ Boolean(
294
+ value.groups?.length ||
295
+ value.pages?.length ||
296
+ value.tabs?.length ||
297
+ value.languages?.length ||
298
+ value.versions?.length
299
+ ),
300
+ {
301
+ message:
302
+ "navigation must define at least one of groups, pages, tabs, languages, or versions",
303
+ path: [],
304
+ }
305
+ );
306
+
307
+ const MintlifyApiSchema = z
308
+ .object({
309
+ asyncapi: z
310
+ .union([z.string(), z.array(z.string()), DocsOpenApiSourceSchema])
311
+ .optional(),
312
+ examples: z
313
+ .object({
314
+ autogenerate: z.boolean().optional(),
315
+ defaults: z.enum(["all", "required"]).optional(),
316
+ languages: z.array(z.string()).optional(),
317
+ prefill: z.boolean().optional(),
318
+ })
319
+ .strict()
320
+ .optional(),
321
+ mdx: z
322
+ .object({
323
+ auth: z
324
+ .object({
325
+ method: z.enum(["basic", "bearer", "cobo", "key"]).optional(),
326
+ name: z.string().optional(),
327
+ })
328
+ .strict()
329
+ .optional(),
330
+ server: z
331
+ .union([z.string().min(1), z.array(z.string().min(1))])
332
+ .optional(),
333
+ })
334
+ .strict()
335
+ .optional(),
336
+ openapi: z
337
+ .union([z.string(), z.array(z.string()), DocsOpenApiSourceSchema])
338
+ .optional(),
339
+ params: z
340
+ .object({
341
+ expanded: z.enum(["all", "closed"]).optional(),
342
+ })
343
+ .strict()
344
+ .optional(),
345
+ playground: z
346
+ .object({
347
+ credentials: z.boolean().optional(),
348
+ display: z.enum(["auth", "interactive", "none", "simple"]).optional(),
349
+ proxy: z.boolean().optional(),
350
+ })
351
+ .strict()
352
+ .optional(),
353
+ url: z.literal("full").optional(),
354
+ })
355
+ .strict();
356
+
357
+ const MintlifyAppearanceSchema = z
358
+ .object({
359
+ default: z.enum(["dark", "light", "system"]).optional(),
360
+ strict: z.boolean().optional(),
361
+ })
362
+ .strict();
363
+
364
+ const MintlifyMetadataSchema = z
365
+ .object({
366
+ timestamp: z.boolean().optional(),
367
+ })
368
+ .strict();
369
+
370
+ const MintlifySearchSchema = z
371
+ .object({
372
+ prompt: z.string().optional(),
373
+ })
374
+ .strict();
375
+
376
+ export const ContextualBuiltinOptionSchema = z.enum([
377
+ "add-mcp",
378
+ "aistudio",
379
+ "assistant",
380
+ "chatgpt",
381
+ "claude",
382
+ "copy",
383
+ "cursor",
384
+ "devin",
385
+ "devin-mcp",
386
+ "grok",
387
+ "mcp",
388
+ "perplexity",
389
+ "view",
390
+ "vscode",
391
+ "windsurf",
392
+ ]);
393
+
394
+ const ContextualCustomHrefQuerySchema = z
395
+ .object({
396
+ key: z.string().min(1),
397
+ value: z.string().min(1),
398
+ })
399
+ .strict();
400
+
401
+ const ContextualCustomHrefObjectSchema = z
402
+ .object({
403
+ base: z.string().min(1),
404
+ query: z.array(ContextualCustomHrefQuerySchema),
405
+ })
406
+ .strict();
407
+
408
+ export const ContextualCustomOptionSchema = z
409
+ .object({
410
+ description: z.string().min(1),
411
+ href: z.union([z.string().min(1), ContextualCustomHrefObjectSchema]),
412
+ icon: z.string().min(1),
413
+ iconType: z.string().optional(),
414
+ title: z.string().min(1),
415
+ })
416
+ .strict();
417
+
418
+ export const ContextualOptionSchema = z.union([
419
+ ContextualBuiltinOptionSchema,
420
+ ContextualCustomOptionSchema,
421
+ ]);
422
+
423
+ export const DocsContextualSchema = z
424
+ .object({
425
+ display: z.enum(["header", "toc"]).optional(),
426
+ options: z.array(ContextualOptionSchema),
427
+ })
428
+ .strict();
429
+
430
+ export type ContextualBuiltinOption = z.infer<
431
+ typeof ContextualBuiltinOptionSchema
432
+ >;
433
+ export type ContextualCustomOption = z.infer<
434
+ typeof ContextualCustomOptionSchema
435
+ >;
436
+ export type ContextualOption = z.infer<typeof ContextualOptionSchema>;
437
+ export type DocsContextual = z.infer<typeof DocsContextualSchema>;
438
+
439
+ export const MintlifyDocsConfigSchema = z
440
+ .object({
441
+ $schema: z.string().optional(),
442
+ api: MintlifyApiSchema.optional(),
443
+ appearance: MintlifyAppearanceSchema.optional(),
444
+ colors: z
445
+ .object({
446
+ dark: z.string().optional(),
447
+ light: z.string().optional(),
448
+ primary: z.string().min(1),
449
+ })
450
+ .strict(),
451
+ contextual: DocsContextualSchema.optional(),
452
+ description: z.string().optional(),
453
+ favicon: MintlifyFaviconSchema.optional(),
454
+ fonts: MintlifyFontsSchema.optional(),
455
+ logo: MintlifyLogoSchema.optional(),
456
+ metadata: MintlifyMetadataSchema.optional(),
457
+ name: z.string().min(1),
458
+ navbar: MintlifyNavbarSchema.optional(),
459
+ navigation: MintlifyNavigationSchema,
460
+ search: MintlifySearchSchema.optional(),
461
+ seo: DocsSeoSchema.optional(),
462
+ theme: z.string().min(1),
463
+ })
464
+ .strict();
465
+
466
+ export type MintlifyDocsConfig = z.infer<typeof MintlifyDocsConfigSchema>;
467
+
468
+ export const ContentTypeSchema = z.enum([
469
+ "site",
470
+ "blog",
471
+ "docs",
472
+ "courses",
473
+ "products",
474
+ "notes",
475
+ "forms",
476
+ "sheets",
477
+ "slides",
478
+ "todos",
479
+ ]);
480
+
481
+ export type ContentType = z.infer<typeof ContentTypeSchema>;
482
+
483
+ const FrontmatterBaseSchema = z
484
+ .object({
485
+ description: z.string().optional(),
486
+ hidden: z.boolean().optional(),
487
+ title: z.string().min(1),
488
+ })
489
+ .passthrough();
490
+
491
+ const FrontmatterBlogSchema = FrontmatterBaseSchema.extend({
492
+ date: z.string().min(1),
493
+ tags: z.array(z.string()).optional(),
494
+ }).passthrough();
495
+
496
+ const FrontmatterCoursesSchema = FrontmatterBaseSchema.extend({
497
+ order: z.number(),
498
+ }).passthrough();
499
+
500
+ const FrontmatterProductsSchema = FrontmatterBaseSchema.extend({
501
+ currency: z.string().min(1),
502
+ price: z.number(),
503
+ sku: z.string().min(1),
504
+ }).passthrough();
505
+
506
+ const FrontmatterNotesSchema = FrontmatterBaseSchema.extend({
507
+ date: z.string().min(1),
508
+ }).passthrough();
509
+
510
+ const FormFieldSchema = z
511
+ .object({
512
+ id: z.string().min(1),
513
+ label: z.string().min(1),
514
+ options: z.array(z.string()).optional(),
515
+ required: z.boolean().optional(),
516
+ type: z.string().min(1),
517
+ })
518
+ .passthrough();
519
+
520
+ const FrontmatterFormsSchema = FrontmatterBaseSchema.extend({
521
+ fields: z.array(FormFieldSchema).min(1),
522
+ }).passthrough();
523
+
524
+ const FrontmatterSheetsSchema = FrontmatterBaseSchema.extend({
525
+ columns: z.array(z.string()).min(1),
526
+ }).passthrough();
527
+
528
+ const FrontmatterTodosSchema = FrontmatterBaseSchema.extend({
529
+ date: z.string().min(1),
530
+ }).passthrough();
531
+
532
+ export const PageModeSchema = z.enum([
533
+ "default",
534
+ "wide",
535
+ "custom",
536
+ "frame",
537
+ "center",
538
+ ]);
539
+
540
+ export type PageMode = z.infer<typeof PageModeSchema>;
541
+
542
+ const FrontmatterDocsSchema = FrontmatterBaseSchema.extend({
543
+ deprecated: z.boolean().optional(),
544
+ hideApiMarker: z.boolean().optional(),
545
+ hideFooterPagination: z.boolean().optional(),
546
+ icon: z.string().optional(),
547
+ iconType: z
548
+ .enum([
549
+ "regular",
550
+ "solid",
551
+ "light",
552
+ "thin",
553
+ "sharp-solid",
554
+ "duotone",
555
+ "brands",
556
+ ])
557
+ .optional(),
558
+ keywords: z.array(z.string()).optional(),
559
+ mode: PageModeSchema.optional(),
560
+ noindex: z.boolean().optional(),
561
+ sidebarTitle: z.string().optional(),
562
+ tag: z.string().optional(),
563
+ url: z.string().url().optional(),
564
+ }).passthrough();
565
+
566
+ export type DocsFrontmatter = z.infer<typeof FrontmatterDocsSchema>;
567
+
568
+ export const FrontmatterSchemaByType = {
569
+ blog: FrontmatterBlogSchema,
570
+ courses: FrontmatterCoursesSchema,
571
+ docs: FrontmatterDocsSchema,
572
+ forms: FrontmatterFormsSchema,
573
+ notes: FrontmatterNotesSchema,
574
+ products: FrontmatterProductsSchema,
575
+ sheets: FrontmatterSheetsSchema,
576
+ site: FrontmatterBaseSchema,
577
+ slides: FrontmatterBaseSchema,
578
+ todos: FrontmatterTodosSchema,
579
+ } as const;
580
+
581
+ export type FrontmatterByType = {
582
+ [Key in ContentType]: z.infer<(typeof FrontmatterSchemaByType)[Key]>;
583
+ };
584
+
585
+ export const CollectionIndexSchema = z
586
+ .object({
587
+ description: z.string().optional(),
588
+ hidden: z.boolean().optional(),
589
+ slug: z.string().min(1),
590
+ title: z.string().optional(),
591
+ })
592
+ .strict();
593
+
594
+ export const CollectionSortSchema = z
595
+ .object({
596
+ direction: z.enum(["asc", "desc"]).optional(),
597
+ field: z.enum(["date", "order", "title", "price"]).optional(),
598
+ })
599
+ .strict();
600
+
601
+ export const CollectionConfigSchema = z
602
+ .object({
603
+ id: z.string().min(1),
604
+ index: CollectionIndexSchema.optional(),
605
+ navigation: DocsNavigationSchema.optional(),
606
+ openapi: z
607
+ .union([z.string(), z.array(z.string()), DocsOpenApiSourceSchema])
608
+ .optional(),
609
+ root: z.string().optional(),
610
+ slugPrefix: z.string().optional(),
611
+ sort: CollectionSortSchema.optional(),
612
+ type: ContentTypeSchema,
613
+ })
614
+ .strict();
615
+
616
+ export const SiteConfigSchema = z
617
+ .object({
618
+ collections: z.array(CollectionConfigSchema).min(1),
619
+ colors: DocsColorsSchema.optional(),
620
+ contextual: DocsContextualSchema.optional(),
621
+ description: z.string().optional(),
622
+ favicon: UrlOrPathSchema.optional(),
623
+ features: DocsFeatureFlagsSchema.optional(),
624
+ fonts: DocsFontsSchema.optional(),
625
+ logo: DocsLogoSchema.optional(),
626
+ metadata: z
627
+ .object({
628
+ defaultTitle: z.string().optional(),
629
+ ogImage: UrlOrPathSchema.optional(),
630
+ titleTemplate: z.string().optional(),
631
+ })
632
+ .strict()
633
+ .optional(),
634
+ name: z.string().min(1),
635
+ navigation: DocsNavigationSchema.optional(),
636
+ openapiProxy: DocsOpenApiProxySchema.optional(),
637
+ scripts: DocsScriptsSchema.optional(),
638
+ seo: DocsSeoSchema.optional(),
639
+ theme: z.string().optional(),
640
+ })
641
+ .strict();
642
+
643
+ export type SiteConfig = z.infer<typeof SiteConfigSchema>;
644
+ export type CollectionConfig = z.infer<typeof CollectionConfigSchema>;
645
+ export type DocsNavigation = z.infer<typeof DocsNavigationSchema>;
646
+ export type DocsNavGroup = z.infer<typeof DocsNavGroupSchema>;
647
+ export type DocsNavTab = z.infer<typeof DocsNavTabSchema>;
648
+ export type DocsOpenApiSource = z.infer<typeof DocsOpenApiSourceSchema>;
@@ -0,0 +1,3 @@
1
+ // biome-ignore lint/performance/noBarrelFile: This is the main entry point for the package
2
+ export * from "./docs-config.js";
3
+ export * from "./tenant.js";
@@ -0,0 +1,29 @@
1
+ export interface Tenant {
2
+ id: string;
3
+ slug: string;
4
+ name: string;
5
+ description?: string;
6
+ activeDeploymentId?: string;
7
+ activeDeploymentManifestUrl?: string;
8
+ primaryDomain: string;
9
+ subdomain: string;
10
+ customDomains: string[];
11
+ pathPrefix?: string;
12
+ docsPath?: string;
13
+ status: "active" | "disabled";
14
+ }
15
+
16
+ export interface DomainRecord {
17
+ type: "A" | "AAAA" | "CNAME" | "TXT" | "MX" | "NS" | "CAA";
18
+ name: string;
19
+ value: string;
20
+ ttl?: string;
21
+ }
22
+
23
+ export interface DomainStatus {
24
+ status:
25
+ | "Valid Configuration"
26
+ | "Pending Verification"
27
+ | "Invalid Configuration";
28
+ dnsRecords: DomainRecord[];
29
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./openapi.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ // biome-ignore lint/performance/noBarrelFile: This is the main entry point for the package
2
+ export * from "./openapi.js";