HH/templates/accounts/onboarding/dashboard.html
2026-02-22 08:35:53 +03:00

159 lines
7.6 KiB
HTML

{% extends "layouts/base.html" %}
{% load i18n %}
{% block title %}{% trans "Onboarding Dashboard" %}{% endblock %}
{% block content %}
<div class="p-6 md:p-8">
<!-- Header -->
<div class="mb-8">
<h1 class="text-3xl font-bold text-gray-800 mb-2">
{% trans "Onboarding Dashboard" %}
</h1>
<p class="text-gray-500">
{% trans "Manage staff onboarding progress and settings" %}
</p>
</div>
<!-- Stats Cards -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-8">
<div class="bg-white p-6 rounded-2xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-3">
<div class="bg-blue-100 p-2 rounded-xl">
<i data-lucide="users" class="text-blue-500 w-5 h-5"></i>
</div>
<span class="text-gray-500 text-sm font-medium">{% trans "Total Invited" %}</span>
</div>
<div class="text-3xl font-bold text-gray-800">{{ stats.total_invited }}</div>
</div>
<div class="bg-white p-6 rounded-2xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-3">
<div class="bg-green-100 p-2 rounded-xl">
<i data-lucide="check-circle" class="text-green-500 w-5 h-5"></i>
</div>
<span class="text-gray-500 text-sm font-medium">{% trans "Completed" %}</span>
</div>
<div class="text-3xl font-bold text-gray-800">{{ stats.completed }}</div>
</div>
<div class="bg-white p-6 rounded-2xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-3">
<div class="bg-orange-100 p-2 rounded-xl">
<i data-lucide="clock" class="text-orange-500 w-5 h-5"></i>
</div>
<span class="text-gray-500 text-sm font-medium">{% trans "In Progress" %}</span>
</div>
<div class="text-3xl font-bold text-gray-800">{{ stats.in_progress }}</div>
</div>
<div class="bg-white p-6 rounded-2xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-3">
<div class="bg-red-100 p-2 rounded-xl">
<i data-lucide="x-circle" class="text-red-500 w-5 h-5"></i>
</div>
<span class="text-gray-500 text-sm font-medium">{% trans "Not Started" %}</span>
</div>
<div class="text-3xl font-bold text-gray-800">{{ stats.not_started }}</div>
</div>
</div>
<!-- Quick Actions -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
<a href="{% url 'accounts:onboarding_bulk_invite' %}" class="group">
<div class="bg-white p-6 rounded-2xl shadow-sm border-2 border-gray-100 hover:border-blue hover:shadow-md transition">
<div class="flex items-center gap-4">
<div class="bg-light p-3 rounded-xl group-hover:bg-blue-100 transition">
<i data-lucide="mail-plus" class="text-navy w-6 h-6"></i>
</div>
<div>
<h3 class="font-bold text-gray-800 mb-1">{% trans "Send Bulk Invitations" %}</h3>
<p class="text-sm text-gray-500">{% trans "Invite multiple staff members to onboarding" %}</p>
</div>
</div>
</div>
</a>
<a href="{% url 'accounts:onboarding_checklist_list' %}" class="group">
<div class="bg-white p-6 rounded-2xl shadow-sm border-2 border-gray-100 hover:border-blue-400 hover:shadow-md transition">
<div class="flex items-center gap-4">
<div class="bg-blue-100 p-3 rounded-xl group-hover:bg-blue-200 transition">
<i data-lucide="clipboard-list" class="text-blue-500 w-6 h-6"></i>
</div>
<div>
<h3 class="font-bold text-gray-800 mb-1">{% trans "Manage Checklists" %}</h3>
<p class="text-sm text-gray-500">{% trans "View and edit onboarding checklist items" %}</p>
</div>
</div>
</div>
</a>
<a href="{% url 'accounts:onboarding_content_list' %}" class="group">
<div class="bg-white p-6 rounded-2xl shadow-sm border-2 border-gray-100 hover:border-green-400 hover:shadow-md transition">
<div class="flex items-center gap-4">
<div class="bg-green-100 p-3 rounded-xl group-hover:bg-green-200 transition">
<i data-lucide="file-text" class="text-green-500 w-6 h-6"></i>
</div>
<div>
<h3 class="font-bold text-gray-800 mb-1">{% trans "Manage Content" %}</h3>
<p class="text-sm text-gray-500">{% trans "View and edit onboarding content" %}</p>
</div>
</div>
</div>
</a>
<a href="{% url 'accounts:onboarding_provisional_list' %}" class="group">
<div class="bg-white p-6 rounded-2xl shadow-sm border-2 border-gray-100 hover:border-purple-400 hover:shadow-md transition">
<div class="flex items-center gap-4">
<div class="bg-purple-100 p-3 rounded-xl group-hover:bg-purple-200 transition">
<i data-lucide="user-plus" class="text-purple-500 w-6 h-6"></i>
</div>
<div>
<h3 class="font-bold text-gray-800 mb-1">{% trans "Provisional Accounts" %}</h3>
<p class="text-sm text-gray-500">{% trans "View accounts pending activation" %}</p>
</div>
</div>
</div>
</a>
</div>
<!-- Recent Activity -->
<div class="bg-white rounded-2xl shadow-sm border border-gray-100 p-6">
<h2 class="text-xl font-bold text-gray-800 mb-4 flex items-center gap-2">
<i data-lucide="activity" class="w-5 h-5 text-navy"></i>
{% trans "Recent Onboarding Activity" %}
</h2>
<div class="space-y-4">
{% for activity in recent_activity %}
<div class="flex items-center gap-4 p-4 bg-gray-50 rounded-xl">
<div class="flex items-center justify-center w-10 h-10 bg-white rounded-full shadow-sm">
{% if activity.status == 'completed' %}
<i data-lucide="check-circle" class="w-5 h-5 text-green-500"></i>
{% elif activity.status == 'in_progress' %}
<i data-lucide="loader" class="w-5 h-5 text-orange-500"></i>
{% else %}
<i data-lucide="clock" class="w-5 h-5 text-gray-400"></i>
{% endif %}
</div>
<div class="flex-1">
<p class="font-medium text-gray-800">{{ activity.user }}</p>
<p class="text-sm text-gray-500">{{ activity.action }}</p>
</div>
<span class="text-sm text-gray-400">{{ activity.timestamp|timesince }}</span>
</div>
{% empty %}
<div class="text-center py-8">
<i data-lucide="inbox" class="w-12 h-12 text-gray-300 mx-auto mb-3"></i>
<p class="text-gray-500">{% trans "No recent activity" %}</p>
</div>
{% endfor %}
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
lucide.createIcons();
});
</script>
{% endblock %}