Files
frontend-svelte/src/shared/ui/Button/ButtonGroup.svelte
T

40 lines
899 B
Svelte
Raw Normal View History

2026-02-24 18:04:15 +03:00
<!--
2026-04-17 14:30:30 +03:00
Component: ButtonGroup
Wraps buttons in a warm-surface pill with a small gap and subtle border.
2026-02-24 18:04:15 +03:00
Use for segmented controls, view toggles, or any mutually exclusive button set.
-->
<script lang="ts">
2026-04-23 09:48:32 +03:00
import { cn } from '$shared/lib';
2026-02-24 18:04:15 +03:00
import type { Snippet } from 'svelte';
import type { HTMLAttributes } from 'svelte/elements';
interface Props extends HTMLAttributes<HTMLDivElement> {
/**
* Content snippet
*/
2026-02-24 18:04:15 +03:00
children?: Snippet;
/**
* CSS classes
*/
2026-02-24 18:04:15 +03:00
class?: string;
}
let { children, class: className, ...rest }: Props = $props();
</script>
<div
2026-04-23 09:48:32 +03:00
class={cn(
2026-02-24 18:04:15 +03:00
'flex items-center gap-1 p-1',
'bg-surface dark:bg-dark-bg',
'border border-subtle',
2026-02-24 18:04:15 +03:00
'rounded-none',
'transition-colors duration-500',
className,
)}
{...rest}
>
{#if children}
{@render children()}
{/if}
</div>