@mintlify/validation
Version:
Validates mint.json files
44 lines (43 loc) • 1.18 kB
JavaScript
import { z } from 'zod';
import { iconSchema } from './reusable/icon.js';
export const contextualOptions = [
'copy',
'view',
'chatgpt',
'claude',
'perplexity',
'mcp',
'cursor',
'vscode',
];
export const contextualHrefPresetValues = ['$page', '$path', '$mcp'];
export const DetailedContextualHrefSchema = z.object({
base: z.string(),
query: z
.array(z.object({
key: z.string(),
value: z.string(),
}))
.optional(),
});
export const customContextualOption = z
.object({
title: z.string(),
description: z.string(),
icon: iconSchema.optional(),
href: z.union([z.string(), DetailedContextualHrefSchema]),
})
.describe('Custom contextual option');
export const contextualSchema = z
.object({
options: z
.array(z.union([z.enum(contextualOptions), customContextualOption]))
.describe('Contextual options')
.refine((options) => {
const uniqueOptions = new Set(options);
return uniqueOptions.size === options.length;
}, {
message: 'Each contextual option can only appear once',
}),
})
.describe('Contextual options');