import { HTMLAttributes, JSX, ReactNode } from 'react';
import { BreakpointCustomizable, SelectedAriaAttributes } from '../../types';
import { DSLanguage } from '../../utils';
import { CarouselAriaAttributes, CarouselLayout, CarouselNavigationControls, CarouselScrollMarkerPosition, CarouselScrollMarkerVariant, CarouselTranslations, CarouselVariant } from './Carousel.utils';
export type CarouselProps = Omit, 'aria-label' | 'aria-labelledby' | 'children' | 'lang'> & {
/**
* Accessible label for the carousel.
*
* Provide `aria-label` for a self-contained label
* or `aria-labelledby` to reference a visible heading.
*
* @example
* ```tsx
* …
* …
* ```
*/
aria: SelectedAriaAttributes;
/**
* Carousel item content.
*
* Each direct child is treated as one item.
*/
children: ReactNode;
/**
* Initial visible item index. (zero-based)
*
* @default 0
*/
defaultIndex?: number;
/**
* Number of visible items per viewport.
*
* Applies to `multi` variant only.
* Supports responsive breakpoint values.
*
* @default { base: 1, s: 1, m: 2, l: 4 }
*/
itemsPerView?: BreakpointCustomizable;
/**
* Number of items to advance per navigation action.
*
* Applies to `multi` variant only (`single` always advances by 1).
* Use `1` to move one item at a time instead of a full page.
* Supports responsive breakpoint values.
*
* @default itemsPerView (advances a full page)
*/
itemsToScroll?: BreakpointCustomizable;
/** Sets language for screen reader messages and ICU plural rule resolution.
* Use `'de'` or `'en'` for preconfigured translations, or any
* [BCP 47 language tag](https://www.rfc-editor.org/info/bcp47) (e.g. `'fr'`, `'pl'`, `'en-GB'`)
* when providing a custom `translations` object.
* @default 'en'
*/
lang?: DSLanguage;
/**
* Layout mode of the carousel.
*
* `flex`: self-contained flex layout that works anywhere.
*
* `grid`: aligns the carousel content with the design system grid.
* The scroll viewport is placed in the `main` grid area.
* If used with `navigationControls={{ position: 'outside' }}`, the navigation
* buttons are placed in the surrounding margins from breakpoint L, and resolve
* to `inside` below L, where there is no room in the margins.
*
* Requires the carousel to be a direct child of a `ds.grid` container
* (uses CSS subgrid).
*
* @default 'flex'
*/
layout?: CarouselLayout;
/**
* Configuration for the previous/next navigation buttons.
*
* `position`: placement of the navigation buttons. Supports responsive
* breakpoint values.
* - `outside`: controls are placed adjacent to the viewport.
* - `inside`: controls overlay the viewport.
* - (default) `outside`
*
* `variant`: visual style of the navigation buttons. Supports responsive
* breakpoint values.
* - `filled`: default navigation button appearance.
* - `inverse`: navigation buttons rendered with `theme='dark'`.
* - (default) `filled`
*
* In `layout='grid'`, `position='outside'` resolves to `inside` below
* breakpoint L (where there is no room in the margins) and to `outside` from
* L. Pass a breakpoint object like `{ base: 'inside', l: 'outside' }` to make
* this explicit and silence the auto-adjust warning.
*
* `show`: whether the previous/next navigation buttons are rendered. Supports
* responsive breakpoint values.
* - By default the navigation is hidden below breakpoint L and visible on
* breakpoint L and above.
* - (default) `{ base: false, l: true }`
*
* `previousButtonProps` / `nextButtonProps`: custom `data-*` attributes for the
* respective navigation button.
*
* @example
* ```tsx
* …
* ```
*/
navigationControls?: CarouselNavigationControls;
/**
* Enables partial preview of the next item.
*
* Can only be used with variant='multi'.
* It can be used with:
* - `layout='flex'`
* - `layout='grid'` below breakpoint L with `{ base: true, l: false }`
*
* @default false
*/
peek?: BreakpointCustomizable;
/**
* Scroll marker placement.
*
* `outside`: scroll markers are placed underneath the viewport.
*
* `inside`: scroll markers overlay the bottom of the viewport.
*
* @default 'outside'
*/
scrollMarkerPosition?: CarouselScrollMarkerPosition;
/**
* Visual style of the scroll marker dots.
*
* `ghost`: no container background, dark active dot.
*
* `filled`: dark background container with white active dot.
*
* `inverse`: light background container with dark active dot.
*
*
* @default 'ghost'
*/
scrollMarkerVariant?: CarouselScrollMarkerVariant;
/**
* Translations for the DSCarousel. Use our [customization page](/?path=/docs/components-carousel-translations--documentation) for creating custom translations.
*/
translations?: CarouselTranslations;
/**
* Defines the visible content model.
*
* `single`: one item visible at a time.
*
* `multi`: multiple items visible simultaneously.
*
* @default 'single'
*/
variant?: CarouselVariant;
};
/**
* A carousel is an interactive UI pattern that sequentially displays multiple
* pieces of content within a limited viewport and allows users to move between
* these elements via navigation.
*
* Design in Figma: [Carousel](https://www.figma.com/design/qXldpLO6gxHJNLdcXIPxYt/Core-Components-%F0%9F%92%A0?node-id=26075-11524)
*/
export declare const DSCarousel: {
({ aria, children, className, defaultIndex, itemsPerView, itemsToScroll, lang, layout, navigationControls, peek, scrollMarkerPosition, scrollMarkerVariant, translations, variant, ...rest }: CarouselProps): JSX.Element;
displayName: string;
};