{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "adminlte-carousel", "title": "AdminLTE Carousel", "description": "Image carousel with auto-play, indicators, and prev/next controls.", "registryDependencies": [ "https://raw.githubusercontent.com/dnachavez/adminlte-next/master/public/r/adminlte-theme.json" ], "files": [ { "path": "registry/new-york/adminlte-carousel/ui/adminlte-carousel.tsx", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/registry/new-york/adminlte-theme/lib/cn\"\n\ninterface CarouselItem {\n id: string\n content: React.ReactNode\n caption?: React.ReactNode\n}\n\ninterface AdminLTECarouselProps extends React.HTMLAttributes {\n items: CarouselItem[]\n autoPlay?: boolean\n interval?: number\n showIndicators?: boolean\n showControls?: boolean\n}\n\nconst AdminLTECarousel = React.forwardRef(\n (\n {\n className,\n items,\n autoPlay = true,\n interval = 5000,\n showIndicators = true,\n showControls = true,\n ...props\n },\n ref\n ) => {\n const [activeIndex, setActiveIndex] = React.useState(0)\n\n React.useEffect(() => {\n if (!autoPlay || items.length <= 1) return\n const timer = setInterval(() => {\n setActiveIndex((prev) => (prev + 1) % items.length)\n }, interval)\n return () => clearInterval(timer)\n }, [autoPlay, interval, items.length])\n\n const goTo = (index: number) => setActiveIndex(index)\n const prev = () =>\n setActiveIndex((i) => (i - 1 + items.length) % items.length)\n const next = () => setActiveIndex((i) => (i + 1) % items.length)\n\n return (\n \n {showIndicators && items.length > 1 && (\n
    \n {items.map((item, i) => (\n goTo(i)}\n />\n ))}\n
\n )}\n\n
\n {items.map((item, i) => (\n \n {item.content}\n {item.caption && (\n
\n {item.caption}\n
\n )}\n
\n ))}\n \n\n {showControls && items.length > 1 && (\n <>\n \n ‹\n \n \n ›\n \n \n )}\n \n )\n }\n)\nAdminLTECarousel.displayName = \"AdminLTECarousel\"\n\nexport { AdminLTECarousel }\nexport type { AdminLTECarouselProps, CarouselItem }\n", "type": "registry:ui" } ], "type": "registry:ui" }