- Notifications
You must be signed in to change notification settings - Fork11.2k
feat: organization v3 redesign onboarding#24967
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
github-actionsbot commentedNov 6, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Hey there and thank you for opening this pull request! 👋🏼 We require pull request titles to follow theConventional Commits specification and it looks like your proposed title needs to be adjusted. Details: |
sean-brydon commentedNov 6, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
1 issue found across 5 files
Prompt for AI agents (all 1 issues)
Understand the root cause of the following 1 issues and fix them.<file name="apps/web/modules/onboarding/components/OnboardingCard.tsx"><violation number="1" location="apps/web/modules/onboarding/components/OnboardingCard.tsx:17">Reducing the header padding to px-1 misaligns the card header with the content/footer (still using px-5), so the title sits noticeably closer to the edge. Please keep the padding consistent at px-5 for visual alignment.</violation></file>React with 👍 or 👎 to teach cubic. Mention@cubic-dev-ai to give feedback, ask questions, or re-run the review.
Uh oh!
There was an error while loading.Please reload this page.
vercelbot commentedNov 6, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
The latest updates on your projects. Learn more aboutVercel for GitHub. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Reviewed changes from recent commits (found 4 issues).
4 issues found across 11 files
Prompt for AI agents (all 4 issues)
Understand the root cause of the following 4 issues and fix them.<file name="apps/web/modules/onboarding/components/InviteOptions.tsx"><violation number="1" location="apps/web/modules/onboarding/components/InviteOptions.tsx:16">Rule violated: **Enforce Singular Naming for Single-Item Functions**`InviteOptions` returns a single JSX element but the function name is plural, violating the Enforce Singular Naming for Single-Item Functions rule. Rename the export to a singular form so that the name aligns with the single return value.</violation><violation number="2" location="apps/web/modules/onboarding/components/InviteOptions.tsx:78">The copy-invite button is permanently disabled; use isSubmitting to control the disabled state so the handler remains reachable.</violation></file><file name="apps/web/modules/onboarding/components/RoleSelector.tsx"><violation number="1" location="apps/web/modules/onboarding/components/RoleSelector.tsx:20">The ToggleGroup is wrapped in `hidden md:flex`, so on small screens the entire role selector disappears and users cannot change the invite role. Remove the `hidden` so the control remains visible on mobile.</violation></file><file name="apps/web/modules/onboarding/components/EmailInviteForm.tsx"><violation number="1" location="apps/web/modules/onboarding/components/EmailInviteForm.tsx:67">Replace the hard-coded `rick@cal.com` fallback with a localized string via `t()` so the placeholder can be translated.</violation></file>React with 👍 or 👎 to teach cubic. Mention@cubic-dev-ai to give feedback, ask questions, or re-run the review.
Uh oh!
There was an error while loading.Please reload this page.
| color="secondary" | ||
| className="h-8 w-full justify-center rounded-[10px]" | ||
| onClick={onCopyInviteLink} | ||
| disabled> |
cubic-dev-aibotNov 6, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The copy-invite button is permanently disabled; use isSubmitting to control the disabled state so the handler remains reachable.
Prompt for AI agents
Address the following comment on apps/web/modules/onboarding/components/InviteOptions.tsx at line 78:<comment>The copy-invite button is permanently disabled; use isSubmitting to control the disabled state so the handler remains reachable.</comment><file context>@@ -0,0 +1,89 @@+ color="secondary"+ className="h-8 w-full justify-center rounded-[10px]"+ onClick={onCopyInviteLink}+ disabled>+ <div className="flex items-center gap-1">+ <Icon name="link" className="h-4 w-4" /></file context>Uh oh!
There was an error while loading.Please reload this page.
| <TextField | ||
| labelSrOnly | ||
| {...form.register(`invites.${index}.email`)} | ||
| placeholder={emailPlaceholder||`rick@cal.com`} |
cubic-dev-aibotNov 6, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Replace the hard-codedrick@cal.com fallback with a localized string viat() so the placeholder can be translated.
Prompt for AI agents
Address the following comment on apps/web/modules/onboarding/components/EmailInviteForm.tsx at line 67:<comment>Replace the hard-coded `rick@cal.com` fallback with a localized string via `t()` so the placeholder can be translated.</comment><file context>@@ -0,0 +1,111 @@+ <TextField+ labelSrOnly+ {...form.register(`invites.${index}.email`)}+ placeholder={emailPlaceholder || `rick@cal.com`}+ type="email"+ size="sm"</file context>82f4a45 toe2edcedCompare4a62c2f to5d9e16cCompare5d9e16c to07377a5Compare965247a toa64fe5bCompare07377a5 to1947b46Comparea64fe5b to3ff98feCompare1947b46 to41fe259Compare3ff98fe toabe5192Comparea6d14e6 to6a98ea1Comparegraphite-appbot commentedNov 12, 2025 • edited by sean-brydon
Loading Uh oh!
There was an error while loading.Please reload this page.
edited by sean-brydon
Uh oh!
There was an error while loading.Please reload this page.
Merge activity
|
ad887b5 to2ef9ba3Compare7804fad toe6e6784Compare…# Please enter the commit message for your changes. Lines starting
ef60b48 to92ed6a2Compare19641ff intomainUh oh!
There was an error while loading.Please reload this page.
- Redesigns the organization onboarding flow by merging the brand and details pages- Improves the organization details page with a scrollable interface and visual previews- Adds a new organization-specific browser preview component- The PR replaces the separate brand page with an integrated details page that includes logo and banner uploads- The new organization browser view shows a preview of the organization profile with the selected branding- [ ] I have self-reviewed the code.- [ ] I have updated the developer docs in /docs if this PR makes changes that would require a documentation change. If N/A, write N/A here and check the checkbox.- [ ] I confirm automated tests are in place that prove my fix is effective or that my feature works.- Go through the organization onboarding flow- Test uploading logos and banners- Verify that the organization browser preview updates in real-time with the form inputs- Confirm that the form validation works correctly for organization name and slug- Check that the scrollable interface works properly with fade effects at top and bottom- I have read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)- My code follows the style guidelines of this project- I have commented my code, particularly in hard-to-understand areas- I have checked if my changes generate no new warnings<!-- This is an auto-generated description by cubic. -->---Split organization brand from the details step and added live previews for organizations and teams. Revamped org/team invites with reusable components, a dedicated email-invite page, and a CSV upload modal.- **New Features** - Separate Brand step with logo, banner, and color; instant org preview via OnboardingOrganizationBrowserView. - Teams browser preview added; invites include email substep (/onboarding/organization/invite/email, /onboarding/teams/invite/email), CSV upload (template + parsing), and Google Workspace (behind flag). - Shared components (EmailInviteForm, InviteOptions, RoleSelector) used across org and team invites.- **Refactors** - Updated org flow: Details → Brand → Teams → Invites; OnboardingLayout now supports dynamic step counts (org=4, team=3, personal=2). - UI polish (OnboardingCard header padding) and org-specific previews now replace generic views across details/brand/invites/teams; ensured org welcome modal takes precedence over personal.<sup>Written for commitd9b55c0. Summary will update automatically on new commits.</sup><!-- End of auto-generated description by cubic. -->

Uh oh!
There was an error while loading.Please reload this page.
What does this PR do?
Visual Demo (For contributors especially)
Image Demo:
Mandatory Tasks (DO NOT REMOVE)
How should this be tested?
Checklist
Summary by cubic
Split organization brand from the details step and added live previews for organizations and teams. Revamped org/team invites with reusable components, a dedicated email-invite page, and a CSV upload modal.
New Features
Refactors
Written for commitd9b55c0. Summary will update automatically on new commits.