128 lines
7.0 KiB
HTML
128 lines
7.0 KiB
HTML
{% load static %}
|
|
<!DOCTYPE html>
|
|
<html lang="id">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{{ project_name|default:"DN-WRS" }}</title>
|
|
<!-- Bootstrap 5 -->
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<!-- Google Fonts: Plus Jakarta Sans -->
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
<!-- Lucide Icons -->
|
|
<script src="https://unpkg.com/lucide@latest"></script>
|
|
<!-- Chart.js -->
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
<!-- Custom CSS -->
|
|
<link rel="stylesheet" href="{% static 'css/custom.css' %}?v={% now 'U' %}">
|
|
|
|
{% block extra_head %}{% endblock %}
|
|
</head>
|
|
<body>
|
|
{% if user.is_authenticated %}
|
|
<nav class="navbar navbar-expand-lg navbar-custom sticky-top py-3 mb-4">
|
|
<div class="container">
|
|
<a class="navbar-brand fw-bold text-primary d-flex align-items-center" href="{% url 'home' %}">
|
|
<i data-lucide="package" class="me-2"></i>
|
|
<span>{{ project_name|default:"DN-WRS" }}</span>
|
|
</a>
|
|
<button class="navbar-toggler border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
|
<i data-lucide="menu"></i>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarNav">
|
|
<ul class="navbar-nav me-auto">
|
|
<li class="nav-item">
|
|
<a class="nav-link px-3 d-flex align-items-center {% if request.resolver_match.url_name == 'home' %}active{% endif %}" href="{% url 'home' %}">
|
|
<i data-lucide="layout-dashboard" class="me-2 icon-sm"></i> Beranda
|
|
</a>
|
|
</li>
|
|
<li class="nav-item dropdown">
|
|
<a class="nav-link px-3 dropdown-toggle d-flex align-items-center" href="#" role="button" data-bs-toggle="dropdown">
|
|
<i data-lucide="database" class="me-2 icon-sm"></i> Master Data
|
|
</a>
|
|
<ul class="dropdown-menu border-0 shadow-lg rounded-4 p-2">
|
|
<li><a class="dropdown-item rounded-3" href="{% url 'medicine_list' %}"><i data-lucide="pill" class="me-2 icon-sm"></i> Data Barang</a></li>
|
|
<li><a class="dropdown-item rounded-3" href="{% url 'category_list' %}"><i data-lucide="tag" class="me-2 icon-sm"></i> Kategori</a></li>
|
|
<li><a class="dropdown-item rounded-3" href="{% url 'supplier_list' %}"><i data-lucide="truck" class="me-2 icon-sm"></i> Supplier</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link px-3 d-flex align-items-center {% if request.resolver_match.url_name == 'input_faktur' %}active{% endif %}" href="{% url 'input_faktur' %}">
|
|
<i data-lucide="file-plus" class="me-2 icon-sm"></i> Faktur Masuk
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link px-3 d-flex align-items-center {% if request.resolver_match.url_name == 'barang_keluar' %}active{% endif %}" href="{% url 'barang_keluar' %}">
|
|
<i data-lucide="file-minus" class="me-2 icon-sm"></i> Barang Keluar
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link px-3 d-flex align-items-center {% if request.resolver_match.url_name == 'laporan_transaksi' %}active{% endif %}" href="{% url 'laporan_transaksi' %}">
|
|
<i data-lucide="bar-chart-2" class="me-2 icon-sm"></i> Laporan
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<div class="d-flex align-items-center">
|
|
<div class="dropdown">
|
|
<button class="btn btn-link text-dark text-decoration-none dropdown-toggle d-flex align-items-center" type="button" id="userDropdown" data-bs-toggle="dropdown">
|
|
<div class="bg-primary text-white rounded-circle d-flex align-items-center justify-content-center me-2" style="width: 32px; height: 32px; font-size: 0.8rem;">
|
|
{{ user.username|slice:":1"|upper }}
|
|
</div>
|
|
<span class="fw-semibold">{{ user.username }}</span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-end border-0 shadow-lg rounded-4 p-2">
|
|
<li><a class="dropdown-item rounded-3 py-2" href="/admin/password_change/">Ubah Password</a></li>
|
|
<li><hr class="dropdown-divider"></li>
|
|
<li>
|
|
<form method="post" action="{% url 'logout' %}">
|
|
{% csrf_token %}
|
|
<button type="submit" class="dropdown-item rounded-3 py-2 text-danger">Keluar</button>
|
|
</form>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
{% endif %}
|
|
|
|
<div class="container">
|
|
{% if messages %}
|
|
{% for message in messages %}
|
|
<div class="alert alert-{{ message.tags }} alert-dismissible fade show rounded-4 border-0 shadow-sm mb-4" role="alert">
|
|
<div class="d-flex align-items-center">
|
|
<i data-lucide="{% if message.tags == 'success' %}check-circle{% else %}alert-circle{% endif %}" class="me-2"></i>
|
|
{{ message }}
|
|
</div>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
</div>
|
|
|
|
<main class="container py-2 fade-in">
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
<footer class="container py-5 text-center text-muted small mt-auto">
|
|
<p class="mb-0">© {% now "Y" %} {{ project_name|default:"DN-WRS" }}</p>
|
|
<p class="opacity-50">Sistem Manajemen Gudang Premium</p>
|
|
</footer>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script>
|
|
// Initialize Lucide icons
|
|
lucide.createIcons();
|
|
|
|
// Custom icon sizes
|
|
document.querySelectorAll('.icon-sm').forEach(el => {
|
|
el.setAttribute('width', '18');
|
|
el.setAttribute('height', '18');
|
|
});
|
|
</script>
|
|
{% block extra_js %}{% endblock %}
|
|
</body>
|
|
</html> |