{"version":3,"file":"index.cjs","sources":["../src/common/date.ts","../src/common/getQAAttribute.ts","../src/common/useClickAway.ts","../src/common/useRefMerge.ts","../src/common/useUpdateEffect.ts","../src/Badge/types.ts","../src/Badge/Badge.tsx","../src/Badge/BadgeDot.tsx","../src/Banner/Content/index.tsx","../src/Banner/types.ts","../src/Banner/Icon/index.tsx","../src/Banner/CloseButton/index.tsx","../src/Banner/Banner.tsx","../src/Calendar/CalendarContext.ts","../src/Calendar/WeekDays/index.tsx","../src/Calendar/Header/types.ts","../src/Calendar/Header/HeaderDate/index.tsx","../src/Dropdown/hook.ts","../src/Dropdown/Dropdown.tsx","../src/Calendar/Dropdown/hook.ts","../src/Calendar/Dropdown/index.tsx","../src/Calendar/Header/HeaderDateDropdown/hook.ts","../src/Calendar/Header/HeaderDateDropdown/index.tsx","../src/Calendar/Header/index.tsx","../src/Calendar/types.ts","../src/Calendar/Days/utils.ts","../src/Calendar/Days/Day/utils.ts","../src/Calendar/Days/Day/index.tsx","../src/Calendar/Days/hook.ts","../src/Calendar/Days/index.tsx","../src/Calendar/Block/index.tsx","../src/Calendar/hook.ts","../src/Calendar/Calendar.tsx","../src/Caption/Caption.tsx","../src/Checkbox/Icon/index.tsx","../src/Checkbox/Label/index.tsx","../src/Checkbox/Checkbox.tsx","../src/CheckboxTree/Item/hook.ts","../src/CheckboxTree/Item/index.tsx","../src/CheckboxTree/CheckboxTree.tsx","../src/Chip/EndAdornment/index.tsx","../src/Chip/Content/index.tsx","../src/Chip/Tooltip/index.tsx","../src/Chip/types.ts","../src/Chip/Chip.tsx","../src/Input/InputCaption/index.tsx","../src/Input/EndAdornment/index.tsx","../src/Input/Field/index.tsx","../src/Input/Asterisk/index.tsx","../src/Input/Label/index.tsx","../src/Input/InputComponent/index.tsx","../src/Input/Input.tsx","../src/Datepicker/DateInput/utils.ts","../src/Datepicker/DateInput/index.tsx","../src/Datepicker/Calendar/index.tsx","../src/Datepicker/types.ts","../src/Datepicker/Datepicker.tsx","../src/FileUploader/Title/index.tsx","../src/FileUploader/Caption/index.tsx","../src/FileUploader/types.ts","../src/FileUploader/UploadedFile/hook.ts","../src/FileUploader/UploadedFile/index.tsx","../src/FileUploader/UploadedFiles/index.tsx","../src/FileUploader/hook.ts","../src/FileUploader/FileUploader.tsx","../src/Modal/ModalContent/index.tsx","../src/Modal/ModalFooter/index.tsx","../src/Modal/ModalHeader/index.tsx","../src/Modal/ModalOverlay/index.tsx","../src/Modal/hook.ts","../src/Modal/Modal.tsx","../src/PasswordInput/PasswordInput.tsx","../src/Radio/Icon/index.tsx","../src/Radio/Label/index.tsx","../src/Radio/Radio.tsx","../src/SearchInput/SearchInput.tsx","../src/SegmentedControl/SegmentedControlItem/index.tsx","../src/SegmentedControl/SegmentedControl.tsx","../src/Select/types.ts","../src/Select/utils.ts","../src/Select/SelectInput/InputChips/Chips/index.tsx","../src/Select/SelectInput/InputChips/index.tsx","../src/Select/SelectInput/WrapInput/index.tsx","../src/Select/SelectInput/NoWrapInput/index.tsx","../src/Select/SelectInput/EditableInput/hook.ts","../src/Select/SelectInput/EditableInput/index.tsx","../src/Select/SelectInput/ReadonlyInput/hook.ts","../src/Select/SelectInput/ReadonlyInput/index.tsx","../src/Select/SelectInput/index.tsx","../src/Select/SelectItems/utils.ts","../src/Select/SelectItems/SelectItemsMultiple/index.tsx","../src/Select/SelectItems/SelectItem/index.tsx","../src/Select/SelectItems/index.tsx","../src/Select/Hint/index.tsx","../src/Select/Loader/index.tsx","../src/Select/SelectList/index.tsx","../src/Select/hook/useOptions.ts","../src/Select/hook/useSelect.ts","../src/Select/Select.tsx","../src/Select/Filters/containsFilter.tsx","../src/SidebarMenu/MenuItem/MenuItemBadge/index.tsx","../src/SidebarMenu/MenuItem/Left/index.tsx","../src/SidebarMenu/MenuItem/Dropdown/Left/index.tsx","../src/SidebarMenu/MenuItem/Dropdown/index.tsx","../src/SidebarMenu/MenuItem/MenuItemChild/Left/index.tsx","../src/SidebarMenu/MenuItem/MenuItemChild/index.tsx","../src/SidebarMenu/MenuItem/MenuItemArrow/index.tsx","../src/SidebarMenu/MenuItem/index.tsx","../src/SidebarMenu/ExpandButton/index.tsx","../src/SidebarMenu/hook.ts","../src/SidebarMenu/SidebarMenu.tsx","../src/Snackbar/hook.tsx","../src/Switch/Icon/index.tsx","../src/Switch/Label/index.tsx","../src/Switch/Switch.tsx","../src/Tabs/Arrow/ArrowBase/index.ts","../src/Tabs/Arrow/ArrowLeft/index.tsx","../src/Tabs/Arrow/ArrowRight/index.tsx","../src/Tabs/Arrow/index.tsx","../src/Tabs/Scrollable/index.tsx","../src/Tabs/Tabs.tsx","../src/Tabs/TabBadge/index.tsx","../src/Tabs/Tab/index.tsx","../src/Tabs/TabList/index.tsx","../src/Textarea/Textarea.tsx","../src/Typography/Typography.tsx"],"sourcesContent":["/** Устанавливает дату в начало дня.\n *\n *  Возвращает ту-же дату если она уже подходит под условие.\n */\nexport const startOfDay = (date: Date) => {\n  if (date.getHours() === 0 && date.getMinutes() === 0 && date.getSeconds() === 0 && date.getMilliseconds() === 0) {\n    return date;\n  }\n\n  const newDate = new Date(date.getTime());\n\n  newDate.setHours(0, 0, 0, 0);\n\n  return newDate;\n};\n","export type QA = {\n  /** data-qa аттрибут */\n  qa?: string;\n};\n\nexport type RequiredQA = Required<QA>;\n\n/** Helper работы с data-qa */\nexport const getQAAttribute = (rootName: string) => {\n  return (subName?: string | number, state?: Record<string, boolean>): string => {\n    let name = rootName;\n\n    if (subName) {\n      name += `-${subName}`;\n    }\n\n    if (state) {\n      for (const item in state) {\n        if (state[item] === true) {\n          name += ':' + item;\n        }\n      }\n    }\n\n    return name;\n  };\n};\n","import {useEffect} from 'react';\n\nimport type {RefObject} from 'react';\n\n/** Обработчик нажатия вне refs */\nexport const useClickAway = (handler: EventListener, ...refs: Array<RefObject<Element>>): void => {\n  useEffect(() => {\n    const listener = (e: MouseEvent) => {\n      if (!(e.target instanceof Element)) {\n        return;\n      }\n\n      for (const ref of refs) {\n        if (!ref.current || ref.current.contains(e.target)) {\n          return;\n        }\n      }\n\n      handler(e);\n    };\n\n    document.addEventListener('click', listener, true);\n\n    return () => {\n      document.removeEventListener('click', listener);\n    };\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [handler]);\n};\n","import {useEffect, useRef} from 'react';\n\nimport type {Ref} from 'react';\n\n/** Объединение ref.\n *\n *  Возвращает тот же ref если передан RefObject\n */\nexport const useRefMerge = <T>(baseRef?: Ref<T>) => {\n  const innerRef = useRef<T>(null);\n\n  const ref = baseRef && typeof baseRef !== 'function' ? baseRef : innerRef;\n\n  useEffect(() => {\n    if (typeof baseRef === 'function') {\n      baseRef(innerRef.current ?? null);\n    }\n  }, [baseRef]);\n\n  return ref;\n};\n","import {useEffect, useRef} from 'react';\n\n/** Обработчик изменения deps, вне первого рендера */\nexport const useUpdateEffect: typeof useEffect = (effect, deps) => {\n  const isFirstMount = useRef<boolean>(true);\n\n  useEffect(() => {\n    if (isFirstMount.current) {\n      isFirstMount.current = false;\n      return;\n    }\n\n    return effect();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, deps);\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {SizeTokenValue} from 'common';\n\nimport type {HTMLAttributes} from 'react';\nimport type {CSSObject} from '@emotion/react';\n\nimport type {QA} from 'common';\n\nexport enum BadgeVariant {\n  Red = 'red',\n  Accent = 'accent',\n  Grey = 'grey',\n  Disabled = 'disabled',\n}\n\nexport type BadgeStyles = {\n  /** Размер */\n  size: SizeTokenValue;\n  /** Вариант */\n  variant: BadgeVariant;\n  /** Очерченная граница */\n  hasStroke?: boolean;\n  /** Цвет текста */\n  color?: string;\n} & Pick<CSSObject, 'backgroundColor' | 'borderColor'>;\n\nexport type BadgeProps = Partial<BadgeStyles> & QA & HTMLAttributes<HTMLDivElement>;\n\nexport enum BadgeDotSize {\n  XS = 'xs',\n  S = 's',\n  M = 'm',\n  L = 'l',\n}\nexport type BadgeDotProps = {\n  /** Размер */\n  size: BadgeDotSize;\n} & QA &\n  Omit<BadgeProps, 'children' | 'size' | 'color'>;\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport {BadgeVariant} from './types';\n\nimport type {BadgeProps, BadgeStyles} from './types';\nimport type {CSSObject} from '@emotion/styled';\n\nconst sizeProps: Partial<Record<SizeTokenValue, CSSObject>> = {\n  [SizeTokenValue.Large]: {\n    minWidth: 20,\n    minHeight: 20,\n    borderRadius: 11,\n    padding: '0 6px',\n  },\n  [SizeTokenValue.Medium]: {\n    minWidth: 16,\n    minHeight: 16,\n    borderRadius: 17,\n    padding: '0 4px',\n  },\n  [SizeTokenValue.Small]: {\n    minWidth: 12,\n    minHeight: 12,\n    borderRadius: 13,\n    padding: '0 3px',\n    fontSize: '10px',\n  },\n};\n\nconst variantColor: Record<BadgeVariant, CSSObject> = {\n  [BadgeVariant.Red]: {\n    color: theme.colors.white,\n    backgroundColor: theme.colors.additional.red[80],\n  },\n\n  [BadgeVariant.Accent]: {\n    color: theme.colors.white,\n    backgroundColor: theme.colors.accent[90],\n  },\n\n  [BadgeVariant.Grey]: {\n    color: theme.colors.grey[100],\n    backgroundColor: theme.colors.grey[30],\n  },\n\n  [BadgeVariant.Disabled]: {\n    color: theme.colors.grey[40],\n    backgroundColor: theme.colors.grey[20],\n  },\n};\n\nconst Container = styled.div<BadgeStyles>`\n  display: flex;\n  position: relative;\n  box-sizing: border-box;\n  text-align: center;\n  user-select: none;\n  align-items: center;\n  justify-content: center;\n  line-height: 0 !important;\n  outline-style: solid;\n  outline-width: 2px;\n\n  ${({variant, size, hasStroke, ...props}) => {\n    const variantProps = variantColor[variant];\n\n    const color = props.color ?? variantProps.color;\n    const backgroundColor = props.backgroundColor ?? variantProps.backgroundColor;\n    const borderColor = props.borderColor ?? variantProps.borderColor;\n\n    return {\n      ...sizeProps[size],\n      ...theme.typography.p3,\n\n      color,\n      backgroundColor,\n      borderColor,\n\n      outlineColor: hasStroke ? borderColor : 'transparent',\n    };\n  }}\n`;\n\nexport const Badge: React.FC<BadgeProps> = props => {\n  const {\n    qa = 'badge',\n    variant = BadgeVariant.Red,\n    size = SizeTokenValue.Medium,\n    borderColor = theme.colors.grey[10],\n\n    ...rest\n  } = props;\n\n  const containerProps = {size, borderColor, variant, ...rest};\n\n  return <Container data-qa={qa} {...containerProps} />;\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {BadgeDotSize, BadgeVariant} from './types';\n\nimport type {BadgeDotProps} from './types';\n\nconst sizeWidth: Record<BadgeDotSize, number> = {\n  [BadgeDotSize.L]: 12,\n  [BadgeDotSize.M]: 10,\n  [BadgeDotSize.S]: 8,\n  [BadgeDotSize.XS]: 6,\n};\n\nconst Container = styled.div<BadgeDotProps & Required<Pick<BadgeDotProps, 'size'>>>`\n  display: flex;\n  position: relative;\n  box-sizing: border-box;\n  text-align: center;\n  user-select: none;\n  align-items: center;\n  justify-content: center;\n  line-height: 0 !important;\n  outline-style: solid;\n  outline-width: 2px;\n  border-radius: 50%;\n\n  ${({variant, size, hasStroke, color, backgroundColor, borderColor = theme.colors.grey[10]}) => {\n    const minWidth = sizeWidth[size];\n\n    switch (variant) {\n      case BadgeVariant.Accent:\n        backgroundColor ??= theme.colors.accent[90];\n        break;\n\n      case BadgeVariant.Grey:\n        backgroundColor ??= theme.colors.grey[30];\n        break;\n\n      case BadgeVariant.Disabled:\n        backgroundColor ??= theme.colors.grey[20];\n        break;\n\n      default:\n        backgroundColor ??= theme.colors.additional.red[80];\n        break;\n    }\n\n    return {\n      color,\n      backgroundColor,\n      outlineColor: hasStroke ? borderColor : 'transparent',\n\n      minWidth,\n      minHeight: minWidth,\n    };\n  }}\n`;\n\nexport const BadgeDot: React.FC<BadgeDotProps> = props => {\n  const {size = BadgeDotSize.M, qa = 'badge-dot', ...rest} = props;\n\n  return <Container data-qa={qa} {...rest} size={size} />;\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {QA} from 'common';\nimport type {BannerProps} from '../types';\n\nconst Container = styled.div`\n  display: flex;\n  min-width: 0;\n  justify-content: space-between;\n  flex-grow: 1;\n  gap: 8px;\n`;\n\nconst ContentContainer = styled.div`\n  min-width: 0;\n`;\n\nconst Title = styled.div`\n  padding: 2px 0 6px;\n\n  ${theme.typography.h4}\n`;\n\nconst Actions = styled.div`\n  display: flex;\n  align-items: flex-start;\n  justify-content: flex-end;\n  gap: 8px;\n`;\n\ntype ContentProps = Pick<BannerProps, 'children' | 'title' | 'actionsTop'> & Required<QA>;\n\nexport const Content: React.FC<ContentProps> = ({children, title, actionsTop, qa}) => {\n  const titleContent = title && <Title data-qa={`${qa}-title`}>{title}</Title>;\n\n  const right = actionsTop && <Actions data-qa={`${qa}-actions-top`}>{actionsTop}</Actions>;\n\n  return (\n    <Container>\n      <ContentContainer>\n        {titleContent}\n        <div data-qa={`${qa}-message`}>{children}</div>\n      </ContentContainer>\n      {right}\n    </Container>\n  );\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {SizeTokenValue} from 'common';\n\nimport type {HTMLAttributes, ReactNode} from 'react';\nimport type {CSSObject} from '@emotion/react';\n\nimport type {QA, PropsWithChildren} from 'common';\n\nexport enum BannerVariant {\n  DefaultBlue = 'defaultBlue',\n  DefaultGrey = 'defaultGrey',\n  Success = 'success',\n  Warning = 'warning',\n  Error = 'error',\n}\n\nexport type BannerStyles = {\n  /** Вариант */\n  variant: BannerVariant;\n  /** Размер */\n  size: SizeTokenValue;\n  /** Цвет текста */\n  color?: string;\n} & Pick<CSSObject, 'backgroundColor' | 'borderColor' | 'width' | 'maxWidth'>;\n\nexport type BannerProps = {\n  /**\n   * boolean - Показывать иконку по \"варианту\"\n   *\n   * ReactNode - Кастомная иконка\n   * */\n  icon?: boolean | ReactNode;\n\n  /** Заголовок */\n  title?: ReactNode;\n\n  /** Контрол справа */\n  actionsTop?: ReactNode;\n\n  /** Контрол снизу */\n  actionsBottom?: ReactNode;\n\n  /** Обработчик закрытия */\n  onClose?: () => void;\n} & Partial<BannerStyles> &\n  QA &\n  PropsWithChildren &\n  Pick<HTMLAttributes<HTMLDivElement>, 'className'>;\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {CheckIcon, ErrorIcon, InfoIcon, WarningOutlineIcon} from 'icons';\n\nimport {BannerVariant} from '../types';\n\nimport type {BannerProps} from '../types';\nimport type {ReactNode} from 'react';\n\nconst typeIcon = (variant: BannerVariant, size: SizeTokenValue): ReactNode => {\n  const resultSize =\n    size === SizeTokenValue.XSmall || size === SizeTokenValue.XXSmall ? SizeTokenValue.Small : SizeTokenValue.Medium;\n\n  switch (variant) {\n    case BannerVariant.DefaultBlue:\n      return <InfoIcon size={resultSize} color={theme.colors.additional.blue[80]} />;\n    case BannerVariant.DefaultGrey:\n      return <InfoIcon size={resultSize} color={theme.colors.grey[60]} />;\n    case BannerVariant.Success:\n      return <CheckIcon size={resultSize} color={theme.colors.additional.green[80]} />;\n    case BannerVariant.Warning:\n      return <WarningOutlineIcon size={resultSize} color={theme.colors.additional.yellow[80]} />;\n    case BannerVariant.Error:\n      return <ErrorIcon size={resultSize} color={theme.colors.additional.red[80]} />;\n  }\n};\n\nconst Container = styled.div`\n  svg {\n    vertical-align: top;\n  }\n`;\n\ntype IconProps = Pick<BannerProps, 'icon'> & Required<Pick<BannerProps, 'variant' | 'size'>>;\n\nexport const Icon: React.FC<IconProps> = ({icon, size, variant}) => {\n  if (icon === false) {\n    return null;\n  }\n\n  const child = icon && icon !== true ? icon : typeIcon(variant, size);\n\n  return <Container>{child}</Container>;\n};\n","import styled from '@emotion/styled';\n\nimport {SizeTokenValue} from 'common';\nimport {CloseIcon} from 'icons';\nimport {ButtonVariant, IconButton} from 'Button';\n\nimport type {BannerProps} from '../types';\n\nconst Container = styled.div<Pick<BannerProps, 'size'>>`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n\n  ${props => {\n    let size = 24;\n\n    switch (props.size) {\n      case SizeTokenValue.XSmall:\n      case SizeTokenValue.XXSmall:\n        size = 16;\n        break;\n    }\n\n    return {width: size, height: size};\n  }}\n`;\n\nexport const CloseButton: React.FC<Pick<BannerProps, 'onClose' | 'size' | 'qa'>> = ({onClose, size, qa}) => {\n  if (!onClose) {\n    return null;\n  }\n\n  return (\n    <Container size={size}>\n      <IconButton qa={`${qa}-close`} size={SizeTokenValue.XXSmall} variant={ButtonVariant.InnerInput} onClick={onClose}>\n        <CloseIcon size={SizeTokenValue.Small} />\n      </IconButton>\n    </Container>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport {Content} from './Content';\nimport {Icon} from './Icon';\n\nimport {BannerVariant} from './types';\nimport {CloseButton} from './CloseButton';\n\nimport type {BannerProps, BannerStyles} from './types';\nimport type {CSSObject} from '@emotion/styled';\n\nconst variantProps: Record<BannerVariant, CSSObject> = {\n  [BannerVariant.DefaultBlue]: {\n    backgroundColor: theme.colors.additional.blue[10],\n    borderColor: theme.colors.additional.blue[30],\n  },\n\n  [BannerVariant.DefaultGrey]: {\n    backgroundColor: theme.colors.additional.blueGrey[10],\n    borderColor: theme.colors.additional.blueGrey[30],\n  },\n\n  [BannerVariant.Success]: {\n    backgroundColor: theme.colors.additional.green[10],\n    borderColor: theme.colors.additional.green[30],\n  },\n\n  [BannerVariant.Warning]: {\n    backgroundColor: theme.colors.additional.yellow[10],\n    borderColor: theme.colors.additional.yellow[30],\n  },\n\n  [BannerVariant.Error]: {\n    backgroundColor: theme.colors.additional.red[10],\n    borderColor: theme.colors.additional.red[30],\n  },\n};\n\nconst sizeProps: Partial<Record<SizeTokenValue, CSSObject>> = {\n  [SizeTokenValue.Large]: {\n    ...theme.typography.p1,\n\n    gap: 8,\n  },\n\n  [SizeTokenValue.Medium]: {\n    ...theme.typography.p1,\n\n    gap: 8,\n  },\n\n  [SizeTokenValue.Small]: {\n    ...theme.typography.p1,\n\n    gap: 8,\n  },\n\n  [SizeTokenValue.XSmall]: {\n    ...theme.typography.p3,\n\n    alignItems: 'center',\n    padding: 8,\n    gap: 4,\n  },\n};\n\nconst Container = styled.div<BannerStyles>`\n  padding: 12px;\n  border-radius: 8px;\n  border: 1px solid transparent;\n  box-sizing: border-box;\n\n  ${({variant, size, width, maxWidth, color = theme.colors.grey[100], ...props}) => {\n    const typeProp = variantProps[variant];\n    const sizeProp = sizeProps[size];\n\n    return {\n      ...sizeProp,\n\n      color,\n      width,\n      maxWidth,\n\n      backgroundColor: props.backgroundColor ?? typeProp.backgroundColor,\n      borderColor: props.borderColor ?? typeProp.borderColor,\n    };\n  }};\n`;\n\nconst ContentContainer = styled.div`\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  gap: 8px;\n`;\n\nconst Actions = styled.div`\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n  gap: 8px;\n  padding-top: 8px;\n`;\n\nexport const Banner: React.FC<BannerProps> = props => {\n  const {\n    children,\n    icon,\n    actionsTop,\n    actionsBottom,\n    title,\n    onClose,\n\n    variant = BannerVariant.DefaultBlue,\n    size = SizeTokenValue.Medium,\n    qa = 'banner',\n\n    ...rest\n  } = props;\n\n  const bannerStyles = {...rest, variant, size};\n\n  const iconProps = {variant, size, icon};\n\n  const contentProps = {children, title, actionsTop, qa};\n\n  const buttonProps = {onClose, size, qa};\n\n  const bottom = actionsBottom && <Actions data-qa={`${qa}-actions-bottom`}>{actionsBottom}</Actions>;\n\n  return (\n    <Container data-qa={qa} {...bannerStyles}>\n      <ContentContainer>\n        <Icon {...iconProps} />\n        <Content {...contentProps} />\n        <CloseButton {...buttonProps} />\n      </ContentContainer>\n      {bottom}\n    </Container>\n  );\n};\n","'use client';\n\nimport {createContext} from 'react';\n\nimport type {CalendarContextProps} from './types';\n\nexport const CalendarContext = createContext<CalendarContextProps>({} as never);\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {CalendarContext} from '../CalendarContext';\n\nimport type {Day} from 'date-fns';\n\nimport type {RequiredQA} from 'common';\n\nconst Container = styled.div`\n  position: relative;\n  display: flex;\n  align-items: flex-start;\n  margin-bottom: 4px;\n  user-select: none;\n`;\n\ntype ItemStyle = {weekDay: Day};\n\nconst Item = styled.div<ItemStyle>`\n  display: flex;\n  width: 40px;\n  height: 40px;\n  justify-content: center;\n  align-items: center;\n  text-transform: capitalize;\n\n  color: ${props =>\n    props.weekDay === 0 || props.weekDay === 6 ? theme.colors.additional.red[80] : theme.colors.grey[60]};\n`;\n\nexport const WeekDays: React.FC<RequiredQA> = ({qa}) => {\n  const {locale, weekDays} = useContext(CalendarContext);\n\n  const items = weekDays.map(weekDay => (\n    <Item data-qa={qa} key={weekDay} weekDay={weekDay}>\n      {locale.localize.day(weekDay, {width: 'short'})}\n    </Item>\n  ));\n\n  return <Container>{items}</Container>;\n};\n","export enum HeaderDateType {\n  Year = 'year',\n  Month = 'month',\n}\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {getQAAttribute} from 'common';\n\nimport {CalendarContext} from 'Calendar/CalendarContext';\nimport {BlockContext} from 'Calendar/Block';\n\nimport {HeaderDateType} from '../types';\n\nimport type {RequiredQA} from 'common';\n\nimport type {Month} from 'date-fns';\n\nconst Container = styled.div`\n  display: flex;\n  gap: 8px;\n  text-transform: capitalize;\n  user-select: none;\n`;\n\nexport const HeaderDate: React.FC<RequiredQA> = ({qa}) => {\n  const {locale} = useContext(CalendarContext);\n  const {viewDate} = useContext(BlockContext);\n\n  const getQA = getQAAttribute(qa);\n\n  const month = locale.localize.month(viewDate.getMonth() as Month);\n  const year = viewDate.getFullYear();\n\n  return (\n    <Container>\n      <div data-qa={getQA(HeaderDateType.Month)}>{month}</div>\n      <div data-qa={getQA(HeaderDateType.Year)}>{year}</div>\n    </Container>\n  );\n};\n","import {autoUpdate, flip, offset, size, useDismiss, useFloating, useInteractions} from '@floating-ui/react';\n\nimport {Placement, useClickAway} from 'common';\n\nimport type {DropdownProps} from './types';\n\nconst targetSize = size({\n  apply({rects, elements}) {\n    elements.floating.style.width = `${rects.reference.width}px`;\n  },\n});\n\nexport const useDropdown = (props: DropdownProps) => {\n  const {\n    isOpen,\n    setIsOpen,\n    setFloating,\n    targetRef,\n\n    middleware = [\n      props.offset ? offset(props.offset) : undefined,\n      props.width === 'target' ? targetSize : undefined,\n      flip(),\n    ],\n\n    placement = Placement.Bottom,\n  } = props;\n\n  const floating = useFloating({\n    middleware,\n    placement,\n\n    open: isOpen,\n    onOpenChange: setIsOpen,\n    whileElementsMounted: autoUpdate,\n\n    elements: {reference: targetRef.current},\n  });\n\n  setFloating?.(floating);\n\n  const interactions = useInteractions([\n    useDismiss(floating.context, {\n      escapeKey: props.closeOnEscape,\n      outsidePress: props.closeOnOverlay,\n      outsidePressEvent: 'click',\n    }),\n  ]);\n\n  useClickAway(\n    () => {\n      setIsOpen(false);\n    },\n    targetRef,\n    floating.refs.floating\n  );\n\n  return {interactions, floating};\n};\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport {FloatingPortal} from '@floating-ui/react';\n\nimport theme from 'theme';\n\nimport {useDropdown} from './hook';\n\nimport type {CSSProperties} from 'react';\nimport type {DropdownProps} from './types';\n\nconst containerStyle = (props: DropdownProps, acc: CSSProperties) => {\n  const {isOpen, height, maxHeight, zIndex = theme.zIndex.dropdown, width = '248px'} = props;\n\n  if (isOpen) {\n    return {\n      zIndex,\n      height,\n      maxHeight,\n      width: width !== 'target' ? width : undefined,\n\n      ...acc,\n    };\n  }\n\n  return {\n    display: 'none',\n\n    ...acc,\n  };\n};\n\nexport const DropdownContent = styled.div`\n  height: 100%;\n  border-radius: 8px;\n  box-shadow: ${theme.shadows.medium};\n  background-color: ${theme.colors.white};\n`;\n\nexport const Dropdown: React.FC<DropdownProps> = props => {\n  const {children, isPortal, isMounted, isOpen, className, qa = 'dropdown'} = props;\n\n  const {interactions, floating} = useDropdown(props);\n\n  if (!isMounted && !isOpen) {\n    return null;\n  }\n\n  const Wrapper = isPortal ? FloatingPortal : React.Fragment;\n\n  const containerProps = {\n    ...interactions.getFloatingProps(),\n\n    children,\n    className,\n\n    style: containerStyle(props, floating.floatingStyles),\n\n    'data-qa': qa,\n  };\n\n  return (\n    <Wrapper>\n      <div ref={floating.refs.setFloating} {...containerProps} />\n    </Wrapper>\n  );\n};\n","import {useEffect, useRef} from 'react';\n\nimport type {MouseEventHandler} from 'react';\n\nimport type {DropdownProps} from './types';\n\nexport const useDropdown = ({onChange, isOpen, setIsOpen}: DropdownProps) => {\n  const isTooltipOpen = isOpen ? false : undefined;\n  const ref = useRef(null);\n\n  const onToggle = () => {\n    setIsOpen(!isOpen);\n  };\n\n  const onClickContainer: MouseEventHandler = e => {\n    e.stopPropagation();\n  };\n\n  const onClickItem: DropdownProps['onChange'] = newItem => {\n    setIsOpen(false);\n    onChange(newItem);\n  };\n\n  useEffect(() => {\n    const listner = () => setIsOpen(false);\n\n    document.addEventListener('click', listner);\n\n    return () => document.removeEventListener('click', listner);\n  }, [setIsOpen]);\n\n  return {ref, isTooltipOpen, onToggle, onClickContainer, onClickItem};\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {Placement, SizeTokenValue} from 'common';\nimport {ArrowDownIcon, ArrowUpIcon} from 'icons';\nimport {Tooltip} from 'Tooltip';\nimport {Dropdown as BaseDropdown} from 'Dropdown';\n\nimport {useDropdown} from './hook';\n\nimport type {DropdownListItemProps, DropdownProps, ListItemStyle} from './types';\n\nconst Container = styled.div(theme.typography.base);\n\nconst DropdownButton = styled.button`\n  position: relative;\n  display: flex;\n  align-items: center;\n  height: 32px;\n  gap: 6px;\n  padding: 0 10px;\n  text-transform: capitalize;\n  text-align: left;\n  color: ${theme.colors.grey[100]};\n  background: none;\n  border-style: solid;\n  border-width: 2px;\n  border-radius: 4px;\n  border-color: transparent;\n  cursor: pointer;\n\n  ${theme.typography.p1}\n\n  :hover {\n    border-color: ${theme.colors.grey[40]};\n  }\n\n  &[data-open='true'] {\n    border-color: ${theme.colors.accent[90]};\n  }\n\n  & svg {\n    color: ${theme.colors.grey[60]};\n  }\n`;\n\nconst List = styled.div`\n  width: 100%;\n  max-height: 240px;\n  padding-top: 8px;\n  background-color: ${theme.colors.white};\n  border-radius: 8px;\n  box-shadow: ${theme.shadows.medium};\n  overflow-y: auto;\n  overflow-x: hidden;\n  z-index: ${theme.zIndex.dropdown};\n\n  &[hidden] {\n    display: none;\n  }\n\n  ${theme.scroll}\n`;\n\nconst ListItem = styled.button<ListItemStyle>`\n  display: block;\n  min-width: 100%;\n  height: 32px;\n  padding: 0 12px;\n  text-transform: capitalize;\n  text-align: left;\n  background: none;\n  border: none;\n  outline: none;\n  cursor: ${props => (props.disabled ? 'default' : 'pointer')};\n\n  ${theme.typography.p1}\n\n  :hover {\n    color: ${theme.colors.grey[100]};\n    background-color: ${theme.colors.grey[20]};\n  }\n\n  ${props => {\n    if (props.isSelected) {\n      return {\n        color: theme.colors.white,\n        backgroundColor: theme.colors.accent[90],\n      };\n    }\n  }}\n`;\n\nconst DropdownListItem: React.FC<DropdownListItemProps> = ({onChange, item, isSelected}) => {\n  const {name, disabled} = item;\n\n  return (\n    <ListItem type=\"button\" onClick={() => onChange(item)} disabled={disabled} isSelected={isSelected}>\n      {name}\n    </ListItem>\n  );\n};\n\nexport const Dropdown: React.FC<DropdownProps> = props => {\n  const {items, value, isOpen, setIsOpen, tooltip, width, qa} = props;\n  const {ref, isTooltipOpen, onToggle, onClickContainer, onClickItem} = useDropdown(props);\n\n  const listItems = items.map(item => (\n    <DropdownListItem key={item.value} item={item} isSelected={item.value === value.value} onChange={onClickItem} />\n  ));\n\n  const Chevron = isOpen ? ArrowUpIcon : ArrowDownIcon;\n\n  const dropdownProps = {\n    isOpen,\n    setIsOpen,\n    width,\n\n    targetRef: ref,\n    placement: Placement.BottomStart,\n  };\n\n  return (\n    <Container data-qa={qa} onClick={onClickContainer}>\n      <Tooltip placement={Placement.Bottom} content={tooltip} isOpen={isTooltipOpen}>\n        <DropdownButton ref={ref} type=\"button\" onClick={onToggle} data-open={isOpen}>\n          {value.name}\n          <Chevron size={SizeTokenValue.Small} />\n        </DropdownButton>\n      </Tooltip>\n\n      <BaseDropdown {...dropdownProps}>\n        <List>{listItems}</List>\n      </BaseDropdown>\n    </Container>\n  );\n};\n","'use client';\n\nimport {useContext, useState} from 'react';\n\nimport {setMonth, setYear} from 'date-fns';\n\nimport {getQAAttribute} from 'common';\n\nimport {CalendarContext} from 'Calendar/CalendarContext';\nimport {BlockContext} from 'Calendar/Block';\n\nimport type {Month} from 'date-fns';\nimport type {RequiredQA} from 'common';\nimport type {DropdownItem, DropdownOpenProps, DropdownProps} from 'Calendar/Dropdown/types';\n\nimport type {HeaderDateType} from '../types';\n\nexport const useMonths = (): Omit<DropdownProps, keyof DropdownOpenProps> => {\n  const {locale, months, onChangeViewDate} = useContext(CalendarContext);\n  const {viewDate} = useContext(BlockContext);\n\n  const value: DropdownItem = {\n    name: locale.localize.month(viewDate.getMonth() as Month),\n    value: viewDate.getMonth(),\n    disabled: false,\n  };\n\n  const onChange = (newItem: DropdownItem) => {\n    onChangeViewDate(setMonth(viewDate, newItem.value));\n  };\n\n  return {onChange, value, items: months, width: '112px', tooltip: 'Выбор месяца'};\n};\n\nexport const useYears = (): Omit<DropdownProps, keyof DropdownOpenProps> => {\n  const {years, onChangeViewDate} = useContext(CalendarContext);\n  const {viewDate} = useContext(BlockContext);\n\n  const value: DropdownItem = {\n    name: String(viewDate.getFullYear()),\n    value: viewDate.getFullYear(),\n    disabled: false,\n  };\n\n  const onChange = (newItem: DropdownItem) => {\n    onChangeViewDate(setYear(viewDate, newItem.value));\n  };\n\n  return {onChange, value, items: years, width: '80px', tooltip: 'Выбор года'};\n};\n\nexport const useHeaderDateDropdown = ({qa}: RequiredQA) => {\n  const [isOpen, setIsOpen] = useState<HeaderDateType>();\n\n  const getQA = getQAAttribute(qa);\n\n  const getDropdownProps = (dropdown: HeaderDateType): DropdownOpenProps & RequiredQA => ({\n    qa: getQA(dropdown),\n    isOpen: isOpen === dropdown,\n    setIsOpen: newIsOpen => setIsOpen(newIsOpen && isOpen !== dropdown ? dropdown : undefined),\n  });\n\n  return getDropdownProps;\n};\n","import styled from '@emotion/styled';\n\nimport {Dropdown} from 'Calendar/Dropdown';\n\nimport {HeaderDateType} from '../types';\n\nimport {useHeaderDateDropdown, useMonths, useYears} from './hook';\n\nimport type {RequiredQA} from 'common';\n\nexport * from './hook';\n\nconst Center = styled.div`\n  display: flex;\n`;\n\nexport const HeaderDateDropdown: React.FC<RequiredQA> = props => {\n  const yearsProps = useYears();\n  const monthsProps = useMonths();\n  const getDropdownProps = useHeaderDateDropdown(props);\n\n  return (\n    <Center data-qa={props.qa}>\n      <Dropdown {...monthsProps} {...getDropdownProps(HeaderDateType.Month)} />\n      <Dropdown {...yearsProps} {...getDropdownProps(HeaderDateType.Year)} />\n    </Center>\n  );\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\nimport {startOfMonth, endOfMonth, addMonths, subMonths} from 'date-fns';\n\nimport theme from 'theme';\nimport {getQAAttribute, SizeTokenValue, Placement} from 'common';\nimport {Tooltip} from 'Tooltip';\nimport {ChevronLeftIcon, ChevronRightIcon} from 'icons';\n\nimport {CalendarContext} from '../CalendarContext';\nimport {BlockContext} from '../Block';\n\nimport {HeaderDate} from './HeaderDate';\nimport {HeaderDateDropdown} from './HeaderDateDropdown';\n\nimport type {RequiredQA} from 'common';\nimport type {ButtonHTMLAttributes, MouseEventHandler} from 'react';\n\nexport * from './HeaderDateDropdown';\n\nconst Container = styled.div`\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin-bottom: 8px;\n  padding: '4px 0';\n`;\n\nconst ArrowButton = styled.button`\n  width: 32px;\n  height: 32px;\n  padding: 0;\n  line-height: 0;\n  background: no-repeat;\n  border: none;\n  outline: none;\n  border-radius: 4px;\n  color: ${props => theme.colors.grey[props.disabled ? 40 : 60]};\n  cursor: ${props => (props.disabled ? 'default' : 'pointer')};\n\n  :hover {\n    background-color: ${props => (props.disabled ? undefined : theme.colors.grey[20])};\n  }\n\n  &[hidden] {\n    display: block;\n    visibility: hidden;\n    pointer-events: none;\n  }\n`;\n\nconst ArrowLeft: React.FC<ButtonHTMLAttributes<HTMLButtonElement>> = props => {\n  return (\n    <Tooltip placement={Placement.Bottom} content=\"Предыдущий месяц\">\n      <ArrowButton type=\"button\" {...props}>\n        <ChevronLeftIcon size={SizeTokenValue.Medium} />\n      </ArrowButton>\n    </Tooltip>\n  );\n};\n\nconst ArrowRight: React.FC<ButtonHTMLAttributes<HTMLButtonElement>> = props => {\n  return (\n    <Tooltip placement={Placement.Bottom} content=\"Следующий месяц\">\n      <ArrowButton type=\"button\" {...props}>\n        <ChevronRightIcon size={SizeTokenValue.Medium} />\n      </ArrowButton>\n    </Tooltip>\n  );\n};\n\nexport const Header: React.FC<RequiredQA> = ({qa}) => {\n  const context = useContext(CalendarContext);\n  const {minDate, maxDate, onChangeViewDate} = context;\n  const {isSingle, isFirst, isLast} = useContext(BlockContext);\n  const {viewDate} = useContext(BlockContext);\n\n  const getQA = getQAAttribute(qa);\n\n  const isPrevDisabled = !!minDate && endOfMonth(minDate).getTime() >= endOfMonth(viewDate).getTime();\n  const isNextDisabled = !!maxDate && startOfMonth(maxDate).getTime() <= startOfMonth(viewDate).getTime();\n\n  const onPrev: MouseEventHandler = () => {\n    onChangeViewDate(subMonths(context.viewDate, 1));\n  };\n\n  const onNext: MouseEventHandler = () => {\n    onChangeViewDate(addMonths(context.viewDate, 1));\n  };\n\n  const HeaderDateComponent = isSingle ? HeaderDateDropdown : HeaderDate;\n\n  return (\n    <Container data-qa={getQA()}>\n      <ArrowLeft data-qa={getQA('previous')} disabled={isPrevDisabled} onClick={onPrev} hidden={!isFirst} />\n      <HeaderDateComponent qa={getQA()} />\n      <ArrowRight data-qa={getQA('next')} disabled={isNextDisabled} onClick={onNext} hidden={!isLast} />\n    </Container>\n  );\n};\n","import type {FormatOptions} from 'date-fns';\n\nimport type {QA} from 'common';\n\nimport type {HTMLAttributes} from 'react';\nimport type {DayProps} from './Days/Day';\nimport type {DropdownItem} from './Dropdown/types';\n\nexport enum CalendarMode {\n  /** Дата */\n  Single = 'single',\n  /** Период */\n  Range = 'range',\n}\n\nexport enum CalendarFreezeRange {\n  /** Без выбора начала периода */\n  Start = 'start',\n  /** Без выбора окончания периода */\n  End = 'end',\n}\n\nexport type CalendarDay = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type CalendarDisableDates = (date: Date) => boolean;\nexport type CalendarTooltip = React.FC<DayProps>;\n\nexport type CalendarValue = Date | undefined;\nexport type BaseCalendarValue = [CalendarValue, CalendarValue];\nexport type RangeCalendarValue = BaseCalendarValue;\n\nexport type BaseCalendarProps = {\n  /** Режим календаря дата|период */\n  mode: CalendarMode;\n\n  /** Выбранная дата|период */\n  value: BaseCalendarValue;\n  /** Обработчик смены даты|периода */\n  onChange: (newValue: BaseCalendarValue) => void;\n\n  /** Фокус-дата */\n  viewDate?: Date;\n  /** Обработчик смены фокус-даты */\n  onChangeViewDate?: (newViewDate: Date) => void;\n\n  /** Левая граница */\n  minDate?: Date;\n  /** Правая граница */\n  maxDate?: Date;\n  /**\n   * Обработчик недоступных дат\n   *\n   * Не влияет на отключение выбора месяца и года, т.к. пересчет происходит по 2 ближайшим месяцам\n   */\n  disabledDates?: CalendarDisableDates;\n\n  /** Неделя начинается с указанного дня */\n  weekStartsOn?: CalendarDay;\n  /**\n   * Кол-во выводимых календарей\n   *\n   * Обычно применяется при выборе периода\n   */\n  blocks?: number;\n  /** Запретить смену начала|конца периода */\n  freezeRange?: CalendarFreezeRange;\n\n  /** Обрабочик тултипов для дат */\n  tooltips?: CalendarTooltip;\n\n  /** Перегружаемые компоненты */\n  components?: CalendarComponents;\n\n  /** Локаль для функций date-fns */\n  locale?: FormatOptions['locale'];\n} & QA &\n  Pick<HTMLAttributes<HTMLDivElement>, 'className'>;\n\nexport type RangeCalendarProps = Omit<BaseCalendarProps, 'mode' | 'value'> & {\n  /** Выбранный период */\n  value: Date[] | RangeCalendarValue | undefined;\n};\n\nexport type CalendarProps = {\n  /** Выбранная дата */\n  value: CalendarValue | undefined;\n  /** Обработчик смены даты */\n  onChange: (newValue: CalendarValue) => void;\n} & Omit<BaseCalendarProps, 'mode' | 'value' | 'onChange' | 'freezeRange'>;\n\nexport type CalendarContextProps = {\n  years: DropdownItem[];\n  months: DropdownItem[];\n  weekDays: CalendarDay[];\n  hoverDate: Date | undefined;\n  setHoverDate: (newHoverDate: Date | undefined) => void;\n} & Omit<BaseCalendarProps, 'components'> &\n  Required<Pick<BaseCalendarProps, 'value' | 'viewDate' | 'onChangeViewDate' | 'locale' | 'weekStartsOn' | 'blocks'>>;\n\n/** Перегружаемые компоненты */\nexport type CalendarComponents = {\n  /** Дата */\n  day?: React.FC<DayProps>;\n\n  /** Неделя\n   *\n   * Использовать CalendarContext\n   */\n  week?: React.FC;\n\n  /** Заголовок\n   *\n   * Использовать CalendarContext\n   */\n  header?: React.FC;\n};\n","import {CalendarFreezeRange, CalendarMode} from 'Calendar/types';\n\nimport type {CalendarContextProps, BaseCalendarValue} from 'Calendar/types';\n\nexport const getNewRange = (date: Date, context: CalendarContextProps): BaseCalendarValue => {\n  const {\n    mode,\n    freezeRange,\n    value: [rangeStart, rangeEnd],\n  } = context;\n\n  if (mode === CalendarMode.Single) {\n    return [date, undefined];\n  }\n\n  if (freezeRange === CalendarFreezeRange.Start && rangeStart) {\n    return [rangeStart, date < rangeStart ? undefined : date];\n  }\n\n  if (freezeRange === CalendarFreezeRange.End && rangeEnd) {\n    return [date > rangeEnd ? undefined : date, rangeEnd];\n  }\n\n  if (!rangeStart) {\n    return [date, rangeEnd];\n  }\n\n  if (!rangeEnd) {\n    return date > rangeStart ? [rangeStart, date] : [date, rangeStart];\n  }\n\n  return [date, undefined];\n};\n\nexport const getNewHoverDate = (date: Date, context: CalendarContextProps): Date | undefined => {\n  const {\n    value: [rangeStart, rangeEnd],\n    freezeRange,\n  } = context;\n\n  if (freezeRange === CalendarFreezeRange.Start && rangeStart && date < rangeStart) {\n    return;\n  }\n\n  if (freezeRange === CalendarFreezeRange.End && rangeEnd && date > rangeEnd) {\n    return;\n  }\n\n  return date;\n};\n","import {CalendarMode} from 'Calendar/types';\n\nimport type {CalendarContextProps} from 'Calendar/types';\nimport type {BlockContextProps} from 'Calendar/Block';\n\nimport type {DayProps, RangeDayProps} from './types';\n\ntype GetDayPropsArgs = {\n  context: CalendarContextProps;\n  blockContext: BlockContextProps;\n  currentDateTime: number;\n  date: Date;\n};\n\nconst getRangeDayProps = ({date, context: {mode, value, hoverDate}}: GetDayPropsArgs): RangeDayProps => {\n  const [rangeStart, rangeEnd] = value;\n\n  if (mode === CalendarMode.Single) {\n    return {\n      isSelected: !!rangeStart && rangeStart?.getTime() === date.getTime(),\n      isRangeStart: false,\n      isRangeEnd: false,\n      isRangeIn: false,\n      isRangeHover: false,\n    };\n  }\n\n  const isRangeStart = !!rangeStart && rangeStart.getTime() === date.getTime();\n\n  const isRangeEnd = !!rangeEnd && rangeEnd.getTime() === date.getTime();\n\n  const isRangeIn =\n    !!rangeStart && !!rangeEnd && rangeStart.getTime() < date.getTime() && rangeEnd.getTime() > date.getTime();\n\n  const isRangeHover = (() => {\n    if (!hoverDate || !rangeStart || !!rangeEnd) {\n      return false;\n    }\n\n    if (hoverDate > rangeStart) {\n      return date > rangeStart && date.getTime() <= hoverDate.getTime();\n    }\n\n    return date < rangeStart && date.getTime() >= hoverDate.getTime();\n  })();\n\n  return {\n    isSelected: false,\n    isRangeStart,\n    isRangeEnd,\n    isRangeIn,\n    isRangeHover,\n  };\n};\n\nexport const getDayProps = (args: GetDayPropsArgs): DayProps => {\n  const {\n    date,\n    currentDateTime,\n    blockContext: {viewDate},\n    context: {minDate, maxDate, tooltips, disabledDates, blocks},\n  } = args;\n\n  const isViewMonth = viewDate.getMonth() === date.getMonth() && viewDate.getFullYear() === date.getFullYear();\n\n  const isHidden = !isViewMonth && blocks > 1;\n\n  const isToday = currentDateTime === date.getTime();\n\n  const isDisabled = (!!minDate && minDate > date) || (!!maxDate && maxDate < date) || !!disabledDates?.(date);\n\n  const dayProps = {\n    date,\n    isHidden,\n    isViewMonth,\n    isToday,\n    isDisabled,\n\n    ...getRangeDayProps(args),\n  } as DayProps;\n\n  dayProps.tooltipContent = tooltips?.(dayProps);\n\n  return dayProps;\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {getQAAttribute} from 'common';\n\nimport {CalendarMode} from 'Calendar/types';\n\nimport {Tooltip} from 'Tooltip';\n\nimport {getNewHoverDate, getNewRange} from '../utils';\n\nimport type {CalendarContextProps, CalendarProps} from 'Calendar/types';\n\nimport type {DayProps} from './types';\n\nexport * from './utils';\nexport * from './types';\n\nconst Container = styled.div<Omit<DayProps, 'date' | 'tooltipContent'>>`\n  position: relative;\n  display: flex;\n  width: 40px;\n  height: 40px;\n  justify-content: center;\n  align-items: center;\n  user-select: none;\n  cursor: ${props => (props.isDisabled ? 'default' : 'pointer')};\n\n  ::before {\n    content: '';\n    position: absolute;\n    top: 2px;\n    left: 2px;\n    width: 36px;\n    height: 36px;\n    box-sizing: border-box;\n    border-style: solid;\n    border-radius: 4px;\n    border-width: 1px;\n    border-color: ${props => (props.isToday ? theme.colors.accent[90] : 'transparent')};\n  }\n\n  ${({isHidden, isViewMonth, isSelected, isRangeStart, isRangeEnd, isRangeIn, isRangeHover, isDisabled}) => {\n    if (isHidden) {\n      return {\n        visibility: 'hidden',\n        pointerEvents: 'none',\n      };\n    }\n\n    if (isDisabled) {\n      return {\n        color: theme.colors.grey[40],\n      };\n    }\n\n    if (isSelected || (isRangeStart && isRangeEnd)) {\n      return {\n        borderRadius: '4px',\n        color: theme.colors.white,\n        backgroundColor: theme.colors.accent[90],\n      };\n    }\n\n    if (isRangeStart) {\n      return {\n        borderRadius: '4px 0 0 4px',\n        color: theme.colors.white,\n        backgroundColor: theme.colors.accent[90],\n      };\n    }\n\n    if (isRangeEnd) {\n      return {\n        borderRadius: '0 4px 4px 0',\n        color: theme.colors.white,\n        backgroundColor: theme.colors.accent[90],\n      };\n    }\n\n    if (isRangeIn || isRangeHover) {\n      return {\n        color: theme.colors.grey[isViewMonth ? 100 : 60],\n        backgroundColor: theme.colors.accent[10],\n\n        '&:hover': {\n          borderRadius: '4px',\n          backgroundColor: theme.colors.accent[20],\n        },\n      };\n    }\n\n    if (!isViewMonth) {\n      return {\n        color: theme.colors.grey[60],\n\n        '&:hover': {\n          borderRadius: '4px',\n          backgroundColor: theme.colors.accent[20],\n        },\n      };\n    }\n\n    return {\n      backgroundColor: theme.colors.white,\n\n      '&:hover': {\n        borderRadius: '4px',\n        backgroundColor: theme.colors.accent[20],\n      },\n    };\n  }}\n`;\n\nexport const getDayComponent = (context: CalendarContextProps, components: CalendarProps['components'], qa: string) => {\n  if (components?.day) {\n    const Component = components.day;\n\n    return (props: DayProps) => <Component key={props.date.getTime()} {...props} />;\n  }\n\n  const {\n    mode,\n    onChange,\n    hoverDate,\n    setHoverDate,\n    value: [rangeStart, rangetEnd],\n  } = context;\n\n  const hasHover = mode === CalendarMode.Range && (!rangeStart || !rangetEnd);\n\n  const getQA = getQAAttribute(qa);\n\n  return ({date, tooltipContent, ...props}: DayProps) => {\n    const dayValue = date.getDate();\n    const timeValue = date.getTime();\n\n    const events = {\n      onClick: () => {\n        onChange(getNewRange(date, context));\n      },\n\n      onMouseEnter: !hasHover\n        ? undefined\n        : () => {\n            setHoverDate(getNewHoverDate(date, context));\n          },\n\n      onMouseLeave: !hasHover\n        ? undefined\n        : () => {\n            if (timeValue === hoverDate?.getTime()) {\n              setHoverDate(undefined);\n            }\n          },\n    };\n\n    const child = (\n      <Container key={timeValue} data-qa={getQA(dayValue, props)} {...props} {...events}>\n        {dayValue}\n      </Container>\n    );\n\n    if (tooltipContent) {\n      return (\n        <Tooltip key={timeValue} content={tooltipContent}>\n          {child}\n        </Tooltip>\n      );\n    }\n\n    return child;\n  };\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport {startOfMonth, startOfToday, startOfWeek} from 'date-fns';\n\nimport {CalendarContext} from 'Calendar/CalendarContext';\nimport {BlockContext} from 'Calendar/Block';\n\nimport {getDayProps} from './Day';\n\nimport type {DayProps} from './Day';\n\nexport const useDays = () => {\n  const context = useContext(CalendarContext);\n  const blockContext = useContext(BlockContext);\n\n  const {weekStartsOn, blocks} = context;\n  const {viewDate} = blockContext;\n\n  const currentDateTime = startOfToday().getTime();\n\n  const blockStart = startOfWeek(startOfMonth(viewDate), {weekStartsOn});\n\n  const weeks: DayProps[][] = [];\n  const curDay: Date = blockStart;\n\n  for (let weekN = 0; weekN < 6; weekN++) {\n    weeks[weekN] = [];\n\n    for (let weekD = 1; weekD <= 7; weekD++) {\n      weeks[weekN].push(\n        getDayProps({\n          context,\n          blockContext,\n          currentDateTime,\n          date: new Date(curDay.getTime()),\n        })\n      );\n\n      curDay.setDate(curDay.getDate() + 1);\n    }\n\n    if (blocks > 1 && curDay.getMonth() !== viewDate.getMonth()) {\n      break;\n    }\n  }\n\n  return {weeks, context};\n};\n","import styled from '@emotion/styled';\n\nimport {getDayComponent} from './Day';\nimport {useDays} from './hook';\n\nimport type {RequiredQA} from 'common';\nimport type {CalendarProps} from '../types';\nimport type {DayProps} from './Day';\n\nexport * from './utils';\nexport * from './Day';\n\nconst Container = styled.div`\n  position: relative;\n`;\n\nconst Week = styled.div`\n  display: flex;\n  align-items: flex-start;\n`;\n\nexport const Days: React.FC<RequiredQA & Pick<CalendarProps, 'components'>> = ({components, qa}) => {\n  const {weeks, context} = useDays();\n\n  const getWeek = (week: DayProps[], indx: number) => (\n    <Week key={indx}>{week.map(getDayComponent(context, components, qa))}</Week>\n  );\n\n  return <Container data-qa={qa}>{weeks.map(getWeek)}</Container>;\n};\n","'use client';\n\nimport {createContext, useContext} from 'react';\nimport styled from '@emotion/styled';\nimport {addMonths} from 'date-fns';\n\nimport {getQAAttribute} from 'common';\n\nimport {CalendarContext} from '../CalendarContext';\nimport {WeekDays} from '../WeekDays';\nimport {Header} from '../Header';\nimport {Days} from '../Days';\n\nimport type {RequiredQA} from 'common';\nimport type {CalendarProps} from '../types';\n\nexport type BlockContextProps = {\n  viewDate: Date;\n  blockNumber: number;\n  isSingle: boolean;\n  isFirst: boolean;\n  isLast: boolean;\n};\n\nexport const BlockContext = createContext<BlockContextProps>({\n  blockNumber: 0,\n  viewDate: new Date(),\n  isSingle: true,\n  isFirst: true,\n  isLast: true,\n});\n\nconst Container = styled.div`\n  position: relative;\n  padding: 16px;\n`;\n\ntype BlockProps = {\n  blockNumber: number;\n} & RequiredQA &\n  Pick<CalendarProps, 'components'>;\n\nexport const Block: React.FC<BlockProps> = ({qa, blockNumber, components}) => {\n  const getQA = getQAAttribute(qa);\n  const context = useContext(CalendarContext);\n  const viewDate = blockNumber > 0 ? addMonths(context.viewDate, blockNumber) : context.viewDate;\n\n  const isSingle = context.blocks === 1;\n  const isFirst = blockNumber === 0;\n  const isLast = blockNumber === context.blocks - 1;\n\n  const blockContext: BlockContextProps = {\n    blockNumber,\n    viewDate,\n    isSingle,\n    isFirst,\n    isLast,\n  };\n\n  const HeaderComponent = components?.header ?? Header;\n  const WeekComponent = components?.week ?? WeekDays;\n\n  return (\n    <Container data-qa={getQA()}>\n      <BlockContext.Provider value={blockContext}>\n        <HeaderComponent qa={getQA('header')} />\n        <WeekComponent qa={getQA('week')} />\n        <Days qa={getQA('days')} components={components} />\n      </BlockContext.Provider>\n    </Container>\n  );\n};\n","import {useMemo, useState} from 'react';\n\nimport {endOfMonth, isSameDay, setMonth, startOfMonth} from 'date-fns';\nimport {ru} from 'date-fns/locale';\n\nimport {startOfDay, useUpdateEffect} from 'common';\n\nimport type {Day, Month} from 'date-fns';\n\nimport type {DropdownItem} from './Dropdown/types';\nimport type {CalendarContextProps, BaseCalendarProps} from './types';\n\nexport const useCalendar = (props: BaseCalendarProps) => {\n  const {components, ...rest} = props;\n\n  const locale = props.locale ?? ru;\n\n  const value = props.value ?? [undefined, undefined];\n\n  const blocks = props.blocks ?? 1;\n\n  const [hoverDate, setHoverDate] = useState<Date | undefined>();\n\n  const [minDate, maxDate, getViewDate] = useMemo(() => {\n    const minDate = props.minDate ? startOfDay(props.minDate) : undefined;\n    const maxDate = props.maxDate ? startOfDay(props.maxDate) : undefined;\n\n    const getViewDate = (newViewDate: Date): Date => {\n      newViewDate = startOfDay(newViewDate);\n\n      if (minDate && newViewDate < minDate) {\n        return minDate;\n      }\n\n      if (maxDate && newViewDate > maxDate) {\n        return maxDate;\n      }\n\n      return newViewDate;\n    };\n\n    return [minDate, maxDate, getViewDate];\n  }, [props.minDate, props.maxDate]);\n\n  const [viewDate, setViewDate] = useState<Date>(() => getViewDate(props.viewDate ?? new Date()));\n\n  const onChangeViewDate: BaseCalendarProps['onChangeViewDate'] = newViewDate => {\n    setViewDate(newViewDate);\n    props.onChangeViewDate?.(newViewDate);\n  };\n\n  useUpdateEffect(() => {\n    if (!props.viewDate || isSameDay(props.viewDate, viewDate)) {\n      return;\n    }\n\n    setViewDate(getViewDate(props.viewDate));\n  }, [props.viewDate, minDate, maxDate]);\n\n  const weekStartsOn = props.weekStartsOn ?? 1;\n\n  const [years, months, weekDays] = useMemo(() => {\n    const currentYear = viewDate.getFullYear();\n    const minYear = minDate ? minDate.getFullYear() : currentYear - 5;\n    const maxYear = maxDate ? maxDate.getFullYear() : currentYear + 10;\n\n    const years: DropdownItem[] = [];\n    const months: DropdownItem[] = [];\n\n    for (let i = minYear; i <= maxYear; i++) {\n      years.push({\n        name: String(i),\n        value: i,\n        disabled: false,\n      });\n    }\n\n    for (let i = 0; i < 12; i++) {\n      let disabled = false;\n\n      if (minDate || maxDate) {\n        const monthViewDate = setMonth(viewDate, i);\n\n        disabled = !!minDate && minDate.getTime() >= endOfMonth(monthViewDate).getTime();\n\n        disabled ||= !!maxDate && maxDate.getTime() <= startOfMonth(monthViewDate).getTime();\n      }\n\n      months.push({\n        disabled,\n        name: locale.localize.month(i as Month),\n        value: i,\n      });\n    }\n\n    const weekDays: Day[] = [0, 1, 2, 3, 4, 5, 6];\n\n    weekDays.push(...weekDays.splice(0, weekStartsOn));\n\n    return [years, months, weekDays];\n  }, [locale.localize, weekStartsOn, minDate, maxDate, viewDate]);\n\n  const context: CalendarContextProps = {\n    ...rest,\n    value,\n    viewDate,\n    minDate,\n    maxDate,\n    years,\n    weekDays,\n    months,\n    weekStartsOn,\n    locale,\n    blocks,\n    hoverDate,\n    setHoverDate,\n    onChangeViewDate,\n  };\n\n  return {context, components};\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {startOfDay} from 'common';\n\nimport {CalendarContext} from './CalendarContext';\nimport {Block} from './Block';\n\nimport {CalendarMode} from './types';\nimport {useCalendar} from './hook';\n\nimport type {BaseCalendarProps, CalendarProps, RangeCalendarProps, RangeCalendarValue} from './types';\nimport type {RequiredQA} from 'common';\nimport type {ReactNode} from 'react';\n\nconst Container = styled.div`\n  display: flex;\n  align-items: flex-start;\n  background: ${theme.colors.white};\n  box-shadow: ${theme.shadows.medium};\n  border-radius: 8px;\n  box-sizing: border-box;\n  width: fit-content;\n\n  ${theme.typography.p2}\n`;\n\nconst CalendarComponent: React.FC<RequiredQA & Pick<BaseCalendarProps, 'className' | 'components'>> = props => {\n  const {qa, className, components} = props;\n  const {blocks} = useContext(CalendarContext);\n\n  const blockComponents: ReactNode[] = [];\n\n  for (let blockNumber = 0; blockNumber < blocks; blockNumber++) {\n    blockComponents.push(\n      <Block key={blockNumber} qa={`${qa}-block-${blockNumber}`} blockNumber={blockNumber} components={components} />\n    );\n  }\n\n  return (\n    <Container data-qa={qa} className={className}>\n      {blockComponents}\n    </Container>\n  );\n};\n\nexport const BaseCalendar: React.FC<BaseCalendarProps> = ({qa = 'calendar', className, ...props}) => {\n  const {context, components} = useCalendar(props);\n\n  return (\n    <CalendarContext.Provider value={context}>\n      <CalendarComponent qa={qa} className={className} components={components} />\n    </CalendarContext.Provider>\n  );\n};\n\nexport const RangeCalendar: React.FC<RangeCalendarProps> = props => {\n  const [rangeStart, rangeEnd] = props.value ?? [];\n\n  const value: RangeCalendarValue = [\n    rangeStart ? startOfDay(rangeStart) : undefined,\n    rangeEnd ? startOfDay(rangeEnd) : undefined,\n  ];\n\n  return <BaseCalendar mode={CalendarMode.Range} {...props} value={value} />;\n};\n\nexport const Calendar: React.FC<CalendarProps> = ({value, onChange, ...props}) => {\n  const override = {\n    mode: CalendarMode.Single,\n\n    value: [value ? startOfDay(value) : undefined, undefined],\n\n    onChange: newValue => onChange(newValue[0]),\n  } as BaseCalendarProps;\n\n  return <BaseCalendar {...props} {...override} />;\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {CSSProperties} from 'react';\nimport type {CaptionProps} from './types';\n\nconst getStyle = (props: CaptionProps): CSSProperties => ({\n  position: props.absolute ? 'absolute' : undefined,\n  color: props.error ? theme.colors.additional.red[80] : theme.colors.grey[60],\n});\n\nconst Container = styled.div`\n  padding: 4px 0;\n  width: 100%;\n  word-break: break-all;\n\n  ${theme.typography.p3}\n`;\n\nexport const Caption: React.FC<CaptionProps> = ({children, className, ...style}) => {\n  if (!children) {\n    return null;\n  }\n\n  return (\n    <Container className={className} style={getStyle(style)}>\n      {children}\n    </Container>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {DoneIcon, RemoveIcon} from 'icons';\n\nimport type {KeyboardEventHandler, ReactNode, RefObject} from 'react';\n\nimport type {CheckboxStyles} from '../types';\n\nconst Container = styled.div<CheckboxStyles>`\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 16px;\n  height: 16px;\n  border-radius: 2px;\n  color: ${theme.colors.white};\n  border: 1px solid ${theme.colors.grey[30]};\n  cursor: pointer;\n\n  :focus-visible::after {\n    content: '';\n    display: block;\n    position: absolute;\n    box-sizing: border-box;\n    top: -2px;\n    left: -2px;\n    width: calc(100% + 4px);\n    height: calc(100% + 4px);\n    border-radius: 4px;\n    box-shadow: 0px 0px 3px 2px ${theme.colors.accent[70]};\n  }\n\n  ${({hasLabel, checked, error, readOnly, disabled}) => {\n    const styles = {\n      margin: hasLabel ? '2px 0 0' : undefined,\n    };\n\n    if (error) {\n      return {\n        ...styles,\n        borderColor: theme.colors.red[80],\n        color: theme.colors.red[80],\n        cursor: readOnly || disabled ? 'default' : 'pointer',\n      };\n    }\n\n    if (readOnly) {\n      return {\n        ...styles,\n        backgroundColor: 'transparent',\n        borderStyle: 'dashed',\n        borderColor: theme.colors.grey[30],\n        color: theme.colors.grey[80],\n        cursor: 'default',\n      };\n    }\n\n    if (disabled) {\n      if (checked) {\n        return {\n          ...styles,\n          backgroundColor: theme.colors.accent[20],\n          borderColor: theme.colors.accent[20],\n          cursor: 'default',\n        };\n      }\n\n      return {\n        ...styles,\n        backgroundColor: 'transparent',\n        borderColor: theme.colors.grey[20],\n        cursor: 'default',\n      };\n    }\n\n    if (checked) {\n      return {\n        ...styles,\n        backgroundColor: theme.colors.accent[90],\n        borderColor: theme.colors.accent[90],\n\n        ':hover': {\n          backgroundColor: theme.colors.accent[80],\n        },\n      };\n    }\n\n    return styles;\n  }}\n`;\n\nexport const Icon: React.FC<CheckboxStyles & {inputRef: RefObject<HTMLInputElement>}> = ({inputRef, ...props}) => {\n  let children: ReactNode = null;\n\n  switch (props.checked) {\n    case 'halfOn':\n      children = <RemoveIcon size={SizeTokenValue.XSmall} />;\n      break;\n\n    case true:\n      children = <DoneIcon size={SizeTokenValue.XSmall} />;\n      break;\n  }\n\n  const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n    if (e.code === 'Enter' || e.code === 'NumpadEnter') {\n      inputRef.current?.click();\n    }\n  };\n\n  const containerProps = {\n    tabIndex: props.disabled || props.readOnly ? undefined : 0,\n\n    ...props,\n\n    children,\n    onKeyDown,\n  };\n\n  return <Container {...containerProps} />;\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {MouseEventHandler} from 'react';\n\nimport type {CheckboxProps, CheckboxStyles} from '../types';\n\nconst Container = styled.div<CheckboxStyles>`\n  min-width: 0;\n  word-wrap: break-word;\n  user-select: none;\n  overflow: hidden;\n  text-overflow: ellipsis;\n\n  ${theme.typography.p1compact}\n\n  ${props => {\n    return {\n      whiteSpace: props.whiteSpace,\n      color: theme.colors.grey[props.disabled ? 40 : 100],\n    };\n  }}\n`;\n\nexport const Label: React.FC<Pick<CheckboxProps, 'children' | 'label'> & CheckboxStyles> = props => {\n  if (!props.hasLabel) {\n    return null;\n  }\n\n  const {children, label, ...styles} = props;\n\n  const onClick: MouseEventHandler<HTMLDivElement> = e => {\n    if (!(e.target instanceof Element)) {\n      return;\n    }\n\n    if (['a', 'button'].includes(e.target.nodeName)) {\n      e.stopPropagation();\n      return;\n    }\n  };\n\n  return (\n    <Container onClickCapture={onClick} {...styles}>\n      {children ?? label}\n    </Container>\n  );\n};\n","import {forwardRef, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {Icon} from './Icon';\nimport {Label} from './Label';\n\nimport type {CheckboxProps, CheckboxStyles} from './types';\n\nconst Container = styled.label`\n  position: relative;\n  display: inline-block;\n  vertical-align: top;\n`;\n\nconst Content = styled.div`\n  display: flex;\n  align-items: flex-start;\n  gap: 8px;\n`;\n\nconst Input = styled.input`\n  position: absolute;\n  visibility: hidden;\n  left: 0;\n  top: 0;\n  width: 0;\n  height: 0;\n  padding: 0;\n`;\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>((props, ref) => {\n  const {\n    startAdornment,\n    children,\n    label,\n    error,\n    checked,\n    disabled,\n    readOnly,\n    whiteSpace,\n    className,\n\n    qa = 'checkbox',\n    ...rest\n  } = props;\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const styles: CheckboxStyles = {\n    checked,\n    readOnly,\n    error,\n    disabled,\n    whiteSpace,\n\n    hasLabel: !!label || !!children,\n  };\n\n  const inputProps = {\n    ...rest,\n\n    readOnly,\n    error,\n    disabled,\n    type: 'checkbox',\n    checked: checked === true,\n\n    onChange: !readOnly && !disabled ? props.onChange : undefined,\n\n    'data-qa': qa,\n  };\n\n  const containerProps = {\n    readOnly,\n    error,\n    disabled,\n    className,\n\n    'data-qa': `${qa}-container`,\n  };\n\n  const iconProps = {...styles, inputRef};\n\n  const labelProps = {\n    ...styles,\n\n    children,\n    label,\n  };\n\n  return (\n    <Container ref={ref} {...containerProps}>\n      <Input ref={inputRef} {...inputProps} />\n      <Content>\n        {startAdornment}\n        <Icon {...iconProps} />\n        <Label {...labelProps} />\n      </Content>\n    </Container>\n  );\n});\n","import type {MouseEventHandler} from 'react';\n\nimport type {CheckboxProps} from 'Checkbox/types';\n\nimport type {CheckboxTreeOption, CheckboxTreeOptionValue, CheckboxTreeProps} from '../types';\n\nexport type ItemProps = {\n  option: CheckboxTreeOption;\n  value: CheckboxTreeOptionValue[];\n  depth: number;\n  hasChildsInDepth: boolean;\n} & Required<Pick<CheckboxTreeProps, 'onChange' | 'opened' | 'toggleOpened'>>;\n\nconst getValues = (options: CheckboxTreeOption[], enabledOnly: boolean): CheckboxTreeOptionValue[] => {\n  const traverse = (option: CheckboxTreeOption) => {\n    if (enabledOnly && (option.disabled || option.readOnly)) {\n      return [];\n    }\n\n    return option.childs ? [option.value, ...option.childs.flatMap(traverse)] : [option.value];\n  };\n\n  return options.flatMap(traverse);\n};\n\nexport const useParentItem = (props: ItemProps) => {\n  const {option, opened, toggleOpened, value, depth} = props;\n  const {childs = [], ...optionProps} = option;\n\n  const checked = ((): CheckboxProps['checked'] => {\n    if (value.includes(option.value)) {\n      return true;\n    }\n\n    const childValues = getValues(childs, false);\n    const isAnyChildChecked = value.findIndex(value => childValues.includes(value)) !== -1;\n\n    return isAnyChildChecked ? 'halfOn' : false;\n  })();\n\n  const isOpen = opened.includes(option.value);\n\n  const hasChildsInDepth = childs.findIndex(item => !!item.childs?.length) !== -1;\n\n  const onToggle: MouseEventHandler = e => {\n    e.stopPropagation();\n    e.preventDefault();\n    toggleOpened(option.value);\n  };\n\n  const onChange: CheckboxProps['onChange'] = e => {\n    const childValues = getValues(childs, false);\n\n    let newValue: CheckboxTreeOptionValue[] = [];\n\n    if (checked) {\n      newValue = value.filter(value => value !== option.value && !childValues.includes(value));\n    } else {\n      const childEnabledValues = getValues(childs, true);\n\n      newValue = [...value, ...childEnabledValues];\n\n      if (childValues.length === childEnabledValues.length) {\n        newValue.push(option.value);\n      }\n    }\n\n    props.onChange(newValue, option, e);\n  };\n\n  const onOptionChange: ItemProps['onChange'] = (newValue, targetOption, e) => {\n    const newValueExceptThis = newValue.filter(value => value !== option.value);\n\n    const allChildsChecked = getValues(childs, false).findIndex(value => !newValue.includes(value)) === -1;\n\n    const resultValues = allChildsChecked ? [...newValueExceptThis, option.value] : newValueExceptThis;\n\n    props.onChange(resultValues, targetOption, e);\n  };\n\n  const itemProps = {\n    value,\n    opened,\n    toggleOpened,\n    hasChildsInDepth,\n    onChange: onOptionChange,\n    depth: depth + 1,\n  };\n\n  const checkboxProps = {...optionProps, checked, onChange};\n\n  return {\n    option,\n    childs,\n    isOpen,\n    itemProps,\n    checkboxProps,\n    onToggle,\n    depth,\n  };\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {ChevronDownIcon, ChevronRightIcon} from 'icons';\n\nimport {Checkbox} from 'Checkbox';\n\nimport {useParentItem} from './hook';\n\nimport type {CheckboxProps} from 'Checkbox';\n\nimport type {ItemProps} from './hook';\n\nconst Container = styled.div`\n  mark {\n    color: ${theme.colors.accent[80]};\n    background-color: transparent;\n  }\n`;\n\nconst CheckboxContainer = styled.div<Pick<ItemProps, 'depth'>>`\n  label {\n    display: block;\n    padding: 6px 12px;\n    padding-left: ${props => props.depth * 24 + 12}px;\n  }\n`;\n\nconst Button = styled.button`\n  width: 16px;\n  height: 20px;\n  padding: 0;\n  flex-shrink: 0;\n  box-sizing: border-box;\n  outline: none;\n  border: 0;\n  background: transparent;\n  line-height: 0;\n  cursor: pointer;\n\n  color: ${theme.colors.grey[60]};\n\n  :hover {\n    color: ${theme.colors.grey[80]};\n  }\n`;\n\nconst ButtonPlaceholder = styled.div`\n  width: 16px;\n  flex-shrink: 0;\n`;\n\nconst ParentItem: React.FC<ItemProps> = props => {\n  const {disabled, readOnly, qa = 'checkbox'} = props.option;\n  const {option, childs, isOpen, itemProps, checkboxProps, onToggle, depth} = useParentItem(props);\n\n  const items =\n    isOpen &&\n    childs.map(child => (\n      <Item key={`${option.value}-${child.value}`} option={{disabled, readOnly, ...child}} {...itemProps} />\n    ));\n\n  const Icon = isOpen ? ChevronDownIcon : ChevronRightIcon;\n\n  const startAdornment = (\n    <Button type=\"button\" data-qa={`${qa}-toggle`} onClickCapture={onToggle}>\n      <Icon size={SizeTokenValue.Small} />\n    </Button>\n  );\n\n  return (\n    <Container>\n      <CheckboxContainer depth={depth}>\n        <Checkbox {...checkboxProps} startAdornment={startAdornment} />\n      </CheckboxContainer>\n\n      {items}\n    </Container>\n  );\n};\n\nexport const Item: React.FC<ItemProps> = props => {\n  if (props.option.childs?.length) {\n    return <ParentItem {...props} />;\n  }\n\n  const {option, value, depth, hasChildsInDepth} = props;\n\n  const checked = value.includes(option.value);\n\n  const onChange: CheckboxProps['onChange'] = e => {\n    const newValues = checked ? value.filter(value => value !== option.value) : [...value, option.value];\n\n    props.onChange(newValues, option, e);\n  };\n\n  const startAdornment = hasChildsInDepth || depth > 0 ? <ButtonPlaceholder /> : undefined;\n\n  const optionProps = {...option, checked, onChange, startAdornment};\n\n  return (\n    <Container>\n      <CheckboxContainer depth={depth}>\n        <Checkbox {...optionProps} />\n      </CheckboxContainer>\n    </Container>\n  );\n};\n","import {forwardRef, useState} from 'react';\n\nimport {Item} from './Item';\n\nimport type {CheckboxTreeOptionValue, CheckboxTreeProps} from './types';\n\nexport const CheckboxTree = forwardRef<HTMLDivElement, CheckboxTreeProps>((props, ref) => {\n  const {options, disabled, readOnly, name, onChange, className, value = [], qa = 'checkbox-tree'} = props;\n\n  const [openedValue, toggleOpenedValue] = useState<CheckboxTreeOptionValue[]>([]);\n\n  let toggleOpened = props.toggleOpened;\n\n  toggleOpened ??= (toggleValue: CheckboxTreeOptionValue) => {\n    const newToggled = openedValue.includes(toggleValue)\n      ? openedValue.filter(item => item !== toggleValue)\n      : [...openedValue, toggleValue];\n\n    toggleOpenedValue(newToggled);\n  };\n\n  const hasChildsInDepth = options.findIndex(option => !!option.childs?.length) !== -1;\n\n  const itemProps = {\n    value,\n    onChange,\n    toggleOpened,\n    hasChildsInDepth,\n\n    opened: props.opened ?? openedValue,\n    depth: 0,\n  };\n\n  const child = options.map(option => (\n    <Item key={option.value} option={{disabled, readOnly, name, ...option}} {...itemProps} />\n  ));\n\n  return (\n    <div ref={ref} data-qa={qa} className={className}>\n      {child}\n    </div>\n  );\n});\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {CloseIcon} from 'icons';\n\nimport type {MouseEventHandler} from 'react';\n\nimport type {ChipProps} from '../types';\n\nexport const Button = styled.button`\n  flex-shrink: 0;\n  padding: 0;\n  border: 0;\n  outline: none;\n  background: none;\n  cursor: pointer;\n  border-radius: 4px;\n  line-height: 0;\n  color: ${theme.colors.grey[60]};\n\n  :hover {\n    color: ${theme.colors.grey[80]};\n  }\n\n  :active {\n    color: ${theme.colors.grey[60]};\n  }\n`;\n\nexport const EndAdornment: React.FC<ChipProps> = props => {\n  const {onDelete, disabled, endAdornment = null} = props;\n\n  if (onDelete && !disabled) {\n    const onClick: MouseEventHandler = e => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      onDelete();\n    };\n\n    return (\n      <>\n        {endAdornment}\n        <Button type=\"button\" onClickCapture={onClick}>\n          <CloseIcon size={SizeTokenValue.Small} />\n        </Button>\n      </>\n    );\n  }\n\n  return endAdornment;\n};\n","import styled from '@emotion/styled';\n\nimport type {ChipProps} from '../types';\n\nconst Container = styled.div<Pick<ChipProps, 'whiteSpace' | 'maxWidth'>>(({maxWidth, whiteSpace}) => ({\n  maxWidth,\n  whiteSpace,\n  userSelect: 'none',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n}));\n\nexport const Content: React.FC<ChipProps> = ({children, label, whiteSpace, maxWidth, maxLength, maxLengthFunc}) => {\n  if (!label) {\n    return children ?? null;\n  }\n\n  if (maxLength && label.length > maxLength) {\n    label = maxLengthFunc?.(label) ?? `${label.slice(0, maxLength - 2)}...`;\n  }\n\n  return <Container {...{whiteSpace, maxWidth}}>{label}</Container>;\n};\n","import {Placement} from 'common';\nimport {Tooltip as BaseTooltip} from 'Tooltip';\n\nimport type {ReactElement} from 'react';\n\nimport type {ChipProps} from '../types';\n\ntype ChipTooltipProps = {children: ReactElement} & ChipProps;\n\nexport const Tooltip: React.FC<ChipTooltipProps> = props => {\n  const {children, label, maxLength} = props;\n\n  let content = props.tooltip;\n\n  if (!content && label && maxLength && label.length > maxLength) {\n    content = label;\n  }\n\n  if (!content) {\n    return children;\n  }\n\n  return (\n    <BaseTooltip placement={Placement.Bottom} content={content}>\n      {children}\n    </BaseTooltip>\n  );\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {SizeTokenValue} from 'common';\n\nimport type {AnchorHTMLAttributes, HTMLAttributes, ReactNode} from 'react';\nimport type {CSSObject} from '@emotion/react';\n\nimport type {PropsWithChildren, QA} from 'common';\nimport type {TooltipProps} from 'Tooltip';\n\nexport enum ChipVariant {\n  Outlined = 'outlined',\n  Filled = 'filled',\n}\n\nexport type ChipStyles = {\n  /** Размер */\n  size: SizeTokenValue;\n  /** Вариант */\n  variant: ChipVariant;\n\n  /** Отключен */\n  disabled?: boolean;\n  /** Выбран */\n  checked?: boolean;\n  /** С ошибкой */\n  error?: boolean;\n  /** Показывать курсор pointer */\n  isButton?: boolean;\n};\n\nexport type ChipProps = {\n  /** Label */\n  label?: string;\n\n  /** Иконка | Контент слева */\n  startAdornment?: ReactNode;\n  /** Иконка | Контент справа */\n  endAdornment?: ReactNode;\n\n  /** Всплывающая подсказка */\n  tooltip?: TooltipProps['content'];\n\n  /** Обработчик удаления. Показывает крестик */\n  onDelete?: () => void;\n\n  /** Максимальная длинна label.\n   *\n   * Показывает tooltip при превышении */\n  maxLength?: number;\n  /** Обработчик длинны label */\n  maxLengthFunc?: (label: string) => string;\n} & Partial<Omit<ChipStyles, 'isButton'>> &\n  QA &\n  PropsWithChildren &\n  Pick<CSSObject, 'whiteSpace' | 'maxWidth'> &\n  Pick<HTMLAttributes<HTMLDivElement>, 'onClick' | 'className'> &\n  Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target'>;\n","import {forwardRef} from 'react';\n\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport {EndAdornment} from './EndAdornment';\nimport {Content} from './Content';\nimport {Tooltip} from './Tooltip';\n\nimport {ChipVariant} from './types';\n\nimport type {ChipProps, ChipStyles} from './types';\nimport type {CSSObject} from '@emotion/styled';\nimport type {ElementType} from 'react';\n\nconst variantBehavior = {\n  [ChipVariant.Filled]: {\n    default: {\n      backgroundColor: theme.colors.grey[20],\n      borderColor: theme.colors.grey[20],\n    },\n\n    hover: {\n      backgroundColor: theme.colors.grey[30],\n      borderColor: theme.colors.grey[30],\n    },\n\n    active: {\n      backgroundColor: theme.colors.accent[20],\n      borderColor: theme.colors.accent[20],\n    },\n\n    error: {\n      backgroundColor: theme.colors.red[20],\n      borderColor: theme.colors.red[20],\n    },\n\n    checked: {\n      backgroundColor: theme.colors.accent[20],\n      borderColor: theme.colors.accent[20],\n    },\n  },\n\n  [ChipVariant.Outlined]: {\n    default: {\n      backgroundColor: 'none',\n      borderColor: theme.colors.grey[30],\n    },\n\n    hover: {\n      backgroundColor: theme.colors.grey[20],\n      borderColor: theme.colors.grey[30],\n    },\n\n    active: {\n      backgroundColor: theme.colors.accent[20],\n      borderColor: theme.colors.accent[30],\n    },\n\n    error: {\n      backgroundColor: 'none',\n      borderColor: theme.colors.red[30],\n    },\n\n    checked: {\n      backgroundColor: theme.colors.accent[20],\n      borderColor: theme.colors.accent[30],\n    },\n  },\n};\n\nconst Container = styled.div<ChipStyles>`\n  display: flex;\n  align-items: flex-start;\n  box-sizing: border-box;\n  gap: 4px;\n  border-radius: 4px;\n  color: ${theme.colors.grey[100]};\n  border-width: 1px;\n  border-style: solid;\n  text-decoration: none;\n\n  :link,\n  :visited {\n    color: ${theme.colors.grey[100]};\n  }\n\n  :hover {\n    ${props => variantBehavior[props.variant].hover}\n  }\n\n  :active {\n    ${props => variantBehavior[props.variant].active}\n  }\n\n  ${theme.typography.p2}\n\n  ${props => {\n    const variantProps = variantBehavior[props.variant];\n    const isSmall = props.size == SizeTokenValue.Small;\n\n    let resultProps: CSSObject = {\n      padding: isSmall ? '2px 6px' : 8,\n      minHeight: isSmall ? 20 : 32,\n    };\n\n    if (props.error) {\n      resultProps = {...resultProps, ...variantProps.error};\n    } else if (props.checked) {\n      resultProps = {...resultProps, ...variantProps.checked};\n    } else {\n      resultProps = {...resultProps, ...variantProps.default};\n    }\n\n    if (props.disabled) {\n      resultProps.cursor = 'not-allowed';\n    } else if (props.isButton) {\n      resultProps.cursor = 'pointer';\n    }\n\n    return resultProps;\n  }}\n`;\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>((props, ref) => {\n  const {\n    startAdornment,\n    onClick,\n    className,\n\n    maxLength = 25,\n    size = SizeTokenValue.Medium,\n    variant = ChipVariant.Filled,\n    qa = 'chip',\n\n    ...rest\n  } = props;\n\n  const newProps = {maxLength, size, variant, ...rest};\n\n  const componentProps = {\n    size,\n    variant,\n    className,\n\n    disabled: props.disabled,\n    checked: props.checked,\n    error: props.error,\n    isButton: !!onClick,\n\n    as: props.href ? ('a' as ElementType) : undefined,\n    href: props.href,\n    target: props.target,\n\n    onClick: props.disabled ? undefined : onClick,\n\n    'data-qa': qa,\n  };\n\n  return (\n    <Tooltip {...newProps}>\n      <Container ref={ref} {...componentProps}>\n        {startAdornment}\n\n        <Content {...newProps} />\n\n        <EndAdornment {...newProps} />\n      </Container>\n    </Tooltip>\n  );\n});\n","import {Caption} from 'Caption';\n\nimport type {InputInternalProps} from '../types';\n\nexport const InputCaption: React.FC<InputInternalProps> = ({error, caption, style}) => {\n  const children = error && typeof error === 'string' ? error : caption;\n\n  const captionProps = {\n    children,\n\n    error: style.isError,\n    absolute: style.isAbsoluteCaption,\n  };\n\n  return <Caption {...captionProps} />;\n};\n","import styled from '@emotion/styled';\n\nimport {Loader} from 'Loader';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {CloseIcon} from 'icons';\n\nimport type {ButtonHTMLAttributes, CSSProperties} from 'react';\nimport type {InputInternalProps, InputStyles} from '../types';\n\ntype InputButtonStyleProps = Pick<InputStyles, 'isSmall' | 'isDisabled'>;\n\nconst inputButtonStyle = (props: InputButtonStyleProps, acc: CSSProperties | undefined): CSSProperties => {\n  const size = props.isSmall ? 16 : 32;\n  const color = theme.colors.grey[props.isDisabled ? 40 : 60];\n  const pointerEvents = props.isDisabled ? 'none' : undefined;\n\n  return {\n    color,\n    pointerEvents,\n    width: size,\n    height: size,\n\n    ...acc,\n  };\n};\n\nconst InputButtonComponent = styled.button`\n  flex-shrink: 0;\n  padding: 0;\n  margin-right: -4px;\n  border: 0;\n  outline: none;\n  background: none;\n  cursor: pointer;\n  border-radius: 4px;\n  line-height: 0;\n\n  :hover {\n    background-color: ${theme.colors.grey[20]};\n  }\n\n  :active {\n    background-color: ${theme.colors.grey[30]};\n  }\n`;\n\nexport const InputButton: React.FC<InputButtonStyleProps & ButtonHTMLAttributes<HTMLButtonElement>> = props => {\n  const {isSmall, isDisabled, style, ...rest} = props;\n\n  return <InputButtonComponent style={inputButtonStyle({isSmall, isDisabled}, style)} {...rest} />;\n};\n\nexport const EndAdornment: React.FC<InputInternalProps> = props => {\n  const {\n    onClearClick,\n    endAdornment = null,\n    style: {isDisabled, isReadOnly, isSmall, isLoading, isFilled},\n  } = props;\n\n  const iconSize = isSmall ? SizeTokenValue.Small : SizeTokenValue.Medium;\n\n  if (isLoading) {\n    return (\n      <>\n        <Loader size={iconSize} />\n        {endAdornment}\n      </>\n    );\n  }\n\n  if (!isDisabled && !isReadOnly && isFilled && onClearClick) {\n    return (\n      <>\n        <InputButton type=\"button\" onClick={onClearClick} isSmall={isSmall}>\n          <CloseIcon size={iconSize} />\n        </InputButton>\n        {endAdornment}\n      </>\n    );\n  }\n\n  return endAdornment;\n};\n","import {useEffect, useRef, useState} from 'react';\nimport styled from '@emotion/styled';\nimport {MaskInput} from 'maska';\n\nimport theme from 'theme';\nimport {useRefMerge} from 'common';\nimport {Tooltip} from 'Tooltip';\n\nimport type {CSSProperties} from 'react';\nimport type {InputInternalProps, InputStyles} from '../types';\n\nexport const inputStyle = (style: InputStyles, acc: CSSProperties | undefined) => {\n  const {isSmall, isFocused, isFilled, isDisabled, isLabeled, isReadOnly} = style;\n\n  return {\n    minHeight: isSmall ? 32 : 48,\n    paddingTop: isFilled && isLabeled && !isSmall ? 14 : 0,\n    textOverflow: !isFocused ? 'ellipsis' : undefined,\n    cursor: isReadOnly ? 'default' : undefined,\n    color: theme.colors.grey[isDisabled ? 40 : 100],\n\n    ...acc,\n  };\n};\n\nexport const FieldComponent = styled.input`\n  position: relative;\n  width: 100%;\n  box-sizing: border-box;\n  padding: 0;\n  margin: 0;\n  outline: none;\n  border: none;\n  background-color: transparent;\n  vertical-align: top;\n  caret-color: ${theme.colors.accent[90]};\n\n  ${theme.typography.p1}\n\n  ::selection {\n    background-color: ${theme.colors.accent[10]};\n  }\n\n  [type='number'] {\n    -webkit-appearance: none;\n    -moz-appearance: textfield;\n    appearance: textfield;\n\n    ::-webkit-inner-spin-button {\n      -webkit-appearance: none;\n    }\n  }\n\n  :is(:-webkit-autofill, :autofill) {\n    -webkit-box-shadow: inset 0 0 0 100px var(--input-bg-color, #fff);\n    -webkit-text-fill-color: ${theme.colors.grey[100]};\n\n    ~ [data-label] {\n      -webkit-box-shadow: inset 0 0 0 100px var(--input-bg-color, #fff);\n      -webkit-text-fill-color: ${theme.colors.grey[100]};\n      transition: none;\n    }\n  }\n`;\n\nconst placeholderStyle = ({isSmall, isFilled, isFocused, isLabeled}: InputStyles) => ({\n  display: isFocused || isFilled ? 'flex' : 'none',\n  paddingTop: isLabeled && isFilled && !isSmall ? 8 : 0,\n  height: isSmall ? 32 : 48,\n  lineHeight: isSmall ? '32px' : '48px',\n});\n\nconst Placeholder = styled.div`\n  position: absolute;\n  left: 0;\n  top: 0;\n  pointer-events: none;\n  user-select: none;\n  background-color: transparent;\n  white-space: pre-wrap;\n  color: ${theme.colors.grey[60]};\n  box-sizing: border-box;\n\n  ${theme.typography.p1}\n\n  div:first-of-type {\n    visibility: hidden;\n  }\n`;\n\nconst MaskedField: React.FC<InputInternalProps> = props => {\n  const {mask, value, style, inputProps, qa} = props;\n\n  const ref = useRefMerge<HTMLInputElement>(inputProps?.ref);\n  const maskaRef = useRef<MaskInput>();\n\n  useEffect(() => {\n    if (!mask?.key || !maskaRef.current) {\n      return;\n    }\n\n    maskaRef.current.update(mask);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [mask?.key]);\n\n  useEffect(() => {\n    if (!ref.current || maskaRef.current?.items.has(ref.current)) {\n      return;\n    }\n\n    if (maskaRef.current) {\n      maskaRef.current.updateValue(ref.current);\n    } else {\n      maskaRef.current = new MaskInput(ref.current, {eager: true, ...mask});\n    }\n\n    /** Проблема с отсутствием в items */\n    // return () => { maskaRef.current?.destroy(); };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const placeHolder = typeof mask?.mask === 'string' && (\n    <Placeholder style={placeholderStyle(style)}>\n      <div>{value}</div>\n      <div>{mask.mask.substring(value?.length ?? 0)}</div>\n    </Placeholder>\n  );\n\n  const componentProps = {\n    ...inputProps,\n\n    type: props.type,\n    onInput: props.onChange,\n    style: inputStyle(style, inputProps?.style),\n\n    'data-qa': qa,\n  };\n\n  return (\n    <>\n      <FieldComponent ref={ref} {...componentProps} />\n      {placeHolder}\n    </>\n  );\n};\n\nconst BasicField: React.FC<InputInternalProps> = props => {\n  const {value, style, inputProps, qa} = props;\n\n  const [isOverflown, setIsOverflown] = useState<boolean>(false);\n  const ref = useRef<HTMLInputElement>(null);\n\n  const componentProps = {\n    ...inputProps,\n\n    style: inputStyle(style, inputProps?.style),\n\n    'data-qa': qa,\n  };\n\n  const child = <FieldComponent ref={ref} {...componentProps} />;\n\n  useEffect(() => {\n    if (!style.isOverflowTooltip || !ref.current) {\n      return;\n    }\n\n    setIsOverflown(ref.current.scrollWidth > ref.current.clientWidth);\n  }, [value, style.isOverflowTooltip]);\n\n  if (!style.isOverflowTooltip) {\n    return child;\n  }\n\n  const noTooltip = style.isFocused || !isOverflown ? false : undefined;\n\n  return (\n    <Tooltip isPortal isOpen={noTooltip} content={value}>\n      {child}\n    </Tooltip>\n  );\n};\n\nexport const Field: React.FC<InputInternalProps> = props => {\n  const Component = props.style.isMasked ? MaskedField : BasicField;\n\n  return <Component {...props} />;\n};\n","export const Asterisk: React.FC = () => (\n  <svg width=\"4\" height=\"4\" viewBox=\"0 0 4 4\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M3.90389 2.51545L2.96059 2L3.90389 1.48455C3.99573 1.43436 4.02723 1.32309 3.97421 1.23618L3.68603 0.763818C3.63301 0.676909 3.51562 0.647091 3.4236 0.697273L2.4803 1.21273V0.181818C2.4803 0.0814546 2.39423 0 2.28818 0H1.71182C1.60577 0 1.5197 0.0814546 1.5197 0.181818V1.21273L0.576402 0.697273C0.484377 0.647091 0.366992 0.676909 0.313968 0.763818L0.0257898 1.23618C-0.0272349 1.32309 0.00408043 1.43436 0.0961052 1.48455L1.03941 2L0.0961052 2.51545C0.00427255 2.56564 -0.0272349 2.67691 0.0257898 2.76382L0.313968 3.23618C0.366992 3.32309 0.484569 3.35291 0.576402 3.30273L1.5197 2.78727V3.81818C1.5197 3.91855 1.60577 4 1.71182 4H2.28818C2.39423 4 2.4803 3.91855 2.4803 3.81818V2.78727L3.4236 3.30273C3.51543 3.35291 3.63301 3.32309 3.68603 3.23618L3.97421 2.76382C4.02723 2.67691 3.99592 2.56564 3.90389 2.51545Z\"\n      fill=\"currentColor\"\n    />\n  </svg>\n);\n","import styled from '@emotion/styled';\n\nimport {Asterisk} from '../Asterisk';\n\nimport type {InputInternalProps, InputStyles} from '../types';\n\nconst getStyle = ({isSmall, isFilled, isFocused, isMasked}: InputStyles) => {\n  if (isFilled) {\n    return {\n      top: 4,\n      height: 16,\n      fontSize: 12,\n      letterSpacing: '0.08px',\n      display: isSmall ? 'none' : undefined,\n    };\n  }\n\n  if (isFocused && isMasked) {\n    return {\n      display: 'none',\n    };\n  }\n\n  return {\n    top: 0,\n    height: isSmall ? 32 : 48,\n    fontSize: 16,\n    textIndent: 3,\n  };\n};\n\nconst LabelComponent = styled.div`\n  position: absolute;\n  display: flex;\n  align-items: center;\n  user-select: none;\n  pointer-events: none;\n  left: 0;\n  width: 100%;\n  box-sizing: border-box;\n  transition-duration: 0.2s;\n  letter-spacing: 0.12px;\n\n  div {\n    position: relative;\n    max-width: 100%;\n\n    label {\n      display: block;\n      padding-right: 10px;\n      text-overflow: ellipsis;\n      word-break: break-all;\n      white-space: nowrap;\n      overflow: hidden;\n    }\n\n    svg {\n      position: absolute;\n      top: 0;\n      right: 3px;\n    }\n  }\n`;\n\ntype LabelProps = Pick<InputInternalProps, 'error' | 'label' | 'required' | 'style'>;\n\nexport const Label: React.FC<LabelProps> = ({error, label, required, style}) => {\n  if (!label) {\n    return null;\n  }\n\n  if (typeof label === 'function') {\n    return label({...style, error});\n  }\n\n  return (\n    <LabelComponent data-label style={getStyle(style)}>\n      <div>\n        <label>{label}</label>\n        {required && <Asterisk />}\n      </div>\n    </LabelComponent>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport {Field} from '../Field';\nimport {Label} from '../Label';\n\nimport type {InputInternalProps} from '../types';\n\nconst Container = styled.div`\n  position: relative;\n  flex-grow: 1;\n  height: 100%;\n`;\n\nexport const InputComponent: React.FC<InputInternalProps> = props => (\n  <Container>\n    <Field {...props} />\n    <Label {...props} />\n  </Container>\n);\n","import {forwardRef, useState} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport {InputCaption} from './InputCaption';\nimport {EndAdornment} from './EndAdornment';\n\nimport {InputComponent} from './InputComponent';\n\nimport type {FocusEventHandler} from 'react';\nimport type {InputInternalProps, InputProps, InputStyles} from './types';\n\nconst Container = styled.div`\n  * {\n    ${theme.typography.base}\n  }\n`;\n\nexport const InputContainer = styled.div<InputStyles>`\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  gap: 8px;\n  padding: 0 12px;\n  overflow: hidden;\n  box-sizing: border-box;\n\n  ${({isDisabled}) => {\n    if (isDisabled) {\n      return {\n        color: theme.colors.grey[40],\n      };\n    }\n\n    return {\n      color: theme.colors.grey[60],\n    };\n  }}\n\n  :hover::after {\n    ${({isDisabled, isFocused}) => {\n      if (isDisabled || isFocused) {\n        return;\n      }\n\n      return {\n        borderWidth: 2,\n        borderColor: theme.colors.grey[40],\n      };\n    }}\n  }\n\n  ::after {\n    content: '';\n    position: absolute;\n    display: block;\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n    box-sizing: border-box;\n    border-style: solid;\n    border-radius: 4px;\n    user-select: none;\n    pointer-events: none;\n\n    ${({isError, isDisabled, isFocused, isUnborder}) => {\n      if (isError) {\n        return {\n          borderWidth: 2,\n          borderColor: theme.colors.additional.red[80],\n        };\n      }\n\n      if (isDisabled) {\n        return {\n          borderWidth: 1,\n          borderColor: theme.colors.grey[20],\n        };\n      }\n\n      if (isFocused) {\n        return {\n          borderWidth: 2,\n          borderColor: theme.colors.accent[90],\n        };\n      }\n\n      if (isUnborder) {\n        return {\n          display: 'none',\n        };\n      }\n\n      return {\n        borderWidth: 1,\n        borderColor: theme.colors.grey[30],\n      };\n    }}\n  }\n`;\n\nexport const useInput = (props: InputProps): InputInternalProps => {\n  const [focused, setFocused] = useState<boolean>(false);\n\n  const onFocus: FocusEventHandler<HTMLInputElement> = e => {\n    setFocused(!props.readOnly);\n    props.onFocus?.(e);\n  };\n\n  const onBlur: FocusEventHandler<HTMLInputElement> = e => {\n    setFocused(false);\n    props.onBlur?.(e);\n  };\n\n  return {\n    ...props,\n\n    style: {\n      isDisabled: props.disabled,\n      isReadOnly: props.readOnly,\n      isUnborder: props.unborder,\n      isOverflowTooltip: props.overflowTooltip,\n      isLoading: props.isLoading,\n      isLabeled: !!props.label,\n      isMasked: !!props.mask,\n      isError: !!props.error,\n      isAbsoluteCaption: !!props.absoluteCaption,\n\n      isFocused: props.focused ?? focused,\n      isFilled: props.filled ?? !!props.value,\n      isSmall: props.size === SizeTokenValue.Small,\n    },\n\n    inputProps: {\n      ...props.inputProps,\n\n      name: props.name,\n      value: props.value ?? '',\n      type: props.type,\n      disabled: props.disabled,\n      readOnly: props.readOnly,\n      required: props.required,\n      autoFocus: props.autoFocus,\n      autoComplete: props.autoComplete,\n      onClick: props.onClick,\n      onInput: props.onInput,\n      onChange: props.onChange,\n      tabIndex: props.tabIndex,\n\n      onFocus,\n      onBlur,\n    },\n  };\n};\n\nexport const Input = forwardRef<HTMLDivElement, InputProps>(({className, ...props}, ref) => {\n  const inputProps = useInput(props);\n  const {startAdornment, style, containerRef, width = '100%'} = inputProps;\n\n  const Component = props.inputComponent ?? InputComponent;\n\n  return (\n    <Container ref={ref} className={className} style={{width}}>\n      <InputContainer ref={containerRef} {...style}>\n        {startAdornment}\n\n        <Component {...inputProps} />\n\n        <EndAdornment {...inputProps} />\n      </InputContainer>\n\n      <InputCaption {...inputProps} />\n    </Container>\n  );\n});\n","'use client';\n\nimport {useContext, useEffect, useRef, useState} from 'react';\nimport {format, isValid, parse} from 'date-fns';\n\nimport {startOfDay, useUpdateEffect} from 'common';\n\nimport {DatepickerContext} from 'Datepicker';\n\nimport type {InputInternalProps} from 'Input';\nimport type {BaseCalendarValue} from 'Calendar';\nimport type {ChangeEventHandler, FocusEventHandler, InputHTMLAttributes, KeyboardEventHandler} from 'react';\n\ntype Segment = {\n  label: string;\n  token: string;\n  end: string;\n  value: string;\n};\n\nconst parseSegments = (formatStr: string) => {\n  const newSegments: Segment[] = [];\n\n  const matches = formatStr.matchAll(/([дdмmгy]{1,4})([^дdмmгy]*)/gi);\n\n  for (const [, label, end] of matches) {\n    const token = label.replace(/д|м|г/gi, part => {\n      switch (part.toLowerCase()) {\n        case 'д':\n          return 'd';\n        case 'м':\n        case 'm':\n          return 'M';\n        case 'г':\n          return 'y';\n      }\n\n      return part;\n    });\n\n    newSegments.push({token, label, end, value: ''});\n  }\n\n  return newSegments;\n};\n\nconst useSegments = () => {\n  const {formatStr, value, onChange, referenceDate} = useContext(DatepickerContext);\n\n  const inputValue = useRef<BaseCalendarValue>();\n\n  const [segments, setSegmentsValue] = useState<Segment[]>(() => parseSegments(formatStr));\n\n  const setSegments = (newSegments: Segment[]) => {\n    setSegmentsValue(newSegments);\n\n    const newValue: BaseCalendarValue = [undefined, undefined];\n\n    for (let i = 0; i < newSegments.length; i += 3) {\n      const [segmentFormat, segmentValue] = newSegments.slice(i, i + 3).reduce(\n        (acc, item) => {\n          acc[0] += item.token;\n          acc[1] += item.value;\n\n          return acc;\n        },\n        ['', '']\n      );\n\n      const segmentDate = parse(segmentValue, segmentFormat, referenceDate);\n\n      newValue[i / 3] = isValid(segmentDate) ? startOfDay(segmentDate) : undefined;\n    }\n\n    inputValue.current = newValue;\n\n    onChange(newValue);\n  };\n\n  useEffect(() => {\n    if (value.join() === inputValue.current?.join()) {\n      return;\n    }\n\n    const newSegments = [...segments];\n\n    for (const indx in newSegments) {\n      const segment = newSegments[indx];\n      const segmentDate = value[+indx >= 3 ? 1 : 0];\n\n      segment.value = segmentDate ? format(segmentDate, segment.token) : '';\n    }\n\n    setSegmentsValue(newSegments);\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [value]);\n\n  useUpdateEffect(() => {\n    setSegmentsValue(parseSegments(formatStr));\n  }, [formatStr]);\n\n  return {segments, setSegments};\n};\n\nexport const useInputComponent = (inputProps: InputInternalProps['inputProps']) => {\n  const {segments, setSegments} = useSegments();\n\n  const [step, setStepValue] = useState<number>(-1);\n  const [inputValue, setInputValue] = useState<string>('');\n\n  const setStep = (newStep: number) => {\n    const maxStep = segments.length - 1;\n\n    if (newStep < 0) {\n      newStep = 0;\n    } else if (newStep >= maxStep) {\n      newStep = maxStep;\n    }\n\n    setStepValue(newStep);\n  };\n\n  const onFocus: FocusEventHandler<HTMLInputElement> = e => {\n    inputProps?.onFocus?.(e);\n\n    setStepValue(0);\n  };\n\n  const onBlur: FocusEventHandler<HTMLInputElement> = e => {\n    inputProps?.onBlur?.(e);\n\n    setInputValue('');\n    setStepValue(-1);\n  };\n\n  const onKeyDown: KeyboardEventHandler = ({key}) => {\n    if (inputProps?.disabled || inputProps?.readOnly) {\n      return;\n    }\n\n    if (key === 'ArrowLeft' && step > 0) {\n      setStep(step - 1);\n      return;\n    }\n\n    if (key === 'ArrowRight') {\n      setStep(step + 1);\n      return;\n    }\n\n    if (key === 'Backspace' && !inputValue) {\n      const newSegments = [...segments];\n\n      if (segments[step].value) {\n        newSegments[step].value = '';\n      } else {\n        newSegments[step ? step - 1 : 0].value = '';\n        setStep(step - 1);\n      }\n\n      setSegments(newSegments);\n      setInputValue('');\n\n      return;\n    }\n\n    if (key === 'Escape') {\n      (window.document.activeElement as HTMLInputElement)?.blur();\n    }\n  };\n\n  const onChange: ChangeEventHandler<HTMLInputElement> = ({target}) => {\n    const newValue = target.value.replace(/[^\\d]+/, '');\n\n    const newSegments = [...segments];\n    newSegments[step].value = newValue;\n\n    setSegments(newSegments);\n\n    const isStepEnd = newValue.length >= newSegments[step].label.length;\n\n    if (isStepEnd) {\n      setInputValue('');\n      setStep(step + 1);\n      return;\n    }\n\n    setInputValue(target.value);\n  };\n\n  const componentProps: InputHTMLAttributes<HTMLInputElement> = {\n    ...inputProps,\n\n    onChange,\n    onKeyDown,\n    onFocus,\n    onBlur,\n\n    value: inputValue,\n  };\n\n  return {step, componentProps, segments};\n};\n","'use client';\n\nimport {forwardRef, useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {CalendarIcon} from 'icons';\n\nimport {Input, InputButton, Label} from 'Input';\nimport {DatepickerContext} from 'Datepicker';\n\nimport {useInputComponent} from './utils';\n\nimport type {InputInternalProps, InputProps, InputStyles} from 'Input';\n\nconst Container = styled.div`\n  position: relative;\n  flex-grow: 1;\n  height: 100%;\n`;\n\nconst valueStyle = ({isSmall, isFocused, isFilled, isLabeled}: InputStyles) => ({\n  opacity: !isLabeled || isFocused || isFilled ? 1 : 0,\n  minHeight: isSmall ? 32 : 48,\n  paddingTop: isLabeled && !isSmall ? 14 : 0,\n  textOverflow: !isFocused ? 'ellipsis' : undefined,\n});\n\nconst Value = styled.div`\n  position: relative;\n  width: 100%;\n  display: flex;\n  align-items: center;\n  box-sizing: border-box;\n  padding: 0;\n  outline: none;\n  border: none;\n\n  ${theme.typography.p1}\n`;\n\nconst ValueItem = styled.span<{isCurrent: boolean} & Pick<InputStyles, 'isFilled' | 'isDisabled'>>`\n  white-space: pre;\n  color: ${props => {\n    if (props.isDisabled) {\n      return theme.colors.grey[40];\n    }\n\n    return theme.colors.grey[props.isFilled ? 100 : 60];\n  }};\n\n  span {\n    background-color: ${props => (props.isCurrent ? theme.colors.accent[10] : 'transparent')};\n  }\n`;\n\nconst HiddenInput = styled.input`\n  position: absolute;\n  left: 0;\n  top: 0;\n  height: 100%;\n  width: 100%;\n  padding: 0;\n  margin: 0;\n  border: 0;\n  outline: none;\n  opacity: 0;\n`;\n\nconst InputComponent: React.FC<InputInternalProps> = props => {\n  const {inputProps, style, qa} = props;\n\n  const {step, componentProps, segments} = useInputComponent(inputProps);\n\n  const items = segments.map(({label, end, value}, indx) => {\n    const textContent = value.padEnd(label.length, label[0]);\n\n    return (\n      <ValueItem key={indx} isFilled={!!value} isCurrent={step === indx} isDisabled={style.isDisabled}>\n        <span>{textContent}</span>\n        {end}\n      </ValueItem>\n    );\n  });\n\n  return (\n    <Container>\n      <Label {...props} style={{...style, isFilled: style.isFocused || style.isFilled}} />\n      <Value data-qa={`${qa}-value`} style={valueStyle(style)}>\n        {items}\n      </Value>\n      <HiddenInput data-qa={qa} {...componentProps} autoComplete=\"off\" />\n    </Container>\n  );\n};\n\ntype DateInputProps = Omit<InputProps, 'value' | 'onChange'>;\n\nexport const DateInput = forwardRef<HTMLInputElement, DateInputProps>((props, ref) => {\n  const {qa, size, disabled, readOnly, endAdornment: parentEndAdornment, ...restProps} = props;\n\n  const {isOpen, setIsOpen, value} = useContext(DatepickerContext);\n\n  const endAdornment = (\n    <>\n      {parentEndAdornment}\n      <InputButton\n        type=\"button\"\n        data-qa={`${qa}-toggle`}\n        isDisabled={disabled || readOnly}\n        isSmall={size === SizeTokenValue.Small}\n        onClick={() => setIsOpen(!isOpen)}\n      >\n        <CalendarIcon size={size} />\n      </InputButton>\n    </>\n  );\n\n  const inputProps: InputProps = {\n    ...restProps,\n\n    size,\n    disabled,\n    readOnly,\n    endAdornment,\n    inputComponent: InputComponent,\n    containerRef: ref,\n\n    value: value[0] || value[1] ? 'filled' : '',\n    onChange: () => {},\n\n    qa: `${qa}-input`,\n  };\n\n  return <Input {...inputProps} />;\n});\n","'use client';\n\nimport {useContext} from 'react';\n\nimport {BaseCalendar, CalendarMode} from 'Calendar';\nimport {DatepickerContext} from 'Datepicker';\nimport {Dropdown} from 'Dropdown';\n\nimport type {BaseDatepickerProps} from 'Datepicker';\nimport type {BaseCalendarProps} from 'Calendar';\nimport type {DropdownProps} from 'Dropdown';\n\ntype CalendarProps = Pick<DropdownProps, 'targetRef'> & Pick<BaseDatepickerProps, 'calendarProps'>;\n\nexport const Calendar: React.FC<CalendarProps> = ({targetRef, calendarProps}) => {\n  const {value, mode, onChange, isOpen, setIsOpen} = useContext(DatepickerContext);\n\n  if (!isOpen) {\n    return null;\n  }\n\n  const props: BaseCalendarProps = {\n    viewDate: value[0],\n\n    ...calendarProps,\n\n    mode,\n    value,\n\n    onChange: newValue => {\n      const newIsOpen = mode === CalendarMode.Range && (!newValue[0] || !newValue[1]);\n\n      setIsOpen(newIsOpen);\n      onChange(newValue);\n    },\n  };\n\n  const dropdownProps = {\n    isOpen,\n    setIsOpen,\n    targetRef,\n    offset: 8,\n  };\n\n  return (\n    <Dropdown {...dropdownProps}>\n      <BaseCalendar {...props} />\n    </Dropdown>\n  );\n};\n","import type {BaseCalendarProps, CalendarProps, RangeCalendarProps} from 'Calendar';\nimport type {InputProps} from 'Input';\n\nexport const DEFAULT_FORMAT = 'дд.мм.гггг';\n\ntype CommonProps = {\n  /** Раскрыт ли календарь */\n  isOpen?: boolean;\n  /** Обработчик раскрытия календаря */\n  setIsOpen?: (newIsOpen: boolean) => void;\n\n  /** Формат даты в инпуте\n   *\n   * поддержка д|d|м|m|г|y\n   */\n  formatStr: string;\n\n  /** Свойства календаря */\n  calendarProps?: Omit<BaseCalendarProps, 'mode' | 'value' | 'onChange'>;\n\n  /** Контрольная дата */\n  referenceDate?: Date;\n} & Pick<BaseCalendarProps, 'mode' | 'value' | 'onChange'>;\n\nexport type BaseDatepickerProps = CommonProps & Omit<InputProps, 'mask' | 'value' | 'onChange' | 'onClearClick'>;\n\nexport type DatepickerProps = {\n  /** Формат даты в инпуте\n   *\n   * поддержка д|d|м|m|г|y\n   */\n  formatStr?: string;\n  /** Свойства календаря */\n  calendarProps?: Omit<CalendarProps, 'value' | 'onChange'>;\n} & Omit<BaseDatepickerProps, 'formatStr' | 'mode' | 'value' | 'onChange'> &\n  Pick<CalendarProps, 'value' | 'onChange'>;\n\nexport type RangeDatepickerProps = {\n  /** Формат даты в инпуте\n   *\n   * поддержка д|d|м|m|г|y\n   */\n  formatStr?: string;\n  /** Свойства календаря */\n  calendarProps?: Omit<RangeCalendarProps, 'value' | 'onChange'>;\n} & Omit<BaseDatepickerProps, 'formatStr' | 'mode' | 'value' | 'onChange'> &\n  Pick<RangeCalendarProps, 'value' | 'onChange'>;\n\nexport type DatepickerContextProps = {\n  isOpen: boolean;\n  setIsOpen: (newIsOpen: boolean) => void;\n} & CommonProps &\n  Required<Pick<BaseDatepickerProps, 'referenceDate'>>;\n","'use client';\n\nimport {createContext, useCallback, useMemo, useRef, useState} from 'react';\nimport {startOfToday} from 'date-fns';\nimport styled from '@emotion/styled';\n\nimport {startOfDay} from 'common';\n\nimport {CalendarMode} from 'Calendar';\n\nimport {DateInput} from './DateInput';\nimport {Calendar} from './Calendar';\n\nimport {DEFAULT_FORMAT} from './types';\n\nimport type {RangeCalendarValue} from 'Calendar';\nimport type {BaseDatepickerProps, DatepickerProps, RangeDatepickerProps, DatepickerContextProps} from './types';\n\nexport const DatepickerContext = createContext<DatepickerContextProps>({} as never);\n\nconst Container = styled.div`\n  position: relative;\n`;\n\nconst BaseDatepicker: React.FC<BaseDatepickerProps> = props => {\n  const {\n    mode,\n    value,\n    onChange,\n    formatStr,\n    calendarProps,\n\n    isOpen: parentIsOpen,\n    setIsOpen: parentSetIsOpen,\n\n    referenceDate = startOfToday(),\n    width = '100%',\n    qa = 'datepicker',\n\n    ...rest\n  } = props;\n\n  const targetRef = useRef<HTMLInputElement>(null);\n  const [isOpenIn, setIsOpenIn] = useState<boolean>(false);\n  const isOpen = parentIsOpen ?? isOpenIn;\n  const setIsOpen = parentSetIsOpen ?? setIsOpenIn;\n\n  const context: DatepickerContextProps = {\n    mode,\n    value,\n    onChange,\n    formatStr,\n    referenceDate,\n    isOpen,\n    setIsOpen,\n  };\n\n  const calProps = {\n    calendarProps,\n    targetRef,\n  };\n\n  return (\n    <DatepickerContext.Provider value={context}>\n      <Container style={{width}}>\n        <DateInput ref={targetRef} qa={qa} {...rest} />\n        <Calendar {...calProps} />\n      </Container>\n    </DatepickerContext.Provider>\n  );\n};\n\nexport const Datepicker: React.FC<DatepickerProps> = props => {\n  const value = useMemo(() => [props.value ? startOfDay(props.value) : undefined, undefined], [props.value]);\n\n  const onChange = useCallback<BaseDatepickerProps['onChange']>(\n    newValue => props.onChange(newValue[0]),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [props.onChange]\n  );\n\n  const overrideProps = {\n    ...props,\n\n    value,\n    onChange,\n\n    mode: CalendarMode.Single,\n\n    formatStr: props.formatStr ?? DEFAULT_FORMAT,\n  } as BaseDatepickerProps;\n\n  return <BaseDatepicker {...overrideProps} />;\n};\n\nexport const RangeDatepicker: React.FC<RangeDatepickerProps> = props => {\n  const value = useMemo<RangeCalendarValue>(() => {\n    const [rangeStart, rangeEnd] = props.value ?? [];\n\n    return [rangeStart ? startOfDay(rangeStart) : undefined, rangeEnd ? startOfDay(rangeEnd) : undefined];\n  }, [props.value]);\n\n  const format = `${props.formatStr ?? DEFAULT_FORMAT} — ${props.formatStr ?? DEFAULT_FORMAT}`;\n\n  return <BaseDatepicker mode={CalendarMode.Range} {...props} value={value} formatStr={format} />;\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {DownloadIcon} from 'icons';\nimport {Link} from 'Link';\n\nimport type {FileUploaderProps} from '../types';\n\ntype TitleStyles = Pick<FileUploaderProps, 'disabled'>;\n\ntype TitleProps = Pick<FileUploaderProps, 'title' | 'subTitle'> & TitleStyles;\n\nconst TitleContainer = styled.div<TitleStyles>`\n  text-align: center;\n  user-select: none;\n  color: ${props => theme.colors.grey[props.disabled ? 40 : 100]};\n\n  ${theme.typography.p2}\n\n  div {\n    margin-bottom: 8px;\n    color: ${props => (props.disabled ? theme.colors.grey[40] : theme.colors.accent[90])};\n  }\n\n  a {\n    color: ${props => (props.disabled ? theme.colors.grey[40] : theme.colors.accent[90])};\n  }\n`;\n\nconst SubTitleContainer = styled.div<TitleStyles>`\n  padding-top: 8px;\n  text-align: center;\n  user-select: none;\n  color: ${props => (props.disabled ? theme.colors.grey[40] : theme.colors.grey[60])};\n\n  ${theme.typography.p3}\n`;\n\nexport const Title: React.FC<TitleProps> = ({disabled, title, subTitle}) => {\n  title ??= (\n    <TitleContainer disabled={disabled}>\n      <div>\n        <DownloadIcon />\n      </div>\n      <span>Перетащите файлы сюда или </span>\n      <Link>выберите на компьютере</Link>\n    </TitleContainer>\n  );\n\n  return (\n    <div>\n      {title}\n      {!!subTitle && <SubTitleContainer disabled={disabled}>{subTitle}</SubTitleContainer>}\n    </div>\n  );\n};\n","import {Caption as BaseCaption} from 'Caption';\n\nimport type {FileUploaderProps} from '../types';\n\ntype UploaderCaptionProps = Pick<FileUploaderProps, 'error' | 'caption' | 'absoluteCaption'>;\n\nexport const Caption: React.FC<UploaderCaptionProps> = ({error, caption, absoluteCaption}) => {\n  const children = error && typeof error === 'string' ? error : caption;\n\n  const captionProps = {\n    children,\n    error: !!error,\n    absolute: absoluteCaption,\n  };\n\n  return <BaseCaption {...captionProps} />;\n};\n","import type {HTMLAttributes, MouseEvent, ReactNode} from 'react';\nimport type React from 'react';\nimport type {DropEvent, DropzoneOptions, DropzoneState} from 'react-dropzone-esm';\n\nimport type {QA} from 'common';\n\nimport type {FileError} from './hook';\n\n/** Статус файла */\nexport enum FileItemStatus {\n  /** Исходный. Файлы которые были загружены ранее */\n  Initial = 'initial',\n  /** Загружается */\n  Loading = 'loading',\n  /** Загружен */\n  Loaded = 'loaded',\n  /** Удаляется */\n  Deleting = 'deleting',\n  /** Удален */\n  Deleted = 'deleted',\n  /** Ошибка */\n  Error = 'error',\n}\n\nexport type FileItemDefaultExtends = {[key: string]: unknown};\n\n/** Элемент файла.\n *\n * Может быть расширен другими свойствами */\nexport type FileItem<T = FileItemDefaultExtends> = {\n  /** Идентификатор */\n  id: string | number;\n\n  /** Название */\n  name: string;\n\n  /** Размер\n   *\n   * Передавать 0 если не известен (не будет учтен при расчетах)\n   */\n  size: number;\n\n  /** Статус файла */\n  status: FileItemStatus;\n\n  /** Отключен - не редактируемый */\n  disabled?: boolean;\n\n  /** Ссылка на файл. Позволяет сказать по нажатию */\n  url?: string;\n  /** Всплывающая подсказка */\n  tooltip?: string;\n} & T;\n\n/** Пропсы компонента файлов */\nexport type UploadedFilesProps<T = FileItemDefaultExtends> = Pick<\n  FileUploaderProps<T>,\n  'items' | 'disabled' | 'onDelete' | 'onClick' | 'maxLabelLength' | 'maxLabelLengthFunc'\n>;\n\nexport type FileUploaderProps<T = FileItemDefaultExtends> = {\n  /** Элементы файлов */\n  items: FileItem<T>[];\n\n  /** Заголовок */\n  title?: ReactNode;\n  /** Подзаголовок */\n  subTitle?: ReactNode;\n\n  /** Ошибка в поле */\n  error?: boolean | ReactNode;\n  /** Подпись */\n  caption?: ReactNode;\n  /** Абсолютное позиционирование caption\n   *\n   * не занимает место между полями\n   */\n  absoluteCaption?: boolean;\n\n  /** Обработчик загрузки */\n  onDrop: (\n    /** Файлы прошедшие проверку */\n    accepteds: File[],\n    /** Ошибки по файлам */\n    errors: FileError[],\n    /** Событие загрузки */\n    event: DropEvent\n  ) => void;\n  /** Обработчик нажания на элемент файла */\n  onClick?: (file: FileItem<T>, e: MouseEvent) => void;\n  /** Обработчиу удаления элемента файла */\n  onDelete?: (file: FileItem<T>) => void;\n\n  /** Коллбэк принимающий инстанс react-dropzone\n   *\n   * Используется в специфических ситуациях\n   */\n  setDropzone?: (dropzone: DropzoneState) => void;\n\n  /** Максимальный размер всех файлов в байтах */\n  maxSizeAll?: number;\n  /** Текст ошибки максимального размера всех файлов */\n  maxSizeAllError?: string;\n  /** Текст ошибки максимального размера файла */\n  maxSizeError?: string;\n  /** Текст ошибки минимального размера файла */\n  minSizeError?: string;\n  /** Текст ошибки максимального количества файлов */\n  maxFilesError?: string;\n  /** Текст ошибки типа файлов */\n  acceptTypeError?: string;\n\n  /** Максимальная длинна label элемента файла.\n   *\n   * Показывает tooltip при превышении */\n  maxLabelLength?: number;\n  /** Обработчик длинны label элемента файла*/\n  maxLabelLengthFunc?: (label: string) => string;\n\n  /** Компонент списка элементов файла */\n  filesComponent?: React.FC<UploadedFilesProps<T>>;\n} & QA &\n  Omit<DropzoneOptions, 'onDrop' | 'onError'> &\n  Pick<HTMLAttributes<HTMLDivElement>, 'className'>;\n","import {FileItemStatus} from '../types';\n\nimport type {MouseEventHandler} from 'react';\n\nimport type {FileItem, FileUploaderProps} from '../types';\n\nexport type UploadedFileProps<T> = {\n  item: FileItem<T>;\n} & Pick<FileUploaderProps<T>, 'disabled' | 'onClick' | 'onDelete' | 'maxLabelLength' | 'maxLabelLengthFunc'>;\n\nexport function useUploadedFile<T>(props: UploadedFileProps<T>) {\n  const item = props.item;\n  const status = item.status;\n  const disabled = props.disabled || item.disabled;\n\n  const isHidden = status === FileItemStatus.Deleted;\n  const isError = status === FileItemStatus.Error;\n\n  const isLoading = [FileItemStatus.Loading, FileItemStatus.Deleting].includes(status);\n\n  const isDeletable =\n    !isLoading &&\n    !disabled &&\n    !!props.onDelete &&\n    [FileItemStatus.Initial, FileItemStatus.Loaded, FileItemStatus.Error].includes(status);\n\n  const isClickable = !disabled && (!!props.onClick || !!item.url);\n\n  const onClick: MouseEventHandler = e => {\n    e.stopPropagation();\n\n    props.onClick?.(item, e);\n  };\n\n  const onDelete = () => props.onDelete?.(item);\n\n  return {\n    isHidden,\n    isError,\n    isLoading,\n\n    onClick: isClickable ? onClick : undefined,\n    onDelete: isDeletable ? onDelete : undefined,\n  };\n}\n","import {SizeTokenValue} from 'common';\nimport {DownloadIcon} from 'icons';\nimport {Loader} from 'Loader';\n\nimport {Chip} from 'Chip';\n\nimport {useUploadedFile} from './hook';\n\nimport type {ChipProps} from 'Chip';\n\nimport type {FileItem, UploadedFilesProps} from 'FileUploader/types';\n\nimport type {UploadedFileProps} from './hook';\n\nimport type {ReactNode} from 'react';\n\nfunction UploadedFile<T>(props: UploadedFileProps<T>) {\n  const {item} = props;\n\n  const {isHidden, isError, isLoading, onClick, onDelete} = useUploadedFile(props);\n\n  if (isHidden) {\n    return null;\n  }\n\n  let startAdornment: ReactNode;\n\n  if (isLoading) {\n    startAdornment = <Loader size={SizeTokenValue.Small} />;\n  } else if (item.url) {\n    startAdornment = <DownloadIcon size={SizeTokenValue.Small} />;\n  }\n\n  const chipProps: ChipProps = {\n    onClick,\n    startAdornment,\n    onDelete,\n\n    label: item.name,\n    tooltip: item.tooltip,\n    href: item.url,\n    error: isError,\n\n    maxLength: props.maxLabelLength,\n    maxLengthFunc: props.maxLabelLengthFunc,\n\n    target: '_blank',\n  };\n\n  return <Chip {...chipProps} />;\n}\n\nexport function getUploadedFile<T>(item: FileItem<T>, props: UploadedFilesProps<T>) {\n  return <UploadedFile key={item.id} item={item} {...props} />;\n}\n","import styled from '@emotion/styled';\n\nimport {getUploadedFile} from '../UploadedFile';\n\nimport type {UploadedFilesProps} from '../types';\n\nconst Container = styled.div`\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: 8px;\n`;\n\nexport function UploadedFiles<T>(props: UploadedFilesProps<T>) {\n  const {items} = props;\n\n  if (!items.length) {\n    return null;\n  }\n\n  return <Container>{items.map(item => getUploadedFile(item, props))}</Container>;\n}\n","'use client';\n\n/** react-dropzone esm error\n * https://github.com/react-dropzone/react-dropzone/issues/1259\n */\nimport {ErrorCode, useDropzone} from 'react-dropzone-esm';\n\nimport type {DropzoneOptions} from 'react-dropzone-esm';\n\nimport type {FileUploaderProps} from './types';\n\nexport abstract class FileError extends Error {\n  protected defaultMessage!: string;\n\n  constructor(\n    public readonly file: File,\n    message?: string\n  ) {\n    super(message);\n\n    this.message ??= this.defaultMessage;\n  }\n}\n\nexport class MaxSizeError extends FileError {\n  protected defaultMessage = 'Файл превышает допустимый размер';\n}\n\nexport class MinSizeError extends FileError {\n  protected defaultMessage = 'Файл имеет недопустимый размер';\n}\n\nexport class MaxSizeAllError extends FileError {\n  protected defaultMessage = 'Файлы превышают допустимый размер';\n}\n\nexport class MaxFilesError extends FileError {\n  constructor(file: File, maxFiles?: number, message?: string) {\n    super(\n      file,\n      message ?? 'Некоторые файлы не загрузились.' + (maxFiles ? `Вы можете загрузить до ${maxFiles} файлов` : '')\n    );\n  }\n}\n\nexport class AcceptTypeError extends FileError {\n  protected defaultMessage = 'Формат файла не поддерживается.';\n}\n\nexport const useFileUploader = <T>(props: FileUploaderProps<T>) => {\n  const {\n    items,\n    title,\n    subTitle,\n    disabled,\n    error,\n    caption,\n    absoluteCaption,\n    onDelete,\n    onClick,\n\n    maxSizeAll,\n    maxSizeAllError,\n    maxSizeError,\n    minSizeError,\n    maxFilesError,\n    acceptTypeError,\n\n    maxLabelLength,\n    maxLabelLengthFunc,\n\n    setDropzone,\n\n    ...dropzoneProps\n  } = props;\n\n  const onDrop: DropzoneOptions['onDrop'] = (accepteds, rejecteds, event) => {\n    const errors: FileError[] = [];\n\n    for (const rejected of rejecteds) {\n      for (const item of rejected.errors) {\n        switch (item.code) {\n          case ErrorCode.FileTooLarge:\n            errors.push(new MaxSizeError(rejected.file, maxSizeError));\n            break;\n          case ErrorCode.FileTooSmall:\n            errors.push(new MinSizeError(rejected.file, minSizeError));\n            break;\n          case ErrorCode.TooManyFiles:\n            errors.push(new MaxFilesError(rejected.file, props.maxFiles, maxFilesError));\n            break;\n          case ErrorCode.FileInvalidType:\n            errors.push(new AcceptTypeError(rejected.file, acceptTypeError));\n            break;\n        }\n      }\n    }\n\n    if (maxSizeAll) {\n      const newAccepteds: typeof accepteds = [];\n      let curSize = items.reduce((acc, i) => acc + i.size, 0);\n\n      for (const file of accepteds) {\n        curSize += file.size;\n\n        if (curSize > maxSizeAll) {\n          errors.push(new MaxSizeAllError(file, maxSizeAllError));\n          continue;\n        }\n\n        newAccepteds.push(file);\n      }\n\n      accepteds = newAccepteds;\n    }\n\n    props.onDrop(accepteds, errors, event);\n  };\n\n  const dzState = useDropzone({\n    ...dropzoneProps,\n\n    disabled,\n    onDrop,\n  });\n\n  setDropzone?.(dzState);\n\n  return {\n    dzState,\n\n    titleProps: {title, subTitle, disabled},\n\n    captionProps: {error, caption, absoluteCaption},\n\n    listProps: {\n      items,\n      disabled,\n      onDelete,\n      onClick,\n      maxLabelLength,\n      maxLabelLengthFunc,\n    },\n  };\n};\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {Title} from './Title';\nimport {Caption} from './Caption';\nimport {UploadedFiles} from './UploadedFiles';\nimport {useFileUploader} from './hook';\n\nimport type {FileItemDefaultExtends, FileUploaderProps} from './types';\n\ntype DropzoneStyles = {\n  isDisabled: boolean;\n  isError: boolean;\n  isDragActive: boolean;\n};\n\nconst Dropzone = styled.div<DropzoneStyles>`\n  position: relative;\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  justify-content: center;\n  width: 100%;\n  gap: 12px;\n  padding: 24px;\n  border-radius: 4px;\n  background-color: ${theme.colors.white};\n  border: 2px dashed ${theme.colors.grey[30]};\n\n  :hover {\n    background-color: ${theme.colors.grey[5]};\n    border-color: ${theme.colors.grey[40]};\n  }\n\n  ${props => {\n    if (props.isDisabled) {\n      return {\n        borderColor: theme.colors.grey[20],\n      };\n    }\n\n    if (props.isDragActive) {\n      return {\n        borderColor: theme.colors.accent[90],\n        backgroundColor: theme.colors.accent[5],\n      };\n    }\n\n    if (props.isError) {\n      return {\n        borderColor: theme.colors.additional.red[80],\n      };\n    }\n  }}\n`;\n\nexport function FileUploader<T = FileItemDefaultExtends>(props: FileUploaderProps<T>) {\n  const qa = props.qa ?? 'uploader';\n\n  const {dzState, titleProps, captionProps, listProps} = useFileUploader(props);\n\n  const FilesComponent = props.filesComponent ?? UploadedFiles;\n\n  const dropzoneProps = {\n    isDragActive: dzState.isDragActive,\n    isError: !!props.error,\n    isDisabled: !!props.disabled,\n    className: props.className,\n\n    'data-qa': `${qa}-dropzone`,\n  };\n\n  return (\n    <div data-qa={qa}>\n      <Dropzone {...dzState.getRootProps()} {...dropzoneProps}>\n        <input {...dzState.getInputProps()} />\n\n        <Title {...titleProps} />\n\n        <FilesComponent {...listProps} />\n      </Dropzone>\n\n      <Caption {...captionProps} />\n    </div>\n  );\n}\n","import {useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {ModalContentProps} from '../types';\n\nconst Container = styled.div`\n  padding: 0 24px;\n  overflow: auto;\n  word-break: break-word;\n\n  ${theme.typography.p1}\n  ${theme.scroll}\n\n  &[data-overflown] {\n    padding-top: 12px;\n    padding-bottom: 12px;\n    border-style: solid;\n    border-width: 1px 0 1px 0;\n    border-color: ${theme.colors.grey[20]};\n  }\n`;\n\nexport const ModalContent: React.FC<ModalContentProps> = props => {\n  const {children, noBorderScroll, qa = 'modal-content', ...rest} = props;\n\n  const observerRef = useRef<ResizeObserver>();\n  const observerTimeout = useRef<ReturnType<typeof setTimeout>>();\n\n  const ref = (el: HTMLDivElement | null) => {\n    if (observerRef.current) {\n      observerRef.current.disconnect();\n      observerRef.current = undefined;\n    }\n\n    if (!el || noBorderScroll) {\n      return;\n    }\n\n    observerRef.current = new ResizeObserver(entries => {\n      clearTimeout(observerTimeout.current);\n\n      const target = entries[0]?.target;\n\n      observerTimeout.current = setTimeout(() => {\n        if (!target) {\n          return;\n        }\n\n        target.toggleAttribute('data-overflown', target.scrollHeight > target.clientHeight);\n      }, 10);\n    });\n\n    observerRef.current.observe(el);\n  };\n\n  return (\n    <Container {...rest} ref={ref} data-qa={qa}>\n      {children}\n    </Container>\n  );\n};\n","import styled from '@emotion/styled';\n\nexport const ModalFooter = styled.div`\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  flex-shrink: 0;\n  gap: 16px;\n  padding: 20px 24px;\n`;\n\nexport const ModalFooterContent = styled.div`\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 8px;\n`;\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {CloseIcon} from 'icons';\nimport {ButtonVariant, IconButton} from 'Button';\n\nimport type {ModalHeaderProps} from '../types';\n\nconst Container = styled.div`\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  flex-shrink: 0;\n  gap: 16px;\n  padding: 16px 12px 12px 24px;\n`;\n\nconst TitleContainer = styled.div`\n  display: flex;\n  align-items: flex-start;\n  gap: 8px;\n  padding: 4px 0;\n`;\n\nconst Title = styled.div`\n  color: ${theme.colors.grey[100]};\n\n  ${theme.typography.h3}\n`;\n\nconst Caption = styled.div`\n  padding-top: 4px;\n  color: ${theme.colors.grey[60]};\n\n  ${theme.typography.p1}\n`;\n\nconst ButtonContainer = styled.div`\n  button {\n    width: 32px;\n    height: 32px;\n  }\n`;\n\nconst CloseButton: React.FC<Pick<ModalHeaderProps, 'onClose' | 'qa'>> = ({onClose, qa}) => {\n  if (!onClose) {\n    return null;\n  }\n\n  return (\n    <ButtonContainer>\n      <IconButton qa={`${qa}-close`} variant={ButtonVariant.InnerInput} size={SizeTokenValue.Small} onClick={onClose}>\n        <CloseIcon />\n      </IconButton>\n    </ButtonContainer>\n  );\n};\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = props => {\n  const {children, onClose, caption, icon, qa = 'modal-header', ...rest} = props;\n\n  return (\n    <Container data-qa={qa} {...rest}>\n      <TitleContainer>\n        {icon}\n        <div>\n          <Title>{children}</Title>\n          {!!caption && <Caption>{caption}</Caption>}\n        </div>\n      </TitleContainer>\n      <CloseButton qa={qa} onClose={onClose} />\n    </Container>\n  );\n};\n","import React, {useEffect, useRef} from 'react';\nimport {FloatingOverlay, FloatingPortal} from '@floating-ui/react';\n\nimport theme from 'theme';\n\nimport type {CSSProperties, ReactNode} from 'react';\nimport type {ModalProps} from '../types';\n\ntype OverlayProps = Omit<ModalProps, 'children'> & {children: () => ReactNode};\n\nexport const ModalOverlay: React.FC<OverlayProps> = props => {\n  const {children, targetRef, isOpen, isMounted, isPortal, zIndex = theme.zIndex.modal} = props;\n\n  const ref = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    setTimeout(() => {\n      if (!ref.current) {\n        return;\n      }\n\n      ref.current.style.opacity = isOpen ? '1' : '0';\n    });\n  }, [isOpen]);\n\n  if (!isOpen && !isMounted) {\n    return null;\n  }\n\n  const style = ((): CSSProperties => {\n    const hasTarget = !!targetRef;\n\n    if (hasTarget) {\n      return {\n        zIndex,\n        display: isOpen ? undefined : 'none',\n      };\n    }\n\n    return {\n      zIndex,\n\n      display: isOpen ? 'flex' : 'none',\n      top: 0,\n      left: 0,\n      opacity: 0,\n      alignItems: 'center',\n      justifyContent: 'center',\n      background: 'rgba(59, 64, 71, 0.6)',\n      transition: 'opacity 225ms cubic-bezier(0.4, 0, 0.2, 1)',\n    };\n  })();\n\n  const Wrapper = isPortal ? FloatingPortal : React.Fragment;\n\n  return (\n    <Wrapper>\n      <FloatingOverlay lockScroll={isOpen} style={style} ref={ref}>\n        {children()}\n      </FloatingOverlay>\n    </Wrapper>\n  );\n};\n","import {flip, offset, useDismiss, useFloating, useInteractions, useRole} from '@floating-ui/react';\n\nimport type {ModalProps} from './types';\n\nexport const useModal = (props: ModalProps) => {\n  const targetRef = props.targetRef?.current;\n  const hasTarget = !!targetRef;\n\n  const middleware = props.middleware ?? (hasTarget ? [offset(8), flip()] : undefined);\n\n  const floating = useFloating({\n    middleware,\n\n    onOpenChange: open => !open && props.onClose?.(),\n    open: props.isOpen,\n    placement: props.placement,\n    elements: {reference: targetRef},\n  });\n\n  props.setFloating?.(floating);\n\n  const floatingI = useInteractions([\n    useRole(floating.context),\n\n    useDismiss(floating.context, {\n      escapeKey: props.closeOnEscape,\n      outsidePress: props.closeOnOverlay,\n      outsidePressEvent: 'click',\n    }),\n  ]);\n\n  return {floating, floatingI, hasTarget};\n};\n","import styled from '@emotion/styled';\n\nimport {FloatingFocusManager} from '@floating-ui/react';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport {ModalOverlay} from './ModalOverlay';\nimport {useModal} from './hook';\n\nimport type {ModalProps} from './types';\n\nconst Container = styled.div<Pick<ModalProps, 'size'>>`\n  display: flex;\n  flex-direction: column;\n  border-radius: 8px;\n  background-color: ${theme.colors.white};\n  max-width: calc(100% - 40px);\n  max-height: calc(100% - 40px);\n  box-shadow: ${theme.shadows.medium};\n  z-index: ${theme.zIndex.modal};\n\n  ${({size = SizeTokenValue.Medium}) => {\n    let width = size;\n\n    switch (size) {\n      case SizeTokenValue.XLarge:\n        width = 1160;\n        break;\n      case SizeTokenValue.Large:\n        width = 920;\n        break;\n      case SizeTokenValue.Medium:\n        width = 620;\n        break;\n      case SizeTokenValue.Small:\n        width = 440;\n        break;\n    }\n\n    return {width};\n  }}\n`;\n\nexport const Modal: React.FC<ModalProps> = props => {\n  const {className, isOpen, children, size, qa = 'modal'} = props;\n\n  const {floating, floatingI, hasTarget} = useModal(props);\n\n  const child = () => {\n    const containerProps = {\n      ...floatingI.getFloatingProps(),\n\n      className,\n      size,\n      children,\n\n      style: hasTarget ? floating.floatingStyles : undefined,\n\n      'data-qa': qa,\n    };\n\n    return (\n      <FloatingFocusManager context={floating.context} disabled={!isOpen}>\n        <Container ref={floating.refs.setFloating} {...containerProps} />\n      </FloatingFocusManager>\n    );\n  };\n\n  return <ModalOverlay {...props}>{child}</ModalOverlay>;\n};\n","import {useState} from 'react';\n\nimport {VisibilityIcon, VisibilityOffIcon} from 'icons';\nimport {SizeTokenValue} from 'common';\nimport {Input, InputButton} from 'Input';\n\nimport type {InputHTMLAttributes} from 'react';\n\nimport type {PasswordInputProps} from './types';\n\nexport const PasswordInput: React.FC<PasswordInputProps> = ({qa = 'password', ...props}) => {\n  const [isOpen, setIsOpen] = useState<boolean>(false);\n\n  const Icon = isOpen ? VisibilityIcon : VisibilityOffIcon;\n\n  const type: InputHTMLAttributes<HTMLInputElement>['type'] = isOpen ? 'text' : 'password';\n\n  const endAdornment = (\n    <InputButton\n      type=\"button\"\n      data-qa={`${qa}-toggle`}\n      isDisabled={props.disabled}\n      isSmall={props.size === SizeTokenValue.Small}\n      onClick={() => setIsOpen(!isOpen)}\n    >\n      <Icon size={props.size} />\n    </InputButton>\n  );\n\n  return <Input endAdornment={endAdornment} type={type} qa={qa} {...props} />;\n};\n","import {useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {RequiredQA} from 'common';\nimport type {HTMLAttributes, KeyboardEventHandler} from 'react';\n\nimport type {RadioStyles} from '../types';\n\nconst Container = styled.div<RadioStyles>`\n  position: relative;\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 16px;\n  height: 16px;\n  border-radius: 50%;\n  color: ${theme.colors.white};\n  border: 1px solid ${theme.colors.grey[30]};\n  cursor: pointer;\n\n  :focus-visible::before {\n    content: '';\n    display: block;\n    position: absolute;\n    box-sizing: border-box;\n    top: -1px;\n    left: -1px;\n    width: 16px;\n    height: 16px;\n    border-radius: 50%;\n    box-shadow: 0px 0px 3px 2px ${theme.colors.accent[70]};\n  }\n\n  ::after {\n    content: '';\n    display: block;\n    position: absolute;\n    box-sizing: border-box;\n    top: 4px;\n    left: 4px;\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n  }\n\n  ${({error, readOnly, disabled, hasLabel}) => {\n    const styles = {\n      margin: hasLabel ? '2px 0 0' : undefined,\n    };\n\n    if (error) {\n      return {\n        ...styles,\n        borderColor: theme.colors.red[80],\n        color: theme.colors.red[80],\n        cursor: readOnly || disabled ? 'default' : 'pointer',\n      };\n    }\n\n    if (readOnly) {\n      return {\n        ...styles,\n        backgroundColor: 'transparent',\n        borderStyle: 'dashed',\n        borderColor: theme.colors.grey[30],\n        color: theme.colors.grey[80],\n        cursor: 'default',\n      };\n    }\n\n    if (disabled) {\n      return {\n        ...styles,\n        backgroundColor: 'transparent',\n        borderColor: theme.colors.grey[20],\n        cursor: 'default',\n      };\n    }\n\n    return styles;\n  }}\n`;\n\nconst Input = styled.input<RadioStyles>`\n  position: absolute;\n  visibility: hidden;\n  left: 0;\n  top: 0;\n  width: 0;\n  height: 0;\n  padding: 0;\n\n  :checked + div::after {\n    background-color: ${({error, readOnly}) => {\n      if (error) {\n        return theme.colors.red[80];\n      }\n\n      if (readOnly) {\n        return theme.colors.grey[80];\n      }\n\n      return theme.colors.white;\n    }};\n  }\n\n  :checked + div {\n    ${({error, disabled, readOnly}) => {\n      if (error) {\n        return {\n          backgroundColor: 'transparent',\n        };\n      }\n\n      if (readOnly) {\n        return {\n          backgroundColor: 'transparent',\n          borderColor: theme.colors.accent[20],\n          cursor: 'default',\n        };\n      }\n\n      if (disabled) {\n        return {\n          backgroundColor: theme.colors.accent[20],\n          borderColor: theme.colors.accent[20],\n          cursor: 'default',\n        };\n      }\n\n      return {\n        backgroundColor: theme.colors.accent[90],\n        borderColor: theme.colors.accent[90],\n\n        ':hover': {\n          backgroundColor: theme.colors.accent[80],\n        },\n      };\n    }}\n  }\n`;\n\ntype IconProps = RadioStyles & RequiredQA & {inputProps: HTMLAttributes<HTMLInputElement>};\n\nexport const Icon: React.FC<IconProps> = props => {\n  const {disabled, readOnly, error, hasLabel, inputProps, qa} = props;\n  const isEnabled = !disabled && !readOnly;\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n    if (e.code === 'Enter' || e.code === 'NumpadEnter') {\n      inputRef.current?.click();\n    }\n\n    inputProps.onKeyDown?.(e);\n  };\n\n  const containerProps = {\n    tabIndex: isEnabled ? 0 : undefined,\n\n    readOnly,\n    error,\n    disabled,\n    hasLabel,\n\n    onKeyDown,\n  };\n\n  const resultProps = {\n    ...inputProps,\n\n    readOnly,\n    error,\n    disabled,\n\n    type: 'radio',\n    onChange: isEnabled ? inputProps.onChange : undefined,\n\n    'data-qa': qa,\n  };\n\n  return (\n    <>\n      <Input ref={inputRef} {...resultProps} />\n      <Container {...containerProps} />\n    </>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {MouseEventHandler} from 'react';\n\nimport type {RadioProps, RadioStyles} from '../types';\n\nconst Container = styled.div<RadioStyles>`\n  min-width: 0;\n  word-wrap: break-word;\n  user-select: none;\n  overflow: hidden;\n  text-overflow: ellipsis;\n\n  ${theme.typography.p1compact}\n\n  ${props => {\n    return {\n      whiteSpace: props.whiteSpace,\n      color: theme.colors.grey[props.disabled ? 40 : 100],\n    };\n  }}\n`;\n\nexport const Label: React.FC<Pick<RadioProps, 'children' | 'label'> & RadioStyles> = props => {\n  if (!props.hasLabel) {\n    return null;\n  }\n\n  const {children, label, ...styles} = props;\n\n  const onClick: MouseEventHandler<HTMLDivElement> = e => {\n    if (!(e.target instanceof Element)) {\n      return;\n    }\n\n    if (['a', 'button'].includes(e.target.nodeName)) {\n      e.stopPropagation();\n      return;\n    }\n  };\n\n  return (\n    <Container onClickCapture={onClick} {...styles}>\n      {children ?? label}\n    </Container>\n  );\n};\n","import {forwardRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {Icon} from './Icon';\nimport {Label} from './Label';\n\nimport type {RadioProps, RadioStyles} from './types';\n\nconst Container = styled.label`\n  position: relative;\n  display: inline-block;\n  vertical-align: top;\n`;\n\nconst Content = styled.div`\n  display: flex;\n  align-items: flex-start;\n  gap: 8px;\n`;\n\nexport const Radio = forwardRef<HTMLLabelElement, RadioProps>((props, ref) => {\n  const {\n    startAdornment,\n    children,\n    label,\n    error,\n    disabled,\n    readOnly,\n    hasLabel,\n    whiteSpace,\n    className,\n\n    qa = 'radio',\n\n    ...rest\n  } = props;\n\n  const styles: RadioStyles = {\n    readOnly,\n    error,\n    disabled,\n    whiteSpace,\n\n    hasLabel: hasLabel ?? (!!label || !!children),\n  };\n\n  const containerProps = {\n    readOnly,\n    error,\n    disabled,\n    className,\n\n    'data-qa': `${qa}-container`,\n  };\n\n  const labelProps = {\n    ...styles,\n\n    children,\n    label,\n  };\n\n  return (\n    <Container ref={ref} {...containerProps}>\n      <Content>\n        {startAdornment}\n        <Icon {...styles} qa={qa} inputProps={rest} />\n        <Label {...labelProps} />\n      </Content>\n    </Container>\n  );\n});\n","import {SearchIcon} from 'icons';\nimport {SizeTokenValue} from 'common';\nimport {Input} from 'Input';\n\nimport type {SearchInputProps} from './types';\n\nexport const SearchInput: React.FC<SearchInputProps> = props => {\n  const startAdornment = (\n    <SearchIcon size={props.size === SizeTokenValue.Small ? SizeTokenValue.Small : SizeTokenValue.Medium} />\n  );\n\n  return <Input startAdornment={startAdornment} {...props} />;\n};\n","import {forwardRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {ChangeEventHandler} from 'react';\nimport type {SegmentedControlOption, SegmentedControlProps} from '../types';\n\nconst Label = styled.label`\n  position: relative;\n  flex-grow: 1;\n\n  :focus-visible::before {\n    content: '';\n    display: block;\n    position: absolute;\n    box-sizing: border-box;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    box-shadow: 0px 0px 3px 2px ${theme.colors.accent[70]};\n    border-radius: 4px;\n    z-index: 1;\n  }\n`;\n\nconst Content = styled.span<Pick<SegmentedControlOption, 'disabled' | 'readOnly'>>`\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  flex-shrink: 0;\n  border-radius: 4px;\n  border: 2px solid transparent;\n  user-select: none;\n\n  ${theme.typography.p1}\n\n  ${({readOnly, disabled}) => {\n    if (disabled) {\n      return {\n        borderColor: theme.colors.grey[20],\n        backgroundColor: theme.colors.grey[20],\n        color: theme.colors.grey[40],\n        cursor: 'default',\n      };\n    }\n\n    return {\n      borderColor: theme.colors.grey[20],\n      backgroundColor: theme.colors.grey[20],\n      color: theme.colors.grey[60],\n      cursor: readOnly ? 'default' : 'pointer',\n\n      ':hover': {\n        backgroundColor: theme.colors.grey[30],\n        borderColor: theme.colors.grey[30],\n        color: theme.colors.grey[100],\n      },\n    };\n  }}\n`;\n\nconst Input = styled.input`\n  position: absolute;\n  visibility: hidden;\n  left: 0;\n  top: 0;\n  width: 0;\n  height: 0;\n  padding: 0;\n\n  :checked + span {\n    cursor: default;\n    color: ${theme.colors.grey[100]};\n    background-color: ${theme.colors.white};\n    border-color: ${theme.colors.grey[30]};\n  }\n`;\n\ntype SegmentedControlItemProps = {\n  option: SegmentedControlOption;\n  checked: boolean;\n} & Pick<SegmentedControlProps, 'name' | 'disabled' | 'readOnly' | 'onChange' | 'qa'>;\n\nexport const SegmentedControlItem = forwardRef<HTMLInputElement, SegmentedControlItemProps>((props, ref) => {\n  const {name, disabled, readOnly, checked, qa, option} = props;\n\n  const isEnabled = !disabled && !readOnly;\n\n  const onChange: ChangeEventHandler<HTMLInputElement> = e => {\n    if (!isEnabled) {\n      return;\n    }\n\n    props.onChange(e, option);\n  };\n\n  const inputProps = {\n    name,\n    disabled,\n    readOnly,\n    checked,\n    onChange,\n\n    type: 'checkbox',\n  };\n\n  const labelProps = {\n    className: option.className,\n\n    tabIndex: isEnabled ? 0 : undefined,\n\n    'data-qa': qa,\n  };\n\n  const contentProps = {\n    disabled,\n    readOnly,\n\n    children: option.label,\n  };\n\n  return (\n    <Label {...labelProps}>\n      <Input ref={ref} {...inputProps} />\n      <Content {...contentProps} />\n    </Label>\n  );\n});\n","import {forwardRef} from 'react';\n\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport {SegmentedControlItem} from './SegmentedControlItem';\n\nimport type {CSSObject} from '@emotion/styled';\nimport type {SegmentedControlOption, SegmentedControlProps} from './types';\n\nconst Container = styled.div<Pick<SegmentedControlProps, 'size' | 'disabled' | 'readOnly' | 'width'>>`\n  position: relative;\n  display: inline-flex;\n  align-items: flex-start;\n  justify-content: flex-start;\n  border-radius: 4px;\n  background-color: ${theme.colors.grey[20]};\n\n  > label > span {\n    ${props => {\n      const isSmall = props.size === SizeTokenValue.Small;\n\n      const styles: CSSObject = {\n        padding: isSmall ? '4px 16px' : '12px 20px',\n        minHeight: isSmall ? 32 : 48,\n      };\n\n      if (props.disabled) {\n        styles.borderColor = theme.colors.grey[20];\n        styles.backgroundColor = theme.colors.grey[20];\n        styles.color = theme.colors.grey[40];\n      }\n\n      return styles;\n    }}\n  }\n\n  ${props => ({\n    width: props.width,\n    pointerEvents: props.disabled || props.readOnly ? 'none' : undefined,\n  })}\n`;\n\nexport const SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>((props, ref) => {\n  const {className, options, size, width, value, qa = 'segmented'} = props;\n\n  const isChecked = (option: SegmentedControlOption): boolean => {\n    if (typeof value === 'undefined') {\n      return false;\n    }\n\n    if (Array.isArray(value)) {\n      return value.includes(option.value);\n    }\n\n    return value === option.value;\n  };\n\n  const children = options.map((option, index) => {\n    const resultProps = {\n      option,\n\n      onChange: props.onChange,\n      name: option.name ?? props.name,\n      disabled: option.disabled ?? props.disabled,\n      readonly: option.readOnly ?? props.readOnly,\n      checked: isChecked(option),\n\n      qa: option.qa ?? `${qa}-element`,\n    };\n\n    return <SegmentedControlItem key={`${index}-${option.value}`} {...resultProps} />;\n  });\n\n  const containerProps = {\n    size,\n    width,\n    children,\n    className,\n\n    disabled: props.disabled,\n    readOnly: props.readOnly,\n\n    'data-qa': qa,\n  };\n\n  return <Container ref={ref} {...containerProps} />;\n});\n","import type {ReactNode, ChangeEvent, HTMLAttributes} from 'react';\nimport type React from 'react';\nimport type {CSSObject} from '@emotion/react';\nimport type {VariableSizeListProps} from 'react-window';\n\nimport type {InputProps} from 'Input';\nimport type {PropsWithChildren, QA, RequiredQA, getQAAttribute} from 'common';\nimport type {DropdownProps} from 'Dropdown';\nimport type {CheckboxTreeOption} from 'CheckboxTree';\n\n/** Единичное значение - для SingleSelect */\nexport type SelectSingleValue = string | number;\n/** Множественное значение - для Select */\nexport type SelectMultipleValue = SelectSingleValue[];\n\n/** Option */\nexport type SelectOption<T = unknown> = {\n  /** Label */\n  label: string;\n  /** Иконка\n   *\n   *\n   * Наличие приведет к отключению virtualize\n   */\n  icon?: ReactNode;\n  /** Дочерние option\n   *\n   * Отображаются только при multiple\n   *\n   * Наличие приведет к рендеру CheckboxTree\n   * и отключению virtualize\n   */\n  childs?: SelectOption<T>[];\n} & PropsWithChildren &\n  Omit<CheckboxTreeOption, 'label'> &\n  T;\n\n/** Пропс компонента рендера option */\nexport type SelectItemProps<T = unknown> = {\n  /** Option */\n  option: SelectOption<T>;\n  /** Выбран */\n  checked: boolean; // isActive\n} & Pick<SelectContextProps, 'onChange' | 'setIsOpen' | 'name' | 'value'> &\n  Pick<HTMLAttributes<HTMLDivElement>, 'style'>;\n\n/** Пропс компонента рендера всех option */\nexport type SelectItemsProps<T = unknown> = {\n  /** Элементы Option */\n  options: SelectOption<T>[];\n\n  /** Ширина дропдауна в пикселях\n   *\n   * используется при virtualize\n   */\n  clientWidth: number | undefined;\n} & RequiredQA &\n  Pick<\n    SelectContextProps,\n    | 'state'\n    | 'name'\n    | 'value'\n    | 'onChange'\n    | 'multiple'\n    | 'setIsOpen'\n    | 'height'\n    | 'maxHeight'\n    | 'virtualize'\n    | 'whiteSpace'\n    | 'loadMore'\n  > &\n  Pick<SelectComponents, 'item'>;\n\n/** Пропс компонента рендера контента dropdown */\nexport type SelectListProps = {\n  /** Перегружаемые компоненты */\n  components?: SelectComponents;\n};\n\n/** Обработчик изменения значения Select */\nexport type SelectListOnChange<T = unknown> = (\n  /** Новое значение */\n  value: SelectMultipleValue,\n  /** Option на котором произошло событие  */\n  option?: SelectOption<T>,\n  /** Событие */\n  event?: ChangeEvent<HTMLInputElement>\n) => void;\n\n/** Обработчик изменения значения SingleSelect */\nexport type SelectSingleOnChange<T = unknown> = (\n  /** Новое значение */\n  value: SelectSingleValue,\n  /** Option на котором произошло событие  */\n  option?: SelectOption<T>,\n  /** Событие */\n  event?: ChangeEvent<HTMLInputElement>\n) => void;\n\n/** Последний результат обработчика LoadMore или SelectFilter\n *\n * Можно расширять другими значениями, например сохраняя номер последней страницы\n */\nexport type LastResult<T = unknown> = {\n  /** Новые или отфильтрованные option */\n  options: SelectOption<T>[];\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n\n/** Обработчик скроллинга в конец списка\n *\n * Позволяет загружать новые элементы при пагинации\n *\n * @returns Новые option\n */\nexport type LoadMore<S extends LastResult = LastResult, T = unknown> = (\n  /** Текущие option */\n  options: SelectOption<T>[],\n  /** Последний результат вызова функции */\n  lastResult?: S\n) => Promise<S>;\n\n/** Обработчик фильтрации option\n *\n * Используется для поиска значений\n * Пример containsFilter\n */\nexport type SelectFilter<S extends LastResult = LastResult, T = unknown> = {\n  /** Обработчик\n   *\n   * @returns Отфильтрованные option. Несуществующие option будут добавлены\n   */\n  cb: (\n    /** Введенный текст */\n    query: string,\n\n    /** Текущие option */\n    options: SelectOption<T>[],\n    /** Последний результат вызова функции */\n    lastResult?: S\n  ) => Promise<S>;\n\n  /** debounce delay  */\n  delay?: number;\n};\n\n/** Состояние Select */\nexport enum SelectState {\n  /** По умолчанию */\n  Default = 'default',\n  /** Вызван обработчик filter */\n  Searching = 'searching',\n  /** Список отфильтрован */\n  Filtred = 'filtred',\n  /** Вызван обработчик loadMore */\n  LoadingMore = 'loadingMore',\n}\n\n/** Перегружаемые компоненты */\ntype SelectComponents = {\n  /** Подпись в верхнем баннере */\n  hint?: ReactNode;\n  /** Шапка */\n  header?: ReactNode;\n  /** Подвал */\n  footer?: ReactNode;\n\n  /** При поиске */\n  searching?: ReactNode;\n  /** При отсутствии результатов поиска */\n  notFound?: ReactNode;\n\n  /** Дробдаун (с шапкой, элементами и пр.) */\n  list?: React.FC<SelectListProps>;\n  /** Элементы списка */\n  items?: React.FC<SelectItemsProps>;\n  /** Элемент списка\n   *\n   * Не используется при virtualize\n   */\n  item?: React.FC<SelectItemProps>;\n  /** Инпут */\n  input?: React.FC<Omit<InputProps, 'value' | 'onChange'>>;\n};\n\ntype CommonProps<T extends LastResult = LastResult> = {\n  /** Значения */\n  value: SelectMultipleValue;\n  /** Обработчик изменения значения */\n  onChange: SelectListOnChange;\n\n  /** Множественный выбор */\n  multiple?: boolean;\n  /** Количество Chips с label выбранных элементов\n   *\n   * Без передачи, будет показано просто кол-во выбранных\n   */\n  showChips?: number;\n\n  /** Максимальная длинна label выбранного элемента.\n   *\n   * Показывает tooltip при превышении */\n  maxChipLength?: number;\n  /** Обработчик длинны label выбранного элемента*/\n  maxChipLengthFunc?: (label: string) => string;\n\n  /** Использовать перенос строк в input */\n  wrap?: boolean;\n\n  /** Фильтр элементов\n   *\n   * При передаче будет возможность ввода текста в input\n   *\n   * Обработчик может фильтровать текущие элементы, а также возвращать новые\n   *\n   * которые будут добавлены (пример: при поиска на backend)\n   */\n  filter?: SelectFilter<T>;\n\n  /** Использовать виртуализацию\n   *\n   * Использовть при большом количестве элементов > 1000\n   *\n   * Виртуализация отключается при передаче options с childs\n   *\n   * Виртуализация отключается при количестве элементов < 20\n   */\n  virtualize?: Pick<VariableSizeListProps, 'itemSize'> | boolean;\n} & Pick<InputProps, 'disabled' | 'readOnly' | 'name'> &\n  Pick<CSSObject, 'whiteSpace'>;\n\nexport type SelectProps<S extends LastResult = LastResult, T = unknown> = {\n  /** Options */\n  options: SelectOption<T>[];\n\n  /** Кастомные свойства Dropdown\n   *\n   * Используется в специфических ситуациях\n   */\n  dropdownProps?: Partial<DropdownProps>;\n\n  /** При скроллинге в конец списка\n   *\n   * Позволяет загружать новые элементы при пагинации\n   */\n  onLoadMore?: LoadMore<S>;\n} & QA &\n  CommonProps<S> &\n  SelectListProps &\n  Omit<InputProps, 'value' | 'onChange'> &\n  Partial<Pick<DropdownProps, 'isOpen' | 'setIsOpen'>>;\n\nexport type SingleSelectProps<T extends LastResult = LastResult> = {\n  /** Значение */\n  value: SelectSingleValue | undefined;\n  /** Обработчик изменения значения */\n  onChange: SelectSingleOnChange;\n} & Omit<SelectProps<T>, 'value' | 'onChange' | 'multiple'>;\n\nexport type SelectContextProps = {\n  options: SelectOption[];\n  filtred: SelectOption[];\n\n  state: SelectState;\n  setState: (state: SelectState) => void;\n\n  getQA: ReturnType<typeof getQAAttribute>;\n\n  onClear: () => void;\n\n  loadMore: (target: HTMLDivElement | undefined) => void;\n  filterOptions: (query: string) => void;\n} & CommonProps &\n  Pick<DropdownProps, 'isOpen' | 'setIsOpen' | 'height'> &\n  Required<Pick<DropdownProps, 'maxHeight'>>;\n","import type {SelectMultipleValue, SelectOption} from 'Select/types';\n\nexport const getValueLabel = (options: SelectOption[], value: SelectMultipleValue): string => {\n  return findOptions(options, value)[0]?.label ?? '';\n};\n\nexport const findOptions = (options: SelectOption[], value: SelectMultipleValue): SelectOption[] => {\n  const result: SelectOption[] = [];\n\n  for (const option of options) {\n    if (value.includes(option.value)) {\n      result.push(option);\n    }\n\n    if (option.childs) {\n      result.push(...findOptions(option.childs, value));\n    }\n\n    if (result.length === value.length) {\n      break;\n    }\n  }\n\n  return result;\n};\n\nexport const findOptionByLabel = (options: SelectOption[], label: string): SelectOption | undefined => {\n  for (const option of options) {\n    if (option.label.toLowerCase() === label) {\n      return option;\n    }\n\n    if (option.childs) {\n      const childOption = findOptionByLabel(option.childs, label);\n      if (childOption) {\n        return childOption;\n      }\n    }\n  }\n};\n","'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useContext, useEffect, useState} from 'react';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {CloseIcon} from 'icons';\n\nimport {Chip, ChipVariant} from 'Chip';\n\nimport {SelectContext} from 'Select/Select';\nimport {findOptions} from 'Select/utils';\n\nimport type {ChipProps} from 'Chip';\nimport type {InputProps} from 'Input';\nimport type {SelectOption} from 'Select/types';\n\nconst ChipContainer = styled.div<Pick<InputProps, 'disabled'>>`\n  display: flex;\n  padding: 2px;\n  border-radius: 2px;\n  align-items: center;\n\n  div {\n    padding: 0 4px;\n  }\n\n  button {\n    width: 16px;\n    height: 16px;\n    padding: 0;\n    box-sizing: border-box;\n    outline: none;\n    border: 0;\n    border-radius: 1px;\n    cursor: pointer;\n    color: ${theme.colors.grey[40]};\n    background-color: transparent;\n\n    :hover {\n      background-color: ${theme.colors.grey[60]};\n    }\n  }\n\n  ${props => {\n    if (props.disabled) {\n      return {\n        ...theme.typography.p2,\n\n        color: theme.colors.grey[40],\n        backgroundColor: theme.colors.grey[20],\n        pointerEvents: 'none',\n      };\n    }\n\n    return {\n      ...theme.typography.p2,\n\n      color: theme.colors.white,\n      backgroundColor: theme.colors.grey[70],\n    };\n  }}\n`;\n\nconst ChipsMultiple: React.FC = () => {\n  const {\n    value,\n    options,\n    onChange,\n    disabled,\n    readOnly,\n    showChips = 1,\n    maxChipLength,\n    maxChipLengthFunc,\n  } = useContext(SelectContext);\n\n  const [labels, setLabels] = useState<SelectOption[]>([]);\n\n  const chipProps: ChipProps = {\n    variant: ChipVariant.Filled,\n    size: SizeTokenValue.Small,\n    disabled: disabled || readOnly,\n    maxLength: maxChipLength,\n    maxLengthFunc: maxChipLengthFunc,\n  };\n\n  const child = labels.slice(0, showChips).map(option => {\n    const onDelete = () => {\n      onChange(value.filter(item => item !== option.value));\n    };\n\n    return <Chip key={option.value} onDelete={onDelete} label={option.label} {...chipProps} />;\n  });\n\n  if (labels.length > showChips) {\n    child.push(\n      <Chip key=\"rest\" {...chipProps}>\n        {`+${labels.length - showChips}`}\n      </Chip>\n    );\n  }\n\n  useEffect(() => {\n    setLabels(findOptions(options, value));\n  }, [options, value]);\n\n  return child;\n};\n\nexport const Chips: React.FC = () => {\n  const {value, onClear, showChips, disabled, readOnly} = useContext(SelectContext);\n\n  if (!value.length) {\n    return null;\n  }\n\n  if (showChips && showChips > 0) {\n    return <ChipsMultiple />;\n  }\n\n  return (\n    <ChipContainer disabled={disabled || readOnly}>\n      <div>{value.length}</div>\n\n      <button type=\"button\" onClick={onClear}>\n        <CloseIcon size={SizeTokenValue.Small} />\n      </button>\n    </ChipContainer>\n  );\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {Label, FieldComponent as BaseFieldComponent, inputStyle as baseGetInputStyle} from 'Input';\nimport {SelectContext} from 'Select/Select';\n\nimport {Chips} from './Chips';\n\nimport type {InputInputComponent, InputStyles} from 'Input';\n\nconst Container = styled.div`\n  position: relative;\n  flex-grow: 1;\n  height: 100%;\n\n  input:read-only {\n    cursor: default;\n  }\n`;\n\nconst getInputStyle = (style: InputStyles) => {\n  return baseGetInputStyle(style, {\n    padding: style.isFilled && style.isLabeled && !style.isSmall ? '20px 0 4px' : 0,\n  });\n};\n\nconst FieldComponent = styled(BaseFieldComponent)`\n  display: flex;\n  align-items: center;\n  gap: 4px;\n  flex-wrap: wrap;\n`;\n\nconst InputComponent = styled.input`\n  width: 0;\n  min-width: 30px;\n  margin: 0;\n  padding: 0;\n  flex-grow: 1;\n  border: none;\n  outline: none;\n  background-color: transparent;\n  cursor: ${props => (props.readOnly ? 'default' : undefined)};\n\n  ${theme.typography.p1}\n`;\n\nexport const InputChips: InputInputComponent = props => {\n  const isReadOnly = !useContext(SelectContext).filter;\n\n  const componentProps = {\n    isReadOnly,\n\n    style: getInputStyle(props.style),\n  };\n\n  const inputProps = {\n    ...props.inputProps,\n\n    readOnly: isReadOnly,\n\n    'data-qa': props.qa,\n  };\n\n  return (\n    <Container>\n      <Label {...props} />\n      <FieldComponent as=\"div\" {...componentProps} autoComplete=\"off\">\n        <Chips />\n        <InputComponent {...inputProps} autoComplete=\"off\" />\n      </FieldComponent>\n    </Container>\n  );\n};\n","'use client';\n\nimport {useContext, useEffect, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {Label, FieldComponent, inputStyle} from 'Input';\nimport {SelectContext} from 'Select/Select';\n\nimport type {CSSProperties} from 'react';\nimport type {InputInputComponent, InputStyles} from 'Input';\nimport type {SelectProps} from 'Select/types';\n\nconst Container = styled.div<Pick<SelectProps, 'isOpen'>>`\n  position: relative;\n  flex-grow: 1;\n  height: 100%;\n\n  input:read-only {\n    cursor: default;\n  }\n\n  input {\n    ${props => ({display: props.isOpen ? undefined : 'none'})}\n  }\n\n  input + div {\n    ${props => ({display: props.isOpen ? 'none' : ''})}\n  }\n`;\n\nconst divStyle = (style: InputStyles, acc: CSSProperties | undefined) => {\n  return inputStyle(style, {\n    paddingTop: style.isSmall ? '4px' : '19px',\n    ...acc,\n  });\n};\n\nexport const WrapInput: InputInputComponent = props => {\n  const divProps = {\n    ...props.inputProps,\n\n    children: props.value,\n    onFocus: props.onFocus,\n\n    autoComplete: 'off',\n    onBlur: undefined,\n    tabIndex: 0,\n\n    style: divStyle(props.style, props.inputProps?.style),\n\n    'data-qa': `${props.qa}-input-div`,\n  };\n\n  return (\n    <Container>\n      <Label {...props} />\n      <FieldComponent as=\"div\" {...divProps} />\n    </Container>\n  );\n};\n\nexport const WrapInputEditable: InputInputComponent = props => {\n  const {isOpen} = useContext(SelectContext);\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const inputProps = {\n    ...props.inputProps,\n\n    autoComplete: 'off',\n    onFocus: undefined,\n    style: inputStyle(props.style, props.inputProps?.style),\n\n    'data-qa': `${props.qa}-input`,\n  };\n\n  const divProps = {\n    ...props.inputProps,\n\n    children: props.value,\n    onFocus: props.onFocus,\n\n    autoComplete: 'off',\n    onBlur: undefined,\n    tabIndex: isOpen ? undefined : 0,\n    style: divStyle(props.style, props.inputProps?.style),\n\n    'data-qa': `${props.qa}-input-div`,\n  };\n\n  useEffect(() => {\n    if (!isOpen) {\n      return;\n    }\n\n    setTimeout(() => {\n      inputRef.current?.focus();\n    });\n  }, [isOpen]);\n\n  return (\n    <Container isOpen={isOpen}>\n      <Label {...props} />\n      <FieldComponent ref={inputRef} {...inputProps} />\n      <FieldComponent as=\"div\" {...divProps} />\n    </Container>\n  );\n};\n","'use client';\n\nimport {useContext} from 'react';\n\nimport {InputComponent} from 'Input';\nimport {SelectContext} from 'Select/Select';\n\nimport type {InputInputComponent} from 'Input';\n\nexport const NoWrapInput: InputInputComponent = props => {\n  const isReadOnly = !useContext(SelectContext).filter;\n\n  const inputProps = {\n    ...props,\n\n    inputProps: {...props.inputProps, readOnly: isReadOnly},\n\n    style: {...props.style, isReadOnly},\n  };\n\n  return <InputComponent {...inputProps} />;\n};\n","'use client';\n\nimport {useContext, useEffect, useRef, useState} from 'react';\n\nimport {SelectContext} from 'Select/Select';\nimport {SelectState} from 'Select/types';\nimport {findOptionByLabel, getValueLabel} from 'Select/utils';\n\nimport type {InputProps} from 'Input';\nimport type {FocusEventHandler} from 'react';\n\nexport const useEditableInput = (props: Omit<InputProps, 'value' | 'onChange'>) => {\n  const context = useContext(SelectContext);\n  const {value, options, filterOptions, setState, filter, multiple, wrap, isOpen} = context;\n\n  const [inputValue, setInputValue] = useState('');\n\n  const timeout = useRef<ReturnType<typeof setTimeout>>();\n\n  const onChange: InputProps['onChange'] = e => {\n    const newValue = e.target.value;\n\n    clearTimeout(timeout.current);\n\n    setInputValue(newValue);\n\n    if (!newValue) {\n      setState(SelectState.Default);\n      return;\n    }\n\n    timeout.current = setTimeout(() => filterOptions(newValue), filter?.delay ?? 500);\n  };\n\n  const onFocus: FocusEventHandler<HTMLInputElement> = e => {\n    if (context.disabled || context.readOnly) {\n      return;\n    }\n\n    setInputValue('');\n\n    setState(SelectState.Default);\n\n    context.setIsOpen(true);\n    props.onFocus?.(e);\n  };\n\n  const onBlur: FocusEventHandler<HTMLInputElement> = e => {\n    props.onBlur?.(e);\n\n    if (multiple || !inputValue) {\n      //if multiple, clear on closed\n      //if single, set cur value on closed\n      return;\n    }\n\n    const sameLabelOption = findOptionByLabel(options, inputValue.toLowerCase());\n    if (sameLabelOption && !sameLabelOption.disabled && !sameLabelOption.readOnly) {\n      // has same value\n      if (value.includes(sameLabelOption.value)) {\n        return;\n      }\n\n      // new value\n      context.onChange([sameLabelOption.value]);\n      return;\n    }\n  };\n\n  const onClearClick: InputProps['onClearClick'] = e => {\n    context.onClear();\n    props.onClearClick?.(e);\n  };\n\n  const inputProps = {\n    ...props,\n\n    onChange,\n    onFocus,\n    onBlur,\n    onClearClick,\n\n    value: inputValue,\n\n    filled: !!inputValue || !!value.length,\n    focused: context.isOpen,\n  } as InputProps;\n\n  useEffect(() => {\n    if (isOpen) {\n      return;\n    }\n\n    //if closed and multiple, clear\n    //if closed and single, set label\n    setInputValue(multiple ? '' : getValueLabel(options, value));\n  }, [multiple, value, options, isOpen]);\n\n  return {inputProps, multiple, wrap};\n};\n","import {forwardRef} from 'react';\n\nimport {Input} from 'Input';\n\nimport {InputChips} from '../InputChips';\nimport {WrapInputEditable} from '../WrapInput';\nimport {NoWrapInput} from '../NoWrapInput';\n\nimport {useEditableInput} from './hook';\n\nimport type {InputProps} from 'Input';\n\nexport const EditableInput = forwardRef<HTMLInputElement, Omit<InputProps, 'value' | 'onChange'>>((props, ref) => {\n  const {inputProps, multiple, wrap} = useEditableInput(props);\n\n  let inputComponent = wrap ? WrapInputEditable : NoWrapInput;\n\n  if (multiple) {\n    inputComponent = InputChips;\n  }\n\n  return <Input ref={ref} inputComponent={inputComponent} {...inputProps} />;\n});\n","'use client';\n\nimport {useContext, useEffect, useState} from 'react';\n\nimport {SelectContext} from 'Select/Select';\nimport {getValueLabel} from 'Select/utils';\n\nimport type {InputProps} from 'Input';\nimport type {FocusEventHandler} from 'react';\n\nexport const useReadonlyInput = (props: Omit<InputProps, 'value' | 'onChange'>) => {\n  const context = useContext(SelectContext);\n  const {value, options, multiple, wrap} = context;\n\n  const [inputValue, setInputValue] = useState<string>('');\n\n  const onChange = () => {};\n\n  const onFocus: FocusEventHandler<HTMLInputElement> = e => {\n    if (context.disabled || context.readOnly) {\n      return;\n    }\n\n    context.setIsOpen(true);\n    props.onFocus?.(e);\n  };\n\n  const onClearClick: InputProps['onClearClick'] = e => {\n    context.onClear();\n    props.onClearClick?.(e);\n  };\n\n  const inputProps = {\n    ...props,\n\n    onChange,\n    onFocus,\n    onClearClick,\n\n    value: inputValue,\n\n    filled: !!value.length,\n    focused: context.isOpen,\n  } as InputProps;\n\n  useEffect(() => {\n    setInputValue(multiple ? '' : getValueLabel(options, value));\n  }, [multiple, value, options]);\n\n  return {inputProps, multiple, wrap};\n};\n","import {forwardRef} from 'react';\n\nimport {Input} from 'Input';\n\nimport {InputChips} from '../InputChips';\nimport {NoWrapInput} from '../NoWrapInput';\nimport {WrapInput} from '../WrapInput';\n\nimport {useReadonlyInput} from './hook';\n\nimport type {InputProps} from 'Input';\n\nexport const ReadonlyInput = forwardRef<HTMLInputElement, Omit<InputProps, 'value' | 'onChange'>>((props, ref) => {\n  const {inputProps, multiple, wrap} = useReadonlyInput(props);\n\n  let inputComponent = wrap ? WrapInput : NoWrapInput;\n\n  if (multiple) {\n    inputComponent = InputChips;\n  }\n\n  return <Input ref={ref} inputComponent={inputComponent} {...inputProps} />;\n});\n","'use client';\n\nimport {forwardRef, useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport {SizeTokenValue} from 'common';\nimport {ArrowDownIcon, ArrowUpIcon} from 'icons';\nimport {SelectContext} from 'Select/Select';\n\nimport {EditableInput} from './EditableInput';\nimport {ReadonlyInput} from './ReadonlyInput';\n\nimport type {InputProps} from 'Input';\n\nconst EndAdornment = styled.div`\n  display: flex;\n  gap: 8px;\n  align-items: center;\n`;\n\nexport const SelectInput = forwardRef<HTMLInputElement, Omit<InputProps, 'value' | 'onChange'>>((props, ref) => {\n  const context = useContext(SelectContext);\n\n  const Component = context.filter ? EditableInput : ReadonlyInput;\n\n  const Chevron = context.isOpen ? ArrowUpIcon : ArrowDownIcon;\n\n  const endAdorment = (\n    <EndAdornment>\n      {props.endAdornment}\n      <Chevron size={SizeTokenValue.Small} />\n    </EndAdornment>\n  );\n\n  return <Component ref={ref} {...props} endAdornment={endAdorment} />;\n});\n","import type {VariableSizeListProps} from 'react-window';\n\nimport type {SelectMultipleValue, SelectItemsProps, SelectOption} from 'Select/types';\n\nexport const getItemSize = (props: SelectItemsProps): VariableSizeListProps['itemSize'] => {\n  return index => {\n    let clientWidth = props.clientWidth;\n\n    if (!clientWidth || props.whiteSpace === 'nowrap') {\n      return 32;\n    }\n\n    clientWidth -= props.multiple ? 65 : 24;\n\n    const labelWidth = props.options[index].label.length * 8.625;\n\n    return 20 * Math.ceil(labelWidth / clientWidth) + 12;\n  };\n};\n\nexport const getValues = (option: SelectOption): SelectMultipleValue => {\n  return option.childs ? [option.value, ...option.childs.flatMap(getValues)] : [option.value];\n};\n","import {useEffect, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {VariableSizeList} from 'react-window';\n\nimport theme from 'theme';\nimport {Checkbox} from 'Checkbox';\n\nimport {CheckboxTree} from 'CheckboxTree';\n\nimport {SelectState} from 'Select/types';\n\nimport {getItemSize, getValues} from '../utils';\n\nimport type {SelectOption, SelectItemsProps} from 'Select/types';\nimport type {CheckboxTreeProps} from 'CheckboxTree';\nimport type {ListProps, VariableSizeListProps} from 'react-window';\nimport type {ChangeEventHandler, UIEventHandler} from 'react';\n\nconst BaseContainer = styled.div<Pick<SelectItemsProps, 'height' | 'maxHeight' | 'whiteSpace'>>`\n  label {\n    display: block;\n    padding: 6px 12px;\n    padding-left: 12px;\n\n    :hover {\n      background-color: ${theme.colors.grey[10]};\n      cursor: pointer;\n    }\n  }\n`;\n\nconst Container = styled(BaseContainer)`\n  padding: 8px 0;\n  overflow: auto;\n  text-overflow: ellipsis;\n\n  ${theme.scroll}\n\n  ${props => ({height: props.height, maxHeight: props.maxHeight, whiteSpace: props.whiteSpace})}\n`;\n\nconst VirtualizedContainer = styled(BaseContainer)`\n  padding: 8px 0;\n\n  > div {\n    overflow: auto;\n    text-overflow: ellipsis;\n\n    ${theme.scroll}\n\n    ${props => ({height: props.height, maxHeight: props.maxHeight, whiteSpace: props.whiteSpace})}\n  }\n`;\n\nconst LabelContainer = styled.div`\n  display: flex;\n  gap: 8px;\n`;\n\nconst VirtualizedItem: ListProps<SelectItemsProps>['children'] = ({data, index, style}) => {\n  const option = data.options[index];\n  const value = data.value;\n  const checked = value.includes(option.value);\n\n  const onChange: ChangeEventHandler<HTMLInputElement> = e => {\n    const newValues = checked ? value.filter(value => value !== option.value) : [...value, option.value];\n\n    data.onChange(newValues, option, e);\n  };\n\n  const optionProps = {...option, checked, onChange};\n\n  return (\n    <div style={style}>\n      <Checkbox {...optionProps} />\n    </div>\n  );\n};\n\nconst Virtualized: React.FC<SelectItemsProps> = props => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const ref = useRef<VariableSizeList>(null);\n\n  const {options, height, maxHeight} = props;\n\n  const itemSize = typeof props.virtualize === 'object' ? props.virtualize.itemSize : getItemSize(props);\n\n  const onScroll = () => {\n    props.loadMore(containerRef.current?.children?.[0] as HTMLDivElement);\n  };\n\n  const containerProps = {\n    height,\n    maxHeight,\n    whiteSpace: props.whiteSpace,\n  };\n\n  const listProps = {\n    itemSize,\n    onScroll,\n\n    itemData: props,\n    itemCount: options.length,\n    children: VirtualizedItem,\n    height: height ?? maxHeight,\n    width: '100%',\n  } as VariableSizeListProps;\n\n  useEffect(() => {\n    ref.current?.resetAfterIndex(0);\n  }, [options]);\n\n  return (\n    <VirtualizedContainer ref={containerRef} {...containerProps}>\n      <VariableSizeList ref={ref} {...listProps} />\n    </VirtualizedContainer>\n  );\n};\n\nexport const SelectItemsMultiple: React.FC<SelectItemsProps> = props => {\n  if (props.virtualize) {\n    const canVirtualize = props.options.findIndex(option => !!option.icon || !!option.childs?.length) === -1;\n    if (canVirtualize) {\n      return <Virtualized {...props} />;\n    }\n  }\n\n  const onChange: CheckboxTreeProps['onChange'] = (newValues, target, e) => {\n    props.onChange(newValues, target as SelectOption, e);\n  };\n\n  const onScroll: UIEventHandler<HTMLDivElement> = e => {\n    props.loadMore(e.target as HTMLDivElement);\n  };\n\n  const opened = props.state === SelectState.Filtred ? props.options.flatMap(getValues) : undefined;\n\n  let options = props.options;\n\n  const hasIcons = props.options.findIndex(option => !!option.icon) !== -1;\n  if (hasIcons) {\n    options = props.options.map(option => {\n      if (!option.icon) {\n        return option;\n      }\n\n      const children = (\n        <LabelContainer>\n          {option.icon}\n          <div>{option.children ?? option.label}</div>\n        </LabelContainer>\n      );\n\n      return {...option, children};\n    });\n  }\n\n  const containerProps = {\n    onScroll,\n    height: props.height,\n    maxHeight: props.maxHeight,\n    whiteSpace: props.whiteSpace,\n  };\n\n  const treeProps = {\n    opened,\n    options,\n    onChange,\n    name: props.name,\n    value: props.value,\n  };\n\n  return (\n    <Container {...containerProps}>\n      <CheckboxTree {...treeProps} />\n    </Container>\n  );\n};\n","import {memo} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {Placement} from 'common';\n\nimport {Tooltip} from 'Tooltip';\n\nimport type {ListChildComponentProps} from 'react-window';\n\nimport type {CheckboxProps} from 'Checkbox';\nimport type {SelectItemProps, SelectItemsProps} from 'Select/types';\n\nconst Container = styled.label<Pick<CheckboxProps, 'checked' | 'disabled'>>`\n  position: relative;\n  display: flex;\n  gap: 8px;\n  padding: 6px 12px;\n  word-wrap: break-word;\n  box-sizing: border-box;\n  user-select: none;\n\n  ${theme.typography.p1compact};\n\n  :hover {\n    ${props => {\n      if (props.disabled) {\n        return;\n      }\n\n      return {\n        backgroundColor: theme.colors.grey[10],\n        color: theme.colors.grey[100],\n        cursor: 'pointer',\n      };\n    }}\n  }\n\n  ${props => {\n    if (props.checked) {\n      return {\n        color: theme.colors.white,\n        backgroundColor: theme.colors.accent[90],\n      };\n    }\n\n    if (props.disabled) {\n      return {\n        color: theme.colors.grey[40],\n      };\n    }\n  }}\n\n  input {\n    position: absolute;\n    visibility: hidden;\n    left: 0;\n    top: 0;\n    width: 0;\n    height: 0;\n    pointer-events: none;\n  }\n`;\n\nconst SelectItem = memo<SelectItemProps>(props => {\n  const {\n    name,\n    style,\n    checked,\n    option,\n    option: {label, icon, value, disabled, children, tooltip},\n  } = props;\n\n  const onChange: CheckboxProps['onChange'] = e => {\n    if (disabled) {\n      return;\n    }\n\n    props.onChange([option.value], option, e);\n    props.setIsOpen(false);\n  };\n\n  const containerProps = {style, checked, disabled};\n\n  const inputProps = {\n    value,\n    checked,\n    onChange,\n\n    type: 'radio',\n    name: name ? `${name}-option` : undefined,\n  };\n\n  const child = (\n    <Container {...containerProps}>\n      <input {...inputProps} />\n      {icon}\n      <div>{children ?? label}</div>\n    </Container>\n  );\n\n  if (!tooltip) {\n    return child;\n  }\n\n  return (\n    <Tooltip placement={Placement.Right} content={tooltip}>\n      {child}\n    </Tooltip>\n  );\n});\n\ntype ItemProps = Omit<ListChildComponentProps<SelectItemsProps>, 'style'> & Pick<SelectItemProps, 'style'>;\n\nexport const Item: React.FC<ItemProps> = ({data, index, style}) => {\n  const option = data.options[index];\n  const Component = data.item ?? SelectItem;\n\n  return (\n    <Component\n      key={option.value}\n      option={option}\n      style={style}\n      name={data.name}\n      value={data.value}\n      checked={data.value.includes(option.value)}\n      onChange={data.onChange}\n      setIsOpen={data.setIsOpen}\n    />\n  );\n};\n","import {memo, useEffect, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {VariableSizeList} from 'react-window';\n\nimport theme from 'theme';\n\nimport {SelectItemsMultiple} from './SelectItemsMultiple';\nimport {Item} from './SelectItem';\nimport {getItemSize} from './utils';\n\nimport type {SelectItemsProps} from '../types';\nimport type {VariableSizeListProps} from 'react-window';\nimport type {UIEventHandler} from 'react';\n\nconst BaseContainer = styled.div<Pick<SelectItemsProps, 'height' | 'maxHeight' | 'whiteSpace'>>`\n  mark {\n    color: ${theme.colors.accent[80]};\n    background-color: transparent;\n  }\n`;\n\nconst Container = styled(BaseContainer)`\n  padding: 8px 0;\n  overflow: auto;\n\n  ${theme.scroll}\n\n  ${props => ({height: props.height, maxHeight: props.maxHeight, whiteSpace: props.whiteSpace})}\n`;\n\nconst VirtualizedContainer = styled(BaseContainer)`\n  padding: 8px 0;\n\n  > div {\n    overflow: auto;\n\n    ${theme.scroll}\n\n    ${props => ({height: props.height, maxHeight: props.maxHeight, whiteSpace: props.whiteSpace})}\n  }\n`;\n\nconst Virtualized: React.FC<SelectItemsProps> = props => {\n  const {options, height, maxHeight, whiteSpace, virtualize} = props;\n\n  const ref = useRef<VariableSizeList>(null);\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const itemSize = typeof virtualize === 'object' ? virtualize.itemSize : getItemSize(props);\n\n  const onScroll = () => {\n    props.loadMore(containerRef.current?.children?.[0] as HTMLDivElement);\n  };\n\n  const containerProps = {height, maxHeight, whiteSpace};\n\n  const listProps = {\n    itemSize,\n    onScroll,\n\n    width: '100%',\n    height: height ?? maxHeight,\n    itemCount: options.length,\n    itemData: props,\n    children: Item,\n  } as VariableSizeListProps;\n\n  useEffect(() => {\n    ref.current?.resetAfterIndex(0);\n  }, [options]);\n\n  return (\n    <VirtualizedContainer ref={containerRef} {...containerProps}>\n      <VariableSizeList ref={ref} {...listProps} />\n    </VirtualizedContainer>\n  );\n};\n\nexport const SelectItems = memo<SelectItemsProps>(props => {\n  if (props.multiple && !props.item) {\n    return <SelectItemsMultiple {...props} />;\n  }\n\n  if (props.virtualize) {\n    const canVirtualize = props.options.findIndex(option => !!option.icon) === -1;\n    if (canVirtualize) {\n      return <Virtualized {...props} />;\n    }\n  }\n\n  const onScroll: UIEventHandler<HTMLDivElement> = e => {\n    props.loadMore(e.target as HTMLDivElement);\n  };\n\n  const child = props.options.map((option, index) => <Item key={option.value} index={index} data={props} />);\n\n  const containerProps = {\n    onScroll,\n\n    height: props.height,\n    maxHeight: props.maxHeight,\n    whiteSpace: props.whiteSpace,\n  };\n\n  return <Container {...containerProps}>{child}</Container>;\n});\n","import {useState} from 'react';\nimport styled from '@emotion/styled';\n\nimport {SizeTokenValue} from 'common';\nimport {Banner} from 'Banner';\n\nimport type {PropsWithChildren} from 'common';\n\nconst Container = styled.div`\n  padding: 12px 12px 0;\n`;\n\nexport const Hint: React.FC<PropsWithChildren> = props => {\n  const [isOpen, setIsOpen] = useState(true);\n\n  if (!isOpen || !props.children) {\n    return null;\n  }\n\n  const onClose = () => setIsOpen(false);\n\n  const bannerProps = {...props, onClose, size: SizeTokenValue.XSmall};\n\n  return (\n    <Container>\n      <Banner {...bannerProps} />\n    </Container>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {Loader as BaseLoader} from 'Loader';\n\nimport type {PropsWithChildren} from 'common';\n\nexport const Container = styled.div`\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  color: ${theme.colors.grey[40]};\n\n  ${theme.typography.p1compact};\n`;\n\nexport const Loader: React.FC<PropsWithChildren> = ({children}) => (\n  <Container>\n    <BaseLoader size={SizeTokenValue.Small} />\n    <div>{children}</div>\n  </Container>\n);\n","'use client';\n\nimport {useContext, useState} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {DropdownContent} from 'Dropdown';\n\nimport {SelectContext} from '../Select';\nimport {SelectItems} from '../SelectItems';\nimport {Hint} from '../Hint';\nimport {Loader} from '../Loader';\n\nimport {SelectState} from '../types';\n\nimport type {SelectItemsProps, SelectListProps} from '../types';\n\nconst Empty = styled.div`\n  padding: 12px;\n  color: ${theme.colors.grey[40]};\n\n  ${theme.typography.p1};\n`;\n\nexport const SelectList: React.FC<SelectListProps> = ({components}) => {\n  const context = useContext(SelectContext);\n  const {state} = context;\n\n  const isFiltred = state === SelectState.Filtred;\n  const options = isFiltred ? context.filtred : context.options;\n\n  const [clientWidth, setClientWidth] = useState<number>();\n\n  if (state === SelectState.Searching) {\n    const child = components?.searching ?? (\n      <Empty>\n        <Loader>Поиск совпадений</Loader>\n      </Empty>\n    );\n\n    return <DropdownContent>{child}</DropdownContent>;\n  }\n\n  if (isFiltred && !options.length) {\n    const child = components?.notFound ?? <Empty>Ничего не найдено</Empty>;\n    return <DropdownContent>{child}</DropdownContent>;\n  }\n\n  if (!options.length && !components?.header && !components?.footer) {\n    return null;\n  }\n\n  const ref = (e: HTMLDivElement | null) => {\n    setTimeout(() => {\n      if (!e?.clientWidth) {\n        return;\n      }\n\n      setClientWidth(e.clientWidth);\n    });\n  };\n\n  const Component = components?.items ?? SelectItems;\n\n  const selectItemsProps: SelectItemsProps = {\n    state,\n    options,\n    clientWidth,\n    name: context.name,\n    value: context.value,\n    onChange: context.onChange,\n    multiple: context.multiple,\n    setIsOpen: context.setIsOpen,\n    loadMore: context.loadMore,\n    height: context.height,\n    maxHeight: context.maxHeight,\n    virtualize: options.length > 20 ? context.virtualize : undefined,\n    whiteSpace: context.whiteSpace,\n\n    item: components?.item,\n    qa: context.getQA('list'),\n  };\n\n  const child = !!clientWidth && <Component {...selectItemsProps} />;\n\n  return (\n    <DropdownContent ref={ref}>\n      {components?.hint && <Hint>{components.hint}</Hint>}\n      {components?.header}\n      {child}\n      {components?.footer}\n    </DropdownContent>\n  );\n};\n","import {useRef, useState} from 'react';\n\nimport {useUpdateEffect} from 'common';\n\nimport {SelectState} from '../types';\n\nimport type {LastResult, SelectContextProps, SelectOption, SelectProps, SelectSingleValue} from '../types';\n\ntype TUseOptionsState = (\n  initial?: SelectOption[]\n) => [SelectOption[], (opts: SelectOption[]) => void, (opts: SelectOption[]) => void];\n\nconst useOptionsState: TUseOptionsState = (initial = []) => {\n  const [options, setOptions] = useState<SelectOption[]>(initial);\n\n  const upsertOptions = (newOptions: SelectOption[]) => {\n    const curOptionsValue = options.reduce(\n      (acc, option) => {\n        acc[option.value] = true;\n        return acc;\n      },\n      {} as Record<SelectSingleValue, true>\n    );\n\n    const diffOptions = newOptions.filter(option => !curOptionsValue[option.value]);\n    if (!diffOptions.length) {\n      return;\n    }\n\n    setOptions([...options, ...diffOptions]);\n  };\n\n  return [options, setOptions, upsertOptions];\n};\n\nexport const useOptions = (\n  baseOptions: SelectProps['options'],\n  filter: SelectProps['filter'],\n  onLoadMore: SelectProps['onLoadMore']\n) => {\n  const [state, setStateValue] = useState<SelectState>(SelectState.Default);\n  const [options, setOptions, upsertOptions] = useOptionsState(baseOptions);\n  const [filtred, setFiltred, upsertFiltred] = useOptionsState();\n\n  const lastQuery = useRef<string>('');\n  const lastFilterResult = useRef<LastResult>();\n  const lastMoreResult = useRef<LastResult>();\n\n  const timeout = useRef<ReturnType<typeof setTimeout>>();\n\n  const setState: SelectContextProps['setState'] = newState => {\n    if (state === SelectState.Filtred && newState === SelectState.Default) {\n      lastFilterResult.current = undefined;\n      lastQuery.current = '';\n\n      setFiltred([]);\n    }\n\n    setStateValue(newState);\n  };\n\n  const filterOptions = (query: string) => {\n    if (!filter) {\n      return;\n    }\n\n    setState(SelectState.Searching);\n\n    filter\n      .cb(query, options, lastFilterResult.current)\n      .then(newResult => {\n        upsertOptions(newResult.options);\n\n        setState(SelectState.Filtred);\n        setFiltred(newResult.options);\n\n        lastQuery.current = query;\n        lastFilterResult.current = newResult;\n      })\n      .catch(e => {\n        setState(SelectState.Default);\n\n        // eslint-disable-next-line  no-console\n        console.error(e);\n      });\n  };\n\n  const loadMore: SelectContextProps['loadMore'] = target => {\n    if (\n      !target ||\n      !onLoadMore ||\n      state === SelectState.LoadingMore ||\n      !target.scrollTop ||\n      target.scrollTop + target.clientHeight < target.scrollHeight - 200\n    ) {\n      return;\n    }\n\n    clearTimeout(timeout.current);\n\n    timeout.current = setTimeout(() => {\n      if (state === SelectState.Filtred) {\n        if (filter && lastQuery.current) {\n          filter\n            .cb(lastQuery.current, options, lastFilterResult.current)\n            .then(newResult => {\n              upsertOptions(newResult.options);\n\n              setState(SelectState.Filtred);\n              upsertFiltred(newResult.options);\n\n              lastFilterResult.current = newResult;\n            })\n            .catch(e => {\n              setState(SelectState.Default);\n\n              // eslint-disable-next-line  no-console\n              console.error(e);\n            });\n        }\n\n        return;\n      }\n\n      setState(SelectState.LoadingMore);\n\n      onLoadMore(options, lastMoreResult.current)\n        .then(newResult => {\n          upsertOptions(newResult.options);\n\n          lastMoreResult.current = newResult;\n        })\n        // eslint-disable-next-line  no-console\n        .catch(console.error)\n        .finally(() => {\n          setState(SelectState.Default);\n        });\n    }, 100);\n  };\n\n  useUpdateEffect(() => {\n    setOptions(baseOptions);\n\n    lastMoreResult.current = undefined;\n  }, [baseOptions]);\n\n  return {\n    options,\n    filtred,\n    state,\n    setState,\n    filterOptions,\n    loadMore,\n  };\n};\n","import {useState} from 'react';\n\nimport {getQAAttribute, useRefMerge} from 'common';\n\nimport {useOptions} from './useOptions';\n\nimport type {ForwardedRef} from 'react';\n\nimport type {DropdownProps} from 'Dropdown';\n\nimport type {SelectContextProps, SelectProps} from '../types';\n\nexport const useSelect = (props: SelectProps, baseRef: ForwardedRef<HTMLInputElement> | undefined) => {\n  const [isOpenValue, setIsOpenValue] = useState<boolean>(false);\n\n  const {\n    name,\n    value,\n    onChange,\n    multiple,\n    disabled,\n    readOnly,\n    wrap,\n    showChips,\n    maxChipLength,\n    maxChipLengthFunc,\n    filter,\n    virtualize,\n    whiteSpace,\n    components,\n    onLoadMore,\n\n    isOpen = isOpenValue,\n    setIsOpen = setIsOpenValue,\n\n    dropdownProps: baseDropdownProps,\n    options: baseOptions,\n    qa = 'select',\n\n    ...baseInputProps\n  } = props;\n\n  const ref = useRefMerge<HTMLInputElement>(baseRef);\n  const getQA = getQAAttribute(qa);\n\n  const {options, filtred, state, setState, filterOptions, loadMore} = useOptions(baseOptions, filter, onLoadMore);\n\n  const onClear = () => onChange([]);\n\n  const dropdownProps: Omit<DropdownProps, 'children'> & Pick<SelectContextProps, 'maxHeight'> = {\n    isOpen,\n    setIsOpen,\n\n    targetRef: ref,\n    maxHeight: 304,\n    qa: getQA('dropdown'),\n    width: 'target',\n\n    ...baseDropdownProps,\n  };\n\n  const context: SelectContextProps = {\n    state,\n    setState,\n    getQA,\n\n    options,\n    loadMore,\n    filterOptions,\n\n    filtred,\n\n    name,\n    value,\n    onChange,\n    onClear,\n    multiple,\n    disabled,\n    readOnly,\n    wrap,\n    showChips,\n    maxChipLength,\n    maxChipLengthFunc,\n    filter,\n    isOpen,\n    setIsOpen,\n    virtualize,\n    whiteSpace,\n\n    height: dropdownProps.height,\n    maxHeight: dropdownProps.maxHeight,\n  };\n\n  const inputProps = {\n    ...baseInputProps,\n\n    name,\n    disabled,\n    readOnly,\n    qa: `${qa}-input`,\n  };\n\n  return {ref, inputProps, context, dropdownProps, components};\n};\n","'use client';\n\nimport {createContext, forwardRef, useCallback, useState} from 'react';\n\nimport {useUpdateEffect} from 'common';\nimport {Dropdown} from 'Dropdown';\n\nimport {SelectInput} from './SelectInput';\nimport {SelectList} from './SelectList';\nimport {useSelect} from './hook';\n\nimport type {\n  SelectContextProps,\n  SelectProps,\n  SingleSelectProps,\n  SelectMultipleValue,\n  SelectListOnChange,\n} from './types';\n\nexport const SelectContext = createContext<SelectContextProps>({} as never);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const Select = forwardRef<HTMLInputElement, SelectProps<any>>((props, baseRef) => {\n  const {ref, inputProps, context, dropdownProps, components} = useSelect(props, baseRef);\n\n  const Input = components?.input || SelectInput;\n  const List = components?.list || SelectList;\n\n  return (\n    <SelectContext.Provider value={context}>\n      <Input ref={ref} {...inputProps} />\n\n      <Dropdown {...dropdownProps}>\n        <List components={components} />\n      </Dropdown>\n    </SelectContext.Provider>\n  );\n});\n\nexport const SingleSelect = forwardRef<HTMLInputElement, SingleSelectProps>((props, ref) => {\n  const [value, setValue] = useState<SelectMultipleValue>(() => (props.value ? [props.value] : []));\n\n  const onChange = useCallback<SelectListOnChange>(\n    (newValue, ...rest) => {\n      props.onChange(newValue[0], ...rest);\n    },\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [props.onChange]\n  );\n\n  useUpdateEffect(() => {\n    setValue(props.value ? [props.value] : []);\n  }, [props.value]);\n\n  return <Select ref={ref} {...props} value={value} onChange={onChange} />;\n});\n","import type {ReactNode} from 'react';\n\nimport type {LastResult, SelectFilter, SelectOption} from '../types';\n\n/** Поиск по вхождению с подстветкой */\nconst search = async (query: string, options: SelectOption[]) => {\n  if (!query) {\n    return [...options];\n  }\n\n  const newOptions: SelectOption[] = [];\n\n  for (const option of options) {\n    const label = option.label;\n\n    if (typeof label !== 'string') {\n      continue;\n    }\n\n    let children: ReactNode;\n    const startIndex = label.toLowerCase().indexOf(query.toLowerCase());\n\n    if (startIndex !== -1) {\n      const endIndex = startIndex + query.length;\n      children = (\n        <>\n          {label.slice(0, startIndex)}\n          <mark>{label.slice(startIndex, endIndex)}</mark>\n          {label.slice(endIndex)}\n        </>\n      );\n    }\n\n    const newChilds = await search(query, option.childs ?? []);\n\n    if (children || newChilds.length) {\n      newOptions.push({\n        ...option,\n\n        children,\n        childs: newChilds,\n      });\n    }\n  }\n\n  return newOptions;\n};\n\nexport const containsFilter: SelectFilter<LastResult> = {\n  delay: 50,\n  cb: (query, allOptions) => search(query, allOptions).then(options => ({options})),\n};\n","import {Badge, BadgeVariant} from 'Badge';\n\nimport type {BadgeProps} from 'Badge';\n\nimport type {SidebarMenuItemStyles, SidebarMenuItemProps} from 'SidebarMenu/types';\n\ntype MenuItemBadgeProps = SidebarMenuItemStyles & Pick<SidebarMenuItemProps, 'badge'> & Pick<BadgeProps, 'hasStroke'>;\n\nexport const MenuItemBadge: React.FC<MenuItemBadgeProps> = ({disabled, badge, isSelected, hasStroke}) => {\n  const type = typeof badge;\n\n  if (type === 'undefined' || badge === null) {\n    return null;\n  }\n\n  if (type === 'function' || type === 'object') {\n    return badge;\n  }\n\n  let variant = BadgeVariant.Grey;\n\n  if (disabled) {\n    variant = BadgeVariant.Disabled;\n  } else if (isSelected) {\n    variant = BadgeVariant.Accent;\n  }\n\n  return (\n    <Badge variant={variant} hasStroke={hasStroke}>\n      {badge}\n    </Badge>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {MenuItemBadge} from '../MenuItemBadge';\n\nimport type {SidebarMenuItemStyles, SidebarMenuItemProps} from 'SidebarMenu/types';\n\nconst Container = styled.div<SidebarMenuItemStyles>`\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  flex-grow: 1;\n\n  color: ${({disabled}) => {\n    if (disabled) {\n      return theme.colors.grey[40];\n    }\n\n    return theme.colors.grey[100];\n  }};\n`;\n\nconst Icon = styled.div<SidebarMenuItemStyles>`\n  display: flex;\n  flex-shrink: 0;\n\n  color: ${props => {\n    if (props.disabled) {\n      return theme.colors.grey[40];\n    }\n\n    return props.isSelected ? theme.colors.accent[90] : theme.colors.grey[60];\n  }};\n`;\n\nconst Label = styled.div`\n  padding: 2px 4px 2px 0;\n\n  ${theme.typography.p1compact}\n`;\n\nconst BadgeContainer = styled.div`\n  position: absolute;\n  top: 4px;\n  right: 4px;\n`;\n\nexport const Left: React.FC<SidebarMenuItemStyles & Partial<SidebarMenuItemProps>> = props => {\n  const {icon, label, badge, ...styles} = props;\n\n  return (\n    <Container {...styles}>\n      {!!icon && <Icon {...styles}>{icon}</Icon>}\n\n      {!!label && <Label>{label}</Label>}\n\n      {!!badge && (\n        <BadgeContainer>\n          <MenuItemBadge {...styles} hasStroke={styles.isSelected} badge={badge} />\n        </BadgeContainer>\n      )}\n    </Container>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {SidebarMenuItemProps, SidebarMenuItemStyles} from 'SidebarMenu/types';\n\nconst Container = styled.div<SidebarMenuItemStyles>`\n  display: flex;\n  align-items: center;\n  gap: 8px;\n\n  ${theme.typography.p1compact};\n\n  color: ${({isSelected, disabled}) => {\n    if (disabled) {\n      return theme.colors.grey[40];\n    }\n\n    return isSelected ? theme.colors.accent[90] : theme.colors.grey[100];\n  }};\n`;\n\nexport const Left: React.FC<SidebarMenuItemStyles & Partial<SidebarMenuItemProps>> = ({label, ...styles}) => {\n  return <Container {...styles}>{label}</Container>;\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {SidebarMenuContext} from 'SidebarMenu/SidebarMenu';\n\nimport {MenuItemBadge} from '../MenuItemBadge';\n\nimport {Left} from './Left';\n\nimport type {SidebarMenuItemStyles, SidebarMenuItemProps} from 'SidebarMenu/types';\nimport type {ElementType} from 'react';\n\nconst Container = styled.div`\n  position: absolute;\n  top: 4px;\n  left: calc(100% - 4px);\n  min-width: 126px;\n  max-width: 228px;\n  border-radius: 0 8px 8px 8px;\n  background-color: ${theme.colors.white};\n  box-shadow: ${theme.shadows.medium};\n`;\n\nconst Title = styled.div`\n  padding: 12px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n\n  ${theme.typography.h4}\n`;\n\nconst ItemContainer = styled.div<SidebarMenuItemStyles>`\n  position: relative;\n  display: block;\n  padding: 4px;\n  text-decoration: none;\n\n  cursor: ${props => (props.disabled ? 'default' : 'pointer')};\n\n  > div {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 8px;\n    padding: 8px;\n    border-radius: 4px;\n  }\n\n  :hover > div {\n    background-color: ${props => (!props.isSelected ? theme.colors.grey[10] : undefined)};\n  }\n`;\n\nconst DropdownItem: React.FC<SidebarMenuItemProps> = props => {\n  const {isSelected, onClick} = useContext(SidebarMenuContext);\n\n  const {label, icon, badge, disabled, qa, href, target} = props;\n\n  const styles = {disabled, isSelected: isSelected(props)};\n\n  const anchorProps = href ? {href, target, as: 'a' as ElementType} : undefined;\n\n  const containerProps = {\n    ...styles,\n    ...anchorProps,\n\n    onClick: onClick(props),\n\n    'data-qa': qa,\n  };\n\n  const leftProps = {...styles, label, icon};\n  const rightProps = {...styles, badge};\n\n  return (\n    <div>\n      <ItemContainer {...containerProps}>\n        <div>\n          <Left {...leftProps} />\n          <MenuItemBadge {...rightProps} />\n        </div>\n      </ItemContainer>\n    </div>\n  );\n};\n\nexport const Dropdown: React.FC<Pick<SidebarMenuItemProps, 'label' | 'childs'>> = ({label, childs}) => {\n  const child = childs?.map(item => <DropdownItem key={item.id} {...item} />);\n\n  return (\n    <Container>\n      <Title>{label}</Title>\n      {child}\n    </Container>\n  );\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {SidebarMenuItemProps, SidebarMenuItemStyles} from 'SidebarMenu/types';\n\nconst Container = styled.div<SidebarMenuItemStyles>`\n  display: flex;\n  align-items: center;\n  gap: 8px;\n\n  color: ${({isSelected, disabled}) => {\n    if (disabled) {\n      return theme.colors.grey[40];\n    }\n\n    return isSelected ? theme.colors.accent[90] : theme.colors.grey[100];\n  }};\n`;\n\nconst Icon = styled.div<SidebarMenuItemStyles>`\n  display: flex;\n  flex-shrink: 0;\n\n  color: ${props => {\n    if (props.disabled) {\n      return theme.colors.grey[40];\n    }\n\n    return props.isSelected ? theme.colors.accent[90] : theme.colors.grey[60];\n  }};\n`;\n\nconst Label = styled.div`\n  padding: 2px 4px 2px 0;\n\n  ${theme.typography.p1compact}\n`;\n\nexport const Left: React.FC<SidebarMenuItemStyles & Partial<SidebarMenuItemProps>> = ({label, icon, ...styles}) => {\n  return (\n    <Container {...styles}>\n      {!!icon && <Icon {...styles}>{icon}</Icon>}\n\n      <Label>{label}</Label>\n    </Container>\n  );\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {SidebarMenuContext} from 'SidebarMenu/SidebarMenu';\n\nimport {MenuItemBadge} from '../MenuItemBadge';\n\nimport {Left} from './Left';\n\nimport type {SidebarMenuItemStyles, SidebarMenuItemProps} from 'SidebarMenu/types';\nimport type {ElementType} from 'react';\n\nconst ChildContainer = styled.div<SidebarMenuItemStyles>`\n  position: relative;\n  display: block;\n  padding: 4px;\n  text-decoration: none;\n\n  cursor: ${props => (props.disabled ? 'default' : 'pointer')};\n\n  > div {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 8px;\n    padding: 8px 8px 8px 34px;\n    border-radius: 4px;\n  }\n\n  :hover > div {\n    background-color: ${props => (!props.isSelected ? theme.colors.grey[20] : undefined)};\n  }\n`;\n\nexport const MenuItemChild: React.FC<SidebarMenuItemProps> = props => {\n  const {isSelected, onClick} = useContext(SidebarMenuContext);\n\n  const {label, icon, badge, disabled, qa, href, target} = props;\n\n  const styles = {disabled, isSelected: isSelected(props)};\n\n  const anchorProps = href ? {href, target, as: 'a' as ElementType} : undefined;\n\n  const containerProps = {\n    ...styles,\n    ...anchorProps,\n\n    onClick: onClick(props),\n\n    'data-qa': qa,\n  };\n\n  const leftProps = {...styles, label, icon};\n  const badgeProps = {...styles, badge};\n\n  return (\n    <div>\n      <ChildContainer {...containerProps}>\n        <div>\n          <Left {...leftProps} />\n          <MenuItemBadge {...badgeProps} />\n        </div>\n      </ChildContainer>\n    </div>\n  );\n};\n","import {SizeTokenValue} from 'common';\nimport {ArrowDownIcon, ArrowUpIcon} from 'icons';\nimport {ButtonVariant, IconButton} from 'Button';\n\nimport type {SidebarMenuItemStyles, SidebarMenuItemProps} from 'SidebarMenu/types';\n\ntype RightProps = SidebarMenuItemStyles & Pick<SidebarMenuItemProps, 'badge' | 'childs'>;\n\nexport const MenuItemArrow: React.FC<RightProps> = ({childs, isSelected}) => {\n  if (!childs?.length) {\n    return null;\n  }\n\n  const Component = isSelected ? ArrowUpIcon : ArrowDownIcon;\n\n  return (\n    <IconButton variant={ButtonVariant.InnerInput} size={SizeTokenValue.XXSmall}>\n      <Component size={SizeTokenValue.Small} />\n    </IconButton>\n  );\n};\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {Placement} from 'common';\nimport {Tooltip} from 'Tooltip';\n\nimport {SidebarMenuContext} from '../SidebarMenu';\n\nimport {Left} from './Left';\nimport {Dropdown} from './Dropdown';\nimport {MenuItemChild} from './MenuItemChild';\nimport {MenuItemBadge} from './MenuItemBadge';\nimport {MenuItemArrow} from './MenuItemArrow';\n\nimport type {SidebarMenuItemStyles, SidebarMenuItemProps} from '../types';\nimport type {ElementType} from 'react';\n\nconst Container = styled.div<SidebarMenuItemStyles>`\n  position: relative;\n  display: block;\n  padding: 4px;\n  text-decoration: none;\n\n  cursor: ${props => (props.disabled ? 'default' : 'pointer')};\n\n  :before {\n    content: '';\n    position: absolute;\n    top: calc(50% - 13px);\n    left: 4px;\n    width: 3px;\n    height: 26px;\n    border-radius: 0 20px 20px 0;\n    background-color: ${theme.colors.accent[90]};\n\n    display: ${props => (props.isSelected ? 'block' : 'none')};\n  }\n\n  > div {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 4px;\n    padding: 12px;\n    border-radius: 4px;\n\n    background-color: ${props => (props.isSelected ? theme.colors.white : undefined)};\n  }\n\n  :hover > div {\n    background-color: ${props => (!props.isSelected ? theme.colors.grey[20] : undefined)};\n  }\n`;\n\nconst ExpandedContainer = styled(Container)`\n  > div {\n    padding: 12px 8px 12px 12px;\n  }\n`;\n\nconst DropdownWrapper = styled.div`\n  position: relative;\n\n  > div:last-child {\n    display: none;\n    z-index: ${theme.zIndex.dropdown};\n  }\n\n  :hover {\n    > div:last-child {\n      display: block;\n    }\n\n    > div:first-of-type {\n      z-index: ${theme.zIndex.dropdown + 1};\n\n      > div {\n        background-color: ${theme.colors.white};\n        border-radius: 4px 0 0 4px;\n      }\n    }\n  }\n`;\n\nconst MenuItem: React.FC<SidebarMenuItemProps> = props => {\n  const {isExpanded, isSelected, onClick} = useContext(SidebarMenuContext);\n\n  const {label, tooltip, icon, badge, disabled, childs, qa, className, href, target} = props;\n\n  const hasChilds = !!childs?.length;\n\n  const styles = {disabled, isSelected: isSelected(props)};\n\n  const anchorProps = !hasChilds && href ? {href, target, as: 'a' as ElementType} : undefined;\n\n  const containerProps = {\n    ...styles,\n    ...anchorProps,\n\n    className,\n\n    'data-qa': qa,\n  };\n\n  if (isExpanded) {\n    const leftProps = {...styles, label, icon};\n\n    const child = styles.isSelected && childs?.map(item => <MenuItemChild key={item.id} {...item} />);\n\n    return (\n      <div>\n        <ExpandedContainer {...containerProps} onClick={onClick(props)}>\n          <div>\n            <Left {...leftProps} />\n            <MenuItemBadge {...styles} badge={badge} />\n            <MenuItemArrow {...styles} childs={childs} />\n          </div>\n        </ExpandedContainer>\n        {child}\n      </div>\n    );\n  }\n\n  const leftProps = {...styles, badge, icon};\n\n  if (!hasChilds || disabled) {\n    return (\n      <div>\n        <Tooltip placement={Placement.Right} content={tooltip ?? label}>\n          <Container {...containerProps} onClick={onClick(props)}>\n            <div>\n              <Left {...leftProps} />\n            </div>\n          </Container>\n        </Tooltip>\n      </div>\n    );\n  }\n\n  return (\n    <DropdownWrapper>\n      <Container {...containerProps}>\n        <div>\n          <Left {...leftProps} />\n        </div>\n      </Container>\n      <Dropdown label={label} childs={childs} />\n    </DropdownWrapper>\n  );\n};\n\nexport const getMenuItem = (item: SidebarMenuItemProps) => <MenuItem key={item.id} {...item} />;\n","'use client';\n\nimport {useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\nimport {ChevronLeftIcon, ChevronRightIcon} from 'icons';\n\nimport {SidebarMenuContext} from '../SidebarMenu';\n\nimport type {RequiredQA} from 'common';\n\nconst Button = styled.button`\n  display: block;\n  outline: none;\n  border: 0;\n  width: 100%;\n  padding: 4px;\n  flex-shrink: 0;\n  background-color: transparent;\n  cursor: pointer;\n\n  span {\n    padding: 2px 4px 2px 0;\n    color: ${theme.colors.grey[100]};\n\n    ${theme.typography.p1compact};\n  }\n\n  svg {\n    color: ${theme.colors.grey[60]};\n  }\n\n  div {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 12px;\n    border-radius: 4px;\n  }\n\n  :hover > div {\n    background-color: ${theme.colors.grey[20]};\n  }\n`;\n\nexport const ExpandButton: React.FC<RequiredQA> = ({qa}) => {\n  const {isExpanded, setIsExpanded} = useContext(SidebarMenuContext);\n\n  const onClick = () => {\n    setIsExpanded(!isExpanded);\n  };\n\n  const Icon = isExpanded ? ChevronLeftIcon : ChevronRightIcon;\n\n  return (\n    <Button type=\"button\" data-qa={`${qa}-toggle`} onClick={onClick}>\n      <div>\n        <Icon size={SizeTokenValue.Medium} />\n        {isExpanded && <span>Свернуть</span>}\n      </div>\n    </Button>\n  );\n};\n","import {useState} from 'react';\n\nimport type {SidebarMenuContextProps, SidebarMenuProps} from './types';\n\nexport const useSidebarMenu = (props: SidebarMenuProps) => {\n  const [isExpandedIn, setIsExpandedIn] = useState<boolean>(props.isExpanded ?? false);\n  const isExpanded = props.isExpanded ?? isExpandedIn;\n  const setIsExpanded = props.setIsExpanded ?? setIsExpandedIn;\n\n  const onClick: SidebarMenuContextProps['onClick'] = item => e => {\n    if (item.disabled) {\n      e.preventDefault();\n      return;\n    }\n\n    if (props.onChange) {\n      if (item.href && (!item.target || item.target === '_self')) {\n        e.preventDefault();\n      }\n\n      props.onChange(item);\n    }\n\n    item.onClick?.(e);\n  };\n\n  const isSelected: SidebarMenuContextProps['isSelected'] = item => {\n    if (!props.selected) {\n      return false;\n    }\n\n    return (\n      item.id === props.selected || (!!item.childs && item.childs.findIndex(subItem => isSelected(subItem)) !== -1)\n    );\n  };\n\n  const context = {isSelected, onClick, isExpanded, setIsExpanded};\n\n  return {context, isExpanded};\n};\n","'use client';\n\nimport {createContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {getMenuItem} from './MenuItem';\nimport {ExpandButton} from './ExpandButton';\nimport {useSidebarMenu} from './hook';\n\nimport type {SidebarMenuContextProps, SidebarMenuProps} from './types';\n\nconst Container = styled.div`\n  position: fixed;\n  left: 0;\n  height: 100%;\n  user-select: none;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  background-color: ${theme.colors.grey[10]};\n`;\n\nconst Items = styled.div`\n  flex-grow: 1;\n\n  ${theme.scroll};\n`;\n\nexport const SidebarMenuContext = createContext({} as SidebarMenuContextProps);\n\nexport const SidebarMenu: React.FC<SidebarMenuProps> = props => {\n  const qa = props.qa ?? 'sidebar-menu';\n  const {context, isExpanded} = useSidebarMenu(props);\n\n  const containerProps = {\n    className: props.className,\n    'data-qa': qa,\n\n    style: {\n      top: props.top ?? 0,\n      width: isExpanded ? (props.width ?? 228) : 56,\n      zIndex: props.zIndex ?? 1,\n\n      ...props.style,\n    },\n  };\n\n  const itemsStyle = {\n    overflow: isExpanded ? 'visible auto' : 'visible',\n  };\n\n  const child = props.items.map(getMenuItem);\n\n  return (\n    <SidebarMenuContext.Provider value={context}>\n      <Container {...containerProps}>\n        <Items style={itemsStyle}>{child}</Items>\n        <ExpandButton qa={qa} />\n      </Container>\n    </SidebarMenuContext.Provider>\n  );\n};\n","import {closeSnackbar, enqueueSnackbar as baseEnqueueSnackbar} from 'notistack';\n\nimport {MessageComponent} from './MessageComponent';\n\nimport {SnackbarVariant} from './types';\n\nimport type {SnackbarMessage, SnackbarMessageInner} from './types';\n\nconst enqueueSnackbar = (message: SnackbarMessage) => {\n  const innerMessage: SnackbarMessageInner = {\n    ...message,\n\n    key: message.key ?? String(Math.random() * 10_000),\n    variant: message.variant ?? SnackbarVariant.Default,\n  };\n\n  baseEnqueueSnackbar(<MessageComponent message={innerMessage} />, {\n    autoHideDuration: message.actionsTop || message.actionsBottom ? 7_000 : 3_000,\n\n    ...innerMessage,\n\n    content: undefined,\n  });\n};\n\nexport {enqueueSnackbar, closeSnackbar};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport type {KeyboardEventHandler, RefObject} from 'react';\nimport type {CSSObject} from '@emotion/styled';\n\nimport type {RequiredQA} from 'common';\nimport type {SwitchStyles} from '../types';\n\nconst Container = styled.div<SwitchStyles>`\n  position: relative;\n  flex-shrink: 0;\n  color: ${theme.colors.white};\n  border-radius: 10px;\n  border: 1px solid transparent;\n  box-sizing: border-box;\n  cursor: pointer;\n\n  :focus-visible::before {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border-radius: 10px;\n    box-shadow: 0px 0px 3px 2px ${theme.colors.accent[70]};\n  }\n\n  ::after {\n    content: '';\n    display: block;\n    position: absolute;\n    box-sizing: border-box;\n    border-radius: 50%;\n    transition-duration: 0.3s;\n\n    ${props => {\n      const styles: CSSObject = {\n        top: 1.3,\n        left: 1.3,\n        width: 16,\n        height: 16,\n        backgroundColor: theme.colors.white,\n      };\n\n      if (props.checked) {\n        styles.left = props.checked === 'halfOn' ? '7px' : '13px';\n      }\n\n      if (props.size === SizeTokenValue.Small) {\n        styles.width = styles.height = 12;\n      }\n\n      if (props.readOnly) {\n        styles.backgroundColor = theme.colors.grey[80];\n      }\n\n      if (props.error) {\n        styles.backgroundColor = theme.colors.red[80];\n      }\n\n      return styles;\n    }}\n  }\n\n  ${({size, checked, error, readOnly, disabled}) => {\n    const styles: CSSObject = {\n      width: 32,\n      height: 20,\n    };\n\n    if (size === SizeTokenValue.Small) {\n      styles.width = 28;\n      styles.height = 16;\n    }\n\n    if (error) {\n      return {\n        ...styles,\n        borderColor: theme.colors.red[80],\n        color: theme.colors.red[80],\n        cursor: readOnly || disabled ? 'default' : 'pointer',\n      };\n    }\n\n    if (readOnly) {\n      return {\n        ...styles,\n        backgroundColor: 'transparent',\n        borderColor: theme.colors.grey[30],\n        color: theme.colors.grey[80],\n        cursor: 'default',\n      };\n    }\n\n    if (disabled) {\n      if (checked) {\n        const backgroundColor = checked === 'halfOn' ? theme.colors.additional.yellow[20] : theme.colors.accent[20];\n\n        return {\n          ...styles,\n          backgroundColor,\n          borderColor: backgroundColor,\n          cursor: 'default',\n        };\n      }\n\n      return {\n        ...styles,\n        backgroundColor: theme.colors.grey[20],\n        borderColor: theme.colors.grey[20],\n        cursor: 'default',\n      };\n    }\n\n    if (checked) {\n      const color = checked === 'halfOn' ? theme.colors.additional.yellow[60] : theme.colors.accent[90];\n      const hoverColor = checked === 'halfOn' ? theme.colors.additional.yellow[40] : theme.colors.accent[80];\n\n      return {\n        ...styles,\n        backgroundColor: color,\n        borderColor: color,\n\n        ':hover': {\n          backgroundColor: hoverColor,\n          borderColor: hoverColor,\n        },\n      };\n    }\n\n    return {\n      ...styles,\n      backgroundColor: theme.colors.grey[30],\n      borderColor: theme.colors.grey[30],\n\n      ':hover': {\n        backgroundColor: theme.colors.grey[40],\n        borderColor: theme.colors.grey[40],\n      },\n    };\n  }}\n`;\n\ntype IconProps = {inputRef: RefObject<HTMLInputElement>} & SwitchStyles & RequiredQA;\n\nexport const Icon: React.FC<IconProps> = ({inputRef, qa, ...props}) => {\n  const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n    if (e.code === 'Enter' || e.code === 'NumpadEnter') {\n      inputRef.current?.click();\n    }\n  };\n\n  const containerProps = {\n    tabIndex: props.disabled || props.readOnly ? undefined : 0,\n\n    ...props,\n\n    onKeyDown,\n\n    'data-qa': `${qa}-icon`,\n  };\n\n  return <Container {...containerProps} />;\n};\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\nimport {SizeTokenValue} from 'common';\n\nimport type {MouseEventHandler} from 'react';\nimport type {RequiredQA} from 'common';\n\nimport type {SwitchProps, SwitchStyles} from '../types';\n\nconst Container = styled.div<SwitchStyles>`\n  min-width: 0;\n  word-wrap: break-word;\n  user-select: none;\n  overflow: hidden;\n  text-overflow: ellipsis;\n\n  ${props => {\n    const styles = {\n      whiteSpace: props.whiteSpace,\n      color: theme.colors.grey[props.disabled ? 40 : 100],\n    };\n\n    if (props.size === SizeTokenValue.Small) {\n      return {\n        ...styles,\n        ...theme.typography.p2,\n      };\n    }\n\n    return {\n      ...styles,\n      ...theme.typography.p1compact,\n    };\n  }}\n`;\n\ntype LabelProps = Pick<SwitchProps, 'children' | 'label'> & SwitchStyles & RequiredQA;\n\nexport const Label: React.FC<LabelProps> = props => {\n  if (!props.hasLabel) {\n    return null;\n  }\n\n  const {children, label, ...styles} = props;\n\n  const onClick: MouseEventHandler<HTMLDivElement> = e => {\n    if (!(e.target instanceof Element)) {\n      return;\n    }\n\n    if (['a', 'button'].includes(e.target.nodeName)) {\n      e.stopPropagation();\n      return;\n    }\n  };\n\n  return (\n    <Container data-qa={`${props.qa}-label`} onClickCapture={onClick} {...styles}>\n      {children ?? label}\n    </Container>\n  );\n};\n","import {forwardRef, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {Icon} from './Icon';\nimport {Label} from './Label';\n\nimport type {SwitchProps, SwitchStyles} from './types';\n\nconst Container = styled.label`\n  position: relative;\n  display: inline-block;\n  vertical-align: top;\n`;\n\nconst Content = styled.div`\n  display: flex;\n  align-items: flex-start;\n  gap: 8px;\n`;\n\nconst Input = styled.input`\n  position: absolute;\n  visibility: hidden;\n  left: 0;\n  top: 0;\n  width: 0;\n  height: 0;\n  padding: 0;\n`;\n\nexport const Switch = forwardRef<HTMLLabelElement, SwitchProps>((props, ref) => {\n  const {\n    startAdornment,\n    children,\n    label,\n    error,\n    checked,\n    disabled,\n    readOnly,\n    whiteSpace,\n    size,\n    className,\n\n    qa = 'switch',\n    ...rest\n  } = props;\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const styles: SwitchStyles = {\n    size,\n    checked,\n    readOnly,\n    error,\n    disabled,\n    whiteSpace,\n\n    hasLabel: !!label || !!children,\n  };\n\n  const inputProps = {\n    ...rest,\n\n    readOnly,\n    error,\n    disabled,\n    type: 'checkbox',\n    checked: checked === true,\n\n    onChange: !readOnly && !disabled ? props.onChange : undefined,\n  };\n\n  const containerProps = {\n    readOnly,\n    error,\n    disabled,\n    className,\n\n    'data-qa': qa,\n  };\n\n  const iconProps = {...styles, inputRef, qa};\n\n  const labelProps = {\n    ...styles,\n\n    children,\n    label,\n    qa,\n  };\n\n  return (\n    <Container ref={ref} {...containerProps}>\n      <Input ref={inputRef} {...inputProps} />\n      <Content>\n        {startAdornment}\n        <Icon {...iconProps} />\n        <Label {...labelProps} />\n      </Content>\n    </Container>\n  );\n});\n","import styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nexport const ArrowBase = styled.div`\n  position: absolute;\n  display: flex;\n  align-items: center;\n  width: 24px;\n  height: 40px;\n  top: 0;\n  color: ${theme.colors.grey[40]};\n  pointer-events: none;\n  z-index: 1;\n  cursor: default;\n\n  ::after {\n    content: '';\n    position: absolute;\n    top: 0;\n    width: 60px;\n    height: 40px;\n    opacity: 0;\n    transition-duration: 0.3s;\n  }\n\n  &[data-active] {\n    cursor: pointer;\n    pointer-events: all;\n\n    ::after {\n      opacity: 1;\n    }\n  }\n`;\n","import {useEffect, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {SizeTokenValue} from 'common';\nimport {ChevronLeftIcon} from 'icons';\n\nimport {ArrowBase} from '../ArrowBase';\n\nimport type {ArrowProps} from '../types';\n\nconst Component = styled(ArrowBase)`\n  left: 0;\n\n  &[data-active] {\n    background: linear-gradient(\n      to right,\n      var(--arrow-start, rgba(255, 255, 255, 1)),\n      var(--arrow-center, rgba(255, 255, 255, 0.8))\n    );\n  }\n\n  ::after {\n    left: 100%;\n    border-radius: 0 10px 10px 0;\n    background: linear-gradient(\n      to right,\n      var(--arrow-center, rgba(255, 255, 255, 0.8)),\n      var(--arrow-end, rgba(255, 255, 255, 0.1)) 70%\n    );\n  }\n`;\n\nexport const ArrowLeft: React.FC<ArrowProps> = ({scrollableRef, qa}) => {\n  const ref = useRef<HTMLDivElement>(null);\n\n  const onClick = () => {\n    scrollableRef.current?.scrollBy?.({left: -100, behavior: 'smooth'});\n  };\n\n  useEffect(() => {\n    const scrollableEl = scrollableRef.current;\n\n    const onScroll = () => {\n      if (!scrollableEl) {\n        return;\n      }\n\n      ref.current?.toggleAttribute('data-active', scrollableEl?.scrollLeft > 10);\n    };\n\n    scrollableEl?.addEventListener('scroll', onScroll);\n\n    return () => {\n      scrollableEl?.removeEventListener('scroll', onScroll);\n    };\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <Component ref={ref} data-qa={`${qa}-arrow-left`} onClick={onClick}>\n      <ChevronLeftIcon size={SizeTokenValue.Small} />\n    </Component>\n  );\n};\n","import {useEffect, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport {ChevronRightIcon} from 'icons';\nimport {SizeTokenValue} from 'common';\n\nimport {ArrowBase} from '../ArrowBase';\n\nimport type {ArrowProps} from '../types';\n\nconst ArrowRightComponent = styled(ArrowBase)`\n  right: 0;\n\n  &[data-active] {\n    background: linear-gradient(\n      to left,\n      var(--arrow-start, rgba(255, 255, 255, 1)),\n      var(--arrow-center, rgba(255, 255, 255, 0.8))\n    );\n  }\n\n  ::after {\n    right: 100%;\n    border-radius: 10px 0 0 10px;\n    background: linear-gradient(\n      to left,\n      var(--arrow-center, rgba(255, 255, 255, 0.8)),\n      var(--arrow-end, rgba(255, 255, 255, 0.1)) 70%\n    );\n  }\n`;\n\nexport const ArrowRight: React.FC<ArrowProps> = ({scrollableRef, qa}) => {\n  const ref = useRef<HTMLDivElement>(null);\n\n  const onClick = () => {\n    scrollableRef.current?.scrollBy?.({left: 100, behavior: 'smooth'});\n  };\n\n  useEffect(() => {\n    const scrollableEl = scrollableRef.current;\n\n    const onScroll = () => {\n      if (!scrollableEl) {\n        return;\n      }\n\n      const {scrollLeft, scrollWidth, clientWidth} = scrollableEl;\n\n      ref.current?.toggleAttribute('data-active', scrollLeft + clientWidth + 10 < scrollWidth);\n    };\n\n    onScroll();\n\n    scrollableEl?.addEventListener('scroll', onScroll);\n\n    return () => {\n      scrollableEl?.removeEventListener('scroll', onScroll);\n    };\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <ArrowRightComponent ref={ref} data-qa={`${qa}-arrow-right`} onClick={onClick}>\n      <ChevronRightIcon size={SizeTokenValue.Small} />\n    </ArrowRightComponent>\n  );\n};\n","import {ArrowLeft} from './ArrowLeft';\nimport {ArrowRight} from './ArrowRight';\n\nimport type {ArrowProps} from './types';\n\nexport const Arrow: React.FC<ArrowProps> = props => (\n  <div>\n    <ArrowLeft {...props} />\n    <ArrowRight {...props} />\n  </div>\n);\n","import {forwardRef, useEffect, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {WheelEventHandler} from 'react';\n\nimport type {PropsWithChildren, RequiredQA} from 'common';\nimport type {TabsProps} from '../types';\n\nconst Container = styled.div`\n  position: relative;\n  overflow-x: auto;\n  overflow-y: hidden;\n\n  ${theme.scroll};\n\n  ::-webkit-scrollbar-thumb {\n    background-color: transparent;\n  }\n\n  :hover::-webkit-scrollbar-thumb {\n    background-color: #cfd4dc;\n  }\n\n  + div {\n    display: none;\n  }\n\n  &[data-arrows] {\n    padding: 0 24px;\n\n    + div {\n      display: block;\n    }\n  }\n`;\n\ntype ScrollableProps = Pick<TabsProps, 'value' | 'arrows'> & RequiredQA & PropsWithChildren;\n\nexport const Scrollable = forwardRef<HTMLDivElement, ScrollableProps>(({children, value, arrows, qa}, ref) => {\n  const observerRef = useRef<ResizeObserver>();\n  const observerTimeout = useRef<ReturnType<typeof setTimeout>>();\n\n  const onWheel: WheelEventHandler<HTMLDivElement> = e => {\n    if (!ref || typeof ref !== 'object' || !ref.current) {\n      return;\n    }\n\n    const newScrollLeft = ref.current.scrollLeft + e.deltaY;\n\n    ref.current.scrollLeft = newScrollLeft > 0 ? newScrollLeft : 0;\n  };\n\n  const setObserver = (el: HTMLDivElement | null) => {\n    if (observerRef.current) {\n      observerRef.current.disconnect();\n      observerRef.current = undefined;\n    }\n\n    if (!ref || typeof ref !== 'object') {\n      return;\n    }\n\n    ref.current = el;\n\n    if (!arrows || !el) {\n      ref.current?.removeAttribute('data-arrows');\n      return;\n    }\n\n    observerRef.current = new ResizeObserver(entries => {\n      clearTimeout(observerTimeout.current);\n\n      const target = entries[0]?.target;\n\n      observerTimeout.current = setTimeout(() => {\n        if (!target) {\n          return;\n        }\n\n        target.toggleAttribute('data-arrows', target.scrollWidth > target.clientWidth);\n      }, 10);\n    });\n\n    observerRef.current.observe(el);\n  };\n\n  useEffect(() => {\n    if (!ref || typeof ref !== 'object' || !ref.current) {\n      return;\n    }\n\n    ref.current.toggleAttribute('data-arrows', !!arrows && ref.current.scrollWidth > ref.current.clientWidth);\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [value, arrows]);\n\n  return (\n    <Container ref={setObserver} data-qa={`${qa}-scrollable`} onWheel={onWheel}>\n      {children}\n    </Container>\n  );\n});\n","'use client';\n\nimport {createContext, forwardRef, useEffect, useRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {Arrow} from './Arrow';\nimport {Scrollable} from './Scrollable';\n\nimport type {TabContextProps, TabsProps} from './types';\n\nconst Container = styled.div`\n  position: relative;\n  width: 100%;\n`;\n\nconst Content = styled.div`\n  display: flex;\n  align-items: flex-start;\n  white-space: nowrap;\n  width: fit-content;\n  border-bottom: 1px solid ${theme.colors.grey[20]};\n\n  ::after {\n    content: '';\n    position: absolute;\n    bottom: 0;\n    height: 2px;\n    width: var(--width);\n    left: var(--offset);\n    background-color: ${theme.colors.accent[90]};\n    transition-duration: 0.3s;\n  }\n`;\n\nexport const TabsInnerContext = createContext<TabContextProps>({});\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n  const {children, value, onChange, arrows, className, qa = 'tabs'} = props;\n\n  const scrollableRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    setTimeout(() => {\n      if (!scrollableRef.current) {\n        return;\n      }\n\n      const currentTab = scrollableRef.current.querySelector<HTMLDivElement>(`[data-tab=${JSON.stringify(value)}]`);\n\n      scrollableRef.current.style.setProperty('--width', `${currentTab?.clientWidth ?? 0}px`);\n      scrollableRef.current.style.setProperty('--offset', `${currentTab?.offsetLeft ?? 0}px`);\n    });\n  }, [value, arrows]);\n\n  return (\n    <TabsInnerContext.Provider value={{value, onChange}}>\n      <Container ref={ref} data-qa={qa} className={className}>\n        <Scrollable ref={scrollableRef} qa={qa} value={value} arrows={arrows}>\n          <Content>{children}</Content>\n        </Scrollable>\n        {arrows && <Arrow qa={qa} scrollableRef={scrollableRef} />}\n      </Container>\n    </TabsInnerContext.Provider>\n  );\n});\n","'use client';\n\nimport {useContext} from 'react';\n\nimport {Badge, BadgeVariant} from 'Badge';\n\nimport {TabsInnerContext} from '../Tabs';\n\nimport type {TabProps} from '../types';\n\nexport const TabBadge: React.FC<Pick<TabProps, 'value' | 'badge' | 'disabled'>> = ({value, badge, disabled}) => {\n  const curValue = useContext(TabsInnerContext).value;\n\n  if (!badge) {\n    return null;\n  }\n\n  let variant = curValue === value ? BadgeVariant.Accent : BadgeVariant.Grey;\n\n  if (disabled) {\n    variant = BadgeVariant.Disabled;\n  }\n\n  return (\n    <Badge data-badge variant={variant}>\n      {badge}\n    </Badge>\n  );\n};\n","'use client';\n\nimport {forwardRef, useContext} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport {TabsInnerContext} from '../Tabs';\nimport {TabBadge} from '../TabBadge';\n\nimport type {ElementType, KeyboardEventHandler, MouseEventHandler} from 'react';\nimport type {TabProps} from '../types';\n\nconst Container = styled.div<Pick<TabProps, 'disabled'> & {selected: boolean}>`\n  position: relative;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 8px 16px;\n  user-select: none;\n  text-decoration: none;\n\n  ${theme.typography.p1}\n\n  :focus-visible {\n    border: 0;\n    outline: none;\n  }\n\n  :focus-visible::after {\n    content: '';\n    display: block;\n    position: absolute;\n    box-sizing: border-box;\n    top: 2px;\n    left: 2px;\n    width: calc(100% - 4px);\n    height: calc(100% - 4px);\n    border-radius: 2px;\n    box-shadow: 0px 0px 3px 2px ${theme.colors.accent[70]};\n  }\n\n  ${props => {\n    if (props.disabled) {\n      return {\n        color: theme.colors.grey[40],\n      };\n    }\n\n    return {\n      cursor: props.selected ? 'default' : 'pointer',\n      color: theme.colors.grey[100],\n\n      svg: {\n        color: theme.colors.grey[60],\n      },\n\n      ':hover': {\n        backgroundColor: theme.colors.grey[20],\n      },\n    };\n  }}\n`;\n\nexport const Tab = forwardRef<HTMLDivElement, TabProps>((props, ref) => {\n  const {children, label, icon, badge, value, disabled, qa, ...rest} = props;\n\n  const {value: curValue, onChange} = useContext(TabsInnerContext);\n  const selected = value === curValue;\n\n  const onClickCapture: MouseEventHandler<HTMLDivElement> = e => {\n    if (disabled) {\n      e.preventDefault();\n      e.stopPropagation();\n\n      rest.onClickCapture?.(e);\n      return;\n    }\n\n    if (onChange && (!rest.target || rest.target === '_self')) {\n      e.preventDefault();\n\n      if (!selected) {\n        onChange(value, e);\n      }\n    }\n\n    rest.onClickCapture?.(e);\n  };\n\n  const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n    const target = e.target as HTMLDivElement | undefined;\n    const prev = target?.previousElementSibling as HTMLDivElement | undefined;\n    const next = target?.nextElementSibling as HTMLDivElement | undefined;\n\n    switch (e.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n        target?.click?.();\n        break;\n      case 'ArrowLeft':\n        prev?.focus?.();\n        break;\n      case 'ArrowRight':\n        next?.focus?.();\n        break;\n    }\n\n    props.onKeyDown?.(e);\n  };\n\n  const containerProps = {\n    ...rest,\n\n    disabled,\n    selected,\n    onClickCapture,\n    onKeyDown,\n\n    'data-tab': value,\n    'data-qa': qa ?? `tab-${value}`,\n\n    as: props.href ? ('a' as ElementType) : undefined,\n\n    tabIndex: disabled ? undefined : 0,\n  };\n\n  const badgeProps = {value, badge, disabled};\n\n  return (\n    <Container ref={ref} {...containerProps}>\n      {icon}\n      {label ?? children}\n      <TabBadge {...badgeProps} />\n    </Container>\n  );\n});\n","'use client';\n\nimport {createContext, forwardRef, useContext} from 'react';\n\nimport {Tabs} from '../Tabs';\n\nimport type {PropsWithChildren} from 'common';\nimport type {TabListProps, TabPanelProps, TabContextProps} from '../types';\n\nconst TabContextValue = createContext<TabContextProps>({} as TabContextProps);\n\nexport const TabContext: React.FC<TabContextProps & PropsWithChildren> = ({children, ...value}) => {\n  return <TabContextValue.Provider value={value}>{children}</TabContextValue.Provider>;\n};\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>((props, ref) => {\n  const context = useContext(TabContextValue);\n\n  return <Tabs ref={ref} value={context.value} onChange={context.onChange} {...props} />;\n});\n\nexport const TabPanel: React.FC<TabPanelProps> = ({children, value}) => {\n  const curValue = useContext(TabContextValue).value;\n\n  if (value !== curValue) {\n    return null;\n  }\n\n  return children;\n};\n","import {forwardRef, useEffect, useRef} from 'react';\n\nimport styled from '@emotion/styled';\nimport ReactTextareaAutosize from 'react-textarea-autosize';\n\nimport theme from 'theme';\n\nimport {InputCaption, Label, useInput} from 'Input';\n\nimport type {MouseEventHandler} from 'react';\nimport type {CSSObject} from '@emotion/styled';\nimport type {TextareaAutosizeProps} from 'react-textarea-autosize';\nimport type {InputInternalProps, InputProps, InputStyles} from 'Input';\n\nimport type {TextareaProps} from './types';\n\nconst textAreaStyle = (props: TextareaProps, {style, inputProps}: InputInternalProps) => {\n  const styles: CSSObject = {\n    ...theme.typography.p1,\n\n    resize: props.resize,\n    width: props.width,\n    maxWidth: props.maxWidth,\n\n    cursor: style.isReadOnly ? 'default' : undefined,\n\n    borderWidth: 1,\n    borderColor: theme.colors.grey[30],\n    color: theme.colors.grey[style.isDisabled ? 40 : 100],\n\n    ...inputProps?.style,\n  };\n\n  if (style.isError) {\n    styles.borderWidth = 2;\n    styles.borderColor = theme.colors.additional.red[80];\n  } else if (style.isDisabled) {\n    styles.borderWidth = 1;\n    styles.borderColor = theme.colors.grey[20];\n  } else if (style.isFocused) {\n    styles.borderWidth = 2;\n    styles.borderColor = theme.colors.accent[90];\n  } else if (style.isUnborder) {\n    styles.borderWidth = 0;\n  }\n\n  if (styles.borderWidth === 2) {\n    styles.padding = style.isFilled ? '18px 10px 0' : '10px 10px';\n  } else {\n    styles.padding = style.isFilled ? '19px 11px 0' : '11px 12px';\n  }\n\n  return styles;\n};\n\nconst Container = styled.div<Pick<InputStyles, 'isDisabled' | 'isFocused'>>`\n  position: relative;\n\n  * {\n    ${theme.typography.base}\n  }\n\n  :hover textarea {\n    ${({isDisabled, isFocused}) => {\n      if (isDisabled || isFocused) {\n        return;\n      }\n\n      return {\n        borderWidth: 2,\n        borderColor: theme.colors.grey[40],\n      };\n    }}\n  }\n\n  textarea {\n    margin: 0;\n    min-height: 48px;\n    outline: none;\n    border: none;\n    background-color: transparent;\n    vertical-align: top;\n    box-sizing: border-box;\n    border-style: solid;\n    border-radius: 4px;\n    caret-color: ${theme.colors.accent[90]};\n\n    ${theme.scroll};\n  }\n`;\n\nconst LabelContainer = styled.div`\n  position: absolute;\n  pointer-events: none;\n  left: 12px;\n  top: 2px;\n  height: 18px;\n  background-color: ${theme.colors.white};\n`;\n\nexport const Textarea = forwardRef<HTMLDivElement, TextareaProps>((props, ref) => {\n  const {onHeightChange, cacheMeasurements, maxRows, minRows = 6, ...rest} = props;\n\n  const inputProps = useInput(rest as InputProps);\n\n  const inputRef = useRef<HTMLTextAreaElement>(null);\n  const labelRef = useRef<HTMLDivElement>(null);\n\n  const setLabelWidth = (width?: number) => {\n    if (!width || !labelRef.current) {\n      return;\n    }\n\n    labelRef.current.style.width = `${width - 30}px`;\n  };\n\n  const onMouseMove: MouseEventHandler = e => {\n    setLabelWidth((e.target as HTMLTextAreaElement)?.clientWidth);\n  };\n\n  useEffect(() => {\n    setLabelWidth(inputRef.current?.clientWidth);\n  }, [props.width, props.maxWidth]);\n\n  const containerProps = {\n    ...inputProps.style,\n\n    className: props.className,\n    isDisabled: inputProps.style.isDisabled,\n    isFocused: inputProps.style.isFocused,\n  };\n\n  const textareaProps = {\n    ...inputProps.inputProps,\n\n    onMouseMove,\n\n    onHeightChange,\n    cacheMeasurements,\n    maxRows,\n    minRows,\n\n    value: props.value,\n    onInput: props.onChange,\n\n    style: textAreaStyle(props, inputProps),\n\n    'data-qa': props.qa ?? 'textarea',\n  } as TextareaAutosizeProps;\n\n  return (\n    <Container ref={ref} {...containerProps}>\n      <ReactTextareaAutosize ref={inputRef} {...textareaProps} />\n\n      <LabelContainer ref={labelRef}>\n        <Label {...inputProps} />\n      </LabelContainer>\n\n      <InputCaption {...inputProps} />\n    </Container>\n  );\n});\n","import {forwardRef} from 'react';\nimport styled from '@emotion/styled';\n\nimport theme from 'theme';\n\nimport type {AnchorHTMLAttributes, ElementType, HTMLAttributes} from 'react';\n\nexport type TypographyProps = {\n  /** Вариант */\n  variant: keyof typeof theme.typography;\n  /** TagName - по умолчанию div */\n  as?: ElementType;\n} & HTMLAttributes<HTMLDivElement> &\n  AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst Container = styled.div<Pick<TypographyProps, 'variant'>>(props => theme.typography[props.variant]);\n\nexport const Typography = forwardRef<HTMLDivElement, TypographyProps>((props, ref) => (\n  <Container {...props} ref={ref} />\n));\n"],"names":["startOfDay","date","newDate","getQAAttribute","rootName","subName","state","name","item","useClickAway","handler","refs","useEffect","listener","e","ref","useRefMerge","baseRef","innerRef","useRef","useUpdateEffect","effect","deps","isFirstMount","BadgeVariant","BadgeDotSize","sizeProps","SizeTokenValue","variantColor","theme","Container","styled","variant","size","hasStroke","props","variantProps","color","backgroundColor","borderColor","Badge","qa","rest","containerProps","jsx","sizeWidth","minWidth","BadgeDot","ContentContainer","Title","Actions","Content","children","title","actionsTop","titleContent","right","jsxs","BannerVariant","typeIcon","resultSize","InfoIcon","CheckIcon","WarningOutlineIcon","ErrorIcon","Icon","icon","child","CloseButton","onClose","IconButton","ButtonVariant","CloseIcon","width","maxWidth","typeProp","Banner","actionsBottom","bannerStyles","iconProps","contentProps","buttonProps","bottom","CalendarContext","createContext","Item","WeekDays","locale","weekDays","useContext","items","weekDay","HeaderDateType","HeaderDate","viewDate","BlockContext","getQA","month","year","targetSize","rects","elements","useDropdown","isOpen","setIsOpen","setFloating","targetRef","middleware","offset","flip","placement","Placement","floating","useFloating","autoUpdate","interactions","useInteractions","useDismiss","containerStyle","acc","height","maxHeight","zIndex","DropdownContent","Dropdown","isPortal","isMounted","className","Wrapper","FloatingPortal","React","onChange","isTooltipOpen","onToggle","onClickContainer","onClickItem","newItem","listner","DropdownButton","List","ListItem","DropdownListItem","isSelected","disabled","value","tooltip","listItems","Chevron","ArrowUpIcon","ArrowDownIcon","dropdownProps","Tooltip","BaseDropdown","useMonths","months","onChangeViewDate","setMonth","useYears","years","setYear","useHeaderDateDropdown","useState","dropdown","newIsOpen","Center","HeaderDateDropdown","yearsProps","monthsProps","getDropdownProps","ArrowButton","ArrowLeft","ChevronLeftIcon","ArrowRight","ChevronRightIcon","Header","context","minDate","maxDate","isSingle","isFirst","isLast","isPrevDisabled","endOfMonth","isNextDisabled","startOfMonth","onPrev","subMonths","onNext","addMonths","HeaderDateComponent","CalendarMode","CalendarFreezeRange","getNewRange","mode","freezeRange","rangeStart","rangeEnd","getNewHoverDate","getRangeDayProps","hoverDate","isRangeStart","isRangeEnd","isRangeIn","isRangeHover","getDayProps","args","currentDateTime","tooltips","disabledDates","blocks","isViewMonth","isHidden","isToday","isDisabled","dayProps","getDayComponent","components","Component","setHoverDate","rangetEnd","hasHover","tooltipContent","dayValue","timeValue","events","useDays","blockContext","weekStartsOn","startOfToday","blockStart","startOfWeek","weeks","curDay","weekN","weekD","Week","Days","getWeek","week","indx","Block","blockNumber","HeaderComponent","WeekComponent","useCalendar","ru","getViewDate","useMemo","newViewDate","setViewDate","_a","isSameDay","currentYear","minYear","maxYear","i","monthViewDate","CalendarComponent","blockComponents","BaseCalendar","RangeCalendar","Calendar","override","newValue","getStyle","Caption","style","hasLabel","checked","error","readOnly","styles","inputRef","RemoveIcon","DoneIcon","onKeyDown","Label","label","onClick","Input","Checkbox","forwardRef","startAdornment","whiteSpace","inputProps","labelProps","getValues","options","enabledOnly","traverse","option","useParentItem","opened","toggleOpened","depth","childs","optionProps","childValues","hasChildsInDepth","childEnabledValues","itemProps","targetOption","newValueExceptThis","resultValues","checkboxProps","CheckboxContainer","Button","ButtonPlaceholder","ParentItem","ChevronDownIcon","newValues","CheckboxTree","openedValue","toggleOpenedValue","toggleValue","newToggled","EndAdornment","onDelete","endAdornment","Fragment","maxLength","maxLengthFunc","content","BaseTooltip","ChipVariant","variantBehavior","isSmall","resultProps","Chip","newProps","componentProps","InputCaption","caption","captionProps","inputButtonStyle","pointerEvents","InputButtonComponent","InputButton","onClearClick","isReadOnly","isLoading","isFilled","iconSize","Loader","inputStyle","isFocused","isLabeled","FieldComponent","placeholderStyle","Placeholder","MaskedField","mask","maskaRef","MaskInput","placeHolder","BasicField","isOverflown","setIsOverflown","noTooltip","Field","Asterisk","isMasked","LabelComponent","required","InputComponent","InputContainer","isError","isUnborder","useInput","focused","setFocused","onFocus","onBlur","containerRef","parseSegments","formatStr","newSegments","matches","end","token","part","useSegments","referenceDate","DatepickerContext","inputValue","segments","setSegmentsValue","setSegments","segmentFormat","segmentValue","segmentDate","parse","isValid","segment","format","useInputComponent","step","setStepValue","setInputValue","setStep","newStep","maxStep","target","key","valueStyle","Value","ValueItem","HiddenInput","textContent","DateInput","parentEndAdornment","restProps","CalendarIcon","calendarProps","DEFAULT_FORMAT","BaseDatepicker","parentIsOpen","parentSetIsOpen","isOpenIn","setIsOpenIn","calProps","Datepicker","useCallback","overrideProps","RangeDatepicker","TitleContainer","SubTitleContainer","subTitle","DownloadIcon","Link","absoluteCaption","BaseCaption","FileItemStatus","useUploadedFile","status","isDeletable","isClickable","UploadedFile","chipProps","getUploadedFile","UploadedFiles","FileError","file","message","MaxSizeError","MinSizeError","MaxSizeAllError","MaxFilesError","maxFiles","AcceptTypeError","useFileUploader","maxSizeAll","maxSizeAllError","maxSizeError","minSizeError","maxFilesError","acceptTypeError","maxLabelLength","maxLabelLengthFunc","setDropzone","dropzoneProps","onDrop","accepteds","rejecteds","event","errors","rejected","ErrorCode","newAccepteds","curSize","dzState","useDropzone","Dropzone","FileUploader","titleProps","listProps","FilesComponent","ModalContent","noBorderScroll","observerRef","observerTimeout","el","entries","ModalFooter","ModalFooterContent","ButtonContainer","ModalHeader","ModalOverlay","FloatingOverlay","useModal","hasTarget","open","_b","floatingI","useRole","Modal","FloatingFocusManager","PasswordInput","VisibilityIcon","VisibilityOffIcon","type","isEnabled","Radio","SearchInput","SearchIcon","SegmentedControlItem","SegmentedControl","isChecked","index","SelectState","getValueLabel","findOptions","result","findOptionByLabel","childOption","ChipContainer","ChipsMultiple","showChips","maxChipLength","maxChipLengthFunc","SelectContext","labels","setLabels","Chips","onClear","getInputStyle","baseGetInputStyle","BaseFieldComponent","InputChips","divStyle","WrapInput","divProps","WrapInputEditable","NoWrapInput","useEditableInput","filterOptions","setState","filter","multiple","wrap","timeout","sameLabelOption","EditableInput","inputComponent","useReadonlyInput","ReadonlyInput","SelectInput","endAdorment","getItemSize","clientWidth","labelWidth","BaseContainer","VirtualizedContainer","LabelContainer","VirtualizedItem","data","Virtualized","itemSize","onScroll","VariableSizeList","SelectItemsMultiple","treeProps","SelectItem","memo","virtualize","SelectItems","Hint","bannerProps","BaseLoader","Empty","SelectList","isFiltred","setClientWidth","selectItemsProps","useOptionsState","initial","setOptions","newOptions","curOptionsValue","diffOptions","useOptions","baseOptions","onLoadMore","setStateValue","upsertOptions","filtred","setFiltred","upsertFiltred","lastQuery","lastFilterResult","lastMoreResult","newState","query","newResult","loadMore","useSelect","isOpenValue","setIsOpenValue","baseDropdownProps","baseInputProps","Select","SingleSelect","setValue","search","startIndex","endIndex","newChilds","containsFilter","allOptions","MenuItemBadge","badge","BadgeContainer","Left","ItemContainer","DropdownItem","SidebarMenuContext","href","leftProps","rightProps","ChildContainer","MenuItemChild","badgeProps","MenuItemArrow","ExpandedContainer","DropdownWrapper","MenuItem","isExpanded","hasChilds","getMenuItem","ExpandButton","setIsExpanded","useSidebarMenu","isExpandedIn","setIsExpandedIn","subItem","Items","SidebarMenu","itemsStyle","enqueueSnackbar","innerMessage","SnackbarVariant","baseEnqueueSnackbar","MessageComponent","hoverColor","Switch","ArrowBase","scrollableRef","scrollableEl","ArrowRightComponent","scrollLeft","scrollWidth","Arrow","Scrollable","arrows","onWheel","newScrollLeft","setObserver","TabsInnerContext","Tabs","currentTab","TabBadge","curValue","Tab","selected","prev","next","_c","_d","TabContextValue","TabContext","TabList","TabPanel","textAreaStyle","Textarea","onHeightChange","cacheMeasurements","maxRows","minRows","labelRef","setLabelWidth","onMouseMove","textareaProps","ReactTextareaAutosize","Typography"],"mappings":"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"}