import { CSSProperties } from 'vue'; import { MotionLoaderLabels } from './types'; export type LoaderValue = string | number; export type LoaderValues = LoaderValue | LoaderValue[]; export interface LoaderTiming { duration?: number; delay?: number; ease?: string; times?: number[]; type?: 'spring'; bounce?: number; } export interface LoaderMotion { values: Record; initial?: Record; timing: LoaderTiming; propertyTiming?: Record; } export interface LoaderText { label: keyof MotionLoaderLabels; } export interface LoaderNode { tag: string; style?: CSSProperties; attrs?: Record; children?: (LoaderNode | LoaderText | string)[]; motion?: LoaderMotion; /** Repeat the first child once per localized character. */ characters?: keyof MotionLoaderLabels; characterDelay?: number; characterSuffix?: string; /** Native geometry scale for the large 292px physics scene. */ zoom?: number; }