react-color-pro

A lightweight, framework-agnostic color picker for React. Zero dependencies. Customizable.

Get Started

Live Color Preview

HEX: #14b8a6
RGB: rgb(20, 184, 166)
HSL: hsl(173, 80%, 40%)
Contrast Ratio: 1.57(Low)
#

Key Features

Ultra Lightweight

~4.37 kB gzipped, no runtime dependencies except React.

Framework-Agnostic

Works with React, Preact, Next.js, Remix, and more.

TypeScript Support

Full type definitions for seamless TypeScript integration.

Customizable

Tailwind CSS styles, compatible with Bootstrap or custom CSS.

Modular

Includes HueSlider, SaturationPicker, and HexInput components.

Accessible

Keyboard navigation and mobile-friendly design.

⚛️ React (Basic Usage)

import React, { useState } from "react";
            import { ColorPicker } from "react-color-pro";

            const App = () => {
              const [color, setColor] = useState("#14AE88");

              return (
                <div className="p-6">
                  <h2>🎨 Pick a Color</h2>
                  <ColorPicker value={color} onChange={setColor} />
                  <p className="mt-4">Selected Color: <span style={{ color }}>{color}</span></p>
                </div>
              );
            };

export default App;

A simple React implementation with a color picker and live preview.

🔮 Preact

/** @jsx h */
import { h } from "preact";
import { useState } from "preact/hooks";
import { ColorPicker } from "react-color-pro";

export default function PreactApp() {
  const [color, setColor] = useState("#14AE88");

  return (
    <div>
      <ColorPicker value={color} onChange={setColor} />
      <p>Color: {color}</p>
    </div>
  );
}

Lightweight Preact setup with a dynamic color picker.

🧱 Laravel (Blade + CDN)

<!-- resources/views/color-picker.blade.php -->
<div id="color-picker-root"></div>

<script src="https://cdn.jsdelivr.net/npm/react/umd/react.production.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.production.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/react-color-pro/dist/react-color-pro.umd.js"></script>

<script>
  const { ColorPicker } = window.ReactColorPro;
  const e = React.createElement;

  ReactDOM.render(
    e(ColorPicker, { value: "#14AE88", onChange: (val) => console.log(val) }),
    document.getElementById("color-picker-root")
  );
</script>

Integrate via CDN for Laravel Blade templates with ease.

⚙️ Plain HTML + JS (No Framework)

<div id="picker-container"></div>

<!-- Load via CDN -->
<script src="https://cdn.jsdelivr.net/npm/react/umd/react.development.js"></script>
<script src="https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.development.js"></script>
<script src="https://cdn.jsdelivr.net/npm/react-color-pro/dist/react-color-pro.umd.js"></script>

<script>
  const { ColorPicker } = ReactColorPro;

  ReactDOM.render(
    React.createElement(ColorPicker, {
      value: "#14AE88",
      onChange: (value) => console.log("Color:", value),
    }),
    document.getElementById("picker-container")
  );
</script>

Simple HTML integration without any framework dependencies.

🌈 Tailwind CSS Integration

<ColorPicker
  value={color}
  onChange={setColor}
  className="border p-4 rounded-lg shadow-lg"
/>

Seamlessly style with Tailwind CSS for a custom look.

🎨 Bootstrap Usage

<div className="card p-3">
  <h5 className="mb-3">Pick a Color</h5>
  <ColorPicker value={color} onChange={setColor} />
</div>

Integrate with Bootstrap for a card-based design.

📦 CDN vs NPM

MethodRecommended ForExample
**NPM**React / Preact / Next.js appsnpm install react-color-pro
**CDN**Laravel / WordPress / Raw HTMLhttps://cdn.jsdelivr.net/npm/react-color-pro/dist/react-color-pro.umd.js

Choose the method that best fits your project environment.

Comparison with Other Packages

Package NameBundle SizeGzipped SizeDependencies
react-color-pro10.39 kB4.37 kB0
react-colorful123 kB48 kB5
react-color143.7 kB36.4 kB7
react-input-color54.1 kB18.7 kB6
rc-color-picker114.5 kB32.8 kB5