<!DOCTYPE html>
<html>

<head>
  <title>Hashtag</title>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>

  <header>
    <a href='/'>Hashtag</a>
  </header>

  <main {% if not .IsSearch %} class=search {% end %}>

    {% if not .IsSearch %}

    <section>
      <h2>Hashtags</h2>
      <ul>
        {% range .Hashtags %}
        <li><a href='?value={%.%}'>{%.%}</a></li>
        {% end %}
      </ul>
    </section>

    {% end %}

    {% if .IsSearch %}
    <details>
      <summary>Search</summary>
      {% else %}
      <section>
        {% end %}

        <h2>Search</h2>
        <form action="" method=get accept-charset="utf-8">
          <section class=value>
            <label>
              <input type="radio" name="type" value="hashtag" {% if ne .Form.Type "email" %} checked {% end %}>
              Hashtag
            </label>
            <label>
              <input type="radio" name="type" value="email" {% if eq .Form.Type "email" %} checked {% end %}>
              Email
            </label>
            <label class=value>
              Value
              <input type=text name=value value="{% .Form.Value %}" placeholder="search">
            </label>
          </section>
          <section class=range>
            <h3>Range</h3>
            <label><input type=radio name=range value="" {% if  eq .Form.Range "" %} checked {% end %}>All time</label>
            <label><input type=radio name=range value=7 {% if  eq .Form.Range "7" %} checked {% end %}>Last week</label>
            <label><input type=radio name=range value=30 {% if  eq .Form.Range "30" %} checked {% end %}>Last month</label>
            <label><input type=radio name=range value=90 {% if  eq .Form.Range "90" %} checked {% end %}>Last 3 months</label>
            <label><input type=radio name=range value=180 {% if  eq .Form.Range "180" %} checked {% end %}>Last 6 months</label>
            <label><input type=radio name=range value=custom {% if  eq .Form.Range "custom" %} checked {% end %}>Custom:</label>
            <section class=custom>
              <label>Begin <input type=date name=begin value="{% .Form.Begin %}"></label>
              <label>End <input type=date name=end value="{% .Form.End %}"></label>
            </section>
          </section>
          <label><input type="submit" value="Search"></label>
        </form>
      </section>

      {% if .IsSearch %}
    </details>
    {% else %}
    </section>
    {% end %}

    {% if .IsSearch %}

    {% range .Results %}
    <section>
      <h2>{% .DisplayName %}</h2>
      <ul>
        {% range .Artifacts %}
        <li><a href='{% .URL %}'>{% .Title %}</a></li>
        {% else %}
        <p>None found.</p>
        {% end %}
      </ul>
    </section>
    {% end %}

    {% end %}

  </main>

</body>

</html>