# Martechsol Assistant Customization Guide This guide explains how to customize the visual appearance and behavior of your Gradio-based chat interface. ## 1. Modifying the UI Layout (app/ui_gradio.py) The interface is built using `gradio.Blocks`. You can modify the structure in the `with gr.Blocks(...) as demo:` section. ### Common Components: - **`chatbot`**: The main chat window. We use `elem_id="chatbot-window"` for CSS targeting. - **`msg`**: The text input box. - **`send`**: The primary action button. ## 2. Custom CSS (app/ui_gradio.py) At the top of `app/ui_gradio.py`, there is a `custom_css` string. This is the most powerful way to change the look of your app. ### How to target elements: We use `elem_id` in Python to give elements stable names. Example: ```python chatbot = gr.Chatbot(elem_id="my-custom-chat") ``` Then in CSS: ```css #my-custom-chat { background-color: #f0f0f0; } ``` ### Important Selectors: - **`footer`**: Targets the Gradio branding at the bottom. - **`.gradio-container`**: The main outer wrapper of your app. - **`[data-testid="user"]`**: Targets user messages. - **`[data-testid="bot"]`**: Targets assistant messages. ## 3. Persistent Data on Hugging Face Your data is stored in the `/data` volume. - **Sessions**: `/data/sessions/` - **FAISS Index**: `/data/index/` To manage these, you can use the **Admin Panel** at `/admin`. ## 4. Tips for Widget Embedding If you are embedding this as an iframe (like in `addon.html`): 1. **Remove redundant headers**: We hide the Markdown titles in the CSS (`#title-area { display: none; }`) so the iframe looks like a part of your page. 2. **Handle height**: We set `height: auto !important` and `min-height: 40px !important` on the chatbot so it doesn't take up 500px by default. 3. **Transparent Background**: You can add `body { background-color: transparent !important; }` to the `custom_css` if your theme supports it. ## 5. Deployment Whenever you save a file, the changes are automatically pushed to your Hugging Face Space. The Space will rebuild automatically (takes about 1-2 minutes).