Tile-based selector where each option has its own image carousel. Supports single or multiple selection.






























npx shadcn@latest add https://sdk-components.thesqd.com/r/carousel-tile-radio-group.jsonimport {
CarouselTileRadioGroup,
type CarouselTileItem,
} from "@/components/blocks/carousel-tile-radio-group";import * as React from "react";
import {
CarouselTileRadioGroup,
type CarouselTileItem,
} from "@/components/blocks/carousel-tile-radio-group";
const designStyles: CarouselTileItem[] = [
{
value: "minimal",
label: "Minimal",
description: "Clean, simple designs with plenty of white space.",
imageUrls: ["/styles/minimal-1.webp", "/styles/minimal-2.webp"],
},
{
value: "grunge",
label: "Grunge",
description: "Raw, edgy designs with textured elements.",
imageUrls: ["/styles/grunge-1.webp", "/styles/grunge-2.webp"],
},
{
value: "professional",
label: "Professional",
description: "Clean, corporate-friendly designs.",
imageUrls: ["/styles/professional-1.webp", "/styles/professional-2.webp"],
},
];
export function Example() {
const [selected, setSelected] = React.useState("");
return (
<CarouselTileRadioGroup
name="design-style"
items={designStyles}
onChange={setSelected}
/>
);
}CarouselTileRadioGroup
├── Tile (one per item)
│ ├── Carousel (auto-cycles imageUrls)
│ ├── Label
│ └── Description
└── Selection control (radio for single, checkbox when multiple)








































































































CarouselTileRadioGroup
| Prop | Type | Default | Description |
|---|---|---|---|
name | string | — | Form field name (required for native form integration). |
items | CarouselTileItem[] | — | Array of tile configs. |
value | string | string[] | — | Controlled value. String for single, array for multiple. |
defaultValue | string | string[] | — | Uncontrolled initial value. |
onChange | (value: string | string[]) => void | — | Selection change handler. |
multiple | boolean | false | Allow multiple selection (renders as checkboxes). |
columns | number | auto | Override the auto-resolved column count. |
autoPlayInterval | number | 3000 | ms between image rotations. Set to 0 to disable auto-play. |
showArrows | boolean | false | Render prev/next arrows on hover. |
CarouselTileItem
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | — | Unique value submitted on selection. |
label | string | — | Tile heading. |
description | string | — | Sub-text rendered under the label. |
imageUrls | string[] | — | Images cycled by the per-tile carousel. |
disabled | boolean | false | Lock this tile out. |