|
- // 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)
- }
|