Dismissible promo card with an icon chip, copy, and a single CTA — drop into sidebars and empty states.
npx shadcn@latest add https://sdk-components.thesqd.com/r/callout.jsonimport { Callout } from "@/components/blocks/callout";import { Callout } from "@/components/blocks/callout";
export function Example() {
return (
<Callout
title="Join our Slack Community"
description="Connect with other churches, swap ideas, and get support from The Squad."
actionLabel="Join Slack"
actionHref="https://join.slack.com/..."
onDismiss={() => console.log("dismissed")}
/>
);
}Callout
├── color="violet | brand | default" | "#hex" (named flag or any CSS hex; violet = Slack #4a154b)
├── icon (optional ReactNode rendered in a 6×6 chip)
├── title (text-sm font-medium white heading)
├── description (optional text-xs white/80 paragraph)
├── actionLabel + actionHref|onAction (optional bottom CTA — renders as <a> or <button>)
└── onDismiss (optional — renders a top-right X close button)Join our Slack Community
Connect with other churches, swap ideas, and get support from The Squad.
Join our Slack Community
Connect with other churches, swap ideas, and get support from The Squad.
Join our Slack Community
Connect with other churches, swap ideas, and get support from The Squad.
Custom hex background
Pass any hex string to `color` — text and inner controls re-tint via currentColor.
Callout
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | — | Bold heading line. |
description | string | — | Optional supporting copy below the title. |
icon | ReactNode | — | Icon rendered inside the 6×6 chip to the left of the title. |
actionLabel | string | — | CTA button label. Omit to hide the action. |
actionHref | string | — | When set, the CTA renders as an `<a>` with this href. |
onAction | () => void | — | Click handler when the CTA renders as a button (`actionHref` not set). |
onDismiss | () => void | — | When provided, renders a top-right X dismiss button. |
dismissLabel | string | "Dismiss announcement" | aria-label for the dismiss button. |
color | "violet" | "brand" | "default" | `#${string}` | "brand" | Background tone. Pass a named flag (`brand` = Squad #341756, `violet` = Slack #4a154b, `default` = theme foreground) or any CSS hex like `"#F9635D"`. Inner controls retint automatically via `currentColor`. |
className | string | — | Override or extend the wrapper classes. |