@cloud-ru/ds-uikit-product-config-selector

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

Chip-toggle для выбора одной опции конфигурации — кликабельный chip с состояниями checked / available / disabled и tooltip-подсказками.

原始使用文档
文档目录12 节
  1. Когда использовать
  2. Анатомия
  3. Состояния
  4. Слоты
  5. Установка
  6. Примеры использования
  7. Базовый ConfigSelector
  8. Рекомендуемая опция (available + tooltip)
  9. Disabled с tooltip-объяснением
  10. Группа с single-select
  11. Props
  12. Доступность

ConfigSelector

@cloud-ru/ds-uikit-product-config-selector — Chip-toggle для выбора одной опции конфигурации — кликабельный chip с состояниями checked / available / disabled и tooltip-подсказками.

Chip-toggle для выбора опции конфигурации. Под капотом — скрытый <input type=checkbox> в <label>: chip кликабелен целиком, поддерживает фокус с клавиатуры и tooltip-подсказки. Компонент controlled — состояние checked хранится снаружи.

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

  • Выбор одного значения из набора equal-weight опций конфигурации (тариф, размер инстанса, регион), когда их удобно показать рядом как chips.
  • Когда у опции нужно подсветить «рекомендованность» (available) или объяснить недоступность (disabled) через tooltip.

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

  • Бинарная настройка с заголовком и описанием:
    • используйте SwitchRow.
  • Множественный выбор тегов/фильтров:
    • используйте Chip / Tag.

Анатомия

Состояния

  • checked — выбранная опция: светло-зелёный tint (activated state-layer), accent-обводка, тёмно-зелёный текст. Управляется через checked + onChange(checked, e).
  • available — accent-обводка для рекомендуемой опции. Опционально availableTip — tooltip, который показывается, пока опция не выбрана.
  • disabled — клики игнорируются. Опционально disabledTip — tooltip-объяснение.

Слоты

  • label — обязательный текст chip. Длинный лейбл обрезается многоточием.

Установка

pnpm add @cloud-ru/ds-uikit-product-config-selector
import { ConfigSelector } from '@cloud-ru/ds-uikit-product-config-selector'

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

Базовый ConfigSelector

import { ConfigSelector } from '@cloud-ru/ds-uikit-product-config-selector';
import { useState } from 'react';

export function Basic() {
  const [checked, setChecked] = useState(false);

  return <ConfigSelector label='Авторазвёртывание' checked={checked} onChange={setChecked} />;
}

Рекомендуемая опция (available + tooltip)

import { PortalContextProvider } from '@cloud-ru/ds-portal-context';
import { ConfigSelector } from '@cloud-ru/ds-uikit-product-config-selector';
import { useState } from 'react';

export function Available() {
  const [checked, setChecked] = useState(false);

  return (
    <PortalContextProvider>
      <ConfigSelector
        label='Рекомендуемый тариф'
        available
        availableTip='Подходит для большинства проектов'
        checked={checked}
        onChange={setChecked}
      />
    </PortalContextProvider>
  );
}

Disabled с tooltip-объяснением

import { PortalContextProvider } from '@cloud-ru/ds-portal-context';
import { ConfigSelector } from '@cloud-ru/ds-uikit-product-config-selector';
import { useState } from 'react';

export function Disabled() {
  const [checked, setChecked] = useState(false);

  return (
    <PortalContextProvider>
      <ConfigSelector
        label='Премиум-конфигурация'
        disabled
        disabledTip='Недоступно на текущем тарифе'
        checked={checked}
        onChange={setChecked}
      />
    </PortalContextProvider>
  );
}

Группа с single-select

Несколько chip’ов, где выбран ровно один.

import { ConfigSelector } from '@cloud-ru/ds-uikit-product-config-selector';
import { useState } from 'react';

const OPTIONS = ['nano', 'micro', 'standard', 'large'] as const;

export function Group() {
  const [selected, setSelected] = useState<(typeof OPTIONS)[number]>('micro');

  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      {OPTIONS.map(option => (
        <ConfigSelector
          key={option}
          label={option}
          checked={selected === option}
          onChange={() => setSelected(option)}
        />
      ))}
    </div>
  );
}

Props

ConfigSelectorProps

PropTypeDefaultDescription
availableboolean—Доступна ли опция
availableTipReactNode—Тултип для доступной опции
checkedboolean—Отмечен ли компонент
classNamestring—CSS-класс
data-test-idstring—
disabledboolean—Деактивирован ли компонент
disabledTipReactNode—Тултип для деактивированного компонента
labelstring—Лейбл
onChange(checked: boolean, e: ChangeEvent<HTMLInputElement>) => void—Колбек смены значения
tabIndexnumber0HTML tab index

Доступность

Компонент основан на скрытом checkbox — это корректно для одиночного toggle (независимое вкл/выкл).

Для группового single-select (несколько ConfigSelector с checked ровно у одного, см. пример «Группа с single-select») семантика остаётся checkbox: скринридер озвучивает каждый chip как «checkbox» без контекста «1 из N». Checkbox-семантика выбрана осознанно — компонент переиспользуется в обоих сценариях и не навязывает radio-группу.

Если групповой контекст для скринридера обязателен, набор chip оборачивается в контейнер с role='radiogroup' и доступным именем (aria-label / aria-labelledby); ARIA-роль элементов при этом остаётся на стороне потребителя.

版本与发布记录

@cloud-ru/ds-uikit-product-config-selector 共发布 79 个版本,首次发布于 2026/08/18;过去 12 个月发布了 79 个版本。

版本发布日期距今
1.0.21latest2026/11/121 天前
1.0.202026/11/112 天前
1.0.20-preview-e8fe6b56.0preview2026/11/112 天前
1.0.20-preview-c0e895ed.02026/11/112 天前
1.0.20-preview-90b10112.02026/11/112 天前
1.0.20-preview-fd7dd437.02026/11/103 天前

关于 @cloud-ru/ds-uikit-product-config-selector 的常见问题

@cloud-ru/ds-uikit-product-config-selector 是什么?

Chip-toggle для выбора одной опции конфигурации — кликабельный chip с состояниями checked / available / disabled и tooltip-подсказками.

如何安装 @cloud-ru/ds-uikit-product-config-selector?

在项目目录运行 npm install @cloud-ru/ds-uikit-product-config-selector,或使用 pnpm add / yarn add / bun add。

@cloud-ru/ds-uikit-product-config-selector 支持 TypeScript 吗?

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

@cloud-ru/ds-uikit-product-config-selector 支持 ESM 还是 CommonJS?

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

@cloud-ru/ds-uikit-product-config-selector 可以商用吗?

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

@cloud-ru/ds-uikit-product-config-selector 的下载量有多少?

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

@cloud-ru/ds-uikit-product-config-selector 还在维护吗?

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