Session 2026-05-30: tasks/projects unification, code consolidation, file renames
- Unified Tasks page: 3 role render blocks → 1, normalized row shape, single renderRow/sort/tabs - Fixed role scoping: external = all tasks in member projects, client = all tasks in company projects - Fixed client bug: was scoped by submitted_by, now company→project→tasks - Aligned dashboard client scope to match tasks page - Hot tasks dashboard: now filters to active statuses only (not completed/invoiced/paid) - Removed Projects.jsx (dead), fixed /project/ → /projects/ links - Renamed all page files to match folder path (Team*, External*, Client* prefixes) - Renamed: RequestsPage→Tasks, Settings→Profile, CompaniesPage→Companies, ProjectDetailPage→ProjectDetail - Dropped dead fetches from Tasks page (invoices, invoice_items, subcontractor_invoice_items) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,8 @@
|
||||
--avatar-inner-ring: #111111;
|
||||
--danger: #ef4444;
|
||||
--success: #22c55e;
|
||||
--table-scroll-thumb: rgba(0,0,0,0.1);
|
||||
--table-scroll-thumb-hover: rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
@keyframes ui-fade-up {
|
||||
@@ -66,6 +68,8 @@
|
||||
--overlay-scrim: rgba(255,255,255,0.72);
|
||||
--popup-shadow: 0 16px 42px rgba(0,0,0,0.18);
|
||||
--avatar-inner-ring: #ffffff;
|
||||
--table-scroll-thumb: rgba(0,0,0,0.1);
|
||||
--table-scroll-thumb-hover: rgba(0,0,0,0.2);
|
||||
}
|
||||
[data-theme="light"] input[type="text"],
|
||||
[data-theme="light"] input[type="email"],
|
||||
@@ -1100,6 +1104,24 @@ textarea {
|
||||
|
||||
/* Table */
|
||||
.table-wrapper { overflow-x: auto; border-radius: 4px; border: 1px solid var(--border); background: var(--card-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
|
||||
.table-wrapper {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--table-scroll-thumb) transparent;
|
||||
}
|
||||
.table-wrapper::-webkit-scrollbar {
|
||||
width: 3px;
|
||||
height: 3px;
|
||||
}
|
||||
.table-wrapper::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
.table-wrapper::-webkit-scrollbar-thumb {
|
||||
background: var(--table-scroll-thumb);
|
||||
border-radius: 999px;
|
||||
}
|
||||
.table-wrapper::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--table-scroll-thumb-hover);
|
||||
}
|
||||
table { width: 100%; border-collapse: collapse; }
|
||||
th { text-align: left; padding: 12px 16px; font-size: 10px; font-weight: 400; text-transform: uppercase; letter-spacing: 0.8px; color: var(--text-muted); background: rgba(255,255,255,0.07); border-bottom: 1px solid var(--border); }
|
||||
td { padding: 14px 16px; border-bottom: 1px solid var(--border); font-size: 13px; color: var(--text-primary); }
|
||||
@@ -1127,6 +1149,48 @@ tr:hover td { background: rgba(255,255,255,0.02); }
|
||||
.table-scroll-fade {
|
||||
position: static;
|
||||
}
|
||||
.table-scroll-hidden {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--table-scroll-thumb) transparent;
|
||||
}
|
||||
.table-scroll-hidden::-webkit-scrollbar {
|
||||
width: 3px;
|
||||
height: 3px;
|
||||
}
|
||||
.table-scroll-hidden::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
.table-scroll-hidden::-webkit-scrollbar-thumb {
|
||||
background: var(--table-scroll-thumb);
|
||||
border-radius: 999px;
|
||||
}
|
||||
.table-scroll-hidden::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--table-scroll-thumb-hover);
|
||||
}
|
||||
.scrollbar-thin-theme.table-scroll-hidden {
|
||||
scrollbar-color: var(--table-scroll-thumb) transparent !important;
|
||||
}
|
||||
.scrollbar-thin-theme.table-scroll-hidden:hover,
|
||||
.scrollbar-thin-theme.table-scroll-hidden:focus-within {
|
||||
scrollbar-color: var(--table-scroll-thumb-hover) transparent !important;
|
||||
}
|
||||
.scrollbar-thin-theme.table-scroll-hidden::-webkit-scrollbar {
|
||||
width: 3px !important;
|
||||
height: 3px !important;
|
||||
}
|
||||
.scrollbar-thin-theme.table-scroll-hidden::-webkit-scrollbar-thumb,
|
||||
.scrollbar-thin-theme.table-scroll-hidden:hover::-webkit-scrollbar-thumb,
|
||||
.scrollbar-thin-theme.table-scroll-hidden:focus-within::-webkit-scrollbar-thumb,
|
||||
.scrollbar-thin-theme.table-scroll-hidden::-webkit-scrollbar-thumb:active,
|
||||
.scrollbar-thin-theme.table-scroll-hidden::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--table-scroll-thumb) !important;
|
||||
border-radius: 999px;
|
||||
border: 0 !important;
|
||||
}
|
||||
.project-table-scroll {
|
||||
padding-right: 8px;
|
||||
scrollbar-gutter: stable;
|
||||
}
|
||||
.dashboard-inline-link {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
@@ -1203,6 +1267,17 @@ select option { background: #222; color: #fff; }
|
||||
.empty-state { text-align: center; padding: 56px 20px; color: var(--text-secondary); }
|
||||
.empty-state-icon { display: none; }
|
||||
.empty-state h3 { font-size: 15px; font-weight: 400; color: var(--text-primary); margin-bottom: 6px; }
|
||||
.card-empty-center {
|
||||
flex: 1;
|
||||
min-height: 120px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
|
||||
.version-timeline { display: flex; flex-direction: column; gap: 12px; }
|
||||
.version-item { border: 1px solid var(--border); border-radius: 4px; padding: 16px; background: var(--card-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
|
||||
|
||||
Reference in New Issue
Block a user