Skip to content

Careers

Careers Application

A role's title, summary and lists beside an application form with sending, success and error states.

Layout and motion from the Nitip template — see it in context

Installation

$ npx shadcn@latest add https://framebrick.co/r/blocks/careers-application.json

Usage

import { CareersApplication } from "@/components/careers-application";

<CareersApplication
  as="h1"
  title="Paid media specialist"
  summary="…"
  onSubmit={async (data) => {
    const res = await fetch("/api/apply", { method: "POST", body: data });
    if (!res.ok) throw new Error("Failed");
  }}
/>

Props

PropTypeDefaultDescription
as"h1" | "h2""h2"Heading level of the role title — h1 when the block opens the page.
title / summarystring—The role, and the text under the divider. The position field is prefilled with the title.
lists{ title, items[] }[]—Responsibilities, requirements, benefits — h3 + bulleted list each.
formTitlestringSubmit your applicationHeading of the form (h3).
onSubmit(data: FormData) => Promise<void>—Sends the form; throw to show the error state. Without it the form only pretends to send.
labels{ position, social, additional, message, submit, sending, success, error }—Field-group titles and button states.
classNamestring—Classes for the <section>.
  • From 1024px the lists take 450px at the left and the form half the row (up to 800px) at the right; below that they stack.
  • Fields: first and last name, email (required), phone, the position (prefilled), LinkedIn (required), other social, website and a message — shadcn input, textarea and label.
  • While sending the button shows a spinner and is disabled; success says Thank you and resets the fields; failure says Something went wrong. Both are announced; typing again resets the button.

AI prompt

Paste into v0, Lovable, Bolt or Claude to rebuild this block in your own project.

Create a React + Tailwind CSS block called CareersApplication (Next.js, shadcn input / textarea / label / button).
- <section className="py-(--section-y)">, container mx-auto max-w-(--container) px-(--gutter), column gap-12.
- Title: an h2 (or h1) font-heading text-h1 semibold, an <hr>, a text-lead muted summary max-w-xl.
- Below: stacked; from 1024px a row, justify-between: the lists (450px) — each with border-t, py-5, an h3 (font-heading text-h3) and a
  muted bulleted list — and the form (half the row, max 800px): an h3 heading; a 2-column grid from 768px of First name*, Last name*,
  Email*, Phone, then Job position across both columns (prefilled with the role); a "Social media links" group (role="group",
  labelled): LinkedIn URL*, Other social media, Website; an "Additional information" group: a 200px message textarea; a full-width
  submit button (h-10).
- Submit: preventDefault, pending → spinner + "Sending…" and disabled; success → "Thank you" and form.reset(); error → "Something went
  wrong" on a light destructive fill; a role="status" sr-only line announces the result; typing resets the button to "Submit".
- Only shadcn variables and block tokens.

Be the first to know

Get new templates and components first

One short email when we release a template or a free component. No spam — unsubscribe anytime.

We use your email only for Framebrick updates. Privacy policy