Mixins / foldkit-mixins-ui
CarouselSlots
const · packages/mixins-ui/src/carousel.ts:23
const CarouselSlots: Slots.Contract<{ readonly root: Slot.UnnamedSlot<Capability.Capability<"Container", readonly [Capability.Capability<"Interactive", readonly [Capability.Capability<"Base", readonly []>]>]>, readonly Slot.EventName[], readonly [Attr.AttrToken<"role">, Attr.AttrToken<"aria-label">], readonly Slot.RequirementName[], boolean>; readonly track: Slot.UnnamedSlot<Capability.Capability<"Container", readonly [Capability.Capability<"Interactive", readonly [Capability.Capability<"Base", readonly []>]>]>, readonly Slot.EventName[], readonly Slot.AttributeName[], readonly Slot.RequirementName[], boolean>; readonly slide: Slot.UnnamedSlot<Capability.Capability<"Container", readonly [Capability.Capability<"Interactive", readonly [Capability.Capability<"Base", readonly []>]>]>, readonly Slot.EventName[], readonly [Attr.AttrToken<"role">, Attr.AttrToken<"aria-label">], readonly Slot.RequirementName[], boolean>; readonly controls: Slot.UnnamedSlot<Capability.Capability<"Container", readonly [Capability.Capability<"Interactive", readonly [Capability.Capability<"Base", readonly []>]>]>, readonly Slot.EventName[], readonly Slot.AttributeName[], readonly Slot.RequirementName[], boolean>; readonly previous: Slot.UnnamedSlot<Capability.Capability<"Interactive", readonly [Capability.Capability<"Base", readonly []>]>, readonly [Event.EventToken<"click">], readonly [Attr.AttrToken<"aria-label">, Attr.AttrToken<"aria-disabled">], readonly Slot.RequirementName[], boolean>; readonly next: Slot.UnnamedSlot<C …;A carousel, the APG's: a group with aria-roledescription="carousel"
named by its label, each slide a group with aria-roledescription="slide"
named "2 of 5", previous and next buttons, and a dot per slide. It never
rotates by itself. The track is a CSS scroll-snap scroller, so a swipe or a
trackpad moves it natively.
The current slide is the application's: the buttons and dots send onIndex,
and update keeps the index and returns ShowSlide, which scrolls the
track to it. The view does not hear a swipe: after one, index (the
buttons, the current dot, the status) stays where the last Message left it.
A polite status region says the slide shown once it changes, since nothing
in the slides themselves changes for a screen reader to announce.