Skip to content

Scrollbar

@hua-labs/hua
v1.0.0

bash
npm install @hua-labs/hua
tsx
import { Scrollbar } from "@hua-labs/hua";

default / glass / minimal / neon

default
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.
glass
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.
minimal
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.
neon
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.

sm / md / lg / xl

sm
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
md
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
lg
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
xl
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.

Orientation

vertical / horizontal / both

vertical
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
horizontal
Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Item 9
Item 10
both
1-1
1-2
1-3
1-4
1-5
2-1
2-2
2-3
2-4
2-5
3-1
3-2
3-3
3-4
3-5
4-1
4-2
4-3
4-4
4-5
5-1
5-2
5-3
5-4
5-5
6-1
6-2
6-3
6-4
6-5
7-1
7-2
7-3
7-4
7-5
8-1
8-2
8-3
8-4
8-5

Props

variant"default" | "glass" | "colorful" | "minimal" | "neon""default"Scrollbar visual style
size"sm" | "md" | "lg" | "xl""md"Scrollbar thumb width
orientation"vertical" | "horizontal" | "both""both"Scroll direction
autoHidebooleantrueAuto-hide scrollbar when not scrolling
smoothbooleantrueEnable smooth scrolling behavior
children*ReactNode-Scrollable content

docs:common.basicUsage

tsx
import { Scrollbar } from '@hua-labs/hua';

export function BasicScrollbar() {
  return (
    <Scrollbar className="h-48">
      <div className="p-4 space-y-4">
        {Array.from({ length: 20 }).map((_, i) => (
          <p key={i}>Scrollable content item {i + 1}</p>
        ))}
      </div>
    </Scrollbar>
  );
}

docs:common.variants

tsx
import { Scrollbar } from '@hua-labs/hua';

export function ScrollbarVariants() {
  return (
    <div className="grid grid-cols-2 gap-4">
      <Scrollbar variant="default" className="h-32 border rounded">
        <div className="p-4">Default variant</div>
      </Scrollbar>

      <Scrollbar variant="glass" className="h-32 border rounded">
        <div className="p-4">Glass variant</div>
      </Scrollbar>

      <Scrollbar variant="minimal" className="h-32 border rounded">
        <div className="p-4">Minimal variant</div>
      </Scrollbar>

      <Scrollbar variant="neon" className="h-32 border rounded">
        <div className="p-4">Neon variant</div>
      </Scrollbar>
    </div>
  );
}

docs:common.sizes

tsx
import { Scrollbar } from '@hua-labs/hua';

export function ScrollbarSizes() {
  return (
    <div className="grid grid-cols-4 gap-4">
      <Scrollbar size="sm" className="h-32 border rounded">
        <div className="p-4">Small</div>
      </Scrollbar>

      <Scrollbar size="md" className="h-32 border rounded">
        <div className="p-4">Medium</div>
      </Scrollbar>

      <Scrollbar size="lg" className="h-32 border rounded">
        <div className="p-4">Large</div>
      </Scrollbar>

      <Scrollbar size="xl" className="h-32 border rounded">
        <div className="p-4">XL</div>
      </Scrollbar>
    </div>
  );
}

  • Keyboard: Standard keyboard scrolling with arrow keys, Page Up/Down, Home/End
  • Focus: Scrollable area is focusable for keyboard users
  • Smooth: Respects prefers-reduced-motion for users who prefer less motion