interface FileField { path: string src: string type: string } interface Pages { [key: string]: Page } interface Page { path: string teaser: teaserHomepage sectionHomepage: Row rows: outerRow[] id: string } interface teaserHomepage { showTeaser: boolean subTitle: string teaserTitle: string teaserDescription: string } interface outerRow { row: Row } interface Row { topTitle: string topTitleRed: boolean subTitle: string title: string pageTitle: string columns: Column[] backgroundImage: FileField } interface Column { contentType: | "image" | "iconCycleSquare" | "iconCycleCircle" | "text" | "infoBoard" | "worldCard" | "nestedCard" | "topDown" | "personPreview" | "boxlist" | "extendableBoxes" | "textLink" | "iconBlocks" | "pageLinkBlocks" | "publications" | "networkEvents" image?: FileField icons: { icon: FileField link: string }[] iconCycleSquare?: IconCycleSquare iconCycleCircle?: IconCycleCircle text: string textLink: TextLink infoBoard: InfoBoard worldCard: WorldCard nestedCard: NestedCard[] topDown: TopDown personPreview: PersonPreview[] boxList: BoxList extendableBoxes: ExtendableBox[] iconBlocks: iconBlock[] pageLinkBlocks: pageLinkBlock[] networkEvents: NetworkEvent[] publications: Publication[] } interface Publication { file: FileField content: string } interface NetworkEvent { beginDate: Date endDate: Date title: string file: FileField } interface iconBlock { icon: FileField iconFocused: FileField bigText: string smallText: string } interface pageLinkBlock { name: string rowNr: number page: string extendableRowNr: number } interface IconCycleSquare { boxes: Box[] } interface IconCycleCircle { boxes: Box[] innerText: string } interface Box { icon: FileField text: string circle: boolean } interface InfoBoard { title: string icon: FileField text: string } interface WorldCard { rows: WorldCardRow[] } interface worldCardRow { cards: Card[] } interface Card { verticalAlignment: string horizontalAlignment: string image: FileField title: string properties: number[] } interface NestedCard { title: string description: string } interface TopDown { rows: TopDownRow[] } interface TopDownRow { inital: string rest: string description: string } interface PersonPreview { initialImage: FileField hoverImage: FileField name: string link: string } interface BoxList { boxes: { name: string }[] } interface ExtendableBox { title: string text: string emailButton: boolean emailSubject: string } interface FileField { path: string src: string type: string } interface TextLink { text: string link: string } interface Navigation { tree: number pages: NavElement[] } interface NavElement { name: string page: string }