kapwa
componentcivic-tech-bannersource: ok · hit
Civic Tech Banner
Full-width banner for civic tech campaigns and community engagement with gradient background and call-to-action buttons.
npx shadcn add "https://kapwa-two.vercel.app/r/civic-tech-banner.json"free
Where it goes
ctabanner
Visual style
gradient
Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.
Files1 · source cached 10/15/2026, 2:08:54 AM
src/lib/kapwa/civic-tech-banner/index.tsx
type CivicTechBannerItem = {
title: string;
highlightedWord: string;
description: string;
highlightedPhrase: string;
primaryButton: {
text: string;
className?: string;
href: string;
};
secondaryButton: {
text: string;
className?: string;
href: string;
};
};
const CivicTechBanner = ({
fullBannerTitle,
fullBanner,
}: {
fullBannerTitle: string;
fullBanner: CivicTechBannerItem;
}) => {
return (
<div>
<h3 className='font-medium mb-4'>{fullBannerTitle}</h3>
<div className='relative overflow-hidden bg-linear-to-br from-orange-500 via-red-500 to-pink-600 text-white py-12 rounded-lg'>
<div className='container mx-auto px-4 text-center'>
<h2 className='text-2xl md:text-3xl font-bold mb-4'>
{fullBanner.title}{' '}
<span className='text-yellow-200'>
{fullBanner.highlightedWord}
</span>{' '}
Revolution
</h2>
<p className='text-lg mb-6 text-orange-100 max-w-2xl mx-auto'>
{fullBanner.description}
<strong className='text-yellow-200'>
{' '}
{fullBanner.highlightedPhrase}
</strong>
</p>
<div className='flex flex-col sm:flex-row gap-4 justify-center'>
<a
className={
fullBanner.primaryButton.className ||
'bg-white text-gray-900 px-6 py-3 rounded-lg font-bold hover:bg-gray-100'
}
href={fullBanner.primaryButton.href}
>
{fullBanner.primaryButton.text}
</a>
<a
className={
fullBanner.secondaryButton.className ||
'border-2 border-white text-white px-6 py-3 rounded-lg font-semibold hover:bg-white hover:text-gray-900'
}
href={fullBanner.secondaryButton.href}
>
{fullBanner.secondaryButton.text}
</a>
</div>
</div>
</div>
</div>
);
};
export { CivicTechBanner };
export type { CivicTechBannerItem };