2
import { type FileData } from "@gradio/client";
4
export let elem_id = "";
5
export let elem_classes: string[] = [];
6
export let visible = true;
7
export let variant: "primary" | "secondary" | "stop" = "secondary";
8
export let size: "sm" | "lg" = "lg";
9
export let value: string | null = null;
10
export let link: string | null = null;
11
export let icon: FileData | null = null;
12
export let disabled = false;
13
export let scale: number | null = null;
14
export let min_width: number | undefined = undefined;
17
{#if link && link.length > 0}
20
rel="noopener noreferrer"
21
class:hidden={!visible}
23
aria-disabled={disabled}
24
class="{size} {variant} {elem_classes.join(' ')}"
25
style:flex-grow={scale}
26
style:pointer-events={disabled ? "none" : null}
27
style:width={scale === 0 ? "fit-content" : null}
28
style:min-width={typeof min_width === "number"
29
? `calc(min(${min_width}px, 100%))`
34
<img class="button-icon" src={icon.url} alt={`${value} icon`} />
41
class:hidden={!visible}
42
class="{size} {variant} {elem_classes.join(' ')}"
43
style:flex-grow={scale}
44
style:width={scale === 0 ? "fit-content" : null}
45
style:min-width={typeof min_width === "number"
46
? `calc(min(${min_width}px, 100%))`
52
<img class="button-icon" src={icon.url} alt={`${value} icon`} />
62
justify-content: center;
64
transition: var(--button-transition);
65
box-shadow: var(--button-shadow);
66
padding: var(--size-0-5) var(--size-2);
74
box-shadow: var(--button-shadow-hover);
79
box-shadow: var(--button-shadow-active);
85
filter: grayscale(30%);
94
border: var(--button-border-width) solid var(--button-primary-border-color);
95
background: var(--button-primary-background-fill);
96
color: var(--button-primary-text-color);
100
border-color: var(--button-primary-border-color-hover);
101
background: var(--button-primary-background-fill-hover);
102
color: var(--button-primary-text-color-hover);
106
border: var(--button-border-width) solid
107
var(--button-secondary-border-color);
108
background: var(--button-secondary-background-fill);
109
color: var(--button-secondary-text-color);
113
.secondary[disabled] {
114
border-color: var(--button-secondary-border-color-hover);
115
background: var(--button-secondary-background-fill-hover);
116
color: var(--button-secondary-text-color-hover);
120
border: var(--button-border-width) solid var(--button-cancel-border-color);
121
background: var(--button-cancel-background-fill);
122
color: var(--button-cancel-text-color);
127
border-color: var(--button-cancel-border-color-hover);
128
background: var(--button-cancel-background-fill-hover);
129
color: var(--button-cancel-text-color-hover);
133
border-radius: var(--button-small-radius);
134
padding: var(--button-small-padding);
135
font-weight: var(--button-small-text-weight);
136
font-size: var(--button-small-text-size);
140
border-radius: var(--button-large-radius);
141
padding: var(--button-large-padding);
142
font-weight: var(--button-large-text-weight);
143
font-size: var(--button-large-text-size);
147
width: var(--text-xl);
148
height: var(--text-xl);
149
margin-right: var(--spacing-xl);