Spaces:
Running
Running
fix dark UI
Browse files
app.py
CHANGED
|
@@ -27,56 +27,52 @@ def get_turso_conn():
|
|
| 27 |
COLLECTION_NAME = "books_collection"
|
| 28 |
VECTOR_SIZE = 256
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
# --- CSS GLOBALE ---
|
| 31 |
GLOBAL_CSS = """
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
/* Animazione Spinner */
|
| 33 |
.loader {
|
| 34 |
-
border: 6px solid #
|
| 35 |
border-radius: 50%;
|
| 36 |
-
border-top: 6px solid #
|
| 37 |
-
border-bottom: 6px solid #
|
| 38 |
width: 40px;
|
| 39 |
height: 40px;
|
| 40 |
-webkit-animation: spin 1s linear infinite;
|
| 41 |
animation: spin 1s linear infinite;
|
| 42 |
margin: 0 auto;
|
| 43 |
}
|
|
|
|
| 44 |
|
| 45 |
-
|
| 46 |
-
0% { transform: rotate(0deg); }
|
| 47 |
-
100% { transform: rotate(360deg); }
|
| 48 |
-
}
|
| 49 |
-
|
| 50 |
#book_cards button {
|
| 51 |
-
background-color: #
|
| 52 |
-
color: #
|
| 53 |
-
border: 1px solid #
|
| 54 |
-
text-align: left;
|
| 55 |
-
padding: 10px !important;
|
| 56 |
}
|
| 57 |
#book_cards button:hover {
|
| 58 |
-
background-color: #
|
| 59 |
-
border-color: #
|
| 60 |
-
}
|
| 61 |
-
#book_cards .text-sm {
|
| 62 |
-
color: #4b5563 !important;
|
| 63 |
}
|
|
|
|
| 64 |
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
}
|
| 68 |
-
.card-force-dark
|
| 69 |
-
|
| 70 |
-
margin-top: 0 !important;
|
| 71 |
-
}
|
| 72 |
-
.card-force-dark p,
|
| 73 |
-
.card-force-dark b,
|
| 74 |
-
.card-force-dark span,
|
| 75 |
-
.card-force-dark div {
|
| 76 |
-
color: #000000 !important;
|
| 77 |
-
.card-force-dark summary {
|
| 78 |
-
color: #007bff !important;
|
| 79 |
-
}
|
| 80 |
"""
|
| 81 |
|
| 82 |
# HTML dello spinner
|
|
@@ -118,13 +114,13 @@ def render_results_from_ids(ids, scores):
|
|
| 118 |
autore_clean = str(row[2]).replace('"', '').replace("[","").replace("]", "")
|
| 119 |
|
| 120 |
html_output += f"""
|
| 121 |
-
<div class="card-force-dark" style="border: 1px solid #
|
| 122 |
<h3>{row[1]}</h3>
|
| 123 |
|
| 124 |
<p style="font-size: 0.9em; margin-bottom: 5px;">
|
| 125 |
<b>✍️ {autore_clean}</b> | 📅 {row[3]} | ⭐ {row[4]}
|
| 126 |
</p>
|
| 127 |
-
|
| 128 |
<p style="margin-top: 0;">
|
| 129 |
<b>🎯 Similarità:</b> {score:.3f}
|
| 130 |
</p>
|
|
@@ -230,7 +226,7 @@ def on_card_click_animated(selected_index, books_state_list, max_results):
|
|
| 230 |
|
| 231 |
|
| 232 |
# --- INTERFACCIA ---
|
| 233 |
-
with gr.Blocks(theme=gr.themes.Ocean(), css=GLOBAL_CSS) as demo:
|
| 234 |
gr.Markdown("# 📚 AI Book Finder")
|
| 235 |
|
| 236 |
books_state = gr.State([])
|
|
|
|
| 27 |
COLLECTION_NAME = "books_collection"
|
| 28 |
VECTOR_SIZE = 256
|
| 29 |
|
| 30 |
+
# --- JAVASCRIPT PER FORZARE DARK MODE ---
|
| 31 |
+
JS_FORCE_DARK = """
|
| 32 |
+
function() {
|
| 33 |
+
document.body.classList.add('dark');
|
| 34 |
+
}
|
| 35 |
+
"""
|
| 36 |
+
|
| 37 |
# --- CSS GLOBALE ---
|
| 38 |
GLOBAL_CSS = """
|
| 39 |
+
/* Sfondo pagina e testo */
|
| 40 |
+
body, .gradio-container {
|
| 41 |
+
background-color: #0b0f19 !important;
|
| 42 |
+
color: #e5e7eb !important;
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
/* Animazione Spinner */
|
| 46 |
.loader {
|
| 47 |
+
border: 6px solid #374151;
|
| 48 |
border-radius: 50%;
|
| 49 |
+
border-top: 6px solid #3b82f6;
|
| 50 |
+
border-bottom: 6px solid #ef4444;
|
| 51 |
width: 40px;
|
| 52 |
height: 40px;
|
| 53 |
-webkit-animation: spin 1s linear infinite;
|
| 54 |
animation: spin 1s linear infinite;
|
| 55 |
margin: 0 auto;
|
| 56 |
}
|
| 57 |
+
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
|
| 58 |
|
| 59 |
+
/* Bottoni Dataset */
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
#book_cards button {
|
| 61 |
+
background-color: #1f2937 !important;
|
| 62 |
+
color: #e5e7eb !important;
|
| 63 |
+
border: 1px solid #374151 !important;
|
|
|
|
|
|
|
| 64 |
}
|
| 65 |
#book_cards button:hover {
|
| 66 |
+
background-color: #374151 !important;
|
| 67 |
+
border-color: #60a5fa !important;
|
|
|
|
|
|
|
|
|
|
| 68 |
}
|
| 69 |
+
#book_cards .text-sm { color: #9ca3af !important; }
|
| 70 |
|
| 71 |
+
/* Stile Card Risultati */
|
| 72 |
+
.card-force-dark { color: #e5e7eb !important; }
|
| 73 |
+
.card-force-dark h3 { color: #60a5fa !important; margin-top: 0 !important; }
|
| 74 |
+
.card-force-dark p, .card-force-dark b, .card-force-dark span { color: #d1d5db !important; }
|
| 75 |
+
.card-force-dark summary { color: #fbbf24 !important; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
"""
|
| 77 |
|
| 78 |
# HTML dello spinner
|
|
|
|
| 114 |
autore_clean = str(row[2]).replace('"', '').replace("[","").replace("]", "")
|
| 115 |
|
| 116 |
html_output += f"""
|
| 117 |
+
<div class="card-force-dark" style="border: 1px solid #374151; padding: 15px; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.3); background-color: #1f2937;">
|
| 118 |
<h3>{row[1]}</h3>
|
| 119 |
|
| 120 |
<p style="font-size: 0.9em; margin-bottom: 5px;">
|
| 121 |
<b>✍️ {autore_clean}</b> | 📅 {row[3]} | ⭐ {row[4]}
|
| 122 |
</p>
|
| 123 |
+
|
| 124 |
<p style="margin-top: 0;">
|
| 125 |
<b>🎯 Similarità:</b> {score:.3f}
|
| 126 |
</p>
|
|
|
|
| 226 |
|
| 227 |
|
| 228 |
# --- INTERFACCIA ---
|
| 229 |
+
with gr.Blocks(theme=gr.themes.Ocean(), css=GLOBAL_CSS, js=JS_FORCE_DARK) as demo:
|
| 230 |
gr.Markdown("# 📚 AI Book Finder")
|
| 231 |
|
| 232 |
books_state = gr.State([])
|