@cloud-ru/ds-tooltip

中文文档
1.0.19发布于 2026/11/11Apache-2.0TypeScriptESM + CJS近 30 天下载 2.2万

Пакет подсказок — компонент Tooltip для произвольного триггера и QuestionTooltip с иконкой «?» для полей форм и сложной терминологии.

原始使用文档
文档目录11 节
  1. Установка
  2. Tooltip
  3. Когда использовать
  4. Анатомия
  5. Примеры использования
  6. Props
  7. QuestionTooltip
  8. Когда использовать
  9. Анатомия
  10. Примеры использования
  11. Props

Tooltip

@cloud-ru/ds-tooltip — Пакет подсказок — компонент Tooltip для произвольного триггера и QuestionTooltip с иконкой «?» для полей форм и сложной терминологии.

Пакет @cloud-ru/ds-tooltip содержит всплывающие подсказки:

  • Tooltip — универсальная подсказка. Оборачивает произвольный триггер (кнопка, иконка, текст) и показывает pop-up по hover, focus или клику.
  • QuestionTooltip — специализированный вариант с готовым триггером «?» для полей форм и терминов.

Установка

pnpm add @cloud-ru/ds-tooltip
import { Tooltip, QuestionTooltip } from '@cloud-ru/ds-tooltip'

Tooltip

Всплывающая подсказка над произвольным триггером — четыре placement, четыре варианта trigger, поддержка клавиатуры и screen-reader.

Pop-up-подсказка над произвольным триггером. Принимает children (сам триггер) и tip (содержимое подсказки).

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

  • Для раскрытия контекста на icon-only кнопке («Настройки», «Экспорт»).
  • Для подсказки по disabled-элементу — почему он недоступен.
  • Для аббревиатур и терминов в таблицах.

Когда не нужен: для длинного описания — вместо этого Popover или отдельная страница.

Анатомия

Size

xs — короткие подписи на одной строке, s — многострочные подсказки и описания.

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

1. Базовая подсказка

Hover + focus по умолчанию

import { Tooltip } from '@cloud-ru/ds-tooltip';

export function Basic() {
  return (
    <Tooltip tip='Сохранить изменения'>
      <button type='button'>Сохранить</button>
    </Tooltip>
  );
}

2. Click trigger

Открывается по клику и остаётся видимой

import { Tooltip } from '@cloud-ru/ds-tooltip';

export function ClickTrigger() {
  return (
    <Tooltip tip='Открывается по клику и остаётся видимой' trigger='click'>
      <button type='button'>Подробнее</button>
    </Tooltip>
  );
}

Props

TooltipProps

PropTypeDefaultDescription
childrenChildrenFunction—Триггер поповера (подробнее читайте ниже)
classNamestring—
closeOnPopstateboolean—Закрывать ли поповер при переходе по истории браузера
data-test-idstring—
disableMaxWidthbooleanfalseОтключение ограничения ширины тултипа
disableSpanWrapperboolean—Отключает для isValidElement внешнюю обертку триггера
Пригодится для элементов с position: absolute
Работает для триггеров, которые умеют отдать свою DOM-ноду: нативные элементы, forwardRef-компоненты
и компоненты, помеченные withInnerRefSupport из @cloud-ru/ds-utils. Остальные всё равно получают <span> —
без ноды поповеру не от чего считать позицию; в dev-режиме об этом печатается предупреждение.
fallbackPlacementsPlacement—Цепочка расположений которая будет применяться к поповеру от первого к последнему если при текущем он не влезает.
hoverDelayClosenumber0Задержка закрытия по ховеру
hoverDelayOpennumber0Задержка открытия по ховеру
offsetnumber0Отступ поповера от его триггер-элемента (в пикселях).
onOpenChange((isOpen: boolean) => void)—Колбек отображения компонента. Срабатывает при изменении состояния open.
openboolean—Управляет состоянием показан/не показан.
placement"bottom" | "bottom-end" | "bottom-start" | "left" | "left-end" | "left-start" | "right" | "right-end" | "right-start" | "top" | "top-end" | "top-start"topПоложение поповера относительно своего триггера (children).
tipReactNode—Содержимое тултипа (текст или разметка)
trigger"click" | "clickAndFocusVisible" | "focus" | "focusVisible" | "hover" | "hoverAndFocus" | "hoverAndFocusVisible"hoverAndFocusVisibleУсловие отображения поповера:
- click - открывать по клику
- hover - открывать по ховеру
- focusVisible - открывать по focus-visible
- focus - открывать по фокусу
- hoverAndFocusVisible - открывать по ховеру и focus-visible
- hoverAndFocus - открывать по ховеру и фокусу
- clickAndFocusVisible - открывать по клику и focus-visible
triggerClassNamestring—CSS-класс триггера
triggerRefForwardedRef<HTMLElement | ReferenceType | null>—Ref ссылка на триггер

QuestionTooltip

Специализированный тултип с готовым триггером-иконкой «?» — для подсказок к полям форм и терминам.

Тултип с встроенным триггером — иконкой «?» размером 16px. Использует Tooltip под капотом, добавляя стандартный triggerButton с aria-label.

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

  • Рядом с названием поля формы, чтобы объяснить назначение поля.
  • Рядом с термином или аббревиатурой в тексте и таблицах.
  • В онбординговых состояниях — пояснение новой фичи.

Анатомия

Size

Размер триггера-иконки и тултипа: xs — для плотных форм, s — дефолт рядом с заголовками секций.

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

Подсказка к полю формы

aria-label триггера задаётся через triggerLabel

import { QuestionTooltip } from '@cloud-ru/ds-tooltip';

export function Question() {
  return (
    <label style={{ display: 'inline-flex', gap: 8, alignItems: 'center' }}>
      <span>API-ключ</span>
      <input type='text' name='api-key' placeholder='sk_...' />
      <QuestionTooltip tip='Строка из 32 символов. Хранится зашифрованной, видна только владельцу.' />
    </label>
  );
}

Props

QuestionTooltipProps

PropTypeDefaultDescription
childrenChildrenFunction—Триггер поповера (подробнее читайте ниже)
classNamestring—
closeOnPopstateboolean—Закрывать ли поповер при переходе по истории браузера
data-test-idstring—
disableMaxWidthbooleanfalseОтключение ограничения ширины тултипа
disableSpanWrapperboolean—Отключает для isValidElement внешнюю обертку триггера
Пригодится для элементов с position: absolute
Работает для триггеров, которые умеют отдать свою DOM-ноду: нативные элементы, forwardRef-компоненты
и компоненты, помеченные withInnerRefSupport из @cloud-ru/ds-utils. Остальные всё равно получают <span> —
без ноды поповеру не от чего считать позицию; в dev-режиме об этом печатается предупреждение.
fallbackPlacementsPlacement—Цепочка расположений которая будет применяться к поповеру от первого к последнему если при текущем он не влезает.
hoverDelayClosenumber—Задержка закрытия по ховеру
hoverDelayOpennumber—Задержка открытия по ховеру
offsetnumber0Отступ поповера от его триггер-элемента (в пикселях).
onOpenChange((isOpen: boolean) => void)—Колбек отображения компонента. Срабатывает при изменении состояния open.
openboolean—Управляет состоянием показан/не показан.
placement"bottom" | "bottom-end" | "bottom-start" | "left" | "left-end" | "left-start" | "right" | "right-end" | "right-start" | "top" | "top-end" | "top-start"topПоложение поповера относительно своего триггера (children).
size"s" | "xs"xsРазмер
tabIndexnumber0Tab index для кнопки-триггера
tipReactNode—Содержимое тултипа (текст или разметка)
tooltipClassnamestring—CSS-класс контейнера подсказки
trigger"click" | "clickAndFocusVisible" | "focus" | "focusVisible" | "hover" | "hoverAndFocus" | "hoverAndFocusVisible"hoverУсловие отображения поповера:
- click - открывать по клику
- hover - открывать по ховеру
- focusVisible - открывать по focus-visible
- focus - открывать по фокусу
- hoverAndFocusVisible - открывать по ховеру и focus-visible
- hoverAndFocus - открывать по ховеру и фокусу
- clickAndFocusVisible - открывать по клику и focus-visible
triggerClassNamestring—CSS-класс триггера
triggerLabelstringПодсказкаДоступное имя для иконки-триггера
triggerRefForwardedRef<HTMLElement | ReferenceType | null>—Ref ссылка на триггер
  • Size = "s" | "xs"

版本与发布记录

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

版本发布日期距今
1.0.19latest2026/11/11今天
1.0.19-preview-e8fe6b56.0preview2026/11/11今天
1.0.19-preview-c0e895ed.02026/11/11今天
1.0.19-preview-90b10112.02026/11/11今天
1.0.19-preview-fd7dd437.02026/11/101 天前
1.0.19-preview-9a75a2a9.02026/11/101 天前

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

@cloud-ru/ds-tooltip 是什么?

Пакет подсказок — компонент Tooltip для произвольного триггера и QuestionTooltip с иконкой «?» для полей форм и сложной терминологии.

如何安装 @cloud-ru/ds-tooltip?

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

@cloud-ru/ds-tooltip 支持 TypeScript 吗?

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

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

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

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

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

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

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

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

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