PUDGE/UI v0.2.1 2025-07
  • + 5 new hardware compositions: Walkman Deck (Sony WM-D6C), Game Boy (Nintendo DMG-01), DJ Controller Deck (Pioneer DDJ), Synthesizer Panel (Roland SH-101 / Moog Minimoog)
  • + Changelog page at /changelog with full version history
  • + Animated NEW badge on recently added specs and compositions
  • + LCD-style version update banner with per-version dismiss
sliders .fader-h-track

Range Fader

Mixing console horizontal fader with rectangular thumb grip

Size
Material
<div class="fader-h-wrap">
  <div class="fader-h-track">
    <div class="fader-h-fill" style="width:45%"></div>
    <div class="fader-h-thumb" style="left:45%"></div>
  </div>
</div>
.fader-h-wrap { display: flex; flex-direction: column; align-items: center; gap: 6px; width: 180px; }

.fader-h-track {
  width: 100%; height: 8px; border-radius: 4px;
  background: var(--bg-inset); border: 1px solid var(--border-subtle);
  position: relative; box-shadow: var(--shadow-inset);
}

.fader-h-fill {
  position: absolute; top: 0; left: 0; height: 100%; border-radius: 3px;
  background: var(--amber); transition: width 0.1s;
}

.fader-h-thumb {
  position: absolute; top: 50%; width: 22px; height: 14px;
  border-radius: 3px; transform: translate(-50%,-50%);
  background: linear-gradient(180deg, #666, #333);
  box-shadow: 0 1px 3px rgba(0,0,0,0.4), inset 0 1px 0 #888;
  cursor: grab; z-index: 2;
}
.fader-h-thumb::after {
  content: ''; position: absolute; top: 50%; left: 4px; right: 4px;
  height: 1px; background: #999; transform: translateY(-50%);
}

API

Class Type Description
.fader-h-track Base Primary component class
.md Size Medium (default) variant
.panel Material Panel surface variant

Design Notes

Physical Analog

Reference devices: Mackie mixer channel faders, Behringer mixer faders, SSL console faders. Mechanism: Linear slide potentiometer. Wiper moves in straight line along conductive plastic track. Rectangular thumb grip with horizontal groove for tactile feedback. Fader body has 8-12mm x 4-6mm cross-section.

Geometry

Property Value
Track 100% width x 8px height (thicker than volume slider)
Thumb 22x14px rectangular (NOT circular)
Thumb radius 3px (rounded rectangle)
Fill Amber (solid, not gradient)
Container width 180px

CSS Recipe

Wrapper

.fader-h-wrap { display: flex; flex-direction: column; align-items: center; gap: 6px; width: 180px; }

Track

.fader-h-track {
  width: 100%; height: 8px; border-radius: 4px;
  background: var(--bg-inset); border: 1px solid var(--border-subtle);
  position: relative; box-shadow: var(--shadow-inset);
}

Fill

.fader-h-fill {
  position: absolute; top: 0; left: 0; height: 100%; border-radius: 3px;
  background: var(--amber); transition: width 0.1s;
}

Thumb (Fader Cap)

.fader-h-thumb {
  position: absolute; top: 50%; width: 22px; height: 14px;
  border-radius: 3px; transform: translate(-50%,-50%);
  background: linear-gradient(180deg, #666, #333);
  box-shadow: 0 1px 3px rgba(0,0,0,0.4), inset 0 1px 0 #888;
  cursor: grab; z-index: 2;
}
.fader-h-thumb::after {
  content: ''; position: absolute; top: 50%; left: 4px; right: 4px;
  height: 1px; background: #999; transform: translateY(-50%);
}

HTML Structure

<div class="fader-h-wrap">
  <div class="fader-h-track">
    <div class="fader-h-fill" style="width:45%"></div>
    <div class="fader-h-thumb" style="left:45%"></div>
  </div>
</div>

Size Variants

No explicit size variants.

Material Variants

  • Track: Recessed panel
  • Thumb: Chrome/metallic gradient with center groove line (::after)

Theme Behavior

  • Track adapts via tokens
  • Thumb metallic gradient is fixed (metal fader cap)
  • Amber fill is fixed

Constraints

  1. Thumb MUST be rectangular (22x14px, border-radius: 3px), NOT circular. This is a console fader, not a touch slider.
  2. Center groove line (::after) on thumb is REQUIRED for finger positioning reference.
  3. Fill MUST be solid amber (not gradient) -- represents the active signal level.
  4. Track is 8px (thicker than volume slider's 6px) -- fader tracks are wider.

Accessibility

  • Add role="slider" with aria-valuenow, aria-valuemin, aria-valuemax
  • Keyboard: Arrow Left/Right to adjust
  • Requires JS for drag interaction
Accessibility
Element
Use semantic HTML with appropriate ARIA roles
Keyboard
Arrow keys to adjust, Home/End for min/max
Focus
Visible focus indicator required. Use native browser focus ring or custom :focus-visible styles.

Hand it to your agent

pudge-ui is a spec, not a package — there's nothing to npm install. Pick your stack, copy the prompt, and your coding agent builds this component from the spec.

Faders are vertical, scrubbers are horizontal. Same physics, different orientation.

Depth model →
Pudge