Carousel tile radio group

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

Installation
$Terminal
npx shadcn@latest add https://sdk-components.thesqd.com/r/carousel-tile-radio-group.json
Usage
Import the block, declare your tile items, and pass them in.
TSImport
import {
  CarouselTileRadioGroup,
  type CarouselTileItem,
} from "@/components/blocks/carousel-tile-radio-group";
TSExample
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}
    />
  );
}
Composition
Anatomy of the carousel tile radio group.
CarouselTileRadioGroup
├── Tile (one per item)
│   ├── Carousel (auto-cycles imageUrls)
│   ├── Label
│   └── Description
└── Selection control (radio for single, checkbox when multiple)
Auto-play carousels (single select)
Each tile cycles through its image set every 3 seconds.
Auto-play disabled
Static tiles with a pre-selected default.
With disabled item
Individual tiles can be made non-interactive.
Multiple selection
Checkbox variant; choose any number of styles.
With arrow navigation
Prev/next arrows appear on hover.
API Reference
Props exposed by the CarouselTileRadioGroup block and its item shape.

CarouselTileRadioGroup

PropTypeDefaultDescription
namestringForm field name (required for native form integration).
itemsCarouselTileItem[]Array of tile configs.
valuestring | string[]Controlled value. String for single, array for multiple.
defaultValuestring | string[]Uncontrolled initial value.
onChange(value: string | string[]) => voidSelection change handler.
multiplebooleanfalseAllow multiple selection (renders as checkboxes).
columnsnumberautoOverride the auto-resolved column count.
autoPlayIntervalnumber3000ms between image rotations. Set to 0 to disable auto-play.
showArrowsbooleanfalseRender prev/next arrows on hover.

CarouselTileItem

PropTypeDefaultDescription
valuestringUnique value submitted on selection.
labelstringTile heading.
descriptionstringSub-text rendered under the label.
imageUrlsstring[]Images cycled by the per-tile carousel.
disabledbooleanfalseLock this tile out.