@cloud-ru/ds-color-picker

中文文档
1.0.24发布于 2026/11/12Apache-2.0TypeScriptESM + CJS近 30 天下载 5561

Компонент выбора цвета с палитрой, переключаемыми цветовыми моделями (HEX/RGB/HSV), альфа-каналом и опциональным режимом ручного применения.

原始使用文档
文档目录15 节
  1. Когда использовать
  2. Анатомия
  3. Size (default m )
  4. Alpha (default true )
  5. Available modes (default — все)
  6. Apply mode (default false )
  7. Установка
  8. Примеры использования
  9. Базовое использование
  10. Размеры
  11. Авто-применение
  12. Без альфа-канала
  13. Props
  14. Адаптивность
  15. Компактный режим (mobile)

ColorPicker

@cloud-ru/ds-color-picker — Компонент выбора цвета с палитрой, переключаемыми цветовыми моделями (HEX/RGB/HSV), альфа-каналом и опциональным режимом ручного применения.

Компонент выбора цвета с палитрой, переключаемыми цветовыми моделями (HEX / RGB / HSV), альфа-каналом и опциональным режимом ручного подтверждения изменений. Уведомляет об изменении полным RawColor-объектом (hex, rgb, rgba, hsl, hsla, hsv, hsva) — пользователь сам решает, в каком формате потреблять.

Когда использовать

  • Когда пользователю нужно выбрать произвольный цвет (брендинг, темы, разметка карт, рисование).
  • Когда требуется поддержка нескольких цветовых моделей.
  • Когда нужен альфа-канал.

Когда не нужен ColorPicker:

  • Выбор из фиксированной палитры — используйте набор Tag/Chip.
  • Только подтверждение одной заранее заданной коррекции — используйте Toggle/Switch.

Анатомия

Size (default m)

Размерный ряд: s / m / l. Меняются размер палитры, handle-указателя, превью и зазоры.

Alpha (default true)

withAlpha — управляет наличием альфа-канала в палитре и поля Alpha (0–100%).

Available modes (default — все)

availableModes — массив ColorMode[]. Перечисляет модели, доступные переключателю. По умолчанию доступны все (hex, rgb, hsv).

Apply mode (default false)

  • autoApply: true — onChange вызывается на каждое изменение, без footer'а.
  • autoApply: false — изменения накапливаются локально; onChange вызывается только по Apply. Cancel восстанавливает значение из value (или из начального, если используется uncontrolled).

Установка

pnpm add @cloud-ru/ds-color-picker

Примеры использования

Базовое использование

Controlled с локальным state

import { ColorPicker } from '@cloud-ru/ds-color-picker';
import { useState } from 'react';

export function Basic() {
  const [color, setColor] = useState<string>('#389f74');

  return <ColorPicker value={color} onChange={raw => setColor(raw.hex)} />;
}

Размеры

s / m / l из Figma-оси size

import { ColorPicker } from '@cloud-ru/ds-color-picker';
import { useState } from 'react';

export function Sizes() {
  const [color, setColor] = useState<string>('#389f74');
  const handleChange = (raw: { hex: string }) => setColor(raw.hex);

  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <ColorPicker size='s' value={color} onChange={handleChange} autoApply />
      <ColorPicker size='m' value={color} onChange={handleChange} autoApply />
      <ColorPicker size='l' value={color} onChange={handleChange} autoApply />
    </div>
  );
}

Авто-применение

autoApply убирает footer

import { ColorPicker } from '@cloud-ru/ds-color-picker';
import { useState } from 'react';

export function AutoApply() {
  const [color, setColor] = useState<string>('#4387e2');

  return <ColorPicker value={color} autoApply onChange={raw => setColor(raw.hex)} />;
}

Без альфа-канала

withAlpha=false

import { ColorPicker } from '@cloud-ru/ds-color-picker';
import { useState } from 'react';

export function WithoutAlpha() {
  const [color, setColor] = useState<string>('#d52e33');

  return <ColorPicker value={color} withAlpha={false} autoApply onChange={raw => setColor(raw.hex)} />;
}

Props

ColorPickerProps

PropTypeDefaultDescription
autoApplybooleantrueПрименять изменения автоматически. Если false — появляются кнопки Cancel/Apply.
По умолчанию true — без футера (паритет с Figma colorPicker, где Cancel/Apply нет).
availableModesColorMode['hex', 'hsv', 'rgb']Какие цветовые модели доступны переключателю.
classNamestring—CSS-класс корневого элемента.
data-test-idstring—
onChange((rawColor: RawColor) => void)—Колбек на изменение значения. Вызывается на каждое изменение если autoApply, иначе только по нажатию Apply.
size"l" | "m" | "s"mРазмер компонента.
valueAlpha | Color | HslColor | HsvColor | RgbColor—Текущее значение цвета. Если задано — компонент синхронизируется с ним при изменении.
withAlphabooleantrueУправляет альфа-каналом палитры и наличием поля Alpha.
withColorAreabooleantrueПоказывать 2D-область (saturation/value квадрат). false — только поля и слайдеры
(раскладка для узких поверхностей, напр. мобильный BottomSheet).

Alpha

PropTypeDefaultDescription
anumber—
  • Color = string | RgbColor | HslColor | HsvColor | RgbaColor | HslaColor | HsvaColor

  • ColorMode = "hex" | "hsv" | "rgb"

HslColor

PropTypeDefaultDescription
hnumber—
lnumber—
snumber—

HsvColor

PropTypeDefaultDescription
hnumber—
snumber—
vnumber—

RgbColor

PropTypeDefaultDescription
bnumber—
gnumber—
rnumber—
  • Size = "l" | "m" | "s"

Адаптивность

ColorPicker — презентационная палитра, управляемая пропсами: сам он раскладку из контекста не читает. Переключение поверхности (surface-swap) живёт на уровне поля-обёртки (FieldColor-сценарий): это поле берёт раскладку из AdaptiveProvider (@cloud-ru/ds-adaptive) и на mobile открывает палитру в BottomSheet снизу, на desktop — в popover. Пропа layoutType у ColorPicker нет.

Desktop-first. Поставьте один <AdaptiveProvider> в корне приложения — адаптивное поле включит mobile-поверхность автоматически.

Под узкую mobile-поверхность ColorPicker отдаёт два пропса раскладки:

Пропdesktopmobile (BottomSheet)
withColorArea2D-область saturation/value (true)компактная раскладка без 2D-квадрата, только поля и слайдеры (false)
autoApplyкоммит на каждое изменение (true)коммит по явному Apply (false)

Компактный режим (mobile)

withColorArea={false} — без 2D-области saturation/value, только поля и слайдеры.

import { ColorPicker } from '@cloud-ru/ds-color-picker';
import { useState } from 'react';

export function Compact() {
  const [color, setColor] = useState<string>('#389f74');

  return <ColorPicker value={color} withColorArea={false} autoApply={false} onChange={raw => setColor(raw.hex)} />;
}

Подробнее о модели адаптивности — Адаптивность — паттерн.

版本与发布记录

@cloud-ru/ds-color-picker 共发布 95 个版本,首次发布于 2026/08/18;过去 12 个月发布了 95 个版本。

版本发布日期距今
1.0.24latest2026/11/12今天
1.0.232026/11/11今天
1.0.23-preview-e8fe6b56.0preview2026/11/111 天前
1.0.23-preview-c0e895ed.02026/11/111 天前
1.0.23-preview-90b10112.02026/11/111 天前
1.0.23-preview-fd7dd437.02026/11/101 天前

关于 @cloud-ru/ds-color-picker 的常见问题

@cloud-ru/ds-color-picker 是什么?

Компонент выбора цвета с палитрой, переключаемыми цветовыми моделями (HEX/RGB/HSV), альфа-каналом и опциональным режимом ручного применения.

如何安装 @cloud-ru/ds-color-picker?

在项目目录运行 npm install @cloud-ru/ds-color-picker,或使用 pnpm add / yarn add / bun add。

@cloud-ru/ds-color-picker 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cloud-ru/ds-color-picker 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cloud-ru/ds-color-picker 可以商用吗?

@cloud-ru/ds-color-picker 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cloud-ru/ds-color-picker 的下载量有多少?

根据 npm 官方下载统计,@cloud-ru/ds-color-picker 在 2026/10/10 – 2026/11/08 这 30 天内被下载 5,561 次,日均约 185 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cloud-ru/ds-color-picker 还在维护吗?

最新版本 1.0.24 发布于 2026/11/12(今天);至今共发布 95 个版本,其中过去 12 个月发布了 95 个;首次发布于 2026/08/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。