import m from 'mithril'
import render from 'mithril-node-render'

export default async (template, reposConfiguration, eleventyConfig) => {
  return async (data) => {
    const opts = await template(reposConfiguration, eleventyConfig, data)
    
    return render([
      m.trust('<!doctype html>'),
      m('html', {lang: "en"}, [
        m('head', [
          m('meta', {charset: "utf-8"}),
          m('meta', {name: "viewport", content: "width=device-width, initial-scale=1"}),
          m('title', opts.pageTitle),
          m('link', {rel: "stylesheet", href: "/css/design-board.css"}),
          opts.additionalHeadContent || null,
          m('script', {src: `${opts.rootPath}frontend/top.js`}),
        ]),
        m('body', [
          m('div', {class: "container-fluid container-lg"}, [
            m('div', {class: "row mb-1"}, [
              m('div', {class: "col"},
                m('div', {class: "row"},
                  m('div', {class: "col"}, [
                    opts.navbarContent || null,
                  ]),
                  m('div', {class: "col-auto pt-2"}, [
                    m('div', {class: "dropdown"}, [
                      m('button', {class: "dropdown-toggle btn btn-bg", id: "dark-mode-switch", type: "button", 'data-bs-toggle': "dropdown", 'aria-expanded': 'false'},
                        m('span', m.trust('&#xFE0F;'))
                      ),
                      m('ul', {class: "dropdown-menu"}, [
                        m('li',
                          m('button', {class: "btn shadow-none", 'data-theme-pref': "light", onclick: "toggleDarkMode(this)"}, [
                            m('span', {class: "me-1"}, m.trust('&#x1F31E;')),
                            'Light'
                          ])
                        ),
                        m('li',
                          m('button', {class: "btn shadow-none", 'data-theme-pref': "dark", onclick: "toggleDarkMode(this)"}, [
                            m('span', {class: "me-1"}, m.trust('&#x1F319;')),
                            'Dark'
                          ])
                        ),
                        m('li',
                          m('button', {class: "btn shadow-none", 'data-theme-pref': "auto", onclick: "toggleDarkMode(this)"}, [
                            m('span', {class: "me-1"}, m.trust('&#x1F5A5;&#xFE0F;')),
                            'Match OS'
                          ])
                        )
                      ])
                    ])
                  ])
                )
              )
            ]),
            await opts.pageContent,
          ]),
          m('script', {
            src: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js",
            integrity: "sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI",
            crossorigin: "anonymous"
          }),
          m('script', {src: `${opts.rootPath}frontend/main-frontend.bundle.js`})
        ])
      ])
    ])
  }
}
