// NOTE: 'SERVICE_REQUEST' è presente nel type union ma non viene MAI esposto in admin // (manca dal dropdown del Card Type) né mai emerso/utilizzato a runtime: nessuna card // di questo tipo viene creata. Lo lasciamo per retro-compatibilità con eventuali // cards.txt di vecchie installazioni che lo contenessero. Per rimuoverlo del tutto // andrebbe tolto anche da VALID_CARD_TYPES in lib/validation.ts. export type CardType = 'INFO_PAGE' | 'EXTERNAL_LINK' | 'IMAGE_GALLERY' | 'SERVICE_REQUEST' | 'BOOK' | 'FULLSCREEN_LOCK'; export type MediaItem = { url: string; autoplay?: boolean; // videos only — start playing as soon as the slide is shown muted?: boolean; // videos only — start muted (default: unmuted) }; export interface Card { id: string; portalId: string; title: string; imageUrl: string; extraMedia?: MediaItem[]; shortDescription: string; fullContent: string; cardType: CardType; actionUrl?: string; displayOrder: number; autoFullscreen?: boolean; // open the fullscreen viewer immediately when this card is clicked skipPreview?: boolean; // skip the modal preview AND exclude the cover image from the swipe sequence redirectOnClick?: boolean; // EXTERNAL_LINK only — click card to open the URL directly without showing the modal } export interface Portal { id: string; tenantId: string; title: string; welcomeText: string; heroImageUrl: string; logoUrl: string; themeColor: string; fadeHeroImage?: boolean; maxGridColumns?: number; externalLinkEnabled?: boolean; // se false, l'admin nasconde il tipo "External Link" nel dropdown fontFamily?: string; // nome del file in data/fonts/ (es. "Geist-Variable.woff2"). "" o undefined = Sistema (Arial) }