import gradio as gr
from food_data import FOOD_ITEMS
def get_food_details(name, image, nutrition_details):
"""Generate clean HTML content with the image and structured nutrition values."""
# Split the nutrition details into separate lines
nutrition_list = nutrition_details.split(", ")
formatted_nutrition = "
".join(nutrition_list)
return f"""
{name}
Nutrition
{formatted_nutrition}
"""
# Gradio Interface
with gr.Blocks() as demo:
gr.Markdown("🍽️ Restaurant Menu 🍽️
")
for category, items in FOOD_ITEMS.items():
gr.Markdown(f"{category} Menu
")
with gr.Row():
for item in items:
with gr.Column():
# Button for each food item
btn = gr.Button(item["name"], elem_id=f"menu-item-{item['name'].lower()}")
output_html = gr.HTML() # Output will be formatted HTML
# Display clean HTML content on button click
btn.click(
fn=get_food_details,
inputs=[gr.Text(value=item["name"], visible=False),
gr.Text(value=item["image"], visible=False),
gr.Text(value=item["nutrition"], visible=False)],
outputs=output_html
)
gr.Markdown("© 2024 Delicious Restaurant | Designed with ❤️
")
demo.launch()