Improve component logic and enhance user experience#331
Conversation
…ableProposal component
…ge, TravelSupportPageClient, and VolunteerAdminPage refactor: improve status badge implementation in CompactProposalList, ExpensesList, and TravelSupport components feat: implement AttachmentManager and ProposalAttachmentsPanel stories for better documentation and testing refactor: enhance ProgramFilters with SearchInput component for improved search functionality chore: update ProgramSystem documentation with detailed component architecture and descriptions
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
feat: create DashboardLayout stories for admin and speaker modes feat: implement BankingDetailsDisplay stories for travel support feat: add BankingDetailsForm stories for managing banking details feat: create ErrorComponents stories for handling errors in travel support feat: implement ExpenseForm stories for adding and editing expenses feat: add ExpenseSummary stories for displaying expense totals feat: create ExpensesList stories for rendering travel expenses feat: implement LoadingStates stories for loading indicators in travel support feat: add ReceiptViewer stories for displaying receipts feat: create StatusBadge stories for visualizing travel support statuses
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
||||||||||||||||||||||||||
…eplace loading indicators with LoadingSpinner
…to utilize new components
…swapping logic in ContractTemplateEditorPage
- Introduced AdminButton component for consistent button styling across admin pages. - Replaced button elements in AdminActionBar, AudienceFeedbackPanel, BadgeValidator, and other admin components with AdminButton. - Added EmptyState component to display user-friendly messages for empty states in OrdersTableWithSearch, SpeakerTable, and VolunteerAdminPage. - Created ContentCard component for consistent content presentation in CachedTermsContent. - Updated ExpenseForm to use AdminButton for form actions. - Ensured all changes maintain existing functionality while improving code readability and maintainability.
…ents; enhance SponsorContactRoleSelect stories with new features and examples
…ncy in SponsorAddModal and VolunteerAdminPage
…rAdminPage components
User description
Refactor the DraggableProposal component for better readability, add confirmation modals for delete actions across multiple pages, and enhance the status badge implementation. Implement AttachmentManager and ProposalAttachmentsPanel for improved documentation and testing. Enhance ProgramFilters with a new SearchInput component for better search functionality and update ProgramSystem documentation with detailed architecture descriptions.
PR Type
Enhancement, Tests, Documentation
Description
Comprehensive Storybook migration: Added 30+ new story files documenting components across admin, proposal, travel-support, and schedule modules with mock data and multiple variants
Modal refactoring: Replaced Headless UI
Dialog,DialogPanel,Transition, andTransitionChildcomponents with newModalShellwrapper component across 7 modal components, reducing boilerplate and improving consistencyComponent extraction and consolidation: Created
NotificationToastcomponent extracted fromNotificationProvider, refactoredStatusBadgeusage across multiple pages to use shared component with semanticBadgeColortypeEnhanced confirmation UX: Added
ConfirmationModalfor delete actions inVolunteerAdminPageandBadgeManagementClientinstead of browserconfirm()Search input standardization: Replaced manual search input implementation in
SpeakerMultiSelectwith new reusableSearchInputcomponentArchitecture documentation: Enhanced
ProgramSystemdocumentation with detailed component hierarchy, hooks, utilities, and schedule library sectionsDevelopment tooling: Added
simple-git-hooksfor pre-commit hooks and updated build scripts to useconcurrentlyfor parallel execution with caching supportDiagram Walkthrough
File Walkthrough
8 files
ImageMetadataModal.tsx
Refactor modal to use ModalShell wrapper componentsrc/components/admin/gallery/ImageMetadataModal.tsx
Dialog,DialogPanel,Transition, andTransitionChildcomponents with newModalShellwrapper componentuseThemehook dependency and manual dark mode class handlingpanel layers
boilerplate code
SponsorAddModal.tsx
Refactor sponsor modal to use ModalShell componentsrc/components/admin/sponsor/SponsorAddModal.tsx
Dialog,DialogPanel,Transition, andTransitionChildwithModalShellcomponentuseThemehook and associated dark mode class logicfunctionality
EmailModal.tsx
Refactor email modal to use ModalShell wrappersrc/components/admin/EmailModal.tsx
Dialog,DialogPanel,DialogTitle,Transition, andTransitionChildwithModalShellcomponentuseThemehook and manual dark mode handlingdraft storage features
ModalShellwith custom sizing and padding optionsSpeakerProfilePreview.tsx
Refactor speaker profile modal to use ModalShellsrc/components/SpeakerProfilePreview.tsx
Dialog,DialogPanel,DialogTitle,Transition, andTransitionChildwithModalShellcomponentuseThemehook and dark mode class managementbio, talks, and social links
ModalShellwith custom sizing and padding configurationSpeakerMultiSelect.tsx
Replace search input with SearchInput componentsrc/components/admin/SpeakerMultiSelect.tsx
SearchInputcomponentMagnifyingGlassIconimport and manual icon positioningSearchInputcomponent with customclassName prop
NotificationToast.tsx
Create NotificationToast component with stylingsrc/components/admin/NotificationToast.tsx
NotificationProviderfor independent useand testing
dismiss button
distinct styling
VolunteerAdminPage.tsx
Add confirmation modal and refactor status badgessrc/components/volunteer/VolunteerAdminPage.tsx
ConfirmationModalfor delete volunteer action instead of browserconfirm()volunteerStatusConfigobjectStatusBadgeto use shared component withBadgeColortypedeleteVolunteerIdBadgeManagementClient.tsx
Add confirmation modal for badge deletionsrc/components/admin/BadgeManagementClient.tsx
ConfirmationModalfor delete badge action instead of browserconfirm()deleteBadgeInfoActionMenufrom admin to root componentsfolder
20 files
DashboardLayout.stories.tsx
Add DashboardLayout Storybook stories and documentationsrc/components/common/DashboardLayout.stories.tsx
DashboardLayoutcomponentwith full documentation
adminandspeakermodes with different color schemes
content
documentation
ExpenseSummary.stories.tsx
Add ExpenseSummary Storybook stories with mock componentsrc/components/travel-support/ExpenseSummary.stories.tsx
ExpenseSummarycomponentrejected) with currency formatting
MultipleCurrencies, and Empty states
DraggableProposal.stories.tsx
Add DraggableProposal Storybook stories with drag contextsrc/components/admin/schedule/DraggableProposal.stories.tsx
DraggableProposalcomponent used inschedule editor
Workshop, AcceptedNotConfirmed, WithdrawnProposal, NoTopics, and
Dragging states
DndContextdecorator for drag-and-drop functionalityDroppableTrack.stories.tsx
Add DroppableTrack Storybook stories with mock datasrc/components/admin/schedule/DroppableTrack.stories.tsx
DroppableTrackcomponent in scheduleeditor
arrangements
DndContextdecorator fordrag-and-drop testing
GalleryModal.stories.tsx
Add GalleryModal Storybook stories with carousel mocksrc/components/GalleryModal.stories.tsx
metadata
functionality
ProposalDetailsForm.stories.tsx
Add ProposalDetailsForm Storybook stories with mock datasrc/components/proposal/ProposalDetailsForm.stories.tsx
ProposalDetailsFormcomponentfilled, workshop)
states
level, audiences, topics, outline
ProposalReviewPanel.stories.tsx
Add ProposalReviewPanel Storybook storiessrc/components/admin/ProposalReviewPanel.stories.tsx
ProposalReviewPanelcomposite componentWithExistingUserReview, and NoCurrentUser states
NotificationProviderdecoratorProposalManagementModal.stories.tsx
Add ProposalManagementModal Storybook storiessrc/components/admin/ProposalManagementModal.stories.tsx
ProposalManagementModalcomponentscenarios
AdminPageHeader.stories.tsx
Add AdminPageHeader Storybook storiessrc/components/admin/AdminPageHeader.stories.tsx
AdminPageHeaderreusable componentcontext highlight, stats, action items, back link
Header.stories.tsx
Add Header Storybook stories with auth statessrc/components/Header.stories.tsx
Headercomponentbutton, theme toggle
PastEventLoggedIn states
ModalShell.stories.tsx
Add ModalShell Storybook stories with size variantssrc/components/ModalShell.stories.tsx
ModalShellshared modal wrapper componentUnpadded
ExpensesList.stories.tsx
Add ExpensesList Storybook stories with mock expensessrc/components/travel-support/ExpensesList.stories.tsx
ExpensesListcomponentedit/delete actions
AdminHeaderActions.stories.tsx
Add AdminHeaderActions Storybook storiessrc/components/admin/AdminHeaderActions.stories.tsx
AdminHeaderActionsresponsive button barcomponent
WithDisabled, SingleAction, ManyActions
ProposalActionModal.stories.tsx
Add ProposalActionModal Storybook storiessrc/components/admin/ProposalActionModal.stories.tsx
ProposalActionModalcomponentRemindAction, DeleteAction, SpeakerWithdraw, SpeakerSubmit
NotificationToast.stories.tsx
Add NotificationToast Storybook storiessrc/components/admin/NotificationToast.stories.tsx
NotificationToastcomponentBadgePreviewModal.stories.tsx
Add BadgePreviewModal Storybook storiessrc/components/admin/BadgePreviewModal.stories.tsx
BadgePreviewModalcomponentinfo
display
SpeakerEmailModal.stories.tsx
Add SpeakerEmailModal Storybook storiessrc/components/admin/SpeakerEmailModal.stories.tsx
SpeakerEmailModalcomponentgreeting templates
ProposalPublishedContent.stories.tsx
Add ProposalPublishedContent Storybook storiessrc/components/admin/ProposalPublishedContent.stories.tsx
ProposalPublishedContentcomponentAcceptedStatus, ConferenceNotEnded, SubmittedStatus
proposals
PaymentDetailsModal.stories.tsx
Add PaymentDetailsModal Storybook storiessrc/components/admin/PaymentDetailsModal.stories.tsx
PaymentDetailsModalcomponentstates
AttachmentManager.stories.tsx
Add AttachmentManager Storybook storiessrc/components/proposal/AttachmentManager.stories.tsx
AttachmentManagercomponentrecording, resource)
ReadOnly states
functionality
7 files
BadgePreviewModal.tsx
Refactor BadgePreviewModal to use ModalShell componentsrc/components/admin/BadgePreviewModal.tsx
ModalShellwrapper for consistent modal styling
useThemehook dependency and manual dark mode class handlingDialogPanel elements
max-w-[300px]tomax-w-75(Tailwindclass)
ProposalManagementModal.tsx
Refactor ProposalManagementModal to use ModalShellsrc/components/admin/ProposalManagementModal.tsx
ModalShellcomponent forconsistent modal behavior
useThemehook and manual dark mode stylingpadded={false}toModalShellfor custom padding controlSpeakerManagementModal.tsx
Refactor SpeakerManagementModal to use ModalShellsrc/components/admin/SpeakerManagementModal.tsx
ModalShellcomponentuseThemehook and manual dark mode class handlingConfirmationModal.tsx
Refactor ConfirmationModal to use ModalShellsrc/components/admin/ConfirmationModal.tsx
ModalShellcomponentuseThemehook and manual dark mode stylingstates
NotificationProvider.tsx
Extract NotificationToast component from providersrc/components/admin/NotificationProvider.tsx
NotificationToastcomponentgetIcon,getStyles)NotificationToastfor cleanerseparation of concerns
CompactProposalList.tsx
Refactor CompactProposalList to use shared StatusBadgesrc/components/cfp/CompactProposalList.tsx
StatusBadgefrom inline component to use sharedStatusBadgecomponent
getProposalStatusConfigfunction
BadgeColortype andreusable badge component
SpeakerTable.tsx
Refactor SpeakerTable to use shared StatusBadgesrc/components/admin/SpeakerTable.tsx
StatusBadgefrom inline component to use sharedStatusBadgecomponent
getProposalBadgeColorfunctionActionMenufrom admin to root componentsfolder
BadgeColortype9 files
AdminLayout.stories.tsx
Add AdminLayout Storybook stories and documentationsrc/components/admin/AdminLayout.stories.tsx
Events & Content, System)
SettingsPage
ScheduleEditor.stories.tsx
Add ScheduleEditor Storybook stories with mock datasrc/components/admin/schedule/ScheduleEditor.stories.tsx
structures
MultiDay
sidebar
ImageMetadataModal.stories.tsx
Add ImageMetadataModal Storybook storiessrc/components/admin/gallery/ImageMetadataModal.stories.tsx
availability
checkbox
SearchModal.stories.tsx
Add SearchModal Storybook stories and statessrc/components/admin/SearchModal.stories.tsx
component
ProgramSystem.stories.tsx
Enhance ProgramSystem architecture documentationsrc/docs/ProgramSystem.stories.tsx
diagram
DroppableTrack, DraggableProposal, DraggableServiceSession, and
UnassignedProposals
usePerformanceTimer, useDragPerformance, useBatchUpdates
performance utilities
UnassignedProposals.stories.tsx
Add UnassignedProposals Storybook storiessrc/components/admin/schedule/UnassignedProposals.stories.tsx
audiences
MixedStatuses
ProposalDetail.stories.tsx
Add ProposalDetail Storybook storiessrc/components/admin/ProposalDetail.stories.tsx
speaker scenarios
section
SpeakerManagementModal.stories.tsx
Add SpeakerManagementModal Storybook storiessrc/components/admin/SpeakerManagementModal.stories.tsx
and consent checkboxes
SignupDetailsModal.stories.tsx
Add SignupDetailsModal Storybook storiessrc/components/admin/workshop/SignupDetailsModal.stories.tsx
statuses
Confirming
1 files
package.json
Add concurrent checks and git hookspackage.json
checkscript to useconcurrentlyfor parallel execution oftypecheck, lint, knip, and format
--cacheflag tolintandlint:fixcommands for faster subsequentruns
--cacheflag toformat:checkandformatcommandssimple-git-hooksdependency with pre-commit hook configuration1 files
pnpm-lock.yaml
Update lock file with simple-git-hookspnpm-lock.yaml
simple-git-hooks@2.13.1dependency39 files