Skip to content

feat(demo): add 'Get Started' options for demo mode in AppTopBar and enhance PreviewUpsellModal#111

Merged
JoachimLK merged 1 commit into
mainfrom
feat/better-demo
Mar 16, 2026
Merged

feat(demo): add 'Get Started' options for demo mode in AppTopBar and enhance PreviewUpsellModal#111
JoachimLK merged 1 commit into
mainfrom
feat/better-demo

Conversation

@JoachimLK
Copy link
Copy Markdown
Contributor

@JoachimLK JoachimLK commented Mar 16, 2026

Summary

  • What does this PR change?
  • Why is this needed?

Type of change

  • Bug fix
  • Feature
  • Refactor
  • Docs
  • Chore

Validation

  • I tested locally
  • I added/updated relevant documentation
  • I verified multi-tenant scoping and auth behavior for affected API paths

DCO

  • All commits in this PR are signed off (Signed-off-by) via git commit -s

Summary by CodeRabbit

  • New Features

    • Added a Get Started menu to the top navigation offering Cloud Hosted and Self-Host deployment options.
    • Improved the upsell modal with distinct Cloud Hosted and Self-Host choices and relevant action links.
  • Improvements

    • Enhanced menu behavior to automatically close on navigation and outside clicks.
    • Optimized layout for both mobile and desktop views.

@railway-app railway-app Bot temporarily deployed to applirank / reqcore-pr-111 March 16, 2026 10:42 Destroyed
@railway-app
Copy link
Copy Markdown

railway-app Bot commented Mar 16, 2026

🚅 Deployed to the reqcore-pr-111 environment in applirank

Service Status Web Updated (UTC)
applirank ✅ Success (View Logs) Mar 16, 2026 at 10:45 am

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 16, 2026

📝 Walkthrough

Walkthrough

Two Vue components are updated to improve user onboarding and upsell presentation. AppTopBar.vue introduces a demo-mode Get Started menu with Cloud Hosted and Self-Host options, featuring click-outside detection and route-change cleanup. PreviewUpsellModal.vue restructures its layout to display Cloud and Self-Host options as prominent vertical cards instead of simple buttons.

Changes

Cohort / File(s) Summary
Demo-mode Get Started Menu
app/components/AppTopBar.vue
Adds isDemo computed property, showGetStartedMenu state, and outside-click handler for menu control. Introduces demo-specific Get Started dropdown and mobile panel with Cloud Hosted and Self-Host links. Integrates menu closing on route changes and component lifecycle events. Expands right-side actions to conditionally render Get Started CTA.
Upsell Modal Restructuring
app/components/PreviewUpsellModal.vue
Replaces two-button layout with vertical card stack. Cloud-hosted option becomes NuxtLink to /auth/fresh-signup with Cloud icon and descriptive text. Self-host option becomes anchor link to repository quick-start with Rocket icon. Updates explanatory text and adds GitHub link below options.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A menu appears, the Get Started way,
Cloud-hosted clouds or self-host today!
Click outside closes with graceful ease,
Modals transform to delight and please.
Onboarding hops to a better day! 🚀

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description contains only the template structure with empty summary and unchecked validation items, lacking the required implementation details explaining what changed and why. Fill in the Summary section with what was changed and why, select the appropriate Type of change (Feature), and confirm validation steps were performed or explain any blockers.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main changes: adding 'Get Started' options for demo mode in AppTopBar and enhancing PreviewUpsellModal, which aligns with the detailed changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/better-demo
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
app/components/AppTopBar.vue (2)

196-206: Consider adding ARIA attributes for accessibility.

The dropdown button and menu lack accessibility attributes (aria-expanded, aria-haspopup, aria-controls) that screen readers rely on to announce the dropdown state.

♿ Proposed accessibility improvement
 <button
+  aria-haspopup="true"
+  :aria-expanded="showGetStartedMenu"
   class="group inline-flex items-center gap-2 rounded-lg bg-gradient-to-r from-brand-600 to-violet-600 px-4 py-1.5 text-[13px] font-semibold text-white shadow-md shadow-brand-600/25 hover:shadow-lg hover:shadow-brand-600/30 active:shadow-sm transition-all duration-200 cursor-pointer border-0"
   `@click`="showGetStartedMenu = !showGetStartedMenu"
 >
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/components/AppTopBar.vue` around lines 196 - 206, The Get Started
dropdown button currently toggles showGetStartedMenu but lacks ARIA attributes;
update the button element (the one using `@click` and rendering Sparkles and
ChevronDown) to include aria-haspopup="menu", bind aria-expanded to
showGetStartedMenu, and add aria-controls referencing the id of the dropdown
menu; then ensure the dropdown menu element has a stable id, role="menu" (or
role appropriate for your menu), and manage aria-hidden or aria-labelledby based
on showGetStartedMenu so screen readers can detect open/closed state (use the
existing showGetStartedMenu reactive property and the existing menu container
element to wire these attributes).

236-249: Minor UX consideration: menu stays open after clicking external link.

Since the self-host link opens in a new tab, the route watcher doesn't trigger and the dropdown remains open. Users will need to click elsewhere to close it. This is acceptable behavior, but for a polished UX you could explicitly close the menu on click.

✨ Optional: close menu on external link click
 <a
   href="https://github.com/reqcore-inc/reqcore#quick-start"
   target="_blank"
   rel="noopener noreferrer"
   class="flex items-start gap-3 rounded-lg px-3 py-2.5 transition-colors hover:bg-surface-50 dark:hover:bg-surface-800/60 no-underline group/item"
+  `@click`="showGetStartedMenu = false"
 >
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/components/AppTopBar.vue` around lines 236 - 249, Add an explicit click
handler to the external link in AppTopBar.vue so the dropdown closes when the
link is clicked: add `@click`="closeMenu" (or `@click`="isMenuOpen = false" /
`@click`="$emit('update:open', false)" depending on your implementation) to the
<a> element, implement a closeMenu method that sets the menu state (e.g.,
isMenuOpen, showDropdown) to false or emits the appropriate close event, and
ensure the handler does not stop the default navigation (do not call
preventDefault) so the link still opens in a new tab.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@app/components/AppTopBar.vue`:
- Around line 196-206: The Get Started dropdown button currently toggles
showGetStartedMenu but lacks ARIA attributes; update the button element (the one
using `@click` and rendering Sparkles and ChevronDown) to include
aria-haspopup="menu", bind aria-expanded to showGetStartedMenu, and add
aria-controls referencing the id of the dropdown menu; then ensure the dropdown
menu element has a stable id, role="menu" (or role appropriate for your menu),
and manage aria-hidden or aria-labelledby based on showGetStartedMenu so screen
readers can detect open/closed state (use the existing showGetStartedMenu
reactive property and the existing menu container element to wire these
attributes).
- Around line 236-249: Add an explicit click handler to the external link in
AppTopBar.vue so the dropdown closes when the link is clicked: add
`@click`="closeMenu" (or `@click`="isMenuOpen = false" /
`@click`="$emit('update:open', false)" depending on your implementation) to the
<a> element, implement a closeMenu method that sets the menu state (e.g.,
isMenuOpen, showDropdown) to false or emits the appropriate close event, and
ensure the handler does not stop the default navigation (do not call
preventDefault) so the link still opens in a new tab.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 30dc298d-5ef0-4222-830f-b6091a5d9e22

📥 Commits

Reviewing files that changed from the base of the PR and between f0ae97f and e607520.

📒 Files selected for processing (2)
  • app/components/AppTopBar.vue
  • app/components/PreviewUpsellModal.vue

@JoachimLK JoachimLK merged commit 8c530cf into main Mar 16, 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