@cloud-ru/ds-link

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

Семантическая ссылка дизайн-системы — 10 appearance, полиморфный рендер (a / button / кастомный компонент), inline-режим в тексте и интеграция с TruncateString.

原始使用文档
文档目录12 节
  1. Когда использовать
  2. Анатомия
  3. Appearance
  4. Role appearance (default regular )
  5. Target
  6. Установка
  7. Примеры использования
  8. 1. Простая ссылка
  9. 2. Внутри текста
  10. 3. Полиморфизм: кнопка
  11. 4. Внешняя ссылка
  12. Props

Link

@cloud-ru/ds-link — Семантическая ссылка дизайн-системы — 10 appearance, полиморфный рендер (a / button / кастомный компонент), inline-режим в тексте и интеграция с TruncateString.

Компонент для навигации — как внутри экрана (якорь), так и во внешних ресурсах. Полиморфен: по умолчанию рендерится как <a>, но поддерживает <button> и кастомные компоненты-роутеры через as. Внутри используется TruncateString — длинные ссылки обрезаются и раскрывают полный текст в тултипе.

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

  • Для переходов между страницами и разделами.
  • Для ссылок внутри текста (insideText) — компонент не ломает перенос строк.
  • Для действий, которые семантически являются навигацией, но физически — кнопкой (as='button').

Когда не нужен: для кнопки-действия (сохранить, удалить) используйте @cloud-ru/ds-button с view='function', а не Link as='button'.

Анатомия

Appearance

Семантика цвета: neutral — основной текстовый линк, invertNeutral — на тёмных фонах, primary — брендовый акцент; red для деструктивных, orange/yellow — предупреждения, green — успех; blue, violet, pink — декоративные категории.

Role appearance (default regular)

Роль, в которой применяется выбранный appearance:

  • regular — линк на обычной поверхности, цвет берётся из text-токена темы.
  • onAccent — линк поверх цветных акцентных подложек (кнопка-бэйдж, баннер), цвет берётся из onAccent-токена.

Target

HTML-атрибут target: _self (дефолт, в той же вкладке), _blank (новая вкладка), _parent, _top — для iframe-сценариев.

Установка

pnpm add @cloud-ru/ds-link
import { Link } from '@cloud-ru/ds-link'

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

1. Простая ссылка

Рендер как нативный a href target

import { Link } from '@cloud-ru/ds-link';

export function Basic() {
  return <Link label='Документация API' href='https://example.com/docs' />;
}

2. Внутри текста

insideText=true: строка может переноситься, TruncateString не применяется

import { Link } from '@cloud-ru/ds-link';

export function InsideText() {
  return (
    <p>
      Подробнее читайте <Link insideText label='в документации' href='https://example.com' />, а также ознакомьтесь с{' '}
      <Link insideText underlined label='условиями' href='https://example.com/terms' />.
    </p>
  );
}

3. Полиморфизм: кнопка

as='button' — действие, семантически оформленное как ссылка

import { Link } from '@cloud-ru/ds-link';

export function Polymorphic() {
  return <Link as='button' type='button' label='Открыть диалог' onClick={() => alert('clicked')} />;
}

4. Внешняя ссылка

target='_blank' → rel='noopener noreferrer' автоматически

import { Link } from '@cloud-ru/ds-link';

export function External() {
  return <Link label='Открыть в новой вкладке' href='https://example.com' target='_blank' />;
}

Props

LinkProps

PropTypeDefaultDescription
appearance"blue" | "green" | "invertNeutral" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow"primaryСемантический цвет
asComponentType | ElementType'a'Полиморфный компонент.
Оформить переданный компонент или html элемент в стиль ссылки.
Список атрибутов, которые переданный компонент должен принять:
- className
- data-size
- data-text-mode
- data-appearance
- data-inside-text
data-test-idstring—
innerRefPolymorphicRef—Ref на реальный DOM-элемент/инстанс, который рендерится через as.
Используем явный проп, чтобы не зависеть от forwardRef и не тащить type-assertions на экспорт.
insideTextbooleanfalseНаходится ли ссылка внутри текста (и можно ли её переносить)
labelstring``Текст ссылки
roleAppearance"onAccent" | "regular"regularРоль, в которой применяется appearance: обычный текст или текст на акцентной подложке
truncateVariant"end" | "middle"—Вариант обрезания строки:
- end - с конца;
- middle - посередине
underlinedbooleanfalseНаличие нижнего подчеркивания
  • Appearance = "blue" | "green" | "invertNeutral" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow"

  • RoleAppearance = "onAccent" | "regular"

版本与发布记录

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

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

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

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

Семантическая ссылка дизайн-системы — 10 appearance, полиморфный рендер (a / button / кастомный компонент), inline-режим в тексте и интеграция с TruncateString.

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

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

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

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

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

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

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

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

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

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

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

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