Curved Frame CarouselA fixed frame masks a drifting photo deck.

Premium blockBlocks
Curved Frame Carousel

Add to your projectPremium block

One command adds this component to your project.

1

Run the following command. New project? Run npx shadcn@latest init first to set up Tailwind and path aliases.

npx shadcn@latest add @aicanvas/curved-frame-carousel
2

For dark mode, add the dark class to your <html> element:

Optional
<html class="dark">

Install with AI Canvas MCP

With AI Canvas MCP, your AI knows every component we ship. Ask for one inside Claude Code, Codex, or Cursor and it installs the component you pick. Works with any AI Canvas account, free or premium.

Props

Every prop this component accepts. Any other prop is forwarded to the underlying element.

PropTypeDefaultDescription
items{src: string, alt: string, caption: string, focus?: number}[]DEFAULT_ITEMSPanels on the endless track, in order; each needs an image URL, alt text and a caption, plus an optional focus from 0 to 1 marking where in the image the subject sits vertically.
eyebrowstring'Portfolio'Small uppercase kicker above the title, also used as the carousel label for screen readers.
titlestring'Things we made on purpose'Heading shown inside the frame's top band.
subtitlestring'Made with intent and a stubborn sense of proportion. Classical bones, modern finish, nothing decorative.'Supporting line under the title, hidden on stages narrower than 480px.
hintstring''Optional input hint under the readout row; empty by default, and hidden on stages narrower than 480px when set.
ctaPrimary{label: string, href?: string, onClick?: () => void}nullOptional filled call to action under the subtitle; renders a link when href is given and a button otherwise. Off by default.
ctaSecondary{label: string, href?: string, onClick?: () => void}{label: 'Start a project'}Outlined call to action. Sits beside ctaPrimary when both are set and is dropped on stages under 400px in that case; when it is the only action it always renders. Pass null for none.
autoDriftbooleantrueWhether the track drifts on its own while idle.
driftSpeednumber26Idle drift speed in pixels per second.
panelAspectnumber2Width divided by height of the panel crop visible in the middle of the frame; raise it for a wider, shorter centre band.
edgeSlotRationumber0.78Visible slot height at each stage edge, as a fraction of stage height. Lower it for a shallower curve, raise it toward 1 for a deeper one.
flareRationumber0.28Horizontal run of the flare per side, as a fraction of stage width. This is the strongest lever on the frame's character: low leaves a straight band with rounded corners, high turns the whole frame into one continuous sweep.
flareTensionnumber0.72Character of the flare, as the bezier handle length over the run. Low turns early and bluntly, high hugs the straight line and the edge and puts the turn in the middle. 0.35 blunt, 0.5523 exact quarter ellipse, 0.72 squircle, 0.85 very taut.
edgeRotationnumber24Maximum edge foreshortening in degrees; 18 is barely there, 32 is the ceiling before panels read as folded paper.
onIndexChange(index: number, item: object) => void-Called with the index and item whenever a new panel becomes the one nearest the slot centre.
classNamestring-Extra classes merged onto the outermost root element.

Frequently asked questions

Is Curved Frame Carousel free to use?
Curved Frame Carousel is a Premium AI Canvas component. Premium unlocks the full source code and one-command installs for every Premium component and template.
How do I install Curved Frame Carousel?
Premium unlocks one-command installs: run the shadcn CLI with your AI Canvas token, or connect the AI Canvas MCP server and ask your AI editor to install it for you. You can also recreate your own take on it with the included AI prompts.
What is Curved Frame Carousel built with?
Curved Frame Carousel is built with React and TypeScript, using Hero, Gallery, Interactive, and Motion. It ships with both light and dark styling.
Can I remix Curved Frame Carousel with AI?
Yes. Curved Frame Carousel ships with one comprehensive AI prompt written against the real source code. Open "Remix with AI" on this page to read and copy it into Claude, Cursor, ChatGPT, or any AI tool. Prompts are for remixing your own variation; for the exact component, install it with the one-command CLI.

Featured in collections

More like this