- Change login-cta Learn More button to navigate to /onboarding/information-request
- Redirect form submission to /login instead of homepage
- Move RequestSubmittedModal from home.tsx to login.tsx
- Update tests to follow conventions (use createRoutesStub)
Co-authored-by: openhands <openhands@all-hands.dev>
- Add isValidEmail function with proper regex validation (rejects weak emails like a@b)
- Add loading state with isSubmitting to prevent double-submission
- Disable submit button and show 'Submitting...' text during submission
- Add i18n translations for ENTERPRISE$FORM_SUBMITTING
- Add comprehensive tests for email validation and loading state
Co-authored-by: openhands <openhands@all-hands.dev>
- Fix use-is-on-intermediate-page test to check correct paths
(/onboarding/new-account-form and /onboarding/information-request)
- Fix information-request test to use correct i18n key
(ENTERPRISE$SELF_HOSTED_CARD_DESCRIPTION)
- Mock useTracking hook to avoid QueryClient dependency
Co-authored-by: openhands <openhands@all-hands.dev>
- Add trackEnterpriseLeadFormSubmitted function to use-tracking.ts
- Track form data on submit: requestType (saas/self-hosted), name, company, email, message
- Add inline styles to onboarding-layout.tsx to prevent FOUC
- Add 4 new tests for tracking behavior (25 total tests)
PostHog event: 'enterprise_lead_form_submitted'
Properties: request_type, name, company, email, message, plus common properties
Co-authored-by: openhands <openhands@all-hands.dev>
- Set desktop card dimensions: 438px width, 371.5px min-height
- Add rounded-2xl (16px border-radius) and border to cards
- Add separate short description for self-hosted card:
'Deploy OpenHands on your own infrastructure. Full control over data, compliance, and security.'
- Keep longer description for form page CTA card:
'Deploy OpenHands on your own infrastructure. Full control over your data, compliance, and security. Ideal for enterprises that require on-premises or private cloud deployment.'
- Add ENTERPRISE$SELF_HOSTED_CARD_DESCRIPTION i18n key with all 15 languages
Co-authored-by: openhands <openhands@all-hands.dev>
- Update form to navigate to '/' with state { showRequestSubmittedModal: true }
- Update HomeScreen to check location state and show modal
- Modal renders on homepage, not on form page
- Clear location state after modal closes to prevent re-showing on refresh
- Update tests for new navigation flow
Flow:
1. User fills form and clicks Submit
2. Navigate to homepage with state
3. Homepage renders modal overlay
4. User clicks Done/Close -> modal closes, state cleared
Co-authored-by: openhands <openhands@all-hands.dev>
- Create RequestSubmittedModal component matching design specs:
- 448x170px, black background, border-radius 6px
- Close button (X) at top right with 0.7 opacity
- Title: 'Request submitted' (18px semibold)
- Description text (14px, #8C8C8C)
- Done button to dismiss and navigate to homepage
- Update InformationRequestForm to show modal on successful submit
- Navigate to '/' (homepage) when modal is closed
- Add i18n translations for modal text (15 languages):
- ENTERPRISE$REQUEST_SUBMITTED_TITLE
- ENTERPRISE$REQUEST_SUBMITTED_DESCRIPTION
- ENTERPRISE$DONE_BUTTON
- MODAL$CLOSE_BUTTON_LABEL
- Add unit tests for RequestSubmittedModal (10 tests)
- Update form tests for modal behavior (22 tests)
Co-authored-by: openhands <openhands@all-hands.dev>
- Remove always-visible red asterisk from required fields
- Add showError prop to FormInput for conditional error display
- Add hasAttemptedSubmit state to track form submission attempts
- Show red border only when: showError=true AND required AND empty
- Add aria-invalid attribute for accessibility
- Prevent form submission when required fields are empty
- Update unit tests for new validation behavior
Co-authored-by: openhands <openhands@all-hands.dev>
- Revert ServerIcon back to StackedIcon in login-cta.tsx
- Revert ServerIcon back to StackedIcon in context-menu-cta.tsx
- Revert test name back to 'stacked icon'
This PR should only add stacked icon to new files, not rename
existing icon usage.
Co-authored-by: openhands <openhands@all-hands.dev>
- Add required prop to FormInput with red asterisk indicator
- Make all form fields required (name, company, email, message)
- Add aria-label and aria-required attributes to inputs
- Add aria-label to all buttons (Back, Submit, Learn More)
- Add role='group' to button container
- Fix logo size inconsistency (55px → 56px)
Co-authored-by: openhands <openhands@all-hands.dev>
- Add full description for self-hosted option including:
'Ideal for enterprises that require on-premises or private cloud deployment.'
- Updated all 15 language translations
Co-authored-by: openhands <openhands@all-hands.dev>
- Add gradient variant with 'standard' option to card.tsx
- Semi-transparent background (#0A0A0A80)
- Border-top color (#24242499)
- Box shadow for depth
- Radial gradient overlay via before pseudo-element
- Update information-request-form to use gradient='standard' variant
- Remove inline style overrides in favor of variant
Co-authored-by: openhands <openhands@all-hands.dev>
- Add wave.svg icon for form header
- Redesign form with side-by-side layout: form fields left, info card right
- Show different content based on request type (SaaS vs Self-hosted)
- Different titles, subtitles, and message placeholders per type
- Use Card component for info card section
- Submit navigates to home page (/)
- Back returns to card selection view
- Update i18n translations for all form labels and placeholders
Co-authored-by: openhands <openhands@all-hands.dev>
- Create InformationRequestForm component in features/onboarding
- Update information-request route to show form when Learn More is clicked
- Change back button to navigate to /login instead of browser history
- Add i18n translations for form fields (name, email, company, message)
- Form back button returns to card selection view
Co-authored-by: openhands <openhands@all-hands.dev>
The stacked.svg icon was mistakenly deleted in a previous commit
but is still needed by information-request.tsx.
Co-authored-by: openhands <openhands@all-hands.dev>
- Add hover='elevated' variant to Card component with proper gradients:
- Linear gradient background (180deg, #0F0F0F to #0A0A0A)
- Radial gradient overlay for subtle glow effect
- Border-top and box-shadow on hover
- Simplify onboarding routes: use index for onboarding-form
- Update onboarding-layout background to bg-black
- Simplify icon usage in information-request (remove wrapper div)
Co-authored-by: openhands <openhands@all-hands.dev>
- Add new route /onboarding/information-request for enterprise lead capture
- Create onboarding layout with shared dark background for onboarding routes
- Refactor onboarding routes to use layout pattern with child routes
- Add EnterpriseCard component with SaaS and Self-hosted options
- Add cloud.svg icon for Enterprise SaaS card
- Rename stacked.svg to server.svg (deleted stacked.svg)
- Update all usages of StackedIcon to ServerIcon
- Add i18n translations for all new text content (all languages)
- Add new paths to intermediate pages list
Co-authored-by: openhands <openhands@all-hands.dev>