@@jsxConfig({version: 4})

module Standard = {
  @res.jsxComponentProps
  type props = {}

  let make = (_: props): React.element => React.string("ok")
  let make = {
    let \"ReturnConstraint$Standard" = props => make(props)

    \"ReturnConstraint$Standard"
  }
}

module ForwardRef = {
  @res.jsxComponentProps
  type props = {}

  let make = (_: props, _ref): React.element => ReactDOM.jsx("div", {})
  let make = React.forwardRef({
    let \"ReturnConstraint$ForwardRef" = (props, ref) => make(props, ref)

    \"ReturnConstraint$ForwardRef"
  })
}

module WithProps = {
  type props = {value: int}

  let make = (props: props): React.element =>
    ReactDOM.jsx("span", {children: ?ReactDOM.someElement({React.int(props.value)})})
  let make = {
    let \"ReturnConstraint$WithProps" = (props: props): React.element => make(props)
    \"ReturnConstraint$WithProps"
  }
}

module Async = {
  @res.jsxComponentProps
  type props = {}

  let make = async (_: props): React.element =>
    ReactDOM.jsx("div", {children: ?ReactDOM.someElement({React.string("async")})})
  let make = {
    let \"ReturnConstraint$Async" = props => Jsx.promise(make(props))

    \"ReturnConstraint$Async"
  }
}
