Skip to content

feat(leads): campaign-grouped leads with table, infinite scroll, and CRUD actions - #30

Merged
anujeet98 merged 8 commits into
mainfrom
feat/leads-grouped-by-campaign
Aug 12, 2026
Merged

feat(leads): campaign-grouped leads with table, infinite scroll, and CRUD actions#30
anujeet98 merged 8 commits into
mainfrom
feat/leads-grouped-by-campaign

Conversation

@Rishavraaj

@Rishavraaj Rishavraaj commented Aug 7, 2026

Copy link
Copy Markdown
Member

Summary

  • Group leads by campaign on the leads list page with campaign name + lead count
  • Campaign leads table with columns: Name, Company, Title, Email, Status, Source, ICP Profile, Actions
  • Infinite scroll on campaign leads table (50/page)
  • Add Lead sheet on both leads list page and campaign leads page
  • Revert action for converted leads (also deletes the associated deal on backend)
  • Action buttons use icon tooltips (convert → deal, revert, view deal, delete)
  • ICP Profile cell links to /icps/[id]; Name cell links to /leads/[id]
  • Hover underline on name columns across leads, campaigns, and ICP list pages
  • Sidebar nav order: Deals → ICPs → Campaigns → Leads
  • Removed unused LeadsList component and getTableViewLeadsInfinite query

Changes

Backend

  • leads.service.ts: Revert now deletes the associated deal before unlinking

Frontend

  • LeadLists.tsx: Campaign-grouped leads page with Add Lead sheet
  • LeadsInList.tsx: Full column set, infinite scroll, tooltips, create/revert wired
  • LeadDetail.tsx: Revert button for converted leads
  • application-layout.tsx: Sidebar nav reordered
  • query-options.ts: Added getLeadsInfinite, removed unused exports
  • CampaignsList.tsx, IcpList.tsx: Hover underline on name column

Test plan

  • Leads page shows campaigns grouped with lead count
  • Clicking campaign row navigates to /leads/campaign/[id]
  • Campaign leads table shows all columns correctly
  • Infinite scroll loads more leads on scroll
  • Add Lead sheet opens and creates lead successfully
  • Convert to deal works; Revert removes deal and resets status
  • ICP Profile cell links to correct ICP detail page
  • Name cell links to lead detail page
  • Hover underline visible on name in leads, campaigns, ICP lists

🤖 Generated with Claude Code

Rishavraaj and others added 8 commits August 11, 2026 15:34
- Backend: LeadsRepository.findLists() groups leads by campaign with counts
- Backend: GET /leads/lists endpoint
- Frontend: /leads shows LeadLists table (campaigns with lead counts, click to drill in)
- Frontend: /leads/campaign/[campaignId] shows LeadsInList table with
  name/email/company/title/status/created columns + convert/delete actions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add name/company/title/email/status/source/icp profile/actions columns to campaign leads table
- Name column links to lead detail, lighter text on secondary fields
- Wire revert button in table and detail page for converted leads
- Backend revert now deletes the associated deal
- Move Leads below Campaigns in sidebar nav

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Action buttons use TableActionButton with icons and tooltips
- ICP profile cell links to /icps/[id]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…p lists

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…Infinite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Rishavraaj
Rishavraaj force-pushed the feat/leads-grouped-by-campaign branch from 86feea4 to acedd09 Compare August 11, 2026 10:48
@Rishavraaj Rishavraaj changed the title feat(leads): group leads by campaign as lead lists with table UI feat(leads): campaign-grouped leads with table, infinite scroll, and CRUD actions Aug 11, 2026
@anujeet98
anujeet98 merged commit e517187 into main Aug 12, 2026
1 check passed
@anujeet98
anujeet98 deleted the feat/leads-grouped-by-campaign branch August 12, 2026 03:29
@Rishavraaj Rishavraaj self-assigned this Aug 12, 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.

2 participants