
    {h6
                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ  G d de      Zy)    N)List)Figlet)Align)RenderResult)Style)Text)Group)Static)interpolate_colorc            	       Z     e Zd ZdZ	 	 	 d
dedededef fdZdee   fdZde	fd	Z
 xZS )GradientTitlez/A widget that displays a static gradient title.
title_textfontstart_color	end_colorc                 .   t         |           || _        || _        || _        || _        d| _        t        | j                        j                  | j                        | _	        t        d | j                  j                         D              | _        y)a  
        Initialize the GradientTitle widget.

        Args:
            title_text (str): The text to display as the title.
            font (str, optional): The font to use for the ASCII art. Defaults to "big".
            start_color (str, optional): The starting color of the gradient. Defaults to "#CCCC00".
            end_color (str, optional): The ending color of the gradient. Defaults to "#CC00CC".
           )r   c              3   2   K   | ]  }t        |        y w)N)len).0lines     h/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/atomic_assembler/widgets/gradient_title.py	<genexpr>z)GradientTitle.__init__.<locals>.<genexpr>*   s     O4SYOs   N)super__init__r   r   r   r   gradient_offsetr   
renderText	ascii_artmax
splitlines	max_width)selfr   r   r   r   	__class__s        r   r   zGradientTitle.__init__   ss      	$	&" TYY/::4??KO4>>3L3L3NOO    returnc                    | j                   j                         }g }t        |      D ]  \  }}|j                         s|dt	        |      dz
  fvr)t        j                  | j                  |dz  z         dz   dz  }t        | j                  | j                  |      }t        |t        |d            }|j                  |        |S )z
        Create text lines with a gradient effect and bold styling.

        Returns:
            List[Text]: A list of rich.text.Text objects with gradient coloring and bold styling.
        r      gQ?r   T)colorbold)r   r    	enumeratestripr   mathsinr   r   r   r   r   r   append)r"   linesgradient_lines
line_indexr   	mix_ratiointerpolated_colorstyled_lines           r   create_gradient_text_linesz(GradientTitle.create_gradient_text_lines,   s     ))+ )% 0 	/J::<Jq#e*q.6I$I$"6"6d9J"JKaOSTTI!243C3CT^^U^!_tU1C$%OPK!!+.	/ r$   c                     | j                         }|D cg c]#  }t        j                  || j                        % }}t        j                  t	        | d      S c c}w )zu
        Render the gradient title.

        Returns:
            RenderResult: The rendered gradient title.
        )widthmiddle)vertical)r5   r   centerr!   r	   )r"   r0   r   centered_liness       r   renderzGradientTitle.renderB   sP     88:O]^t%,,t4>>B^^||E>2XFF _s   (A)bigz#CCCC00z#CC00CC)__name__
__module____qualname____doc__strr   r   r   r5   r   r<   __classcell__)r#   s   @r   r   r      s_    9
 $"PP P 	P
 P4DJ ,G Gr$   r   )r,   typingr   pyfigletr   
rich.alignr   rich.consoler   
rich.styler   	rich.textr   r	   textual.widgetsr
   atomic_assembler.color_utilsr   r    r$   r   <module>rM      s1        %    " :>GF >Gr$   