/** * @fileoverview Infinite scrolling marquee for logos, testimonials, or any content. * @author Saasflare™ * CSS-only animation for performance — no JavaScript animation frames. * Duplicates children to create seamless infinite scroll illusion. * @module packages/ui/components/ui/marquee * @package ui * * @component * @example * import { Marquee } from '@saasflare/ui'; * * Logo 1 * Logo 2 * Logo 3 * * * @example * // Reverse direction, slower speed * * {logos.map(logo => )} * */ import * as React from "react"; import { type ReactNode } from "react"; import { type SaasflareComponentProps } from "../../providers"; /** Props for the Marquee component. */ export interface MarqueeProps extends Omit, keyof SaasflareComponentProps | "children">, SaasflareComponentProps { /** Items to scroll infinitely. */ children: ReactNode; /** Reverse scroll direction. Default: `false` */ reverse?: boolean; /** Scroll duration in seconds for one full cycle. Default: `40` */ speed?: number; /** Pause scrolling on hover. Default: `true` */ pauseOnHover?: boolean; /** Gap between items in pixels. Default: `48` */ gap?: number; /** Number of times to duplicate the content strip. Default: `2` */ repeat?: number; /** Enable vertical scrolling instead of horizontal. Default: `false` */ vertical?: boolean; /** Additional class names for the container. */ className?: string; } /** * Infinite-scrolling content ticker. * * - Pure CSS animation (no JS frames, no Motion overhead) * - Duplicates children to create a seamless loop * - Pauses on hover for readability (configurable) * - Falls back to static flex row when reduced motion is preferred * * @component * @package ui */ export declare function Marquee({ children, reverse, speed, pauseOnHover, gap, repeat, vertical, className, surface, radius, animated, iconWeight, ...props }: MarqueeProps): import("react/jsx-runtime").JSX.Element;