# @cloud-ru/ds-site-card-vacancy
> Карточка-ссылка вакансии с заголовком и описанием, нейтральным или акцентным фоном, hover/pressed-состояниями и фокусом.
Docs: /snack-v2/components/site-card-vacancy/
## Установка
```sh
pnpm add @cloud-ru/ds-site-card-vacancy
```
## Когда использовать
- Элемент списка вакансий, ведущий на детальную страницу.
- Промо-блок вакансии с акцентным фоном (`appearance='primary'`).
- Компактная карточка в мобильной раскладке (`mobile`).
Когда **не** нужен:
- Inline-ссылка в тексте:
- используйте [`@cloud-ru/ds-link`](/components/link).
- Кнопка-действие без перехода:
- используйте [`@cloud-ru/ds-button`](/components/button/button).
- Строка списка «лейбл — значение»:
- используйте [`@cloud-ru/ds-uikit-product-info-row`](/components/uikit-product-info-row).
## API
### CardVacancy
| Prop | Type | Default | Required | Description |
|------|------|---------|----------|-------------|
| `appearance` | `neutral \| primary` | `neutral` | no | Визуальный вид карточки: - `neutral` — нейтральный полупрозрачный фон, тёмный заголовок. - `primary` — акцентный фон `primary` с декоративным паттерном, текст `onAccent`. |
| `as` | `ElementType` | — | no | Полиморфный тег корня — `'a'` по умолчанию (карточка-ссылка), либо роутерный `Link` / `'button'` / `'div'`. |
| `className` | `string` | — | no | CSS-класс корневого элемента. |
| `data-test-id` | `string` | — | no | |
| `description` | `string` | — | no | Описание под заголовком. Обрезается многоточием, если не помещается в одну строку. |
| `innerRef` | `any` | — | no | Ref на корневой элемент. |
| `mobile` | `boolean` | `false` | no | Компактная мобильная версия — меньшая высота и более мелкая типографика. |
| `title` | `string` | — | no | Заголовок вакансии. Обрезается многоточием, если не помещается в одну строку. |
#### Related types
- `Appearance` = `neutral | primary`
- `PolymorphicRef` (alias)
## Примеры
### External
```tsx
import { CardVacancy } from '@cloud-ru/ds-site-card-vacancy';
export function External() {
return (
);
}
```
### Mobile
```tsx
import { APPEARANCE, CardVacancy } from '@cloud-ru/ds-site-card-vacancy';
export function Mobile() {
return (
);
}
```
### Neutral
```tsx
import { CardVacancy } from '@cloud-ru/ds-site-card-vacancy';
export function Neutral() {
return ;
}
```
### Polymorphic
```tsx
import { CardVacancy } from '@cloud-ru/ds-site-card-vacancy';
import { useState } from 'react';
export function Polymorphic() {
const [opened, setOpened] = useState(0);
return (
setOpened(count => count + 1)}
/>
);
}
```
### Primary
```tsx
import { APPEARANCE, CardVacancy } from '@cloud-ru/ds-site-card-vacancy';
export function Primary() {
return (
);
}
```