Job Application Form

Apply Now

Join our engineering team

We're excited you're interested in joining us. Fill out the form below and we'll get back to you within 5 business days.

Drop your resume here or click to upload

PDF, DOC up to 10MB

Senior Frontend Engineer

Engineering
Remote
Full-time
Back to all positions
About this block

Job Application FormPRO

Job application form with input fields, file upload area, and position summary sidebar. Complete apply page layout for career sites.

Careers17: Job Application Form

A two-column apply page that renders a badge, <strong>-aware heading, and description above a submit form built from a fields array (text inputs plus one textarea type), a fixed drag-and-drop resume dropzone, and a full-width submit button, alongside a sidebar card summarizing the open position with department, location, and type rows plus a "Back to all positions" link.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/careers17?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/careers17?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/careers17.tsx, plus the badge, button, input, label, and textarea shadcn/ui primitives it uses for the section eyebrow, submit and sidebar buttons, form inputs, field labels, and the multiline cover-letter field.

Quick start

The installed file exports careers17Demo alongside the block: the exact props behind the preview above. Spread it to get a working application form in one line.

tsx
import { Careers17, careers17Demo } from "@/components/beste/block/careers17";

export default function Page() {
  return <Careers17 {...careers17Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Careers17 } from "@/components/beste/block/careers17";

export default function Page() {
  return (
    <Careers17
      badge={{ label: "Apply Now", variant: "secondary" }}
      heading="Join our <strong>engineering team</strong>"
      description="Fill out the form below and we'll get back to you shortly."
      job={{
        title: "Senior Frontend Engineer",
        department: "Engineering",
        location: "Remote",
        type: "Full-time",
        href: "/careers",
      }}
      fields={[
        { label: "Full Name", type: "text", placeholder: "John Doe" },
        { label: "Email Address", type: "email", placeholder: "john@example.com" },
        { label: "Cover Letter", type: "textarea", placeholder: "Tell us why you're a great fit..." },
      ]}
      submitLabel="Submit Application"
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Eyebrow badge above the heading
headingstringSection heading, supports inline <strong>
descriptionstringIntro paragraph under the heading
jobJobSummarySidebar position summary card
fieldsFormField[][]Form rows rendered above the resume dropzone
submitLabelstring"Submit Application"Text on the full-width submit button
classNamestringExtra classes for the outer <section>
ts
type JobSummary = {
  title: string;
  department?: string;
  location?: string;
  type?: string;
  href?: string;
};

type FormField = {
  label: string;
  type: string;
  placeholder?: string;
};

Behavior notes

  • The header block (badge, heading, description) is only rendered when at least one of those three props is present; otherwise the form starts at the top of the left column.
  • heading is injected via dangerouslySetInnerHTML, so inline <strong> is honored and styled with the primary color; pass only trusted markup.
  • Each field renders a Textarea (fixed at rows={5}) when its type is exactly "textarea", and a standard Input with that type otherwise; the type string is passed straight through to the input.
  • The form's onSubmit calls e.preventDefault() and nothing else, so there is no submit callback, form state, or validation; the block collects no values and the integrator must wire up handling.
  • The "Resume" dropzone is presentational only: it is a static styled <div> with an upload icon and helper text, with no file input, onDrop, or click-to-upload behavior wired in.
  • The sidebar card renders only when job is provided, and each of its department, location, and type rows renders only when that field is set; the "Back to all positions" button appears only when job.href is present and links via next/link.
  • The left column spans two of three grid columns (lg:col-span-2) with the sidebar in the remaining column; below the lg breakpoint they stack.

Wiring the form up

This block ships the form markup only; state, validation, and submit are yours to add. Our guide wires the shadcn Field primitives to React Hook Form, TanStack Form, and Formisch on one field system.

More Careers blocks

View all Careers
PRO

careers33

HR Job Posting Detail

Formal HR job posting with responsibilities, qualifications, benefits, and sidebar summary. Corporate-style position detail page with apply CTA.

PRO

careers2

Job Openings Grid

Job openings grid with department badges, location tags, and apply buttons. Card-based layout for career pages.

PRO

careers8

Job Detail Page

Single job posting detail with responsibilities, requirements, nice-to-haves, and apply CTA. Full position description layout.

PRO

careers37

Job Alerts Signup

Email subscription form for job alerts with trust indicators. Captures candidate interest for future openings with clean card layout.

PRO

careers1

Job Listings List

Job listings section with role cards showing department, location, and employment type. Clean list layout with hover effects and apply buttons.

PRO

careers27

Speculative Application CTA

Bottom-of-page careers CTA for general applications with email, action buttons, and company highlight badges. Captures candidates without matching roles.