| """ |
| Gradio theme configurations for AnyCoder. |
| Provides multiple theme options with different visual styles. |
| """ |
| import os |
| import gradio as gr |
|
|
| def get_saved_theme(): |
| """Get the saved theme preference from file""" |
| try: |
| if os.path.exists('.theme_preference'): |
| with open('.theme_preference', 'r') as f: |
| return f.read().strip() |
| except: |
| pass |
| return "Developer" |
| def save_theme_preference(theme_name): |
| """Save theme preference to file""" |
| try: |
| with open('.theme_preference', 'w') as f: |
| f.write(theme_name) |
| except: |
| pass |
|
|
| THEME_CONFIGS = { |
| "Default": { |
| "theme": gr.themes.Default(), |
| "description": "Gradio's standard theme with clean orange accents" |
| }, |
| "Base": { |
| "theme": gr.themes.Base( |
| primary_hue="blue", |
| secondary_hue="slate", |
| neutral_hue="slate", |
| text_size="sm", |
| spacing_size="sm", |
| radius_size="md" |
| ), |
| "description": "Minimal foundation theme with blue accents" |
| }, |
| "Soft": { |
| "theme": gr.themes.Soft( |
| primary_hue="emerald", |
| secondary_hue="emerald", |
| neutral_hue="slate", |
| text_size="sm", |
| spacing_size="md", |
| radius_size="lg" |
| ), |
| "description": "Gentle rounded theme with soft emerald colors" |
| }, |
| "Monochrome": { |
| "theme": gr.themes.Monochrome( |
| primary_hue="slate", |
| secondary_hue="slate", |
| neutral_hue="slate", |
| text_size="sm", |
| spacing_size="sm", |
| radius_size="sm" |
| ), |
| "description": "Elegant black and white design" |
| }, |
| "Glass": { |
| "theme": gr.themes.Glass( |
| primary_hue="blue", |
| secondary_hue="blue", |
| neutral_hue="slate", |
| text_size="sm", |
| spacing_size="md", |
| radius_size="lg" |
| ), |
| "description": "Modern glassmorphism with blur effects" |
| }, |
| "Dark Ocean": { |
| "theme": gr.themes.Base( |
| primary_hue="blue", |
| secondary_hue="slate", |
| neutral_hue="slate", |
| text_size="sm", |
| spacing_size="sm", |
| radius_size="md" |
| ).set( |
| body_background_fill="#0f172a", |
| body_background_fill_dark="#0f172a", |
| background_fill_primary="#3b82f6", |
| background_fill_secondary="#1e293b", |
| border_color_primary="#334155", |
| block_background_fill="#1e293b", |
| block_border_color="#334155", |
| body_text_color="#f1f5f9", |
| body_text_color_dark="#f1f5f9", |
| block_label_text_color="#f1f5f9", |
| block_label_text_color_dark="#f1f5f9", |
| block_title_text_color="#f1f5f9", |
| block_title_text_color_dark="#f1f5f9", |
| input_background_fill="#0f172a", |
| input_background_fill_dark="#0f172a", |
| input_border_color="#334155", |
| input_border_color_dark="#334155", |
| button_primary_background_fill="#3b82f6", |
| button_primary_border_color="#3b82f6", |
| button_secondary_background_fill="#334155", |
| button_secondary_border_color="#475569" |
| ), |
| "description": "Deep blue dark theme perfect for coding" |
| }, |
| "Cyberpunk": { |
| "theme": gr.themes.Base( |
| primary_hue="fuchsia", |
| secondary_hue="cyan", |
| neutral_hue="slate", |
| text_size="sm", |
| spacing_size="sm", |
| radius_size="none", |
| font="Orbitron" |
| ).set( |
| body_background_fill="#0a0a0f", |
| body_background_fill_dark="#0a0a0f", |
| background_fill_primary="#ff10f0", |
| background_fill_secondary="#1a1a2e", |
| border_color_primary="#00f5ff", |
| block_background_fill="#1a1a2e", |
| block_border_color="#00f5ff", |
| body_text_color="#00f5ff", |
| body_text_color_dark="#00f5ff", |
| block_label_text_color="#ff10f0", |
| block_label_text_color_dark="#ff10f0", |
| block_title_text_color="#ff10f0", |
| block_title_text_color_dark="#ff10f0", |
| input_background_fill="#0a0a0f", |
| input_background_fill_dark="#0a0a0f", |
| input_border_color="#00f5ff", |
| input_border_color_dark="#00f5ff", |
| button_primary_background_fill="#ff10f0", |
| button_primary_border_color="#ff10f0", |
| button_secondary_background_fill="#1a1a2e", |
| button_secondary_border_color="#00f5ff" |
| ), |
| "description": "Futuristic neon cyber aesthetics" |
| }, |
| "Forest": { |
| "theme": gr.themes.Soft( |
| primary_hue="emerald", |
| secondary_hue="green", |
| neutral_hue="emerald", |
| text_size="sm", |
| spacing_size="md", |
| radius_size="lg" |
| ).set( |
| body_background_fill="#f0fdf4", |
| body_background_fill_dark="#064e3b", |
| background_fill_primary="#059669", |
| background_fill_secondary="#ecfdf5", |
| border_color_primary="#bbf7d0", |
| block_background_fill="#ffffff", |
| block_border_color="#d1fae5", |
| body_text_color="#064e3b", |
| body_text_color_dark="#f0fdf4", |
| block_label_text_color="#064e3b", |
| block_label_text_color_dark="#f0fdf4", |
| block_title_text_color="#059669", |
| block_title_text_color_dark="#10b981" |
| ), |
| "description": "Nature-inspired green earth tones" |
| }, |
| "High Contrast": { |
| "theme": gr.themes.Base( |
| primary_hue="yellow", |
| secondary_hue="slate", |
| neutral_hue="slate", |
| text_size="lg", |
| spacing_size="lg", |
| radius_size="sm" |
| ).set( |
| body_background_fill="#ffffff", |
| body_background_fill_dark="#ffffff", |
| background_fill_primary="#000000", |
| background_fill_secondary="#ffffff", |
| border_color_primary="#000000", |
| block_background_fill="#ffffff", |
| block_border_color="#000000", |
| body_text_color="#000000", |
| body_text_color_dark="#000000", |
| block_label_text_color="#000000", |
| block_label_text_color_dark="#000000", |
| block_title_text_color="#000000", |
| block_title_text_color_dark="#000000", |
| input_background_fill="#ffffff", |
| input_background_fill_dark="#ffffff", |
| input_border_color="#000000", |
| input_border_color_dark="#000000", |
| button_primary_background_fill="#ffff00", |
| button_primary_border_color="#000000", |
| button_secondary_background_fill="#ffffff", |
| button_secondary_border_color="#000000" |
| ), |
| "description": "Accessibility-focused high visibility" |
| }, |
| "Developer": { |
| "theme": gr.themes.Base( |
| primary_hue="blue", |
| secondary_hue="slate", |
| neutral_hue="slate", |
| text_size="sm", |
| spacing_size="sm", |
| radius_size="sm", |
| font="Consolas" |
| ).set( |
| |
| body_background_fill="#1e1e1e", |
| body_background_fill_dark="#1e1e1e", |
| background_fill_primary="#007acc", |
| background_fill_secondary="#252526", |
| border_color_primary="#3e3e42", |
| block_background_fill="#252526", |
| block_border_color="#3e3e42", |
| body_text_color="#cccccc", |
| body_text_color_dark="#cccccc", |
| block_label_text_color="#cccccc", |
| block_label_text_color_dark="#cccccc", |
| block_title_text_color="#ffffff", |
| block_title_text_color_dark="#ffffff", |
| input_background_fill="#2d2d30", |
| input_background_fill_dark="#2d2d30", |
| input_border_color="#3e3e42", |
| input_border_color_dark="#3e3e42", |
| input_border_color_focus="#007acc", |
| input_border_color_focus_dark="#007acc", |
| button_primary_background_fill="#007acc", |
| button_primary_border_color="#007acc", |
| button_primary_background_fill_hover="#0e639c", |
| button_secondary_background_fill="#2d2d30", |
| button_secondary_border_color="#3e3e42", |
| button_secondary_text_color="#cccccc" |
| ), |
| "description": "Authentic VS Code dark theme with exact color matching" |
| } |
| } |
|
|
| |
| THEME_FEATURES = { |
| "Default": ["Orange accents", "Clean layout", "Standard Gradio look"], |
| "Base": ["Blue accents", "Minimal styling", "Clean foundation"], |
| "Soft": ["Rounded corners", "Emerald colors", "Comfortable viewing"], |
| "Monochrome": ["Black & white", "High elegance", "Timeless design"], |
| "Glass": ["Glassmorphism", "Blur effects", "Translucent elements"], |
| "Dark Ocean": ["Deep blue palette", "Dark theme", "Easy on eyes"], |
| "Cyberpunk": ["Neon cyan/magenta", "Futuristic fonts", "Cyber vibes"], |
| "Forest": ["Nature inspired", "Green tones", "Organic rounded"], |
| "High Contrast": ["Black/white/yellow", "High visibility", "Accessibility"], |
| "Developer": ["Authentic VS Code colors", "Consolas/Monaco fonts", "Exact theme matching"] |
| } |
|
|
| |
| current_theme_name = get_saved_theme() |
| current_theme = THEME_CONFIGS[current_theme_name]["theme"] |
|
|
|
|