import { ReactElement } from 'react'; /** * Skeleton element type */ export type SkeletonElementType = 'text' | 'heading' | 'paragraph' | 'avatar' | 'thumbnail' | 'image' | 'button' | 'input' | 'card' | 'list' | 'table' | 'custom'; /** * Skeleton animation type */ export type SkeletonAnimation = 'pulse' | 'wave' | 'shimmer' | 'none'; /** * Skeleton element definition */ export interface SkeletonElement { type: SkeletonElementType; width?: string | number; height?: string | number; borderRadius?: string | number; count?: number; gap?: string | number; className?: string; children?: SkeletonElement[]; } /** * Skeleton pattern definition */ export interface SkeletonPattern { name: string; elements: SkeletonElement[]; animation?: SkeletonAnimation; baseColor?: string; highlightColor?: string; speed?: number; direction?: 'ltr' | 'rtl'; } /** * Skeleton factory configuration */ export interface SkeletonFactoryConfig { /** Default animation */ defaultAnimation: SkeletonAnimation; /** Base color */ baseColor: string; /** Highlight color */ highlightColor: string; /** Animation speed in ms */ speed: number; /** Border radius */ borderRadius: string; /** Default text height */ textHeight: string; /** Default heading height */ headingHeight: string; /** Default avatar size */ avatarSize: string; /** Default thumbnail size */ thumbnailSize: string; } /** * Factory for creating skeleton patterns - returns React elements */ export declare class SkeletonFactory { private config; private patterns; private keyCounter; constructor(config?: Partial); /** * Register a skeleton pattern */ registerPattern(pattern: SkeletonPattern): void; /** * Get a registered pattern */ getPattern(name: string): SkeletonPattern | undefined; /** * Create skeleton React element from a pattern */ createFromPattern(patternName: string): ReactElement | null; /** * Create skeleton React element from elements */ createFromElements(elements: SkeletonElement[], options?: Partial): ReactElement; /** * Create a text skeleton */ createText(options?: { lines?: number; width?: string | number; gap?: string | number; lastLineWidth?: string; }): ReactElement; /** * Create a paragraph skeleton */ createParagraph(options?: { lines?: number; lineVariation?: boolean; }): ReactElement; /** * Create an avatar skeleton */ createAvatar(options?: { size?: string | number; shape?: 'circle' | 'square' | 'rounded'; }): ReactElement; /** * Create a card skeleton */ createCard(options?: { hasImage?: boolean; imageHeight?: string; hasTitle?: boolean; hasSubtitle?: boolean; textLines?: number; hasButton?: boolean; }): ReactElement; /** * Create a list skeleton */ createList(options?: { items?: number; hasAvatar?: boolean; hasSecondaryText?: boolean; }): ReactElement; /** * Create a table skeleton */ createTable(options?: { rows?: number; columns?: number; hasHeader?: boolean; }): ReactElement; /** * Generate CSS for skeletons (for global stylesheet injection) */ generateCSS(): string; private registerBuiltInPatterns; private generateKey; private createSkeletonElement; private createElementComponent; private createElementStyle; private getElementClassName; private getAnimationClass; private generateLineWidths; } /** * Get or create the global skeleton factory */ export declare function getSkeletonFactory(config?: Partial): SkeletonFactory; /** * Reset the factory instance */ export declare function resetSkeletonFactory(): void; /** * Create a text skeleton */ export declare function createTextSkeleton(options?: Parameters[0]): ReactElement; /** * Create a paragraph skeleton */ export declare function createParagraphSkeleton(options?: Parameters[0]): ReactElement; /** * Create a card skeleton */ export declare function createCardSkeleton(options?: Parameters[0]): ReactElement; /** * Create a list skeleton */ export declare function createListSkeleton(options?: Parameters[0]): ReactElement; /** * Create a table skeleton */ export declare function createTableSkeleton(options?: Parameters[0]): ReactElement; /** * Hook to use skeleton factory within React components */ export declare function useSkeletonFactory(config?: Partial): SkeletonFactory;