Spaces:
Running
Running
move deploy and hide until after app is generated
Browse files
app.py
CHANGED
|
@@ -1178,31 +1178,11 @@ with gr.Blocks(
|
|
| 1178 |
|
| 1179 |
with gr.Sidebar():
|
| 1180 |
login_button = gr.LoginButton()
|
| 1181 |
-
space_name_input = gr.Textbox(
|
| 1182 |
-
label="app name (e.g. my-cool-app)",
|
| 1183 |
-
placeholder="Enter your app name",
|
| 1184 |
-
lines=1,
|
| 1185 |
-
visible=True
|
| 1186 |
-
)
|
| 1187 |
-
# Add SDK selection dropdown
|
| 1188 |
-
sdk_choices = [
|
| 1189 |
-
("Gradio (Python)", "gradio"),
|
| 1190 |
-
("Streamlit (Python)", "streamlit"),
|
| 1191 |
-
("Static (HTML)", "static")
|
| 1192 |
-
]
|
| 1193 |
-
sdk_dropdown = gr.Dropdown(
|
| 1194 |
-
choices=[x[0] for x in sdk_choices],
|
| 1195 |
-
value="Static (HTML)",
|
| 1196 |
-
label="App SDK",
|
| 1197 |
-
visible=True
|
| 1198 |
-
)
|
| 1199 |
-
deploy_btn = gr.Button("π Deploy App", variant="primary")
|
| 1200 |
-
deploy_status = gr.Markdown(visible=False, label="Deploy status")
|
| 1201 |
input = gr.Textbox(
|
| 1202 |
label="What would you like to build?",
|
| 1203 |
placeholder="Describe your application...",
|
| 1204 |
lines=3,
|
| 1205 |
-
visible=True
|
| 1206 |
)
|
| 1207 |
# Language dropdown for code generation
|
| 1208 |
language_choices = [
|
|
@@ -1212,36 +1192,57 @@ with gr.Blocks(
|
|
| 1212 |
choices=language_choices,
|
| 1213 |
value="html",
|
| 1214 |
label="Code Language",
|
| 1215 |
-
visible=True
|
| 1216 |
)
|
| 1217 |
website_url_input = gr.Textbox(
|
| 1218 |
label="website for redesign",
|
| 1219 |
placeholder="https://example.com",
|
| 1220 |
lines=1,
|
| 1221 |
-
visible=True
|
| 1222 |
)
|
| 1223 |
file_input = gr.File(
|
| 1224 |
label="Reference file",
|
| 1225 |
file_types=[".pdf", ".txt", ".md", ".csv", ".docx", ".jpg", ".jpeg", ".png", ".bmp", ".tiff", ".tif", ".gif", ".webp"],
|
| 1226 |
-
visible=True
|
| 1227 |
)
|
| 1228 |
image_input = gr.Image(
|
| 1229 |
label="UI design image",
|
| 1230 |
-
visible=False
|
| 1231 |
)
|
| 1232 |
with gr.Row():
|
| 1233 |
-
btn = gr.Button("Generate", variant="primary", size="lg", scale=2, visible=True)
|
| 1234 |
-
clear_btn = gr.Button("Clear", variant="secondary", size="sm", scale=1, visible=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1235 |
search_toggle = gr.Checkbox(
|
| 1236 |
label="π Web search",
|
| 1237 |
value=False,
|
| 1238 |
-
visible=True
|
| 1239 |
)
|
| 1240 |
model_dropdown = gr.Dropdown(
|
| 1241 |
choices=[model['name'] for model in AVAILABLE_MODELS],
|
| 1242 |
-
value=AVAILABLE_MODELS[0]['name'],
|
| 1243 |
label="Model",
|
| 1244 |
-
visible=True
|
| 1245 |
)
|
| 1246 |
provider_state = gr.State("auto")
|
| 1247 |
gr.Markdown("**Quick start**", visible=True)
|
|
@@ -1263,7 +1264,7 @@ with gr.Blocks(
|
|
| 1263 |
for m in AVAILABLE_MODELS:
|
| 1264 |
if m['name'] == model_name:
|
| 1265 |
return m, update_image_input_visibility(m)
|
| 1266 |
-
return AVAILABLE_MODELS[0], update_image_input_visibility(AVAILABLE_MODELS[0])
|
| 1267 |
def save_prompt(input):
|
| 1268 |
return {setting: {"system": input}}
|
| 1269 |
model_dropdown.change(
|
|
@@ -1271,9 +1272,8 @@ with gr.Blocks(
|
|
| 1271 |
inputs=model_dropdown,
|
| 1272 |
outputs=[current_model, image_input]
|
| 1273 |
)
|
| 1274 |
-
# Remove
|
| 1275 |
-
#
|
| 1276 |
-
# space_name_input.render()
|
| 1277 |
|
| 1278 |
with gr.Column():
|
| 1279 |
with gr.Tabs():
|
|
@@ -1301,15 +1301,26 @@ with gr.Blocks(
|
|
| 1301 |
else:
|
| 1302 |
return "<div style='padding:1em;color:#888;text-align:center;'>Preview is only available for HTML. Please download your code using the download button above.</div>"
|
| 1303 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1304 |
btn.click(
|
| 1305 |
generation_code,
|
| 1306 |
inputs=[input, image_input, file_input, website_url_input, setting, history, current_model, search_toggle, language_dropdown, provider_state],
|
| 1307 |
outputs=[code_output, history, sandbox, history_output]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1308 |
)
|
| 1309 |
# Update preview when code or language changes
|
| 1310 |
code_output.change(preview_logic, inputs=[code_output, language_dropdown], outputs=sandbox)
|
| 1311 |
language_dropdown.change(preview_logic, inputs=[code_output, language_dropdown], outputs=sandbox)
|
| 1312 |
clear_btn.click(clear_history, outputs=[history, history_output, file_input, website_url_input])
|
|
|
|
| 1313 |
|
| 1314 |
# Deploy to Spaces logic
|
| 1315 |
|
|
|
|
| 1178 |
|
| 1179 |
with gr.Sidebar():
|
| 1180 |
login_button = gr.LoginButton()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1181 |
input = gr.Textbox(
|
| 1182 |
label="What would you like to build?",
|
| 1183 |
placeholder="Describe your application...",
|
| 1184 |
lines=3,
|
| 1185 |
+
visible=True
|
| 1186 |
)
|
| 1187 |
# Language dropdown for code generation
|
| 1188 |
language_choices = [
|
|
|
|
| 1192 |
choices=language_choices,
|
| 1193 |
value="html",
|
| 1194 |
label="Code Language",
|
| 1195 |
+
visible=True
|
| 1196 |
)
|
| 1197 |
website_url_input = gr.Textbox(
|
| 1198 |
label="website for redesign",
|
| 1199 |
placeholder="https://example.com",
|
| 1200 |
lines=1,
|
| 1201 |
+
visible=True
|
| 1202 |
)
|
| 1203 |
file_input = gr.File(
|
| 1204 |
label="Reference file",
|
| 1205 |
file_types=[".pdf", ".txt", ".md", ".csv", ".docx", ".jpg", ".jpeg", ".png", ".bmp", ".tiff", ".tif", ".gif", ".webp"],
|
| 1206 |
+
visible=True
|
| 1207 |
)
|
| 1208 |
image_input = gr.Image(
|
| 1209 |
label="UI design image",
|
| 1210 |
+
visible=False
|
| 1211 |
)
|
| 1212 |
with gr.Row():
|
| 1213 |
+
btn = gr.Button("Generate", variant="primary", size="lg", scale=2, visible=True)
|
| 1214 |
+
clear_btn = gr.Button("Clear", variant="secondary", size="sm", scale=1, visible=True)
|
| 1215 |
+
# --- Move deploy/app name/sdk here, right before web search ---
|
| 1216 |
+
space_name_input = gr.Textbox(
|
| 1217 |
+
label="app name (e.g. my-cool-app)",
|
| 1218 |
+
placeholder="Enter your app name",
|
| 1219 |
+
lines=1,
|
| 1220 |
+
visible=False
|
| 1221 |
+
)
|
| 1222 |
+
sdk_choices = [
|
| 1223 |
+
("Gradio (Python)", "gradio"),
|
| 1224 |
+
("Streamlit (Python)", "streamlit"),
|
| 1225 |
+
("Static (HTML)", "static")
|
| 1226 |
+
]
|
| 1227 |
+
sdk_dropdown = gr.Dropdown(
|
| 1228 |
+
choices=[x[0] for x in sdk_choices],
|
| 1229 |
+
value="Static (HTML)",
|
| 1230 |
+
label="App SDK",
|
| 1231 |
+
visible=False
|
| 1232 |
+
)
|
| 1233 |
+
deploy_btn = gr.Button("π Deploy App", variant="primary", visible=False)
|
| 1234 |
+
deploy_status = gr.Markdown(visible=False, label="Deploy status")
|
| 1235 |
+
# --- End move ---
|
| 1236 |
search_toggle = gr.Checkbox(
|
| 1237 |
label="π Web search",
|
| 1238 |
value=False,
|
| 1239 |
+
visible=True
|
| 1240 |
)
|
| 1241 |
model_dropdown = gr.Dropdown(
|
| 1242 |
choices=[model['name'] for model in AVAILABLE_MODELS],
|
| 1243 |
+
value=AVAILABLE_MODELS[0]['name'],
|
| 1244 |
label="Model",
|
| 1245 |
+
visible=True
|
| 1246 |
)
|
| 1247 |
provider_state = gr.State("auto")
|
| 1248 |
gr.Markdown("**Quick start**", visible=True)
|
|
|
|
| 1264 |
for m in AVAILABLE_MODELS:
|
| 1265 |
if m['name'] == model_name:
|
| 1266 |
return m, update_image_input_visibility(m)
|
| 1267 |
+
return AVAILABLE_MODELS[0], update_image_input_visibility(AVAILABLE_MODELS[0])
|
| 1268 |
def save_prompt(input):
|
| 1269 |
return {setting: {"system": input}}
|
| 1270 |
model_dropdown.change(
|
|
|
|
| 1272 |
inputs=model_dropdown,
|
| 1273 |
outputs=[current_model, image_input]
|
| 1274 |
)
|
| 1275 |
+
# --- Remove deploy/app name/sdk from bottom column ---
|
| 1276 |
+
# (delete the gr.Column() block containing space_name_input, sdk_dropdown, deploy_btn, deploy_status)
|
|
|
|
| 1277 |
|
| 1278 |
with gr.Column():
|
| 1279 |
with gr.Tabs():
|
|
|
|
| 1301 |
else:
|
| 1302 |
return "<div style='padding:1em;color:#888;text-align:center;'>Preview is only available for HTML. Please download your code using the download button above.</div>"
|
| 1303 |
|
| 1304 |
+
def show_deploy_components(*args):
|
| 1305 |
+
return [gr.Textbox(visible=True), gr.Dropdown(visible=True), gr.Button(visible=True)]
|
| 1306 |
+
|
| 1307 |
+
def hide_deploy_components(*args):
|
| 1308 |
+
return [gr.Textbox(visible=False), gr.Dropdown(visible=False), gr.Button(visible=False)]
|
| 1309 |
+
|
| 1310 |
btn.click(
|
| 1311 |
generation_code,
|
| 1312 |
inputs=[input, image_input, file_input, website_url_input, setting, history, current_model, search_toggle, language_dropdown, provider_state],
|
| 1313 |
outputs=[code_output, history, sandbox, history_output]
|
| 1314 |
+
).then(
|
| 1315 |
+
show_deploy_components,
|
| 1316 |
+
None,
|
| 1317 |
+
[space_name_input, sdk_dropdown, deploy_btn]
|
| 1318 |
)
|
| 1319 |
# Update preview when code or language changes
|
| 1320 |
code_output.change(preview_logic, inputs=[code_output, language_dropdown], outputs=sandbox)
|
| 1321 |
language_dropdown.change(preview_logic, inputs=[code_output, language_dropdown], outputs=sandbox)
|
| 1322 |
clear_btn.click(clear_history, outputs=[history, history_output, file_input, website_url_input])
|
| 1323 |
+
clear_btn.click(hide_deploy_components, None, [space_name_input, sdk_dropdown, deploy_btn])
|
| 1324 |
|
| 1325 |
# Deploy to Spaces logic
|
| 1326 |
|