From bcbc6f7307bf31e89929068f11f72af29d136327 Mon Sep 17 00:00:00 2001 From: Cameron Custer Date: Fri, 21 Aug 2026 15:31:30 -0700 Subject: [PATCH 1/2] fix(ux): fit problem and contest tables to narrow screens Both tables forced a 900px minimum width, so they overflowed horizontally on laptop and phone viewports. Lower the base minimum to 340px and restore the full width at xl (problems) and lg (contests), drop lower-priority columns progressively (Topic below xl, Recommender below md, Duration below lg), widen the remaining columns to reclaim the freed space, and tighten cell padding and feedback button spacing below md. Move the scroll affordance breakpoint to 767px so it appears exactly where overflow now begins. --- src/lib/components/ContestTable.svelte | 48 +++++++++---------- src/lib/components/ProblemTable.svelte | 48 +++++++++++-------- .../ResponsiveTableContainer.svelte | 2 +- 3 files changed, 52 insertions(+), 46 deletions(-) diff --git a/src/lib/components/ContestTable.svelte b/src/lib/components/ContestTable.svelte index 006ad51..f36cc71 100644 --- a/src/lib/components/ContestTable.svelte +++ b/src/lib/components/ContestTable.svelte @@ -82,17 +82,17 @@ @@ -264,7 +264,7 @@ : 'hover:bg-[var(--color-tertiary)]/30' }`} > - - - - - - -
Contest Duration -
+
+ {#if contest.id} {@const hasParticipated = userParticipation.has(contest.id)} + {#if contest.type === 'ICPC'} ICPC @@ -305,7 +305,7 @@ {/if} + + + {#if contest.difficulty !== undefined} @@ -337,7 +337,7 @@ > {/if} + -
+
+
{#if contest.id} @@ -259,7 +259,7 @@ class="problem-row" class:problem-row-solved={!!problem.id && userSolvedProblems.has(problem.id)} > - - - - - -
Problem Topic
+ {#if problem.id} {@const isSolved = userSolvedProblems.has(problem.id)} + + + + + -
+
+
{#if problem.id} Date: Fri, 21 Aug 2026 15:50:10 -0700 Subject: [PATCH 2/2] fix(ux): keep every table column visible while narrowing the tables The first pass hid the Topic, Recommender, and Duration columns below their breakpoints, which removed the author filter and author links entirely on mobile and broke content parity between viewports. Restore every column and achieve the narrowing through width and padding alone: base minimum width 600px, full 900px at xl, and p-2 cells below md. --- src/lib/components/ContestTable.svelte | 22 +++++++++---------- src/lib/components/ProblemTable.svelte | 22 +++++++++---------- .../ResponsiveTableContainer.svelte | 2 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/lib/components/ContestTable.svelte b/src/lib/components/ContestTable.svelte index f36cc71..ff0bb38 100644 --- a/src/lib/components/ContestTable.svelte +++ b/src/lib/components/ContestTable.svelte @@ -82,13 +82,13 @@ @@ -316,7 +316,7 @@ {contest.name} - -
Contest
{formatDuration(contest.durationSeconds)} @@ -337,7 +337,7 @@ > {/if} @@ -333,7 +333,7 @@ - -
Problem
{#if problem.type} {/if}