Initial commit
This commit is contained in:
72
resources/js/pages/Gallery/Gallery.tsx
Normal file
72
resources/js/pages/Gallery/Gallery.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user