- Convert invcount to self-contained module - Add Module Manager for install/uninstall - Create module_registry database table - Support hot-reloading of modules - Move data imports into invcount module - Update all templates and routes to new structure Version bumped to 0.16.0
42 lines
1.3 KiB
HTML
42 lines
1.3 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Home - ScanLook{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="dashboard-container">
|
|
|
|
<!-- Admin Button (only for admins/owners) -->
|
|
{% if session.role in ['owner', 'admin'] %}
|
|
<div class="mode-selector">
|
|
<a href="{{ url_for('admin_dashboard') }}" class="mode-btn">
|
|
👔 Admin Console
|
|
</a>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="dashboard-header">
|
|
<h1 class="page-title">Welcome, {{ session.full_name }}</h1>
|
|
<p class="page-subtitle">Select a module to get started</p>
|
|
</div>
|
|
|
|
{% if modules %}
|
|
<div class="module-grid">
|
|
{% for m in modules %}
|
|
<a href="/{{ m.module_key }}" class="module-card">
|
|
<div class="module-icon">
|
|
<i class="fa-solid {{ m.icon }}"></i>
|
|
</div>
|
|
<h3 class="module-name">{{ m.module_name }}</h3>
|
|
<p class="module-desc">{{ m.description }}</p>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
{% else %}
|
|
<div class="empty-state">
|
|
<div class="empty-icon">🔒</div>
|
|
<h2 class="empty-title">No Modules Available</h2>
|
|
<p class="empty-text">You don't have access to any modules. Please contact your administrator.</p>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endblock %} |