blob: 7dea9c18b79f9ca8c9db1e1c7d7c40f8f3b835f1 [file] [edit]
import { z, defineCollection } from 'astro:content'
import { glob } from 'astro/loaders'
const docsSchema = z.object({
added: z
.object({
show_badge: z.boolean().optional(),
version: z.string()
})
.optional(),
aliases: z.string().or(z.string().array()).optional(),
csstricks: z
.union([
z.string(),
z.object({
url: z.string(),
label: z.string().optional()
})
])
.optional(),
description: z.string(),
extra_js: z
.object({
async: z.boolean().optional(),
src: z.string()
})
.array()
.optional(),
mdn: z.string().optional(),
reference: z
.object({
class: z.string(),
description: z.string().optional(),
styles: z.union([z.string(), z.string().array(), z.record(z.string(), z.string())]).optional()
})
.array()
.optional(),
utility: z.union([z.string(), z.string().array()]).optional(),
classes: z
.object({
class: z.string(),
description: z.string()
})
.array()
.optional(),
sections: z
.object({
description: z.string(),
title: z.string()
})
.array()
.optional(),
css_layer: z.enum(['reboot', 'layout', 'content', 'forms', 'components', 'helpers', 'utilities']).optional(),
css_media: z.enum(['container', 'viewport']).optional(),
deps: z
.object({
title: z.string(),
url: z.string().optional()
})
.array()
.optional(),
js: z.enum(['required', 'optional']).optional(),
thumbnail: z.string().optional(),
title: z.string(),
toc: z.boolean().optional()
})
const docsCollection = defineCollection({
loader: glob({
base: './src/content/docs',
pattern: '**/*.{md,mdx}'
}),
schema: docsSchema
})
const calloutsSchema = z.object({})
const calloutsCollection = defineCollection({
loader: glob({
base: './src/content/callouts',
pattern: '**/*.{md,mdx}'
}),
schema: calloutsSchema
})
const detailsSchema = z.object({
title: z.string().optional()
})
const detailsCollection = defineCollection({
loader: glob({
base: './src/content/details',
pattern: '**/*.{md,mdx}'
}),
schema: detailsSchema
})
export const collections = {
docs: docsCollection,
callouts: calloutsCollection,
details: detailsCollection
}