Spaces:
Sleeping
Sleeping
| from typing import Iterable | |
| from gradio.themes.soft import Soft | |
| from gradio.themes.utils import colors, fonts, sizes | |
| from gradio.themes import Color | |
| class FVoiceTheme(Soft): | |
| """Subclase personalizada del tema base - Siempre modo oscuro""" | |
| def __init__( | |
| self, | |
| *, | |
| primary_hue: colors.Color | str = Color( | |
| c50="#0E000F", # Más oscuro para elementos claros | |
| c100="#150016", # Oscuro | |
| c200="#29104A", # Púrpura oscuro | |
| c300="#29104A", # Púrpura oscuro | |
| c400="#522C5D", # Púrpura medio | |
| c500="#764ba2", # Púrpura claro | |
| c600="#29104A", # Púrpura oscuro | |
| c700="#0E000F", # Muy oscuro | |
| c800="#150016", # Oscuro | |
| c900="#522C5D", # Púrpura medio | |
| c950="#0E000F" # Muy oscuro | |
| ), | |
| secondary_hue: colors.Color | str = Color( | |
| c50="#0E000F", # Oscuro para elementos secundarios | |
| c100="#150016", # Oscuro | |
| c200="#29104A", # Púrpura oscuro | |
| c300="#522C5D", # Púrpura medio | |
| c400="#764ba2", # Púrpura claro | |
| c500="#E3B6B1", # Rosa suave | |
| c600="#FFE3D8", # Rosa claro | |
| c700="#29104A", # Púrpura oscuro | |
| c800="#150016", # Oscuro | |
| c900="#0E000F", # Muy oscuro | |
| c950="#0E000F" # Muy oscuro | |
| ), | |
| neutral_hue: colors.Color | str = Color( | |
| c50="#0E000F", # Fondo muy oscuro | |
| c100="#150016", # Fondo oscuro | |
| c200="#29104A", # Elementos de interfaz oscuros | |
| c300="#522C5D", # Bordes oscuros | |
| c400="#764ba2", # Elementos interactivos | |
| c500="#E3B6B1", # Texto secundario | |
| c600="#FFE3D8", # Texto principal | |
| c700="#29104A", # Elementos oscuros | |
| c800="#150016", # Fondo de inputs | |
| c900="#0E000F", # Fondo principal | |
| c950="#0E000F" # Fondo más oscuro | |
| ), | |
| spacing_size: sizes.Size | str = sizes.spacing_md, | |
| radius_size: sizes.Size | str = sizes.radius_md, | |
| text_size: sizes.Size | str = sizes.text_lg, | |
| font: fonts.Font | str | Iterable[fonts.Font | str] = ( | |
| fonts.GoogleFont("Quicksand"), | |
| "ui-sans-serif", | |
| "sans-serif", | |
| ), | |
| font_mono: fonts.Font | str | Iterable[fonts.Font | str] = ( | |
| fonts.GoogleFont("IBM Plex Mono"), | |
| "ui-monospace", | |
| "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, | |
| ) | |
| def set_theme(self, *args, **kwargs): | |
| """Fuerza el tema a mantenerse siempre oscuro""" | |
| theme = super().set_theme(*args, **kwargs) | |
| # Forzar variables CSS para modo oscuro | |
| theme = theme.set( | |
| # Fondos principales | |
| background_fill_primary="*neutral_900", | |
| background_fill_secondary="*neutral_800", | |
| # Fondos de componentes | |
| block_background_fill="*neutral_800", | |
| input_background_fill="*neutral_800", | |
| input_background_fill_focus="*neutral_700", | |
| input_background_fill_hover="*neutral_750", | |
| # Texto | |
| body_text_color="*neutral_600", | |
| body_text_color_subdued="*neutral_500", | |
| block_title_text_color="*neutral_600", | |
| block_label_text_color="*neutral_600", | |
| # Bordes | |
| border_color_primary="*neutral_700", | |
| border_color_accent="*primary_400", | |
| input_border_color="*neutral_700", | |
| input_border_color_focus="*primary_400", | |
| # Botones | |
| button_primary_background_fill="*primary_600", | |
| button_primary_background_fill_hover="*primary_500", | |
| button_primary_text_color="*neutral_100", | |
| button_secondary_background_fill="*neutral_700", | |
| button_secondary_background_fill_hover="*neutral_600", | |
| button_secondary_text_color="*neutral_300", | |
| ) | |
| return theme |