blaze-motion
← All components

Sibling Dimming

Hover

Sibling dimming — hovering one item dims every non-hovered sibling to 50%. Pure CSS.

Overview
Pricing
Docs
Changelog

Installation

One command drops the source into your repo — editable, with the provider and motion pulled in automatically.

npx shadcn add https://motion.asmitsah.dev/r/sibling-dimming.json

Usage

Basic group

Wrap a set of items in SiblingDimming, each item in SiblingDimmingItem. Pure CSS — no JS, no state.

import { SiblingDimming, SiblingDimmingItem } from "@/components/motion/sibling-dimming";

<SiblingDimming className="flex gap-3">
  <SiblingDimmingItem>Overview</SiblingDimmingItem>
  <SiblingDimmingItem>Pricing</SiblingDimmingItem>
  <SiblingDimmingItem>Docs</SiblingDimmingItem>
</SiblingDimming>

Nav bar

A common home — hovering a nav link dims the others so the active hover reads clearly. SiblingDimming renders the container div itself.

<SiblingDimming className="flex items-center gap-6">
  <SiblingDimmingItem>
    <Link href="/product">Product</Link>
  </SiblingDimmingItem>
  <SiblingDimmingItem>
    <Link href="/pricing">Pricing</Link>
  </SiblingDimmingItem>
  <SiblingDimmingItem>
    <Link href="/about">About</Link>
  </SiblingDimmingItem>
</SiblingDimming>

Feature grid

Works in a grid just as well — the :has() selector only cares about the dim-item marker, not layout.

<SiblingDimming className="grid grid-cols-3 gap-4">
  {features.map((f) => (
    <SiblingDimmingItem key={f.title} className="rounded-md border p-4">
      <h3>{f.title}</h3>
      <p>{f.description}</p>
    </SiblingDimmingItem>
  ))}
</SiblingDimming>

Props

PropTypeDefaultDescription
childrenReactNodeThe SiblingDimmingItem elements to group — hovering one dims its non-hovered siblings.
classNamestringPassed straight through — SiblingDimming becomes your layout element (e.g. a flex row or grid).
styleCSSPropertiesInline style passthrough.

SiblingDimmingItem

PropTypeDefaultDescription
childrenReactNodeThe item's content.
classNamestringPassed straight through — SiblingDimmingItem becomes your item element.
styleCSSPropertiesMerged after the built-in opacity-transition timing, so you can override it per instance.