Skip to content

BoG F25 + S26#437

Open
uma-anand wants to merge 37 commits intomainfrom
course-page-do-over
Open

BoG F25 + S26#437
uma-anand wants to merge 37 commits intomainfrom
course-page-do-over

Conversation

@uma-anand
Copy link
Member

No description provided.

emilyliublair and others added 30 commits November 3, 2025 21:29
### Summary

Resolves #377 

### How to Test
1. Courses already added change color to selected color palette
2. Default palette displayed for new schedule versions
3. getRandomColor works
4. compare schedule uses user's currently selected palette

---------

Co-authored-by: DanielChee <128537022+DanielChee@users.noreply.github.com>
Co-authored-by: Uma Anand <63426041+uma-anand@users.noreply.github.com>
Co-authored-by: Uma Anand <uma2005anand@gmail.com>
Co-authored-by: Alexa Fazio <45372449+afazio1@users.noreply.github.com>
Co-authored-by: afazio1 <alexa.fazio04@gmail.com>
Implemented a hook that adds a comma separated list (non case sensitive)
to the desired courses tab on the side.

Testing: Created a button to run the hook with some test courses (not
committed of course, so attaching screenshots).
![WhatsApp Image 2025-11-02 at 01 16
23_4c259637](https://github.com/user-attachments/assets/9e24711d-484d-41ce-baae-f91020e9e549)
![WhatsApp Image 2025-11-02 at 01 16
46_7de4b689](https://github.com/user-attachments/assets/36c24d52-ddcf-460b-93f1-1bb0e69dfe1e)
![WhatsApp Image 2025-11-02 at 01 17
11_d505a76d](https://github.com/user-attachments/assets/8ed2f53f-e64c-4696-9b05-cf0de643787d)
### Summary

Resolves #353 

<!-- What does this PR change and why? Discuss any breaking changes. -->

caches seating info and removes tooltip from existing design.
conditionally renders seat and waitlist info based on color of
background.

### How to Test

flame my code
but my functionality is flawless
bog

---------

Co-authored-by: Uma Anand <63426041+uma-anand@users.noreply.github.com>
Co-authored-by: Uma Anand <uma2005anand@gmail.com>
### Summary

- wrong font color
- incorrect padding




### How to Test
Deploy preview

---------

Co-authored-by: Uma Anand <uma2005anand@gmail.com>
### Summary

Resolves #354

This is a long commit. Everything described in the issue has been
implemented except for the map auto focusing on click.

A few notes: 
1. The design and the frontend for locations not specified are not
exactly 1-1 (had already worked on this before getting access to the
design - can change though).
2. Minor differences in design for the location picker component.
3. There is a 300 line variable which has all GT locations which the
location search can prioritize. I could not pull everything from the
crawler because some non-class location don't exist on it (e.g. Bobby
Dodd). It works really good though. (have to merge this constant with
the course locations constant linked in the issue).
4. To implement the location picker, our mapbox usage will double. The
first API call manages the search (/suggest) , and now the second API
call will extract the lat and long of the specific location the user
adds (/retrieve).

Screenshots
<img width="1685" height="983" alt="image"
src="https://github.com/user-attachments/assets/586a4e91-01c6-4ed7-b474-5edea232b330"
/>
<img width="1687" height="983" alt="image"
src="https://github.com/user-attachments/assets/1149ad0d-84e7-4fcb-8a0f-02ed33d301b9"
/>
<img width="1691" height="981" alt="image"
src="https://github.com/user-attachments/assets/0aa4feb6-2759-42cf-8f76-df910f4564f6"
/>
NYC trip appears only on zooming out manually.

---------

Co-authored-by: Uma Anand <uma2005anand@gmail.com>
### Summary

Resolves #364

<!-- What does this PR change and why? Discuss any breaking changes. -->
Adds min travel time option to schedule combination dropdown.

- Used MapBox API to generate distance array.
- `GT_LOCATIONS` array has some duplicate/different names for locations.
- Uses Oliver's PR's code for consistency.

### Checklist

- [x] Copy over the latitudes longitudes used in Ritwic's ticket to
`src/mapConstants`
- [x] Use the [MapBox Matrix
API](https://docs.mapbox.com/api/navigation/matrix/) once to get a
matrix of distances between all the possible class locations, store this
in the `src/mapConsts` file
- [x] Create a new sorting option in
[`src/data/beans/Oscar`](https://github.com/gt-scheduler/website/blob/594219a8b0985d9d79071558ab737e0161cbf1cd/src/data/beans/Oscar.ts#L177)
to sort by the sum of time taken to go from each location to the next
location on a particular day. This should automatically add it to the
combination container without you having to specify it.


### How to Test
<!-- Describe how to test your code. -->
Tested by starting a development instance with `npm start` and using the
option to create schedules. This assumes the MapBox distances are 100%
accurate.
## Summary

Resolves #368 

This PR fixes a long-standing UX issue where the mobile navigation
drawer remained open after selecting a tab. The expected behavior is
that tapping a navigation item both (a) switches the active tab and (b)
closes the drawer to reveal content. After this change, the drawer now
closes immediately on selection.

Despite early guidance that this would be a “one-line fix,” the actual
implementation required a modest four-line update to correctly wire the
close action alongside the tab change. The end result is simple and
predictable behavior with minimal code churn.



## Background
**Previous behavior:**  
- On mobile, opening the drawer and tapping a tab changed the active tab
but left the drawer visible.
- Users had to manually dismiss the drawer to view content, adding an
extra step.

**Desired behavior:**  
- Selecting a tab should immediately close the drawer so the newly
selected view is visible.



## Implementation
- Added the drawer close action to the same click path that handles tab
changes.
- Kept the change localized to the navigation event handler used by the
mobile drawer flow.
- No layout, styling, or rendering changes were required.
- Total changes: **~4 lines** (handler composition + minor wiring).

*(Yes, the “1-line fix” characterization turned out to be optimistic.)*



## Behavior Changes
- **Mobile:** Selecting any navigation item now closes the drawer
immediately after switching the tab.
- **Desktop:** Unchanged. The drawer is not used; tab switching works as
before.
- **No regressions** to keyboard navigation or pointer interactions were
observed.



## Rationale
- Reduces friction: one tap performs the full navigation action.
- Aligns with common mobile drawer patterns.
- Keeps logic in one place, which is easier to maintain and reason
about.



## QA / Verification Steps
1. On a mobile-sized viewport, open the drawer.
2. Tap each tab in turn:
   - The active tab updates.
   - The drawer closes immediately.
3. Reopen the drawer and select the currently active tab:
   - No errors; drawer still closes.
4. Switch to a desktop-sized viewport:
   - Drawer controls are hidden.
   - Tab switching continues to work normally.
### Summary

Resolves #366 

extend the scheduler’s active hours from 8 AM–10 PM to 6 AM–11:59 PM.
OPEN and CLOSE constants in src/constants.ts were updated to 60*6 and
60*24 - 1, and the calendar height was increased from 920px to 1180px to
fit the new timeframe and make sure event blocks remained the same
height.

Additionally fixed bug where a ghost event drag (transparent block)
would remain on the screen after a quick drag-and-release. The drag
logic now cancels pending animation frames so the draft always
disappears immediately.


### How to Test

NEW: add a 50 minute class and make sure prof name doesn't overflow
(ensure event block height isnt smushed)
adding recurring events (manually or dragging to create)
dragging to move recurring events
mobile
schedule export
.ics export
### Summary

Resolves #356 
- Modified the Oscar beans class to retrieve planned counts and store
it. I had to modify the constructor setup for this, because we want the
planned counts to be fetched before creating the Course beans.
- Modified Course and Section beans classes to contain field
`plannedCount` that stores the planned count for that course or section

### Checklist

- [x] Add a method(s) in the beans/ classes to retrieve the the
aggregate count information.
- [x] Update Course and Section types to contain this metric.


### How to Test
Deployed new cloud function to dev db and ran website locally. I used
console.log() to print the counts assigned to each section/course and
made sure it matched the count calculated by the function.

---------

Co-authored-by: Alexa Fazio <45372449+afazio1@users.noreply.github.com>
Implemented the discard button as per the issue.
<img width="1658" height="1202" alt="image"
src="https://github.com/user-attachments/assets/ca15c402-4484-4dfe-880f-4cb7101c8397"
/>

---------

Co-authored-by: Alexa Fazio <45372449+afazio1@users.noreply.github.com>
Resolves #377

1. Courses already added change color to selected color palette
2. Default palette displayed for new schedule versions
3. getRandomColor works
4. compare schedule uses user's currently selected palette

---------

Co-authored-by: DanielChee <128537022+DanielChee@users.noreply.github.com>
Co-authored-by: Uma Anand <63426041+uma-anand@users.noreply.github.com>
Co-authored-by: Uma Anand <uma2005anand@gmail.com>
Co-authored-by: Alexa Fazio <45372449+afazio1@users.noreply.github.com>
Co-authored-by: afazio1 <alexa.fazio04@gmail.com>
Implemented a hook that adds a comma separated list (non case sensitive)
to the desired courses tab on the side.

Testing: Created a button to run the hook with some test courses (not
committed of course, so attaching screenshots).
![WhatsApp Image 2025-11-02 at 01 16
23_4c259637](https://github.com/user-attachments/assets/9e24711d-484d-41ce-baae-f91020e9e549)
![WhatsApp Image 2025-11-02 at 01 16
46_7de4b689](https://github.com/user-attachments/assets/36c24d52-ddcf-460b-93f1-1bb0e69dfe1e)
![WhatsApp Image 2025-11-02 at 01 17
11_d505a76d](https://github.com/user-attachments/assets/8ed2f53f-e64c-4696-9b05-cf0de643787d)
### Summary

This PR changes the phrase "delivery mode" to be "class format" as
requested by exec in the GT-Scheduler Changes for this semester. It
hasn't been done yet and didn't need a ticket to be completed since it
literally changes two words.

Co-authored-by: Spencer Banko <spencer@lockchain.io>
### Summary

Resolves #396 

adds location in a new line in Map tab sidebar

### How to Test
add a class and section with a location
check location appears in Map tab

---------

Co-authored-by: afazio1 <alexa.fazio04@gmail.com>
### Summary

Resolves #404 

Uses `daysToString` util on the `course.daysOfWeek` to correctly order
days in the DaySelection component.
### Summary

Resolves #383

Fixes overflow state for recurring events that are too small. excluded
location on desktop and mobile

### How to Test
Copy Uma's exact location here:
<img width="299" height="207" alt="image"
src="https://github.com/user-attachments/assets/83008c6f-ce84-4f14-8e23-d1af4a47a13e"
/>


make sure it doesn't overflow

play around with other times in desktop and mobile to make sure it
doesn't overflow.
### Summary

Resolves #365
Add travel times to map view

Co-authored-by: Uma Anand <uma2005anand@gmail.com>
### Summary

Resolves #400 

https://www.gt-scheduler.org/#/?courses=CS1332,MATH3012

ImportCoursesModal should pop up. Then, a user can confirm or deny
importing the courses. This will **append** to `desiredCourses` and it
will not add courses that cannot be found in `oscar.courses`.


### How to Test
Append `?courses=CS1332,MATH3012` to the deploy preview url.

https://www.gt-scheduler.org/pr-preview/pr-412/#/?courses=CS1332,MATH3012
### Summary

Resolves #382 

<!-- What does this PR change and why? Discuss any breaking changes. -->
This PR makes the following 4 places show correct **section title** as
**course name** for 8803 special topics courses:
1. SectionBlocks
2. CompareBlocks
3. Map list
4. Calendar export text

### Note: Merge Order
Merge **this** PR after the [corresponding backend
PR](gt-scheduler/crawler-v2#46).
This PR includes a fallback, so merging out of order won’t break builds,
but this order is preferred.

### Checklist

- [x] fix: Special Topics courses show incorrect titles


### How to Test
<!-- Describe how to test your code. -->
```zsh
yarn start
```
1. SectionBlocks
<img width="334" height="216" alt="image"
src="https://github.com/user-attachments/assets/d9cb531b-931a-4c6a-8cc7-c419b1538998"
/>

2. CompareBlocks
<img width="362" height="238" alt="image"
src="https://github.com/user-attachments/assets/93b68480-eb4c-4b30-8cbb-d12509e14ead"
/>

3. Map list
<img width="273" height="164" alt="image"
src="https://github.com/user-attachments/assets/559ad8dd-8df7-4209-87ad-79db0634ce27"
/>

4. Calendar export text
<img width="379" height="130" alt="image"
src="https://github.com/user-attachments/assets/2526d38a-4d6e-4de4-8d71-d24bb506449d"
/>

---------

Co-authored-by: Uma Anand <63426041+uma-anand@users.noreply.github.com>
Co-authored-by: Uma Anand <uma2005anand@gmail.com>
### Summary
As part of the new Course Details Page, we want to enable a new toggle
to view course details. This PR adds the ability to toggle to a new
context as well as creates the components necessary for the visual
aspect of this (the button).

Currently we use a placeholder for the course details page before we go
ahead with the implementation.

Note that we are still waiting on light mode designs (eta next week) so
this only works on dark.

For mobile to avoid problems with indices I also changed the way we did
tabs (using indices) to using values (strings so not bulky and equality
holds).

### How to Test
[Deploy
Preview](https://gt-scheduler.github.io/website/pr-preview/pr-419/)

`yarn start`

<img width="1787" height="858" alt="image"
src="https://github.com/user-attachments/assets/a6f593ae-c9cd-41ec-8333-9bd92b486d43"
/>
<img width="1892" height="855" alt="image"
src="https://github.com/user-attachments/assets/7f7d0eda-8b2f-4100-a372-1fe560fac93d"
/>


Mobile
<img width="352" height="617" alt="image"
src="https://github.com/user-attachments/assets/c84799b2-8be3-4bdc-84c6-80268cb1e5ca"
/>
### Summary
This PR contains the two different landings when one navigates to the
course details tab. One is a page for Empty Course details (ie, when the
user has no selected courses). The other has a list of info cards for
each course the user has added to the schedule.

With regards to the information, this PR hasn't added corequisites, the
actual metrics, and descriptions yet- the ones currently present are
placeholders. However the styles for everything are accurate to Figma.
Light mode designs are still a WIP. This code does have the mobile views
implemented though.

### How to Test
`yarn start`

[PR Preview](https://gt-scheduler.github.io/website/pr-preview/pr-420/)

Empty Course Details page (dark mode):
<img width="1886" height="857" alt="image"
src="https://github.com/user-attachments/assets/2eed26f0-5f17-4e59-8883-dd96b86105db"
/>

Empty Course Details page (light mode- we do have a design for this):
<img width="925" height="551" alt="image"
src="https://github.com/user-attachments/assets/d3b91a61-7a5b-46d7-b56d-4ee0a3da8465"
/>

Empty Course Details Page (mobile):
<img width="451" height="785" alt="image"
src="https://github.com/user-attachments/assets/6d76d18a-938e-4bab-8a89-36d69dff15a1"
/>


Course Details Page populated (web):
<img width="1185" height="783" alt="image"
src="https://github.com/user-attachments/assets/eed4fa9d-f484-4573-8020-54b4cab17d09"
/>
<img width="1153" height="598" alt="image"
src="https://github.com/user-attachments/assets/ee88a67b-67c0-4ebf-b2a6-49f183df6127"
/>

Course Details Page populated (mobile):
<img width="402" height="781" alt="image"
src="https://github.com/user-attachments/assets/8d1f8cb2-cfd8-48a3-841e-57db0575a4b8"
/>
### Summary

This PR populates all the information needed for the short Course Info
blob except for the rating reviews. This include Co-reqs (which are
gotten with [a parallel crawler
PR](gt-scheduler/crawler-v2#53)), the
description, and information about previous terms offered.

This is ready for both mobile and web (dark mode) but light mode designs
are not yet available.

### How to Test
[PR Preview](https://gt-scheduler.github.io/website/pr-preview/pr-421/)
(note coreqs will not work till crawler change pushed)

`yarn start`

(Run with parallel crawler)

<img width="1178" height="720" alt="image"
src="https://github.com/user-attachments/assets/8a674c56-a38f-4ff0-bb75-8d15a64f649f"
/>

A more recent class (not all terms)
<img width="1226" height="653" alt="image"
src="https://github.com/user-attachments/assets/56de4fcc-82b4-4301-960f-843daeddf24b"
/>

A class with coreqs
<img width="1172" height="645" alt="image"
src="https://github.com/user-attachments/assets/eedd5f3b-003d-42a7-ae7e-5fd24c3fe9b7"
/>


Mobile
<img width="382" height="772" alt="image"
src="https://github.com/user-attachments/assets/87f57f4e-26a4-4085-ba32-f0536ee95c03"
/>

<img width="421" height="775" alt="image"
src="https://github.com/user-attachments/assets/8466ea7e-b96f-4536-86b7-c4174eb87427"
/>
uma-anand and others added 6 commits January 27, 2026 16:51
## Summary
Creates the long "Section Details" view with section and professor
information.

- Only handles dark mode not light
- Does not actually populate metrics
- Includes Web and mobile views

## How to Test
[PR Preview
](https://www.gt-scheduler.org/pr-preview/pr-425/)

`yarn start`

Section Details View for CS 1332:
<img width="1902" height="793" alt="image"
src="https://github.com/user-attachments/assets/db88d518-b25f-446d-b21d-57430465b55f"
/>

Current Term:
<img width="1187" height="727" alt="image"
src="https://github.com/user-attachments/assets/764d61d0-bbc1-46a9-9ea5-f36d9fee99ad"
/>
<img width="1197" height="717" alt="image"
src="https://github.com/user-attachments/assets/6350ecc4-1eb5-48dc-88cf-b4cadac98439"
/>

Select a section to add to your schedule
<img width="1607" height="738" alt="image"
src="https://github.com/user-attachments/assets/ed9fc409-29e7-4b60-bf23-794066d8d02f"
/>
You can press the icon again to unselect. You can also select from the
side panel and it will automatically show as having been added.

Other terms:
<img width="1182" height="722" alt="image"
src="https://github.com/user-attachments/assets/22c0515d-987a-44b7-b791-6dd2abd18c89"
/>

Mobile:
<img width="455" height="777" alt="image"
src="https://github.com/user-attachments/assets/29614888-feb9-4533-ad65-12d595f5e18d"
/>

Table and Term bar linear gradient
<img width="333" height="677" alt="image"
src="https://github.com/user-attachments/assets/9c61f0f3-6edc-4bd2-8ad9-3d3dd85a3ec8"
/>
<img width="310" height="220" alt="image"
src="https://github.com/user-attachments/assets/b680c738-1e94-488e-85a0-b54322b28406"
/>

Non current terms
<img width="372" height="665" alt="image"
src="https://github.com/user-attachments/assets/c2a3365c-1d64-430b-a5e7-ca6d9758e8a8"
/>

Previous semesters
<img width="1610" height="820" alt="image"
src="https://github.com/user-attachments/assets/4e64222d-69d8-41c6-b4a1-d1c47e825a25"
/>
<img width="1202" height="411" alt="image"
src="https://github.com/user-attachments/assets/d0f6b4f1-2539-47a5-a481-226596bdbda8"
/>
### Summary

Resolves #426 

Adds light mode designs for View Mode tab, Course Details, Section
Details

### How to Test
View Mode tab:
<img width="328" height="44" alt="Screenshot 2026-01-29 at 2 52 03 PM"
src="https://github.com/user-attachments/assets/274ef638-6ea3-4ef1-8096-c045f2a1355f"
/>

Course Details:
<img width="1703" height="862" alt="Screenshot 2026-01-29 at 2 52 21 PM"
src="https://github.com/user-attachments/assets/4c4544c5-4ba8-4433-98db-aa06494cd1e5"
/>

Section Details:
<img width="1703" height="863" alt="Screenshot 2026-01-29 at 2 52 42 PM"
src="https://github.com/user-attachments/assets/7b396715-8d2e-45d7-acf0-211d3c4dca27"
/>
<img width="1701" height="861" alt="Screenshot 2026-01-29 at 2 53 29 PM"
src="https://github.com/user-attachments/assets/aca1bdec-5a07-4537-a3e2-031bfb2a2e1b"
/>

Gradient:
<img width="593" height="44" alt="Screenshot 2026-01-29 at 2 53 01 PM"
src="https://github.com/user-attachments/assets/4eb60372-3968-4c20-b6df-9326c624b689"
/>
<img width="588" height="311" alt="Screenshot 2026-01-29 at 2 53 12 PM"
src="https://github.com/user-attachments/assets/247657eb-610c-47d6-aff8-4b2222e5d5bc"
/>

Mobile:
<img width="362" height="796" alt="Screenshot 2026-01-29 at 2 53 54 PM"
src="https://github.com/user-attachments/assets/4d379cb5-2783-47e6-936e-2b734d64b81d"
/>
<img width="354" height="785" alt="Screenshot 2026-01-29 at 2 54 09 PM"
src="https://github.com/user-attachments/assets/12848313-ed80-4c45-8690-cb30a6cc3715"
/>
<img width="361" height="790" alt="Screenshot 2026-01-29 at 2 54 19 PM"
src="https://github.com/user-attachments/assets/0869c445-25c9-43fb-be10-d075d029d40d"
/>

Previous Semesters:
<img width="1706" height="860" alt="Screenshot 2026-01-29 at 2 55 19 PM"
src="https://github.com/user-attachments/assets/6043bb78-fb55-4325-8a8a-d4f58b06a8a6"
/>
<img width="1081" height="866" alt="Screenshot 2026-01-29 at 2 55 45 PM"
src="https://github.com/user-attachments/assets/48597f39-6576-49a9-9049-79f038350b79"
/>

Dark Mode unchanged:
<img width="1073" height="862" alt="Screenshot 2026-01-29 at 2 56 07 PM"
src="https://github.com/user-attachments/assets/47abf82c-d58e-4cbd-b77c-7161e6236502"
/>
<img width="1079" height="865" alt="Screenshot 2026-01-29 at 2 56 25 PM"
src="https://github.com/user-attachments/assets/d11f9a4a-6e7e-4d40-9de4-dd44b874658e"
/>

also fixed small bug where semester tab bar was not scrollable
### Summary

Resolves #430 

### Checklist
- [x] Added a new ratings field in the Course bean.
- [x] Created a new fetchRatingsInner function within the Course bean.
- [x] Added fetchRatings function in the Course bean.
- [x] Added fetchProfessorRatings function in the Course bean.
- [x] Called these functions in the front-end (CourseInfo). 
- [x] Added 15 minute caching for the ratings.

### How to Test
in firebase-conf (comment out auth) & deploy dev. then run:
```
curl -X POST http://localhost:5001/gt-scheduler-web-dev/us-east1/submitRatings \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d 'data={"IDToken":"abc","ratings":[{"courseId":"CS 6210","professorId":"anand-padmanabha-iyer","term":202602,"rating":4,"difficulty":4,"workload":4}]}'
```
```
curl -X POST http://localhost:5001/gt-scheduler-web-dev/us-east1/submitRatings \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d 'data={"IDToken":"abc","ratings":[{"courseId":"CS 6210","professorId":"umakishore-ramachandran","term":202602,"rating":3,"difficulty":3,"workload":3}]}'
```
Verify ratings are displayed:
<img width="620" height="159" alt="Screenshot 2026-02-01 at 3 27 41 PM"
src="https://github.com/user-attachments/assets/a3ed5271-4478-4f39-86f6-4aa9f5bcbae9"
/>
<img width="619" height="673" alt="Screenshot 2026-02-01 at 3 27 52 PM"
src="https://github.com/user-attachments/assets/f12b9bdc-9e63-45f6-8393-609ae41701c7"
/>
Professors with no ratings:
<img width="619" height="419" alt="Screenshot 2026-02-01 at 3 28 05 PM"
src="https://github.com/user-attachments/assets/20b2ab3a-e2fa-4afb-a1c5-ee0b405c1eee"
/>
Courses with no ratings:
<img width="617" height="446" alt="Screenshot 2026-02-01 at 3 28 40 PM"
src="https://github.com/user-attachments/assets/f0969936-0a3a-4ec7-83dc-403e0f7e28d5"
/>

Verified that deleting and re-adding a course uses cached results with
15 minute expiration:
<img width="252" height="129" alt="Screenshot 2026-02-01 at 3 31 19 PM"
src="https://github.com/user-attachments/assets/7b98501d-1f6b-43bb-8ee0-6d1fedabd8c7"
/>
<img width="249" height="116" alt="Screenshot 2026-02-01 at 3 31 34 PM"
src="https://github.com/user-attachments/assets/4dfe2d0f-ed6c-48ec-94d3-9945914a5135"
/>
### Summary

Adds Course Info Modal

### How to Test
<img width="1708" height="869" alt="Screenshot 2026-02-06 at 4 07 13 PM"
src="https://github.com/user-attachments/assets/3682688a-0faa-4a7e-959d-e1f2087a048b"
/>

Hover:
<img width="309" height="92" alt="Screenshot 2026-02-06 at 4 07 25 PM"
src="https://github.com/user-attachments/assets/49523791-0c02-49b9-baf9-9784d3e417ab"
/>

Light Mode:
<img width="1707" height="870" alt="Screenshot 2026-02-06 at 4 10 41 PM"
src="https://github.com/user-attachments/assets/e0ea1f7b-0b35-4aba-95d7-76a174f9e6c2"
/>

Mobile:
<img width="368" height="800" alt="Screenshot 2026-02-06 at 4 06 49 PM"
src="https://github.com/user-attachments/assets/db7244d4-bc71-43f2-9521-45d94b305619"
/>

---------

Co-authored-by: Uma Anand <63426041+uma-anand@users.noreply.github.com>
@github-actions
Copy link

github-actions bot commented Feb 18, 2026

PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://gt-scheduler.github.io/website/pr-preview/pr-437/

Built to branch gh-pages at 2026-02-18 17:01 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants