import gradio as gr import html def create_player_card_component(player_data=None): """ Creates a Gradio HTML component to display player information based on test.ipynb structure. Args: player_data (dict, optional): Dictionary containing player data. Expected keys: 'Name', 'Position', 'Jersey_number', 'headshot_url', 'College', 'Height', 'Weight', 'Years_in_nfl', 'instagram_url'. Defaults to None. Returns: gr.HTML: A Gradio HTML component displaying the player card, or empty if no data. """ print("--- Entered create_player_card_component ---") # DEBUG LOG if not player_data or not isinstance(player_data, dict): print("Component received no player data, returning empty.") # DEBUG LOG return gr.HTML("") print(f"Component received player_data: {player_data}") # DEBUG LOG try: # Extract data with defaults, using html.escape name = html.escape(player_data.get('Name', 'N/A')) position = html.escape(player_data.get('Position', '')) number = html.escape(str(player_data.get('Jersey_number', ''))) headshot_url = html.escape(player_data.get('headshot_url', '')) college = html.escape(player_data.get('College', 'N/A')) height = html.escape(player_data.get('Height', 'N/A')) weight = html.escape(player_data.get('Weight', 'N/A')) exp = html.escape(str(player_data.get('Years_in_nfl', 'N/A'))) instagram_url = html.escape(player_data.get('instagram_url', '')) # CSS from test.ipynb, adapted slightly for theme integration css = """ """ # HTML structure based on test.ipynb # Using an outer container for better layout control in Gradio html_content = f""" {css}