mirror of
https://github.com/ArthurDanjou/artchat.git
synced 2026-01-14 18:59:54 +01:00
- Implemented InfiniteCanvas.vue for rendering an infinite canvas with drag and zoom capabilities. - Created useInfiniteCanvas composable for managing canvas state and interactions. - Added useImagePreloader composable for preloading images and videos. - Introduced constants for physics, touch interactions, viewport settings, and zoom defaults. - Developed utility functions for touch handling and media type detection. - Defined TypeScript types for canvas items, grid items, and composables. - Registered components and composables in the Nuxt module. - Added screenshot generation functionality for content files. - Updated package.json to include capture-website dependency.
83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
import { defineCollection, z } from '@nuxt/content'
|
|
|
|
export const collections = {
|
|
projects: defineCollection({
|
|
type: 'page',
|
|
source: 'projects/*.md',
|
|
schema: z.object({
|
|
slug: z.string(),
|
|
title: z.string(),
|
|
description: z.string(),
|
|
publishedAt: z.string(),
|
|
readingTime: z.number().optional(),
|
|
tags: z.array(z.string()),
|
|
cover: z.string(),
|
|
favorite: z.boolean().optional(),
|
|
canva: z.object({
|
|
height: z.number().default(270),
|
|
width: z.number().default(480),
|
|
}),
|
|
}),
|
|
}),
|
|
writings: defineCollection({
|
|
type: 'page',
|
|
source: 'writings/*.md',
|
|
schema: z.object({
|
|
slug: z.string(),
|
|
title: z.string(),
|
|
description: z.string(),
|
|
publishedAt: z.string(),
|
|
readingTime: z.number(),
|
|
cover: z.string().optional(),
|
|
tags: z.array(z.string()),
|
|
canva: z.object({
|
|
height: z.number().default(270),
|
|
width: z.number().default(480),
|
|
}),
|
|
}),
|
|
}),
|
|
usesCategories: defineCollection({
|
|
type: 'data',
|
|
source: 'uses/categories/*.json',
|
|
schema: z.object({
|
|
slug: z.string(),
|
|
name: z.object({
|
|
en: z.string(),
|
|
fr: z.string(),
|
|
es: z.string(),
|
|
}),
|
|
}),
|
|
}),
|
|
uses: defineCollection({
|
|
type: 'data',
|
|
source: 'uses/*.json',
|
|
schema: z.object({
|
|
name: z.string(),
|
|
description: z.object({
|
|
en: z.string(),
|
|
fr: z.string(),
|
|
es: z.string(),
|
|
}),
|
|
category: z.string(),
|
|
}),
|
|
}),
|
|
skills: defineCollection({
|
|
type: 'data',
|
|
source: 'skills.json',
|
|
schema: z.object({
|
|
body: z.array(z.object({
|
|
id: z.string(),
|
|
name: z.object({
|
|
en: z.string(),
|
|
fr: z.string(),
|
|
es: z.string(),
|
|
}),
|
|
items: z.array(z.object({
|
|
name: z.string(),
|
|
icon: z.string(),
|
|
})),
|
|
})),
|
|
}),
|
|
}),
|
|
}
|