marquee
fulldev-ui/marqueeFreeComponent
fulldev/ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by fulldev/ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.full.dev/r/marquee.jsonSource
1---2import { cva } from "class-variance-authority"34import { cn } from "@/lib/utils"56type Props = {7 direction?: "left" | "right" | "top" | "bottom"8 duration?: number | string9 gap?: string10 infinite?: boolean11 pauseOnHover?: boolean12 time?: number | string13 variant?: "gradient" | "solid"14 class?: string15 style?: string16}1718const {19 class: className = "",20 direction = "left",21 duration,22 gap = "1rem",23 infinite = true,24 pauseOnHover = false,25 style,26 time = 30,27 variant = "gradient",28 ...props29} = Astro.props3031const resolvedDuration = duration ?? time32const styleValue = `--duration:${33 typeof resolvedDuration === "number"34 ? `${resolvedDuration}s`35 : resolvedDuration36}; --gap:${gap}; ${style ?? ""}`37const contentClass = cn(38 "marquee-content flex min-w-full shrink-0 justify-around gap-[var(--gap)] will-change-transform group-data-[direction=bottom]:[animation-direction:reverse] group-data-[direction=right]:[animation-direction:reverse] data-[direction=bottom]:min-h-full data-[direction=bottom]:flex-col data-[direction=top]:min-h-full data-[direction=top]:flex-col motion-reduce:[animation-play-state:paused]",39 infinite &&40 "animate-[marquee-x_var(--duration,20s)_linear_infinite] group-data-[direction=bottom]:animate-[marquee-y_var(--duration,20s)_linear_infinite] group-data-[direction=top]:animate-[marquee-y_var(--duration,20s)_linear_infinite]",41 direction === "top" && "flex-col",42 direction === "bottom" && "flex-col"43)4445const marqueeVariants = cva("relative w-full", {46 variants: {47 variant: {48 gradient:49 "[mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)] [-webkit-mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)] [&[data-direction=bottom]]:[mask-image:linear-gradient(to_top,transparent,black_10%,black_90%,transparent)] [&[data-direction=bottom]]:[-webkit-mask-image:linear-gradient(to_top,transparent,black_10%,black_90%,transparent)] [&[data-direction=top]]:[mask-image:linear-gradient(to_bottom,transparent,black_10%,black_90%,transparent)] [&[data-direction=top]]:[-webkit-mask-image:linear-gradient(to_bottom,transparent,black_10%,black_90%,transparent)]",50 solid: "",51 },52 },53 defaultVariants: {54 variant: "gradient",55 },56})57---5859<div60 data-marquee61 data-direction={direction}62 data-pause-on-hover={pauseOnHover ? "true" : undefined}63 class={cn(64 "",65 // container utilities66// … truncated
Files it writes
More from fulldev/ui
All 144 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | fulldev/ui | Components | Free | 1 dep · 5 files | |
| alertalert | fulldev/ui | Components | Free | no deps · 5 files | |
| alert-dialogalert-dialog | fulldev/ui | Components | Free | 1 dep · 13 files | |
| avataravatar | fulldev/ui | Components | Free | no deps · 7 files | |
| badgebadge | fulldev/ui | Components | Free | no deps · 3 files | |
| bannerbanner | fulldev/ui | Components | Free | no deps · 3 files | |
| breadcrumbbreadcrumb | fulldev/ui | Components | Free | no deps · 8 files | |
| buttonbutton | fulldev/ui | Components | Free | no deps · 3 files |
