import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-CwEU-ME1.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-DnKFgFHy.js";import{AsyncReloadLike as p,Controlled as m,Disabled as h,Placeholder as g,WithCode as _,n as v,t as y}from"./SerializableSelect.stories-BLPXVOtP.js";function b(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(a,{of:y,parameters:{docs:{toc:!0}}}),`
`,(0,S.jsx)(c,{children:`SerializableSelect`}),`
`,(0,S.jsx)(i,{children:`Select для сериализуемых значений и конфигурационных сценариев с key/label описанием option`}),`
`,(0,S.jsx)(o.p,{children:`SerializableSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
Ниже можно быстро проверить базовый сценарий, а затем перейти к отдельным режимам использования и состояниям компонента. Отдельно разобраны контролируемые сценарии, заблокированные состояния.`}),`
`,(0,S.jsx)(o.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
`,(0,S.jsx)(u,{}),`
`,(0,S.jsx)(n,{of:m}),`
`,(0,S.jsx)(o.pre,{children:(0,S.jsx)(o.code,{className:`language-tsx`,children:`import { useState } from "react";

import { SerializableSelect } from "@/shared/ui";

const options = [
	{ key: "draft", label: "Черновик" },
	{ key: "done", label: "Завершен" }
];

export function Example() {
	const [value, setValue] = useState(undefined);

	return <SerializableSelect label="Статус" value={value} onChange={setValue} options={options} optionKey="key" optionLabel="label" />;
}
`})}),`
`,(0,S.jsx)(o.h2,{id:`практические-рекомендации`,children:`Практические рекомендации`}),`
`,(0,S.jsxs)(o.ul,{children:[`
`,(0,S.jsx)(o.li,{children:`Если состояние должно жить во внешней форме или модели, ориентируйтесь на контролируемый режим из документации.`}),`
`,(0,S.jsx)(o.li,{children:`Заблокированное состояние лучше проверять отдельно, чтобы убедиться, что визуально и поведенчески оно остается понятным.`}),`
`]}),`
`,(0,S.jsx)(o.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
`,(0,S.jsx)(o.h3,{id:`компонент-работает-в-контролируемом-режиме-когда-состояние-хранится-во-внешнем-компоненте`,children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте`}),`
`,(0,S.jsx)(o.p,{children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте.`}),`
`,(0,S.jsx)(l,{of:m}),`
`,(0,S.jsx)(o.h3,{id:`поведение-без-выбранного-значения`,children:`Поведение без выбранного значения`}),`
`,(0,S.jsx)(o.p,{children:`Поведение без выбранного значения.`}),`
`,(0,S.jsx)(l,{of:g}),`
`,(0,S.jsx)(o.h3,{id:`with-code`,children:`With Code`}),`
`,(0,S.jsxs)(o.p,{children:[`Сценарий демонстрирует вариант `,(0,S.jsx)(o.code,{children:`WithCode`}),` и помогает быстро сравнить его с остальными режимами компонента.`]}),`
`,(0,S.jsx)(l,{of:_}),`
`,(0,S.jsx)(o.h3,{id:`сценарий-близкий-к-асинхронной-перезагрузке-данных`,children:`Сценарий, близкий к асинхронной перезагрузке данных`}),`
`,(0,S.jsx)(o.p,{children:`Сценарий, близкий к асинхронной перезагрузке данных.`}),`
`,(0,S.jsx)(l,{of:p}),`
`,(0,S.jsx)(o.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
`,(0,S.jsx)(o.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
`,(0,S.jsx)(l,{of:h}),`
`,(0,S.jsx)(o.h2,{id:`api`,children:`API`}),`
`,(0,S.jsx)(s,{of:y}),`
`,(0,S.jsx)(o.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
`,(0,S.jsx)(r,{includePrimary:!1})]})}function x(e={}){let{wrapper:n}={...t(),...e.components};return n?(0,S.jsx)(n,{...e,children:(0,S.jsx)(b,{...e})}):b(e)}var S;e((()=>{S=d(),f(),o(),v()}))();export{x as default};