File size: 3,785 Bytes
fcb34bb
9c72146
fcb34bb
bc5091e
5a007ca
 
fcb34bb
 
 
2369fc5
 
5a007ca
fcb34bb
2369fc5
 
 
 
 
 
 
fcb34bb
 
 
2369fc5
 
 
 
fcb34bb
 
 
 
2369fc5
 
fcb34bb
 
 
 
2369fc5
 
 
 
 
 
 
 
 
 
 
 
fcb34bb
2369fc5
e431b2b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fcb34bb
 
e431b2b
 
d1e1e15
e431b2b
d1e1e15
e431b2b
 
 
 
 
d1e1e15
e431b2b
d1e1e15
e431b2b
d1e1e15
e431b2b
 
 
 
 
 
 
 
 
 
 
 
 
 
2369fc5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
"""
theme.py

This module defines a custom Gradio theme.
- For more information on Gradio themes see: https://www.gradio.app/docs/gradio/themes
- For manual styling with css, see /src/assets/styles.css
"""

# Standard Library Imports
from __future__ import annotations
from collections.abc import Iterable

# Third-Party Library Imports
from gradio.themes.base import Base
from gradio.themes.utils import colors, fonts, sizes

class CustomTheme(Base):
    def __init__(
        self,
        *,
        primary_hue: colors.Color | str = colors.purple,  
        secondary_hue: colors.Color | str = colors.stone,  
        neutral_hue: colors.Color | str = colors.neutral,  
        spacing_size: sizes.Size | str = sizes.spacing_md,
        radius_size: sizes.Size | str = sizes.radius_md,
        text_size: sizes.Size | str = sizes.text_md,
        font: fonts.Font | str | Iterable[fonts.Font | str] = (
            fonts.GoogleFont('Source Sans Pro'),
            'ui-sans-serif',
            'system-ui',
            'sans-serif',
        ),
        font_mono: fonts.Font | str | Iterable[fonts.Font | str] = (
            fonts.GoogleFont('IBM Plex Mono'),
            'ui-monospace',
            'Consolas',
            'monospace',
        ),
    ):
        super().__init__(
            primary_hue=primary_hue,
            secondary_hue=secondary_hue,
            neutral_hue=neutral_hue,
            spacing_size=spacing_size,
            radius_size=radius_size,
            text_size=text_size,
            font=font,
            font_mono=font_mono,
        )
        self.name = 'custom_theme'
        super().set(
            # --- Colors ---
            error_background_fill='#EF4444',
            # error_background_fill_dark='',
            error_border_color='#B91C1C',
            # error_border_color_dark='',
            error_icon_color='#B91C1C',
            # error_icon_color_dark='',
            input_background_fill='#F9FAFB',
            # input_background_fill_dark='',

            # --- Shadows ---
            input_shadow_focus='0 0 0 *shadow_spread #7C3AED80, *shadow_inset',
            # input_shadow_focus_dark='',
            
            # --- Gradients ---
            stat_background_fill='linear-gradient(to right, #7C3AED, #D8B4FE)',
            # stat_background_fill_dark='',

            # --- Button borders ---
            button_border_width='0px',
            input_border_width='1px',

            # --- Primary Button ---
            button_primary_background_fill='#7E22CE',
            # button_primary_background_fill_dark='',
            button_primary_background_fill_hover='#9333EA',
            # button_primary_background_fill_hover_dark='',
            button_primary_text_color='#FFFFFF',
            # button_primary_text_color_dark='',

            # --- Secondary Button ---
            button_secondary_background_fill='#222222',
            # button_secondary_background_fill_dark='#4B5563',
            button_secondary_background_fill_hover='#3F3F3F',
            # button_secondary_background_fill_hover_dark='#374151',
            button_secondary_text_color='#FFFFFF',
            # button_secondary_text_color_dark='#FFFFFF',

            # --- Cancel Button ---
            button_cancel_background_fill='#EF4444',
            # button_cancel_background_fill_dark='#B91C1C',
            button_cancel_background_fill_hover='#DC2626',
            # button_cancel_background_fill_hover_dark='#991B1B',
            button_cancel_text_color='#FFFFFF',
            # button_cancel_text_color_dark='#FFFFFF',
            button_cancel_text_color_hover='#FFFFFF',
            # button_cancel_text_color_hover_dark='#FFFFFF',

            # --- Other ---
            border_color_accent_subdued='#A78BFA',
        )