Skip to content

[Campaign Launcher UI] Redesign Dashboard and Campaigns pages#782

Draft
KirillKirill wants to merge 15 commits intodevelopfrom
kb/770-redesign-app
Draft

[Campaign Launcher UI] Redesign Dashboard and Campaigns pages#782
KirillKirill wants to merge 15 commits intodevelopfrom
kb/770-redesign-app

Conversation

@KirillKirill
Copy link
Copy Markdown
Collaborator

@KirillKirill KirillKirill commented Mar 11, 2026

Issue tracking

Context behind the change

How has this been tested?

Release plan

Potential risks; What to monitor; Rollback plan

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR overhauls the Campaign Launcher client UI layout and navigation, introducing new dashboard/campaign browsing experiences and mobile-first components to support the redesigned app shell.

Changes:

  • Added a dedicated /campaigns route and new Campaigns page with tabs, filters UI, and grid/table feed views.
  • Replaced legacy dashboard stats/how-to-launch sections with new widget + informational sections and a mobile bottom nav.
  • Updated wallet connection UX (connectors/assets) and introduced timeline/target helpers for campaign presentation.

Reviewed changes

Copilot reviewed 52 out of 59 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
campaign-launcher/client/src/utils/index.ts Adds getTargetInfo helper for campaign target label/value.
campaign-launcher/client/src/utils/dayjs.ts Enables Day.js advanced format support.
campaign-launcher/client/src/types/index.ts Adds CampaignsTabFilter enum for new tabs.
campaign-launcher/client/src/theme.ts Updates button sizing/typography theme overrides.
campaign-launcher/client/src/providers/WagmiProvider.tsx Adds MetaMask connector to wagmi config.
campaign-launcher/client/src/pages/LaunchCampaign/index.tsx Removes page title from launch campaign page layout.
campaign-launcher/client/src/pages/Dashboard/index.tsx Rebuilds dashboard page using new widgets/feed/FAQ/About sections.
campaign-launcher/client/src/pages/Campaigns/index.tsx New campaigns browsing page with tabs/filters/view toggle and feed.
campaign-launcher/client/src/pages/CampaignDetails/index.tsx Renames component/export and removes joined/how-to sections from details page.
campaign-launcher/client/src/icons/index.tsx Adds multiple new SVG icons used by redesigned UI.
campaign-launcher/client/src/hooks/usePagination.ts Adjusts default page size and adds mobile-aware page sizing.
campaign-launcher/client/src/hooks/useCampaigns.ts Extends useCampaigns API (enabled option + mobile placeholder behavior).
campaign-launcher/client/src/hooks/useCampaignTimeline.ts New hook to compute campaign timeline label/value + countdown.
campaign-launcher/client/src/hooks/useBreakpoints.ts Expands “mobile” to include sm breakpoint.
campaign-launcher/client/src/hooks/recording-oracle/campaign.ts Adds enabled option + sets joined-campaigns query staleTime.
campaign-launcher/client/src/constants/index.ts Adds /campaigns route constant and new paging/mobile nav constants.
campaign-launcher/client/src/components/TotalVolume/index.tsx Removes legacy dashboard total volume component.
campaign-launcher/client/src/components/StretchedLink/index.tsx Removes legacy stretched-link helper component.
campaign-launcher/client/src/components/PageWrapper/index.tsx Adjusts wrapper padding/elevation for new design.
campaign-launcher/client/src/components/MyCampaigns/index.tsx Removes legacy “My Campaigns” table view component.
campaign-launcher/client/src/components/MobileBottomNav/index.tsx Adds mobile bottom navigation for Dashboard/Campaigns.
campaign-launcher/client/src/components/Layout/index.tsx Integrates mobile bottom nav + passes visibility to footer.
campaign-launcher/client/src/components/LaunchCampaignButton/index.tsx Simplifies launch CTA and removes staking/tooltips gating logic.
campaign-launcher/client/src/components/JoinedCampaigns/index.tsx Removes legacy joined campaigns table component.
campaign-launcher/client/src/components/HowToLaunch/index.tsx Removes legacy “How to launch” section.
campaign-launcher/client/src/components/Header/index.tsx Rebuilds header nav links/styles and updates connect wallet sizing.
campaign-launcher/client/src/components/Footer/index.tsx Updates footer layout and adds bottom padding when mobile nav is visible.
campaign-launcher/client/src/components/FAQ/index.tsx Adds new FAQ accordion section.
campaign-launcher/client/src/components/ExchangeSelect/index.tsx Removes legacy exchange select component.
campaign-launcher/client/src/components/DashboardWidgets/index.tsx Adds new dashboard widgets (rewards pool, volume, wallet/CTA).
campaign-launcher/client/src/components/DashboardStats/index.tsx Removes legacy dashboard stats section.
campaign-launcher/client/src/components/CryptoPairEntity/index.tsx Minor typography prop change for symbol rendering.
campaign-launcher/client/src/components/CryptoEntity/index.tsx Minor typography prop change for label rendering.
campaign-launcher/client/src/components/ConnectWallet/index.tsx Redesigns connect wallet UX; switches icon assets; adds mobile drawer.
campaign-launcher/client/src/components/CampaignsViewToggle/index.tsx Adds grid/table toggle control for campaigns feed.
campaign-launcher/client/src/components/CampaignsViewDropdown/index.tsx Removes legacy campaigns view dropdown.
campaign-launcher/client/src/components/CampaignsTabs/index.tsx Adds new tab strip for Active/Joined/Hosted/History.
campaign-launcher/client/src/components/CampaignsTable/index.tsx Redesigns campaigns table columns/CTA/actions.
campaign-launcher/client/src/components/CampaignsFilters/index.tsx Adds new filter drawer UI (network/type/exchange).
campaign-launcher/client/src/components/CampaignsFeed/index.tsx Adds feed wrapper to render cards (grid) or table view.
campaign-launcher/client/src/components/Campaigns/index.tsx Removes legacy campaigns section container component.
campaign-launcher/client/src/components/CampaignTimeline/index.tsx Adds timeline display component powered by new hook.
campaign-launcher/client/src/components/CampaignSymbol/index.tsx Tweaks symbol style sizes/weights.
campaign-launcher/client/src/components/CampaignStatusChip/index.tsx Adds new status chip component (colors currently placeholder).
campaign-launcher/client/src/components/CampaignCard/index.tsx Adds new campaign card layout for grid view.
campaign-launcher/client/src/components/CampaignCard/SkeletonView.tsx Adds skeleton card for loading state.
campaign-launcher/client/src/components/CampaignAddress/index.tsx Updates address display to a link-based design with optional copy.
campaign-launcher/client/src/components/AllCampaigns/index.tsx Removes legacy all-campaigns table/pagination component.
campaign-launcher/client/src/components/ActiveCampaignsFilter/index.tsx Removes legacy “active only” filter toggle component.
campaign-launcher/client/src/components/Account/index.tsx Adjusts account button sizing/padding for redesign.
campaign-launcher/client/src/components/AboutHuFi/index.tsx Adds “About HuFi” informational section + docs link.
campaign-launcher/client/src/assets/walletconnect.svg Removes old SVG asset (WalletConnect).
campaign-launcher/client/src/assets/walletConnect.png Adds new WalletConnect PNG asset.
campaign-launcher/client/src/assets/metamask.png Adds new MetaMask PNG asset.
campaign-launcher/client/src/assets/coinbase.svg Removes old SVG asset (Coinbase).
campaign-launcher/client/src/assets/coinbase.png Adds new Coinbase PNG asset.
campaign-launcher/client/src/App.tsx Adds /campaigns route and updates campaign details page import.
campaign-launcher/client/public/tableImage.png Included in PR (no diff shown).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +225 to +238
{isConnected && !isAlreadyJoined && (
<Button
variant="contained"
size="large"
color="primary"
fullWidth
sx={{
color: 'white',
bgcolor: 'error.main',
}}
>
Join
</Button>
)}
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

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

The "Join" button is displayed when connected and not already joined, but there’s no click handler/action. This makes the primary CTA non-functional; either hook it up to the join mutation flow or navigate to a screen where the user can complete joining.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

will be implemented later

Comment on lines +20 to +33
const FAQ_ITEMS: FaqItem[] = [
{
question: 'How do I add an API key?',
answer: 'How do I add an API key?',
},
{
question: 'How do I add an API key?',
answer: 'How do I add an API key?',
},
{
question: 'How do I add an API key?',
answer: 'How do I add an API key?',
},
];
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

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

FAQ_ITEMS currently contains repeated placeholder entries where the answer is identical to the question. If this is meant to be production UI, populate with real content or source it from configuration; otherwise consider adding a TODO and hiding the section until content is available to avoid shipping misleading UX.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

will be changed later

Comment on lines +243 to 252
{isConnected && (
<Button
variant="contained"
size="large"
color="error"
sx={{ width: 120 }}
>
Join
</Button>
)}
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

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

The new "Join" button is rendered for connected users, but it has no onClick / action, so it’s a dead control. Wire this up to the join flow (e.g., useJoinCampaign) or change it to a navigation action (e.g., to the campaign details join section) until joining is implemented here.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

will be implemented later

Comment on lines +46 to +52
const queryParams = filterFalsyQueryParams({
chain_id: appliedFilters.network,
status: tabFilter === TabFilter.ACTIVE ? CampaignStatus.ACTIVE : undefined,
launcher: tabFilter === TabFilter.HOSTED ? activeAddress : undefined,
limit,
skip,
}) as CampaignsQueryParams;
Copy link

Copilot AI Mar 12, 2026

Choose a reason for hiding this comment

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

The filters UI tracks campaignTypes and exchanges, but these selections are never applied to the campaigns query (only chain_id, status, and launcher are used). As-is, applying filters will change UI state/count without changing results; either include these filters in queryParams (and ensure the API supports them) or remove/disable the unused filter sections until supported.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

will be implemented later

@KirillKirill KirillKirill changed the title [Campaign Launcher UI] Redesign the app [Campaign Launcher UI] Redesign Dashboard and Campaigns pages Mar 12, 2026
@KirillKirill KirillKirill self-assigned this Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do not merge Merging is blocked

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants