{"version":3,"file":"Common.cjs","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n  ComponentProps,\n  forwardRef,\n  HTMLAttributes,\n  KeyboardEvent,\n  ReactNode,\n  useCallback,\n  useEffect,\n  useId,\n  useRef,\n  useState,\n} from 'react';\nimport { Icon, IconName } from '@/components/Icon';\nimport { Container } from '@/components/Container';\nimport { useCalendar, UseCalendarOptions } from '@h6s/calendar';\nimport { IconButton, IconButtonSize } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Common.module.css';\nimport {\n  Timezone,\n  formatDateHeader,\n  formatSelectedDate,\n  formatSelectedDateTime,\n  formatSelectedDateTimeWithSeconds,\n  formatWeekday,\n  isDateRangeValid,\n  shiftToTimezone,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\n\nconst viewGridMonths = {\n  columns: 4,\n  rows: 3,\n} as const;\n\nconst viewGridYears = {\n  columns: 3,\n  rows: 3,\n} as const;\n\nconst totalYears = viewGridYears.columns * viewGridYears.rows;\nconst yearsOffset = Math.floor(totalYears / 2);\n\nconst highlightedInputWrapperVariants = cva(styles['highlighted-input-wrapper'], {\n  variants: {\n    fillWidth: { true: styles['highlighted-input-wrapper_fill-width'] },\n    active: { true: styles['highlighted-input-wrapper_active'] },\n  },\n});\n\nconst dateTableCellVariants = cva(styles['date-table-cell'], {\n  variants: {\n    muted: { true: styles['date-table-cell_muted'] },\n    disabled: { true: styles['date-table-cell_disabled'] },\n    selected: { true: styles['date-table-cell_selected'] },\n    present: { true: styles['date-table-cell_present'] },\n  },\n});\n\nconst gridCellVariants = cva(styles['grid-cell'], {\n  variants: {\n    active: { true: styles['grid-cell_active'] },\n    present: { true: styles['grid-cell_present'] },\n  },\n});\n\ninterface HighlightedInputWrapperProps extends Omit<\n  ComponentProps<typeof InputWrapper>,\n  'error'\n> {\n  isActive: boolean;\n  error?: boolean;\n  fillWidth?: boolean;\n}\n\n// The resting default border and the error border are identical to what the\n// InputWrapper base / `.wrapper_error` already render, so only the width and the\n// active border are overridden here (see Common.module.css).\nconst HighlightedInputWrapper = ({\n  isActive,\n  error,\n  fillWidth,\n  disabled,\n  id,\n  children,\n  className,\n}: HighlightedInputWrapperProps) => (\n  <InputWrapper\n    error={error}\n    disabled={disabled}\n    id={id}\n    className={cn(\n      highlightedInputWrapperVariants({ fillWidth, active: isActive && !error }),\n      className\n    )}\n  >\n    {children}\n  </InputWrapper>\n);\n\ninterface DatePickerInputProps {\n  isActive: boolean;\n  disabled: boolean;\n  id?: string;\n  partialMonth?: number;\n  partialYear?: number;\n  placeholder?: string;\n  selectedDate?: Date;\n  timezone?: Timezone;\n}\n\nconst formatPartialDate = (\n  timezone: Timezone,\n  selectedDate?: Date,\n  partialYear?: number,\n  partialMonth?: number\n): string => {\n  if (typeof partialYear === 'number' && typeof partialMonth === 'number') {\n    const date =\n      timezone === 'UTC'\n        ? new Date(Date.UTC(partialYear, partialMonth, 1))\n        : new Date(partialYear, partialMonth, 1);\n    return formatDateHeader(timezone, date);\n  }\n\n  if (typeof partialYear === 'number') {\n    return String(partialYear);\n  }\n\n  if (selectedDate instanceof Date) {\n    return formatSelectedDate(timezone, selectedDate);\n  }\n\n  return '';\n};\n\nexport const DatePickerInput = ({\n  isActive,\n  disabled,\n  id,\n  partialMonth,\n  partialYear,\n  placeholder,\n  selectedDate,\n  timezone = 'system',\n}: DatePickerInputProps) => {\n  const defaultId = useId();\n  const formattedSelectedDate = formatPartialDate(\n    timezone,\n    selectedDate,\n    partialYear,\n    partialMonth\n  );\n\n  return (\n    <HighlightedInputWrapper\n      isActive={isActive}\n      disabled={disabled}\n      id={id ?? defaultId}\n    >\n      <InputStartContent>\n        <Icon name=\"calendar\" />\n      </InputStartContent>\n      <InputElement\n        $hasStartContent\n        data-testid=\"datepicker-input\"\n        placeholder={placeholder}\n        readOnly\n        value={formattedSelectedDate}\n      />\n    </HighlightedInputWrapper>\n  );\n};\n\ninterface DateRangePickerInputProps {\n  isActive: boolean;\n  disabled: boolean;\n  id?: string;\n  placeholder?: string;\n  selectedEndDate?: Date;\n  selectedStartDate?: Date;\n  timezone?: Timezone;\n}\n\nexport const DateRangePickerInput = ({\n  isActive,\n  disabled,\n  id,\n  placeholder,\n  selectedEndDate,\n  selectedStartDate,\n  timezone = 'system',\n}: DateRangePickerInputProps) => {\n  const defaultId = useId();\n\n  let formattedValue = (\n    <Text\n      color=\"muted\"\n      component=\"span\"\n    >\n      {placeholder ?? ''}\n    </Text>\n  );\n  if (selectedStartDate) {\n    if (selectedEndDate) {\n      formattedValue = (\n        <span>\n          {formatSelectedDate(timezone, selectedStartDate)} –{' '}\n          {formatSelectedDate(timezone, selectedEndDate)}\n        </span>\n      );\n    } else {\n      formattedValue = (\n        <span>\n          {formatSelectedDate(timezone, selectedStartDate)}{' '}\n          <Text\n            color=\"muted\"\n            component=\"span\"\n          >\n            – end date\n          </Text>\n        </span>\n      );\n    }\n  }\n\n  return (\n    <HighlightedInputWrapper\n      isActive={isActive}\n      disabled={disabled}\n      id={id ?? defaultId}\n    >\n      <InputStartContent>\n        <Icon name=\"calendar\" />\n      </InputStartContent>\n      <InputElement\n        $hasStartContent\n        as=\"div\"\n        data-testid=\"daterangepicker-input\"\n      >\n        {formattedValue}\n      </InputElement>\n    </HighlightedInputWrapper>\n  );\n};\n\ninterface DateTimeRangePickerInputProps {\n  isActive: boolean;\n  disabled: boolean;\n  id?: string;\n  placeholder?: string;\n  selectedEndDate?: Date;\n  selectedStartDate?: Date;\n  shouldShowSeconds?: boolean;\n  timezone?: Timezone;\n}\n\nexport const DateTimeRangePickerInput = ({\n  isActive,\n  disabled,\n  id,\n  placeholder,\n  selectedEndDate,\n  selectedStartDate,\n  shouldShowSeconds,\n  timezone = 'system',\n}: DateTimeRangePickerInputProps) => {\n  const defaultId = useId();\n\n  const formatDateTime = useCallback(\n    (date: Date) => {\n      if (shouldShowSeconds) {\n        return formatSelectedDateTimeWithSeconds(timezone, date);\n      }\n\n      return formatSelectedDateTime(timezone, date);\n    },\n    [shouldShowSeconds, timezone]\n  );\n\n  let formattedValue = (\n    <Text\n      color=\"muted\"\n      component=\"span\"\n    >\n      {placeholder ?? ''}\n    </Text>\n  );\n\n  if (selectedStartDate) {\n    if (selectedEndDate) {\n      formattedValue = (\n        <span>\n          {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')} –{' '}\n          {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n        </span>\n      );\n    } else {\n      formattedValue = (\n        <span>\n          {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')}{' '}\n          <Text\n            color=\"muted\"\n            component=\"span\"\n          >\n            – end date\n          </Text>\n        </span>\n      );\n    }\n  } else if (selectedEndDate) {\n    formattedValue = (\n      <span>\n        <Text\n          color=\"muted\"\n          component=\"span\"\n        >\n          start date –{' '}\n        </Text>\n        {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n      </span>\n    );\n  }\n\n  const startDateIsAfterEndDate =\n    selectedStartDate &&\n    selectedEndDate &&\n    !isDateRangeValid({\n      startDate: selectedStartDate,\n      endDate: selectedEndDate,\n    });\n\n  return (\n    <HighlightedInputWrapper\n      isActive={isActive}\n      fillWidth\n      disabled={disabled}\n      error={startDateIsAfterEndDate}\n      id={id ?? defaultId}\n    >\n      <InputStartContent>\n        <Icon name=\"calendar\" />\n      </InputStartContent>\n      <InputElement\n        $hasStartContent\n        as=\"div\"\n        data-testid=\"datetimepicker-input\"\n      >\n        {formattedValue}\n      </InputElement>\n    </HighlightedInputWrapper>\n  );\n};\n\ninterface DateTableCellProps extends HTMLAttributes<HTMLTableCellElement> {\n  isCurrentMonth?: boolean;\n  isDisabled?: boolean;\n  isSelected?: boolean;\n  isPresent?: boolean;\n}\n\nexport const DateTableCell = forwardRef<HTMLTableCellElement, DateTableCellProps>(\n  (\n    {\n      isCurrentMonth,\n      isDisabled,\n      isSelected,\n      isPresent,\n      className,\n      children,\n      onClick,\n      onKeyDown,\n      onMouseEnter,\n      onMouseLeave,\n      role,\n      tabIndex,\n      'aria-label': ariaLabel,\n    },\n    ref\n  ) => (\n    <td\n      ref={ref}\n      className={cn(\n        dateTableCellVariants({\n          muted: !isCurrentMonth || isDisabled,\n          disabled: isDisabled,\n          selected: isSelected,\n          present: isPresent && !isSelected,\n        }),\n        className\n      )}\n      onClick={onClick}\n      onKeyDown={onKeyDown}\n      onMouseEnter={onMouseEnter}\n      onMouseLeave={onMouseLeave}\n      role={role}\n      tabIndex={tabIndex}\n      aria-label={ariaLabel}\n    >\n      {children}\n    </td>\n  )\n);\nDateTableCell.displayName = 'DateTableCell';\n\nexport const StyledDropdownItem = ({\n  className,\n  children,\n  onClick,\n  'data-testid': dataTestId,\n}: ComponentProps<typeof Dropdown.Item> & { 'data-testid'?: string }) => (\n  <Dropdown.Item\n    onClick={onClick}\n    data-testid={dataTestId}\n    className={cn(styles['styled-dropdown-item'], className)}\n  >\n    {children}\n  </Dropdown.Item>\n);\n\nexport type Body = ReturnType<typeof useCalendar>['body'];\n\ninterface CalendarRendererProps {\n  calendarOptions?: UseCalendarOptions;\n  children: (body: Body) => ReactNode;\n  allowYearMonthSelection?: boolean;\n  onYearSelect?: (year: number) => void;\n  onMonthSelect?: (year: number, month: number) => void;\n  selectedDate?: Date;\n  timezone?: Timezone;\n  className?: string;\n  'data-testid'?: string;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = forwardRef<\n  HTMLButtonElement,\n  ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n  (\n    {\n      className,\n      icon,\n      onClick,\n      onKeyDown,\n      size,\n      type,\n      tabIndex,\n      'data-testid': dataTestId,\n    },\n    ref\n  ) => (\n    <IconButton\n      ref={ref}\n      icon={icon}\n      onClick={onClick}\n      onKeyDown={onKeyDown}\n      size={size}\n      type={type}\n      tabIndex={tabIndex}\n      data-testid={dataTestId}\n      className={cn(styles['picker-nav-control'], className)}\n    />\n  )\n);\nPickerNavControl.displayName = 'PickerNavControl';\n\nconst EmptyDateSelectNav = forwardRef<\n  HTMLButtonElement,\n  ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n  (\n    { className, icon, onKeyDown, size, type, tabIndex, 'data-testid': dataTestId },\n    ref\n  ) => (\n    <PickerNavControl\n      ref={ref}\n      icon={icon}\n      onKeyDown={onKeyDown}\n      size={size}\n      type={type}\n      tabIndex={tabIndex}\n      data-testid={dataTestId}\n      className={cn(styles['empty-date-select-nav'], className)}\n    />\n  )\n);\nEmptyDateSelectNav.displayName = 'EmptyDateSelectNav';\n\nconst DateSelectNav = ({\n  id,\n  icon,\n  onClick,\n  onKeyDown,\n  view,\n  size = 'sm',\n  tabIndex,\n  buttonRef,\n}: {\n  id: string;\n  icon: Extract<IconName, 'chevron-left' | 'chevron-right'>;\n  onClick: () => void;\n  onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n  view: DateViewOption;\n  size?: IconButtonSize;\n  tabIndex?: number;\n  buttonRef?: (el: HTMLButtonElement | null) => void;\n}) => {\n  if (view === MONTHS) {\n    return (\n      <EmptyDateSelectNav\n        ref={buttonRef}\n        data-testid={id}\n        icon={icon}\n        size={size}\n        type=\"ghost\"\n        tabIndex={tabIndex}\n        onKeyDown={onKeyDown}\n      />\n    );\n  }\n  return (\n    <PickerNavControl\n      ref={buttonRef}\n      data-testid={id}\n      icon={icon}\n      onClick={onClick}\n      onKeyDown={onKeyDown}\n      size={size}\n      type=\"ghost\"\n      tabIndex={tabIndex}\n    />\n  );\n};\n\nexport const CalendarRenderer = ({\n  calendarOptions = {},\n  children,\n  allowYearMonthSelection = true,\n  onYearSelect,\n  onMonthSelect,\n  selectedDate,\n  timezone = 'system',\n  className,\n  ...props\n}: CalendarRendererProps) => {\n  // useCalendar reads dates as local; shiftToTimezone is a no-op in local mode.\n  const shiftedCalendarOptions: UseCalendarOptions =\n    calendarOptions.defaultDate instanceof Date\n      ? {\n          ...calendarOptions,\n          defaultDate: shiftToTimezone(calendarOptions.defaultDate, timezone),\n        }\n      : calendarOptions;\n  const { body, headers, month, navigation, year } = useCalendar({\n    defaultWeekStart: 1,\n    ...shiftedCalendarOptions,\n  });\n\n  const [view, setView] = useState<DateViewOption>(DAYS);\n  const [selectedYear, setSelectedYear] = useState<number | null>(null);\n  const [yearOffset, setYearOffset] = useState(0);\n  const [focusedMonthIndex, setFocusedMonthIndex] = useState(month);\n  const [focusedYearIndex, setFocusedYearIndex] = useState(yearsOffset);\n\n  const monthGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n  const yearGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n  const headerNavRefs = useRef<Array<HTMLButtonElement | null>>([null, null, null]);\n\n  useEffect(() => {\n    if (view === YEARS) {\n      yearGridRef.current[focusedYearIndex]?.focus();\n    } else if (view === MONTHS) {\n      monthGridRef.current[focusedMonthIndex]?.focus();\n    }\n  }, [view, focusedYearIndex, focusedMonthIndex]);\n\n  const onNextClick = useCallback(() => {\n    if (view === YEARS) {\n      setYearOffset(prev => prev + totalYears);\n    } else {\n      navigation.toNext();\n    }\n  }, [navigation, view]);\n\n  const onPreviousClick = useCallback(() => {\n    if (view === YEARS) {\n      setYearOffset(prev => prev - totalYears);\n      return;\n    }\n\n    navigation.toPrev();\n  }, [navigation, view]);\n\n  const onTitleClick = useCallback(() => {\n    if (view !== DAYS) {\n      return;\n    }\n\n    setView(YEARS);\n  }, [view]);\n\n  const onHeaderNavKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n    const validRefs = headerNavRefs.current.filter(ref => {\n      if (!ref) {\n        return false;\n      }\n      return (\n        ref.offsetParent !== null ||\n        (!ref.hasAttribute('hidden') && ref.getAttribute('aria-hidden') !== 'true')\n      );\n    });\n\n    const currentValidIndex = validRefs.indexOf(e.currentTarget);\n    if (currentValidIndex === -1 || validRefs.length <= 1) {\n      return;\n    }\n\n    if (e.key === 'ArrowRight') {\n      e.preventDefault();\n      const nextValidIndex = (currentValidIndex + 1) % validRefs.length;\n      validRefs[nextValidIndex]?.focus();\n    } else if (e.key === 'ArrowLeft') {\n      e.preventDefault();\n      const prevValidIndex =\n        (currentValidIndex - 1 + validRefs.length) % validRefs.length;\n      validRefs[prevValidIndex]?.focus();\n    }\n  }, []);\n\n  const onYearSelection = useCallback(\n    (yearValue: number) => {\n      setSelectedYear(yearValue);\n      setView(MONTHS);\n      onYearSelect?.(yearValue);\n    },\n    [onYearSelect]\n  );\n\n  const onMonthSelection = useCallback(\n    (monthIndex: number) => {\n      const finalYear = typeof selectedYear === 'number' ? selectedYear : year;\n      const newDate = new Date(finalYear, monthIndex, 1);\n\n      navigation.setDate(newDate);\n      onMonthSelect?.(finalYear, monthIndex);\n\n      setView(DAYS);\n      setSelectedYear(null);\n      setYearOffset(0);\n    },\n    [selectedYear, year, navigation, onMonthSelect]\n  );\n\n  const onMonthGridKeyDown = useCallback(\n    (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n      const columns = viewGridMonths.columns;\n      const totalItems = 12;\n      let newIndex = index;\n\n      switch (event.key) {\n        case 'ArrowRight':\n          event.preventDefault();\n          newIndex = (index + 1) % totalItems;\n          break;\n        case 'ArrowLeft':\n          event.preventDefault();\n          newIndex = (index - 1 + totalItems) % totalItems;\n          break;\n        case 'ArrowDown':\n          event.preventDefault();\n          newIndex = (index + columns) % totalItems;\n          break;\n        case 'ArrowUp':\n          event.preventDefault();\n          newIndex = (index - columns + totalItems) % totalItems;\n          break;\n        case 'Enter':\n        case ' ':\n          event.preventDefault();\n          onMonthSelection(index);\n          return;\n        default:\n          return;\n      }\n\n      setFocusedMonthIndex(newIndex);\n      monthGridRef.current[newIndex]?.focus();\n    },\n    [onMonthSelection]\n  );\n\n  const onYearGridKeyDown = useCallback(\n    (event: KeyboardEvent<HTMLButtonElement>, index: number, yearValue: number) => {\n      const columns = viewGridYears.columns;\n      const totalItems = totalYears;\n      let newIndex = index;\n\n      switch (event.key) {\n        case 'ArrowRight':\n          event.preventDefault();\n          newIndex = (index + 1) % totalItems;\n          break;\n        case 'ArrowLeft':\n          event.preventDefault();\n          newIndex = (index - 1 + totalItems) % totalItems;\n          break;\n        case 'ArrowDown':\n          event.preventDefault();\n          newIndex = (index + columns) % totalItems;\n          break;\n        case 'ArrowUp':\n          event.preventDefault();\n          newIndex = (index - columns + totalItems) % totalItems;\n          break;\n        case 'Enter':\n        case ' ':\n          event.preventDefault();\n          onYearSelection(yearValue);\n          return;\n        default:\n          return;\n      }\n\n      setFocusedYearIndex(newIndex);\n      yearGridRef.current[newIndex]?.focus();\n    },\n    [onYearSelection]\n  );\n\n  const headerDate = new Date();\n  headerDate.setMonth(month);\n  headerDate.setFullYear(year);\n\n  const getHeaderTitle = (view: DateViewOption) => {\n    if (view === MONTHS) {\n      return 'Month';\n    }\n\n    if (view === YEARS) {\n      return 'Year';\n    }\n\n    // headerDate already has the right month/year in its local fields.\n    return formatDateHeader('system', headerDate);\n  };\n\n  const renderMonthsGrid = () => {\n    const today = shiftToTimezone(new Date(), timezone);\n    const thisMonth = today.getMonth();\n    const thisYear = today.getFullYear();\n    const shiftedSelected = selectedDate\n      ? shiftToTimezone(selectedDate, timezone)\n      : undefined;\n    const selectedMonth = shiftedSelected?.getMonth();\n    const selectedYear = shiftedSelected?.getFullYear();\n\n    return (\n      <div\n        className={cn(styles['grid-container'], styles['months-grid'])}\n        data-testid=\"months-grid\"\n        role=\"grid\"\n        aria-label=\"Select month\"\n      >\n        {monthAbbreviations.map((month, index) => {\n          const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n            onMonthGridKeyDown(event, index);\n          };\n\n          const handleClick = () => {\n            onMonthSelection(index);\n          };\n\n          const ref = (element: HTMLButtonElement) => {\n            monthGridRef.current[index] = element;\n          };\n\n          const isActive = Boolean(\n            selectedDate && index === selectedMonth && year === selectedYear\n          );\n          const isPresent = index === thisMonth && year === thisYear;\n\n          return (\n            <button\n              key={month}\n              type=\"button\"\n              ref={ref}\n              className={gridCellVariants({\n                active: isActive,\n                present: isPresent && !isActive,\n              })}\n              onClick={handleClick}\n              onKeyDown={handleKeyDown}\n              data-testid={`month-cell-${index}`}\n              tabIndex={index === focusedMonthIndex ? 0 : -1}\n              aria-label={month}\n            >\n              {month}\n            </button>\n          );\n        })}\n      </div>\n    );\n  };\n\n  const renderYearsGrid = () => {\n    const years: Array<number> = [];\n    const baseYear = year + yearOffset;\n    const thisYear = shiftToTimezone(new Date(), timezone).getFullYear();\n    const selectedYear = selectedDate\n      ? shiftToTimezone(selectedDate, timezone).getFullYear()\n      : undefined;\n\n    for (let i = -yearsOffset; i <= yearsOffset; i++) {\n      years.push(baseYear + i);\n    }\n\n    return (\n      <div\n        className={cn(styles['grid-container'], styles['years-grid'])}\n        data-testid=\"years-grid\"\n        role=\"grid\"\n        aria-label=\"Select year\"\n      >\n        {years.map((currentYear, index) => {\n          const ref = (element: HTMLButtonElement) => {\n            yearGridRef.current[index] = element;\n          };\n\n          const handleClick = () => {\n            onYearSelection(currentYear);\n          };\n\n          const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n            onYearGridKeyDown(event, index, currentYear);\n          };\n\n          const isActive = Boolean(selectedDate && currentYear === selectedYear);\n          const isPresent = currentYear === thisYear;\n\n          return (\n            <button\n              key={currentYear}\n              type=\"button\"\n              ref={ref}\n              className={gridCellVariants({\n                active: isActive,\n                present: isPresent && !isActive,\n              })}\n              onClick={handleClick}\n              onKeyDown={handleKeyDown}\n              data-testid={`year-cell-${currentYear}`}\n              tabIndex={index === focusedYearIndex ? 0 : -1}\n              aria-label={String(currentYear)}\n            >\n              {currentYear}\n            </button>\n          );\n        })}\n      </div>\n    );\n  };\n\n  const renderTableContent = () => {\n    if (view === MONTHS) {\n      return (\n        <tbody>\n          <tr>\n            <td colSpan={DAYS_IN_WEEK}>{renderMonthsGrid()}</td>\n          </tr>\n        </tbody>\n      );\n    }\n\n    if (view === YEARS) {\n      return (\n        <tbody>\n          <tr>\n            <td colSpan={DAYS_IN_WEEK}>{renderYearsGrid()}</td>\n          </tr>\n        </tbody>\n      );\n    }\n\n    return (\n      <>\n        <thead>\n          <tr>\n            {headers.weekdays.map(({ key, value: date }) => {\n              return (\n                <th\n                  key={key}\n                  className={styles['date-table-header']}\n                >\n                  {formatWeekday('system', date)}\n                </th>\n              );\n            })}\n          </tr>\n        </thead>\n        <tbody>{children(body)}</tbody>\n      </>\n    );\n  };\n\n  return (\n    <Container\n      data-testid=\"datepicker-calendar-container\"\n      isResponsive={false}\n      fillWidth={false}\n      orientation=\"vertical\"\n      padding=\"sm\"\n      {...props}\n      className={cn(styles['date-picker-container'], className)}\n    >\n      <Container\n        isResponsive={false}\n        justifyContent=\"space-between\"\n        orientation=\"horizontal\"\n      >\n        <DateSelectNav\n          id=\"calendar-previous-month\"\n          icon=\"chevron-left\"\n          onClick={onPreviousClick}\n          onKeyDown={onHeaderNavKeyDown}\n          view={view}\n          tabIndex={view === MONTHS ? -1 : 0}\n          buttonRef={el => {\n            if (view !== MONTHS) {\n              headerNavRefs.current[0] = el;\n            } else {\n              headerNavRefs.current[0] = null;\n            }\n          }}\n        />\n        {view === DAYS && allowYearMonthSelection ? (\n          <button\n            type=\"button\"\n            className={styles['clickable-title']}\n            ref={el => {\n              headerNavRefs.current[1] = el as HTMLButtonElement;\n            }}\n            onClick={onTitleClick}\n            onKeyDown={onHeaderNavKeyDown}\n            data-testid=\"calendar-title\"\n            tabIndex={0}\n          >\n            {getHeaderTitle(view)}\n          </button>\n        ) : (\n          <h2 className={styles['unselectable-title']}>{getHeaderTitle(view)}</h2>\n        )}\n        <DateSelectNav\n          id=\"calendar-next-month\"\n          icon=\"chevron-right\"\n          onClick={onNextClick}\n          onKeyDown={onHeaderNavKeyDown}\n          view={view}\n          tabIndex={view === MONTHS ? -1 : 0}\n          buttonRef={el => {\n            if (view !== MONTHS) {\n              headerNavRefs.current[2] = el;\n            } else {\n              headerNavRefs.current[2] = null;\n            }\n          }}\n        />\n      </Container>\n      <table className={styles['date-table']}>{renderTableContent()}</table>\n    </Container>\n  );\n};\n"],"names":["cva","styles","jsx","InputWrapper","cn","formatDateHeader","formatSelectedDate","useId","jsxs","InputStartContent","Icon","InputElement","Text","useCallback","formatSelectedDateTimeWithSeconds","formatSelectedDateTime","isDateRangeValid","forwardRef","Dropdown","getMonthNames","IconButton","MONTHS","shiftToTimezone","useCalendar","useState","DAYS","useRef","useEffect","YEARS","view","selectedYear","month","DAYS_IN_WEEK","Fragment","formatWeekday","Container"],"mappings":"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"}