<script lang="ts">
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
import BookmarkIcon from "@lucide/svelte/icons/bookmark";
import HeartIcon from "@lucide/svelte/icons/heart";
import StarIcon from "@lucide/svelte/icons/star";
</script>
<ToggleGroup.Root type="multiple" variant="outline" spacing={2} size="sm">
<ToggleGroup.Item
value="star"
aria-label="Toggle star"
class="data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500"
>
<StarIcon />
별표
</ToggleGroup.Item>
<ToggleGroup.Item
value="heart"
aria-label="Toggle heart"
class="data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-red-500 data-[state=on]:*:[svg]:stroke-red-500"
>
<HeartIcon />
하트
</ToggleGroup.Item>
<ToggleGroup.Item
value="bookmark"
aria-label="Toggle bookmark"
class="data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-blue-500 data-[state=on]:*:[svg]:stroke-blue-500"
>
<BookmarkIcon />
북마크
</ToggleGroup.Item>
</ToggleGroup.Root> 설치
bits-ui를 설치합니다:
다음 코드를 복사하여 프로젝트에 붙여넣으세요.
사용법
<script lang="ts">
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
</script> <ToggleGroup.Root type="single">
<ToggleGroup.Item value="a">A</ToggleGroup.Item>
<ToggleGroup.Item value="b">B</ToggleGroup.Item>
<ToggleGroup.Item value="c">C</ToggleGroup.Item>
</ToggleGroup.Root> 예제
Outline
<script lang="ts">
import BoldIcon from "@lucide/svelte/icons/bold";
import ItalicIcon from "@lucide/svelte/icons/italic";
import UnderlineIcon from "@lucide/svelte/icons/underline";
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
</script>
<ToggleGroup.Root variant="outline" type="multiple">
<ToggleGroup.Item value="bold" aria-label="Toggle bold">
<BoldIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="italic" aria-label="Toggle italic">
<ItalicIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough">
<UnderlineIcon class="size-4" />
</ToggleGroup.Item>
</ToggleGroup.Root> Single
<script lang="ts">
import BoldIcon from "@lucide/svelte/icons/bold";
import ItalicIcon from "@lucide/svelte/icons/italic";
import UnderlineIcon from "@lucide/svelte/icons/underline";
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
</script>
<ToggleGroup.Root type="single">
<ToggleGroup.Item value="bold" aria-label="Toggle bold">
<BoldIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="italic" aria-label="Toggle italic">
<ItalicIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough">
<UnderlineIcon class="size-4" />
</ToggleGroup.Item>
</ToggleGroup.Root> Small
<script lang="ts">
import BoldIcon from "@lucide/svelte/icons/bold";
import ItalicIcon from "@lucide/svelte/icons/italic";
import UnderlineIcon from "@lucide/svelte/icons/underline";
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
</script>
<ToggleGroup.Root size="sm" type="single">
<ToggleGroup.Item value="bold" aria-label="Toggle bold">
<BoldIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="italic" aria-label="Toggle italic">
<ItalicIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough">
<UnderlineIcon class="size-4" />
</ToggleGroup.Item>
</ToggleGroup.Root> Large
<script lang="ts">
import BoldIcon from "@lucide/svelte/icons/bold";
import ItalicIcon from "@lucide/svelte/icons/italic";
import UnderlineIcon from "@lucide/svelte/icons/underline";
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
</script>
<ToggleGroup.Root size="lg" type="multiple">
<ToggleGroup.Item value="bold" aria-label="Toggle bold">
<BoldIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="italic" aria-label="Toggle italic">
<ItalicIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough">
<UnderlineIcon class="size-4" />
</ToggleGroup.Item>
</ToggleGroup.Root> Disabled
<script lang="ts">
import BoldIcon from "@lucide/svelte/icons/bold";
import ItalicIcon from "@lucide/svelte/icons/italic";
import UnderlineIcon from "@lucide/svelte/icons/underline";
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
</script>
<ToggleGroup.Root disabled type="single">
<ToggleGroup.Item value="bold" aria-label="Toggle bold">
<BoldIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="italic" aria-label="Toggle italic">
<ItalicIcon class="size-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough">
<UnderlineIcon class="size-4" />
</ToggleGroup.Item>
</ToggleGroup.Root> 간격
토글 그룹 아이템 사이에 간격을 추가하려면 spacing={2}를 사용하세요.
<script lang="ts">
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
import BookmarkIcon from "@lucide/svelte/icons/bookmark";
import HeartIcon from "@lucide/svelte/icons/heart";
import StarIcon from "@lucide/svelte/icons/star";
</script>
<ToggleGroup.Root type="multiple" variant="outline" spacing={2} size="sm">
<ToggleGroup.Item
value="star"
aria-label="Toggle star"
class="data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500"
>
<StarIcon />
별표
</ToggleGroup.Item>
<ToggleGroup.Item
value="heart"
aria-label="Toggle heart"
class="data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-red-500 data-[state=on]:*:[svg]:stroke-red-500"
>
<HeartIcon />
하트
</ToggleGroup.Item>
<ToggleGroup.Item
value="bookmark"
aria-label="Toggle bookmark"
class="data-[state=on]:bg-transparent data-[state=on]:*:[svg]:fill-blue-500 data-[state=on]:*:[svg]:stroke-blue-500"
>
<BookmarkIcon />
북마크
</ToggleGroup.Item>
</ToggleGroup.Root>