Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
IT Nachrichten21. September(21.09.2026 um 00:05 Uhr)
YouTube Security VideosŠkoda Peaq im Fahrest: DAS hätten wir nicht erwartet! | CHIP(21.09.2026 um 00:00 Uhr)
Sichere ProgrammierungBackups and other lies(20.09.2026 um 23:42 Uhr)
IT Nachrichten21. September(21.09.2026 um 00:05 Uhr)
YouTube Security VideosŠkoda Peaq im Fahrest: DAS hätten wir nicht erwartet! | CHIP(21.09.2026 um 00:00 Uhr)
Sichere ProgrammierungBackups and other lies(20.09.2026 um 23:42 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

color-zone — A React Color Picker with Gradient Support, EyeDropper, and a Headless Hook

Reagiere als Erste:r — dein Feedback zählt!

title: "color-zone — A React Color Picker with Gradient Support, EyeDropper, and a Headless Hook"
published: true
tags: react, typescript, opensource, webdev

description: "A zero-dependency React color picker supporting HSV, RGB, HSL, HEX, linear/radial gradients, EyeDropper API, and a headless useColorPicker hook."

I built a React color picker that actually handles gradients

Most color picker libraries handle solid colors well. As soon as you need gradient support — letting users build linear-gradient or radial-gradient values with multiple stops — you're either stitching together multiple libraries or building it yourself.

I needed exactly that for a project, so I built color-zone.

What it does

  • HSV picker square with hue and alpha sliders
  • Switchable input modes: HEX, RGB, HSL
  • Full gradient editing — linear and radial, with draggable multi-stop bar
  • EyeDropper API for sampling any color on screen
  • A useColorPicker hook for headless / custom UIs
  • Zero runtime dependencies
  • Full TypeScript support

Install

npm install color-zone

Basic usage

import { ColorPicker } from "color-zone";
import { useState } from "react";

export default function App() {
  const [color, setColor] = useState("#3498db");

  return <ColorPicker value={color} onChange={setColor} />;
}

That's it. The picker is a controlled component — you own the state, it calls onChange on every update.

Gradient mode is automatic

Pass a CSS gradient string and the picker switches into gradient mode — no extra config needed.

const [bg, setBg] = useState(
  "linear-gradient(90deg, #e52d27 0%, #b31217 100%)"
);

<ColorPicker value={bg} onChange={setBg} />

Users get a full stop bar: click to add a stop, drag to reposition, double-click to remove. The onChange callback returns a valid CSS gradient string you can apply directly to background.

The headless hook

If you want full control over the UI, skip the component and use useColorPicker instead.

import { useColorPicker } from "color-zone";

function CustomPicker() {
  const [color, setColor] = useState("#e74c3c");
  const {
    valueToHex,
    valueToHSL,
    valueToCmyk,
    setR, setG, setB, setA,
    setHue, setSaturation, setLightness,
    setLinear, setRadial, setDegrees,
    addPoint, deletePoint, setSelectedPoint,
  } = useColorPicker(color, setColor);

  return (
    <div>
      <p>HEX: {valueToHex()}</p>
      <p>HSL: {valueToHSL()}</p>
      <p>CMYK: {valueToCmyk()}</p>
      <button onClick={() => setLinear()}>Make Linear Gradient</button>
      <button onClick={() => setRadial()}>Make Radial Gradient</button>
    </div>
  );
}

Color utilities are exported too

import {
  rgb2hsl, rgb2hsv, rgb2cmyk,
  hsv2rgb, toHex, toHexA,
  parseColor, parseGradient, buildGradientString,
} from "color-zone";

const [h, s, l] = rgb2hsl(255, 99, 71);
// → [9, 100, 64]

const parsed = parseColor("rgba(255, 99, 71, 0.8)");
// → { r: 255, g: 99, b: 71, a: 0.8 }

Hiding what you don't need

// Minimal — hue + alpha sliders only
<ColorPicker
  value={color}
  onChange={setColor}
  hidePickerSquare
  hideInputs
  hideEyeDrop
/>

TypeScript

import type {
  ColorPickerProps,
  UseColorPickerReturn,
  GradientStop,
  ParsedGradient,
} from "color-zone";

EyeDropper

On Chrome/Edge 95+, a dropper button appears automatically — no configuration needed. Silently hidden everywhere else.

Links

Let me know if you run into issues or have feature requests — happy to take them in the issues tab.

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten color-zone — A React Color Picker with Gradient Support, EyeDropper, and a Headless Hook

Thematisch verwandte Begriffe: colorzone, React, Color, Picker · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-93957 | A vulnerability has been found in olivier-ls PHP-FTS up to 1.1.3. This a…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick