BadgeGroup

Flush strip of badges with one shared surface and hairline dividers between segments — the nav cluster as a component.

Usage

svelte
<script lang="ts">
  import { Badge, BadgeGroup } from "@milandekruijf/ui/svelte";
</script>

<BadgeGroup>
  <Badge>Svelte</Badge>
  <Badge>TypeScript</Badge>
  <Badge>+3</Badge>
</BadgeGroup>

<!-- Dense sets (filters, tags) wrap onto multiple lines. -->
<BadgeGroup wrap>
  {#each tags as tag (tag)}
    <Badge>{tag}</Badge>
  {/each}
</BadgeGroup>

Examples

Strips and wrapping
svelte
typescript
panda css
+3
topics
languages
sort
svelte
typescript
panda css
radix
gsap
vite
vitest
shiki
<script lang="ts">
  import { Badge, BadgeGroup } from "@milandekruijf/ui/svelte";
  import { row, stack } from "./styles.js";

  const tags = [
    "svelte",
    "typescript",
    "panda css",
    "radix",
    "gsap",
    "vite",
    "vitest",
    "shiki",
  ];
</script>

<div class={stack}>
  <div class={row}>
    <BadgeGroup>
      <Badge>svelte</Badge>
      <Badge>typescript</Badge>
      <Badge>panda css</Badge>
      <Badge>+3</Badge>
    </BadgeGroup>
  </div>
  <div class={row}>
    <BadgeGroup>
      <Badge contrast="selected">topics</Badge>
      <Badge>languages</Badge>
      <Badge>sort</Badge>
    </BadgeGroup>
  </div>
  <div class={row}>
    <BadgeGroup wrap>
      {#each tags as tag (tag)}
        <Badge>{tag}</Badge>
      {/each}
    </BadgeGroup>
  </div>
</div>

Props

PropTypeDefaultDescription
wrap?booleanfalse
Allows dense groups (e.g. filter chips) to break onto multiple lines.
rootRef?HTMLDivElement | null—
Bindable handle to the root element (`bind:rootRef`), e.g. to measure or animate the strip.
class?string—
Extra classes merged after the recipe classes.
childrenSnippet—
Badges, or links/buttons that wrap a badge, rendered as flush segments.