import { AnyTypedQuizQuestion } from "./questionTypes/shared"; export type QuizStartpageType = "standard" | "expanded" | "centered" | null; export type QuizStartpageAlignType = "left" | "right" | "center"; export type QuizType = "quiz" | "form" | null; export type QuizResultsType = true | null; export type QuizStep = "startpage" | "question" | "contactform"; export type QuizTheme = | "StandardTheme" | "StandardDarkTheme" | "PinkTheme" | "PinkDarkTheme" | "BlackWhiteTheme" | "OliveTheme" | "YellowTheme" | "GoldDarkTheme" | "PurpleTheme" | "BlueTheme" | "BlueDarkTheme"; export type FCField = { text: string; innerText: string; key: string; required: boolean; used: boolean; }; export type QuizSettings = { questions: AnyTypedQuizQuestion[]; settings: { fp: boolean; rep: boolean; name: string; lim: number; due: number; delay: number; pausable: boolean; cfg: QuizConfig; }; cnt: number; recentlyCompleted: boolean; }; export interface QuizConfig { type: QuizType; noStartPage: boolean; startpageType: QuizStartpageType; score?: boolean; results: QuizResultsType; haveRoot: string | null; theme: QuizTheme; resultInfo: { when: "email" | ""; share: boolean; replay: boolean; theme: string; reply: string; replname: string; showResultForm: "before" | "after"; }; startpage: { description: string; button: string; position: QuizStartpageAlignType; favIcon: string | null; logo: string | null; originalLogo: string | null; background: { type: null | "image" | "video"; desktop: string | null; originalDesktop: string | null; mobile: string | null; originalMobile: string | null; video: string | null; cycle: boolean; }; }; formContact: { title: string; desc: string; fields: Record; button: string; }; info: { phonenumber: string; clickable: boolean; orgname: string; site: string; law?: string; }; meta: string; } export type FormContactFieldName = | "name" | "email" | "phone" | "text" | "address"; type FormContactFieldData = { text: string; innerText: string; key: string; required: boolean; used: boolean; }; export interface QuizItems { description: string; id: number; page: number; required: boolean; title: string; type: string; content: unknown; }