Hi there. First you want to make sure you have you app setup for IDP initiated flow with the following settings:

The Initiate Login URI is where the user will be taken when they click the application tile. In your code at this endpoint, you will want to do a session check to see if the user has an Okta session. Then, you will want to initiate the OIDC flow to retrieve tokens if that session exists. Here’s an example:
const oktaAuthClient = widget.authClient;
oktaAuthClient.session.exists()
  .then((exists) => {
    oktaAuthClient.token.getWithoutPrompt({
      responseType: ['token', 'id_token'],
    })
      .then((res) => {
        oktaAuth.handleLoginRedirect(res.tokens);
      });
  });
//if no session, render sign-in widget
widget.showSignInToGetTokens({
  el: widgetRef.current,
  scopes,
}).then((tokens) => {
  oktaAuth.handleLoginRedirect(tokens);
}).catch((err) => {
  throw err;
});
Hopefully you can apply this to your particular use case/codebase.