Availability Slider - #346
Conversation
📝 WalkthroughWalkthroughAdds a minimum-availability slider filter to the event results page. A new ChangesAvailability Filters Feature
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes 🚥 Pre-merge checks | ❌ 1❌ Failed checks (1 warning)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
frontend/src/features/event/results/lib/use-results.ts (1)
66-88: 🎯 Functional Correctness | 🟠 MajorKeep the server mutation inside the transition.
removeOptimisticParticipant(...)andupdateOptimisticAvailabilities(...)run instartTransition, butawait removePerson(...)happens after that transition ends. With React 19useOptimistic, the optimistic overlay only stays while the action/transition is pending, so the removed participant can briefly reappear until revalidation lands. Await the mutation inside the same transition/action.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 8c2bae8b-788c-45f1-8c34-24cba5ad1bc8
⛔ Files ignored due to path filters (1)
frontend/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (12)
frontend/package.jsonfrontend/src/app/(event)/[event-code]/page-client.tsxfrontend/src/features/event/results/attendees/mobile-drawer.tsxfrontend/src/features/event/results/attendees/participant-chip.tsxfrontend/src/features/event/results/attendees/participant-list.tsxfrontend/src/features/event/results/components/availability-filters.tsxfrontend/src/features/event/results/components/banners.tsxfrontend/src/features/event/results/components/display-settings.tsxfrontend/src/features/event/results/components/share-menu.tsxfrontend/src/features/event/results/lib/use-results.tsfrontend/src/features/event/results/lib/utils.tsfrontend/src/lib/messages.ts
💤 Files with no reviewable changes (1)
- frontend/src/features/event/results/components/display-settings.tsx
|
Also, I think it would make more sense to have the availability slider displayed above the time zone selector, since it will probably be used more often. |

This PR adds a slider to the results page that allows users to only show time slots with at least a certain number of people are available.
Availability Slider
The slider lives in the same panel as the "show best times" checkbox within a component named
AvailabilityFilters. It acts as a master filter with the following interactions:To improve visual feedback, the slider has tick marks that are scaled and positioned based on the total number of participants. The endpoints are explicitly labeled with numbers and each major interval (multiples of 10 and 5) have sightly taller markers. The standard one by one increments are hidden if there are 50 or more participants to prevent overcrowding.
AvailabilityFiltersToast ReplacementOriginally, when a user selected the checkbox and no matching times existed, a toast would appear in the bottom right corner, blocking the filter panel. This toast has been replaced with an inline banner to communicate problematic filter combinations.
Mobile Button
For mobile screens, a new filters button was added to the persistent footer, next to the Share button. The slider track was modified to be thicker for easier interaction.