import { LanguageTypes } from "@/validations/mutual/language/validations";

type ParamsType = { page: string[] | undefined };

interface MaindasboardPageProps {
  params: Promise<ParamsType>;
  searchParams: Promise<{ [key: string]: string | string[] | undefined }>;
}

interface DashboardLayoutProps {
  params: ParamsType;
  searchParams: { [key: string]: string | string[] | undefined };
  lang: LanguageTypes;
}

type ModeTypes = "shortList" | "fullList" | "create" | "update" | "view";
const ModeTypesList = ["shortList", "fullList", "create", "update", "view"];

interface ContentProps {
  lang: LanguageTypes;
  translations: Record<string, string>;
  activePageUrl: string;
  isMulti?: boolean;
  mode?: ModeTypes;
}

interface MenuProps {
  lang: LanguageTypes;
  menuItems: Record<string, Record<string, any>>;
  activePageUrl: string;
  menuTranslationsFlatten: Record<string, Record<string, any>>;
}

interface FooterProps {
  translations: Record<string, string>;
}

interface HeaderProps {
  translations: Record<string, string>;
  lang: LanguageTypes;
  activePageUrl: string;
}

export type {
  MaindasboardPageProps,
  DashboardLayoutProps,
  ContentProps,
  MenuProps,
  FooterProps,
  HeaderProps,
  ModeTypes,
};

export { ModeTypesList };
