| | """ |
| | 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"] |
| |
|
| |
|