Skip to content
Components
@app-studio/components

Carousel

A versatile component for displaying a collection of content in a rotating sequence with navigation.

View component source

Import

ts
import { Carousel } from '@app-studio/components';

New to the library? Complete installation and provider setup first.

Interactive examples

Try the component, then open Code to copy the complete example.

INTERACTIVE EXAMPLE

Loading preview…

Props

Required props are marked below. A dash indicates an unspecified default. Design system configuration can override implementation defaults.

Scroll horizontally to see every column.

Carousel
PropTypeDefaultDescription
childrenimport("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode[]—Content rendered inside the component.Source
defaultActiveIndexnumber—See the type and source declaration for this property.Source
activeIndexnumber—See the type and source declaration for this property.Source
onChange((index: number) => void)—Called with the new field value. Check the signature for the exact payload.Source
showNavigationboolean—See the type and source declaration for this property.Source
navigationPositionNavigationPosition
"inside""outside"
—See the type and source declaration for this property.Source
prevButton
View typestring | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | Promise<string | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
nextButton
View typestring | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | Promise<string | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
showIndicatorsboolean—See the type and source declaration for this property.Source
indicatorPositionIndicatorPosition
"bottom""top"
—See the type and source declaration for this property.Source
indicatorVariantIndicatorVariant
"number""line""dot"
—See the type and source declaration for this property.Source
autoPlayboolean—See the type and source declaration for this property.Source
autoPlayIntervalnumber—See the type and source declaration for this property.Source
pauseOnHoverboolean—See the type and source declaration for this property.Source
infiniteboolean—See the type and source declaration for this property.Source
directionSlideDirection
"horizontal""vertical"
—See the type and source declaration for this property.Source
transitionDurationnumber—See the type and source declaration for this property.Source
stepIndicesnumber[]—See the type and source declaration for this property.Source
viewsCarouselStyles—Style overrides for the named internal parts.Source
Common inherited styling props (7)

Scroll horizontally to see every column.

Carousel inherited
PropTypeDefaultDescription
onClickany—Called when the user activates the component.
mediaRecord<string, CssProps>—See the type and source declaration for this property.
askeyof JSX.IntrinsicElements
"symbol""object""slot""style""title""pattern""form""animate""clipPath""filter""marker""mask""a""abbr""address""area""article""aside""audio""b""base""bdi""bdo""big""blockquote""body""br""button""canvas""caption""center""cite""code""col""colgroup""data""datalist""dd""del""details""dfn""dialog""div""dl""dt""em""embed""fieldset""figcaption""figure""footer""h1""h2""h3""h4""h5""h6""head""header""hgroup""hr""html""i""iframe""img""input""ins""kbd""keygen""label""legend""li""link""main""map""mark""menu""menuitem""meta""meter""nav""noindex""noscript""ol""optgroup""option""output""p""param""picture""pre""progress""q""rp""rt""ruby""s""samp""search""script""section""select""small""source""span""strong""sub""summary""sup""table""template""tbody""td""textarea""tfoot""th""thead""time""tr""track""u""ul""var""video""wbr""webview""svg""animateMotion""animateTransform""circle""defs""desc""ellipse""feBlend""feColorMatrix""feComponentTransfer""feComposite""feConvolveMatrix""feDiffuseLighting""feDisplacementMap""feDistantLight""feDropShadow""feFlood""feFuncA""feFuncB""feFuncG""feFuncR""feGaussianBlur""feImage""feMerge""feMergeNode""feMorphology""feOffset""fePointLight""feSpecularLighting""feSpotLight""feTile""feTurbulence""foreignObject""g""image""line""linearGradient""metadata""mpath""path""polygon""polyline""radialGradient""rect""set""stop""switch""text""textPath""tspan""use""view"
—See the type and source declaration for this property.
themeMode"light" | "dark"
"light""dark"
—See the type and source declaration for this property.
_hoverstring | CssProps—See the type and source declaration for this property.
_activestring | CssProps—See the type and source declaration for this property.
_focusstring | CssProps—See the type and source declaration for this property.

Carousel.Slide

Scroll horizontally to see every column.

Carousel.Slide
PropTypeDefaultDescription
children Required
View typestring | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | Promise<string | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
isActiveboolean—See the type and source declaration for this property.Source
indexnumber—See the type and source declaration for this property.Source
viewsViewProps—Style overrides for the named internal parts.Source

Carousel.Content

Scroll horizontally to see every column.

Carousel.Content
PropTypeDefaultDescription
children Required
View typestring | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | Promise<string | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
viewsPick<CarouselStyles, "content" | "innerContainer">—Style overrides for the named internal parts.Source

Carousel.Item

Scroll horizontally to see every column.

Carousel.Item
PropTypeDefaultDescription
children Required
View typestring | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | Promise<string | number | bigint | boolean | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactPortal | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactElement<unknown, string | import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").JSXElementConstructor<any>> | Iterable<import("/Volumes/workspace/open-source/app-studio-components/node_modules/@types/react/index").ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
viewsPick<CarouselStyles, "item">—Style overrides for the named internal parts.Source

Carousel.Previous

Scroll horizontally to see every column.

Carousel.Previous
PropTypeDefaultDescription
viewsPick<CarouselStyles, "prevButton">—Style overrides for the named internal parts.Source
colorstring—This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015. **Syntax**: `<color>` **Initial value**: `canvastext` | Chrome | Firefox | Safari | Edge | IE | | :----: | :-----: | :----: | :----: | :---: | | **1** | **1** | **1** | **12** | **3** |Source
children
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
onClick((...args: any) => any)—Called when the user activates the component.Source
reversedboolean—See the type and source declaration for this property.Source
tostring—Destination URL or application route.Source
keysany[]—See the type and source declaration for this property.Source
shadowViewProps | Shadow | Elevation—Shadow or elevation styling.Source
animationAnimation—This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015. **Syntax**: `<single-animation>#` | Chrome | Firefox | Safari | Edge | IE | | :-----: | :-----: | :-----: | :----: | :----: | | **43** | **16** | **9** | **12** | **10** | | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |Source
label
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Visible label describing this control.Source
shapeShape—Shape preset for the component.Source
sizeSize—Size preset for the component.Source
variantstring—Visual treatment of the component.Source
ariaLabelstring—[MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaLabel)Source
isDisabledboolean—Disables user interaction.Source
isLoadingboolean—Displays the loading state.Source
loaderPropsLoaderProps—See the type and source declaration for this property.Source
loaderPositionLoaderPosition—See the type and source declaration for this property.Source
icon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Icon rendered alongside the content.Source
iconPositionIconPosition—Position of the icon relative to the content.Source
isFilledboolean—Expands the component to the available width.Source
isAutoboolean—Sizes the component to fit its content.Source
isIconRoundedboolean—See the type and source declaration for this property.Source
isExternalboolean—Opens an external link in a new browsing context.Source
isIconboolean—See the type and source declaration for this property.Source
textColorstring—Explicit foreground color for the text.Source
borderMovingDurationnumber—See the type and source declaration for this property.Source
borderMovingGradientColorsstring[]—See the type and source declaration for this property.Source
animatedStrokeAccentColorstring—See the type and source declaration for this property.Source
animatedStrokeTextColorstring—See the type and source declaration for this property.Source
configany—See the type and source declaration for this property.Source
leftIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
rightIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
startIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
endIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source

Carousel.Next

Scroll horizontally to see every column.

Carousel.Next
PropTypeDefaultDescription
viewsPick<CarouselStyles, "nextButton">—Style overrides for the named internal parts.Source
colorstring—This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015. **Syntax**: `<color>` **Initial value**: `canvastext` | Chrome | Firefox | Safari | Edge | IE | | :----: | :-----: | :----: | :----: | :---: | | **1** | **1** | **1** | **12** | **3** |Source
children
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
onClick((...args: any) => any)—Called when the user activates the component.Source
reversedboolean—See the type and source declaration for this property.Source
tostring—Destination URL or application route.Source
keysany[]—See the type and source declaration for this property.Source
shadowViewProps | Shadow | Elevation—Shadow or elevation styling.Source
animationAnimation—This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015. **Syntax**: `<single-animation>#` | Chrome | Firefox | Safari | Edge | IE | | :-----: | :-----: | :-----: | :----: | :----: | | **43** | **16** | **9** | **12** | **10** | | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |Source
label
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Visible label describing this control.Source
shapeShape—Shape preset for the component.Source
sizeSize—Size preset for the component.Source
variantstring—Visual treatment of the component.Source
ariaLabelstring—[MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaLabel)Source
isDisabledboolean—Disables user interaction.Source
isLoadingboolean—Displays the loading state.Source
loaderPropsLoaderProps—See the type and source declaration for this property.Source
loaderPositionLoaderPosition—See the type and source declaration for this property.Source
icon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Icon rendered alongside the content.Source
iconPositionIconPosition—Position of the icon relative to the content.Source
isFilledboolean—Expands the component to the available width.Source
isAutoboolean—Sizes the component to fit its content.Source
isIconRoundedboolean—See the type and source declaration for this property.Source
isExternalboolean—Opens an external link in a new browsing context.Source
isIconboolean—See the type and source declaration for this property.Source
textColorstring—Explicit foreground color for the text.Source
borderMovingDurationnumber—See the type and source declaration for this property.Source
borderMovingGradientColorsstring[]—See the type and source declaration for this property.Source
animatedStrokeAccentColorstring—See the type and source declaration for this property.Source
animatedStrokeTextColorstring—See the type and source declaration for this property.Source
configany—See the type and source declaration for this property.Source
leftIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
rightIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
startIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source
endIcon
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—See the type and source declaration for this property.Source

For shared layout, color, and responsive properties, read Styling & composition and Responsive layouts. Additional native element attributes depend on the target platform.

Usage guidance

  • Give controls a visible label or an accessible name, and verify keyboard interaction. See Accessibility.
  • For controlled inputs, update the value from the callback shown in the props table. Keep application state in your component or form library.
  • These previews run in the browser. Check React Native setup for platform requirements and differences.
Browse documentation source