Marquee
An infinite marquee that loops seamlessly, fades its edges, pauses on hover and takes a palette accent.
PaletteCalamansi
BlinkPetPokeBlush
Spotlight cardTilt cardDockNumber tickerMarqueeCalamansi mascot
no fade · no pauseno fade · no pauseno fade · no pauseno fade · no pauseno fade · no pauseno fade · no pause
Hover a row to hold it in place. Move away and it carries on.
Installation
npx shadcn@latest add fujiDevv/calamansi-ui/marqueeHow to use
demo.tsx
import { Marquee } from "@/components/ui/marquee"export function Demo() {return (<Marquee duration={24}>{["Blink", "Pet", "Poke", "Blush"].map((word) => (<span key={word} className="text-sm font-semibold">{word}</span>))}</Marquee>)}
Props
Options you can pass to customize this component.
children*requiredReactNodeThe row to loop. Rendered twice for a seamless seam.
variantoptionalwhitecalamansislatecitrusAccent palette the row carries. The marquee stays bare, so this is the ink its items tint from rather than a surface; White is the neutral end, the page's own ink.
durationoptionalnumberSeconds for one full loop.
reverseoptionalbooleanScroll the other way.
pauseOnHoveroptionalbooleanHold the loop while the pointer is over it.
fadeoptionalbooleanFade the leading and trailing edges.
gapoptionalnumberSpace between items, in pixels.
repeatoptionalnumberHow many copies to render for a seamless continuous loop.
verticaloptionalbooleanScroll vertically instead of horizontally.
classNameoptionalstringExtra classes merged onto the wrapper.
License & Usage
- •Free to use and modify in personal and commercial projects.
- •Attribution to Calamansi UI is appreciated when using a component.
- •Please do not resell the components as your own kit.