Initial commit

This commit is contained in:
2025-10-11 17:02:49 +02:00
commit 92056f073f
243 changed files with 27536 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
import { useEffect, useState } from 'react';
import { Head } from '@inertiajs/react';
import AppLayout from '@/layouts/AppLayout';
import styles from './Gallery.module.css';
import { ActionButtons } from '@/components/ActionButtons/ActionButtons';
import Header from '@/components/Header/Header';
import Footer from '@/components/Footer/Footer';
interface Photo {
id: number;
sort_order: number;
name: string;
description: string | null;
photo: string;
created_at: string;
updated_at: string;
}
interface PhotosResponse {
status: string;
data: Photo[];
}
export default function Gallery() {
const [photos, setPhotos] = useState<Photo[]>([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch('/api/photos')
.then(res => res.json())
.then((response: PhotosResponse) => {
if (response.status === 'success') {
setPhotos(response.data);
}
setLoading(false);
})
.catch(error => {
console.error('Error fetching photos:', error);
setLoading(false);
});
}, []);
if (loading) {
return (
<></>
);
}
return (
<AppLayout>
<Head title="Galeria - Ghost Pizza" />
<div className={styles.bg}>
<Header isSmall={true} />
<main className={styles.main}>
<h2>Poniżej znajdziesz kilka zdjęć naszej przepysznej pizzy.</h2>
<div className={styles.container}>
{photos.map((photo, index) => (
<img
key={index}
src={photo.photo}
alt={photo.description ? photo.description : ""}
className={styles.image}
/>
))}
</div>
</main>
<ActionButtons variant="floating" />
<Footer />
</div>
</AppLayout>
);
}