File size: 1,710 Bytes
873849b
d4dab20
 
 
e35520b
d4dab20
e35520b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d4dab20
 
 
 
 
 
 
3d58636
d4dab20
 
 
e8c00b9
 
0a4873f
3d58636
 
ff2929a
3d58636
 
 
 
 
e35520b
 
 
3d58636
 
d4dab20
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import gradio as gr
from components.cards import create_food_card
from components.data import FOOD_DATA

# Function to generate popup card content
def display_card(food_name):
    food_info = FOOD_DATA[food_name]
    image_src = f"assets/images/{food_info['image']}"
    description = food_info["description"]
    price = food_info["price"]

    # HTML for the popup
    card_html = f"""
    <div class="popup-card">
        <img src="{image_src}" alt="{food_name}" class="popup-image" />
        <div class="popup-content">
            <h3>{food_name}</h3>
            <p class="price">โ‚น{price}</p>
            <button class="add-btn">ADD</button>
            <p class="customizable">Customizable</p>
            <p class="description">{description}</p>
        </div>
    </div>
    """
    return card_html

# Gradio app interface
with gr.Blocks(css="styles.css") as app:
    gr.Markdown("# ๐Ÿฝ๏ธ Indian & Chinese Food Nutritional Information App")
    gr.Markdown(
        """
        ### Explore Popular Dishes ๐Ÿ›
        Click on any dish below to view its image, nutritional facts, and portion size.
        """
    )

    # Define the popup area as an HTML component
    popup_area = gr.HTML(visible=False, elem_id="popup")

    # Display all items as a vertical list
    with gr.Column(elem_id="food-list"):
        for food_name in FOOD_DATA.keys():
            gr.Button(
                value=food_name,
                elem_id=f"food-{food_name.replace(' ', '-').lower()}",
                interactive=True,
            ).click(
                lambda x=food_name: display_card(x),
                inputs=None,
                outputs=popup_area
            )

# Launch the app
app.launch()