We are opening a short testing window for the new builder. Help shape it before launch.
Only 25 seats
Applications close Jul 18.
A dismissible promo card with image, deadline line, and apply button for programs and offers.
The import and the props worth knowing about, in one place.
import { Card28 } from "@/components/beste/component/card28";
// The corner X hides the banner and fires onDismiss.
<Card28
src="/promos/beta.jpg"
title="Join the beta program"
description="Help shape the new builder before launch."
highlight="Only 25 seats"
note="Applications close Jul 18."
cta="Request access"
href="/beta"
onDismiss={() => console.log("dismissed")}
/>
<Card28
src="/promos/workshop.jpg"
title="Free workshop this Thursday"
cta="Save my seat"
permanent // hide the dismiss button
tone="dark" // CTA: "primary" (default) | "dark"
onClick={() => console.log("save seat")}
/>Every one of these is in the component already. They are listed because a props table cannot mention a gesture, so nothing else on this page can tell you they exist.
| The dismiss button | Takes the card off the page unless `permanent` is set, and calls `onDismiss` so the page can remember. |
|---|
Read from the component's own type, so this cannot drift from what it accepts.
| Prop | Type | Default | Description |
|---|---|---|---|
src* | string | — | Square image on the left |
title* | string | — | Banner title |
description | string | — | Supporting text under the title |
highlight | string | — | Bold highlight line (e.g. "Only 25 seats") |
note | string | — | Muted note under the highlight (e.g. a deadline) |
cta* | string | — | Pill button label |
href | string | — | If set, the button renders as a link to this href |
onClick | React.MouseEventHandler<HTMLButtonElement> | — | Button click handler (used when there is no href) |
permanent | boolean | — | Hide the dismiss button |
onDismiss | () => void | — | Called when the card is dismissed |
tone | "primary" | "dark" | — | CTA color |
className | string | — | Additional classes merged onto the root |