import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-GrlyTB2d.js";import{n as r,t as i}from"./Text-CtOgHIoX.js";import{a,b as o,y as s}from"./formatters-CVj-3Vn0-BFaHJqZL.js";import{n as c,t as l}from"./createControlledStoryRender-DHsyXc1B.js";import{r as u,t as d}from"./DateInput-B7WxAsa1.js";import{n as f,t as p}from"./GridContainer-qDguE1HS.js";import{i as m,n as h,r as g,t as _}from"./PeriodSelect-CiXkmjFn.js";var v=t({AllAllowedOptionsDisabled:()=>A,AlternativeLabels:()=>k,AutoSwitchByRange:()=>D,Controlled:()=>E,Disabled:()=>j,MonthAndYear:()=>O,__namedExportsOrder:()=>M,default:()=>w});function y(e){return e!==void 0&&o(e)?e:null}var b,x,S,C,w,T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{s(),u(),c(),f(),r(),m(),h(),b=n(),{fn:x}=__STORYBOOK_MODULE_TEST__,S=[new Date(2026,2,1,0,0,0),new Date(2026,2,14,23,59,59)],C=[new Date(2026,0,1,0,0,0),new Date(2026,4,20,23,59,59)],w={title:`Shared/UI/PeriodSelect`,component:_,args:{label:`Период детализации`,description:`Выберите уровень группировки дат.`,placeholder:`Выберите период`,value:`day`,onChange:x(),presetIds:g,dateRange:S,maxDayRangeDays:31,maxWeekRangeWeeks:26,disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Select периода детализации дат. Компонент работает с id периода и может блокировать слишком детальные варианты по переданному диапазону дат.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда период не выбран.`,control:`text`},value:{description:`Текущий id периода.`,control:`select`,options:g},onChange:{description:`Вызывается с id выбранного периода.`,control:!1},options:{description:"Кастомный список периодов по контракту `PeriodSelectOption`; имеет приоритет над `presetIds`, `labels` и порогами диапазона.",control:!1},labels:{description:`Частичные подписи встроенных периодов поверх канонического каталога.`,control:`object`},presetIds:{description:"Разрешенные встроенные периоды. Порядок отображения остается `day → week → month → year`.",control:`check`,options:g},dateRange:{description:`Диапазон дат, по которому вычисляются заблокированные периоды.`,control:!1},maxDayRangeDays:{description:"Максимальное количество дней, при котором доступен период `day`.",control:{type:`number`,min:1,step:1}},maxWeekRangeWeeks:{description:"Максимальное количество недель, при котором доступен период `week`.",control:{type:`number`,min:1,step:1}},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},T=l((e,t)=>{let n=y(e.dateRange),r=a(e.dateRange??null);return(0,b.jsxs)(p,{gap:`md`,children:[(0,b.jsx)(_,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,b.jsx)(d,{label:`Связанный диапазон дат`,placeholder:`дд.мм.гггг - дд.мм.гггг`,value:n,onChange:e=>t({dateRange:e??void 0})}),(0,b.jsxs)(i,{as:`p`,color:`secondary`,"aria-live":`polite`,children:[`Выбрано: `,(0,b.jsx)(i,{as:`code`,children:e.value??`не выбрано`}),`. Дней в диапазоне:`,` `,(0,b.jsx)(i,{as:`code`,children:r??`не задано`}),`.`]})]})}),E={name:`Контролируемый выбор`,render:T},D={name:`Автопереключение по диапазону`,args:{value:`day`,dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},O={name:`Только месяцы и годы`,args:{value:`month`,presetIds:[`month`,`year`]},render:T},k={name:`Альтернативные подписи`,args:{value:`month`,labels:{day:`за день`,week:`за неделю`,month:`за месяц`,year:`за год`}},render:T},A={name:`Все разрешенные варианты недоступны`,args:{value:`day`,presetIds:[`day`,`week`],dateRange:C,maxDayRangeDays:31,maxWeekRangeWeeks:8},render:T},j={name:`Заблокированный контрол`,args:{disabled:!0,value:`week`}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
  name: "Контролируемый выбор",
  render: renderPeriodSelectStory
}`,...E.parameters?.docs?.source},description:{story:"Контролируемый сценарий синхронизирует `value` и `dateRange` через Storybook args.",...E.parameters?.docs?.description}}},D.parameters={...D.parameters,docs:{...D.parameters?.docs,source:{originalSource:`{
  name: "Автопереключение по диапазону",
  args: {
    value: "day",
    dateRange: longDateRange,
    maxDayRangeDays: 31,
    maxWeekRangeWeeks: 8
  },
  render: renderPeriodSelectStory
}`,...D.parameters?.docs?.source},description:{story:"Длинный диапазон блокирует `day` и `week`, поэтому контрол переключает значение на ближайший доступный период.",...D.parameters?.docs?.description}}},O.parameters={...O.parameters,docs:{...O.parameters?.docs,source:{originalSource:`{
  name: "Только месяцы и годы",
  args: {
    value: "month",
    presetIds: ["month", "year"]
  },
  render: renderPeriodSelectStory
}`,...O.parameters?.docs?.source},description:{story:`Allow-list ограничивает встроенный каталог двумя крупными уровнями детализации.`,...O.parameters?.docs?.description}}},k.parameters={...k.parameters,docs:{...k.parameters?.docs,source:{originalSource:`{
  name: "Альтернативные подписи",
  args: {
    value: "month",
    labels: {
      day: "за день",
      week: "за неделю",
      month: "за месяц",
      year: "за год"
    }
  },
  render: renderPeriodSelectStory
}`,...k.parameters?.docs?.source},description:{story:`Частичный labels override меняет формулировки встроенных вариантов,
сохраняя их id, порядок и ограничения доступности.`,...k.parameters?.docs?.description}}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
  name: "Все разрешенные варианты недоступны",
  args: {
    value: "day",
    presetIds: ["day", "week"],
    dateRange: longDateRange,
    maxDayRangeDays: 31,
    maxWeekRangeWeeks: 8
  },
  render: renderPeriodSelectStory
}`,...A.parameters?.docs?.source},description:{story:`При длинном диапазоне все разрешенные варианты временно недоступны; внешний
controlled-id сохраняется, и после сокращения диапазона отображение восстанавливается.`,...A.parameters?.docs?.description}}},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
  name: "Заблокированный контрол",
  args: {
    disabled: true,
    value: "week"
  }
}`,...j.parameters?.docs?.source}}},M=[`Controlled`,`AutoSwitchByRange`,`MonthAndYear`,`AlternativeLabels`,`AllAllowedOptionsDisabled`,`Disabled`]})))()}export{j as a,N as c,E as i,k as n,O as o,D as r,v as s,A as t};