{{ define "schema" }}
  {{ with .description }}<blockquote>{{ . }}</blockquote>{{ end }}
  <code>
    {{ with .element }}
      {{ with $.name }}
        <div class="nameblock"><span class="name">{{ . }}</span>:</div>
      {{ end }}
      {{ if (eq $.kind "array") }}
        <span class="kind {{ $.kind }}">arrayOf</span> [
        {{ template  "schema" . }}
        ]
      {{ end }}
      {{ if (eq $.kind "dictionary") }}
        <span class="kind {{ $.kind }}">dictionary</span>
        <div class="dict">
          <
          <span class="key">
            <span class="kind {{ $.key.kind }}">{{ $.key.name }}</span></span
          >, <span class="element">{{ template  "schema" . }}</span>>
        </div>
      {{ end }}
    {{ else }}
      {{ if (eq .name .kind) }}
        <span class="kind {{ $.kind }}">{{ .kind }}</span>
      {{ else }}
        {{ with .name }}
          <div class="nameblock">
            <span class="name">{{ . }}</span>{{ if $.isPointer }}
              <abbr class="pointer" title="Optional, might not be in the object"
                >*</abbr
              >
            {{ end }}:
          </div>
        {{ end }}
        {{ if (eq $.kind "enum") }}
          <span class="kind {{ $.kind }}">enum</span> (
          {{ with $.enumValues }}{{ delimit . " | " }}{{ end }}
          )
        {{ else }}
          <span class="kind {{ $.kind }}">{{ .kind }}</span>
        {{ end }}
      {{ end }}
      {{ with .keys }}
        {
        {{ range . }}
          <ul>
            <li>{{ template  "schema" . }}</li>
          </ul>
        {{ end }}
        }
      {{ end }}
    {{ end }}
  </code>
{{ end }}

{{ define "main" }}
  {{ $datafile := index .Site.Data.api .Params.version }}
  {{ $keys := $datafile.api }}
  <main class="apidocs">
    <nav>
      <header>API version</header>
      <select id="api-version">
        {{ $currentPage := . }}
        {{ range $.Site.Menus.apiversions }}
          <option
            value="{{ .URL }}"
            {{ if $currentPage.IsMenuCurrent "apiversions" . }}selected{{ end }}
          >
            {{ .Title }}
          </option>
        {{ end }}
      </select>
      <header>Kilovolt keys</header>
      <ul>
        {{ range $key, $spec := $keys }}
          <li>
            <a href="#{{ anchorize $key | safeURL }}" class="monotitle"
              >{{ $key }}</a
            >
          </li>
        {{ end }}
      </ul>
    </nav>
    <div class="doc">
      <section class="copy">
        <header><h1>strimertül {{ .Title }} API</h1></header>
        {{ .Content }}
      </section>
      <section class="reference">
        {{ range $key, $spec := $keys }}
          <article class="api" id="{{ anchorize $key | safeURL }}">
            <header>
              <h3>
                <a href="#{{ anchorize $key | safeURL }}" class="heading-anchor"
                  >#</a
                >
                <span class="monotitle">{{ $key }}</span> {{ range .tags }}
                  <span class="tag {{ . }}">{{ . }}</span>
                {{ end }}
              </h3>
              {{ with .description }}
                <div class="description">{{ . }}</div>
              {{ end }}
              {{ with .schema }}
                <div class="schema">
                  {{ template  "schema" . }}
                </div>
              {{ end }}
            </header>
          </article>
        {{ end }}
      </section>
    </div>
  </main>
  <script async defer src="/script/apiselector.js"></script>
{{ end }}
