import React from 'react'; import { Link } from 'react-router-dom'; import { Calendar, Clock, Download, LogOut } from 'lucide-react'; import { parseISO } from 'date-fns'; import { useTranslation } from 'react-i18next'; import { useLocalizedDate } from '../../hooks/useLocalizedDate'; import { Button } from '../common'; import { DynamicFavicon } from '../common/DynamicFavicon'; interface GalleryLayoutProps { event: { event_name: string; event_type?: string; event_date?: string; expires_at?: string; }; brandingSettings?: { company_name?: string; company_tagline?: string; support_email?: string; footer_text?: string; favicon_url?: string; logo_url?: string; }; showLogout?: boolean; onLogout?: () => void; showDownloadAll?: boolean; onDownloadAll?: () => void; isDownloading?: boolean; headerExtra?: React.ReactNode; children: React.ReactNode; } export const GalleryLayout: React.FC = ({ event, brandingSettings, showLogout = false, onLogout, showDownloadAll = false, onDownloadAll, isDownloading = false, headerExtra, children, }) => { const { t } = useTranslation(); const { format } = useLocalizedDate(); return (
{/* Dynamic Favicon */} {/* Header */}
{/* Company logo */} {brandingSettings?.logo_url && (
{brandingSettings.company_name
)} {/* Company branding */} {!brandingSettings?.logo_url && brandingSettings?.company_name && (

{brandingSettings.company_name}

{brandingSettings.company_tagline && (

{brandingSettings.company_tagline}

)}
)}

{event.event_name}

{(event.event_date || event.expires_at) && (
{event.event_date && ( {format(parseISO(event.event_date), 'PP')} )} {event.expires_at && ( {t('gallery.expires')} {format(parseISO(event.expires_at), 'PP')} )}
)}
{headerExtra} {showDownloadAll && onDownloadAll && ( )} {showLogout && onLogout && ( )}
{/* Main Content */}
{children}
{/* Footer */}
); }; GalleryLayout.displayName = 'GalleryLayout';