| from __future__ import annotations | |
| from typing import Iterable | |
| import gradio as gr | |
| from gradio.themes.soft import Soft | |
| from gradio.themes.utils import colors, fonts, sizes | |
| import time | |
| class BlueTheme(Soft): | |
| def __init__( | |
| self, | |
| *, | |
| primary_hue: colors.Color | str = colors.red, | |
| secondary_hue: colors.Color | str = colors.rose, | |
| neutral_hue: colors.Color | str = colors.gray, | |
| 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, | |
| ) | |
| blue_theme = BlueTheme() | |
| with gr.Blocks(theme=blue_theme) as demo: | |
| textbox = gr.Textbox(label="Name") | |
| slider = gr.Slider(label="Count", minimum=0, maximum=100, step=1) | |
| with gr.Column(): | |
| button = gr.Button("Submit", variant="primary") | |
| clear = gr.Button("Clear") | |
| output = gr.Textbox(label="Output") | |
| def repeat(name, count): | |
| time.sleep(3) | |
| return name * count | |
| button.click(repeat, [textbox, slider], output) | |
| demo.launch() | |