Breadcrumb

A navigation component showing the current page location in a hierarchy

List Variants

Different visual styles for the breadcrumb list.

Default

Solid

Subtle

Bold


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage
12	} = BreadcrumbPrimitives;
13</script>
14
15<div class="space-y-6">
16	<!-- Default -->
17	<Breadcrumb>
18		<BreadcrumbList variant="default">
19			<BreadcrumbItem>
20				<BreadcrumbLink href="/">Home</BreadcrumbLink>
21			</BreadcrumbItem>
22			<BreadcrumbSeparator />
23			<BreadcrumbItem>
24				<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
25			</BreadcrumbItem>
26		</BreadcrumbList>
27	</Breadcrumb>
28
29	<!-- Solid -->
30	<Breadcrumb>
31		<BreadcrumbList variant="solid">
32			<BreadcrumbItem>
33				<BreadcrumbLink href="/">Home</BreadcrumbLink>
34			</BreadcrumbItem>
35			<BreadcrumbSeparator />
36			<BreadcrumbItem>
37				<BreadcrumbPage>Getting Started</BreadcrumbPage>
38			</BreadcrumbItem>
39		</BreadcrumbList>
40	</Breadcrumb>
41
42	<!-- Subtle -->
43	<Breadcrumb>
44		<BreadcrumbList variant="subtle">
45			<BreadcrumbItem>
46				<BreadcrumbLink href="/">Home</BreadcrumbLink>
47			</BreadcrumbItem>
48			<BreadcrumbSeparator />
49			<BreadcrumbItem>
50				<BreadcrumbPage>Article</BreadcrumbPage>
51			</BreadcrumbItem>
52		</BreadcrumbList>
53	</Breadcrumb>
54
55	<!-- Bold -->
56	<Breadcrumb>
57		<BreadcrumbList variant="bold">
58			<BreadcrumbItem>
59				<BreadcrumbLink href="/">Home</BreadcrumbLink>
60			</BreadcrumbItem>
61			<BreadcrumbSeparator />
62			<BreadcrumbItem>
63				<BreadcrumbPage>Laptops</BreadcrumbPage>
64			</BreadcrumbItem>
65		</BreadcrumbList>
66	</Breadcrumb>
67</div>

Link Variants

Different hover and interaction styles for links.

Default Link

Underline Link

Bold Link

Subtle Link


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage
12	} = BreadcrumbPrimitives;
13</script>
14
15<div class="space-y-6">
16	<!-- Default Link -->
17	<Breadcrumb>
18		<BreadcrumbList>
19			<BreadcrumbItem>
20				<BreadcrumbLink variant="default" href="/">Home</BreadcrumbLink>
21			</BreadcrumbItem>
22			<BreadcrumbSeparator />
23			<BreadcrumbItem>
24				<BreadcrumbPage>Profile</BreadcrumbPage>
25			</BreadcrumbItem>
26		</BreadcrumbList>
27	</Breadcrumb>
28
29	<!-- Underline Link -->
30	<Breadcrumb>
31		<BreadcrumbList>
32			<BreadcrumbItem>
33				<BreadcrumbLink variant="underline" href="/">Home</BreadcrumbLink>
34			</BreadcrumbItem>
35			<BreadcrumbSeparator />
36			<BreadcrumbItem>
37				<BreadcrumbPage>Analytics</BreadcrumbPage>
38			</BreadcrumbItem>
39		</BreadcrumbList>
40	</Breadcrumb>
41
42	<!-- Bold Link -->
43	<Breadcrumb>
44		<BreadcrumbList>
45			<BreadcrumbItem>
46				<BreadcrumbLink variant="bold" href="/">Home</BreadcrumbLink>
47			</BreadcrumbItem>
48			<BreadcrumbSeparator />
49			<BreadcrumbItem>
50				<BreadcrumbPage>Website</BreadcrumbPage>
51			</BreadcrumbItem>
52		</BreadcrumbList>
53	</Breadcrumb>
54
55	<!-- Subtle Link -->
56	<Breadcrumb>
57		<BreadcrumbList>
58			<BreadcrumbItem>
59				<BreadcrumbLink variant="subtle" href="/">Home</BreadcrumbLink>
60			</BreadcrumbItem>
61			<BreadcrumbSeparator />
62			<BreadcrumbItem>
63				<BreadcrumbPage>FAQ</BreadcrumbPage>
64			</BreadcrumbItem>
65		</BreadcrumbList>
66	</Breadcrumb>
67</div>

Separator Variants

Different separator icons and styles.

Chevron (Default)

Slash

Dot

Arrow

Custom Separator


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage
12	} = BreadcrumbPrimitives;
13</script>
14
15<div class="space-y-6">
16	<!-- Chevron (Default) -->
17	<Breadcrumb>
18		<BreadcrumbList>
19			<BreadcrumbItem>
20				<BreadcrumbLink href="/">Home</BreadcrumbLink>
21			</BreadcrumbItem>
22			<BreadcrumbSeparator variant="default" />
23			<BreadcrumbItem>
24				<BreadcrumbPage>Guide</BreadcrumbPage>
25			</BreadcrumbItem>
26		</BreadcrumbList>
27	</Breadcrumb>
28
29	<!-- Slash -->
30	<Breadcrumb>
31		<BreadcrumbList>
32			<BreadcrumbItem>
33				<BreadcrumbLink href="/">Home</BreadcrumbLink>
34			</BreadcrumbItem>
35			<BreadcrumbSeparator variant="slash" />
36			<BreadcrumbItem>
37				<BreadcrumbPage>Introduction</BreadcrumbPage>
38			</BreadcrumbItem>
39		</BreadcrumbList>
40	</Breadcrumb>
41
42	<!-- Dot -->
43	<Breadcrumb>
44		<BreadcrumbList>
45			<BreadcrumbItem>
46				<BreadcrumbLink href="/">Home</BreadcrumbLink>
47			</BreadcrumbItem>
48			<BreadcrumbSeparator variant="dot" />
49			<BreadcrumbItem>
50				<BreadcrumbPage>Team</BreadcrumbPage>
51			</BreadcrumbItem>
52		</BreadcrumbList>
53	</Breadcrumb>
54
55	<!-- Arrow -->
56	<Breadcrumb>
57		<BreadcrumbList>
58			<BreadcrumbItem>
59				<BreadcrumbLink href="/">Home</BreadcrumbLink>
60			</BreadcrumbItem>
61			<BreadcrumbSeparator variant="arrow" />
62			<BreadcrumbItem>
63				<BreadcrumbPage>Website</BreadcrumbPage>
64			</BreadcrumbItem>
65		</BreadcrumbList>
66	</Breadcrumb>
67</div>

Page Variants

Different styles for the current page indicator.

Default Page

Bold Page

Muted Page

Accent Page


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage
12	} = BreadcrumbPrimitives;
13</script>
14
15<div class="space-y-6">
16	<!-- Default Page -->
17	<Breadcrumb>
18		<BreadcrumbList>
19			<BreadcrumbItem>
20				<BreadcrumbLink href="/">Home</BreadcrumbLink>
21			</BreadcrumbItem>
22			<BreadcrumbSeparator />
23			<BreadcrumbItem>
24				<BreadcrumbPage variant="default">Current Page</BreadcrumbPage>
25			</BreadcrumbItem>
26		</BreadcrumbList>
27	</Breadcrumb>
28
29	<!-- Bold Page -->
30	<Breadcrumb>
31		<BreadcrumbList>
32			<BreadcrumbItem>
33				<BreadcrumbLink href="/">Home</BreadcrumbLink>
34			</BreadcrumbItem>
35			<BreadcrumbSeparator />
36			<BreadcrumbItem>
37				<BreadcrumbPage variant="bold">Current Page</BreadcrumbPage>
38			</BreadcrumbItem>
39		</BreadcrumbList>
40	</Breadcrumb>
41
42	<!-- Muted Page -->
43	<Breadcrumb>
44		<BreadcrumbList>
45			<BreadcrumbItem>
46				<BreadcrumbLink href="/">Home</BreadcrumbLink>
47			</BreadcrumbItem>
48			<BreadcrumbSeparator />
49			<BreadcrumbItem>
50				<BreadcrumbPage variant="muted">Current Page</BreadcrumbPage>
51			</BreadcrumbItem>
52		</BreadcrumbList>
53	</Breadcrumb>
54
55	<!-- Accent Page -->
56	<Breadcrumb>
57		<BreadcrumbList>
58			<BreadcrumbItem>
59				<BreadcrumbLink href="/">Home</BreadcrumbLink>
60			</BreadcrumbItem>
61			<BreadcrumbSeparator />
62			<BreadcrumbItem>
63				<BreadcrumbPage variant="accent">Current Page</BreadcrumbPage>
64			</BreadcrumbItem>
65		</BreadcrumbList>
66	</Breadcrumb>
67</div>

Size Variants

Different sizes for various layouts.

Small

Default

Large


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage
12	} = BreadcrumbPrimitives;
13</script>
14
15<div class="space-y-6">
16	<!-- Small -->
17	<Breadcrumb>
18		<BreadcrumbList size="sm">
19			<BreadcrumbItem>
20				<BreadcrumbLink href="/">Home</BreadcrumbLink>
21			</BreadcrumbItem>
22			<BreadcrumbSeparator size="sm" />
23			<BreadcrumbItem>
24				<BreadcrumbPage>Small Size</BreadcrumbPage>
25			</BreadcrumbItem>
26		</BreadcrumbList>
27	</Breadcrumb>
28
29	<!-- Default -->
30	<Breadcrumb>
31		<BreadcrumbList size="default">
32			<BreadcrumbItem>
33				<BreadcrumbLink href="/">Home</BreadcrumbLink>
34			</BreadcrumbItem>
35			<BreadcrumbSeparator size="default" />
36			<BreadcrumbItem>
37				<BreadcrumbPage>Default Size</BreadcrumbPage>
38			</BreadcrumbItem>
39		</BreadcrumbList>
40	</Breadcrumb>
41
42	<!-- Large -->
43	<Breadcrumb>
44		<BreadcrumbList size="lg">
45			<BreadcrumbItem>
46				<BreadcrumbLink href="/">Home</BreadcrumbLink>
47			</BreadcrumbItem>
48			<BreadcrumbSeparator size="lg" />
49			<BreadcrumbItem>
50				<BreadcrumbPage>Large Size</BreadcrumbPage>
51			</BreadcrumbItem>
52		</BreadcrumbList>
53	</Breadcrumb>
54</div>

Spacing Variants

Control the gap between breadcrumb items.

Compact

Default

Relaxed


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage
12	} = BreadcrumbPrimitives;
13</script>
14
15<div class="space-y-6">
16	<!-- Compact -->
17	<Breadcrumb>
18		<BreadcrumbList spacing="compact">
19			<BreadcrumbItem>
20				<BreadcrumbLink href="/">Home</BreadcrumbLink>
21			</BreadcrumbItem>
22			<BreadcrumbSeparator />
23			<BreadcrumbItem>
24				<BreadcrumbPage>Compact</BreadcrumbPage>
25			</BreadcrumbItem>
26		</BreadcrumbList>
27	</Breadcrumb>
28
29	<!-- Default -->
30	<Breadcrumb>
31		<BreadcrumbList spacing="default">
32			<BreadcrumbItem>
33				<BreadcrumbLink href="/">Home</BreadcrumbLink>
34			</BreadcrumbItem>
35			<BreadcrumbSeparator />
36			<BreadcrumbItem>
37				<BreadcrumbPage>Default</BreadcrumbPage>
38			</BreadcrumbItem>
39		</BreadcrumbList>
40	</Breadcrumb>
41
42	<!-- Relaxed -->
43	<Breadcrumb>
44		<BreadcrumbList spacing="relaxed">
45			<BreadcrumbItem>
46				<BreadcrumbLink href="/">Home</BreadcrumbLink>
47			</BreadcrumbItem>
48			<BreadcrumbSeparator />
49			<BreadcrumbItem>
50				<BreadcrumbPage>Relaxed</BreadcrumbPage>
51			</BreadcrumbItem>
52		</BreadcrumbList>
53	</Breadcrumb>
54</div>

With Icons

Enhance breadcrumbs with icons for better visual communication.

File Navigation

Application Navigation


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4	import { Home, Folder, File } from "@kareyes/aether/icons";
5
6	const {
7		Breadcrumb,
8		BreadcrumbList,
9		BreadcrumbItem,
10		BreadcrumbLink,
11		BreadcrumbSeparator,
12		BreadcrumbPage
13	} = BreadcrumbPrimitives;
14</script>
15
16<Breadcrumb>
17	<BreadcrumbList>
18		<BreadcrumbItem>
19			<BreadcrumbLink href="/">
20				<Home class="size-4" />
21				<span>Home</span>
22			</BreadcrumbLink>
23		</BreadcrumbItem>
24		<BreadcrumbSeparator />
25		<BreadcrumbItem>
26			<BreadcrumbLink href="/documents">
27				<Folder class="size-4" />
28				<span>Documents</span>
29			</BreadcrumbLink>
30		</BreadcrumbItem>
31		<BreadcrumbSeparator />
32		<BreadcrumbItem>
33			<BreadcrumbPage>
34				<File class="size-4" />
35				<span>readme.md</span>
36			</BreadcrumbPage>
37		</BreadcrumbItem>
38	</BreadcrumbList>
39</Breadcrumb>

With Ellipsis

Collapse middle items for long breadcrumb trails.


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage,
12		BreadcrumbEllipsis
13	} = BreadcrumbPrimitives;
14</script>
15
16<Breadcrumb>
17	<BreadcrumbList>
18		<BreadcrumbItem>
19			<BreadcrumbLink href="/">Home</BreadcrumbLink>
20		</BreadcrumbItem>
21		<BreadcrumbSeparator />
22		<BreadcrumbItem>
23			<BreadcrumbEllipsis />
24		</BreadcrumbItem>
25		<BreadcrumbSeparator />
26		<BreadcrumbItem>
27			<BreadcrumbLink href="/components">Components</BreadcrumbLink>
28		</BreadcrumbItem>
29		<BreadcrumbSeparator />
30		<BreadcrumbItem>
31			<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
32		</BreadcrumbItem>
33	</BreadcrumbList>
34</Breadcrumb>

Dynamic Breadcrumbs

Generated from data structure.


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4
5	const {
6		Breadcrumb,
7		BreadcrumbList,
8		BreadcrumbItem,
9		BreadcrumbLink,
10		BreadcrumbSeparator,
11		BreadcrumbPage
12	} = BreadcrumbPrimitives;
13
14	type PathSegment = {
15		label: string;
16		href?: string;
17	};
18
19	let dynamicSegments: PathSegment[] = $state([
20		{ label: "Home", href: "/" },
21		{ label: "Products", href: "/products" },
22		{ label: "Electronics", href: "/products/electronics" },
23		{ label: "Laptops" }
24	]);
25</script>
26
27<Breadcrumb>
28	<BreadcrumbList>
29		{#each dynamicSegments as segment, i}
30			<BreadcrumbItem>
31				{#if segment.href}
32					<BreadcrumbLink href={segment.href}>{segment.label}</BreadcrumbLink>
33				{:else}
34					<BreadcrumbPage>{segment.label}</BreadcrumbPage>
35				{/if}
36			</BreadcrumbItem>
37			{#if i < dynamicSegments.length - 1}
38				<BreadcrumbSeparator />
39			{/if}
40		{/each}
41	</BreadcrumbList>
42</Breadcrumb>

Advanced Combinations

Combining multiple variants for custom styles.

Bold + Slash + Large + Relaxed

Subtle + Underline + Dot + Small

Solid + Arrow + Accent Page


Code Svelte
1
2<script lang="ts">
3	import { BreadcrumbPrimitives } from "@kareyes/aether";
4	import { Home, User } from "@kareyes/aether/icons";
5
6	const {
7		Breadcrumb,
8		BreadcrumbList,
9		BreadcrumbItem,
10		BreadcrumbLink,
11		BreadcrumbSeparator,
12		BreadcrumbPage
13	} = BreadcrumbPrimitives;
14</script>
15
16<div class="space-y-6">
17	<!-- Bold + Slash + Large + Relaxed -->
18	<Breadcrumb>
19		<BreadcrumbList variant="bold" size="lg" spacing="relaxed">
20			<BreadcrumbItem>
21				<BreadcrumbLink variant="bold" href="/">
22					<Home class="size-5" />
23					<span>Home</span>
24				</BreadcrumbLink>
25			</BreadcrumbItem>
26			<BreadcrumbSeparator variant="slash" size="lg" />
27			<BreadcrumbItem>
28				<BreadcrumbPage variant="bold">Electronics</BreadcrumbPage>
29			</BreadcrumbItem>
30		</BreadcrumbList>
31	</Breadcrumb>
32
33	<!-- Solid + Arrow + Accent Page -->
34	<Breadcrumb>
35		<BreadcrumbList variant="solid">
36			<BreadcrumbItem>
37				<BreadcrumbLink href="/">
38					<User class="size-4" />
39					<span>Account</span>
40				</BreadcrumbLink>
41			</BreadcrumbItem>
42			<BreadcrumbSeparator variant="arrow" />
43			<BreadcrumbItem>
44				<BreadcrumbPage variant="accent">Security</BreadcrumbPage>
45			</BreadcrumbItem>
46		</BreadcrumbList>
47	</Breadcrumb>
48</div>