"""
y4seenx - The Ultimate Gradient Color Package
Made by y4seenx - The best gradient package in the world! 🚀

Features:
- Any color format: HEX, RGB, HSL, HSV, CMYK
- Gradients: Horizontal, Vertical, Diagonal, Radial
- Animations: Wave, Pulse, Rainbow
- Effects: Typing animation, Boxes
- Pre-made beautiful gradients
- Easy to use API

Examples:
    >>> from y4seenx import Gradient, Presets, Write
    >>> 
    >>> # Simple gradient
    >>> text = Gradient('#FF0000', '#0000FF').horizontal('Hello World!')
    >>> print(text)
    >>> 
    >>> # Use presets
    >>> banner = Presets.FIRE.horizontal('WELCOME!')
    >>> print(banner)
    >>> 
    >>> # Animated input
    >>> choice = Write.input('Select: ', Presets.BLUE_CYAN)
"""

__version__ = '1.0.0'
__author__ = 'y4seenx'
__description__ = 'The Ultimate Gradient Color Package - Better than anything else!'

# Import main classes
from .colors import Color, parse_color
from .gradient import Gradient, Presets
from .effects import Write, Animate, Box

# Create convenient shortcuts (like pystyle's Colorate and Colors)
class Colorate:
    """
    Convenient class for applying gradients (similar to pystyle.Colorate)
    
    Examples:
        >>> print(Colorate.Horizontal(Presets.FIRE, 'Hello!'))
        >>> print(Colorate.Vertical(Presets.OCEAN, 'Multi\\nLine\\nText'))
    """
    
    @staticmethod
    def Horizontal(gradient: Gradient, text: str) -> str:
        """Apply horizontal gradient"""
        return gradient.horizontal(text)
    
    @staticmethod
    def Vertical(gradient: Gradient, text: str) -> str:
        """Apply vertical gradient"""
        return gradient.vertical(text)
    
    @staticmethod
    def Diagonal(gradient: Gradient, text: str) -> str:
        """Apply diagonal gradient"""
        return gradient.diagonal(text)
    
    @staticmethod
    def Radial(gradient: Gradient, text: str) -> str:
        """Apply radial gradient"""
        return gradient.radial(text)


class Colors:
    """
    Pre-defined color gradients (similar to pystyle.Colors)
    
    Examples:
        >>> print(Colorate.Horizontal(Colors.blue_to_cyan, 'Text'))
    """
    
    # Basic transitions (lowercase to match pystyle naming)
    red_to_blue = Presets.RED_BLUE
    red_to_green = Presets.RED_GREEN
    blue_to_cyan = Presets.BLUE_CYAN
    green_to_white = Presets.GREEN_WHITE
    purple_to_blue = Presets.PURPLE_BLUE
    red_to_yellow = Presets.RED_YELLOW
    
    # Popular gradients
    fire = Presets.FIRE
    ocean = Presets.OCEAN
    forest = Presets.FOREST
    sunset = Presets.SUNSET
    rainbow = Presets.RAINBOW
    
    # Neon
    neon_pink = Presets.NEON_PINK
    neon_blue = Presets.NEON_BLUE
    neon_green = Presets.NEON_GREEN
    
    # Pastel
    pastel_rainbow = Presets.PASTEL_RAINBOW
    pastel_pink = Presets.PASTEL_PINK
    
    # Dark
    dark_purple = Presets.DARK_PURPLE
    dark_blue = Presets.DARK_BLUE
    
    # Cyberpunk
    cyberpunk = Presets.CYBERPUNK
    matrix = Presets.MATRIX
    
    # Monochrome
    gray_scale = Presets.GRAY_SCALE
    black_white = Presets.BLACK_WHITE


# Make everything easily accessible
__all__ = [
    'Color',
    'parse_color',
    'Gradient',
    'Presets',
    'Write',
    'Animate',
    'Box',
    'Colorate',
    'Colors',
]
