feat: update schema, add ProjectCard
, readme
This commit is contained in:
parent
fbeab5a744
commit
b93eddea6b
24 changed files with 373 additions and 72 deletions
|
@ -2,15 +2,31 @@ import { defineCollection, z } from 'astro:content'
|
|||
|
||||
const blog = defineCollection({
|
||||
type: 'content',
|
||||
schema: z.object({
|
||||
title: z.string(),
|
||||
description: z.string(),
|
||||
date: z.coerce.date(),
|
||||
draft: z.boolean().optional(),
|
||||
image: z.string().optional(),
|
||||
tags: z.array(z.string()).optional(),
|
||||
authors: z.array(z.string()).optional(),
|
||||
}),
|
||||
schema: ({ image }) =>
|
||||
z.object({
|
||||
title: z
|
||||
.string()
|
||||
.max(
|
||||
60,
|
||||
'Title should be 60 characters or less for optimal Open Graph display.',
|
||||
),
|
||||
description: z
|
||||
.string()
|
||||
.max(
|
||||
155,
|
||||
'Description should be 155 characters or less for optimal Open Graph display.',
|
||||
),
|
||||
date: z.coerce.date(),
|
||||
image: image()
|
||||
.refine((img) => img.width === 1200 && img.height === 630, {
|
||||
message:
|
||||
'The image must be exactly 1200px × 630px for Open Graph requirements.',
|
||||
})
|
||||
.optional(),
|
||||
tags: z.array(z.string()).optional(),
|
||||
authors: z.array(z.string()).optional(),
|
||||
draft: z.boolean().optional(),
|
||||
}),
|
||||
})
|
||||
|
||||
const authors = defineCollection({
|
||||
|
@ -20,13 +36,28 @@ const authors = defineCollection({
|
|||
pronouns: z.string().optional(),
|
||||
avatar: z.string().url(),
|
||||
bio: z.string().optional(),
|
||||
website: z.string().url().optional(),
|
||||
twitter: z.string().optional(),
|
||||
github: z.string().optional(),
|
||||
linkedin: z.string().optional(),
|
||||
mail: z.string().email().optional(),
|
||||
discord: z.string().optional(),
|
||||
website: z.string().url().optional(),
|
||||
twitter: z.string().url().optional(),
|
||||
github: z.string().url().optional(),
|
||||
linkedin: z.string().url().optional(),
|
||||
discord: z.string().url().optional(),
|
||||
}),
|
||||
})
|
||||
|
||||
export const collections = { blog, authors }
|
||||
const projects = defineCollection({
|
||||
type: 'content',
|
||||
schema: ({ image }) =>
|
||||
z.object({
|
||||
name: z.string(),
|
||||
description: z.string(),
|
||||
tags: z.array(z.string()),
|
||||
image: image().refine((img) => img.width === 1200 && img.height === 630, {
|
||||
message:
|
||||
'The image must be exactly 1200px × 630px for Open Graph requirements.',
|
||||
}),
|
||||
link: z.string().url(),
|
||||
}),
|
||||
})
|
||||
|
||||
export const collections = { blog, authors, projects }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue