bs-carousel wraps the framework-agnostic <mp-carousel> web component: slides are plain child elements, with optional indicators, auto-advance, slide/fade animation in both orientations, touch swipe, keyboard + reduced-motion support, and a radio-driven no-JS tier (server-rendered pages keep navigating with JavaScript disabled).
Two independent carousels: with JS disabled each keeps its own radio-driven state (indicators + prev/next + keyboard), proving instances don't collide.






A horizontal carousel as a slide of a vertical one: the inner claims horizontal swipes, vertical swipes bubble to the outer, and each viewport keeps its own arrow keys.



