fix: update button ui component to have variant and size independent
This commit is contained in:
+6
-6
@@ -12,7 +12,7 @@
|
|||||||
--surface-subtle: oklch(from var(--brand-main) 0.95 0.1 h);
|
--surface-subtle: oklch(from var(--brand-main) 0.95 0.1 h);
|
||||||
--surface-elevated: oklch(from var(--brand-main) 0.99 0.05 h);
|
--surface-elevated: oklch(from var(--brand-main) 0.99 0.05 h);
|
||||||
--surface-control: oklch(from var(--brand-main) 0.85 0.04 h);
|
--surface-control: oklch(from var(--brand-main) 0.85 0.04 h);
|
||||||
--surface-hover: oklch(from var(--brand-main) 0.9 0.1 h);
|
--surface-hover: oklch(from var(--brand-main) 0.8 0.1 h);
|
||||||
|
|
||||||
--action-primary: oklch(from var(--brand-main) var(--action-lightness) var(--action-chroma) h);
|
--action-primary: oklch(from var(--brand-main) var(--action-lightness) var(--action-chroma) h);
|
||||||
--action-primary-hover: oklch(from var(--action-primary) calc(l - var(--hover-step)) c h);
|
--action-primary-hover: oklch(from var(--action-primary) calc(l - var(--hover-step)) c h);
|
||||||
@@ -23,8 +23,8 @@
|
|||||||
--text-muted: oklch(from var(--brand-main) 0.45 0.02 h);
|
--text-muted: oklch(from var(--brand-main) 0.45 0.02 h);
|
||||||
--text-action: oklch(from var(--brand-main) 0.99 0.02 h);
|
--text-action: oklch(from var(--brand-main) 0.99 0.02 h);
|
||||||
|
|
||||||
--border-main: oklch(from var(--brand-main) 0.9 0.04 h);
|
--border-main: oklch(from var(--brand-main) 0.7 0.1 h);
|
||||||
--border-strong: oklch(from var(--brand-main) 0.8 0.06 h);
|
--border-strong: oklch(from var(--brand-main) 0.6 0.1 h);
|
||||||
|
|
||||||
--shadow: 0 1px 3px oklch(from var(--brand-main) 0.2 0.05 h / 0.1);
|
--shadow: 0 1px 3px oklch(from var(--brand-main) 0.2 0.05 h / 0.1);
|
||||||
--shadow-md: 0 4px 12px oklch(from var(--brand-main) 0.2 0.05 h / 0.1);
|
--shadow-md: 0 4px 12px oklch(from var(--brand-main) 0.2 0.05 h / 0.1);
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
--surface-subtle: oklch(from var(--brand-main) 0.16 0.03 h);
|
--surface-subtle: oklch(from var(--brand-main) 0.16 0.03 h);
|
||||||
--surface-elevated: oklch(from var(--brand-main) 0.2 0.03 h);
|
--surface-elevated: oklch(from var(--brand-main) 0.2 0.03 h);
|
||||||
--surface-control: oklch(from var(--brand-main) 0.4 0.06 h);
|
--surface-control: oklch(from var(--brand-main) 0.4 0.06 h);
|
||||||
--surface-hover: oklch(from var(--brand-main) 0.24 0.04 h);
|
--surface-hover: oklch(from var(--brand-main) 0.4 0.04 h);
|
||||||
|
|
||||||
--action-primary-hover: oklch(from var(--action-primary) calc(l + var(--hover-step)) c h);
|
--action-primary-hover: oklch(from var(--action-primary) calc(l + var(--hover-step)) c h);
|
||||||
--action-secondary-hover: oklch(from var(--action-secondary) calc(l + var(--hover-step)) c h);
|
--action-secondary-hover: oklch(from var(--action-secondary) calc(l + var(--hover-step)) c h);
|
||||||
@@ -49,8 +49,8 @@
|
|||||||
--text-main: oklch(from var(--brand-main) 0.94 0.01 h);
|
--text-main: oklch(from var(--brand-main) 0.94 0.01 h);
|
||||||
--text-muted: oklch(from var(--brand-main) 0.75 0.02 h);
|
--text-muted: oklch(from var(--brand-main) 0.75 0.02 h);
|
||||||
|
|
||||||
--border-main: oklch(from var(--brand-main) 0.26 0.04 h);
|
--border-main: oklch(from var(--brand-main) 0.3 0.1 h);
|
||||||
--border-strong: oklch(from var(--brand-main) 0.4 0.06 h);
|
--border-strong: oklch(from var(--brand-main) 0.4 0.1 h);
|
||||||
|
|
||||||
--shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
|
--shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
|
||||||
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
|
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
|
||||||
|
|||||||
@@ -26,9 +26,9 @@
|
|||||||
<CropInline />
|
<CropInline />
|
||||||
|
|
||||||
<div class="crop-controls">
|
<div class="crop-controls">
|
||||||
<Button label="Загрузить" ariaLabel="Upload" icon={Upload} type="primary" />
|
<Button label="Загрузить" ariaLabel="Upload" icon={Upload} variant="primary" />
|
||||||
<Button label="Редактировать" ariaLabel="Edit" icon={Pencil} type="secondary" />
|
<Button label="Редактировать" ariaLabel="Edit" icon={Pencil} variant="secondary" />
|
||||||
<Button label="Сбросить" ariaLabel="Reset" icon={Reset} type="outline" />
|
<Button label="Сбросить" ariaLabel="Reset" icon={Reset} variant="outline" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<SettingsGrid label="Настройки изображения" icon={Sliders}>
|
<SettingsGrid label="Настройки изображения" icon={Sliders}>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<div class="settings-grid">
|
<div class="settings-grid">
|
||||||
<label>
|
<label>
|
||||||
{label}
|
{label}
|
||||||
<Button {icon} ariaLabel="Expand" type="mini" onclick={() => (expanded = !expanded)} />
|
<Button {icon} ariaLabel="Expand" size="mini" onclick={() => (expanded = !expanded)} />
|
||||||
</label>
|
</label>
|
||||||
{#if expanded}
|
{#if expanded}
|
||||||
{@render children()}
|
{@render children()}
|
||||||
|
|||||||
@@ -29,12 +29,12 @@
|
|||||||
<Button
|
<Button
|
||||||
icon={ChevronLeft}
|
icon={ChevronLeft}
|
||||||
ariaLabel="Previous slide"
|
ariaLabel="Previous slide"
|
||||||
type="mini"
|
size="mini"
|
||||||
onclick={prev}
|
onclick={prev}
|
||||||
disabled={isFirst}
|
disabled={isFirst}
|
||||||
/>
|
/>
|
||||||
<span class="panel-indicator">{current + 1} / {max}</span>
|
<span class="panel-indicator">{current + 1} / {max}</span>
|
||||||
<Button icon={ChevronRight} ariaLabel="Next slide" type="mini" onclick={next} disabled={isLast} />
|
<Button icon={ChevronRight} ariaLabel="Next slide" size="mini" onclick={next} disabled={isLast} />
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.panel-indicator {
|
.panel-indicator {
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
<Button
|
<Button
|
||||||
label="Скачать"
|
label="Скачать"
|
||||||
ariaLabel="Download current"
|
ariaLabel="Download current"
|
||||||
type="secondary"
|
variant="secondary"
|
||||||
icon={Download}
|
icon={Download}
|
||||||
onclick={downloadCurrent}
|
onclick={downloadCurrent}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -23,7 +23,13 @@
|
|||||||
out:fly={{ x: 600, duration: TRANSITION_DURATION }}
|
out:fly={{ x: 600, duration: TRANSITION_DURATION }}
|
||||||
>
|
>
|
||||||
<input type="text" bind:value={text} />
|
<input type="text" bind:value={text} />
|
||||||
<Button icon={Cross} ariaLabel="Delete" type="danger" onclick={() => ondelete(id)} />
|
<Button
|
||||||
|
icon={Cross}
|
||||||
|
ariaLabel="Delete"
|
||||||
|
variant="danger"
|
||||||
|
size="mini"
|
||||||
|
onclick={() => ondelete(id)}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
onclick?: MouseEventHandler<HTMLButtonElement>;
|
onclick?: MouseEventHandler<HTMLButtonElement>;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
label?: string;
|
label?: string;
|
||||||
type?: "primary" | "secondary" | "danger" | "outline" | "mini";
|
variant?: "primary" | "secondary" | "danger" | "outline";
|
||||||
extra?: "grow";
|
size?: "default" | "mini";
|
||||||
}
|
}
|
||||||
|
|
||||||
let {
|
let {
|
||||||
@@ -18,19 +18,18 @@
|
|||||||
onclick = () => {},
|
onclick = () => {},
|
||||||
disabled = false,
|
disabled = false,
|
||||||
label = "",
|
label = "",
|
||||||
type = "primary",
|
variant = "primary",
|
||||||
extra,
|
size = "default",
|
||||||
}: Props = $props();
|
}: Props = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="btn"
|
class="btn"
|
||||||
class:btn-primary={type === "primary"}
|
class:btn-primary={variant === "primary"}
|
||||||
class:btn-secondary={type === "secondary"}
|
class:btn-secondary={variant === "secondary"}
|
||||||
class:btn-outline={type === "outline" || type === "mini"}
|
class:btn-outline={variant === "outline"}
|
||||||
class:btn-danger={type === "danger"}
|
class:btn-danger={variant === "danger"}
|
||||||
class:btn-mini={type === "mini"}
|
class:btn-mini={size === "mini"}
|
||||||
class:grow={extra === "grow"}
|
|
||||||
{disabled}
|
{disabled}
|
||||||
{onclick}
|
{onclick}
|
||||||
aria-label={ariaLabel}
|
aria-label={ariaLabel}
|
||||||
@@ -79,17 +78,8 @@
|
|||||||
--btn-hover: var(--action-secondary-hover);
|
--btn-hover: var(--action-secondary-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-mini {
|
.btn-danger {
|
||||||
width: 32px;
|
--btn-main: var(--danger-base);
|
||||||
height: 32px;
|
|
||||||
padding: 0;
|
|
||||||
border: 1px solid var(--border-main);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-mini:hover:not(:disabled) {
|
|
||||||
border-color: var(--border-main);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-outline {
|
.btn-outline {
|
||||||
@@ -104,12 +94,11 @@
|
|||||||
color: var(--text-main);
|
color: var(--text-main);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-danger {
|
.btn-mini {
|
||||||
--btn-main: var(--danger-base);
|
width: 32px;
|
||||||
}
|
height: 32px;
|
||||||
|
padding: 0;
|
||||||
.grow {
|
border-radius: var(--radius);
|
||||||
flex-grow: 1;
|
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -13,5 +13,5 @@
|
|||||||
icon={TypeOutline}
|
icon={TypeOutline}
|
||||||
ariaLabel="toggle outline"
|
ariaLabel="toggle outline"
|
||||||
onclick={() => (outlined = !outlined)}
|
onclick={() => (outlined = !outlined)}
|
||||||
type={outlined ? "outline" : "primary"}
|
variant={outlined ? "outline" : "primary"}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -27,7 +27,13 @@
|
|||||||
<input type="range" {min} {max} {step} bind:value class="slider" {onchange} />
|
<input type="range" {min} {max} {step} bind:value class="slider" {onchange} />
|
||||||
<span class="value-display">{value}</span>
|
<span class="value-display">{value}</span>
|
||||||
{#if showReset}
|
{#if showReset}
|
||||||
<Button ariaLabel="Reset" icon={Reset} type="mini" onclick={() => (value = defaultValue)} />
|
<Button
|
||||||
|
ariaLabel="Reset"
|
||||||
|
icon={Reset}
|
||||||
|
size="mini"
|
||||||
|
variant="outline"
|
||||||
|
onclick={() => (value = defaultValue)}
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
Reference in New Issue
Block a user