feat: add wishlist

This commit is contained in:
2026-09-30 19:15:57 +02:00
parent ab3bbb6338
commit 1f6061b998
57 changed files with 638 additions and 232 deletions
-5
View File
@@ -1,5 +0,0 @@
export interface Note {
id: number
date: string
text: string
}
-10
View File
@@ -1,10 +0,0 @@
export type Medium = 'book' | 'movie' | 'album'
export interface Review {
id: number
date: string
title: string
author: string | null
text: string
medium: Medium | null
}
-9
View File
@@ -1,9 +0,0 @@
import type { Medium } from '../types/review'
export const MEDIUMS: Record<Medium, { label: string, creator: string }> = {
book: { label: 'Book', creator: 'Author' },
movie: { label: 'Movie', creator: 'Director' },
album: { label: 'Album', creator: 'Artist' }
}
export const MEDIUM_KEYS = Object.keys(MEDIUMS) as [Medium, ...Medium[]]
-25
View File
@@ -1,25 +0,0 @@
import { z } from 'zod'
import { MEDIUM_KEYS } from './medium'
const isoDate = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, 'Pick a date')
const requiredText = z.string().trim().min(1, 'Write something first')
export const newNoteSchema = z.object({
date: isoDate,
text: requiredText
})
export const newReviewSchema = z.object({
medium: z.enum(MEDIUM_KEYS, { error: 'Pick a medium' }),
date: isoDate,
title: z.string().trim().min(1, 'Add a title'),
author: z.string().trim().optional(),
text: requiredText
})
export const loginSchema = z.object({
password: z.string().min(1)
})
export type NewNoteInput = z.output<typeof newNoteSchema>
export type NewReviewInput = z.output<typeof newReviewSchema>