From 766325dc807ff5fc1081b1baafc87657499a3b0a Mon Sep 17 00:00:00 2001 From: Angela Cai Date: Thu, 27 Nov 2025 21:17:02 -0500 Subject: [PATCH 01/17] Weird space bug fix (dark mode issue) --- apps/web/src/lib/components/recal/left/Events.svelte | 8 ++++---- .../lib/components/recal/left/elements/EventCard.svelte | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/web/src/lib/components/recal/left/Events.svelte b/apps/web/src/lib/components/recal/left/Events.svelte index c0fa8871..1f90df38 100644 --- a/apps/web/src/lib/components/recal/left/Events.svelte +++ b/apps/web/src/lib/components/recal/left/Events.svelte @@ -115,9 +115,9 @@
{#if scheduleEvents.length === 0} -

No events added yet.

+

No events added yet.

{:else} -

+

{scheduleEvents.length} Added {scheduleEvents.length === 1 ? "Event" : "Events"}

@@ -133,9 +133,9 @@
{#if notInSchedule.length === 0} -

No events available.

+

No events available.

{:else} -

+

{notInSchedule.length} Available {notInSchedule.length === 1 ? "Event" : "Events"}

diff --git a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte index ffa862e7..ed9d8d05 100644 --- a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte +++ b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte @@ -47,7 +47,7 @@ on:blur={handleLeave} on:mouseleave={handleLeave}>
-

+

{customEvent.title}

From 53c6859c4d7099f3b5422689290139936a7f4615 Mon Sep 17 00:00:00 2001 From: Angela Cai Date: Thu, 27 Nov 2025 23:11:28 -0500 Subject: [PATCH 02/17] Completely vibe coded handle bar of death --- apps/web/src/lib/components/recal/Left.svelte | 179 +++++++++++++++--- 1 file changed, 154 insertions(+), 25 deletions(-) diff --git a/apps/web/src/lib/components/recal/Left.svelte b/apps/web/src/lib/components/recal/Left.svelte index a9734fb0..882be35a 100644 --- a/apps/web/src/lib/components/recal/Left.svelte +++ b/apps/web/src/lib/components/recal/Left.svelte @@ -3,49 +3,178 @@ import SearchResults from "./left/SearchResults.svelte"; import SearchBar from "./left/SearchBar.svelte"; import Events from "./left/Events.svelte"; + import { onMount } from "svelte"; + + // --- Split logic between Saved and SearchResults --- + + let savedHeight = 200; // initial Saved height in px + const MIN_SAVED = 80; // minimum Saved height + const MIN_RESULTS = 120; // minimum Results height + + let splitEl: HTMLDivElement | null = null; + + let dragging = false; + let startY = 0; + let startHeight = 0; + + function onPointerDown(e: PointerEvent) { + e.preventDefault(); + dragging = true; + startY = e.clientY; + startHeight = savedHeight; + + window.addEventListener("pointermove", onPointerMove); + window.addEventListener("pointerup", onPointerUp); + window.addEventListener("pointercancel", onPointerUp); + } + + function onPointerMove(e: PointerEvent) { + if (!dragging || !splitEl) return; + + const dy = e.clientY - startY; + const containerHeight = splitEl.getBoundingClientRect().height; + + const maxSaved = Math.max(MIN_SAVED, containerHeight - MIN_RESULTS); + const next = startHeight + dy; + + savedHeight = Math.max(MIN_SAVED, Math.min(maxSaved, next)); + } + + function onPointerUp(_e: PointerEvent) { + if (!dragging) return; + + dragging = false; + window.removeEventListener("pointermove", onPointerMove); + window.removeEventListener("pointerup", onPointerUp); + window.removeEventListener("pointercancel", onPointerUp); + } + + // Clamp Saved height whenever the split container resizes + onMount(() => { + if (!splitEl || typeof ResizeObserver === "undefined") return; + + const ro = new ResizeObserver((entries) => { + const entry = entries[0]; + if (!entry) return; + + const height = entry.contentRect.height; + const maxSaved = Math.max(MIN_SAVED, height - MIN_RESULTS); + + if (savedHeight > maxSaved) { + savedHeight = maxSaved; + } + }); + + ro.observe(splitEl); + + return () => { + ro.disconnect(); + }; + });
-
-
+ +
+
-
- -
-
- + + +
+
+
+ +
+ +
From 68178955b86e58386368e0a2e600109a5fd64878 Mon Sep 17 00:00:00 2001 From: Angela Cai Date: Fri, 28 Nov 2025 00:07:34 -0500 Subject: [PATCH 03/17] Weird space bug fix (dark mode issue) --- apps/web/src/lib/components/recal/left/Events.svelte | 8 ++++---- .../lib/components/recal/left/elements/EventCard.svelte | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/web/src/lib/components/recal/left/Events.svelte b/apps/web/src/lib/components/recal/left/Events.svelte index c0fa8871..1f90df38 100644 --- a/apps/web/src/lib/components/recal/left/Events.svelte +++ b/apps/web/src/lib/components/recal/left/Events.svelte @@ -115,9 +115,9 @@
{#if scheduleEvents.length === 0} -

No events added yet.

+

No events added yet.

{:else} -

+

{scheduleEvents.length} Added {scheduleEvents.length === 1 ? "Event" : "Events"}

@@ -133,9 +133,9 @@
{#if notInSchedule.length === 0} -

No events available.

+

No events available.

{:else} -

+

{notInSchedule.length} Available {notInSchedule.length === 1 ? "Event" : "Events"}

diff --git a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte index ffa862e7..ed9d8d05 100644 --- a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte +++ b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte @@ -47,7 +47,7 @@ on:blur={handleLeave} on:mouseleave={handleLeave}>
-

+

{customEvent.title}

From d168be883a4db00f6a2952eb546da35c7907d733 Mon Sep 17 00:00:00 2001 From: Angela Cai Date: Fri, 28 Nov 2025 00:08:56 -0500 Subject: [PATCH 04/17] Weird space bug fix (dark mode issue) --- apps/web/src/lib/components/recal/left/Events.svelte | 8 ++++---- .../lib/components/recal/left/elements/EventCard.svelte | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/web/src/lib/components/recal/left/Events.svelte b/apps/web/src/lib/components/recal/left/Events.svelte index c0fa8871..1f90df38 100644 --- a/apps/web/src/lib/components/recal/left/Events.svelte +++ b/apps/web/src/lib/components/recal/left/Events.svelte @@ -115,9 +115,9 @@
{#if scheduleEvents.length === 0} -

No events added yet.

+

No events added yet.

{:else} -

+

{scheduleEvents.length} Added {scheduleEvents.length === 1 ? "Event" : "Events"}

@@ -133,9 +133,9 @@
{#if notInSchedule.length === 0} -

No events available.

+

No events available.

{:else} -

+

{notInSchedule.length} Available {notInSchedule.length === 1 ? "Event" : "Events"}

diff --git a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte index ffa862e7..ed9d8d05 100644 --- a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte +++ b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte @@ -47,7 +47,7 @@ on:blur={handleLeave} on:mouseleave={handleLeave}>
-

+

{customEvent.title}

From 772c7f8f634a69facd7dd7b5e357611545c0c689 Mon Sep 17 00:00:00 2001 From: Angela Cai Date: Fri, 28 Nov 2025 00:19:47 -0500 Subject: [PATCH 05/17] Revert "Completely vibe coded handle bar of death" This reverts commit 53c6859c4d7099f3b5422689290139936a7f4615. --- apps/web/src/lib/components/recal/Left.svelte | 179 +++--------------- 1 file changed, 25 insertions(+), 154 deletions(-) diff --git a/apps/web/src/lib/components/recal/Left.svelte b/apps/web/src/lib/components/recal/Left.svelte index 882be35a..a9734fb0 100644 --- a/apps/web/src/lib/components/recal/Left.svelte +++ b/apps/web/src/lib/components/recal/Left.svelte @@ -3,178 +3,49 @@ import SearchResults from "./left/SearchResults.svelte"; import SearchBar from "./left/SearchBar.svelte"; import Events from "./left/Events.svelte"; - import { onMount } from "svelte"; - - // --- Split logic between Saved and SearchResults --- - - let savedHeight = 200; // initial Saved height in px - const MIN_SAVED = 80; // minimum Saved height - const MIN_RESULTS = 120; // minimum Results height - - let splitEl: HTMLDivElement | null = null; - - let dragging = false; - let startY = 0; - let startHeight = 0; - - function onPointerDown(e: PointerEvent) { - e.preventDefault(); - dragging = true; - startY = e.clientY; - startHeight = savedHeight; - - window.addEventListener("pointermove", onPointerMove); - window.addEventListener("pointerup", onPointerUp); - window.addEventListener("pointercancel", onPointerUp); - } - - function onPointerMove(e: PointerEvent) { - if (!dragging || !splitEl) return; - - const dy = e.clientY - startY; - const containerHeight = splitEl.getBoundingClientRect().height; - - const maxSaved = Math.max(MIN_SAVED, containerHeight - MIN_RESULTS); - const next = startHeight + dy; - - savedHeight = Math.max(MIN_SAVED, Math.min(maxSaved, next)); - } - - function onPointerUp(_e: PointerEvent) { - if (!dragging) return; - - dragging = false; - window.removeEventListener("pointermove", onPointerMove); - window.removeEventListener("pointerup", onPointerUp); - window.removeEventListener("pointercancel", onPointerUp); - } - - // Clamp Saved height whenever the split container resizes - onMount(() => { - if (!splitEl || typeof ResizeObserver === "undefined") return; - - const ro = new ResizeObserver((entries) => { - const entry = entries[0]; - if (!entry) return; - - const height = entry.contentRect.height; - const maxSaved = Math.max(MIN_SAVED, height - MIN_RESULTS); - - if (savedHeight > maxSaved) { - savedHeight = maxSaved; - } - }); - - ro.observe(splitEl); - - return () => { - ro.disconnect(); - }; - });
- -
-
+
+
- - -
-
-
- -
- - +
+ +
+
+
From 55e7158750a98ef850bcfc5c83ffc7511262d09e Mon Sep 17 00:00:00 2001 From: Angela Cai Date: Fri, 28 Nov 2025 00:23:53 -0500 Subject: [PATCH 06/17] accidental typo --- .../web/src/lib/components/recal/left/elements/EventCard.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte index ed9d8d05..fd6d750b 100644 --- a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte +++ b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte @@ -47,7 +47,7 @@ on:blur={handleLeave} on:mouseleave={handleLeave}>
-

+

{customEvent.title}

From c3d41339c60680e3d40d9191e9191088d4be8d20 Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:13:23 -0500 Subject: [PATCH 07/17] basic handlebar --- apps/web/src/lib/components/recal/Left.svelte | 159 ++++++++++++++---- .../components/recal/left/Handlebar.svelte | 119 +++++++++++++ apps/web/src/lib/stores/styles.ts | 30 ++++ 3 files changed, 271 insertions(+), 37 deletions(-) create mode 100644 apps/web/src/lib/components/recal/left/Handlebar.svelte diff --git a/apps/web/src/lib/components/recal/Left.svelte b/apps/web/src/lib/components/recal/Left.svelte index a9734fb0..3821423b 100644 --- a/apps/web/src/lib/components/recal/Left.svelte +++ b/apps/web/src/lib/components/recal/Left.svelte @@ -1,51 +1,136 @@
-
-
- +
+ +
+
+ +
+
+ +
-
- -
-
- -
-
-
- - + + {#if hasSearchResults} +
+ +
+ {/if} +
+
diff --git a/apps/web/src/lib/components/recal/left/Handlebar.svelte b/apps/web/src/lib/components/recal/left/Handlebar.svelte new file mode 100644 index 00000000..41cb55ae --- /dev/null +++ b/apps/web/src/lib/components/recal/left/Handlebar.svelte @@ -0,0 +1,119 @@ + + + +
(isHovering = true)} + on:pointerleave={() => { + if (!isDragging) isHovering = false; + }} + on:pointerdown={handlePointerDown} + on:pointermove={handlePointerMove} + on:pointerup={handlePointerUp} + on:pointercancel={handlePointerUp} + on:dblclick={handleDoubleClick} +> + +
+ + +
+ + + + +
+
+ + diff --git a/apps/web/src/lib/stores/styles.ts b/apps/web/src/lib/stores/styles.ts index 6c9f82e1..b8929a48 100644 --- a/apps/web/src/lib/stores/styles.ts +++ b/apps/web/src/lib/stores/styles.ts @@ -36,6 +36,36 @@ export const showCal = writable(true); export const isEventOpen = writable(false); +// Resize ratio for left panel sections (0.0 to 1.0) +// Represents the fraction of available space given to the top section (Events + Saved) +// null means "auto" - use content-based default +function createSectionRatio() { + const store = writable( + typeof window !== "undefined" + ? JSON.parse(localStorage.getItem("sectionRatio") ?? "null") + : null + ); + + return { + subscribe: store.subscribe, + update: store.update, + set: (value: number | null) => { + store.set(value); + if (value === null) { + localStorage.removeItem("sectionRatio"); + } else { + localStorage.setItem("sectionRatio", JSON.stringify(value)); + } + }, + reset: () => { + store.set(null); + localStorage.removeItem("sectionRatio"); + } + }; +} + +export const sectionRatio = createSectionRatio(); + export type CalColors = { "-1": string; "0": string; From 7e612f0775b679e70263f68a2346db00e15a6ff9 Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:15:07 -0500 Subject: [PATCH 08/17] Fix scrolling isseu --- apps/web/src/lib/components/recal/Left.svelte | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/web/src/lib/components/recal/Left.svelte b/apps/web/src/lib/components/recal/Left.svelte index 3821423b..21efef67 100644 --- a/apps/web/src/lib/components/recal/Left.svelte +++ b/apps/web/src/lib/components/recal/Left.svelte @@ -25,7 +25,7 @@ const EVENTS_HEADER_HEIGHT = 24; const SAVED_HEADER_HEIGHT = 28; const SEARCH_HEADER_HEIGHT = 28; - const CARD_HEIGHT = 75; // Average height per course card + const CARD_HEIGHT = 65; // Average height per course card const INNER_GAP = 8; onMount(() => { @@ -107,12 +107,14 @@ class="flex-1 overflow-y-hidden mt-2 flex flex-col gap-2">
-
+
@@ -127,7 +129,8 @@ {#if hasSearchResults}
From 3b9fa2c2ba0221e10cc5748d4cbf8505b6f3d351 Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:22:38 -0500 Subject: [PATCH 09/17] So incredibly close --- apps/web/src/lib/components/recal/Left.svelte | 63 ++++++++++--------- .../lib/components/recal/left/Saved.svelte | 20 +++++- .../recal/left/SearchResults.svelte | 21 ++++++- 3 files changed, 70 insertions(+), 34 deletions(-) diff --git a/apps/web/src/lib/components/recal/Left.svelte b/apps/web/src/lib/components/recal/Left.svelte index 21efef67..e7afd10c 100644 --- a/apps/web/src/lib/components/recal/Left.svelte +++ b/apps/web/src/lib/components/recal/Left.svelte @@ -1,31 +1,30 @@ {#key saved && $recal} {#if saved && $ready}
@@ -44,7 +62,7 @@ {#if saved.length > 0}
-
+
{#key saved && colorChange} {#each saved as course} diff --git a/apps/web/src/lib/components/recal/left/SearchResults.svelte b/apps/web/src/lib/components/recal/left/SearchResults.svelte index e054dc68..b3f2634d 100644 --- a/apps/web/src/lib/components/recal/left/SearchResults.svelte +++ b/apps/web/src/lib/components/recal/left/SearchResults.svelte @@ -1,13 +1,30 @@ {#if $searchResults.length > 0} -
+
{$searchResults.length} Search {$searchResults.length === 1 ? "Result" : "Results"}
@@ -17,7 +34,7 @@ class="flex flex-col overflow-y-hidden border-2 dark:border-zinc-800 rounded-sm"> -
+
{#key resetKey} {#each $searchResults as course} From 6c97110ad056e54e0fa715cdd133599b739015c5 Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:30:13 -0500 Subject: [PATCH 10/17] Fix base height with no handlebar --- apps/web/src/lib/components/recal/Left.svelte | 40 +++++++++++-------- .../components/recal/left/Handlebar.svelte | 37 ++++++----------- 2 files changed, 37 insertions(+), 40 deletions(-) diff --git a/apps/web/src/lib/components/recal/Left.svelte b/apps/web/src/lib/components/recal/Left.svelte index e7afd10c..04f91b06 100644 --- a/apps/web/src/lib/components/recal/Left.svelte +++ b/apps/web/src/lib/components/recal/Left.svelte @@ -28,7 +28,7 @@ const INNER_GAP = 8; onMount(() => { - const resizeObserver = new ResizeObserver((entries) => { + const resizeObserver = new ResizeObserver(entries => { for (const entry of entries) { availableHeight = entry.contentRect.height; } @@ -52,7 +52,8 @@ // Show handlebar when there are search results AND content would overflow $: hasSearchResults = $searchResults.length > 0; $: totalContent = topContentHeight + bottomContentHeight + INNER_GAP; - $: showHandlebar = !$isMobile && hasSearchResults && totalContent > availableHeight; + $: showHandlebar = + !$isMobile && hasSearchResults && totalContent > availableHeight; // Calculate usable height (minus handlebar and gaps when shown) $: usableHeight = showHandlebar @@ -60,22 +61,28 @@ : availableHeight; // Content-based ratio constraints (using measured heights) - $: maxRatio = usableHeight > 0 - ? Math.min(BASE_MAX_RATIO, topContentHeight / usableHeight) - : BASE_MAX_RATIO; - $: minRatio = usableHeight > 0 - ? Math.max(BASE_MIN_RATIO, 1 - (bottomContentHeight / usableHeight)) - : BASE_MIN_RATIO; + $: maxRatio = + usableHeight > 0 + ? Math.min(BASE_MAX_RATIO, topContentHeight / usableHeight) + : BASE_MAX_RATIO; + $: minRatio = + usableHeight > 0 + ? Math.max(BASE_MIN_RATIO, 1 - bottomContentHeight / usableHeight) + : BASE_MIN_RATIO; // Default ratio based on content proportions function getDefaultRatio(): number { if (topContentHeight + bottomContentHeight === 0) return 0.5; - const ratio = topContentHeight / (topContentHeight + bottomContentHeight); + const ratio = + topContentHeight / (topContentHeight + bottomContentHeight); return Math.max(minRatio, Math.min(maxRatio, ratio)); } // Get effective ratio (user-set or default), clamped to valid range - $: effectiveRatio = Math.max(minRatio, Math.min(maxRatio, $sectionRatio ?? getDefaultRatio())); + $: effectiveRatio = Math.max( + minRatio, + Math.min(maxRatio, $sectionRatio ?? getDefaultRatio()) + ); // Calculate heights $: rawTopHeight = Math.round(usableHeight * effectiveRatio); @@ -93,7 +100,10 @@ sectionRatio.reset(); } else { // Constrain to content-based bounds - const clampedRatio = Math.max(minRatio, Math.min(maxRatio, e.detail.ratio)); + const clampedRatio = Math.max( + minRatio, + Math.min(maxRatio, e.detail.ratio) + ); sectionRatio.set(clampedRatio); } } @@ -108,9 +118,7 @@ class="flex-1 overflow-y-hidden mt-2 flex flex-col gap-2">
@@ -130,8 +138,8 @@ {#if hasSearchResults}
diff --git a/apps/web/src/lib/components/recal/left/Handlebar.svelte b/apps/web/src/lib/components/recal/left/Handlebar.svelte index 41cb55ae..fddbae5a 100644 --- a/apps/web/src/lib/components/recal/left/Handlebar.svelte +++ b/apps/web/src/lib/components/recal/left/Handlebar.svelte @@ -1,5 +1,5 @@ @@ -59,19 +60,17 @@ on:pointermove={handlePointerMove} on:pointerup={handlePointerUp} on:pointercancel={handlePointerUp} - on:dblclick={handleDoubleClick} -> + on:dblclick={handleDoubleClick}> -
+
-
+
+ class="w-3 h-3"> @@ -93,11 +92,6 @@ @apply bg-zinc-300 dark:bg-zinc-600; @apply transition-opacity duration-150; height: 2px; - opacity: 0; - } - - .handlebar-line.visible { - opacity: 1; } .handlebar-pill { @@ -106,11 +100,6 @@ @apply transition-opacity duration-150; width: 36px; height: 12px; - opacity: 0; - } - - .handlebar-pill.visible { - opacity: 1; } .handlebar-pill svg { From 7e14a800676f3e33ec990c10ff45ff83a272bc4a Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:33:54 -0500 Subject: [PATCH 11/17] stablize scrollbar gutter --- apps/web/src/lib/components/recal/left/Saved.svelte | 2 +- apps/web/src/lib/components/recal/left/SearchResults.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/lib/components/recal/left/Saved.svelte b/apps/web/src/lib/components/recal/left/Saved.svelte index d7c9ed17..93544b00 100644 --- a/apps/web/src/lib/components/recal/left/Saved.svelte +++ b/apps/web/src/lib/components/recal/left/Saved.svelte @@ -62,7 +62,7 @@ {#if saved.length > 0}
-
+
{#key saved && colorChange} {#each saved as course} diff --git a/apps/web/src/lib/components/recal/left/SearchResults.svelte b/apps/web/src/lib/components/recal/left/SearchResults.svelte index b3f2634d..c4f707b5 100644 --- a/apps/web/src/lib/components/recal/left/SearchResults.svelte +++ b/apps/web/src/lib/components/recal/left/SearchResults.svelte @@ -34,7 +34,7 @@ class="flex flex-col overflow-y-hidden border-2 dark:border-zinc-800 rounded-sm"> -
+
{#key resetKey} {#each $searchResults as course} From 1566592e351a0923cd6f81aec0c9a0f7c8ae2604 Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:35:47 -0500 Subject: [PATCH 12/17] Fix type errors and fmt --- apps/web/src/app.html | 19 +++++++++++++++---- .../lib/components/recal/left/Events.svelte | 8 ++++++-- .../lib/components/recal/left/Saved.svelte | 7 +++++-- .../recal/left/SearchResults.svelte | 11 ++++++++--- .../recal/left/elements/EventCard.svelte | 6 +++++- apps/web/static/site.webmanifest | 2 +- 6 files changed, 40 insertions(+), 13 deletions(-) diff --git a/apps/web/src/app.html b/apps/web/src/app.html index 8d0d25d5..5ec4ec57 100644 --- a/apps/web/src/app.html +++ b/apps/web/src/app.html @@ -3,10 +3,21 @@ - - - - + + + + %sveltekit.head% {#if $searchResults.length > 0} -
+
{$searchResults.length} Search {$searchResults.length === 1 ? "Result" : "Results"}
@@ -34,7 +36,10 @@ class="flex flex-col overflow-y-hidden border-2 dark:border-zinc-800 rounded-sm"> -
+
{#key resetKey} {#each $searchResults as course} diff --git a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte index fd6d750b..e50775e7 100644 --- a/apps/web/src/lib/components/recal/left/elements/EventCard.svelte +++ b/apps/web/src/lib/components/recal/left/elements/EventCard.svelte @@ -47,7 +47,11 @@ on:blur={handleLeave} on:mouseleave={handleLeave}>
-

+

{customEvent.title}

diff --git a/apps/web/static/site.webmanifest b/apps/web/static/site.webmanifest index bd656c03..301fb502 100644 --- a/apps/web/static/site.webmanifest +++ b/apps/web/static/site.webmanifest @@ -16,4 +16,4 @@ "theme_color": "#ffffff", "background_color": "#ffffff", "display": "standalone" -} \ No newline at end of file +} From 44d0bebb06b2eff3f3e14f0d5735db180c684a92 Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:39:40 -0500 Subject: [PATCH 13/17] Fix Top.svelte not changing colors on theme change --- apps/web/src/lib/components/recal/Top.svelte | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/web/src/lib/components/recal/Top.svelte b/apps/web/src/lib/components/recal/Top.svelte index f5bce35a..e3ea9de4 100644 --- a/apps/web/src/lib/components/recal/Top.svelte +++ b/apps/web/src/lib/components/recal/Top.svelte @@ -19,7 +19,12 @@ import { SCHEDULE_CAP } from "$lib/constants"; import { modalStore } from "$lib/stores/modal"; import { savedCourses } from "$lib/stores/rpool"; - import { getStyles, isMobile, showCal } from "$lib/stores/styles"; + import { + calColors, + getStyles, + isMobile, + showCal + } from "$lib/stores/styles"; import { toastStore } from "$lib/stores/toast"; import confetti from "canvas-confetti"; import { getContext } from "svelte"; @@ -107,9 +112,9 @@ }); }; - // Handle theme changes - $: cssVarStyles = getStyles("0"); - $: eventStyles = getStyles("6"); + // Handle theme changes (reference $calColors to establish reactive dependency) + $: cssVarStyles = ($calColors, getStyles("0")); + $: eventStyles = ($calColors, getStyles("6"));
Date: Mon, 1 Dec 2025 10:50:12 -0500 Subject: [PATCH 14/17] New themes --- .../components/general/style/Palette.svelte | 8 +- apps/web/src/lib/components/recal/Top.svelte | 9 ++- apps/web/src/lib/scripts/ReCal+/palettes.ts | 80 +++++++++---------- 3 files changed, 54 insertions(+), 43 deletions(-) diff --git a/apps/web/src/lib/components/general/style/Palette.svelte b/apps/web/src/lib/components/general/style/Palette.svelte index d66ba29d..68b686ca 100644 --- a/apps/web/src/lib/components/general/style/Palette.svelte +++ b/apps/web/src/lib/components/general/style/Palette.svelte @@ -28,7 +28,13 @@ {} ) as CalColors; - if (title === "Midnight" || title === "Cobalt" || title === "Shadow") + if ( + title === "Midnight" || + title === "Cobalt" || + title === "Shadow" || + title === "Crimson" || + title === "Aurora" + ) darkTheme.set(true); else darkTheme.set(false); diff --git a/apps/web/src/lib/components/recal/Top.svelte b/apps/web/src/lib/components/recal/Top.svelte index e3ea9de4..c003575b 100644 --- a/apps/web/src/lib/components/recal/Top.svelte +++ b/apps/web/src/lib/components/recal/Top.svelte @@ -113,8 +113,13 @@ }; // Handle theme changes (reference $calColors to establish reactive dependency) - $: cssVarStyles = ($calColors, getStyles("0")); - $: eventStyles = ($calColors, getStyles("6")); + let cssVarStyles: string; + let eventStyles: string; + $: { + $calColors; + cssVarStyles = getStyles("0"); + eventStyles = getStyles("6"); + }
= { "6": "#bdb2ff", "E": "#fff0f0" }, - Grass: { + Coastal: { "-1": "#e6e6e6", - "0": "#ebf4e2", - "1": "#e1eed3", - "2": "#d3e6be", - "3": "#cde2b6", - "4": "#c3dca7", - "5": "#b9d798", - "6": "#afd189", - "E": "#f0f8e6" + "0": "#b8e0d2", + "1": "#d6eadf", + "2": "#eac4d5", + "3": "#f9e2ae", + "4": "#95d5b2", + "5": "#a2d2ff", + "6": "#cdb4db", + "E": "#f0f9f4" }, - Ice: { + Sunset: { "-1": "#e6e6e6", - "0": "#edf2fb", - "1": "#e2eafc", - "2": "#d7e3fc", - "3": "#ccdbfd", - "4": "#c1d3fe", - "5": "#b6ccfe", - "6": "#abc4ff", - "E": "#f0f8ff" + "0": "#ffecd2", + "1": "#ffd6a5", + "2": "#fdcfe8", + "3": "#fff5ba", + "4": "#c8f7dc", + "5": "#d4e4f7", + "6": "#e8d4f7", + "E": "#fff8f0" }, Minty: { "-1": "#e6e6e6", @@ -70,17 +70,6 @@ export const colorPalettes: Record = { "6": "#aab2ff", "E": "#e6fff0" }, - Pink: { - "-1": "#e6e6e6", - "0": "#ffecee", - "1": "#ffe0e6", - "2": "#ffd4de", - "3": "#ffc9d6", - "4": "#febdce", - "5": "#feb1c6", - "6": "#fea5be", - "E": "#fff0f5" - }, Sweet: { "-1": "#e6e6e6", "0": "#f5cbd9", @@ -103,17 +92,6 @@ export const colorPalettes: Record = { "6": "#d3f3f1", "E": "#fff5f0" }, - Royal: { - "-1": "#e6e6e6", - "0": "#9d80cb", - "1": "#ac8bd0", - "2": "#bb96d4", - "3": "#caa1d9", - "4": "#d9acdd", - "5": "#e8b7e2", - "6": "#f7c2e6", - "E": "#f8f0ff" - }, Forest: { "-1": "#A8A8A8", "0": "#A8B1A9", @@ -136,6 +114,28 @@ export const colorPalettes: Record = { "6": "#8399a2", "E": "#f0f5f7" }, + Aurora: { + "-1": "#A8A8A8", + "0": "#1a5c5c", + "1": "#6b4a0a", + "2": "#6b1a4a", + "3": "#1a5c2e", + "4": "#6b3a1a", + "5": "#1a3a6b", + "6": "#4a1a6b", + "E": "#1a2a3a" + }, + Crimson: { + "-1": "#A8A8A8", + "0": "#4a0d1c", + "1": "#5c1024", + "2": "#6e132c", + "3": "#801634", + "4": "#92193c", + "5": "#a41c44", + "6": "#b61f4c", + "E": "#2e0812" + }, Midnight: { "-1": "#A8A8A8", "0": "#295270", From 9cb426a9842e13d28430069ab4fcd02689f74369 Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:51:13 -0500 Subject: [PATCH 15/17] Rename original to legacy --- apps/web/src/lib/scripts/ReCal+/palettes.ts | 42 ++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/apps/web/src/lib/scripts/ReCal+/palettes.ts b/apps/web/src/lib/scripts/ReCal+/palettes.ts index 7f35f758..b2a79d87 100644 --- a/apps/web/src/lib/scripts/ReCal+/palettes.ts +++ b/apps/web/src/lib/scripts/ReCal+/palettes.ts @@ -3,18 +3,6 @@ import type { CalColors } from "$lib/stores/styles"; // Title -> CalColors export const colorPalettes: Record = { - // From ReCal - Original: { - "-1": "#e6e6e6", - "0": "#D0DECF", - "1": "#d5dcec", - "2": "#ebd2db", - "3": "#faf4cb", - "4": "#e7dcce", - "5": "#d1e7e4", - "6": "#dcd5e2", - "E": "#e6e8f0" - }, Bright: { "-1": "#a8a8a8", "0": "#9ee09e", @@ -26,16 +14,17 @@ export const colorPalettes: Record = { "6": "#cc99c8", "E": "#e0e8f0" }, - Crayon: { + // From the original ReCal + Legacy: { "-1": "#e6e6e6", - "0": "#ffadad", - "1": "#ffd6a5", - "2": "#fdffb6", - "3": "#caffbf", - "4": "#9bf6ff", - "5": "#a0c4ff", - "6": "#bdb2ff", - "E": "#fff0f0" + "0": "#D0DECF", + "1": "#d5dcec", + "2": "#ebd2db", + "3": "#faf4cb", + "4": "#e7dcce", + "5": "#d1e7e4", + "6": "#dcd5e2", + "E": "#e6e8f0" }, Coastal: { "-1": "#e6e6e6", @@ -59,6 +48,17 @@ export const colorPalettes: Record = { "6": "#e8d4f7", "E": "#fff8f0" }, + Crayon: { + "-1": "#e6e6e6", + "0": "#ffadad", + "1": "#ffd6a5", + "2": "#fdffb6", + "3": "#caffbf", + "4": "#9bf6ff", + "5": "#a0c4ff", + "6": "#bdb2ff", + "E": "#fff0f0" + }, Minty: { "-1": "#e6e6e6", "0": "#84ffc9", From a4de8e4fdea3c5d78038334df70e5fed145e13ff Mon Sep 17 00:00:00 2001 From: Joshua Lau Date: Mon, 1 Dec 2025 10:55:44 -0500 Subject: [PATCH 16/17] Let text overflow CalBox container instead of scrolling --- apps/web/src/lib/components/recal/calendar/CalBox.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/lib/components/recal/calendar/CalBox.svelte b/apps/web/src/lib/components/recal/calendar/CalBox.svelte index 86ca6428..0abe2fdc 100644 --- a/apps/web/src/lib/components/recal/calendar/CalBox.svelte +++ b/apps/web/src/lib/components/recal/calendar/CalBox.svelte @@ -150,7 +150,7 @@