@mintlify/validation 0.1.710 → 0.1.712

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 (38) hide show
  1. package/dist/mint-config/schemas/v1/basics.js +1 -1
  2. package/dist/mint-config/schemas/v2/index.d.ts +70 -70
  3. package/dist/mint-config/schemas/v2/properties/appearance.js +1 -1
  4. package/dist/mint-config/schemas/v2/properties/background.js +23 -8
  5. package/dist/mint-config/schemas/v2/properties/banner.js +4 -2
  6. package/dist/mint-config/schemas/v2/properties/colors.js +4 -4
  7. package/dist/mint-config/schemas/v2/properties/contextual.d.ts +6 -6
  8. package/dist/mint-config/schemas/v2/properties/contextual.js +4 -4
  9. package/dist/mint-config/schemas/v2/properties/description.js +1 -1
  10. package/dist/mint-config/schemas/v2/properties/errors.js +1 -1
  11. package/dist/mint-config/schemas/v2/properties/favicon.js +8 -6
  12. package/dist/mint-config/schemas/v2/properties/fonts/index.js +16 -7
  13. package/dist/mint-config/schemas/v2/properties/footer.js +2 -2
  14. package/dist/mint-config/schemas/v2/properties/icons.js +1 -1
  15. package/dist/mint-config/schemas/v2/properties/logo.js +4 -4
  16. package/dist/mint-config/schemas/v2/properties/metadata.js +1 -1
  17. package/dist/mint-config/schemas/v2/properties/name.js +1 -5
  18. package/dist/mint-config/schemas/v2/properties/redirects.d.ts +13 -0
  19. package/dist/mint-config/schemas/v2/properties/redirects.js +3 -3
  20. package/dist/mint-config/schemas/v2/properties/reusable/page.js +1 -1
  21. package/dist/mint-config/schemas/v2/properties/seo.js +1 -1
  22. package/dist/mint-config/schemas/v2/properties/styling.js +9 -7
  23. package/dist/mint-config/schemas/v2/properties/thumbnails.js +1 -1
  24. package/dist/mint-config/schemas/v2/properties/variables.js +1 -1
  25. package/dist/mint-config/schemas/v2/themes/almond.d.ts +7 -7
  26. package/dist/mint-config/schemas/v2/themes/aspen.d.ts +7 -7
  27. package/dist/mint-config/schemas/v2/themes/linden.d.ts +7 -7
  28. package/dist/mint-config/schemas/v2/themes/luma.d.ts +7 -7
  29. package/dist/mint-config/schemas/v2/themes/maple.d.ts +7 -7
  30. package/dist/mint-config/schemas/v2/themes/mint.d.ts +7 -7
  31. package/dist/mint-config/schemas/v2/themes/palm.d.ts +7 -7
  32. package/dist/mint-config/schemas/v2/themes/reusable/index.d.ts +5 -5
  33. package/dist/mint-config/schemas/v2/themes/sequoia.d.ts +7 -7
  34. package/dist/mint-config/schemas/v2/themes/themes.js +3 -1
  35. package/dist/mint-config/schemas/v2/themes/willow.d.ts +7 -7
  36. package/dist/mint-config/validateConfig.d.ts +18 -18
  37. package/dist/tsconfig.build.tsbuildinfo +1 -1
  38. package/package.json +3 -3
@@ -4,7 +4,7 @@ export const appearanceSchema = z
4
4
  default: z
5
5
  .enum(['system', 'light', 'dark'])
6
6
  .optional()
7
- .describe('The default light/dark mode. Defaults to system'),
7
+ .describe('The default light/dark mode. Defaults to `system`.'),
8
8
  strict: z
9
9
  .boolean()
10
10
  .optional()
@@ -1,21 +1,36 @@
1
1
  import { z } from 'zod';
2
- import { colorSchemaWithOptionalLightAndDark } from './reusable/color.js';
2
+ import { hexColor } from './reusable/color.js';
3
3
  export const backgroundSchema = z
4
4
  .object({
5
5
  image: z
6
6
  .union([
7
- z.string(),
8
- z.object({
9
- light: z.string(),
10
- dark: z.string(),
11
- }),
7
+ z
8
+ .string()
9
+ .describe('Path or URL pointing to the background image file, including the file extension. Used for both light and dark mode.'),
10
+ z
11
+ .object({
12
+ light: z
13
+ .string()
14
+ .describe('The file for the light version of the background image used in dark mode, including the file extension.'),
15
+ dark: z
16
+ .string()
17
+ .describe('The file for the dark version of the background image used in light mode, including the file extension.'),
18
+ })
19
+ .describe('The path to the background image. Can be a single file or a pair for light and dark mode.'),
12
20
  ])
13
21
  .optional()
14
- .describe('A fixed background image. Can be an absolute URL or relative path.'),
22
+ .describe('The background image configuration. Can be a single image for both light and dark mode, or separate images for each mode.'),
15
23
  decoration: z
16
24
  .enum(['gradient', 'grid', 'windows'])
17
25
  .optional()
18
26
  .describe('The background decoration of the theme'),
19
- color: colorSchemaWithOptionalLightAndDark.optional().describe('The colors of the background'),
27
+ color: z
28
+ .object({
29
+ light: hexColor.describe('The background color in light mode').optional(),
30
+ dark: hexColor.describe('The background color in dark mode').optional(),
31
+ })
32
+ .strict()
33
+ .optional()
34
+ .describe('The colors of the background'),
20
35
  })
21
36
  .describe('Background color and decoration settings');
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { colorSchemaWithOptionalLightAndDark } from './reusable/color.js';
3
- export const bannerSchema = z.object({
3
+ export const bannerSchema = z
4
+ .object({
4
5
  content: z
5
6
  .string()
6
7
  .nonempty()
@@ -16,4 +17,5 @@ export const bannerSchema = z.object({
16
17
  color: colorSchemaWithOptionalLightAndDark
17
18
  .optional()
18
19
  .describe('Override the banner background color with a custom hex color. Accepts `{ light, dark }` for theme-aware colors. When set, takes precedence over the color implied by `type`. Banner text is white, so choose a dark enough background for legibility.'),
19
- });
20
+ })
21
+ .describe('Display an announcement bar across the top of every page. When enabled, the banner is shown with the content you provide.');
@@ -2,9 +2,9 @@ import { z } from 'zod';
2
2
  import { hexColor } from './reusable/color.js';
3
3
  export const colorsSchema = z
4
4
  .object({
5
- primary: hexColor.describe('The primary color of the theme'),
6
- light: hexColor.optional().describe('The light color of the theme. Used for dark mode'),
7
- dark: hexColor.optional().describe('The dark color of the theme. Used for light mode'),
5
+ primary: hexColor.describe('The primary color'),
6
+ light: hexColor.optional().describe('The light color. Used primary in dark mode.'),
7
+ dark: hexColor.optional().describe('The dark color. Used primary in light mode.'),
8
8
  })
9
9
  .strict()
10
- .describe('The colors to use in your documentation. At the very least, you must define the primary color. For example: { "colors": { "primary": "#ff0000" } }');
10
+ .describe('The colors to use in your documentation. At the very least, you must define the primary color. For example: { "colors": { "primary": "#ff0000" } }.');
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- export declare const contextualOptions: readonly ["assistant", "copy", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"];
2
+ export declare const contextualOptions: readonly ["copy", "assistant", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"];
3
3
  export type ContextualOption = (typeof contextualOptions)[number];
4
4
  export declare const contextualDisplayOptions: readonly ["header", "toc"];
5
5
  export type ContextualDisplayOption = (typeof contextualDisplayOptions)[number];
@@ -103,7 +103,7 @@ export declare const customContextualOption: z.ZodObject<{
103
103
  } | undefined;
104
104
  }>;
105
105
  export declare const contextualSchema: z.ZodObject<{
106
- options: z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodEnum<["assistant", "copy", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"]>, z.ZodObject<{
106
+ options: z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodEnum<["copy", "assistant", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"]>, z.ZodObject<{
107
107
  title: z.ZodString;
108
108
  description: z.ZodString;
109
109
  icon: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodObject<{
@@ -174,7 +174,7 @@ export declare const contextualSchema: z.ZodObject<{
174
174
  style?: "brands" | "duotone" | "light" | "regular" | "sharp-duotone-solid" | "sharp-light" | "sharp-regular" | "sharp-solid" | "sharp-thin" | "solid" | "thin" | undefined;
175
175
  library?: "fontawesome" | "lucide" | "tabler" | undefined;
176
176
  } | undefined;
177
- }>]>, "many">, ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
177
+ }>]>, "many">, ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
178
178
  href: string | {
179
179
  base: string;
180
180
  query?: {
@@ -189,7 +189,7 @@ export declare const contextualSchema: z.ZodObject<{
189
189
  style?: "brands" | "duotone" | "light" | "regular" | "sharp-duotone-solid" | "sharp-light" | "sharp-regular" | "sharp-solid" | "sharp-thin" | "solid" | "thin" | undefined;
190
190
  library?: "fontawesome" | "lucide" | "tabler" | undefined;
191
191
  } | undefined;
192
- })[], ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
192
+ })[], ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
193
193
  href: string | {
194
194
  base: string;
195
195
  query?: {
@@ -207,7 +207,7 @@ export declare const contextualSchema: z.ZodObject<{
207
207
  })[]>;
208
208
  display: z.ZodDefault<z.ZodOptional<z.ZodEnum<["header", "toc"]>>>;
209
209
  }, "strip", z.ZodTypeAny, {
210
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
210
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
211
211
  href: string | {
212
212
  base: string;
213
213
  query?: {
@@ -225,7 +225,7 @@ export declare const contextualSchema: z.ZodObject<{
225
225
  })[];
226
226
  display: "header" | "toc";
227
227
  }, {
228
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
228
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
229
229
  href: string | {
230
230
  base: string;
231
231
  query?: {
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { iconSchema } from './reusable/icon.js';
3
3
  export const contextualOptions = [
4
- 'assistant',
5
4
  'copy',
5
+ 'assistant',
6
6
  'view',
7
7
  'chatgpt',
8
8
  'claude',
@@ -40,7 +40,7 @@ export const contextualSchema = z
40
40
  .object({
41
41
  options: z
42
42
  .array(z.union([z.enum(contextualOptions), customContextualOption]))
43
- .describe('Contextual options')
43
+ .describe('Quick actions surfaced in the page context menu, like copying the page contents or opening it in an AI assistant (ChatGPT, Claude, Cursor, etc.)')
44
44
  .refine((options) => {
45
45
  const uniqueOptions = new Set(options);
46
46
  return uniqueOptions.size === options.length;
@@ -51,6 +51,6 @@ export const contextualSchema = z
51
51
  .enum(contextualDisplayOptions)
52
52
  .optional()
53
53
  .default('header')
54
- .describe('Where to display the contextual options: "header" (default) shows them in the top-of-page context menu, "toc" shows them in the table of contents sidebar'),
54
+ .describe('Where to display the contextual options: `header` (default) shows them in the top-of-page context menu, `toc` shows them in the table of contents sidebar.'),
55
55
  })
56
- .describe('Contextual options');
56
+ .describe('Context menu shown on each documentation page, providing quick actions for copying, viewing source, and opening the page in AI assistants and IDEs');
@@ -2,4 +2,4 @@ import { z } from 'zod';
2
2
  export const descriptionSchema = z
3
3
  .string()
4
4
  .trim()
5
- .describe('Optional description used for SEO and LLM indexing');
5
+ .describe('Brief overview of the project. Used for SEO and AEO.');
@@ -6,7 +6,7 @@ export const errorsSchema = z
6
6
  .boolean()
7
7
  .optional()
8
8
  .default(true)
9
- .describe('Whether to redirect to the home page, if the page is not found'),
9
+ .describe('Whether to redirect to the home page, if the page is not found. When false, displays a 404 page.'),
10
10
  title: z.string().optional().describe('The title of the error page'),
11
11
  description: z
12
12
  .string()
@@ -1,16 +1,18 @@
1
1
  import { z } from 'zod';
2
- export const faviconSchema = z.union([
2
+ export const faviconSchema = z
3
+ .union([
3
4
  z
4
5
  .string()
5
- .describe('Path pointing to the favicon file in your docs folder, including the file extension. The favicon will automatically be resized to the appropriate sizes'),
6
+ .describe('Path pointing to the favicon file in your docs folder, including the file extension. The favicon will automatically be resized to the appropriate sizes.'),
6
7
  z
7
8
  .object({
8
9
  light: z
9
10
  .string()
10
- .describe('Path pointing to the light favicon file to use in dark mode, including the file extension. Example: `/favicon.png`'),
11
+ .describe('The file for the light version of the favicon used in dark mode, including the file extension.'),
11
12
  dark: z
12
13
  .string()
13
- .describe('Path pointing to the dark favicon file to use in light mode, including the file extension. Example: `/favicon-dark.png`'),
14
+ .describe('The file for the dark version of the favicon used in light mode, including the file extension.'),
14
15
  })
15
- .describe('The path to the favicon. Can be a single file or a pair for light and dark mode. Example: `/favicon.png`'),
16
- ]);
16
+ .describe('The path to the favicon. Can be a single file or a pair for light and dark mode.'),
17
+ ])
18
+ .describe('The favicon configuration. Can be a single image path for both light and dark mode, or separate paths for each mode.');
@@ -3,15 +3,20 @@ import { z } from 'zod';
3
3
  import { fontSourceSchema } from './source.js';
4
4
  export const fontDetailsSchema = z
5
5
  .object({
6
- family: z.string().describe('The font family, such as "Open Sans", "Playfair Display"'),
6
+ family: z
7
+ .string()
8
+ .describe('The font family name. Any [Google Fonts](https://fonts.google.com/) family works out of the box (e.g. `Inter`, `Open Sans`, `Playfair Display`). For a self-hosted font, set `source` and `format` as well.'),
7
9
  weight: z
8
10
  .number()
9
11
  .optional()
10
- .describe('The font weight, such as 400, 700. Precise font weights such as 550 are supported for variable fonts.'),
12
+ .describe('The font weight. Typically `400` for regular and `700` for bold. Variable fonts support precise weights like `550`.'),
11
13
  source: fontSourceSchema
12
14
  .optional()
13
- .describe('The font source, such as /path/to/font.woff2 or https://example.com/path/to/font.woff2'),
14
- format: z.enum(fontFormats).optional().describe('The font format, can be one of woff, woff2'),
15
+ .describe('URL or path to a self-hosted font file. Use this when the font is not on Google Fonts. Example: `/fonts/custom.woff2` or `https://cdn.example.com/font.woff2`.'),
16
+ format: z
17
+ .enum(fontFormats)
18
+ .optional()
19
+ .describe('File format of the self-hosted font. Required when `source` is set.'),
15
20
  })
16
21
  .refine((data) => {
17
22
  if (data.source) {
@@ -24,9 +29,13 @@ export const fontsSchema = z
24
29
  fontDetailsSchema,
25
30
  z
26
31
  .object({
27
- heading: fontDetailsSchema.optional(),
28
- body: fontDetailsSchema.optional(),
32
+ heading: fontDetailsSchema
33
+ .optional()
34
+ .describe('Font settings applied to all headings (`h1`–`h6`).'),
35
+ body: fontDetailsSchema
36
+ .optional()
37
+ .describe('Font settings applied to body text and the rest of the page.'),
29
38
  })
30
39
  .strict(),
31
40
  ])
32
- .describe('The fonts to be used');
41
+ .describe('Typography configuration. Use a single set of font settings for the whole site, or split into separate `heading` and `body` fonts.');
@@ -19,7 +19,7 @@ export const footerLinksColumnSchema = z.object({
19
19
  });
20
20
  export const footerSocialsSchema = z
21
21
  .record(z.enum(footerSocialKeys), secureUrlSchema.describe('Must be a valid URL'))
22
- .describe('An object in which each key is the name of a social media platform, and each value is the url to your profile. For example: { "x": "https://x.com/mintlify" }');
22
+ .describe('An object in which each key is the name of a social media platform, and each value is the url to your profile.');
23
23
  export const footerSchema = z
24
24
  .object({
25
25
  socials: footerSocialsSchema.optional(),
@@ -28,6 +28,6 @@ export const footerSchema = z
28
28
  .min(1, 'A footer must have at least 1 links column')
29
29
  .max(4, 'A footer can have a maximum of 4 links columns')
30
30
  .optional()
31
- .describe('The links to be displayed in the footer'),
31
+ .describe('Enable columns with links to be displayed in the footer'),
32
32
  })
33
33
  .describe('Footer configurations');
@@ -4,6 +4,6 @@ export const iconsSchema = z
4
4
  .object({
5
5
  library: z
6
6
  .enum(iconLibraries)
7
- .describe('The icon library to be used. Defaults to `fontawesome`.'),
7
+ .describe('The icon library used for all icon properties. Defaults to `fontawesome`.'),
8
8
  })
9
9
  .describe('Icon library settings');
@@ -9,13 +9,13 @@ export const logoSchema = z
9
9
  z.object({
10
10
  light: z
11
11
  .string()
12
- .describe('Path pointing to the light logo file to use in dark mode, including the file extension. Example: `/logo.png`'),
12
+ .describe('The file for the light version of the logo used in dark mode, including the file extension.'),
13
13
  dark: z
14
14
  .string()
15
- .describe('Path pointing to the dark logo file to use in light mode, including the file extension. Example: `/logo-dark.png`'),
15
+ .describe('The file for the dark version of the logo used in light mode, including the file extension.'),
16
16
  href: hrefSchema
17
17
  .optional()
18
- .describe('The URL to redirect to when clicking the logo. If not provided, the logo will link to the homepage. Example: `https://example.com`'),
18
+ .describe('The URL to redirect to when clicking the logo. If not provided, the logo will link to the homepage.'),
19
19
  }),
20
20
  ])
21
- .describe('The logo configuration. Can be a single image path for both light and dark mode, or separate paths for each mode with an optional click target URL');
21
+ .describe('The logo configuration. Can be a single image path for both light and dark mode, or separate paths for each mode with an optional click target URL.');
@@ -5,7 +5,7 @@ export const metadataSchema = z
5
5
  .boolean()
6
6
  .optional()
7
7
  .default(false)
8
- .describe('When enabled, all pages will display the date the content was last modified. Default is false.'),
8
+ .describe('When enabled, all pages will display the date the content was last modified. Default is `false`.'),
9
9
  })
10
10
  .optional()
11
11
  .describe('Metadata configuration for documentation pages');
@@ -1,6 +1,2 @@
1
1
  import { z } from 'zod';
2
- export const nameSchema = z
3
- .string()
4
- .trim()
5
- .nonempty()
6
- .describe('The name of the project, organization, or product');
2
+ export const nameSchema = z.string().trim().nonempty().describe('The name of the project');
@@ -1,4 +1,17 @@
1
1
  import { z } from 'zod';
2
+ export declare const redirectSchema: z.ZodObject<{
3
+ source: z.ZodString;
4
+ destination: z.ZodString;
5
+ permanent: z.ZodOptional<z.ZodBoolean>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ source: string;
8
+ destination: string;
9
+ permanent?: boolean | undefined;
10
+ }, {
11
+ source: string;
12
+ destination: string;
13
+ permanent?: boolean | undefined;
14
+ }>;
2
15
  export declare const redirectsSchema: z.ZodEffects<z.ZodArray<z.ZodObject<{
3
16
  source: z.ZodString;
4
17
  destination: z.ZodString;
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- const redirectSchema = z.object({
3
- source: z.string().describe('The source path to redirect from'),
2
+ export const redirectSchema = z.object({
3
+ source: z.string().describe('The source path to redirect from. Supports wildcards.'),
4
4
  destination: z.string().describe('The destination path to redirect to. Supports wildcards.'),
5
5
  permanent: z
6
6
  .boolean()
@@ -12,5 +12,5 @@ export const redirectsSchema = z
12
12
  .refine((value) => {
13
13
  const keys = value.map((obj) => obj.source);
14
14
  return new Set(keys).size === keys.length;
15
- }, 'Sources in the array must be unique')
15
+ }, 'Each source path can only be used once')
16
16
  .describe('URL redirect rules');
@@ -16,7 +16,7 @@ export const pageSchema = z
16
16
  .string()
17
17
  .nonempty()
18
18
  .transform(normalizeRelativePath)
19
- .describe('A page in the navigation. Referenced by the path to the page. Example: path/to/page');
19
+ .describe('A page in the navigation. Referenced by the path to the page. Example: path/to/page.');
20
20
  export const decoratedPageSchema = z
21
21
  .object({
22
22
  href: z.string(),
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  export const metatagsSchema = z
3
3
  .record(z.string(), z.string().nonempty())
4
4
  .optional()
5
- .describe('Meta tags added to every page. Must be a valid key-value pair');
5
+ .describe('Meta tags added to every page. Must be a valid key-value pair.');
6
6
  export const seoSchema = z
7
7
  .object({
8
8
  metatags: metatagsSchema.optional(),
@@ -17,8 +17,12 @@ export const stylingSchema = z
17
17
  .describe('The eyebrows style of the content. Defaults to `section`.'),
18
18
  codeblocks: z
19
19
  .union([
20
- z.enum(['system', 'dark']).optional(),
21
- z.object({
20
+ z
21
+ .enum(['system', 'dark'])
22
+ .optional()
23
+ .describe('Match the docs light/dark mode with `system`, or always use a dark theme with `dark`.'),
24
+ z
25
+ .object({
22
26
  theme: z
23
27
  .union([
24
28
  z.enum(SHIKI_THEMES),
@@ -29,12 +33,10 @@ export const stylingSchema = z
29
33
  ])
30
34
  .optional(),
31
35
  languages: codeblockCustomLanguagesSchema.optional(),
32
- }),
36
+ })
37
+ .describe('Pick a custom Shiki theme. Use a single theme for both modes, or set separate light/dark themes.'),
33
38
  ])
34
39
  .describe('The codeblock theme configuration. Defaults to `system`. To use a built-in shiki theme, add the theme name as "theme" in the object. To use different shiki themes for light and dark modes, add "themes" in the object with "dark" and "light" keys.'),
35
- latex: z
36
- .boolean()
37
- .optional()
38
- .describe('Whether to include latex styling, overriding our default latex detection'),
40
+ latex: z.boolean().optional().describe('Whether to load LaTeX stylesheets'),
39
41
  })
40
42
  .describe('Styling configurations');
@@ -13,7 +13,7 @@ export const thumbnailsSchema = z.object({
13
13
  appearance: z
14
14
  .enum([ThumbnailAppearance.Light, ThumbnailAppearance.Dark])
15
15
  .optional()
16
- .describe('The appearance of the thumbnail. Defaults to generated by colors.'),
16
+ .describe('Whether to render page thumbnails in light or dark mode. When unset, thumbnails are auto-generated from your theme colors.'),
17
17
  background: z
18
18
  .string()
19
19
  .optional()
@@ -1,4 +1,4 @@
1
1
  import { z } from 'zod';
2
2
  export const variablesSchema = z
3
3
  .record(z.string(), z.string())
4
- .describe('Set of custom variables used throughout your documentation.');
4
+ .describe('Set of custom variables that can be re-used throughout the content');
@@ -1414,7 +1414,7 @@ export declare const almondConfigSchema: z.ZodObject<{
1414
1414
  };
1415
1415
  }>>;
1416
1416
  contextual: z.ZodOptional<z.ZodObject<{
1417
- options: z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodEnum<["assistant", "copy", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"]>, z.ZodObject<{
1417
+ options: z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodEnum<["copy", "assistant", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"]>, z.ZodObject<{
1418
1418
  title: z.ZodString;
1419
1419
  description: z.ZodString;
1420
1420
  icon: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodObject<{
@@ -1485,7 +1485,7 @@ export declare const almondConfigSchema: z.ZodObject<{
1485
1485
  style?: "brands" | "duotone" | "light" | "regular" | "sharp-duotone-solid" | "sharp-light" | "sharp-regular" | "sharp-solid" | "sharp-thin" | "solid" | "thin" | undefined;
1486
1486
  library?: "fontawesome" | "lucide" | "tabler" | undefined;
1487
1487
  } | undefined;
1488
- }>]>, "many">, ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1488
+ }>]>, "many">, ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1489
1489
  href: string | {
1490
1490
  base: string;
1491
1491
  query?: {
@@ -1500,7 +1500,7 @@ export declare const almondConfigSchema: z.ZodObject<{
1500
1500
  style?: "brands" | "duotone" | "light" | "regular" | "sharp-duotone-solid" | "sharp-light" | "sharp-regular" | "sharp-solid" | "sharp-thin" | "solid" | "thin" | undefined;
1501
1501
  library?: "fontawesome" | "lucide" | "tabler" | undefined;
1502
1502
  } | undefined;
1503
- })[], ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1503
+ })[], ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1504
1504
  href: string | {
1505
1505
  base: string;
1506
1506
  query?: {
@@ -1518,7 +1518,7 @@ export declare const almondConfigSchema: z.ZodObject<{
1518
1518
  })[]>;
1519
1519
  display: z.ZodDefault<z.ZodOptional<z.ZodEnum<["header", "toc"]>>>;
1520
1520
  }, "strip", z.ZodTypeAny, {
1521
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1521
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1522
1522
  href: string | {
1523
1523
  base: string;
1524
1524
  query?: {
@@ -1536,7 +1536,7 @@ export declare const almondConfigSchema: z.ZodObject<{
1536
1536
  })[];
1537
1537
  display: "header" | "toc";
1538
1538
  }, {
1539
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1539
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1540
1540
  href: string | {
1541
1541
  base: string;
1542
1542
  query?: {
@@ -1944,7 +1944,7 @@ export declare const almondConfigSchema: z.ZodObject<{
1944
1944
  };
1945
1945
  } | undefined;
1946
1946
  contextual?: {
1947
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1947
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1948
1948
  href: string | {
1949
1949
  base: string;
1950
1950
  query?: {
@@ -2320,7 +2320,7 @@ export declare const almondConfigSchema: z.ZodObject<{
2320
2320
  };
2321
2321
  } | undefined;
2322
2322
  contextual?: {
2323
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
2323
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
2324
2324
  href: string | {
2325
2325
  base: string;
2326
2326
  query?: {
@@ -1414,7 +1414,7 @@ export declare const aspenConfigSchema: z.ZodObject<{
1414
1414
  };
1415
1415
  }>>;
1416
1416
  contextual: z.ZodOptional<z.ZodObject<{
1417
- options: z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodEnum<["assistant", "copy", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"]>, z.ZodObject<{
1417
+ options: z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodEnum<["copy", "assistant", "view", "chatgpt", "claude", "perplexity", "grok", "aistudio", "devin", "windsurf", "mcp", "add-mcp", "cursor", "vscode", "devin-mcp"]>, z.ZodObject<{
1418
1418
  title: z.ZodString;
1419
1419
  description: z.ZodString;
1420
1420
  icon: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodObject<{
@@ -1485,7 +1485,7 @@ export declare const aspenConfigSchema: z.ZodObject<{
1485
1485
  style?: "brands" | "duotone" | "light" | "regular" | "sharp-duotone-solid" | "sharp-light" | "sharp-regular" | "sharp-solid" | "sharp-thin" | "solid" | "thin" | undefined;
1486
1486
  library?: "fontawesome" | "lucide" | "tabler" | undefined;
1487
1487
  } | undefined;
1488
- }>]>, "many">, ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1488
+ }>]>, "many">, ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1489
1489
  href: string | {
1490
1490
  base: string;
1491
1491
  query?: {
@@ -1500,7 +1500,7 @@ export declare const aspenConfigSchema: z.ZodObject<{
1500
1500
  style?: "brands" | "duotone" | "light" | "regular" | "sharp-duotone-solid" | "sharp-light" | "sharp-regular" | "sharp-solid" | "sharp-thin" | "solid" | "thin" | undefined;
1501
1501
  library?: "fontawesome" | "lucide" | "tabler" | undefined;
1502
1502
  } | undefined;
1503
- })[], ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1503
+ })[], ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1504
1504
  href: string | {
1505
1505
  base: string;
1506
1506
  query?: {
@@ -1518,7 +1518,7 @@ export declare const aspenConfigSchema: z.ZodObject<{
1518
1518
  })[]>;
1519
1519
  display: z.ZodDefault<z.ZodOptional<z.ZodEnum<["header", "toc"]>>>;
1520
1520
  }, "strip", z.ZodTypeAny, {
1521
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1521
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1522
1522
  href: string | {
1523
1523
  base: string;
1524
1524
  query?: {
@@ -1536,7 +1536,7 @@ export declare const aspenConfigSchema: z.ZodObject<{
1536
1536
  })[];
1537
1537
  display: "header" | "toc";
1538
1538
  }, {
1539
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1539
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1540
1540
  href: string | {
1541
1541
  base: string;
1542
1542
  query?: {
@@ -1944,7 +1944,7 @@ export declare const aspenConfigSchema: z.ZodObject<{
1944
1944
  };
1945
1945
  } | undefined;
1946
1946
  contextual?: {
1947
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1947
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
1948
1948
  href: string | {
1949
1949
  base: string;
1950
1950
  query?: {
@@ -2320,7 +2320,7 @@ export declare const aspenConfigSchema: z.ZodObject<{
2320
2320
  };
2321
2321
  } | undefined;
2322
2322
  contextual?: {
2323
- options: ("assistant" | "copy" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
2323
+ options: ("copy" | "assistant" | "view" | "chatgpt" | "claude" | "perplexity" | "grok" | "aistudio" | "devin" | "windsurf" | "mcp" | "add-mcp" | "cursor" | "vscode" | "devin-mcp" | {
2324
2324
  href: string | {
2325
2325
  base: string;
2326
2326
  query?: {