feat: publication management with cover images, PDFs, and fruit images (story #04)

Full CRUD for publications; link fruits to publications; upload per-fruit
PDF descriptions and fruit images stored as BYTEA; fruit detail page shows
publication descriptions and images. ImageOverlayDrawer for cover thumbnail
full-size view.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 10:48:08 +02:00
co-authored by Claude Sonnet 4.6
parent 2e3f0f366c
commit fce4d67cbe
18 changed files with 3116 additions and 0 deletions
@@ -0,0 +1,21 @@
<script setup lang="ts">
defineProps<{ src: string; alt?: string }>()
const emit = defineEmits<{ close: [] }>()
</script>
<template>
<div
class="fixed inset-0 z-50 flex items-center justify-center bg-black/70"
@click.self="emit('close')"
>
<div class="relative max-h-screen max-w-screen-lg p-4">
<button
class="absolute right-2 top-2 rounded bg-white/90 px-2 py-1 text-sm font-bold shadow hover:bg-white"
@click="emit('close')"
>
</button>
<img :src="src" :alt="alt ?? 'Bild'" class="max-h-[85vh] max-w-full rounded shadow-lg object-contain" />
</div>
</div>
</template>