🌐
50 React Coding Puzzles
  • 50 React Coding Puzzles
  • Contact
  • Reviews
  • Table of Contents
  • Introduction
  • 1 - Simple Counter App
  • 2 - Dynamic List of Items with Strikethrough
  • 3 - Color Picker with Hex Code Display
  • 4 - Password Strength Checker
  • 5 - Countdown Timer with Audio
  • 6 - Dynamic Movie List with Filtering and Sorting
  • 7 - Text Animation Component (Fade/Scroll)
  • 8 - Dynamically Generated Text Art
  • 9 - Meme Generator with Custom Text
  • 10 - "What Should I Eat?" Random Recipe Generator
  • 11 - Simple Quiz App with Multiple Choice
  • 12 - Unit Converter
  • 13 - Dynamic Image Gallery with Lightbox
  • 14 - Weather Widget with Temperature and Description
  • 15 - Contact Form with Email and Message Validation
  • 16 - Color Palette Generator
  • 17 - Drag-and-Drop Feature for Rearranging Items
  • 18 - Interactive Quiz with Dynamic Results and Feedback
  • 19 - To-Do List with Task Categorization
  • 20 - Note-Taking App with Markdown Support
  • 21 - Simple Calculator with Basic Operations
  • 22 - Word Scramble Game with Timer and Score
  • 23 - Number Guessing Game
  • 24 - Digital Clock with Time Zone Support
  • 25 - Interactive Time Zone Converter
  • 26 - Weather Forecast App with Location Detection
  • 27 - Real-Time Stock Ticker with Updates
  • 28 - Virtual Dice Roller with Multiple Dice
  • 29 - Responsive Navigation Menu with Dropdowns
  • 30 - Progress Bar for Loading or Task Completion
  • 31 - Modal Window for Alerts and Confirmations
  • 32 - Infinite Scroll for Loading More Content
  • 33 - Form Validation with Error Messages
  • 34 - Search Bar with Filtering and Suggestions
  • 35 - Drag-and-Drop File Upload
  • 36 - Interactive Color Picker with Sliders
  • 37 - Image Carousel with Autoplay
  • 38 - Rating System with Stars or Thumbs Up/Down
  • 39 - Comment Section with Nested Replies
  • 40 - Pagination for Long Lists of Data
  • 41 - Stopwatch app that tracks elapsed time
  • 42 - Responsive E-commerce Product Grid
  • 43 - Random Movie/Book Recommender
  • 44 - Kanban board for managing tasks with drag-and-drop
  • 45 - Chat application with real-time messaging using WebSockets
  • 46 - Calendar that displays events and allows scheduling
  • 47 - Tic-Tac-Toe Game
  • 48 - Hangman Game
  • 49 - Notes App
  • 50 - Expense Tracker
  • Afterword
  • Appendix
Powered by GitBook
On this page
  • Description
  • Algorithm
  • Classes
  • Code
  • Explanation
  • Possible Future Enhancements

36 - Interactive Color Picker with Sliders

Description

Create an interactive color picker component with sliders for adjusting the red, green, and blue channels, a preview of the corresponding hex code, opacity control, and color history.

Algorithm

  1. Create a React component for the color picker

  2. Define the initial color and opacity values

  3. Use the useState hook to manage the color and opacity values

  4. Create sliders for adjusting the red, green, and blue channels

  5. Update the color and opacity values based on slider input

  6. Display the corresponding hex code and color preview

  7. Add opacity control and color history features

Classes

  • ColorPicker: The main color picker component

  • ColorSlider: A single color slider component

  • ColorPreview: The color preview component

  • OpacityControl: The opacity control component

  • ColorHistory: The color history component

Code

ColorPicker.js

import React, { useState } from 'react';
import ColorSlider from './ColorSlider';
import ColorPreview from './ColorPreview';
import OpacityControl from './OpacityControl';
import ColorHistory from './ColorHistory';

const ColorPicker = () => {
  const [color, setColor] = useState({ r: 0, g: 0, b: 0 });
  const [opacity, setOpacity] = useState(1);
  const [colorHistory, setColorHistory] = useState([]);

  const handleSliderChange = (channel, value) => {
    setColor({ ...color, [channel]: value });
  };

  const handleOpacityChange = (value) => {
    setOpacity(value);
  };

  const handleColorHistoryChange = (color) => {
    setColorHistory([...colorHistory, color]);
  };

  return (
    <div>
      <ColorSlider
        channel="r"
        value={color.r}
        onChange={handleSliderChange}
      />
      <ColorSlider
        channel="g"
        value={color.g}
        onChange={handleSliderChange}
      />
      <ColorSlider
        channel="b"
        value={color.b}
        onChange={handleSliderChange}
      />
      <ColorPreview color={color} opacity={opacity} />
      <OpacityControl value={opacity} onChange={handleOpacityChange} />
      <ColorHistory colors={colorHistory} onChange={handleColorHistoryChange} />
    </div>
  );
};

export default ColorPicker;

ColorSlider.js

import React from 'react';

const ColorSlider = ({ channel, value, onChange }) => {
  return (
    <div>
      <input
        type="range"
        min="0"
        max="255"
        value={value}
        onChange={(event) => onChange(channel, event.target.value)}
      />
      <span>{channel}: {value}</span>
    </div>
  );
};

export default ColorSlider;

ColorPreview.js

import React from 'react';

const ColorPreview = ({ color, opacity }) => {
  const hexCode = `#${color.r.toString(16)}${color.g.toString(16)}${color.b.toString(16)}`;
  return (
    <div>
      <div
        style={{
          backgroundColor: hexCode,
          opacity: opacity,
          width: 50,
          height: 50,
          border: '1px solid black',
        }}
      />
      <span>{hexCode}</span>
    </div>
  );
};

export default ColorPreview;

OpacityControl.js

import React from 'react';

const OpacityControl = ({ value, onChange }) => {
  return (
    <div>
      <input
        type="range"
        min="0"
        max="1"
        step="0.1"
        value={value}
        onChange={(event) => onChange(event.target.value)}
      />
      <span>Opacity: {value}</span>
    </div>
  );
};

export default OpacityControl;

ColorHistory.js

import React from 'react';

const ColorHistory = ({ colors, onChange }) => {
  return (
    <div>
      {colors.map((color, index) => (
        <div key={index}>
          <ColorPreview color={color} opacity={1} />
          <button onClick={() => onChange(color)}>Select</button>
        </div>
      ))}
    </div>
  );
};

export default ColorHistory;

Explanation

The code creates an interactive color picker component with sliders for adjusting the red, green, and blue channels, a preview of the corresponding hex code, opacity control, and color history. The component uses the useState hook to manage the color and opacity values, and the handleSliderChange, handleOpacityChange, and handleColorHistoryChange functions to update the values based on user input.

Possible Future Enhancements

  • Add support for more advanced color models, such as HSV and HSL

  • Add support for color gradients and interpolation

  • Add support for color picker presets and saved colors

  • Improve color history management, such as allowing users to delete and rename colors

  • Add support for color picker keyboard shortcuts and hotkeys

  • Use a library like React Color for more advanced color picker functionality

Previous35 - Drag-and-Drop File UploadNext37 - Image Carousel with Autoplay

Last updated 10 months ago