| 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() |
|
|