From 9b1564451d3f54b392c012654cddc2ba98eb24e0 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Mon, 3 Aug 2026 07:53:15 -0400 Subject: [PATCH] Remove unused workspace-header from MainLayout It was static markup (fixed "Cut planning workspace" / "Ready to plan" text) that never varied by page or state, so it was pure dead weight. --- CutList.Web/Components/Layout/MainLayout.razor | 4 ---- CutList.Web/wwwroot/css/app.css | 7 ++----- tests/test_job_results_actions.py | 8 -------- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/CutList.Web/Components/Layout/MainLayout.razor b/CutList.Web/Components/Layout/MainLayout.razor index 759f45a..a3087b0 100644 --- a/CutList.Web/Components/Layout/MainLayout.razor +++ b/CutList.Web/Components/Layout/MainLayout.razor @@ -6,10 +6,6 @@
-
@Body
diff --git a/CutList.Web/wwwroot/css/app.css b/CutList.Web/wwwroot/css/app.css index d98fa7c..d6f0898 100644 --- a/CutList.Web/wwwroot/css/app.css +++ b/CutList.Web/wwwroot/css/app.css @@ -244,10 +244,7 @@ body { letter-spacing: -.01em; } main { background: var(--paper); box-shadow: none; min-width: 0; } .sidebar { background: var(--rail); border-right: 1px solid #314653; } .content { margin: 0 auto; max-width: 1440px; padding: 2.75rem clamp(1.5rem, 4vw, 4.5rem) 4rem; } -.workspace-header { align-items: center; background: rgba(243,246,248,.9); border-bottom: 1px solid var(--line); display: flex; height: 4.5rem; justify-content: space-between; padding: 0 clamp(1.5rem, 4vw, 4.5rem); position: sticky; top: 0; z-index: 5; } -.workspace-eyebrow, .eyebrow { color: var(--muted); font-size: .68rem; font-weight: 800; letter-spacing: .14em; margin: 0; text-transform: uppercase; } -.workspace-status { align-items: center; color: var(--muted); display: flex; font-size: .78rem; font-weight: 650; gap: .45rem; } -.status-dot { background: #3d9b78; border-radius: 50%; box-shadow: 0 0 0 3px rgba(61,155,120,.14); height: .45rem; width: .45rem; } +.eyebrow { color: var(--muted); font-size: .68rem; font-weight: 800; letter-spacing: .14em; margin: 0; text-transform: uppercase; } h1, h2, h3, h4, h5, h6 { color: var(--ink); font-family: "IBM Plex Sans", Inter, ui-sans-serif, system-ui, sans-serif; font-weight: 650; letter-spacing: -.025em; } h1 { font-size: clamp(1.85rem, 3.2vw, 3.15rem); line-height: 1.04; } h2 { font-size: clamp(1.35rem, 2vw, 1.85rem); line-height: 1.12; } @@ -319,4 +316,4 @@ a, .btn-link { color: var(--accent-dark); } .workflow-list li > span { align-items: center; background: var(--accent); border-radius: 50%; display: inline-flex; font-size: .72rem; font-weight: 800; height: 1.6rem; justify-content: center; width: 1.6rem; } .workflow-list strong, .workflow-list small { display: block; }.workflow-list strong { font-size: .9rem; }.workflow-list small { color: var(--muted); font-size: .78rem; margin-top: .1rem; } @media (max-width: 800px) { .overview-header { align-items: start; flex-direction: column; }.overview-grid { grid-template-columns: 1fr; }.overview-job-row { grid-template-columns: 7rem minmax(0, 1fr) 4rem 1rem; }.overview-job-meta { grid-column: 2 / 4; }.overview-job-row time { grid-column: 3; grid-row: 1; } .dashboard-hero, .workflow-panel { grid-template-columns: 1fr; }.hero-graphic { display: none; }.action-grid { grid-template-columns: 1fr; }.section-heading { align-items: start; flex-direction: column; gap: .5rem; } } -@media (max-width: 640.98px) { .content { padding-top: 2rem; }.overview-stats { grid-template-columns: 1fr; }.overview-job-row { grid-template-columns: 1fr auto; padding: 1rem; }.overview-job-id { grid-column: 1; }.overview-job-name { grid-column: 1; }.overview-job-meta { grid-column: 1; }.overview-job-row time { grid-column: 2; grid-row: 1; }.overview-row-arrow, .overview-lock { grid-column: 2; grid-row: 2 / span 2; align-self: center; }.overview-panel-heading { padding: 1.25rem 1rem 1rem; }.overview-panel-note { margin-left: 1rem; margin-right: 1rem; }.overview-stock-list li { padding-left: 1rem; padding-right: 1rem; }.workspace-header { height: 3.5rem; padding-left: 4.6rem; }.workspace-context { display: none; } .workspace-status { margin-left: auto; } } +@media (max-width: 640.98px) { .content { padding-top: 2rem; }.overview-stats { grid-template-columns: 1fr; }.overview-job-row { grid-template-columns: 1fr auto; padding: 1rem; }.overview-job-id { grid-column: 1; }.overview-job-name { grid-column: 1; }.overview-job-meta { grid-column: 1; }.overview-job-row time { grid-column: 2; grid-row: 1; }.overview-row-arrow, .overview-lock { grid-column: 2; grid-row: 2 / span 2; align-self: center; }.overview-panel-heading { padding: 1.25rem 1rem 1rem; }.overview-panel-note { margin-left: 1rem; margin-right: 1rem; }.overview-stock-list li { padding-left: 1rem; padding-right: 1rem; } } diff --git a/tests/test_job_results_actions.py b/tests/test_job_results_actions.py index 5d2ce28..808e037 100644 --- a/tests/test_job_results_actions.py +++ b/tests/test_job_results_actions.py @@ -7,7 +7,6 @@ from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[1] JOB_EDITOR = REPO_ROOT / "CutList.Web/Components/Pages/Jobs/Edit.razor" -MAIN_LAYOUT = REPO_ROOT / "CutList.Web/Components/Layout/MainLayout.razor" class JobResultsActionsTests(unittest.TestCase): @@ -30,13 +29,6 @@ class JobResultsActionsTests(unittest.TestCase): self.assertIn(".print-screen-only", report_css) self.assertIn("display: none !important;", report_css) - def test_print_report_hides_workspace_header_and_ready_status(self) -> None: - markup = MAIN_LAYOUT.read_text() - - self.assertIn('class="workspace-header print-screen-only"', markup) - self.assertIn("Cut planning workspace", markup) - self.assertIn("Ready to plan", markup) - def test_print_report_forces_backgrounds_to_plain_white(self) -> None: report_css = (REPO_ROOT / "CutList.Web/wwwroot/css/report.css").read_text() print_styles = report_css[report_css.index("@media print {"):]