diff --git a/.changeset/tangy-pots-speak.md b/.changeset/tangy-pots-speak.md
new file mode 100644
index 0000000000..f3a8d7ab5f
--- /dev/null
+++ b/.changeset/tangy-pots-speak.md
@@ -0,0 +1,6 @@
+---
+"@gradio/uploadbutton": minor
+"gradio": minor
+---
+
+feat:Feat: make UploadButton accept icon
diff --git a/gradio/components/upload_button.py b/gradio/components/upload_button.py
index f1dc5c090c..8b6722c11f 100644
--- a/gradio/components/upload_button.py
+++ b/gradio/components/upload_button.py
@@ -48,6 +48,7 @@ class UploadButton(Component):
variant: Literal["primary", "secondary", "stop"] = "secondary",
visible: bool = True,
size: Literal["sm", "lg"] | None = None,
+ icon: str | None = None,
scale: int | None = None,
min_width: int | None = None,
interactive: bool = True,
@@ -114,6 +115,7 @@ class UploadButton(Component):
min_width=min_width,
interactive=interactive,
)
+ self.icon = self.move_resource_to_block_cache(icon)
def api_info(self) -> dict[str, list[str]]:
if self.file_count == "single":
diff --git a/js/uploadbutton/Index.svelte b/js/uploadbutton/Index.svelte
index 412b05522e..85091f1863 100644
--- a/js/uploadbutton/Index.svelte
+++ b/js/uploadbutton/Index.svelte
@@ -17,6 +17,7 @@
export let root: string;
export let size: "sm" | "lg" = "lg";
export let scale: number | null = null;
+ export let icon: string | null = null;
export let min_width: number | undefined = undefined;
export let variant: "primary" | "secondary" | "stop" = "secondary";
export let gradio: Gradio<{
@@ -25,6 +26,7 @@
click: never;
}>;
export let interactive: boolean;
+ export let proxy_url: null | string = null;
$: disabled = !interactive;
@@ -45,12 +47,14 @@
{file_types}
{size}
{scale}
+ {icon}
{min_width}
{root}
{value}
{disabled}
{variant}
{label}
+ {proxy_url}
on:click={() => gradio.dispatch("click")}
on:change={({ detail }) => handle_event(detail, "change")}
on:upload={({ detail }) => handle_event(detail, "upload")}
diff --git a/js/uploadbutton/UploadButton.stories.svelte b/js/uploadbutton/UploadButton.stories.svelte
new file mode 100644
index 0000000000..075a41b444
--- /dev/null
+++ b/js/uploadbutton/UploadButton.stories.svelte
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/uploadbutton/shared/UploadButton.svelte b/js/uploadbutton/shared/UploadButton.svelte
index 2b092e580f..35a966b828 100644
--- a/js/uploadbutton/shared/UploadButton.svelte
+++ b/js/uploadbutton/shared/UploadButton.svelte
@@ -1,7 +1,12 @@