interface DefaultConfig {
  site: {
    name: string;
    description: string;
    ogImage: string;
    ogImageComponent: string;
    ogImageColor: 'dark' | 'light';
    umami: {
      enable: boolean;
      src: string;
      dataWebsiteId: string;
    };
  };
  theme: {
    customizable: boolean;
    color: Color;
    radius: number;
  };
  banner: {
    enable: boolean;
    showClose: boolean;
    content: string;
    to: string;
    target: Target;
    border: boolean;
  };
  header: {
    showLoadingIndicator: boolean;
    title: string;
    showTitle: boolean;
    border: boolean;
    logo: {
      light: string;
      dark: string;
    };
    showTitleInMobile: boolean;
    darkModeToggle: boolean;
    chooseLanguage: boolean;
    nav: ({
      title: string;
      to: string;
      target: string;
      showLinkIcon: boolean;
      links: ({
        title: string;
        to: string;
        target: string;
        description: string;
        icon?: string;
      })[];
    })[];
    links: ({
      icon: string;
      to: string;
      target: string;
    })[];
  };
  aside: {
    useLevel: boolean;
    collapse: boolean;
    collapseLevel: number;
    folderStyle: 'default' | 'tree' | 'group';
  };
  main: {
    breadCrumb: boolean;
    showTitle: boolean;
    codeCopyToast: boolean;
    codeCopyIcon: string;
    codeCopyToastText: string;
    fieldRequiredText: string;
    padded: boolean;
    editLink: {
      enable: boolean;
      pattern: string;
      text: string;
      icon: string;
      placement: ('docsFooter' | 'toc')[];
    };
    backToTop: boolean;
    pm: ('npm' | 'pnpm' | 'bun' | 'yarn')[];
    codeIcon: {
      [key: string]: string;
    };
  };
  footer: {
    credits: string;
    links: ({
      icon: string;
      title: string;
      to: string;
      target: string;
    })[];
  };
  toc: {
    enable: boolean;
    enableInMobile: boolean;
    enableInHomepage: boolean;
    title: string;
    links: ({
      title: string;
      icon: string;
      to: string;
      target: string;
      showLinkIcon: boolean;
    })[];
    carbonAds: {
      enable: boolean;
      disableInDev: boolean;
      disableInMobile: boolean;
      fallback: boolean;
      fallbackMessage: string;
      code: string;
      placement: string;
      format: 'cover' | 'responsive';
    };
  };
  search: {
    enable: boolean;
    inAside: boolean;
    style: 'input' | 'button';
    placeholder: string;
    placeholderDetailed: string;
  };
  data?: {
    [key: string]: any;
  };
}

type Color =
  | 'zinc'
  | 'slate'
  | 'stone'
  | 'gray'
  | 'neutral'
  | 'red'
  | 'rose'
  | 'orange'
  | 'green'
  | 'blue'
  | 'yellow'
  | 'violet';

type Target = '_blank' | '_parent' | '_self' | '_top' | (string & object) | null | undefined;

type FileTreeItemDiff = 'addition' | 'deletion' | 'none';
interface FileTreeItem {
  title: string;
  icon?: string;
  children?: FileTreeItem[];
  highlighted: boolean;
  diff: FileTreeItemDiff;
  path?: string;
}

type InputTreeItem = string | {
  [key: string]: InputTreeItem[];
};
