6368f1027f
- Grid, Masonry, Mosaic, Timeline, Hero, and Carousel layouts now expose inline Like/Favorite buttons when feedback is enabled - Respect requireNameEmail; prompt via identity modal before submitting feedback - Wire feedback settings from GalleryView -> layouts via feedbackOptions feat(lightbox): keep feedback usable while navigating - Add initialShowFeedback prop; preserve panel state across navigation - Offset Next button when feedback panel is open so it remains accessible - Hide/avoid overlapping nav on small screens Refs: #19
32 lines
953 B
TypeScript
32 lines
953 B
TypeScript
import React from 'react';
|
|
import type { Photo } from '../../../types';
|
|
|
|
export interface BaseGalleryLayoutProps {
|
|
photos: Photo[];
|
|
slug: string;
|
|
onPhotoClick: (index: number) => void;
|
|
onDownload: (photo: Photo, e: React.MouseEvent) => void;
|
|
selectedPhotos?: Set<number>;
|
|
isSelectionMode?: boolean;
|
|
onPhotoSelect?: (photoId: number) => void;
|
|
eventName?: string;
|
|
eventLogo?: string | null;
|
|
eventDate?: string;
|
|
expiresAt?: string;
|
|
allowDownloads?: boolean;
|
|
protectionLevel?: 'basic' | 'standard' | 'enhanced' | 'maximum';
|
|
useEnhancedProtection?: boolean;
|
|
feedbackEnabled?: boolean;
|
|
feedbackOptions?: {
|
|
allowLikes?: boolean;
|
|
allowFavorites?: boolean;
|
|
allowRatings?: boolean;
|
|
allowComments?: boolean;
|
|
requireNameEmail?: boolean;
|
|
};
|
|
}
|
|
|
|
export abstract class BaseGalleryLayout<T extends BaseGalleryLayoutProps = BaseGalleryLayoutProps> extends React.Component<T> {
|
|
abstract render(): React.ReactNode;
|
|
}
|