profileWidget :: forall t m. (
    SupportsServantReflex t m
  , MonadWidget t m
  ) => Behavior t (Maybe WidgetState) -> m (Event t Route, Event t ProfileState)
profileWidget bhSuperEvent = do
  evNavClick <- navigation ProfileRoute

  let bhInitProfile = fromJust <$> bhSuperEvent

  rec routeEventGen <- pathWidget (routePath (Just bhInitProfile) bhRouteEvent)
      let evRouteEvent = switchPromptlyDyn routeEventGen
      bhRouteEvent <- hold Nothing (Just <$> evRouteEvent)

  return (evNavClick, (\_ -> ProfileState ()) <$> never)
profileWidget :: forall t m. (
    SupportsServantReflex t m
  , MonadWidget t m
  ) => Behavior t (Maybe WidgetState) -> m (Event t Route, Event t ProfileState)
profileWidget bhSuperEvent = do
  evNavClick <- navigation ProfileRoute

  let bhInitProfile = fromJust <$> bhSuperEvent

  rec routeEventGen <- pathWidget (routePath (Just bhInitProfile) bhRouteEvent)
      let evRouteEvent = switchPromptlyDyn routeEventGen
      bhRouteEvent <- hold Nothing (Just <$> evRouteEvent)

  return (evNavClick, (\_ -> ProfileState ()) <$> never)
profileWidget bhSuperEvent = do
  evNavClick <- navigation ProfileRoute

  let bhInitProfile = fromJust <$> bhSuperEvent

  rec routeEventGen <- pathWidget (routePath (Just bhInitProfile) bhRouteEvent)
      let evRouteEvent = switchPromptlyDyn routeEventGen
      bhRouteEvent <- hold Nothing (Just <$> evRouteEvent)

  return (evNavClick, (\_ -> ProfileState ()) <$> never)