@@jsxConfig({version: 4})
@res.jsxComponentProps
type props<'a> = {
  a?: 'a,
}

let make = ({a: ?__a, _}: props<unit => unit>) => {
  let a = switch __a {
  | Some(a) => a
  | None => () => ()
  }
  (React.null: React.element)
}
let make = {
  let \"UncurriedProps" = (props: props<_>) => make(props)

  \"UncurriedProps"
}

let func = (~callback: (string, bool, bool) => unit=(_, _, _) => (), ()) => {
  let _ = callback
}

func(~callback=(str, a, b) => {
  let _ = str
  let _ = a
  let _ = b
}, ())

module Foo = {
  @res.jsxComponentProps
  type props<'callback> = {
    callback?: 'callback,
  }

  let make = ({callback: ?__callback, _}: props<(string, bool, bool) => unit>) => {
    let callback = switch __callback {
    | Some(callback) => callback
    | None => (_, _, _) => ()
    }
    (
      {
        React.null
      }: React.element
    )
  }
  let make = {
    let \"UncurriedProps$Foo" = (props: props<_>) => make(props)

    \"UncurriedProps$Foo"
  }
}

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

  let make = (_: props): React.element => React.jsx(Foo.make, {callback: {(_, _, _) => ()}})
  let make = {
    let \"UncurriedProps$Bar" = props => make(props)

    \"UncurriedProps$Bar"
  }
}
