import { BoxProps, Factory, MantineBreakpoint, MantineSize, StylesApiProps } from '@mantine/core'; import React from 'react'; export type MarqueeVertical = boolean | Partial>; export type MarqueeGap = MantineSize | (string & {}) | Partial>; export type MarqueeFadeEdges = boolean | 'linear' | 'ellipse' | 'rect'; export type MarqueeFadeEdgesSize = MantineSize | (string & {}) | [MantineSize | (string & {}), MantineSize | (string & {})]; /** * Display variant. `default` is the classic 2D scroll (existing behavior); * `isometric` lays the scroll on a plane tilted in 3D space; `circle` * distributes the children around a rotating 3D ellipse ring. */ export type MarqueeVariant = 'default' | 'isometric' | 'circle'; /** Scroll orientation — alias of `vertical`, matching `@mantine/core` Marquee. */ export type MarqueeOrientation = 'horizontal' | 'vertical'; /** * Ring radius for the `circle` variant, in pixels. A single number makes a * circular ring; a `[rx, ry]` tuple makes an ellipse (`rx` = horizontal radius, * `ry` = depth radius). */ export type MarqueeRadius = number | [number, number]; export type MarqueeStylesNames = 'root' | 'stage' | 'plane' | 'tilt' | 'ring' | 'item'; export type MarqueeCssVariables = { root: '--marquee-animation-direction' | '--marquee-duration' | '--marquee-fade-edge-size' | '--marquee-fade-edge-size-x' | '--marquee-fade-edge-size-y' | '--marquee-tilt' | '--marquee-perspective' | '--marquee-rotate' | '--marquee-skew' | '--marquee-fade-angle' | '--marquee-radius-x' | '--marquee-radius-y'; }; export interface MarqueeBaseProps { /** * Reverse animation direction */ reverse?: boolean; /** * Number of times to clone the children. Minimum value is 2. */ repeat?: number; /** * Vertical layout. Accepts a boolean or a responsive breakpoint object, * e.g. `{ base: true, lg: false }`. */ vertical?: MarqueeVertical; /** * Scroll orientation. Alias of `vertical` provided for drop-in parity with * `@mantine/core` Marquee. When set, it takes precedence over `vertical`. */ orientation?: MarqueeOrientation; /** * Pause animation on hover */ pauseOnHover?: boolean; /** * Animation speed/duration in seconds. Minimum value is 0.1. * Note: `@mantine/core` Marquee measures `duration` in milliseconds — here it * is in seconds (core `duration={100000}` ≈ `duration={100}`). */ duration?: number; /** * Add fade edges. When `true` or `"linear"`, applies a linear gradient mask * on the leading/trailing scroll edges. When `"ellipse"`, applies a radial * elliptical mask that fades all around the border. When `"rect"`, applies * two intersected linear gradients that fade all 4 edges independently. */ fadeEdges?: MarqueeFadeEdges; /** * Fade edges size. Accepts a single value applied to all edges, * or a `[horizontal, vertical]` tuple for independent axis control. * Tuple values always refer to `[x, y]` regardless of scroll direction. */ fadeEdgesSize?: MarqueeFadeEdgesSize; /** * Alias of `fadeEdgesSize` (the singular spelling used by `@mantine/core` * Marquee), provided for drop-in parity. `fadeEdgesSize` wins when both are set. */ fadeEdgeSize?: MarqueeFadeEdgesSize; /** * Accepted for `@mantine/core` Marquee parity but intentionally unused — fade * edges use CSS masks (true alpha, background-independent), so no fade color * is needed. */ fadeEdgeColor?: string; /** * Gap between marquee items. Accepts a single value or a responsive * breakpoint object, e.g. `{ base: 'xs', md: 'xl' }`. */ gap?: MarqueeGap; /** * Plane inclination in degrees — the `rotateX` angle. For `isometric` it tips * the scroll plane back; for `circle` it is the viewing angle of the ring * (how much it is seen from above). Ignored by the `default` variant. * @default 45 */ tilt?: number; /** * CSS `perspective` in pixels applied to the 3D stage for the `isometric` and * `circle` variants. Smaller values exaggerate depth. Ignored by `default`. * @default 800 */ perspective?: number; /** * Ring radius in pixels for the `circle` variant. A single number makes a * circular ring; a `[rx, ry]` tuple makes an ellipse (`rx` = horizontal * radius, `ry` = depth radius). Ignored by other variants. * @default 200 */ radius?: MarqueeRadius; /** * In-plane rotation in degrees for the `isometric` variant — the `rotateZ` * angle applied after `tilt`. Combine with `tilt` for a classic ¾ isometric * (2.5D) look. Ignored by other variants. * @default 0 */ rotate?: number; /** * Horizontal shear in degrees for the `isometric` variant — the `skewX` * angle applied to the plane. Useful to dial in a sheared/isometric look. * Ignored by other variants. * @default 0 */ skew?: number; /** Content */ children?: React.ReactNode; } export interface MarqueeProps extends BoxProps, MarqueeBaseProps, StylesApiProps { } export type MarqueeFactory = Factory<{ props: MarqueeProps; ref: HTMLDivElement; stylesNames: MarqueeStylesNames; vars: MarqueeCssVariables; variant: MarqueeVariant; }>; export declare const defaultProps: Partial; export declare const Marquee: import("@mantine/core").MantineComponent<{ props: MarqueeProps; ref: HTMLDivElement; stylesNames: MarqueeStylesNames; vars: MarqueeCssVariables; variant: MarqueeVariant; }>;