{"version":3,"sources":["../src/calendar-header.tsx"],"sourcesContent":["import type { ButtonProps, IconButtonProps } from \"@yamada-ui/button\"\nimport type { CSSUIObject, FC, HTMLUIProps } from \"@yamada-ui/core\"\nimport type { IconProps } from \"@yamada-ui/icon\"\nimport type { ReactElement } from \"react\"\nimport type { UseCalendarHeaderProps } from \"./use-calendar-header\"\nimport { Button, IconButton } from \"@yamada-ui/button\"\nimport { ui } from \"@yamada-ui/core\"\nimport { ChevronIcon } from \"@yamada-ui/icon\"\nimport { cx, isValidElement } from \"@yamada-ui/utils\"\nimport { useCalendarContext } from \"./use-calendar\"\nimport { useCalendarHeader } from \"./use-calendar-header\"\n\ninterface CalendarHeaderOptions {\n  /**\n   * The label of the current calendar type.\n   */\n  label: string\n  /**\n   * Props for calendar control button element.\n   */\n  controlProps?: Omit<CalendarControlProps, \"operation\">\n  /**\n   * Props for calendar label button element.\n   */\n  labelProps?: { icon?: IconProps | ReactElement } & CalendarLabelProps\n  /**\n   * Props for calendar next control button element.\n   */\n  nextProps?: Omit<CalendarControlProps, \"operation\">\n  /**\n   * Props for calendar previous control button element.\n   */\n  prevProps?: Omit<CalendarControlProps, \"operation\">\n}\n\nexport interface CalendarHeaderProps\n  extends Omit<HTMLUIProps, \"defaultValue\" | \"onChange\" | \"value\">,\n    CalendarHeaderOptions,\n    UseCalendarHeaderProps {}\n\nexport const CalendarHeader: FC<CalendarHeaderProps> = ({\n  className,\n  index,\n  label,\n  controlProps,\n  labelProps,\n  nextProps,\n  prevProps,\n  ...rest\n}) => {\n  const { type, styles, withControls, withHeader, withLabel } =\n    useCalendarContext()\n  const { getContainerProps, getControlProps, getLabelProps } =\n    useCalendarHeader({ index })\n\n  const css: CSSUIObject = {\n    alignItems: \"center\",\n    display: \"flex\",\n    w: \"100%\",\n    ...styles.header,\n  }\n  const { icon: iconOrProps, ...computedLabelProps } = labelProps ?? {}\n\n  return withHeader ? (\n    <ui.div\n      className={cx(\"ui-calendar__header\", className)}\n      __css={css}\n      {...getContainerProps(rest)}\n    >\n      {withControls ? (\n        <CalendarControlPrev\n          {...getControlProps({\n            operation: \"prev\",\n            ...controlProps,\n            ...prevProps,\n          })}\n        />\n      ) : null}\n\n      {withLabel ? (\n        <CalendarLabel {...getLabelProps({ ...computedLabelProps })}>\n          {label}\n          {type !== \"year\" ? (\n            isValidElement(iconOrProps) ? (\n              iconOrProps\n            ) : (\n              <CalendarLabelIcon {...iconOrProps} />\n            )\n          ) : null}\n        </CalendarLabel>\n      ) : null}\n\n      {withControls ? (\n        <CalendarControlNext\n          {...getControlProps({\n            operation: \"next\",\n            ...controlProps,\n            ...nextProps,\n          })}\n        />\n      ) : null}\n    </ui.div>\n  ) : null\n}\n\nCalendarHeader.displayName = \"CalendarHeader\"\nCalendarHeader.__ui__ = \"CalendarHeader\"\n\nexport interface CalendarLabelProps extends ButtonProps {}\n\nconst CalendarLabel: FC<CalendarLabelProps> = ({ className, ...rest }) => {\n  const { styles } = useCalendarContext()\n\n  const css: CSSUIObject = {\n    flex: 1,\n    fontSize: undefined,\n    fontWeight: \"normal\",\n    gap: 1,\n    h: \"auto\",\n    ...styles.label,\n  }\n\n  return (\n    <Button\n      className={cx(\"ui-calendar__header__label\", className)}\n      variant=\"ghost\"\n      __css={css}\n      {...rest}\n    />\n  )\n}\n\nCalendarLabel.displayName = \"CalendarLabel\"\nCalendarLabel.__ui__ = \"CalendarLabel\"\n\nexport interface CalendarLabelIconProps extends IconProps {}\n\nconst CalendarLabelIcon: FC<CalendarLabelIconProps> = ({\n  className,\n  ...rest\n}) => {\n  const { styles } = useCalendarContext()\n\n  const css: CSSUIObject = {\n    ...styles.labelIcon,\n  }\n\n  return (\n    <ChevronIcon\n      className={cx(\"ui-calendar__header__label__icon\", className)}\n      __css={css}\n      {...rest}\n    />\n  )\n}\n\nCalendarLabelIcon.displayName = \"CalendarLabelIcon\"\nCalendarLabelIcon.__ui__ = \"CalendarLabelIcon\"\n\nexport interface CalendarControlSharedProps\n  extends Omit<CalendarControlProps, \"operation\"> {}\n\nconst CalendarControlPrev: FC<CalendarControlSharedProps> = ({\n  className,\n  ...rest\n}) => {\n  return (\n    <CalendarControl\n      className={cx(\"ui-calendar__header__control--prev\", className)}\n      icon={<ChevronIcon __css={{ transform: \"rotate(90deg)\" }} />}\n      operation=\"prev\"\n      {...rest}\n    />\n  )\n}\n\nCalendarControlPrev.displayName = \"CalendarControlPrev\"\nCalendarControlPrev.__ui__ = \"CalendarControlPrev\"\n\nconst CalendarControlNext: FC<CalendarControlSharedProps> = ({\n  className,\n  ...rest\n}) => {\n  return (\n    <CalendarControl\n      className={cx(\"ui-calendar__header__control--next\", className)}\n      icon={<ChevronIcon __css={{ transform: \"rotate(-90deg)\" }} />}\n      operation=\"next\"\n      {...rest}\n    />\n  )\n}\n\nCalendarControlNext.displayName = \"CalendarControlNext\"\nCalendarControlNext.__ui__ = \"CalendarControlNext\"\n\nexport interface CalendarControlProps extends IconButtonProps {\n  operation: \"next\" | \"prev\"\n}\n\nconst CalendarControl: FC<CalendarControlProps> = ({\n  className,\n  operation,\n  ...rest\n}) => {\n  const { styles } = useCalendarContext()\n\n  const css: CSSUIObject = {\n    h: \"auto\",\n    minW: \"auto\",\n    ...styles.control,\n    ...styles[operation],\n  }\n\n  return (\n    <IconButton\n      className={cx(\"ui-calendar__header__control\", className)}\n      variant=\"ghost\"\n      __css={css}\n      {...rest}\n    />\n  )\n}\n\nCalendarControl.displayName = \"CalendarControl\"\nCalendarControl.__ui__ = \"CalendarControl\"\n"],"mappings":"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","names":[]}