website/src/content/config.ts

25 lines
723 B
TypeScript
Raw Normal View History

2024-03-26 16:36:18 +01:00
import { defineCollection, z } from 'astro:content';
const blogCollection = defineCollection({
2024-04-03 18:54:51 +02:00
schema: ({ image }) => z.object({
2024-03-26 16:36:18 +01:00
title: z.string(),
2024-03-27 01:51:42 +01:00
date: z.date(),
2024-04-03 18:54:51 +02:00
cover: image().refine((img) => img.width >= 720, {
message: "Cover image must be at least 720 pixels wide!",
}).optional(),
coverAlt: z.string().optional(),
2024-04-03 14:27:48 +02:00
description: z.string().optional(),
icon: z.string().optional(),
2024-03-28 18:30:52 +01:00
draft: z.boolean().optional(),
featured: z.boolean().optional(),
2024-04-03 14:27:48 +02:00
tags: z.array(z.string()).optional(),
2024-03-28 18:30:52 +01:00
_layout: z.enum(['normal', 'transparent']).optional(),
2024-03-26 16:36:18 +01:00
})
});
export const collections = {
2024-03-28 18:30:52 +01:00
'blog': blogCollection,
"projects": blogCollection,
"photos": blogCollection,
2024-03-26 16:36:18 +01:00
};