StealThis .dev

Portfolio — Contact / Hire-me CTA + Form

A conversion-minded contact block for the foot of any portfolio. A bold Let’s work together headline sits beside a live availability badge, a copy-email button and a social row, paired with a compact hire-me form — name, email, project-type select and message — that validates inline on blur and submit. Vanilla JS shows friendly field errors, a character counter, a clipboard copy with toast, and an animated success state confirming a reply within 24h. Neutral Inter base, accessible, responsive.

Open in Lab
html css vanilla-js
Targets: JS HTML

Code

Contact / Hire-me CTA + Form

A drop-in contact section built to convert. On the left, a bold Let’s work together headline anchors a friendly pitch, a pulsing availability badge (“Available from August · 2 slots left”), a one-click copy-email button, and a row of social links. On the right, a compact hire-me form collects a name, email, project-type select and message — everything you need to start a conversation, nothing you don’t.

Every interaction works. Fields validate on blur and on submit with plain-language errors (“That doesn’t look like an email.”), clear once corrected, and the message box carries a live character counter. Submitting flips the panel to an animated success state — a drawn checkmark and a personalised “Thanks — I’ll reply within 24h”, with a Send another message reset. The email button copies to the clipboard and confirms with a toast, falling back gracefully where the Clipboard API is unavailable.

It ships on the neutral Inter portfolio base, collapses from two columns to one on tablets, keeps WCAG AA contrast with visible focus rings and a skip link, moves focus to the success heading for screen readers, and respects prefers-reduced-motion. No images or external assets beyond the Google Fonts link.

Illustrative portfolio — fictional person and projects.