{{ template "base" . }}
{{ define "title" }}Admin - Users{{ end }}
{{ define "header" }}<a class="whitespace-pre" href="../admin">Admin - Users</a>{{ end }}
{{ define "content" }}
<div class="relative h-full overflow-x-auto">
  <input type="checkbox" id="add-button" class="hidden peer/add" />
  <div class="absolute top-10 left-10 p-3 transition-all duration-200 bg-gray-200 rounded shadow-lg shadow-gray-500 dark:shadow-gray-900 dark:bg-gray-600 hidden peer-checked/add:block">
    <form method="POST"
          action="./users"
          class="flex flex-col gap-2 text-black dark:text-white text-sm">
      <input type="text"
             id="operation"
             name="operation"
             value="CREATE"
             class="hidden" />
      <input type="text"
             id="user"
             name="user"
             placeholder="User"
             class="p-2 bg-gray-300 text-black dark:bg-gray-700 dark:text-white" />
      <input type="password"
             id="password"
             name="password"
             placeholder="Password"
             class="p-2 bg-gray-300 text-black dark:bg-gray-700 dark:text-white" />
      <button class="font-medium px-2 py-1 text-white bg-gray-500 dark:text-gray-800 hover:bg-gray-800 dark:hover:bg-gray-100"
              type="submit">Create</button>
    </form>
  </div>
  <div class="min-w-full overflow-scroll rounded shadow">
    <table class="min-w-full leading-normal bg-white dark:bg-gray-700 text-sm">
      <thead class="text-gray-800 dark:text-gray-400">
        <tr>
          <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800 w-12">
            <label class="cursor-pointer" for="add-button">{{ template "svg/add" }}</label>
          </th>
          <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800">User</th>
          <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800">Password</th>
          <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800 text-center">
            Permissions
          </th>
          <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800 w-48">Created</th>
        </tr>
      </thead>
      <tbody class="text-black dark:text-white">
        {{ if not .Data }}
        <tr>
          <td class="text-center p-3" colspan="2">No Results</td>
        </tr>
        {{ end }}
        {{ range $user := .Data }}
        <tr>
          <!-- User Deletion -->
          <td class="p-3 border-b border-gray-200 text-gray-800 dark:text-gray-400 cursor-pointer relative">
            <label for="delete-{{ $user.ID }}-button" class="cursor-pointer">{{ template "svg/delete" }}</label>
            <input type="checkbox"
                   id="delete-{{ $user.ID }}-button"
                   class="hidden css-button" />
            <div class="absolute z-30 top-1.5 left-10 p-1.5 transition-all duration-200 bg-gray-200 rounded shadow-lg shadow-gray-500 dark:shadow-gray-900 dark:bg-gray-600">
              <form method="POST"
                    action="./users"
                    class="text-black dark:text-white text-sm w-40">
                <input type="hidden" id="operation" name="operation" value="DELETE" />
                <input type="hidden" id="user" name="user" value="{{ $user.ID }}" />
                {{ template "component/button" (dict "Title" (printf "Delete (%s)" $user.ID )) }}
              </form>
            </div>
          </td>
          <!-- User ID -->
          <td class="p-3 border-b border-gray-200">
            <p>{{ $user.ID }}</p>
          </td>
          <!-- User Password Change -->
          <td class="border-b border-gray-200 relative px-3">
            <label for="edit-{{ $user.ID }}-button" class="cursor-pointer">
              <span class="font-medium px-2 py-1 text-white bg-gray-500 dark:text-gray-800 hover:bg-gray-800 dark:hover:bg-gray-100"
                    type="submit">Reset</span>
            </label>
            <input type="checkbox"
                   id="edit-{{ $user.ID }}-button"
                   class="hidden css-button" />
            <div class="absolute z-30 top-1 left-16 ml-2 p-1.5 transition-all duration-200 bg-gray-200 rounded shadow-lg shadow-gray-500 dark:shadow-gray-900 dark:bg-gray-600">
              <form method="POST"
                    action="./users"
                    class="flex flex gap-2 text-black dark:text-white text-sm">
                <input type="hidden" id="operation" name="operation" value="UPDATE" />
                <input type="hidden" id="user" name="user" value="{{ $user.ID }}" />
                <input type="password"
                       id="password"
                       name="password"
                       placeholder="{{ printf "Password (%s)" $user.ID }}"
                       class="p-1.5 bg-gray-300 text-black dark:bg-gray-700 dark:text-white" />
                <button class="font-medium px-2 py-1 text-white bg-gray-500 dark:text-gray-800 hover:bg-gray-800 dark:hover:bg-gray-100"
                        type="submit">Change</button>
              </form>
            </div>
          </td>
          <!-- User Role -->
          <td class="flex gap-2 justify-center p-3 border-b border-gray-200 text-center min-w-40">
            <!-- Set Admin & User Styles -->
            {{ $adminStyle := "bg-gray-400 dark:bg-gray-600 cursor-pointer" }}
            {{ $userStyle := "bg-gray-400 dark:bg-gray-600 cursor-pointer" }}
            {{ if $user.Admin }}{{ $adminStyle = "bg-gray-800 dark:bg-gray-100 cursor-default" }}{{ end }}
            {{ if not $user.Admin }}{{ $userStyle = "bg-gray-800 dark:bg-gray-100 cursor-default" }}{{ end }}
            <form method="POST"
                  action="./users"
                  class="flex flex gap-2 text-black dark:text-white text-sm">
              <input type="hidden" id="operation" name="operation" value="UPDATE" />
              <input type="hidden" id="user" name="user" value="{{ $user.ID }}" />
              <input type="hidden" id="is_admin" name="is_admin" value="true" />
            <button {{ if $user.Admin }}type="button"{{ else }}type="submit"{{ end }} class="px-2 py-1 rounded-md text-white dark:text-black {{ $adminStyle }}">admin
            </button>
          </form>
          <form method="POST"
                action="./users"
                class="flex flex gap-2 text-black dark:text-white text-sm">
            <input type="hidden" id="operation" name="operation" value="UPDATE" />
            <input type="hidden" id="user" name="user" value="{{ $user.ID }}" />
            <input type="hidden" id="is_admin" name="is_admin" value="false" />
          <button {{ if $user.Admin }}type="submit"{{ else }}type="button"{{ end }} class="px-2 py-1 rounded-md text-white dark:text-black {{ $userStyle }}">user
          </form>
        </td>
        <td class="p-3 border-b border-gray-200">
          <p>{{ $user.CreatedAt }}</p>
        </td>
      </tr>
      {{ end }}
    </tbody>
  </table>
</div>
</div>
{{ end }}
