{% extends "/layouts/main.twig" %}

{% set active_menu = '/admin/users' %}

{% set strings = {
  delete_success: __("User has been deleted successfully.")
} %}

{% set xdata %}
list("users",
{{ strings|json_encode() }})
{% endset %}

{% block title p__('title', 'Users')|title %}

{% block template %}
	{# Header #}
	<div class="flex justify-between items-center">
		<div>
			<h1>{{ p__('heading', 'Users') }}</h1>

			<template x-if="total !== null">
				<div class="text-sm text-content-dimmed md:hidden">
					{{ __('Total :count users')|replace({':count': '<span x-text="total"></span>'})|raw }}
				</div>
			</template>
		</div>

		<div class="flex gap-2 items-center md:hidden">
			<button type="button" class="hidden w-8 h-8 avatar">
				<i class="text-lg ti ti-adjustments-horizontal"></i>
			</button>

			<a href="admin/users/new" class="w-8 h-8 rounded-full button button-accent button-sm">
				<i class="text-lg ti ti-plus"></i>
			</a>
		</div>

		<div class="hidden gap-2 items-center md:flex">
			<button type="button" class="button button-outline button-sm" @click="exportData" :processing="isExporting">
				{% include "/snippets/spinner.twig" %}

				{{ p__('button', 'Export') }}
			</button>

			<a href="admin/users/new" class="button button-accent button-sm">
				{{ p__('button', 'Add user') }}
			</a>
		</div>
	</div>

	{# Filters #}
	{% include "/snippets/filters.twig" with { 
    total: __('Total :count users'),
    sort: [
      {
        value: null,
        label: p__('label', 'Default')
      },
    
      {
        value: 'created_at',
        label: p__('label', 'Date')
      },
    
      {
        value: 'first_name',
        label: p__('label', 'First name')
      },
    
      {
        value: 'last_name',
        label: p__('label', 'Last name')
      }
    ],
    filters: [
      {
        label: p__('label', 'Role'),
        model: 'role',
        options: [
          {
            value: '0',
            label: p__('role', 'User')
          },
          {
            value: '1',
            label: p__('role', 'Admin')
          }
        ]
      },
      {
        label: p__('label', 'Status'),
        model: 'status',
        options: [
          {
            value: '0',
            label: p__('status', 'Inactive')
          },
          {
            value: '1',
            label: p__('status', 'Active')
          },
					{
						value: '2',
						label: p__('status', 'Online')
					},
					{
						value: '3',
						label: p__('status', 'Away')
					},
        ]
      },
      {
        label: p__('label', 'Email'),
        model: 'is_email_verified',
        options: [
          {
            value: '1',
            label: p__('is_email_verified', 'Verified')
          },
          {
            value: '0',
            label: p__('is_email_verified', 'Unverified')
          }
        ]
      },
      {
        label: p__('label', 'Country'),
        model: "country_code",
        options: []
      },
      {
        label: p__('label', 'Date'),
        model: "created_at",
        hidden: true
      },
      {
        label: p__('label', 'Affiliate'),
        model: "ref",
        hidden: true
      }
    ]
  } %}

	{# List #}
	<div class="group/list" :data-state="state">
		<div class="hidden group-data-[state=empty]/list:block">
			{% include "sections/empty.twig" with { title: p__('heading', 'Empty result set'), message: __('There are no users yet.'), reset: __('There are no users matching your search.') } %}
		</div>

		<div class="hidden md:grid grid-cols-12 gap-3 items-center px-3 py-2 text-content-dimmed text-xs group-data-[state=empty]/list:hidden">
			<div class="col-span-5">{{ p__('label', 'User') }}</div>
			<div class="col-span-2">{{ p__('label', 'Role') }}</div>
			<div class="col-span-3">{{ p__('label', 'Created') }}</div>
			<div class="col-span-1">{{ p__('label', 'Status') }}</div>
			<div class="col-span-1"></div>
		</div>

		<ul class="text-sm flex flex-col gap-1 group-data-[state=empty]:hidden">
			{% for i in range(1,5) %}
				<li class="hidden grid-cols-12 gap-3 items-center md:p-3 box hover:border-line animate-pulse group-data-[state=initial]/list:grid">
					<div class="flex col-span-5 gap-3 items-center">

						<div class="avatar"></div>

						<div>
							<div>
								<span class="inline-block w-32 h-6 rounded-lg bg-line-dimmed"></span>
								<span class="inline-block w-32 h-6 rounded-lg bg-line-dimmed"></span>
							</div>
						</div>
					</div>

					<div class="col-span-2">
						<span class="inline-block w-20 h-6 rounded-lg bg-line-dimmed"></span>
					</div>

					<div class="col-span-3">
						<span class="inline-block w-20 h-6 rounded-lg bg-line-dimmed"></span>
					</div>

					<div class="col-span-1"></div>

					<div class="col-span-1 justify-self-end">
						<div class="relative group">
							<button>
								<i class="text-2xl ti ti-dots-vertical text-content-dimmed"></i>
							</button>
						</div>
					</div>
				</li>
			{% endfor %}

			<template x-for="user in resources" :key="user.id">
				<li class="grid relative grid-cols-12 gap-3 items-center p-3 box hover:border-line" x-data>
					<a :href="`admin/users/${user.id}`" class="absolute top-0 left-0 w-full h-full cursor-pointer"></a>

					<div class="flex col-span-11 gap-3 items-center md:col-span-5">
						<x-avatar :title="`${user.first_name} ${user.last_name}`" :src="user.avatar" :status="user.is_online ? 'online' : 'offline'"></x-avatar>

						<div>
							<div class="font-bold" x-text="`${user.first_name} ${user.last_name}`"></div>

							<div class="text-content-dimmed md:hidden" x-text="user.role==1 ? `{{ p__('role', 'Admin') }}` : `{{ p__('role', 'User') }}`"></div>
						</div>
					</div>

					<div class="hidden md:block md:col-span-2" x-text="user.role==1 ? `{{ p__('role', 'Admin') }}` : `{{ p__('role', 'User') }}`"></div>

					<div class="hidden md:block md:col-span-3">
						<x-time :datetime="user.created_at" data-type="date"></x-time>
					</div>

					<div class="hidden md:block md:col-span-1">
						<template x-if="user.id != '{{ user.id }}'">
							<label class="inline-flex relative z-10 gap-2 items-center cursor-pointer">
								<input type="checkbox" name="status" class="hidden peer" :checked="user.status == 1" @click="toggleStatus(user)">

								<span class="block relative w-10 h-6 rounded-3xl transition-all bg-line peer-checked:bg-success after:h-5 after:w-5 after:top-0.5 after:absolute after:left-0 after:ms-0.5 after:transition-all after:rounded-full after:bg-white peer-checked:after:left-4"></span>

								<span class="text-content-dimmed peer-checked:hidden">
									{{ p__('status', 'Inactive') }}
								</span>

								<span class="hidden text-success peer-checked:inline">
									{{ p__('status', 'Active') }}
								</span>
							</label>
						</template>
					</div>

					<div class="col-span-1 justify-self-end">
						<div class="relative" @click.outside="$refs.context.removeAttribute('data-open')">

							<button class="relative z-10" @click="$refs.context.toggleAttribute('data-open')">
								<i class="text-2xl ti ti-dots-vertical text-content-dimmed hover:text-intermediate-content"></i>
							</button>

							<div class="menu" x-ref="context">
								<ul>
									<li>
										<a :href="`admin/users/${user.id}`" class="flex gap-2 items-center px-4 py-2 hover:no-underline hover:bg-intermediate">
											<i class="ti ti-pencil"></i>

											{{ p__('button', 'Edit') }}
										</a>
									</li>

									<template x-if="user.id != '{{ user.id }}'">
										<li>
											<button class="flex gap-2 items-center px-4 py-2 w-full hover:no-underline hover:bg-intermediate" @click.prevent="currentResource = user; modal.open('delete-modal')">
												<i class="ti ti-trash"></i>

												{{ p__('button', 'Delete') }}
											</button>
										</li>
									</template>
								</ul>
							</div>
						</div>
					</div>
				</li>
			</template>
		</ul>
	</div>

	{% include "sections/delete-modal.twig" with { 
    message: __('Do you really want to delete :title?'),
    title: '`${currentResource.first_name} ${currentResource.last_name}`'
  } %}
{% endblock %}
