// ============================================================================
// move.gl | Wave Keyframes
// ============================================================================
// Copyright 2025 Scape Agency BV
// Licensed under MIT License
// ============================================================================

////
/// Wave Keyframes Module
/// ===========================================================================
///
/// Provides parameterized keyframe mixins for wave animations.
/// Rotates elements in a friendly waving pattern.
///
/// @group Keyframes
/// @author Scape Agency
/// @link https://move.gl
/// @since 0.1.0 initial release
/// @access public
////


// ============================================================================
// Use
// ============================================================================

@use "../../../variables" as *;


// ============================================================================
// Keyframes
// ============================================================================


///
/// Wave Keyframes
/// @name keyframes_animate_wave
/// @param {Angle} $angle [20deg] - The maximum rotation angle during the wave.
///
@mixin keyframes_animate_wave($angle: $animate_angle_wave) {
    @keyframes animate_wave {
        0%, 100% { transform: rotate(0deg); }
        50% { transform: rotate($angle); }
    }
}


///
/// Wave Slow Keyframes
/// @name keyframes_animate_wave_slow
/// @param {Angle} $angle [10deg] - The maximum rotation angle.
///
@mixin keyframes_animate_wave_slow($angle: $animate_angle_wave_slow) {
    @keyframes animate_wave_slow {
        0%, 100% { transform: rotate(0deg); }
        50% { transform: rotate($angle); }
    }
}


///
/// Wave Fast Keyframes
/// @name keyframes_animate_wave_fast
/// @param {Angle} $angle [30deg] - The maximum rotation angle.
///
@mixin keyframes_animate_wave_fast($angle: $animate_angle_wave_fast) {
    @keyframes animate_wave_fast {
        0%, 100% { transform: rotate(0deg); }
        50% { transform: rotate($angle); }
    }
}


///
/// Wave Fade Keyframes
/// @name keyframes_animate_wave_fade
/// @param {Angle} $angle [20deg] - The maximum rotation angle.
///
@mixin keyframes_animate_wave_fade($angle: $animate_angle_wave) {
    @keyframes animate_wave_fade {
        0%, 100% {
            transform: rotate(0deg);
            opacity: 1;
        }
        50% {
            transform: rotate($angle);
            opacity: 0.5;
        }
    }
}
