Improve: Overhaul navigation with grouped dropdowns, breadcrumbs, and quick-actions

Restructure the flat 7-item navbar into logical dropdown groups (Transactions,
Receipts, Accounts), add a prominent Upload button, settings gear icon, breadcrumb
navigation on 11 deep pages, and dashboard quick-action cards with hover effects.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
aj
2026-02-15 19:41:56 -05:00
co-authored by Claude Opus 4.6
parent 324ab2c627
commit 4be5658d32
15 changed files with 249 additions and 23 deletions
+36
View File
@@ -19,4 +19,40 @@ html {
body {
margin-bottom: 60px;
}
/* Active dropdown parent highlighting */
.navbar .nav-item.dropdown .nav-link.dropdown-toggle.active-parent {
color: rgba(255, 255, 255, 0.9);
}
/* Breadcrumb styling */
.breadcrumb-nav {
margin-bottom: 1rem;
}
.breadcrumb-nav .breadcrumb {
background: transparent;
padding: 0;
margin-bottom: 0;
font-size: 0.875rem;
}
/* Quick-action cards on dashboard */
.quick-action-card {
transition: transform 0.15s ease, box-shadow 0.15s ease;
text-decoration: none;
color: inherit;
}
.quick-action-card:hover {
transform: translateY(-2px);
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.3) !important;
}
.quick-action-icon {
width: 48px;
height: 48px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.25rem;
}
+19 -4
View File
@@ -1,4 +1,19 @@
// Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
// for details on configuring this project to bundle and minify static web assets.
// Write your JavaScript code.
// Highlight active dropdown parent when a child page is active
(function () {
var path = window.location.pathname.toLowerCase().replace(/\/+$/, '') || '/';
document.querySelectorAll('.navbar .dropdown-menu .dropdown-item').forEach(function (item) {
var href = (item.getAttribute('href') || '').toLowerCase().replace(/\/+$/, '');
if (href && (path === href || path.startsWith(href + '/'))) {
item.classList.add('active');
var toggle = item.closest('.dropdown').querySelector('.dropdown-toggle');
if (toggle) toggle.classList.add('active-parent');
}
});
// Direct nav-links (non-dropdown)
document.querySelectorAll('.navbar .nav-link:not(.dropdown-toggle)').forEach(function (link) {
var href = (link.getAttribute('href') || '').toLowerCase().replace(/\/+$/, '');
if (href && path === href) {
link.classList.add('active');
}
});
})();