/** * GallerySettingsSectionCompact * * Compact gallery element settings for constructor sidebar. * Header image, title, info spans, and card management. * Note: Fonts, columns, and styling are now in the CSS tab. */ import React from 'react'; import type { GalleryCard, GalleryInfoSpan, AssetOption, } from '../../types/constructor'; import { addFallbackAssetOption } from '../../lib/constructorHelpers'; interface GallerySettingsSectionCompactProps { // Header settings galleryHeaderImageUrl: string; galleryHeaderText: string; galleryTitle: string; galleryInfoSpans: GalleryInfoSpan[]; // Cards galleryCards: GalleryCard[]; imageAssetOptions: AssetOption[]; iconAssetOptions: AssetOption[]; // Header handlers onUpdateHeader: (patch: { galleryHeaderImageUrl?: string; galleryHeaderText?: string; galleryTitle?: string; }) => void; onAddInfoSpan: () => void; onUpdateInfoSpan: (spanId: string, patch: Partial) => void; onRemoveInfoSpan: (spanId: string) => void; // Card handlers onAddCard: () => void; onUpdateCard: (cardId: string, patch: Partial) => void; onRemoveCard: (cardId: string) => void; } const GallerySettingsSectionCompact: React.FC< GallerySettingsSectionCompactProps > = ({ galleryHeaderImageUrl, galleryHeaderText, galleryTitle, galleryInfoSpans, galleryCards, imageAssetOptions, iconAssetOptions, onUpdateHeader, onAddInfoSpan, onUpdateInfoSpan, onRemoveInfoSpan, onAddCard, onUpdateCard, onRemoveCard, }) => { return (
{/* Header Settings */}

Gallery header

onUpdateHeader({ galleryHeaderText: event.target.value }) } /> onUpdateHeader({ galleryTitle: event.target.value }) } />
{/* Info Spans */}

Info spans

{galleryInfoSpans.map((span, index) => (
onUpdateInfoSpan(span.id, { text: event.target.value }) } />
))} {galleryInfoSpans.length === 0 && (

Add spans for brief notes (capacity, price, icons, etc.)

)}
{/* Gallery Cards */}

Gallery cards

{galleryCards.map((card, index) => (

Card {index + 1}

onUpdateCard(card.id, { title: event.target.value }) } />