Skip to content

fix(onboarding): prevent floating footer from overlapping bio textare…#28935

Draft
Adityakk9031 wants to merge 1 commit intocalcom:mainfrom
Adityakk9031:#28931
Draft

fix(onboarding): prevent floating footer from overlapping bio textare…#28935
Adityakk9031 wants to merge 1 commit intocalcom:mainfrom
Adityakk9031:#28931

Conversation

@Adityakk9031
Copy link
Copy Markdown

Linked Issue

Closes #28931

Summary

This fixes a responsive layout bug on onboarding "Add your details" where the floating action footer (Back / Continue) overlaps the Bio textarea on reduced-width windows (split-screen / half width).

Root Cause

The onboarding footer was rendered as an absolute overlay, while the content area had insufficient bottom padding. On smaller viewports, the last form field (Bio) could scroll underneath the footer.

Changes

  • Updated floating footer in apps/web/modules/onboarding/components/OnboardingCard.tsx
  • Switched footer container from absolute overlay to sticky bottom-0 in-flow behavior
  • Increased reserved content bottom spacing from pb-10 to pb-24 when floating footer is enabled

Expected Result

  • Continue button no longer overlaps the Bio textarea
  • Bio remains fully visible and interactive at smaller viewport widths

@github-actions
Copy link
Copy Markdown
Contributor

Welcome to Cal.diy, @Adityakk9031! Thanks for opening this pull request.

A few things to keep in mind:

  • This is Cal.diy, not Cal.com. Cal.diy is a community-driven, fully open-source fork of Cal.com licensed under MIT. Your changes here will be part of Cal.diy — they will not be deployed to the Cal.com production app.
  • Please review our Contributing Guidelines if you haven't already.
  • Make sure your PR title follows the Conventional Commits format.

A maintainer will review your PR soon. Thanks for contributing!

@github-actions github-actions bot added the 🐛 bug Something isn't working label Apr 19, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 19, 2026

📝 Walkthrough

Walkthrough

UI layout behavior for an onboarding card was adjusted: the footer no longer uses absolute overlay positioning and now participates in normal flow while sticking to the bottom. Server-side signup handlers (token-based and self-hosted flows) refined the existing-user conflict check to only treat a mismatch as a conflict when the existing user's invitedTo is non-null and differs from the token's team. The authentication sign-in callback removed the username presence check when identifying incomplete invited/placeholder users.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning Changes to signup handlers and auth options appear unrelated to the stated objective of fixing the onboarding footer overlap bug. Remove unrelated changes to calcomSignupHandler.ts, selfHostedHandler.ts, and next-auth-options.ts; these are outside the scope of fixing the floating footer layout issue.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title correctly describes the main change: fixing the floating footer overlap issue on the onboarding card.
Description check ✅ Passed The description clearly explains the bug, root cause, changes made, and expected result, all related to the onboarding footer overlap issue.
Linked Issues check ✅ Passed The PR directly addresses issue #28931 by fixing the footer overlap on the Bio textarea through layout changes to OnboardingCard.tsx.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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
Contributor

@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 (1)
apps/web/modules/onboarding/components/OnboardingCard.tsx (1)

85-85: Hard-coded rgba colors bypass theme tokens.

bg-[rgba(255,255,255,0.01)] is effectively transparent and, combined with the hard-coded shadow rgba values, won't adapt to dark mode the way theme tokens (e.g., bg-default/bg-muted with border-subtle) would. Since you're already touching this element, consider switching to the design-system tokens used elsewhere in the onboarding surface so the floating footer reads correctly across themes.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/modules/onboarding/components/OnboardingCard.tsx` at line 85, The
floating footer div in OnboardingCard.tsx uses hard-coded RGBA classes
(bg-[rgba(255,255,255,0.01)] and shadow-[...rgba(...)]) which won't respect dark
mode or design tokens; replace these with the design-system theme tokens used
elsewhere in the onboarding surface (for example use bg-default or bg-muted and
border-subtle / shadow-subtle token classes) so the background, border and
shadow adapt across themes, and remove the inline rgba shadow classes from the
sticky div to use the tokenized shadow classes instead.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@apps/web/modules/onboarding/components/OnboardingCard.tsx`:
- Line 85: The floating footer div in OnboardingCard.tsx uses hard-coded RGBA
classes (bg-[rgba(255,255,255,0.01)] and shadow-[...rgba(...)]) which won't
respect dark mode or design tokens; replace these with the design-system theme
tokens used elsewhere in the onboarding surface (for example use bg-default or
bg-muted and border-subtle / shadow-subtle token classes) so the background,
border and shadow adapt across themes, and remove the inline rgba shadow classes
from the sticky div to use the tokenized shadow classes instead.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d8e4cd4d-a108-47e6-90d9-7b6fe49f685d

📥 Commits

Reviewing files that changed from the base of the PR and between 9efd0e6 and b0af5f4.

📒 Files selected for processing (1)
  • apps/web/modules/onboarding/components/OnboardingCard.tsx

@Adityakk9031
Copy link
Copy Markdown
Author

Adityakk9031 commented Apr 19, 2026

@dhairyashiil have a look please

Copy link
Copy Markdown
Contributor

@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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/web/app/api/auth/signup/handlers/calcomSignupHandler.ts`:
- Around line 102-108: The if-statement that checks existingUser.invitedTo vs
foundToken.teamId (the block returning NextResponse.json with
SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS) is over-indented by one level; adjust
the indentation of that entire if block so it aligns with the surrounding code
inside the if (foundToken?.teamId) block (i.e., reduce one indentation level) to
satisfy Prettier/ESLint while keeping the logic (existingUser,
foundToken.teamId, SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS, NextResponse.json)
unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 003db49d-dd96-41b6-83f3-d1e87ba6cd0e

📥 Commits

Reviewing files that changed from the base of the PR and between b0af5f4 and 4ad14d1.

📒 Files selected for processing (3)
  • apps/web/app/api/auth/signup/handlers/calcomSignupHandler.ts
  • apps/web/app/api/auth/signup/handlers/selfHostedHandler.ts
  • packages/features/auth/lib/next-auth-options.ts

Comment on lines +102 to +108
if (
existingUser &&
existingUser.invitedTo !== null &&
existingUser.invitedTo !== foundToken.teamId
) {
return NextResponse.json({ message: SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS }, { status: 409 });
}
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.

⚠️ Potential issue | 🟡 Minor

Fix indentation — over-indented by one level.

Lines 102-108 are indented at 8 spaces while the surrounding block inside if (foundToken?.teamId) uses 6 spaces (see Lines 98-101 and 109). This will likely trip Prettier/ESLint and produce a noisy diff.

✏️ Proposed fix
-        if (
-          existingUser &&
-          existingUser.invitedTo !== null &&
-          existingUser.invitedTo !== foundToken.teamId
-        ) {
-          return NextResponse.json({ message: SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS }, { status: 409 });
-        }
+      if (
+        existingUser &&
+        existingUser.invitedTo !== null &&
+        existingUser.invitedTo !== foundToken.teamId
+      ) {
+        return NextResponse.json({ message: SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS }, { status: 409 });
+      }

The logic change itself mirrors selfHostedHandler.ts and matches the test-suite expectations — LGTM on behavior.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (
existingUser &&
existingUser.invitedTo !== null &&
existingUser.invitedTo !== foundToken.teamId
) {
return NextResponse.json({ message: SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS }, { status: 409 });
}
if (
existingUser &&
existingUser.invitedTo !== null &&
existingUser.invitedTo !== foundToken.teamId
) {
return NextResponse.json({ message: SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS }, { status: 409 });
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/app/api/auth/signup/handlers/calcomSignupHandler.ts` around lines
102 - 108, The if-statement that checks existingUser.invitedTo vs
foundToken.teamId (the block returning NextResponse.json with
SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS) is over-indented by one level; adjust
the indentation of that entire if block so it aligns with the surrounding code
inside the if (foundToken?.teamId) block (i.e., reduce one indentation level) to
satisfy Prettier/ESLint while keeping the logic (existingUser,
foundToken.teamId, SIGNUP_ERROR_CODES.USER_ALREADY_EXISTS, NextResponse.json)
unchanged.

Copy link
Copy Markdown
Member

@romitg2 romitg2 left a comment

Choose a reason for hiding this comment

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

please attach before/after screenshots

@romitg2 romitg2 marked this pull request as draft April 20, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛 bug Something isn't working size/XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Onboarding: Continue button overlaps bio textarea on smaller viewports

2 participants