# @cloud-ru/ds-link
> Семантическая ссылка дизайн-системы — 10 appearance, полиморфный рендер (a / button / кастомный компонент), inline-режим в тексте и интеграция с TruncateString.
Docs: /snack-v2/components/link/
## Установка
```sh
pnpm add @cloud-ru/ds-link
```
## Когда использовать
- Для переходов между страницами и разделами.
- Для ссылок внутри текста (`insideText`) — компонент не ломает перенос строк.
- Для действий, которые семантически являются навигацией, но физически — кнопкой (`as='button'`).
Когда **не** нужен: для кнопки-действия (сохранить, удалить) используйте `@cloud-ru/ds-button` с `view='function'`, а не `Link as='button'`.
## API
### Link
| Prop | Type | Default | Required | Description |
|------|------|---------|----------|-------------|
| `appearance` | `blue \| green \| invertNeutral \| neutral \| orange \| pink \| primary \| red \| violet \| yellow` | `primary` | no | Семантический цвет |
| `as` | `ComponentType \| ElementType` | `'a'` | no | Полиморфный компонент. Оформить переданный компонент или html элемент в стиль ссылки. Список атрибутов, которые переданный компонент должен принять: - `className` - `data-size` - `data-text-mode` - `data-appearance` - `data-inside-text` |
| `data-test-id` | `string` | — | no | |
| `href` | `string` | — | yes | |
| `innerRef` | `any` | — | no | Ref на реальный DOM-элемент/инстанс, который рендерится через `as`. Используем явный проп, чтобы не зависеть от `forwardRef` и не тащить type-assertions на экспорт. |
| `insideText` | `boolean` | `false` | no | Находится ли ссылка внутри текста (и можно ли её переносить) |
| `label` | `string` | — | no | Текст ссылки |
| `onClick` | `((e: MouseEvent) => void) \| undefined` | — | no | |
| `roleAppearance` | `onAccent \| regular` | `regular` | no | Роль, в которой применяется `appearance`: обычный текст или текст на акцентной подложке |
| `target` | `string \| undefined` | — | no | |
| `truncateVariant` | `end \| middle` | — | no | Вариант обрезания строки: - `end` - с конца; - `middle` - посередине |
| `underlined` | `boolean` | `false` | no | Наличие нижнего подчеркивания |
## Примеры
### Basic
```tsx
import { Link } from '@cloud-ru/ds-link';
export function Basic() {
return ;
}
```
### External
```tsx
import { Link } from '@cloud-ru/ds-link';
export function External() {
return ;
}
```
### InsideText
```tsx
import { Link } from '@cloud-ru/ds-link';
export function InsideText() {
return (
Подробнее читайте , а также ознакомьтесь с{' '}
.
);
}
```
### Polymorphic
```tsx
import { Link } from '@cloud-ru/ds-link';
export function Polymorphic() {
return alert('clicked')} />;
}
```