# @cloud-ru/ds-uikit-product-switch-row > Кликабельная строка настройки с заголовком, описанием и Switch — целиком кликабельна, поддерживает клавиатуру и tooltip-подсказки. Docs: /snack-v2/components/uikit-product-switch-row/ ## Установка ```sh pnpm add @cloud-ru/ds-uikit-product-switch-row ``` ## Когда использовать - В формах настроек, где каждая строка — одна бинарная опция с моментальным применением. - Когда у опции нужен поясняющий текст под заголовком и/или подсказка-вопрос рядом с ним. - Когда хочется увеличить hit-area переключателя на всю ширину карточки/строки. Когда **не** нужен `SwitchRow`: - Одиночный inline-переключатель без описания: - используйте [`Switch`](/components/toggles/switch). - Опция, требующая отдельного «Сохранить»: - используйте `Checkbox` в форме. ## API ### SwitchRow | Prop | Type | Default | Required | Description | |------|------|---------|----------|-------------| | `checked` | `boolean` | — | no | Состояние переключателя (controlled) | | `className` | `string` | — | no | CSS-класс корневого элемента | | `data-test-id` | `string` | — | no | | | `defaultChecked` | `boolean` | — | no | Начальное состояние переключателя (uncontrolled) | | `description` | `string` | — | no | Дополнительное описание под заголовком | | `disableTitleTruncate` | `boolean` | `false` | no | Отключить truncation заголовка | | `disabled` | `boolean` | — | no | Отключённое состояние | | `disabledToggleTip` | `ReactNode` | — | no | Тултип поверх переключателя, когда он disabled | | `loading` | `boolean` | — | no | Состояние загрузки — переключатель крутит Sun | | `name` | `string` | — | no | Атрибут `name` для нативного `` внутри Switch | | `onChange` | `((checked: boolean) => void)` | — | no | Колбэк при переключении | | `tip` | `ReactNode` | — | no | Подсказка рядом с заголовком (иконка «?») | | `title` | `string` | — | yes | Заголовок переключателя | | `type` | `block \| line` | `block` | no | Тип лейаута: `block` (карточка с отступами) или `line` (inline без паддингов) | #### Related types - `SwitchRowType` = `block | line` ### Title | Prop | Type | Default | Required | Description | |------|------|---------|----------|-------------| | `disableTitleTruncate` | `boolean` | — | no | | | `tip` | `ReactNode` | — | no | | | `title` | `string` | — | yes | | ## Примеры ### Basic ```tsx import { SwitchRow } from '@cloud-ru/ds-uikit-product-switch-row'; export function Basic() { return ( ); } ``` ### Controlled ```tsx import { SwitchRow } from '@cloud-ru/ds-uikit-product-switch-row'; import { useState } from 'react'; export function Controlled() { const [checked, setChecked] = useState(false); return ( ); } ``` ### Disabled ```tsx import { SwitchRow } from '@cloud-ru/ds-uikit-product-switch-row'; export function Disabled() { return ( ); } ``` ### Line ```tsx import { SWITCH_ROW_TYPES, SwitchRow } from '@cloud-ru/ds-uikit-product-switch-row'; export function Line() { return ( ); } ``` ### Loading ```tsx import { SwitchRow } from '@cloud-ru/ds-uikit-product-switch-row'; export function Loading() { return ; } ``` ### WithTip ```tsx import { SwitchRow } from '@cloud-ru/ds-uikit-product-switch-row'; export function WithTip() { return ( ); } ```