interface Sites { [key: string]: Site } interface Site { path: string showTeaser: boolean teaserImages?: TeaserImage[] teaserTitle?: string teaserDescription?: string row: Row[] banner: Banner[] id: string } interface Row { title: string maxWidth: boolean column: Column[] noGap: boolean iconBackgroundTitle: boolean } interface Column { contentType: | "mainPicture" | "googleMaps" | "imageSlider" | "table" | "infoBoard" | "iconBoard" | "form" | "videos" | "text" | "video" video: FileField titleVideo: string descriptionVideo: string mainPicture?: FileField imageSlider: ImageSlider[] siteRefs: boolean siteReference: boolean hintsTable: string inscription?: string textFieldHeading?: string textContent?: string annotation?: string table?: Table[] image?: FileField title?: string text?: string links?: Link[] iconBoard?: IconBoard[] backgroundImage?: FileField videoSwitch?: VideoSwitch[] formRows?: FormRow[] iconBackgroundImage?: boolean } interface ImageSlider { image: FileField } interface Link { name: string site: string } interface Table { title: string tableRow: TableRow[] hintsTable: string } interface TableRow { bold: boolean left: string right: string center: string } interface IconBoard { icon: FileField subText: string } interface VideoSwitch { video: FileField title: string description: string link: string } interface FormRow { title?: string columns: FormColumn[] } interface Block { label: string emailName: string } interface LabelNumber { group: number title: string emailName: string block: Block[] } interface FormColumn { showLabelNumber: boolean labelNumber: LabelNumber[] showTimes?: boolean annotation: string times?: Time[] timesPlaceholder?: string showDate?: boolean showSelect?: boolean selectPlaceholder: string selectEntries: Entries[] datePlaceholder?: string datefieldOrder?: number textfieldOrder?: number timesfieldOrder?: number text?: TextField[] title: string selectTitle: string numberPlaceholder: string showNumber: boolean timeNotRequired: boolean dateNotRequired: boolean dateSelectNotRequired: boolean numberNotRequired: boolean emailNameDate: string emailNameNumber: string emailNameTime: string emailNameTimes: string } interface Temperature { temperature: number } interface Time { timeFrom: string timeTo: string } interface Entries { leftSide: string rightSide: string } interface TextField { textPlaceholder: string textArea: boolean notRequired: boolean telValidation: boolean emailValidation: boolean dateSelectNotRequired: boolean emailName: string } interface TeaserImage { image: FileField } interface Banner { content: string } interface Navigation { tree: number elemente: NavElement[] } interface NavElement { endpoint: boolean name: string image: FileField seite?: string elemente?: NavElement[] } interface FileField { path: string src: string type: string }