Carousel
Purpose
The Carousel component allows you to show a collection of images in a cyclic view. By displaying only a subset of images, the screen space is optimized. The navigation items, such as arrows, suggest additional content that is not currently visible, which encourages the user to continue exploring.
Properties
| Property | Type | Description | Required | Default value |
|---|---|---|---|---|
| children | Array of Element | Show text | Yes | - |
Element
The Element component is part of the carousel. It refers to each element of the carousel and contains a title, a subtitle, an image and a button.
| Property | Type | Description | Required | Default value |
|---|---|---|---|---|
| children | Botonic Components (Title, Subtitle, Pic, Button) | Define button elements | Yes | - |
Element Subcomponents
Title
The Title component is used to give a title to each carousel’s element.
| Property | Type | Description | Required | Default value |
|---|---|---|---|---|
| children | String | Show the title | Yes | - |
| style | String or number | Define the style of the title | No | font-size 14px |
Subtitle
The Subtitle component is used to add a description of each carousel’s element.
| Property | Type | Description | Required | Default value |
|---|---|---|---|---|
| children | String | Show the subtitle | No | - |
| style | String or number | Define the style of the subtitle | No | color: gray, font-size: 12px |
Pic
The Pic component is used in a carousel to better visualize the conversation and draw attention with the help of an image.
| Property | Type | Description | Required | Default value |
|---|---|---|---|---|
| src | URL | Show the image | Yes | - |
Example
To get this kind of carousel:

You can render it following the structure below:
import React from 'react'
import {
Text,
Button,
Carousel,
Pic,
Element,
Title,
Subtitle,
} from '@botonic/react'
export default class extends React.Component {
render() {
let movies = [
{
name: 'Pulp Fiction',
desc: 'Le Big Mac',
url: 'https://www.imdb.com/title/tt0110912',
pic:
'https://images-na.ssl-images-amazon.com/images/I/51Z95XQDHRL._SY445_.jpg',
},
{
name: 'The Big Lebowski',
desc: 'Fuck it Dude',
url: 'https://www.imdb.com/title/tt0118715',
pic:
'https://upload.wikimedia.org/wikipedia/en/a/a7/Snatch_ver4.jpg',
},
{
name: 'Snatch',
desc: 'Five minutes, Turkish',
url: 'https://www.imdb.com/title/tt0208092',
pic: 'http://www.libertytuga.pt/wp-content/uploads/2011/11/snatch.jpg',
},
]
return (
<>
<Text>This a dynamic Carousel</Text>
<Carousel>
{movies.map((e, i) => (
<Element key={e.name}>
<Pic src={e.pic} />
<Title>{e.name}</Title>
<Subtitle>{e.desc}</Subtitle>
<Button url={e.url}>Visit website</Button>
</Element>
))}
</Carousel>
</>
)
}
}
Customize or disable arrows on both sides of the carousel
You can disable or customize arrows displayed on the left and right sides of a carousel.

To do so:
- Add the following code in
src/webchat/index.js:
import {
CustomCarouselLeftArrow,
CustomCarouselRightArrow,
} from './custom-carousel-arrows'
export const webchat = {
theme: {
enableCarouselArrows: {true|false},
customCarouselLeftArrow: CustomCarouselLeftArrow,
customCarouselRightArrow: CustomCarouselRightArrow,
},
}
- Add the following code in
src/webchat/custom-carousel-arrows.js:
import React from 'react'
import styled from 'styled-components'
const StyledArrowContainer = styled.div`
position: absolute;
box-sizing: border-box;
top: 10px;
height: calc(100% - 20px);
width: 22px;
background: white;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
left: ${(props) => props.left}px;
right: ${(props) => props.right}px;
const StyledArrow = styled.img`
width: 18px;
height: 18px;
`
export const CustomCarouselLeftArrow = (props) => {
return (
<StyledArrowContainer left={0} onClick={() => props.scrollCarouselBy(-228)}>
<StyledArrow
src={'https://image.flaticon.com/icons/svg/860/860790.svg'}
/>
</StyledArrowContainer>
)
}
export const CustomCarouselRightArrow = (props) => {
return (
<StyledArrowContainer right={0} onClick={() => props.scrollCarouselBy(228)}>
<StyledArrow
src={'https://image.flaticon.com/icons/svg/860/860828.svg'}
/>
</StyledArrowContainer>
)
}
Note: scrollCarouselBy allows you to define the carousel's movement distance in pixels when clicking on the arrow.