hunk.code_window:         this.LocalStorage.cleanLogoutReason();
         }
         if (this.Authentication.isAuthenticated()) {
           await this.postLoginSteps();
         }
         this.state.loginInProgress = false;
  
hunk.labels: keep keep add keep keep keep keep keep
hunk.after_edit:       // always clear the kubernetes cache on login
         dispatchCacheRefreshEvent();
  
hunk.file_path: app/portainer/views/auth/authController.js
hunk.type: add
file: import { StorybookConfig } from '@storybook/react-webpack5';
  
  import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin';
  import { Configuration } from 'webpack';
  import postcss from 'postcss';
  
  const config: StorybookConfig = {
    stories: ['../app/**/*.stories.@(ts|tsx)'],
    addons: [
      '@storybook/addon-links',
      '@storybook/addon-essentials',
      {
        name: '@storybook/addon-styling',
        options: {
          cssLoaderOptions: {
            importLoaders: 1,
            modules: {
              localIdentName: '[path][name]__[local]',
              auto: true,
              exportLocalsConvention: 'camelCaseOnly',
            },
          },
          postCss: {
            implementation: postcss,
          },
        },
      },
    ],
    webpackFinal: (config) => {
      const rules = config?.module?.rules || [];
  
      const imageRule = rules.find((rule) => {
        const test = (rule as { test: RegExp }).test;
  
        if (!test) {
          return false;
        }
  
        return test.test('.svg');
      }) as { [key: string]: any };
  
      imageRule.exclude = /\.svg$/;
  
      rules.unshift({
        test: /\.svg$/i,
        type: 'asset',
        resourceQuery: {
          not: [/c/],
        }, // exclude react component if *.svg?url
      });
  
      rules.unshift({
        test: /\.svg$/i,
        issuer: /\.(js|ts)(x)?$/,
        resourceQuery: /c/,
        // *.svg?c
        use: [
          {
            loader: '@svgr/webpack',
            options: {
              icon: true,
            },
          },
        ],
      });
      return {
        ...config,
        resolve: {
          ...config.resolve,
          plugins: [
            ...(config.resolve?.plugins || []),
            new TsconfigPathsPlugin({
              extensions: config.resolve?.extensions,
            }),
          ],
        },
        module: {
          ...config.module,
          rules,
        },
      } satisfies Configuration;
    },
    staticDirs: ['./public'],
    typescript: {
      reactDocgen: 'react-docgen-typescript',
    },
    framework: {
      name: '@storybook/react-webpack5',
      options: {},
    },
  };
  
  export default config;
  