UNPKG

@mintlify/validation

Version:

Validates mint.json files

61 lines (60 loc) 2.19 kB
import { codeBlockModes } from '@mintlify/models'; import { z } from 'zod'; export const nameSchema = z.string().trim().nonempty(); export const logoSchema = z.union([ z.string().min(3, 'Must be a path to your logo file including the file extension'), z.object({ light: z.string(), dark: z.string(), href: z.string().optional(), }), ]); export const modeToggleSchema = z.object({ default: z.enum(['light', 'dark']).optional(), isHidden: z.boolean().optional(), }); export const eyebrowSchema = z.object({ display: z.enum(['section', 'breadcrumbs']).optional(), }); export const isWhiteLabeledSchema = z.boolean(); export const metadataSchema = z.record(z.string(), z.string().nonempty()); export const codeBlockSchema = z.object({ mode: z.enum(codeBlockModes).optional(), }); export const feedbackSchema = z.object({ thumbsRating: z.boolean().optional(), suggestEdit: z.boolean().optional(), raiseIssue: z.boolean().optional(), }); export const searchSchema = z.object({ prompt: z.string().optional(), location: z.enum(['side', 'top']).optional(), }); const redirectSchema = z.object({ source: z.string(), destination: z.string(), permanent: z.boolean().optional(), }); export const redirectsSchema = z.array(redirectSchema).refine((value) => { const keys = value.map((obj) => obj.source); return new Set(keys).size === keys.length; }, 'Sources in the array must be unique'); export const ctaButtonSchema = z .union([ z .object({ type: z.literal('link').optional(), name: z.string(), url: z.string().nonempty(), style: z.enum(['pill', 'roundedRectangle']).optional(), arrow: z.boolean().optional(), }) .strict(), z .object({ type: z.literal('github'), url: z.string().url('Must be a valid URL').describe('A link to your GitHub repository'), }) .strict(), ]) .describe('An object containing the configuration for a Call-to-Action button. The object can have { "type": "link" } (the default) if you define a url and a name. For links to your GitHub repo, use { "type": "github" }');