import {
  Contribution,
  Description,
  Engineering,
  Experiments,
  Home,
  Bfh,
  Drylab,
  Attributions,
  HumanPractices,
  Ethics,
  Supplementary,
  Parts,
  Proof,
  Design,
  Judging,
  Partners,
  Ints,
  Measurement,
  Notebook,
  Results,
  Safety,
  Team,
  Education,
  Wiki,
  Impressum, 
  Example, 
  Survey, 
  Collaborations
} from "./contents"; 

import { DescSidebar, IntSidebar, EthicsSidebar, SafetySidebar, NoSidebar, EngSide } from "./contents";
import { BFHH, SURH, COLLH, EDUH, ETHH, JUDGEH, DESH, PROOFH, SUPH, PARTH, MESH, ENGH, DRYH, HOMEH, HPH, INTSH, SPONH, RESH, ATTH, CONTH, DESCH, EXPH, IMPH, NOTEH, SAFEH, TEAMH, WIKIH } from "./contents";

interface Base {
  name: string | undefined;
}

class Folder implements Base {
  name: string | undefined;
  folder: Page[] | undefined;
}

class Page implements Base {
  name: string | undefined;
  title: string | undefined;
  path: string | undefined;
  component: React.FC | undefined;
  header!: React.FC;
  navlist!:  React.FC; 
}

const Pages: (Page | Folder)[] = [
  {
    name: "Attributions",
    title: "Attributions",
    path: "/attributions",
    component: Attributions,
    header: ATTH,
    navlist: NoSidebar,
  },
  {
    name: "MeetUp",
    title: "BFH European MeetUp",
    path: "/bfh",
    component: Bfh,
    header: BFHH,
    navlist: NoSidebar,
  },
  {
    name: "Collaborations",
    title: "Collaborations",
    path: "/collaborations",
    component: Collaborations,
    header: COLLH,
    navlist: NoSidebar,
    },
  {
    name: "Contribution",
    title: "Contribution",
    path: "/contribution",
    component: Contribution,
    header: CONTH,
    navlist: NoSidebar,
    },
    {
      name: "Description",
      title: "Project Description",
      path: "/description",
      component: Description,
      header: DESCH,
      navlist:  DescSidebar
    },
    {
      name: "Design",
      title: "Design",
      path: "/design",
      component: Design,
      header: DESH,
      navlist: NoSidebar,
    },
    {
      name: "Dry Lab",
      title: "Dry Lab",
      path: "/dry-lab",
      component: Drylab,
      header: DRYH,
      navlist: NoSidebar,
    },
    {
      name: "Education",
      title: "Education",
      path: "/education",
      component: Education,
      header: EDUH,
      navlist: NoSidebar,
    },
    {
      name: "Engineering Success",
      title: "Engineering",
      path: "/engineering",
      component: Engineering,
      header: ENGH,
      navlist: EngSide,
    },
    {
      name: "Ethics",
      title: "Ethics",
      path: "/ethics",
      component: Ethics,
      header: ETHH,
      navlist: EthicsSidebar,
    },
    {
      name: "Example",
      title: "Example",
      path: "/example",
      component: Example,
      header: HOMEH,
      navlist: NoSidebar,
    },
    {
      name: "Experiments",
      title: "Experiments",
      path: "/experiments",
      component: Experiments,
      header: EXPH,
      navlist: NoSidebar,
    },
    {
      name: "Human Practices",
      title: "Human Practices",
      path: "/human-practices",
      component: HumanPractices,
      header: HPH,
      navlist: NoSidebar
      },
      
    
    {
      name: "Home",
      title: "Bielefeld CeBiTec",
      path: "/",
      component: Home,
      header: DESCH,
      navlist: NoSidebar
      },
    {
      name: "Home",
      title: "Bielefeld CeBiTec",
      path: "/index.html",
      component: Home,
      header: DESCH,
      navlist: NoSidebar 
    },
    {
      name: "Impressum",
      title: undefined,
      path: "/impressum",
      component: Impressum,
      header: IMPH,
      navlist: NoSidebar,
    },
    {
      name: "Interviews",
      title: "Interviews",
      path: "/interviews",
      component: Ints,
      header: INTSH, 
      navlist: IntSidebar,
    },
    {
      name: "Judging",
      title: "Judging",
      path: "/judging",
      component: Judging,
      header: JUDGEH, 
      navlist: NoSidebar,
    },
    {
      name: "Measurement",
      title: "Measurement",
      path: "/measurement",
      component: Measurement,
      header: MESH,
      navlist: NoSidebar,
    },
    {
      name: "Notebook",
      title: "Notebook",
      path: "/notebook",
      component: Notebook,
      header: NOTEH,
      navlist: NoSidebar,
    },
    {
      name: "Partners and Sponsors",
      title: "Partners and Sponsors",
      path: "/partners",
      component: Partners,
      header: SPONH, 
      navlist: NoSidebar,
    },
    {
      name: "Parts",
      title: "Parts",
      path: "/parts",
      component: Parts,
      header: PARTH,
      navlist: NoSidebar,
    },
    {
      name: "Proof of Concept",
      title: "Proof of Concept",
      path: "/proof-of-concept",
      component: Proof,
      header: PROOFH,
      navlist: NoSidebar,
    },
    {
      name: "Results",
      title: "Results",
      path: "/results",
      component: Results,
      header: RESH,
      navlist: NoSidebar,
    },
    {
      name: "Safety",
      title: "Safety",
      path: "/safety",
      component: Safety,
      header: SAFEH,
      navlist: SafetySidebar,
    },
    {
      name: "Supplementary",
      title: "Supplementary",
      path: "/supplementary",
      component: Supplementary,
      header: SUPH,
      navlist: NoSidebar,
    },
    {
      name: "Survey",
      title: "Survey",
      path: "/survey",
      component: Survey,
      header: SURH,
      navlist: NoSidebar,
    },
    {
      name: "Team",
      title: "Team",
      path: "/team",
      component: Team,
      header: TEAMH,
      navlist: NoSidebar,
    },
    {
      name: "Wiki",
      title: "wiki",
      path: "/wiki",
      component: Wiki,
      header: WIKIH,
      navlist: NoSidebar,
    },
];

export const NavPages: (Page | Folder)[] = [
    {
      name: "Home",
      title: "Bielefeld CeBiTec",
      path: "/",
      component: Home,
      header: HOMEH,
      navlist: NoSidebar,
      },
    {
      name: "Team",
      folder: [
        {
          name: "Team",
          title: "Team",
          path: "/team",
          component: Team,
          header: TEAMH,
          navlist: NoSidebar,
        },
        {
          name: "Attributions",
          title: "Attributions",
          path: "/attributions",
          component: Attributions,
          header: ATTH,
           navlist: NoSidebar,
        },
        {
          name: "Partners and Sponsors",
          title: "Partners and Sponsors",
          path: "/partners",
          component: Partners,
          header: SPONH, 
          navlist: NoSidebar,
        },
        {
          name: "Collaborations",
          title: "Collaborations",
          path: "/collaborations",
          component: Collaborations,
          header: COLLH,
          navlist: NoSidebar,
          },
      ],
    },
    {
      name: "Project",
      folder: [
        {
          name: "Description",
          title: "Project Description",
          path: "/description",
          component: Description,
          header: DESCH,
          navlist: DescSidebar  
        },
        {
          name: "Judging",
          title: "Judging",
          path: "/judging",
          component: Judging,
          header: JUDGEH, 
          navlist: NoSidebar,
        },
      ],
    },
    {
      name: "Lab", 
      folder: [
        {
          name: "Results",
          title: "Results",
          path: "/results",
          component: Results,
          header: RESH,
          navlist: NoSidebar,
        },
        {
          name: "Parts",
          title: "Parts",
          path: "/parts",
          component: Parts,
          header: PARTH,
          navlist: NoSidebar,
        },
        {
          name: "Proof of Concept",
          title: "Proof of Concept",
          path: "/proof-of-concept",
          component: Proof,
          header: PROOFH,
          navlist: NoSidebar,
        },
        {
          name: "Engineering Success",
          title: "Engineering",
          path: "/engineering",
          component: Engineering,
          header: ENGH,
          navlist: EngSide  ,
        },
        {
          name: "Design",
          title: "Design",
          path: "/design",
          component: Design,
          header: DESH,
          navlist: NoSidebar,
        },
        {
          name: "Supplementary",
          title: "Supplementary",
          path: "/supplementary",
          component: Supplementary,
          header: SUPH,
          navlist: NoSidebar,
        },
        {
          name: "Notebook",
          title: "Notebook",
          path: "/notebook",
          component: Notebook,
          header: NOTEH,
          navlist: NoSidebar,
        },
      ]
    },
    {
      name: "Safety",
      title: "Safety",
      path: "/safety",
      component: Safety,
      header: SAFEH,
      navlist: SafetySidebar,
    },
    {
      name: "Human Practices",
      folder: [
        {
          name: "Integrated Human Practices",
          title: "Integrated Human Practices",
          path: "/human-practices",
          component: HumanPractices,
          header: HPH,
           navlist: NoSidebar
        },
        {
          name: "Interviews",
          title: "Interviews",
          path: "/interviews",
          component: Ints,
          header: INTSH, 
          navlist: IntSidebar,
        },
        {
          name: "Education and Outreach",
          title: "Education",
          path: "/education",
          component: Education,
          header: EDUH,
          navlist: NoSidebar,
        },
        {
          name: "Survey",
          title: "Survey",
          path: "/survey",
          component: Survey,
          header: SURH,
          navlist: NoSidebar,
        },
      ]
    },
    {
      name: "Contribution",
      folder: [
          {
            name: "Contribution",
            title: "Contribution",
            path: "/contribution",
            component: Contribution,
            header: CONTH,
            navlist: NoSidebar,
          },
            {
              name: "MeetUp",
              title: "BFH European MeetUp",
              path: "/bfh",
              component: Bfh,
              header: BFHH,
              navlist: NoSidebar,
            },
            {
              name: "Wiki",
              title: "wiki",
              path: "/wiki",
              component: Wiki,
              header: WIKIH,
              navlist: NoSidebar,
            },
          ]
    },
];

export default Pages;