Aurora Carousel
aurora-dinglebear-ai/aurora-carouselUnverifiedComponent
Horizontal scroll carousel with Aurora neutral controls for cards and media strips.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/dinglebear-ai/aurora/main/aurora-carousel.jsonSource
1"use client"23/**4 * Aurora Carousel — horizontal snap track with prev/next controls.5 *6 * Visual layer is ported from the Claude Design source: a display-font section7 * title, two neutral icon buttons, and a snap-x track of panel-medium cards with8 * the documented top-sheen seam (opaque base + translucent top, layered so the9 * gradient never bands). Reads only `--aurora-*` tokens.10 *11 * Architecture stays Aurora: the Aurora `Button` (neutral icon variant) drives12 * the controls, `CarouselItem` accepts a ref prop (React 19 style), and the13 * `title`/HTML props/escape-hatch API is preserved.14 */1516import * as React from "react"17import { ChevronLeft, ChevronRight } from "lucide-react"18import { Button } from "@/registry/aurora/ui/button"1920// Styles: registry/aurora/styles/aurora-components.css (@layer aurora-components).2122export interface CarouselProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {23 title?: React.ReactNode24}2526export function Carousel({ title, className, children, style, ...props }: CarouselProps) {27 const trackRef = React.useRef<HTMLDivElement>(null)2829 const scroll = (direction: -1 | 1) => {30 trackRef.current?.scrollBy({ left: direction * 280, behavior: "smooth" })31 }3233 return (34 <section className={["aurora-carousel", className].filter(Boolean).join(" ")} style={style} {...props}>35 <div className="aurora-carousel__head">36 {title ? <h3 className="aurora-carousel__title">{title}</h3> : <span />}37 <div className="aurora-carousel__controls">38 <Button type="button" size="icon" variant="neutral" aria-label="Previous slide" onClick={() => scroll(-1)}>39 <ChevronLeft className="size-4" aria-hidden />40 </Button>41 <Button type="button" size="icon" variant="neutral" aria-label="Next slide" onClick={() => scroll(1)}>42 <ChevronRight className="size-4" aria-hidden />43 </Button>44 </div>45 </div>46 <div ref={trackRef} className="aurora-carousel__track">47 {React.Children.map(children, (child) => (48 <div className="aurora-carousel__slide">{child}</div>49 ))}50 </div>51 </section>52 )53}5455export function CarouselItem({ className, ref, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> }) {56 return (57 <div58 ref={ref}59 className={["aurora-carousel__item", className].filter(Boolean).join(" ")}60 {...props}61 />62 )63}6465export default Carousel
What it pulls in
npm packages
Other registry items
Files it writes
More from aurora
All 176 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Aurora Accordionaurora-accordion | aurora | Components | Unverified | 2 deps | |
| Aurora Alert Dialogaurora-alert-dialog | aurora | Components | Unverified | 2 deps | |
| Aurora Aspect Ratioaurora-aspect-ratio | aurora | Components | Unverified | no deps | |
| Aurora Avataraurora-avatar | aurora | Components | Unverified | 1 dep | |
| Aurora Badgeaurora-badge | aurora | Components | Unverified | 2 deps | |
| Aurora Banneraurora-banner | aurora | Components | Unverified | 1 dep | |
| Aurora Breadcrumbaurora-breadcrumb | aurora | Components | Unverified | 2 deps | |
| Aurora Buttonaurora-button | aurora | Components | Unverified | 2 deps |
