@mintlify/validation
Version:
Validates mint.json files
35 lines (34 loc) • 1.1 kB
JavaScript
import { z } from 'zod';
import { iconSchema } from './reusable/icon.js';
export const contextualOptions = ['copy', 'view', 'chatgpt', 'claude', 'perplexity'];
export const contextualHrefPresetValues = ['$page', '$path'];
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');