Skip to content

Conversation

@idoshamun
Copy link
Member

@idoshamun idoshamun commented Jan 6, 2026

Summary

  • Implements a new side-by-side editing layout for job postings with real-time preview
  • Left panel shows editable form fields, right panel shows live preview in a browser-like frame
  • Mobile view uses tabs to switch between Edit and Preview modes

Key Features

  • Real-time preview: Form changes reflect instantly in the preview panel
  • Local draft persistence: Unsaved changes are stored in localStorage and restored on return
  • Inline company/recruiter editing: Edit company name, description, recruiter title and bio directly without modals
  • Scroll sync: Expanding a section in the edit panel scrolls the preview to the corresponding content
  • Browser preview frame: Preview shows how the job posting will appear on the actual jobs page

Preview domain

https://feat-side-by-side-opportunity-ed.preview.app.daily.dev

Phase 1 of the side-by-side editing experience:
- New edit page at /recruiter/[opportunityId]/edit with side-by-side layout
- Left panel: edit form with placeholder sections (~1/3 width)
- Right panel: live preview using existing JobPage (~2/3 width)
- Browser preview frame with URL bar and copy button
- Mobile: tabbed interface switching between Edit and Preview
- Form hooks with unified Zod schema and localStorage draft persistence
- Added previewMode prop to JobPage to disable edit UI in preview
Phase 2 implementation:
- Add RoleInfoSection with title, TLDR, keywords, and location fields
- Add JobDetailsSection with employment type, seniority, team size, and salary
- Add ContentSection as reusable rich text editor wrapper
- Add CompanySection and RecruiterSection with modal triggers
- Update OpportunityEditPanel to use collapsible sections
- Fix type definitions in useOpportunityEditForm hook
- Fix LazyModal.OpportunityEditModal -> LazyModal.OpportunityEdit
- Add warning to AGENTS.md about not running builds during dev
- Fix horizontal scroll in edit panel with overflow-x-hidden
- Combine Role Info and Job Details into single collapsible section
- Remove separator between location and employment type fields
- Stack salary inputs vertically to prevent overflow
- Add inline editing for company (name, description) and recruiter (title, bio)
- Remove modal-based editing for company/recruiter in favor of inline forms
- Fix info tip text wrapping and vertical centering
- Hide edit buttons in preview mode for company/recruiter sections
- Add padding to browser preview frame content area
@vercel
Copy link

vercel bot commented Jan 6, 2026

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

Project Deployment Review Updated (UTC)
daily-webapp Ready Ready Preview Jan 7, 2026 0:32am
1 Skipped Deployment
Project Deployment Review Updated (UTC)
storybook Ignored Ignored Jan 7, 2026 0:32am

@idoshamun
Copy link
Member Author

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

🤖 Generated with Claude Code

}: UseLocalDraftOptions): UseLocalDraftReturn {
const [lastSaved, setLastSaved] = useState<Date | null>(null);
const [initialDraft] = useState(() => loadDraft(opportunityId));
const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
Copy link
Member Author

Choose a reason for hiding this comment

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

We should have a debounce hook. Consider if it fits our use case

- Remove unused components (OpportunityEditHeader, OpportunityLivePreview, SideBySideEditLayout)
- Extract duplicated utilities to shared hooks (getOpportunityStateLabel, getOpportunityStateBadgeClass, formDataToMutationPayload)
- Remove verbose JSDoc comments and unnecessary inline comments throughout
… key pages

- Added `RecruiterFullscreenLayout` for a simplified layout experience
- Replaced `RecruiterSelfServeLayout` with `RecruiterFullscreenLayout` in several recruiter pages
- Updated headers across Prepare, Edit, and Analyze pages with new designs and actions
- Enhanced side-by-side edit UX with synchronized section expansion
- Improved accordion component to support controlled state and callbacks
- Added `OpportunityFullscreenLayout` for a consistent user experience.
- Updated headers across multiple recruiter pages (`Prepare`, `Edit`, `Analyze`, etc.) to match new designs.
- Changed navigation paths for drafts and edit states.
- Simplified `RecruiterSection` and `CompanySection` with inline editing and cleaner UI.
- Removed legacy modal-based editing in favor of streamlined workflows.
- Improved various small UI/UX details (header logos, button alignment, and hover states).
- Adjusted container styles in `ContentSection` for consistency (`!rounded-none`, `!border-0`, `!bg-transparent`).
- Added padding and organization improvements to collapsible sections (`Role Info`, `Job Details`, and linked profiles).
- Removed unnecessary padding and streamlined layout for cleaner UI.
- Introduced Undo and Redo buttons to the `RichTextToolbar` with corresponding icons.
- Enhanced `ToolbarButton` to support a disabled state.
- Updated icon exports to include `Undo` and `Redo`.
@idoshamun idoshamun marked this pull request as ready for review January 7, 2026 10:56
@idoshamun idoshamun requested a review from a team as a code owner January 7, 2026 10:56
- Removed unnecessary `!bg-transparent` in `ContentSection` styles.
- Updated `OpportunityEditPanel` with new borders and reduced gaps for cleaner layout.
- Refined collapsible section padding and alignment.
…creen layout

- Removed `OpportunityFullscreenLayout` and associated logic.
- Removed `useLocalDraft` hook and its usage across recruiter pages.
- Updated `OpportunityReimportModal` and `Job Review Queue` with revised labels for job posting terminology.
… updates, and redirect

- Added `usePrompt` to display validation errors as user-friendly modals.
- Introduced redirection to matches page upon successful state transition.
- Updated opportunity state to `IN_REVIEW` after saving changes.
- Adjusted save button behavior and labels for better clarity (`Submit for review`).
…LinkedProfileSection`

- Removed `CompanySection` and `RecruiterSection` components.
- Added `LinkedProfileSection` to consolidate shared logic for linked profile display and editing.
- Updated `OpportunityEditPanel` to use a config-driven approach for content sections and linked profiles.
- Improved maintainability by reducing duplication and centralizing profile management logic.
@idoshamun idoshamun merged commit d5dd052 into main Jan 7, 2026
11 checks passed
@idoshamun idoshamun deleted the feat/side-by-side-opportunity-edit branch January 7, 2026 12:35
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.

2 participants