Skip to content

ignore - rebuilding volunteer dashboard - #489

Draft
BGL-PV wants to merge 16 commits into
devfrom
admin-panel-rebase
Draft

ignore - rebuilding volunteer dashboard#489
BGL-PV wants to merge 16 commits into
devfrom
admin-panel-rebase

Conversation

@BGL-PV

@BGL-PV BGL-PV commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

(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?

  • @sleepy_porg

Please link to the related github issue:

Do your changes impact anything else?

  • My change impacts everything related to the volunteer dashboard.

Any extra notes:

  • Example Images
    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
Screenshot 2026-08-23 at 12 31 30 PM Screenshot 2026-08-23 at 12 29 59 PM

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
Screenshot 2026-08-23 at 12 30 38 PM

Show the new collapsed state of the panel sidebar and volunteer dashboard sidebar
Screenshot 2026-08-23 at 12 31 35 PM
Screenshot 2026-08-23 at 12 31 38 PM

Example of the uncollapsed state of the sidebar item group showing sub panels in volunteer dashboard sidebar
Screenshot 2026-08-23 at 12 31 45 PM

examples of how the mobile view works and the back button that automatically handles backwards navigation
Screenshot 2026-08-23 at 12 32 06 PM
Screenshot 2026-08-23 at 12 32 08 PM
Screenshot 2026-08-23 at 12 32 11 PM
Screenshot 2026-08-23 at 12 32 16 PM

Fundraising Panel mobile view and mobile view example for panels with full width headers
Screenshot 2026-08-23 at 12 32 47 PM

@vercel

vercel Bot commented Jul 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pv-frontpage-redux Ready Ready Preview Aug 24, 2026 6:59pm

Request Review

return
}

if (!trackPanelHistory) {

@AmberLehmann AmberLehmann Jul 21, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

BGL-PV added 6 commits August 18, 2026 12:48
- 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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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, and NavigationButton primitives (including panel history for “back” navigation).
  • Adds a reusable Panel component and new SidebarList building 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> uses defaultValue, so it won't reflect updates if search.searchField changes from outside this component (e.g. back/forward navigation or programmatic search resets). Use a controlled value instead.
    src/components/common/panel/sidebar_list/SidebarList.tsx:129
  • This <select> uses defaultValue, so it won't reflect updates if search.sortField changes from outside this component. Use a controlled value instead.
    src/components/common/panel/sidebar_list/SidebarList.tsx:151
  • This <select> uses defaultValue, so it won't reflect updates if search.limit changes from outside this component. Use a controlled value instead.
    src/components/common/panel/sidebar_list/SidebarList.tsx:169
  • This <select> uses defaultValue, so it won't reflect updates if search.sort changes from outside this component. Use a controlled value instead.

💡 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'
Comment thread src/app/admin/page.tsx
Comment on lines 16 to 19
export default function Page() {
redirect('/admin/panels/members', RedirectType.replace)
redirect('/admin', RedirectType.replace)
// redirect('/admin/panels/members', RedirectType.replace)
}
Comment on lines +371 to +377
<a
className={`${styles.arrow} ${enabled ? styles.enabled : styles.disabled}`}
onClick={() => enabled && onClick()}
title={title}
>
<Icon size={20} />
</a>
Comment on lines +340 to +350
<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'
@BGL-PV
BGL-PV marked this pull request as draft August 23, 2026 20:08
@BGL-PV BGL-PV changed the title rebuilding volunteer dashboard ignore - rebuilding volunteer dashboard Aug 24, 2026
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.

3 participants