File size: 3,707 Bytes
0bd62e5
1
{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: theme_new_step_3"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio "]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["from __future__ import annotations\n", "from typing import Iterable\n", "import gradio as gr\n", "from gradio.themes.base import Base\n", "from gradio.themes.utils import colors, fonts, sizes\n", "import time\n", "\n", "class Seafoam(Base):\n", "    def __init__(\n", "        self,\n", "        *,\n", "        primary_hue: colors.Color | str = colors.emerald,\n", "        secondary_hue: colors.Color | str = colors.blue,\n", "        neutral_hue: colors.Color | str = colors.blue,\n", "        spacing_size: sizes.Size | str = sizes.spacing_md,\n", "        radius_size: sizes.Size | str = sizes.radius_md,\n", "        text_size: sizes.Size | str = sizes.text_lg,\n", "        font: fonts.Font\n", "        | str\n", "        | Iterable[fonts.Font | str] = (\n", "            fonts.GoogleFont(\"Quicksand\"),\n", "            \"ui-sans-serif\",\n", "            \"sans-serif\",\n", "        ),\n", "        font_mono: fonts.Font\n", "        | str\n", "        | Iterable[fonts.Font | str] = (\n", "            fonts.GoogleFont(\"IBM Plex Mono\"),\n", "            \"ui-monospace\",\n", "            \"monospace\",\n", "        ),\n", "    ):\n", "        super().__init__(\n", "            primary_hue=primary_hue,\n", "            secondary_hue=secondary_hue,\n", "            neutral_hue=neutral_hue,\n", "            spacing_size=spacing_size,\n", "            radius_size=radius_size,\n", "            text_size=text_size,\n", "            font=font,\n", "            font_mono=font_mono,\n", "        )\n", "        super().set(\n", "            body_background_fill=\"repeating-linear-gradient(45deg, *primary_200, *primary_200 10px, *primary_50 10px, *primary_50 20px)\",\n", "            body_background_fill_dark=\"repeating-linear-gradient(45deg, *primary_800, *primary_800 10px, *primary_900 10px, *primary_900 20px)\",\n", "            button_primary_background_fill=\"linear-gradient(90deg, *primary_300, *secondary_400)\",\n", "            button_primary_background_fill_hover=\"linear-gradient(90deg, *primary_200, *secondary_300)\",\n", "            button_primary_text_color=\"white\",\n", "            button_primary_background_fill_dark=\"linear-gradient(90deg, *primary_600, *secondary_800)\",\n", "            slider_color=\"*secondary_300\",\n", "            slider_color_dark=\"*secondary_600\",\n", "            block_title_text_weight=\"600\",\n", "            block_border_width=\"3px\",\n", "            block_shadow=\"*shadow_drop_lg\",\n", "            button_shadow=\"*shadow_drop_lg\",\n", "            button_large_padding=\"32px\",\n", "        )\n", "\n", "seafoam = Seafoam()\n", "\n", "with gr.Blocks(theme=seafoam) as demo:\n", "    textbox = gr.Textbox(label=\"Name\")\n", "    slider = gr.Slider(label=\"Count\", minimum=0, maximum=100, step=1)\n", "    with gr.Row():\n", "        button = gr.Button(\"Submit\", variant=\"primary\")\n", "        clear = gr.Button(\"Clear\")\n", "    output = gr.Textbox(label=\"Output\")\n", "\n", "    def repeat(name, count):\n", "        time.sleep(3)\n", "        return name * count\n", "\n", "    button.click(repeat, [textbox, slider], output)\n", "\n", "if __name__ == \"__main__\":\n", "    demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}