Carousel
Use a carousel when you need rotating slides with controls or indicators, often for hero content.

Use a carousel when several related messages or images deserve the same prominent spot but should not all appear at once. Content authors maintain which pages or slides appear; visual designers set timing, height, and motion so the experience stays calm and readable. Always provide a way to pause or move slides manually.
Behaviour
- Slides advance with controls and optional auto-play timing.
- Edit mode exposes drop targets for authoring slide pages.
Anatomy
- Carousel root with a unique id.
- Slide region with one panel visible at a time.
- Previous and next controls (and optional indicators).

Replace with controls, indicators, and pause behaviour.
Content guidelines
Authors maintain the pages multifield (or equivalent), height, randomization, and advanced classes through the component dialog.
Best practices
Do
- Provide non-motion alternatives or ensure pause is discoverable where policy requires.
- Limit slide count to keep load and authoring manageable.
Don't
- Don't set very fast intervals; it harms reading and vestibular comfort.
When to use
- Hero-style rotating banners tied to existing pages or shared slide content.
- When auto-rotation is acceptable and can be paused by the user.
When not to use
- Arbitrary component slides in one carousel; use Carousel (multi-item) (
carousel-parsys) instead. - Critical content that must not move; static Hero or Grid container is safer.
CRXDE Lite query
Use this query in CRXDE Lite to find instances of this component.
/jcr:root/content//*[@sling:resourceType = 'concordia/components/carousel/carousel.jsp']
Technical behaviour
carousel.jsp (with init.jsp and related scripts) constructs a bootstrap.Carousel instance per component id. On load it wires resize handling (windowResizedCarousel), pause/play UI, and default interval (for example 8000 ms in the inline script). Edit mode exposes drop targets for pages (DropTarget CSS class prefix dd + pages).
Anatomy (implementation)
- Carousel root:
div.carouselwith unique id. - Slides:
carousel-inneritems built from authored pages (seeinit.jspand slide helpers). - Controls: Previous and next; indicators optional per dialog.
- Scripts: Bootstrap 5 carousel API with custom resize and pause behaviour.
Instances in the codebase
| Location | Notes |
|---|---|
apps/concordia/components/carousel/carousel.jsp | Main script; includes init.jsp. |
| Item | Location |
|---|---|
| Component | apps/concordia/components/carousel/carousel.jsp |
| Initialisation | apps/concordia/components/carousel/init.jsp (included) |
Instance ids: Sanitized resource path suffix for unique carousel ids.