Skip to content
Pinky UI

Email Template

A simple transactional email body — subscription, password reset, welcome, order confirmation, security alert — one column, one primary action.

  • surfaces
  • email
  • transactional
  • template
  • notification
Pinky UI

Subscription confirmed

You're on the list.

We'll send the next release notes straight to this inbox — no spam, unsubscribe any time.
Manage subscription
Sent to you@example.com because you subscribed at pinkyui.com.

Quick usage

usage
import { EmailTemplate } from "@pinky-ui/components";

<EmailTemplate
  brand="Pinky UI"
  eyebrow="Subscription confirmed"
  heading="You're on the list."
  body="We'll send the next release notes straight to this inbox — no spam, unsubscribe any time."
  ctaLabel="Manage subscription"
  ctaHref="#"
  footer="Sent to you@example.com because you subscribed at pinkyui.com."
/>

Presets

Subscription confirmation

Eyebrow + CTA to manage the subscription.

eyebrow={"Subscription confirmed"} ctaLabel={"Manage subscription"}

Password reset

Time-boxed CTA, no eyebrow.

heading={"Reset your password"} ctaLabel={"Reset password"}

Welcome

No CTA — a plain first-touch note.

heading={"Welcome to Pinky UI"}

Order confirmation

Eyebrow + order reference, CTA to the order detail.

eyebrow={"Order confirmed"} ctaLabel={"View order"}

Security alert

A new-device sign-in notice with a CTA to review activity.

eyebrow={"New sign-in detected"} ctaLabel={"Review activity"}

Payment failed

A billing notice with a CTA to fix the payment method.

eyebrow={"Payment unsuccessful"} ctaLabel={"Update payment method"}

Workspace invite

A collaboration invite naming who invited them and their role.

eyebrow={"Workspace invitation"} ctaLabel={"Join workspace"}

Install

Add @pinky-ui/components as a dependency, or use the CLI to copy this component's source directly into your project — no dependency to manage, fully editable.

shell
npm install @pinky-ui/components

Prefer to run the whole repository locally instead?

repository
git clone https://github.com/florash/Pinky-UI.git
cd Pinky-UI
npm install
npm run dev

Props

PropTypeDefaultDescription
headingReactNodeRequired. The email's one-line subject line, repeated as the body heading.
bodyReactNodeRequired. The message.
brandstringShown next to the logo mark in the header.
logoReactNodeOverrides the default gradient mark.
eyebrowstringSmall label above the heading, e.g. a status word.
ctaLabelstringRenders the primary button when given.
ctaHrefstring"#"Only meaningful with ctaLabel.
footerReactNodeSmall print below a divider — recipient address, unsubscribe line, company address.

Accessibility

  • Semantic h1 for the heading; a real <a> for the CTA, not a styled span.
  • The React component itself is layout only, not email-safe markup (no table structure, no inlined styles) — it's for previewing on the site. The separate emailTemplateHtml() export renders the same content as a real table-based, inline-styled HTML document for sending through a transactional provider; it takes plain strings, not the component's ReactNode fields.

Reduced motion

Static — no motion to disable.

When to use

  • A simple transactional email: confirmation, reset, receipt, welcome

When not to use

  • Marketing/newsletter layouts with multiple sections — that needs a dedicated block-based template builder, not this component