AI SDK Agents
Full Stack AI Patterns
Complex AI Agents
Workflow Patterns
Tools + Artifacts
Full-stack vercel ai sdk patterns for workflows, tool calling, and agent orchestration. Built with ai sdk v6 and shadcn/ui. Headless, themable, practical.
Human-in-the-loop marketing copy software that helps teams draft, review, and ship high-converting campaigns with confidence.
pnpm dlx shadcn@latest add https://cult-ui.com/r/hero-static-radial-gradient.json
import {
HeroStaticRadialGradientRoot,
HeroStaticRadialGradientContainer,
HeroStaticRadialGradientContent,
HeroStaticRadialGradientHeading,
HeroStaticRadialGradientDescription,
HeroStaticRadialGradientActions,
HeroStaticRadialGradientBadges,
HeroStaticRadialGradientVisual,
HeroStaticRadialGradientMobileVisual,
} from "@/components/ui/hero-static-radial-gradient"export default function Page() {
return (
<main className="min-h-screen">
<HeroStaticRadialGradientRoot>
<HeroStaticRadialGradientContainer>
<HeroStaticRadialGradientContent>
<HeroStaticRadialGradientHeading />
<HeroStaticRadialGradientDescription />
<HeroStaticRadialGradientActions />
<div
className="flex justify-center lg:justify-start"
data-slot="hero-static-radial-gradient-badges-wrap"
>
<HeroStaticRadialGradientBadges />
</div>
</HeroStaticRadialGradientContent>
<HeroStaticRadialGradientVisual />
</HeroStaticRadialGradientContainer>
<HeroStaticRadialGradientMobileVisual />
</HeroStaticRadialGradientRoot>
</main>
)
}StaticRadialGradient render path for stable re-renders.| Export | Type | Description |
|---|---|---|
HeroStaticRadialGradientRoot | HeroStaticRadialGradientRootProps | Context provider and root section primitive |
HeroStaticRadialGradientContainer | div primitive | Main hero grid wrapper |
HeroStaticRadialGradientContent | div primitive | Left-side content column primitive |
HeroStaticRadialGradientHeading | HeroStaticRadialGradientHeadingProps | Heading block primitive (title + subtitle) |
HeroStaticRadialGradientDescription | HeroStaticRadialGradientDescriptionProps | Description block primitive |
HeroStaticRadialGradientActions | HeroStaticRadialGradientActionsProps | CTA wrapper primitive |
HeroStaticRadialGradientCTA | HeroStaticRadialGradientCTAProps | Reusable CTA slot component |
HeroStaticRadialGradientBadges | HeroStaticRadialGradientBadgesProps | Reusable badge row primitive |
HeroStaticRadialGradientVisual | HeroStaticRadialGradientVisualProps | Desktop visual shader wrapper primitive |
HeroStaticRadialGradientMobileVisual | HeroStaticRadialGradientMobileVisualProps | Mobile visual shader wrapper primitive |
HeroStaticRadialGradient / default | HeroStaticRadialGradientProps | Convenience assembled version built from primitives |
useHeroStaticRadialGradient | () => HeroStaticRadialGradientContextValue | Hook for context-driven custom composition |
HeroStaticRadialGradientRoot owns shared defaults, normalized shader props, and composition state.
| Prop | Type | Default | Description |
|---|---|---|---|
srTitle | string | "AI SDK Agents" | Screen-reader-only heading text |
title | ReactNode | "AI SDK Agents" | First line of visible heading |
subtitle | ReactNode | "Copy and Paste" | Second line of visible heading |
description | ReactNode | built-in marketing copy | Supporting paragraph content |
showCta | boolean | true | Toggle CTA rendering |
ctaProps | Partial<HeroStaticRadialGradientCTAProps> | built-in CTA | Override CTA label/link/target/rel/click handler |
renderCta | (defaultCta) => ReactNode | undefined | Wrap or replace default CTA node |
showBadges | boolean | true | Toggle tech badges |
techStack | HeroStaticRadialGradientTechItem[] | Next.js + AI SDK | Badge data source |
renderBadge | (tech, index, defaultBadge) => ReactNode | undefined | Custom badge rendering hook |
desktopShaderProps | Partial<StaticRadialGradientProps> | built-in desktop shader settings | Override desktop shader values |
mobileShaderProps | Partial<StaticRadialGradientProps> | built-in mobile shader settings | Override mobile shader values |
className | string | undefined | Root section class override |
Passed via desktopShaderProps and mobileShaderProps. Common options:
| Prop | Type | Description |
|---|---|---|
width | number | Canvas width (e.g. 1280) |
height | number | Canvas height (e.g. 720) |
colors | string[] | Array of hex colors (e.g. ["#ed40b3", "#adfa1e", "#6ef7cc"]) |
colorBack | string | Background color (e.g. "#ffffff00" for transparent) |
radius | number | Gradient radius (e.g. 0.98) |
focalDistance | number | Focal distance (e.g. 0) |
focalAngle | number | Focal angle (e.g. 0) |
falloff | number | Falloff (e.g. 0.9) |
mixing | number | Color mixing (e.g. 0.7) |
distortion | number | Distortion amount (e.g. 0) |
distortionShift | number | Distortion shift (e.g. 0) |
distortionFreq | number | Distortion frequency (e.g. 12) |
grainMixer | number | Grain mix (e.g. 1) |
grainOverlay | number | Grain overlay (e.g. 0.5) |
Use shader override props without forking the component:
<HeroStaticRadialGradientRoot
desktopShaderProps={{
width: 1280,
height: 720,
colors: ["#ed40b3", "#adfa1e", "#6ef7cc"],
colorBack: "#ffffff00",
radius: 0.98,
focalDistance: 0,
focalAngle: 0,
falloff: 0.9,
mixing: 0.7,
distortion: 0,
distortionShift: 0,
distortionFreq: 12,
grainMixer: 1,
grainOverlay: 0.5,
}}
mobileShaderProps={{
colors: ["#ed40b3", "#adfa1e", "#6ef7cc"],
radius: 0.98,
falloff: 0.9,
mixing: 0.7,
}}
>
{/* compose primitives */}
</HeroStaticRadialGradientRoot>Replace copy and CTA target via props:
<HeroStaticRadialGradientRoot
title="Your Product"
subtitle="Ship faster"
description="Reusable hero primitive with configurable radial gradient visuals."
ctaProps={{
label: "Get started",
href: "/signup",
target: "_self",
}}
>
{/* compose primitives */}
</HeroStaticRadialGradientRoot>Use primitive exports for custom layout composition:
<HeroStaticRadialGradientRoot>
<HeroStaticRadialGradientContainer>
<HeroStaticRadialGradientContent>
<HeroStaticRadialGradientHeading />
<HeroStaticRadialGradientDescription />
<HeroStaticRadialGradientActions />
<HeroStaticRadialGradientBadges />
</HeroStaticRadialGradientContent>
<HeroStaticRadialGradientVisual desktopShaderProps={{ colors: ["#006CFF", "#00d2ff", "#7c3aed"] }} />
</HeroStaticRadialGradientContainer>
<HeroStaticRadialGradientMobileVisual />
</HeroStaticRadialGradientRoot>StaticRadialGradient is wrapped with memo to avoid unnecessary rerenders."use client" is required).sr-only) so page structure remains meaningful.rel="noopener noreferrer" when opened in a new tab.@paper-design/shaders-react is installed.