import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-GmIo3IOR.js";import{a,i as o}from"./utils-B73_kE2n.js";import{n as s,t as c}from"./ui.module-wFHXkJzp.js";var l,u,d,f,p,m,h,g,_,v=n((()=>{l=`FFyoOs`,u=`zPYy7T`,d=`j6ek6R`,f=`HFTPXI`,p=`_0RK4xF`,m=`kDPnKt`,h=`DQHqws`,g=`nCQ9v4`,_={row:l,wrapper:u,input:d,track:f,thumb:p,unchecked:m,checked:h,option:g}}));function y({label:e,description:t,placeholder:n,disabled:r,size:i,className:o,onChange:c,value:l,id:u,checkedText:d=`ВКЛ`,uncheckedText:f=`ВЫКЛ`,labelPosition:p=`before`,...m}){let h=(0,b.useId)(),g=u??h,v=t?`${g}-description`:void 0,y=e??n,S=!!l,C=!y&&!m[`aria-label`]?`${f} / ${d}`:void 0,w=y?(0,x.jsx)(`label`,{htmlFor:g,className:s.uiLabel,children:y}):null;return(0,x.jsxs)(`div`,{className:a(s.uiElement,r&&s.disabled,i&&s.uiSizable,i&&s[i],o),"aria-disabled":r||void 0,children:[(0,x.jsxs)(`div`,{className:_.row,children:[p===`before`&&w,(0,x.jsxs)(`div`,{className:_.wrapper,children:[(0,x.jsx)(`input`,{...m,id:g,type:`checkbox`,role:`switch`,checked:S,disabled:r,"aria-checked":S,"aria-describedby":v,"aria-label":C,className:a(s.uiInputControl,_.input),onChange:e=>c?.(e.currentTarget.checked)}),(0,x.jsxs)(`div`,{className:_.track,"data-disabled":r||void 0,"aria-hidden":`true`,children:[(0,x.jsx)(`div`,{className:_.thumb}),(0,x.jsx)(`div`,{className:a(_.option,_.unchecked),children:f}),(0,x.jsx)(`div`,{className:a(_.option,_.checked),children:d})]})]}),p===`after`&&w]}),t&&(0,x.jsx)(`p`,{id:v,className:s.uiDescription,children:t})]})}var b,x,S=n((()=>{b=t(r(),1),o(),c(),v(),x=i(),y.__docgenInfo={description:`Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.`,methods:[],displayName:`Toggle`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},checkedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВКЛ"`,computed:!1}},uncheckedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВЫКЛ"`,computed:!1}},labelPosition:{required:!1,tsType:{name:`union`,raw:`"before" | "after"`,elements:[{name:`literal`,value:`"before"`},{name:`literal`,value:`"after"`}]},description:``,defaultValue:{value:`"before"`,computed:!1}}},composes:[`Omit`]}})),C=e({Controlled:()=>D,Disabled:()=>k,LabelAfter:()=>O,__namedExportsOrder:()=>A,default:()=>E}),w,T,E,D,O,k,A,j=n((()=>{w=t(r(),1),S(),T=i(),E={title:`Shared/UI/Toggle`,component:y,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},value:{description:`Текущее значение переключателя.`,control:`boolean`},onChange:{description:`Вызывается при изменении значения.`,control:!1},checkedText:{description:`Текст для включенного состояния.`,control:`text`},uncheckedText:{description:`Текст для выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},D={render:e=>{let[t,n]=(0,w.useState)(e.value??!1);return(0,T.jsx)(y,{...e,value:t,onChange:n})},args:{label:`Режим синхронизации`,description:`Мгновенное переключение состояния.`,value:!1,checkedText:`ВКЛ`,uncheckedText:`ВЫКЛ`,labelPosition:`before`}},O={render:e=>{let[t,n]=(0,w.useState)(e.value??!0);return(0,T.jsx)(y,{...e,value:t,onChange:n})},args:{label:`Уведомления`,value:!0,labelPosition:`after`}},k={args:{label:`Недоступный переключатель`,value:!0,disabled:!0}},D.parameters={...D.parameters,docs:{...D.parameters?.docs,source:{originalSource:`{
  render: args => {
    const [value, setValue] = useState(args.value ?? false);
    return <Toggle {...args} value={value} onChange={setValue} />;
  },
  args: {
    label: "Режим синхронизации",
    description: "Мгновенное переключение состояния.",
    value: false,
    checkedText: "ВКЛ",
    uncheckedText: "ВЫКЛ",
    labelPosition: "before"
  }
}`,...D.parameters?.docs?.source}}},O.parameters={...O.parameters,docs:{...O.parameters?.docs,source:{originalSource:`{
  render: args => {
    const [value, setValue] = useState(args.value ?? true);
    return <Toggle {...args} value={value} onChange={setValue} />;
  },
  args: {
    label: "Уведомления",
    value: true,
    labelPosition: "after"
  }
}`,...O.parameters?.docs?.source}}},k.parameters={...k.parameters,docs:{...k.parameters?.docs,source:{originalSource:`{
  args: {
    label: "Недоступный переключатель",
    value: true,
    disabled: true
  }
}`,...k.parameters?.docs?.source}}},A=[`Controlled`,`LabelAfter`,`Disabled`]}));j();export{D as Controlled,k as Disabled,O as LabelAfter,A as __namedExportsOrder,E as default,j as n,C as t};