{"version":3,"sources":["../../src/Calendar.tsx","../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../src/CalendarHeader.tsx","../../src/utils.ts","../../src/CalendarGrid.tsx","../../src/CalendarChips.tsx","../../src/DualCalendar.tsx"],"sourcesContent":["import { forwardRef, useCallback, useEffect, useState } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport { addMonths, subDays, subMonths, startOfDay } from \"date-fns\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarChips } from \"./CalendarChips\";\nimport type { CalendarProps } from \"./types\";\n\nexport const Calendar = forwardRef<any, CalendarProps>(\n  (\n    {\n      locale = \"enUS\",\n      onChange,\n      startDate,\n      endDate,\n      selectedDate,\n      selectsRange = false,\n      contextMenuMaxHeight,\n      topContent,\n      bottomContent,\n      chips,\n      activeChip,\n      onChipSelect,\n      testID,\n      minDate,\n      maxDate,\n      firstDayOfWeek = 0,\n      month,\n      initialMonth,\n      themeMode,\n      themeProductContext,\n    },\n    ref\n  ) => {\n    const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n    const [currentMonth, setCurrentMonth] = useState<Date>(\n      (month || initialMonth || selectedDate || startDate || new Date()) as Date\n    );\n    const [selectedStartDate, setSelectedStartDate] = useState<\n      Date | null | undefined\n    >(startDate);\n    const [selectedEndDate, setSelectedEndDate] = useState<\n      Date | null | undefined\n    >(endDate);\n    const [locSelectedDate, setLocSelectedDate] = useState<\n      Date | null | undefined\n    >(selectedDate);\n    const [selectingRange, setSelectingRange] = useState<Date | null>(null);\n\n    useEffect(() => {\n      setSelectedStartDate(startDate);\n      setSelectedEndDate(endDate);\n      setLocSelectedDate(selectedDate);\n      if (month !== undefined) {\n        setCurrentMonth(month);\n      }\n    }, [startDate, endDate, selectedDate, month]);\n\n    const handleChange = useCallback(\n      (date: Date) => {\n        const newDate = new Date(\n          date.getFullYear(),\n          date.getMonth(),\n          date.getDate()\n        );\n\n        if (!selectsRange) {\n          setLocSelectedDate(newDate);\n          onChange?.(newDate);\n        } else {\n          if (!selectedStartDate || (selectedStartDate && selectedEndDate)) {\n            setSelectedStartDate(newDate);\n            setSelectedEndDate(null);\n            setSelectingRange(newDate);\n            onChange?.([newDate, null]);\n          } else {\n            const start =\n              selectedStartDate < newDate ? selectedStartDate : newDate;\n            const end =\n              selectedStartDate < newDate ? newDate : selectedStartDate;\n            setSelectedStartDate(start);\n            setSelectedEndDate(end);\n            setSelectingRange(null);\n            onChange?.([start, end]);\n          }\n        }\n      },\n      [onChange, selectsRange, selectedStartDate, selectedEndDate]\n    );\n\n    const decreaseMonth = useCallback(\n      () => setCurrentMonth((prev) => subMonths(prev, 1)),\n      []\n    );\n    const increaseMonth = useCallback(\n      () => setCurrentMonth((prev) => addMonths(prev, 1)),\n      []\n    );\n    const changeMonth = useCallback(\n      (m: number) =>\n        setCurrentMonth((prev) => new Date(prev.getFullYear(), m, 1)),\n      []\n    );\n    const changeYear = useCallback(\n      (y: number) => setCurrentMonth((prev) => new Date(y, prev.getMonth(), 1)),\n      []\n    );\n\n    const handleChipSelect = useCallback(\n      (value: string | null) => {\n        onChipSelect?.(value);\n\n        const chip = chips?.find((c) => c.value === value);\n        if (!chip || chip.days === undefined) return;\n\n        const today = startOfDay(new Date());\n\n        if (chip.days === 0) {\n          if (selectsRange) {\n            setSelectedStartDate(today);\n            setSelectedEndDate(today);\n            setSelectingRange(null);\n            onChange?.([today, today]);\n          } else {\n            setLocSelectedDate(today);\n            onChange?.(today);\n          }\n          setCurrentMonth(today);\n          return;\n        }\n\n        const start = subDays(today, chip.days);\n        if (selectsRange) {\n          setSelectedStartDate(start);\n          setSelectedEndDate(today);\n          setSelectingRange(null);\n          onChange?.([start, today]);\n        } else {\n          setLocSelectedDate(start);\n          onChange?.(start);\n        }\n        setCurrentMonth(start);\n      },\n      [chips, selectsRange, onChange, onChipSelect]\n    );\n\n    return (\n      <Box\n        ref={ref}\n        testID={testID}\n        backgroundColor={theme.colors.layer.float}\n        borderRadius={theme.shape.contextMenu.md.borderRadius}\n        padding={16}\n        overflow=\"hidden\"\n        style={{\n          boxShadow:\n            \"0px 2px 3px 0px rgba(7, 7, 8, 0.2), 0px 6px 10px 4px rgba(7, 7, 8, 0.1)\",\n          width: 312,\n        }}\n      >\n        {topContent?.({ close: () => {} })}\n\n        {chips && chips.length > 0 && (\n          <CalendarChips\n            chips={chips}\n            activeChip={activeChip}\n            onChipSelect={handleChipSelect}\n            themeMode={themeMode}\n            themeProductContext={themeProductContext}\n          />\n        )}\n\n        <CalendarHeader\n          monthDate={currentMonth}\n          decreaseMonth={decreaseMonth}\n          increaseMonth={increaseMonth}\n          changeYear={changeYear}\n          changeMonth={changeMonth}\n          locale={locale}\n          minDate={minDate}\n          maxDate={maxDate}\n          contextMenuMaxHeight={contextMenuMaxHeight}\n          themeMode={themeMode}\n          themeProductContext={themeProductContext}\n        />\n\n        <CalendarGrid\n          currentMonth={currentMonth}\n          locale={locale}\n          firstDayOfWeek={firstDayOfWeek}\n          selectsRange={selectsRange}\n          minDate={minDate}\n          maxDate={maxDate}\n          startDate={selectedStartDate}\n          endDate={selectedEndDate}\n          selectedDate={locSelectedDate}\n          selectingRange={selectingRange}\n          onDayPress={handleChange}\n          themeMode={themeMode}\n          themeProductContext={themeProductContext}\n        />\n\n        {bottomContent?.({ close: () => {} })}\n      </Box>\n    );\n  }\n);\n\nCalendar.displayName = \"Calendar\";\n","import React from \"react\";\nimport {\n  View,\n  Pressable,\n  Image,\n  ViewStyle,\n  ImageStyle,\n  DimensionValue,\n  AnimatableNumericValue,\n  AccessibilityRole,\n} from \"react-native\";\nimport { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleToAccessibilityRole: Record<string, AccessibilityRole> = {\n  button: \"button\",\n  link: \"link\",\n  img: \"image\",\n  image: \"image\",\n  summary: \"summary\",\n  switch: \"switch\",\n  checkbox: \"checkbox\",\n  radio: \"radio\",\n  heading: \"header\",\n  text: \"text\",\n  search: \"search\",\n  alert: \"alert\",\n  none: \"none\",\n  presentation: \"none\",\n  progressbar: \"progressbar\",\n  scrollbar: \"scrollbar\",\n  adjustable: \"adjustable\",\n  tab: \"tab\",\n  menu: \"menu\",\n  menuitem: \"menuitem\",\n  list: \"list\",\n  timer: \"timer\",\n};\n\n/** RN ViewStyle.gap is typed as number (Yoga gap), not DimensionValue. */\nconst toGapValue = (gap: number | string | undefined): number | undefined => {\n  if (gap === undefined) return undefined;\n  if (typeof gap === \"number\") return gap;\n  const pxMatch = /^(\\d+(?:\\.\\d+)?)px$/.exec(gap);\n  if (pxMatch) return Number(pxMatch[1]);\n  const asNumber = Number(gap);\n  return Number.isFinite(asNumber) ? asNumber : undefined;\n};\n\nexport const Box: React.FC<BoxProps> = ({\n  children,\n  onPress,\n  onLayout,\n  onMoveShouldSetResponder,\n  onResponderGrant,\n  onResponderMove,\n  onResponderRelease,\n  onResponderTerminate,\n  backgroundColor,\n  borderColor,\n  borderWidth,\n  borderBottomWidth,\n  borderBottomColor,\n  borderTopWidth,\n  borderTopColor,\n  borderLeftWidth,\n  borderLeftColor,\n  borderRightWidth,\n  borderRightColor,\n  borderRadius,\n  borderStyle,\n  height,\n  padding,\n  paddingHorizontal,\n  paddingVertical,\n  margin,\n  marginTop,\n  marginBottom,\n  marginLeft,\n  marginRight,\n  flexDirection,\n  flexWrap,\n  alignItems,\n  justifyContent,\n  alignSelf,\n  position,\n  top,\n  bottom,\n  left,\n  right,\n  width,\n  minWidth,\n  minHeight,\n  maxWidth,\n  maxHeight,\n  flex,\n  flexShrink,\n  gap,\n  overflow,\n  opacity,\n  zIndex,\n  hoverStyle,\n  pressStyle,\n  style,\n  disabled,\n  \"data-testid\": dataTestId,\n  testID,\n  as,\n  src,\n  alt,\n  ...rest\n}) => {\n  const getContainerStyle = (pressed?: boolean): ViewStyle => ({\n    backgroundColor:\n      pressed && pressStyle?.backgroundColor\n        ? pressStyle.backgroundColor\n        : backgroundColor,\n    borderColor,\n    borderWidth,\n    borderBottomWidth,\n    borderBottomColor,\n    borderTopWidth,\n    borderTopColor,\n    borderLeftWidth,\n    borderLeftColor,\n    borderRightWidth,\n    borderRightColor,\n    borderRadius: borderRadius as AnimatableNumericValue,\n    borderStyle: borderStyle as ViewStyle[\"borderStyle\"],\n    overflow,\n    opacity: opacity ?? (disabled ? 0.5 : undefined),\n    zIndex,\n    height: height as DimensionValue,\n    width: width as DimensionValue,\n    minWidth: minWidth as DimensionValue,\n    minHeight: minHeight as DimensionValue,\n    maxWidth: maxWidth as DimensionValue,\n    maxHeight: maxHeight as DimensionValue,\n    padding: padding as DimensionValue,\n    paddingHorizontal: paddingHorizontal as DimensionValue,\n    paddingVertical: paddingVertical as DimensionValue,\n    margin: margin as DimensionValue,\n    marginTop: marginTop as DimensionValue,\n    marginBottom: marginBottom as DimensionValue,\n    marginLeft: marginLeft as DimensionValue,\n    marginRight: marginRight as DimensionValue,\n    flexDirection,\n    flexWrap,\n    alignItems,\n    justifyContent,\n    alignSelf,\n    position: position as ViewStyle[\"position\"],\n    top: top as DimensionValue,\n    bottom: bottom as DimensionValue,\n    left: left as DimensionValue,\n    right: right as DimensionValue,\n    flex,\n    flexShrink,\n    gap: toGapValue(gap),\n    ...(style as ViewStyle),\n  });\n\n  const finalTestID = dataTestId || testID;\n\n  // Map web a11y props; drop the rest of the web-only attributes before\n  // spreading onto RN hosts (unknown props warn at runtime).\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const {\n    role,\n    tabIndex,\n    onKeyDown,\n    onKeyUp,\n    \"aria-label\": ariaLabel,\n    \"aria-labelledby\": _ariaLabelledBy,\n    \"aria-current\": _ariaCurrent,\n    \"aria-disabled\": ariaDisabled,\n    \"aria-live\": ariaLive,\n    \"aria-busy\": ariaBusy,\n    className,\n    \"data-testid\": _dataTestId,\n    cursor: _cursor,\n    type: _type,\n    ...nativeRest\n  } = rest as Record<string, unknown>;\n\n  const accessibilityRole =\n    (typeof role === \"string\" && roleToAccessibilityRole[role]) ||\n    (as === \"button\" ? \"button\" : undefined);\n  const isDisabled = Boolean(disabled || ariaDisabled);\n  const accessibilityState = {\n    disabled: isDisabled || undefined,\n    busy: Boolean(ariaBusy) || undefined,\n  };\n  const accessibilityLiveRegion =\n    ariaLive === \"polite\" || ariaLive === \"assertive\" ? ariaLive : undefined;\n\n  // Handle as=\"img\" for React Native\n  if (as === \"img\" && src) {\n    const imageStyle: ImageStyle = {\n      width: width as DimensionValue,\n      height: height as DimensionValue,\n      borderRadius: borderRadius as number,\n      position: position as ImageStyle[\"position\"],\n      top: top as DimensionValue,\n      bottom: bottom as DimensionValue,\n      left: left as DimensionValue,\n      right: right as DimensionValue,\n      ...(style as ImageStyle),\n    };\n\n    return (\n      <Image\n        source={{ uri: src }}\n        style={imageStyle}\n        testID={finalTestID}\n        accessibilityLabel={typeof ariaLabel === \"string\" ? ariaLabel : alt}\n        resizeMode=\"cover\"\n        {...nativeRest}\n      />\n    );\n  }\n\n  // Prefer Pressable whenever the node is interactive or explicitly a button,\n  // so disabled / aria-disabled controls stay in the a11y tree as buttons.\n  if (onPress || as === \"button\") {\n    return (\n      <Pressable\n        onPress={!isDisabled && onPress ? onPress : undefined}\n        disabled={isDisabled}\n        onLayout={onLayout}\n        onMoveShouldSetResponder={onMoveShouldSetResponder}\n        onResponderGrant={onResponderGrant}\n        onResponderMove={onResponderMove}\n        onResponderRelease={onResponderRelease}\n        onResponderTerminate={onResponderTerminate}\n        style={({ pressed }) => getContainerStyle(pressed)}\n        testID={finalTestID}\n        accessibilityRole={accessibilityRole}\n        accessibilityLabel={\n          typeof ariaLabel === \"string\" ? ariaLabel : undefined\n        }\n        accessibilityState={accessibilityState}\n        accessibilityLiveRegion={accessibilityLiveRegion}\n        {...nativeRest}\n      >\n        {children}\n      </Pressable>\n    );\n  }\n\n  return (\n    <View\n      style={getContainerStyle()}\n      testID={finalTestID}\n      onLayout={onLayout}\n      onMoveShouldSetResponder={onMoveShouldSetResponder}\n      onResponderGrant={onResponderGrant}\n      onResponderMove={onResponderMove}\n      onResponderRelease={onResponderRelease}\n      onResponderTerminate={onResponderTerminate}\n      accessibilityRole={accessibilityRole}\n      accessibilityLabel={typeof ariaLabel === \"string\" ? ariaLabel : undefined}\n      accessibilityState={accessibilityState}\n      accessibilityLiveRegion={accessibilityLiveRegion}\n      {...nativeRest}\n    >\n      {children}\n    </View>\n  );\n};\n","import React from \"react\";\nimport {\n  Text as RNText,\n  TextStyle,\n  AccessibilityRole,\n  StyleSheet,\n} from \"react-native\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleMap: Record<string, AccessibilityRole> = {\n  alert: \"alert\",\n  heading: \"header\",\n  button: \"button\",\n  link: \"link\",\n  text: \"text\",\n};\n\nconst parseNumericValue = (\n  value: string | number | undefined\n): number | undefined => {\n  if (value === undefined) return undefined;\n  if (typeof value === \"number\") return value;\n  const parsed = parseFloat(value);\n  return isNaN(parsed) ? undefined : parsed;\n};\n\nexport const Text: React.FC<TextProps> = ({\n  children,\n  color,\n  fontSize,\n  fontWeight,\n  fontFamily,\n  textAlign,\n  lineHeight,\n  numberOfLines,\n  id,\n  role,\n  testID,\n  \"data-testid\": dataTestId,\n  style: styleProp,\n  ...props\n}) => {\n  let resolvedFontFamily = fontFamily\n    ? fontFamily.split(\",\")[0].replace(/['\"]/g, \"\").trim()\n    : undefined;\n\n  if (\n    resolvedFontFamily === \"Pilat Wide\" ||\n    resolvedFontFamily === \"Pilat Wide Bold\" ||\n    resolvedFontFamily === \"Aktiv Grotesk\"\n  ) {\n    resolvedFontFamily = undefined;\n  }\n\n  const incomingStyle = StyleSheet.flatten(styleProp) as TextStyle | undefined;\n\n  const baseStyle: TextStyle = {\n    color: color ?? incomingStyle?.color,\n    fontSize: typeof fontSize === \"number\" ? fontSize : undefined,\n    fontWeight: fontWeight as TextStyle[\"fontWeight\"],\n    fontFamily: resolvedFontFamily,\n    textDecorationLine: props.textDecoration as TextStyle[\"textDecorationLine\"],\n    textAlign: textAlign ?? incomingStyle?.textAlign,\n    lineHeight: parseNumericValue(lineHeight ?? incomingStyle?.lineHeight),\n    marginTop: parseNumericValue(\n      incomingStyle?.marginTop as number | string | undefined\n    ),\n    marginBottom: parseNumericValue(\n      incomingStyle?.marginBottom as number | string | undefined\n    ),\n  };\n\n  const accessibilityRole = role ? roleMap[role] : undefined;\n\n  return (\n    <RNText\n      style={baseStyle}\n      numberOfLines={numberOfLines}\n      testID={dataTestId || testID || id}\n      accessibilityRole={accessibilityRole}\n    >\n      {children}\n    </RNText>\n  );\n};\n","import React, { useCallback, useMemo } from \"react\";\nimport { IconButton } from \"@xsolla/xui-button\";\nimport { Select } from \"@xsolla/xui-select\";\nimport { ArrowLeft, ArrowRight } from \"@xsolla/xui-icons-base\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { getMonthInLocale } from \"./utils\";\nimport type { CalendarHeaderProps } from \"./types\";\n\nconst months = [\n  \"january\",\n  \"february\",\n  \"march\",\n  \"april\",\n  \"may\",\n  \"june\",\n  \"july\",\n  \"august\",\n  \"september\",\n  \"october\",\n  \"november\",\n  \"december\",\n];\n\nexport const CalendarHeader: React.FC<CalendarHeaderProps> = ({\n  monthDate,\n  decreaseMonth,\n  increaseMonth,\n  changeYear,\n  changeMonth,\n  prevMonthButtonDisabled,\n  nextMonthButtonDisabled,\n  locale,\n  minDate,\n  maxDate,\n  contextMenuMaxHeight,\n  testID,\n  themeMode,\n  themeProductContext,\n}) => {\n  const handleChangeMonth = useCallback(\n    (value: any) => {\n      changeMonth(months.indexOf(value as string));\n    },\n    [changeMonth]\n  );\n\n  const handleChangeYear = useCallback(\n    (value: any) => {\n      changeYear(parseInt(value as string, 10));\n    },\n    [changeYear]\n  );\n\n  const monthOptions = useMemo(() => {\n    return months.map((month, index) => ({\n      label: getMonthInLocale(index, locale),\n      value: month,\n    }));\n  }, [locale]);\n\n  const yearOptions = useMemo(() => {\n    const options = [];\n    const yearStart = minDate ? minDate.getFullYear() : 1900;\n    const yearEnd = maxDate\n      ? maxDate.getFullYear()\n      : new Date().getFullYear() + 100;\n    for (let i = yearEnd; i >= yearStart; i--) {\n      options.push({ value: i.toString(), label: i.toString() });\n    }\n    return options;\n  }, [minDate, maxDate]);\n\n  return (\n    <Box\n      testID={testID}\n      width=\"100%\"\n      flexDirection=\"row\"\n      justifyContent=\"space-between\"\n      alignItems=\"center\"\n      marginBottom={16}\n      gap={8}\n    >\n      <IconButton\n        size=\"xs\"\n        tone=\"mono\"\n        variant=\"tertiary\"\n        onPress={decreaseMonth}\n        disabled={prevMonthButtonDisabled}\n        icon={<ArrowLeft size={16} />}\n        aria-label=\"Previous month\"\n        themeMode={themeMode}\n        themeProductContext={themeProductContext}\n      />\n\n      <Box flexDirection=\"row\" flex={1} gap={4}>\n        <Box flex={1.5}>\n          <Select\n            value={months[monthDate.getMonth()]}\n            onChange={handleChangeMonth}\n            options={monthOptions}\n            size=\"sm\"\n            maxHeight={contextMenuMaxHeight}\n            themeMode={themeMode}\n            themeProductContext={themeProductContext}\n          />\n        </Box>\n        <Box flex={1}>\n          <Select\n            value={monthDate.getFullYear().toString()}\n            onChange={handleChangeYear}\n            options={yearOptions}\n            size=\"sm\"\n            maxHeight={contextMenuMaxHeight}\n            themeMode={themeMode}\n            themeProductContext={themeProductContext}\n          />\n        </Box>\n      </Box>\n\n      <IconButton\n        size=\"xs\"\n        tone=\"mono\"\n        variant=\"tertiary\"\n        onPress={increaseMonth}\n        disabled={nextMonthButtonDisabled}\n        icon={<ArrowRight size={16} />}\n        aria-label=\"Next month\"\n        themeMode={themeMode}\n        themeProductContext={themeProductContext}\n      />\n    </Box>\n  );\n};\n","import { format, setMonth } from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\nimport type { CalendarLocaleType } from \"./types\";\n\nconst defaultLocale = \"enUS\";\n\nexport function formatDate(\n  date: Date,\n  formatStr: string,\n  locale: CalendarLocaleType = defaultLocale\n) {\n  const localeObj = locales[locale] || locales[defaultLocale];\n\n  return format(date, formatStr, {\n    locale: localeObj,\n  });\n}\n\nexport function getMonthInLocale(\n  month: number,\n  locale: CalendarLocaleType = defaultLocale\n) {\n  return formatDate(setMonth(new Date(), month), \"LLLL\", locale);\n}\n","import React, { useMemo, useCallback } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport {\n  addDays,\n  eachDayOfInterval,\n  endOfDay,\n  endOfMonth,\n  endOfWeek,\n  format,\n  isAfter,\n  isBefore,\n  isSameDay,\n  isSameMonth,\n  isToday,\n  isWithinInterval,\n  startOfDay,\n  startOfMonth,\n  startOfWeek,\n} from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\nimport type { CalendarGridProps } from \"./types\";\n\n/** Width of a single day cell. */\nconst DAY_CELL_WIDTH = 40;\n/**\n * Natural width of the 7-column grid. The header and week rows are pinned to\n * this so the cells sit flush against each other: a range highlight has to read\n * as one continuous band, which it cannot do if the row distributes slack\n * between the cells. See FEP-834.\n */\nconst GRID_WIDTH = DAY_CELL_WIDTH * 7;\n\nexport const CalendarGrid: React.FC<CalendarGridProps> = ({\n  currentMonth,\n  locale = \"enUS\",\n  firstDayOfWeek = 0,\n  selectsRange = false,\n  minDate,\n  maxDate,\n  startDate,\n  endDate,\n  selectedDate,\n  selectingRange,\n  onDayPress,\n  testID,\n  themeMode,\n  themeProductContext,\n}) => {\n  const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n  const localeObj = (locales as any)[locale] || locales.enUS;\n\n  const monthStart = startOfMonth(currentMonth);\n  const monthEnd = endOfMonth(currentMonth);\n  const weekStartsOn = (firstDayOfWeek ?? 0) as any;\n  const calendarStart = startOfWeek(monthStart, { weekStartsOn });\n  const calendarEnd = endOfWeek(monthEnd, { weekStartsOn });\n\n  const days = eachDayOfInterval({ start: calendarStart, end: calendarEnd });\n\n  const weekDays = useMemo(() => {\n    return Array.from({ length: 7 }, (_, i) => {\n      const day = addDays(calendarStart, i);\n      return format(day, \"EEEEEE\", { locale: localeObj });\n    });\n  }, [calendarStart, localeObj]);\n\n  const weeks = useMemo(() => {\n    const weekArray: Date[][] = [];\n    for (let i = 0; i < days.length; i += 7) {\n      weekArray.push(days.slice(i, i + 7));\n    }\n    return weekArray;\n  }, [days]);\n\n  const isDateDisabled = useCallback(\n    (date: Date) => {\n      if (minDate && isBefore(date, startOfDay(minDate))) return true;\n      if (maxDate && isAfter(date, endOfDay(maxDate))) return true;\n      return false;\n    },\n    [minDate, maxDate]\n  );\n\n  const isDateInRange = useCallback(\n    (date: Date) => {\n      if (!selectsRange || !startDate) return false;\n      const rangeEnd = endDate || selectingRange;\n      if (!rangeEnd) return false;\n      const start = startDate < rangeEnd ? startDate : rangeEnd;\n      const end = startDate < rangeEnd ? rangeEnd : startDate;\n      return isWithinInterval(date, {\n        start: startOfDay(start),\n        end: endOfDay(end),\n      });\n    },\n    [selectsRange, startDate, endDate, selectingRange]\n  );\n\n  return (\n    <Box testID={testID}>\n      <Box\n        flexDirection=\"row\"\n        justifyContent=\"flex-start\"\n        width={GRID_WIDTH}\n        marginBottom={8}\n      >\n        {weekDays.map((day, i) => (\n          <Box key={i} width={DAY_CELL_WIDTH} alignItems=\"center\">\n            <Text\n              fontSize={12}\n              fontWeight=\"600\"\n              color={theme.colors.content.tertiary}\n            >\n              {day.toUpperCase()}\n            </Text>\n          </Box>\n        ))}\n      </Box>\n\n      <Box gap={2}>\n        {weeks.map((week, i) => (\n          <Box\n            key={i}\n            flexDirection=\"row\"\n            justifyContent=\"flex-start\"\n            width={GRID_WIDTH}\n          >\n            {week.map((day, j) => {\n              const isOutsideMonth = !isSameMonth(day, currentMonth);\n              const isSelected =\n                (!selectsRange &&\n                  selectedDate &&\n                  isSameDay(day, selectedDate)) ||\n                (selectsRange &&\n                  startDate &&\n                  endDate &&\n                  isSameDay(day, startDate) &&\n                  isSameDay(day, endDate));\n              const isRangeStart =\n                selectsRange && startDate && isSameDay(day, startDate);\n              const isRangeEnd =\n                selectsRange && endDate && isSameDay(day, endDate);\n              const inRange = isDateInRange(day);\n              const today = isToday(day);\n              const disabled = isDateDisabled(day);\n\n              let bgColor = \"transparent\";\n              let textColor = theme.colors.content.primary;\n\n              if (isSelected || isRangeStart || isRangeEnd) {\n                bgColor = theme.colors.background.brand.primary;\n                textColor = theme.colors.content.on.brand;\n              } else if (inRange) {\n                bgColor = theme.colors.overlay.brand;\n              } else if (today) {\n                bgColor = theme.colors.overlay.mono;\n              }\n\n              if (isOutsideMonth || disabled) {\n                textColor = theme.colors.content.tertiary;\n              }\n\n              return (\n                <Box\n                  key={j}\n                  width={DAY_CELL_WIDTH}\n                  height={32}\n                  alignItems=\"center\"\n                  justifyContent=\"center\"\n                  borderTopLeftRadius={isSelected || isRangeStart ? 4 : 0}\n                  borderTopRightRadius={isSelected || isRangeEnd ? 4 : 0}\n                  borderBottomLeftRadius={isSelected || isRangeStart ? 4 : 0}\n                  borderBottomRightRadius={isSelected || isRangeEnd ? 4 : 0}\n                  backgroundColor={bgColor}\n                  cursor={disabled || isOutsideMonth ? \"default\" : \"pointer\"}\n                  onPress={() =>\n                    !disabled && !isOutsideMonth && onDayPress?.(day)\n                  }\n                  hoverStyle={\n                    !disabled &&\n                    !isOutsideMonth &&\n                    !isSelected &&\n                    !isRangeStart &&\n                    !isRangeEnd\n                      ? { backgroundColor: theme.colors.overlay.mono }\n                      : undefined\n                  }\n                >\n                  <Text\n                    color={textColor}\n                    fontSize={14}\n                    fontWeight={\n                      isSelected || isRangeStart || isRangeEnd ? \"600\" : \"400\"\n                    }\n                  >\n                    {format(day, \"d\")}\n                  </Text>\n                </Box>\n              );\n            })}\n          </Box>\n        ))}\n      </Box>\n    </Box>\n  );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { Tag } from \"@xsolla/xui-tag\";\nimport type { CalendarChipsProps } from \"./types\";\n\nexport const CalendarChips: React.FC<CalendarChipsProps> = ({\n  chips,\n  activeChip,\n  onChipSelect,\n  testID,\n  themeMode,\n  themeProductContext,\n}) => {\n  if (!chips || chips.length === 0) return null;\n\n  return (\n    <Box\n      testID={testID}\n      flexDirection=\"row\"\n      flexWrap=\"wrap\"\n      gap={8}\n      marginBottom={16}\n    >\n      {chips.map((chip) => {\n        const isActive = activeChip === chip.value;\n        return (\n          <Box\n            key={chip.value}\n            onPress={() => onChipSelect?.(chip.value)}\n            cursor=\"pointer\"\n          >\n            <Tag\n              size=\"sm\"\n              tone={isActive ? \"brand\" : \"primary\"}\n              type={isActive ? \"solid\" : \"outlined\"}\n              themeMode={themeMode}\n              themeProductContext={themeProductContext}\n            >\n              {chip.label}\n            </Tag>\n          </Box>\n        );\n      })}\n    </Box>\n  );\n};\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport { addMonths, subDays, subMonths, startOfDay } from \"date-fns\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarChips } from \"./CalendarChips\";\nimport type { DualCalendarProps } from \"./types\";\n\nexport const DualCalendar = forwardRef<any, DualCalendarProps>(\n  (\n    {\n      locale = \"enUS\",\n      onChange,\n      startDate,\n      endDate,\n      contextMenuMaxHeight,\n      topContent,\n      bottomContent,\n      chips,\n      activeChip,\n      onChipSelect,\n      testID,\n      minDate,\n      maxDate,\n      firstDayOfWeek = 0,\n      month,\n      initialMonth,\n      themeMode,\n      themeProductContext,\n    },\n    ref\n  ) => {\n    const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n    const [leftMonth, setLeftMonth] = useState<Date>(\n      (month || initialMonth || startDate || new Date()) as Date\n    );\n    const [selectedStartDate, setSelectedStartDate] = useState<\n      Date | null | undefined\n    >(startDate);\n    const [selectedEndDate, setSelectedEndDate] = useState<\n      Date | null | undefined\n    >(endDate);\n    const [selectingRange, setSelectingRange] = useState<Date | null>(null);\n\n    const rightMonth = addMonths(leftMonth, 1);\n\n    useEffect(() => {\n      setSelectedStartDate(startDate);\n      setSelectedEndDate(endDate);\n      if (month !== undefined) {\n        setLeftMonth(month);\n      }\n    }, [startDate, endDate, month]);\n\n    const handleDayPress = useCallback(\n      (date: Date) => {\n        const newDate = new Date(\n          date.getFullYear(),\n          date.getMonth(),\n          date.getDate()\n        );\n\n        if (!selectedStartDate || (selectedStartDate && selectedEndDate)) {\n          setSelectedStartDate(newDate);\n          setSelectedEndDate(null);\n          setSelectingRange(newDate);\n          onChange?.([newDate, null]);\n        } else {\n          const start =\n            selectedStartDate < newDate ? selectedStartDate : newDate;\n          const end = selectedStartDate < newDate ? newDate : selectedStartDate;\n          setSelectedStartDate(start);\n          setSelectedEndDate(end);\n          setSelectingRange(null);\n          onChange?.([start, end]);\n        }\n      },\n      [onChange, selectedStartDate, selectedEndDate]\n    );\n\n    const decreaseLeftMonth = useCallback(\n      () => setLeftMonth((prev) => subMonths(prev, 1)),\n      []\n    );\n    const increaseLeftMonth = useCallback(\n      () => setLeftMonth((prev) => addMonths(prev, 1)),\n      []\n    );\n    const changeLeftMonth = useCallback(\n      (m: number) => setLeftMonth((prev) => new Date(prev.getFullYear(), m, 1)),\n      []\n    );\n    const changeLeftYear = useCallback(\n      (y: number) => setLeftMonth((prev) => new Date(y, prev.getMonth(), 1)),\n      []\n    );\n\n    const decreaseRightMonth = useCallback(\n      () => setLeftMonth((prev) => subMonths(prev, 1)),\n      []\n    );\n    const increaseRightMonth = useCallback(\n      () => setLeftMonth((prev) => addMonths(prev, 1)),\n      []\n    );\n    const changeRightMonth = useCallback(\n      (m: number) => setLeftMonth(new Date(rightMonth.getFullYear(), m - 1, 1)),\n      [rightMonth]\n    );\n    const changeRightYear = useCallback(\n      (y: number) => setLeftMonth(new Date(y, rightMonth.getMonth() - 1, 1)),\n      [rightMonth]\n    );\n\n    const handleChipSelect = useCallback(\n      (value: string | null) => {\n        onChipSelect?.(value);\n\n        const chip = chips?.find((c) => c.value === value);\n        if (!chip || chip.days === undefined) return;\n\n        const today = startOfDay(new Date());\n\n        if (chip.days === 0) {\n          setSelectedStartDate(today);\n          setSelectedEndDate(today);\n          setSelectingRange(null);\n          setLeftMonth(today);\n          onChange?.([today, today]);\n          return;\n        }\n\n        const start = subDays(today, chip.days);\n        setSelectedStartDate(start);\n        setSelectedEndDate(today);\n        setSelectingRange(null);\n        setLeftMonth(start);\n        onChange?.([start, today]);\n      },\n      [chips, onChange, onChipSelect]\n    );\n\n    return (\n      <Box\n        ref={ref}\n        testID={testID}\n        backgroundColor={theme.colors.layer.float}\n        borderRadius={theme.shape.contextMenu.md.borderRadius}\n        padding={16}\n        overflow=\"hidden\"\n        style={{\n          boxShadow:\n            \"0px 2px 3px 0px rgba(7, 7, 8, 0.2), 0px 6px 10px 4px rgba(7, 7, 8, 0.1)\",\n          width: 624,\n        }}\n      >\n        {topContent?.({ close: () => {} })}\n\n        {chips && chips.length > 0 && (\n          <CalendarChips\n            chips={chips}\n            activeChip={activeChip}\n            onChipSelect={handleChipSelect}\n            themeMode={themeMode}\n            themeProductContext={themeProductContext}\n          />\n        )}\n\n        <Box flexDirection=\"row\" gap={16}>\n          <Box flex={1}>\n            <CalendarHeader\n              monthDate={leftMonth}\n              decreaseMonth={decreaseLeftMonth}\n              increaseMonth={increaseLeftMonth}\n              changeYear={changeLeftYear}\n              changeMonth={changeLeftMonth}\n              locale={locale}\n              minDate={minDate}\n              maxDate={maxDate}\n              contextMenuMaxHeight={contextMenuMaxHeight}\n              themeMode={themeMode}\n              themeProductContext={themeProductContext}\n            />\n\n            <CalendarGrid\n              currentMonth={leftMonth}\n              locale={locale}\n              firstDayOfWeek={firstDayOfWeek}\n              selectsRange\n              minDate={minDate}\n              maxDate={maxDate}\n              startDate={selectedStartDate}\n              endDate={selectedEndDate}\n              selectingRange={selectingRange}\n              onDayPress={handleDayPress}\n              themeMode={themeMode}\n              themeProductContext={themeProductContext}\n            />\n          </Box>\n\n          <Box flex={1}>\n            <CalendarHeader\n              monthDate={rightMonth}\n              decreaseMonth={decreaseRightMonth}\n              increaseMonth={increaseRightMonth}\n              changeYear={changeRightYear}\n              changeMonth={changeRightMonth}\n              locale={locale}\n              minDate={minDate}\n              maxDate={maxDate}\n              contextMenuMaxHeight={contextMenuMaxHeight}\n              themeMode={themeMode}\n              themeProductContext={themeProductContext}\n            />\n\n            <CalendarGrid\n              currentMonth={rightMonth}\n              locale={locale}\n              firstDayOfWeek={firstDayOfWeek}\n              selectsRange\n              minDate={minDate}\n              maxDate={maxDate}\n              startDate={selectedStartDate}\n              endDate={selectedEndDate}\n              selectingRange={selectingRange}\n              onDayPress={handleDayPress}\n              themeMode={themeMode}\n              themeProductContext={themeProductContext}\n            />\n          </Box>\n        </Box>\n\n        {bottomContent?.({ close: () => {} })}\n      </Box>\n    );\n  }\n);\n\nDualCalendar.displayName = \"DualCalendar\";\n"],"mappings":"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","names":["useCallback","jsx","useResolvedTheme","startOfDay","jsx","useMemo","useCallback","format","locales","jsx","jsxs","useMemo","useCallback","jsx","jsx","jsxs","useResolvedTheme","useCallback","startOfDay","forwardRef","useCallback","useEffect","useState","useResolvedTheme","addMonths","subDays","subMonths","startOfDay","jsx","jsxs","forwardRef","useResolvedTheme","useState","addMonths","useEffect","useCallback","subMonths","startOfDay","subDays"]}