ignore - rebuilding volunteer dashboard - #489
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
| return | ||
| } | ||
|
|
||
| if (!trackPanelHistory) { |
There was a problem hiding this comment.
Hey Benj! Love the early returns, it's good practice. I'd try to merge these into one distinct block to more cleanly seperate the guard clauses (things that prevent the rest of the body from executing) from the primary logic. This would require more complex conditional logic, but I think it's worth it here.
- Add FilterTags to members sidebar with filter tag state/handlers - Add position pills to MemberBanner (replaces role pills) - Add donor count filter option to sidebar filters - Fix CollapsibleSection to use CSS modules (Tailwind deprecated) - Restore DropdownButton with portal/openIcon features - Add missing imports in positions page (SearchModal, FormField, etc) - Add Link import to DonorView, remove unused classnames import - Default member sort by created_at_utc DESC
295261c to
7b3c1aa
Compare
There was a problem hiding this comment.
Pull request overview
Ground-up refactor of the Admin “Volunteer Dashboard” UI to support a NavigationStack-style split view (sidebar + detail) with improved mobile navigation/back behavior, plus a new panel abstraction and refreshed list/sidebar UI.
Changes:
- Introduces
NavigationStack,Sidebar,Detail, andNavigationButtonprimitives (including panel history for “back” navigation). - Adds a reusable
Panelcomponent and newSidebarListbuilding blocks (search/filters/footer/sidebar body) and migrates multiple admin panels to this layout. - Updates dropdown behavior (including optional portal rendering to escape
overflow: hidden) and various styling refinements across panels.
Reviewed changes
Copilot reviewed 41 out of 41 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/components/common/panel/sidebar_list/SidebarList.tsx | New sidebar list primitives (filters/search/footer + pagination arrows). |
| src/components/common/panel/sidebar_list/SidebarList.module.css | Styling for sidebar list controls, pagination, pinned section, etc. |
| src/components/common/panel/sidebar_list/SidebarBody.tsx | Renders sidebar items via NavigationButton, supports pinned section and loading/error states. |
| src/components/common/panel/sidebar_list/index.ts | Barrel exports for sidebar list components. |
| src/components/common/panel/Panel.tsx | New reusable panel wrapper around NavigationStack + Sidebar + Detail. |
| src/components/common/panel/Panel.module.css | Styling for panel shell/header/footer and sidebar body shell helpers. |
| src/components/common/panel/index.ts | Barrel exports for Panel and sidebar list components. |
| src/components/common/navigation_stack/sidebar/Sidebar.module.css | Large styling update for new sidebar behaviors (collapse, header, footer, animations). |
| src/components/common/navigation_stack/panelHistory.ts | SessionStorage-based panel history helpers for mobile back navigation. |
| src/components/common/navigation_stack/NavigationStack.tsx | New split-view layout container with optional overlay. |
| src/components/common/navigation_stack/NavigationStack.module.css | Styles for navigation stack root and overlay slot. |
| src/components/common/navigation_stack/navigation_button/NavigationButton.tsx | New navigation button supporting groups/cards/account variants + history tracking. |
| src/components/common/navigation_stack/navigation_button/NavigationButton.module.css | Styling for navigation buttons, groups, cards, collapsed sidebar behavior. |
| src/components/common/navigation_stack/index.ts | Barrel exports for navigation stack components. |
| src/components/common/navigation_stack/detail/Detail.tsx | New detail pane + mobile back navigation based on stored panel history. |
| src/components/common/navigation_stack/detail/Detail.module.css | Styles for detail view and back buttons across breakpoints. |
| src/components/common/forms/FormGroup.tsx | Doc comment tweak for subtitle description. |
| src/components/common/dropdown/DropdownButton.tsx | Enhances dropdown trigger with optional portal rendering and improved outside-click handling. |
| src/components/common/dropdown/DropdownButton.module.css | Adds container/menuAnchor/buttonIcon styles to support portal dropdown rendering. |
| src/app/admin/panels/roles/page.tsx | Migrates Roles panel to new Panel + SidebarBody layout with mobile behavior. |
| src/app/admin/panels/roles/page.module.css | Updates Roles panel styles for new layout and mobile back button. |
| src/app/admin/panels/positions/page.tsx | Migrates Positions panel to new Panel + SidebarBody layout with mobile behavior. |
| src/app/admin/panels/positions/page.module.css | Updates Positions panel styles for new layout and mobile back button. |
| src/app/admin/panels/permissions/page.tsx | Migrates Permissions panel to new Panel + SidebarBody layout with mobile behavior. |
| src/app/admin/panels/permissions/page.module.css | Updates Permissions panel styles for new layout and mobile back button. |
| src/app/admin/panels/members/panel_views/DonorView.tsx | Adds navigation buttons for contribution lineitems + “open in donors panel” using new nav primitives. |
| src/app/admin/panels/members/panel_views/DonorView.module.css | Adds modal + navigation button styling for donor view details/actions. |
| src/app/admin/panels/members/page.tsx | Migrates Members panel to new Panel layout with pinned current user + sidebar collapse behavior. |
| src/app/admin/panels/members/page.module.css | Updates Members panel styles for new navigation stack layout and collapsed sidebar rules. |
| src/app/admin/panels/fundraising/page.tsx | Wraps Fundraising “home/gallery” in Panel and replaces cards with NavigationButton card variant. |
| src/app/admin/panels/fundraising/page.module.css | Removes old card styles and adjusts dashboard styling after layout changes. |
| src/app/admin/panels/donors/page.tsx | Migrates Donors panel to Panel + SidebarBody with new field/sort options and mobile behavior. |
| src/app/admin/panels/donors/page.module.css | Updates Donors panel styles for new layout + details navigation button styling. |
| src/app/admin/panels/contributions/page.tsx | Migrates Contributions panel to Panel + SidebarBody, adds recurring tag, and details nav button. |
| src/app/admin/panels/contributions/page.module.css | Updates Contributions panel styles for new layout and details navigation button. |
| src/app/admin/page.tsx | Changes /admin entry behavior (currently redirects). |
| src/app/admin/layout.tsx | Replaces legacy sidebar/content layout with NavigationStack + new sidebar config + unselected detail view. |
| src/app/admin/admin.tsx | Adds new unselected (“home”) detail view rendering a card grid of panels. |
| src/app/admin/admin.module.css | Styling/animation for the new unselected (“home”) view. |
| src/app/account/sections/AccountDetailsSection.tsx | Routes “Volunteer Dashboard” button to /admin?from=welcome to trigger welcome state. |
Suppressed comments (4)
src/components/common/panel/sidebar_list/SidebarList.tsx:107
- This
<select>usesdefaultValue, so it won't reflect updates ifsearch.searchFieldchanges from outside this component (e.g. back/forward navigation or programmatic search resets). Use a controlledvalueinstead.
src/components/common/panel/sidebar_list/SidebarList.tsx:129 - This
<select>usesdefaultValue, so it won't reflect updates ifsearch.sortFieldchanges from outside this component. Use a controlledvalueinstead.
src/components/common/panel/sidebar_list/SidebarList.tsx:151 - This
<select>usesdefaultValue, so it won't reflect updates ifsearch.limitchanges from outside this component. Use a controlledvalueinstead.
src/components/common/panel/sidebar_list/SidebarList.tsx:169 - This
<select>usesdefaultValue, so it won't reflect updates ifsearch.sortchanges from outside this component. Use a controlledvalueinstead.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| @@ -0,0 +1,379 @@ | |||
| import styles from './SidebarList.module.css' | |||
| export default function Page() { | ||
| redirect('/admin/panels/members', RedirectType.replace) | ||
| redirect('/admin', RedirectType.replace) | ||
| // redirect('/admin/panels/members', RedirectType.replace) | ||
| } |
| <a | ||
| className={`${styles.arrow} ${enabled ? styles.enabled : styles.disabled}`} | ||
| onClick={() => enabled && onClick()} | ||
| title={title} | ||
| > | ||
| <Icon size={20} /> | ||
| </a> |
| <span | ||
| aria-hidden="true" | ||
| className={styles.groupTagButton} | ||
| data-collapsed-active-child={ | ||
| hasActiveGroupChild && !isGroupOpen | ||
| } | ||
| data-open={isGroupOpen} | ||
| onClick={handleGroupTagClick} | ||
| > | ||
| <span className={styles.groupTagChevron} /> | ||
| </span> |
| @@ -0,0 +1,319 @@ | |||
| import styles from './Panel.module.css' | |||
(Feature)/(#560)
Description
A ground up refactor of the entire Volunteer Dashboard. Rebuilding the volunteer dashboard to use a far better underlying structure that supports mobile layouts but also has many nice to have improvements built in. This involved the creation of new components like NavigationStack, inspired by SwiftUI a base component that handles sidebar and detail views but also automatically handles mobile and navigation behavior between views as well as a suite of subcomponents to enable this. I also added a new panel component to further abstract the panels in the volunteer dashboard allowing for easier time creating new panels. I also created a new splash home page within the volunteer dashboard.
Additional Tweaks include
Upgrading UI in panels to have nicer layout and presentation within panel sidebars
Adding a collapse option to the sidebar for panels.
Updating volunteer dashboard global sidebar to have a new button to navigate to dashboard home page setting up the foundation of future work to deprecate the current account page and move it into the volunteer dashboard.
Implementing new animation throughout the Dashboard.
Adding new tags for list elements to be able to show more useful information like a recurring tag on contributions.
Details
What is your discord username?
Please link to the related github issue:
Do your changes impact anything else?
Any extra notes:
2 Examples of main dashboard sidebar sidebar item group collapsed state, the new UI style for sidebar list, and new tags added to sidebar elements in panels
The new Home page for volunteer dashboard that acts as a panel gallery view and that will set up the foundation of account page refactor that moves it into the dashboard. In the sidebar you can see the distinct button navigating to this view

Show the new collapsed state of the panel sidebar and volunteer dashboard sidebar


Example of the uncollapsed state of the sidebar item group showing sub panels in volunteer dashboard sidebar

examples of how the mobile view works and the back button that automatically handles backwards navigation




Fundraising Panel mobile view and mobile view example for panels with full width headers
