@buddhacognitivelab/theme-glassmorphic
Version:
Enhanced glassmorphic theme package with dual-mode support, advanced glass effects, interactive UI components, and gesture-based interactions
163 lines (162 loc) • 9.43 kB
TypeScript
/**
* @fileoverview Advanced Animation System - Phase 5
* Sophisticated micro-interactions and theme-responsive animations
*/
export interface AnimationSystemConfig {
/** Enable reduced motion support */
respectReducedMotion: boolean;
/** Global animation speed multiplier */
speedMultiplier: number;
/** Enable performance optimizations */
optimizePerformance: boolean;
/** Enable debug mode */
debug: boolean;
}
export type MicroInteractionType = 'hover' | 'focus' | 'active' | 'loading' | 'success' | 'error' | 'disabled' | 'drag' | 'drop';
export type AnimationTiming = 'instant' | 'fast' | 'normal' | 'slow' | 'glacial';
export type AnimationEasing = 'linear' | 'ease' | 'easeIn' | 'easeOut' | 'easeInOut' | 'bounce' | 'elastic' | 'sharp' | 'smooth' | 'dramatic' | 'snappy' | 'gentle';
export interface AdvancedAnimationConfig {
duration: number;
delay: number;
easing: string;
fillMode: 'none' | 'forwards' | 'backwards' | 'both';
iterationCount: number | 'infinite';
direction: 'normal' | 'reverse' | 'alternate' | 'alternate-reverse';
playState: 'running' | 'paused';
}
export interface ThemeAnimationConfig {
light: AdvancedAnimationConfig;
dark: AdvancedAnimationConfig;
}
export interface GestureAnimationConfig {
scale: {
hover: number;
active: number;
focus: number;
};
translate: {
x: number;
y: number;
};
rotate: number;
opacity: {
hover: number;
active: number;
disabled: number;
};
blur: {
hover: number;
focus: number;
};
}
export declare const timingFunctions: {
readonly instant: 0;
readonly fast: 150;
readonly normal: 250;
readonly slow: 400;
readonly glacial: 600;
};
export declare const easingFunctions: {
readonly linear: "linear";
readonly ease: "ease";
readonly easeIn: "ease-in";
readonly easeOut: "ease-out";
readonly easeInOut: "ease-in-out";
readonly bounce: "cubic-bezier(0.68, -0.55, 0.265, 1.55)";
readonly elastic: "cubic-bezier(0.175, 0.885, 0.32, 1.275)";
readonly sharp: "cubic-bezier(0.4, 0, 1, 1)";
readonly smooth: "cubic-bezier(0.4, 0, 0.2, 1)";
readonly dramatic: "cubic-bezier(0.25, 0.46, 0.45, 0.94)";
readonly snappy: "cubic-bezier(0.55, 0.085, 0.68, 0.53)";
readonly gentle: "cubic-bezier(0.25, 0.1, 0.25, 1)";
};
export declare const advancedAnimations: {
fadeInUp: import("styled-components/dist/models/Keyframes").default;
fadeInDown: import("styled-components/dist/models/Keyframes").default;
fadeInLeft: import("styled-components/dist/models/Keyframes").default;
fadeInRight: import("styled-components/dist/models/Keyframes").default;
scaleInGlass: import("styled-components/dist/models/Keyframes").default;
scaleOutGlass: import("styled-components/dist/models/Keyframes").default;
rotateIn: import("styled-components/dist/models/Keyframes").default;
rotateOut: import("styled-components/dist/models/Keyframes").default;
flipInX: import("styled-components/dist/models/Keyframes").default;
flipInY: import("styled-components/dist/models/Keyframes").default;
bounceIn: import("styled-components/dist/models/Keyframes").default;
bounceOut: import("styled-components/dist/models/Keyframes").default;
elasticIn: import("styled-components/dist/models/Keyframes").default;
elasticOut: import("styled-components/dist/models/Keyframes").default;
glassShimmer: import("styled-components/dist/models/Keyframes").default;
glassRipple: import("styled-components/dist/models/Keyframes").default;
glassPulse: import("styled-components/dist/models/Keyframes").default;
themeTransition: import("styled-components/dist/models/Keyframes").default;
skeletonLoading: import("styled-components/dist/models/Keyframes").default;
dotPulse: import("styled-components/dist/models/Keyframes").default;
heartbeat: import("styled-components/dist/models/Keyframes").default;
wobble: import("styled-components/dist/models/Keyframes").default;
dragStart: import("styled-components/dist/models/Keyframes").default;
dragEnd: import("styled-components/dist/models/Keyframes").default;
dropZoneActive: import("styled-components/dist/models/Keyframes").default;
};
export declare const getMicroInteractionConfig: (type: MicroInteractionType, mode: "light" | "dark", intensity?: "subtle" | "prominent") => GestureAnimationConfig;
export declare const createAnimation: (keyframe: keyof typeof advancedAnimations, timing?: AnimationTiming, easing?: AnimationEasing, options?: Partial<AdvancedAnimationConfig>) => string;
export declare const createThemeAnimation: (keyframe: keyof typeof advancedAnimations, lightConfig?: Partial<AdvancedAnimationConfig>, darkConfig?: Partial<AdvancedAnimationConfig>) => ThemeAnimationConfig;
export declare const createStaggeredAnimation: (keyframe: keyof typeof advancedAnimations, itemCount: number, staggerDelay?: number, timing?: AnimationTiming, easing?: AnimationEasing) => string[];
export declare const createOptimizedAnimation: (keyframe: keyof typeof advancedAnimations, config?: Partial<AdvancedAnimationConfig>, respectReducedMotion?: boolean) => import("styled-components").RuleSet<object>;
export declare const createGestureAnimation: (type: MicroInteractionType, mode: "light" | "dark", intensity?: "subtle" | "prominent") => import("styled-components").RuleSet<object>;
export declare const animationSystem: {
animations: {
fadeInUp: import("styled-components/dist/models/Keyframes").default;
fadeInDown: import("styled-components/dist/models/Keyframes").default;
fadeInLeft: import("styled-components/dist/models/Keyframes").default;
fadeInRight: import("styled-components/dist/models/Keyframes").default;
scaleInGlass: import("styled-components/dist/models/Keyframes").default;
scaleOutGlass: import("styled-components/dist/models/Keyframes").default;
rotateIn: import("styled-components/dist/models/Keyframes").default;
rotateOut: import("styled-components/dist/models/Keyframes").default;
flipInX: import("styled-components/dist/models/Keyframes").default;
flipInY: import("styled-components/dist/models/Keyframes").default;
bounceIn: import("styled-components/dist/models/Keyframes").default;
bounceOut: import("styled-components/dist/models/Keyframes").default;
elasticIn: import("styled-components/dist/models/Keyframes").default;
elasticOut: import("styled-components/dist/models/Keyframes").default;
glassShimmer: import("styled-components/dist/models/Keyframes").default;
glassRipple: import("styled-components/dist/models/Keyframes").default;
glassPulse: import("styled-components/dist/models/Keyframes").default;
themeTransition: import("styled-components/dist/models/Keyframes").default;
skeletonLoading: import("styled-components/dist/models/Keyframes").default;
dotPulse: import("styled-components/dist/models/Keyframes").default;
heartbeat: import("styled-components/dist/models/Keyframes").default;
wobble: import("styled-components/dist/models/Keyframes").default;
dragStart: import("styled-components/dist/models/Keyframes").default;
dragEnd: import("styled-components/dist/models/Keyframes").default;
dropZoneActive: import("styled-components/dist/models/Keyframes").default;
};
timings: {
readonly instant: 0;
readonly fast: 150;
readonly normal: 250;
readonly slow: 400;
readonly glacial: 600;
};
easings: {
readonly linear: "linear";
readonly ease: "ease";
readonly easeIn: "ease-in";
readonly easeOut: "ease-out";
readonly easeInOut: "ease-in-out";
readonly bounce: "cubic-bezier(0.68, -0.55, 0.265, 1.55)";
readonly elastic: "cubic-bezier(0.175, 0.885, 0.32, 1.275)";
readonly sharp: "cubic-bezier(0.4, 0, 1, 1)";
readonly smooth: "cubic-bezier(0.4, 0, 0.2, 1)";
readonly dramatic: "cubic-bezier(0.25, 0.46, 0.45, 0.94)";
readonly snappy: "cubic-bezier(0.55, 0.085, 0.68, 0.53)";
readonly gentle: "cubic-bezier(0.25, 0.1, 0.25, 1)";
};
createAnimation: (keyframe: keyof typeof advancedAnimations, timing?: AnimationTiming, easing?: AnimationEasing, options?: Partial<AdvancedAnimationConfig>) => string;
createThemeAnimation: (keyframe: keyof typeof advancedAnimations, lightConfig?: Partial<AdvancedAnimationConfig>, darkConfig?: Partial<AdvancedAnimationConfig>) => ThemeAnimationConfig;
createStaggeredAnimation: (keyframe: keyof typeof advancedAnimations, itemCount: number, staggerDelay?: number, timing?: AnimationTiming, easing?: AnimationEasing) => string[];
createOptimizedAnimation: (keyframe: keyof typeof advancedAnimations, config?: Partial<AdvancedAnimationConfig>, respectReducedMotion?: boolean) => import("styled-components").RuleSet<object>;
createGestureAnimation: (type: MicroInteractionType, mode: "light" | "dark", intensity?: "subtle" | "prominent") => import("styled-components").RuleSet<object>;
getMicroInteractionConfig: (type: MicroInteractionType, mode: "light" | "dark", intensity?: "subtle" | "prominent") => GestureAnimationConfig;
};
export default animationSystem;