import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-NOj5DEP4.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u}from"./blocks-DBO0IAf-.js";import{t as d}from"./mdx-react-shim-BgV0cHDR.js";import{BoxBasic as f,BoxControlled as p,BoxMountStrategies as m,BoxVertical as h,DisabledTabs as g,Empty as _,LayoutPanels as v,LegacyTabs as y,Loading as b,n as x,t as S}from"./Tabs.stories-CDJA8j_i.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(o,{of:S,parameters:{docs:{toc:!0}}}),`
`,(0,T.jsx)(l,{children:`Tabs`}),`
`,(0,T.jsx)(a,{children:`Набор tabs-компонентов с разделением простого scroll-сценария и составного panel-layout сценария`}),`
`,(0,T.jsxs)(t.p,{children:[`После рефакторинга `,(0,T.jsx)(t.code,{children:`tabs`}),` разделены на два независимых сценария:`]}),`
`,(0,T.jsxs)(t.ul,{children:[`
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`TabsBox`}),` — простой items-based компонент, который сам управляет областью панели и её прокруткой.`]}),`
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`TabsLayout`}),` — compound-компонент, который управляет только переключением вкладок и каркасом панели.`]}),`
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`Tabs`}),` — deprecated-совместимость для старого API. Используется только как переходный фасад.`]}),`
`]}),`
`,(0,T.jsx)(t.h2,{id:`что-выбрать`,children:`Что выбрать`}),`
`,(0,T.jsxs)(t.ul,{children:[`
`,(0,T.jsxs)(t.li,{children:[`Выбирай `,(0,T.jsx)(t.code,{children:`TabsBox`}),`, если у вкладки один основной scroll-контент и встроенный padding подходит по умолчанию.`]}),`
`,(0,T.jsxs)(t.li,{children:[`Выбирай `,(0,T.jsx)(t.code,{children:`TabsLayout`}),`, если внутри панели нужны `,(0,T.jsx)(t.code,{children:`toolbar`}),`, `,(0,T.jsx)(t.code,{children:`footer`}),` или несколько независимых scroll-областей.`]}),`
`,(0,T.jsxs)(t.li,{children:[`Используй `,(0,T.jsx)(t.code,{children:`Tabs`}),` только для постепенной миграции существующего кода.`]}),`
`]}),`
`,(0,T.jsx)(t.h2,{id:`tabsbox`,children:`TabsBox`}),`
`,(0,T.jsx)(u,{of:f}),`
`,(0,T.jsx)(r,{of:f}),`
`,(0,T.jsx)(t.pre,{children:(0,T.jsx)(t.code,{className:`language-tsx`,children:`import { TabsBox, type TabsBoxItem } from "@/shared/ui";

const items: TabsBoxItem[] = [
	{ id: "profile", title: "Профиль", content: <div>Содержимое профиля</div> },
	{ id: "settings", title: "Настройки", content: <div>Содержимое настроек</div> }
];

export function Example() {
	return <TabsBox items={items} aria-label="Разделы профиля" />;
}
`})}),`
`,(0,T.jsxs)(t.p,{children:[(0,T.jsx)(t.code,{children:`TabsBox`}),` сохраняет встроенный padding панели, поддерживает `,(0,T.jsx)(t.code,{children:`loading`}),`/`,(0,T.jsx)(t.code,{children:`empty`}),` и остаётся подходящим дефолтом для модалок, карточек и классических вкладок с одним scroll-контейнером.`]}),`
`,(0,T.jsxs)(t.h3,{id:`сценарии-tabsbox`,children:[`Сценарии `,(0,T.jsx)(t.code,{children:`TabsBox`})]}),`
`,(0,T.jsx)(u,{of:p}),`
`,(0,T.jsx)(u,{of:h}),`
`,(0,T.jsx)(u,{of:m}),`
`,(0,T.jsx)(u,{of:g}),`
`,(0,T.jsx)(u,{of:b}),`
`,(0,T.jsx)(u,{of:_}),`
`,(0,T.jsx)(t.h2,{id:`tabslayout`,children:`TabsLayout`}),`
`,(0,T.jsx)(u,{of:v}),`
`,(0,T.jsx)(t.pre,{children:(0,T.jsx)(t.code,{className:`language-tsx`,children:`import { Scrollable, TabsLayout } from "@/shared/ui";

export function Example() {
	return (
		<TabsLayout bordered h100 aria-label="Панели документа">
			<TabsLayout.Tab id="details" title="Детали">
				<TabsLayout.Toolbar>Панель инструментов</TabsLayout.Toolbar>
				<TabsLayout.Content>
					<Scrollable className="h100">Контент сам управляет scroll.</Scrollable>
				</TabsLayout.Content>
				<TabsLayout.Footer>Футер панели</TabsLayout.Footer>
			</TabsLayout.Tab>
		</TabsLayout>
	);
}
`})}),`
`,(0,T.jsxs)(t.p,{children:[`Семантика `,(0,T.jsx)(t.code,{children:`TabsLayout`}),` после рефакторинга:`]}),`
`,(0,T.jsxs)(t.ul,{children:[`
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`Toolbar`}),` и `,(0,T.jsx)(t.code,{children:`Footer`}),` всегда исключены из scroll-контента.`]}),`
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`Content`}),` не получает встроенный `,(0,T.jsx)(t.code,{children:`overflow`}),` и не оборачивается во внутренний padding от tabs-компонента.`]}),`
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`loading`}),` и `,(0,T.jsx)(t.code,{children:`empty`}),` состояния рендерятся снаружи вызывающим кодом.`]}),`
`]}),`
`,(0,T.jsx)(t.h2,{id:`deprecated-tabs`,children:`Deprecated Tabs`}),`
`,(0,T.jsx)(u,{of:y}),`
`,(0,T.jsxs)(t.p,{children:[(0,T.jsx)(t.code,{children:`Tabs`}),` сохранён только для обратной совместимости. Семантика до/после:`]}),`
`,(0,T.jsxs)(t.ul,{children:[`
`,(0,T.jsx)(t.li,{children:`До: один публичный компонент пытался одновременно управлять и tabs-state, и layout панели, и scroll-сценариями.`}),`
`,(0,T.jsxs)(t.li,{children:[`После: `,(0,T.jsx)(t.code,{children:`Tabs`}),` остаётся тонким фасадом над `,(0,T.jsx)(t.code,{children:`TabsBox`}),`, а новые сценарии идут через отдельные `,(0,T.jsx)(t.code,{children:`TabsBox`}),` и `,(0,T.jsx)(t.code,{children:`TabsLayout`}),`.`]}),`
`]}),`
`,(0,T.jsx)(t.h2,{id:`api`,children:`API`}),`
`,(0,T.jsx)(c,{of:S}),`
`,(0,T.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
`,(0,T.jsx)(i,{includePrimary:!1})]})}function w(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,T.jsx)(t,{...e,children:(0,T.jsx)(C,{...e})}):C(e)}var T;e((()=>{T=t(),d(),s(),x()}))();export{w as default};