Skip to content

feat(marketing): role gate modal on Launch App#11

Merged
0xdevcollins merged 3 commits into
mainfrom
feat/launch-app-role-gate-modal
Jun 12, 2026
Merged

feat(marketing): role gate modal on Launch App#11
0xdevcollins merged 3 commits into
mainfrom
feat/launch-app-role-gate-modal

Conversation

@0xdevcollins

@0xdevcollins 0xdevcollins commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Clicking Launch App in the marketing header now opens a role gate modal ("Choose how you want to explore Boundless") instead of routing straight to /dashboard. The visitor picks Contributor or Organiser, then Continue lands them in /dashboard?role=<role>. Implements the Figma design (modal, option card).

Changes

Launch App role gate modal

  • New LaunchAppModal built on the Dialog, OptionCard and PillButton primitives; Continue is disabled until a role is chosen (disabled style matches the Figma spec exactly).
  • Imports the two 3D illustrations (coin, briefcase) from Figma as self-contained SVGs under public/illustrations, rendered via next/image.
  • Wires all three Launch App entry points (desktop CTA, mobile actions, mobile drawer) to open the modal.
  • Full screen on mobile with a close button; centered 520px card on larger viewports.

Design-token + link cleanups (separate commit)

  • Replace hardcoded hex with token classes (success-500, neutral-400/700, white/8) across input, textarea, option-card, and marketing surfaces.
  • Correct GitHub org, Discord, Telegram, LinkedIn and docs URLs to their live destinations.

Testing

  • npm run typecheck — pass
  • npm run lint — pass (one pre-existing warning in an untouched file)
  • npm run test — 14 passed
  • npm run build — pass

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added a "Launch App" modal and wired desktop/mobile CTA buttons to open it so users choose a role before entering the app.
  • Documentation
    • Updated external documentation, FAQs, and social/profile links.
  • Style
    • Refined color tokens and background utilities across navigation, inputs, textareas, cards, CTA pills, avatar badge, and discovery/opportunity UI elements.

0xdevcollins and others added 2 commits June 12, 2026 16:51
Replace hardcoded hex values with the corresponding token classes
(success-500, neutral-400/700, white/8) across input, textarea,
option-card and marketing surfaces, and correct the GitHub org,
Discord, Telegram, LinkedIn and docs URLs to the live destinations.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clicking Launch App in the marketing header now opens a role gate
modal ("Choose how you want to explore Boundless") instead of routing
straight to the dashboard. The visitor picks Contributor or Organiser,
then Continue lands them in /dashboard for that role.

- New LaunchAppModal built on the Dialog, OptionCard and PillButton
  primitives; Continue is disabled until a role is chosen.
- Imports the two 3D illustrations (coin, briefcase) from Figma as
  self-contained SVGs under public/illustrations.
- Wires all three Launch App entry points (desktop, mobile actions,
  mobile drawer) to open the modal.
- Full screen on mobile with a close button; centered 520px card on
  larger viewports.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
boundless-v2 Ready Ready Preview, Comment Jun 12, 2026 4:12pm

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2b82ee13-b809-4728-9071-08986233e6d0

📥 Commits

Reviewing files that changed from the base of the PR and between ea0e05f and 4dddf6f.

📒 Files selected for processing (2)
  • src/features/discover/components/discover-header.tsx
  • src/features/marketing/components/launch-app-modal.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/features/discover/components/discover-header.tsx
  • src/features/marketing/components/launch-app-modal.tsx

📝 Walkthrough

Walkthrough

Adds a new Launch App modal (role selection) and integrates it into the site header/mobile menu; replaces multiple hard-coded color utilities with design-system token classes across UI components; updates marketing/navigation and SITE_SOCIALS external URLs.

Changes

Launch App Modal & Design Token Migration

Layer / File(s) Summary
Launch App Modal Feature
src/features/marketing/components/launch-app-modal.tsx, src/features/marketing/index.ts, src/components/layout/site-header.tsx
New LaunchAppModal renders a contributor/organiser role-selection dialog with selectable OptionCards and a disabled-until-selected Continue button. SiteHeader adds launchOpen state and wires desktop/mobile "Launch App" CTAs to open the modal. MobileMenu accepts an onLaunch callback to open the modal when closing the mobile menu.
Design System Token Migration
src/components/ui/input.tsx, src/components/ui/option-card.tsx, src/components/ui/textarea.tsx, src/components/layout/app-nav.tsx, src/features/marketing/components/cta-pill.tsx, src/features/discover/components/discover-header.tsx, src/features/discover/components/opportunity-card.tsx, src/features/onboarding/components/avatar-upload.tsx, src/features/onboarding/components/crop-photo-modal.tsx, src/features/onboarding/components/role-gate-modal.tsx
Replaces hard-coded hex colors and bracketed opacity utilities with design tokens and token-based utilities (e.g., text-success-500, text-primary-700, text-info-500, text-neutral-*, bg-ink-soft, bg-white/8, border-neutral-700/50) across inputs, option cards, discover cards, onboarding modals, and header chips.
External URLs and Navigation Configuration
src/config/marketing-nav.ts, src/lib/site.ts
Updates Brand Kit GitHub link to boundlessfi, moves Documentation to https://docs.boundlessfi.xyz, adds an FAQs entry in footer Resources, and replaces Discord/LinkedIn/Telegram and SITE_SOCIALS URLs with new destinations.

Sequence Diagram

sequenceDiagram
  participant User
  participant SiteHeader
  participant LaunchAppModal
  participant Dashboard
  User->>SiteHeader: Click "Launch App" button
  SiteHeader->>SiteHeader: Set launchOpen=true
  SiteHeader->>LaunchAppModal: Render with open=true
  User->>LaunchAppModal: Select role (contributor/organiser)
  User->>LaunchAppModal: Click Continue
  LaunchAppModal->>Dashboard: Navigate to /dashboard?role=selected
  LaunchAppModal->>SiteHeader: onOpenChange(false)
Loading

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly Related PRs

Poem

🐰 A modal blooms where roles decide the way,
Tokens chase the hexes, bright as day,
Links find new homes and options gleam,
A rabbit cheers the tidy theme,
Boundless hops forward, light and spry.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 76.92% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(marketing): role gate modal on Launch App' directly and clearly summarizes the main change: adding a role-gate modal feature to the Launch App button in the marketing header.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/launch-app-role-gate-modal

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/features/discover/components/opportunity-card.tsx (1)

23-28: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Incomplete color token migration: STATUS_COLOR constant must be updated for consistency.

While lines 118 and 136 correctly migrate individual span colors to design tokens (text-primary-700, text-info-500), the STATUS_COLOR constant (lines 23–28) still contains hard-coded hex values (text-[#21a879], text-[#3ba7ff], text-[#ae7f01]). These same colors are applied via StatusBadge (line 35, used on line 103), creating two sources of truth for the same colors—one old (hex), one new (token).

For design consistency and maintainability, migrate all entries in the STATUS_COLOR object to design tokens, or at minimum, replace the hex values that match your new tokens:

  • open: 'text-[#21a879]'text-primary-700
  • applications: 'text-[#3ba7ff]'text-info-500
  • review: 'text-[#ae7f01]' → (verify the warning/caution token equivalent)

Also applies to: 103-103

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/discover/components/opportunity-card.tsx` around lines 23 - 28,
STATUS_COLOR still uses hard-coded hex classes; update the mapping for
OpportunityCardStatus in the STATUS_COLOR constant to use design tokens used
elsewhere (so StatusBadge and inline spans share the same tokens). Replace
'open: text-[`#21a879`]' with 'text-primary-700', 'applications: text-[`#3ba7ff`]'
with 'text-info-500', and change 'review: text-[`#ae7f01`]' to the appropriate
warning/caution token used in your design system (e.g., text-warning-600 or the
project's equivalent), ensuring STATUS_COLOR is the single source of truth
referenced by StatusBadge and any spans in OpportunityCard.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/features/marketing/components/launch-app-modal.tsx`:
- Around line 28-43: ROLES array has inconsistent punctuation in the RoleOption
description strings: the contributor description ends with a period while the
organiser description does not; update the organiser RoleOption (value:
'organiser', title: 'Organiser (Create & Host)') description to add a trailing
period so both descriptions match, ensuring consistent user-facing copy.

---

Outside diff comments:
In `@src/features/discover/components/opportunity-card.tsx`:
- Around line 23-28: STATUS_COLOR still uses hard-coded hex classes; update the
mapping for OpportunityCardStatus in the STATUS_COLOR constant to use design
tokens used elsewhere (so StatusBadge and inline spans share the same tokens).
Replace 'open: text-[`#21a879`]' with 'text-primary-700', 'applications:
text-[`#3ba7ff`]' with 'text-info-500', and change 'review: text-[`#ae7f01`]' to the
appropriate warning/caution token used in your design system (e.g.,
text-warning-600 or the project's equivalent), ensuring STATUS_COLOR is the
single source of truth referenced by StatusBadge and any spans in
OpportunityCard.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 84f4e1aa-90a1-44c4-b4ff-7fdfaed303fc

📥 Commits

Reviewing files that changed from the base of the PR and between 66a3009 and ea0e05f.

⛔ Files ignored due to path filters (3)
  • public/icons/coin.svg is excluded by !**/*.svg
  • public/illustrations/role-contributor.svg is excluded by !**/*.svg
  • public/illustrations/role-organiser.svg is excluded by !**/*.svg
📒 Files selected for processing (15)
  • src/components/layout/app-nav.tsx
  • src/components/layout/site-header.tsx
  • src/components/ui/input.tsx
  • src/components/ui/option-card.tsx
  • src/components/ui/textarea.tsx
  • src/config/marketing-nav.ts
  • src/features/discover/components/discover-header.tsx
  • src/features/discover/components/opportunity-card.tsx
  • src/features/marketing/components/cta-pill.tsx
  • src/features/marketing/components/launch-app-modal.tsx
  • src/features/marketing/index.ts
  • src/features/onboarding/components/avatar-upload.tsx
  • src/features/onboarding/components/crop-photo-modal.tsx
  • src/features/onboarding/components/role-gate-modal.tsx
  • src/lib/site.ts

Comment thread src/features/marketing/components/launch-app-modal.tsx
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 2 file(s) based on 1 unresolved review comment.

Files modified:

  • src/features/discover/components/discover-header.tsx
  • src/features/marketing/components/launch-app-modal.tsx

Commit: 4dddf6ff1df6a7ea39f8de63687e8c43f1ce6b5e

The changes have been pushed to the feat/launch-app-role-gate-modal branch.

Time taken: 3m 3s

Fixed 2 file(s) based on 1 unresolved review comment.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
@0xdevcollins 0xdevcollins merged commit 0cbd728 into main Jun 12, 2026
5 checks passed
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.

1 participant