feat: finance page overhaul — pie charts, month nav, tab improvements
- Overview tab: 3 donut pie charts (expenses by category, sub payments, invoiced) each with independent month navigation arrows - Expenses tab: big red total in category sidebar, left-aligned category column, white text - Subcontractors tab: big gold total in sidebar, pending/paid breakdown with gold highlight - Invoices tab: big green total in companies sidebar, dashboard-inline-link for invoice# and company, StatusBadge with Invoiced/Paid labels, column widths tuned - StatusBadge: add optional label prop for custom display text - Layout/style polish across tabs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+73
-7
@@ -1081,12 +1081,16 @@ textarea {
|
||||
/* Badges */
|
||||
.badge { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 4px; font-size: 11px; font-weight: 400; white-space: nowrap; letter-spacing: 0.3px; }
|
||||
.badge-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 78px;
|
||||
height: 20px;
|
||||
justify-content: center;
|
||||
padding: 0 8px;
|
||||
font-size: 10px;
|
||||
line-height: 1;
|
||||
line-height: 1.05;
|
||||
box-sizing: border-box;
|
||||
padding-top: 1px; /* optical center correction for Fourge font metrics */
|
||||
}
|
||||
.badge-not_started { background: #222; color: #888; border: 1px solid #333; }
|
||||
.badge-in_progress { background: rgba(37,99,235,0.15); color: #60a5fa; border: 1px solid rgba(37,99,235,0.3); }
|
||||
@@ -1138,14 +1142,29 @@ tr:hover td { background: rgba(255,255,255,0.02); }
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
font-weight: 400;
|
||||
transition: color 0.15s;
|
||||
transition: color 0.15s, opacity 0.15s;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
.table-link:hover,
|
||||
.table-link:focus-visible {
|
||||
color: var(--accent) !important;
|
||||
opacity: 1;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
a.table-link:hover,
|
||||
span.table-link:hover,
|
||||
button.table-link:hover,
|
||||
a.table-link:focus-visible,
|
||||
span.table-link:focus-visible,
|
||||
button.table-link:focus-visible {
|
||||
color: var(--accent) !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
tbody tr:hover .table-link {
|
||||
color: var(--accent) !important;
|
||||
}
|
||||
|
||||
.table-sticky-head thead th {
|
||||
position: sticky;
|
||||
@@ -1207,13 +1226,22 @@ tr:hover td { background: rgba(255,255,255,0.02); }
|
||||
text-align: inherit;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
transition: color 0.15s, opacity 0.15s;
|
||||
}
|
||||
.dashboard-inline-link:hover,
|
||||
.dashboard-inline-link:focus-visible {
|
||||
color: var(--accent) !important;
|
||||
opacity: 1;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
button.dashboard-inline-link:hover,
|
||||
a.dashboard-inline-link:hover,
|
||||
button.dashboard-inline-link:focus-visible,
|
||||
a.dashboard-inline-link:focus-visible {
|
||||
color: var(--accent) !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
/* Forms */
|
||||
.form-group { margin-bottom: 18px; }
|
||||
@@ -1668,6 +1696,38 @@ select option { background: #222; color: #fff; }
|
||||
.tab-btn:hover { border-color: var(--interactive-hover-border); color: var(--text-secondary); }
|
||||
.tab-btn.active { background: var(--accent); border-color: var(--accent); color: #000; font-weight: 400; }
|
||||
|
||||
/* Shared section tabs (Tasks / Projects / Finances / Detail tabs) */
|
||||
.section-tab-btn {
|
||||
font-family: 'Fourge', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.2px;
|
||||
padding: 2px 0 5px;
|
||||
margin: 0 8px;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
border-bottom: 2px solid transparent;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
color: var(--text-secondary);
|
||||
transition: all 160ms;
|
||||
}
|
||||
.section-tab-btn:hover,
|
||||
.section-tab-btn:focus-visible {
|
||||
color: var(--accent);
|
||||
border-bottom-color: var(--accent);
|
||||
outline: none;
|
||||
}
|
||||
button.section-tab-btn:hover,
|
||||
button.section-tab-btn:focus-visible {
|
||||
color: var(--accent) !important;
|
||||
border-bottom-color: var(--accent) !important;
|
||||
}
|
||||
.section-tab-btn.is-active {
|
||||
color: var(--text-primary);
|
||||
border-bottom-color: var(--accent);
|
||||
}
|
||||
|
||||
/* Rebuilt hover system (single source of truth) */
|
||||
.sidebar-link:hover {
|
||||
background-color: #1f1f1f;
|
||||
@@ -1682,6 +1742,14 @@ select option { background: #222; color: #fff; }
|
||||
.site-header-avatar-item:hover {
|
||||
color: var(--accent);
|
||||
}
|
||||
[data-theme="dark"] .site-header-avatar-item:hover {
|
||||
background-color: rgba(255,255,255,0.08);
|
||||
border-color: rgba(255,255,255,0.12);
|
||||
}
|
||||
[data-theme="light"] .site-header-avatar-item:hover {
|
||||
background-color: rgba(0,0,0,0.06);
|
||||
border-color: rgba(0,0,0,0.1);
|
||||
}
|
||||
[data-theme="dark"] .sidebar-link:hover {
|
||||
background-color: #1f1f1f;
|
||||
border-color: rgba(255,255,255,0.08);
|
||||
@@ -1700,6 +1768,4 @@ select option { background: #222; color: #fff; }
|
||||
border-color: rgba(0,0,0,0.18);
|
||||
color: #0d0d0d;
|
||||
}
|
||||
[data-theme="light"] .site-header-avatar-item:hover {
|
||||
color: var(--accent);
|
||||
}
|
||||
[data-theme="light"] .site-header-avatar-item:hover { color: var(--accent); }
|
||||
|
||||
Reference in New Issue
Block a user