Color Picker
iconiq-ui/color-pickerFreeComponent
HSV panel with saturation field, hue/alpha sliders, multi-format readouts, hex input, and EyeDropper.
Install it
npx shadcn@latest add https://www.iconiqui.com/r/color-picker.jsonSource
1"use client";23import { Input as InputPrimitive } from "@base-ui/react/input";4import { Check, ChevronDown, Copy, Pipette } from "lucide-react";5import { AnimatePresence, motion, useReducedMotion } from "motion/react";6import {7 type ForwardedRef,8 forwardRef,9 type HTMLAttributes,10 type KeyboardEvent as ReactKeyboardEvent,11 type ReactNode,12 type RefObject,13 useCallback,14 useEffect,15 useId,16 useImperativeHandle,17 useLayoutEffect,18 useMemo,19 useRef,20 useState,21} from "react";22import { createPortal } from "react-dom";2324import { cn } from "@/lib/utils";2526// Shared motion tokens — inlined so the registry file is self-contained.27const EASE_OUT = [0.16, 1, 0.3, 1] as const;28const EASE_IN_OUT = [0.77, 0, 0.175, 1] as const;29const SPRING_PANEL = {30 type: "spring" as const,31 stiffness: 420,32 damping: 40,33 mass: 0.5,34};3536const controlCornerClassName =37 "rounded-lg supports-[corner-shape:squircle]:corner-squircle supports-[corner-shape:squircle]:rounded-[11px]";3839const controlCornerInheritClassName =40 "rounded-[inherit] supports-[corner-shape:squircle]:[corner-shape:inherit]";4142const FORMAT_OPTIONS = ["HEX", "RGB", "HSL", "OKLCH"] as const;43const FORMAT_MENU_SOFT_EASE = [0.22, 1, 0.36, 1] as const;44const HEX_INPUT_SANITIZE_PATTERN = /[^0-9a-fA-F]/g;45const HEX_HASH_PREFIX = /^#/;46const HEX_RGB_PATTERN = /^[0-9A-F]{6}$/;47const HEX_RGBA_PATTERN = /^[0-9A-F]{8}$/;4849const formatMenuPanelClassName =50 "absolute top-full left-0 z-50 mt-1.5 w-28 overflow-hidden border border-[color:var(--color-border)] bg-[color:var(--color-card)] p-1 text-[color:var(--color-card-foreground)] shadow-[0_10px_28px_-20px_rgba(15,23,42,0.28)] dark:shadow-[0_12px_32px_-22px_rgba(0,0,0,0.5)]";5152const formatMenuItemClassName =53 "relative w-full px-3 py-1.5 text-left text-sm outline-none transition-[color,transform] duration-200 ease-[cubic-bezier(0.22,1,0.36,1)]";5455const formatMenuHighlightClassName =56 "absolute inset-0 bg-[color:var(--color-accent)]";5758const formatMenuHighlightTransition = {59 type: "spring" as const,60 stiffness: 520,61 damping: 34,62 mass: 0.72,63};6465const formatTriggerTransitionClassName =66 "transition-[color,background-color,box-shadow] duration-200 ease-[cubic-bezier(0.22,1,0.36,1)]";6768const componentThemeClassName =69// … truncated
What it pulls in
npm packages
Files it writes
More from Iconiq UI
All 119 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | Iconiq UI | Components | Free | 2 deps | |
| AI Inputai-input | Iconiq UI | Components | Free | 3 deps | |
| Alertalert | Iconiq UI | Components | Free | 2 deps | |
| Avataravatar | Iconiq UI | Components | Free | 3 deps | |
| Accordion (Base UI)b-accordion | Iconiq UI | Components | Free | 2 deps | |
| Alert Dialog (Base UI)b-alert-dialog | Iconiq UI | Components | Free | 3 deps | |
| Autocomplete (Base UI)b-autocomplete | Iconiq UI | Components | Free | 3 deps | |
| Avatar (Base UI)b-avatar | Iconiq UI | Components | Free | 2 deps |
