diff --git a/workspaces/frontend/config/webpack.prod.js b/workspaces/frontend/config/webpack.prod.js index eb6f453d..b0c839ea 100644 --- a/workspaces/frontend/config/webpack.prod.js +++ b/workspaces/frontend/config/webpack.prod.js @@ -2,11 +2,14 @@ const { merge } = require('webpack-merge'); const common = require('./webpack.common.js'); +const { EnvironmentPlugin } = require('webpack'); const { stylePaths } = require('./stylePaths'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const TerserJSPlugin = require('terser-webpack-plugin'); +const PRODUCTION = process.env.PRODUCTION || 'false'; + module.exports = merge(common('production'), { mode: 'production', devtool: 'source-map', @@ -25,6 +28,9 @@ module.exports = merge(common('production'), { filename: '[name].css', chunkFilename: '[name].bundle.css', }), + new EnvironmentPlugin({ + PRODUCTION, + }), ], module: { rules: [ diff --git a/workspaces/frontend/package.json b/workspaces/frontend/package.json index 0855b3e8..e6419766 100644 --- a/workspaces/frontend/package.json +++ b/workspaces/frontend/package.json @@ -18,7 +18,7 @@ "build:bundle-profile": "webpack --config ./config/webpack.prod.js --profile --json > ./bundle.stats.json", "build:bundle-analyze": "webpack-bundle-analyzer ./bundle.stats.json", "build:clean": "rimraf ./dist", - "build:prod": "webpack --config ./config/webpack.prod.js", + "build:prod": "cross-env PRODUCTION=true webpack --config ./config/webpack.prod.js", "generate:api": "./scripts/generate-api.sh && npm run prettier", "start:dev": "cross-env STYLE_THEME=$npm_config_theme webpack serve --hot --color --config ./config/webpack.dev.js", "start:dev:mock": "cross-env MOCK_API_ENABLED=true STYLE_THEME=$npm_config_theme npm run start:dev", diff --git a/workspaces/frontend/src/app/App.tsx b/workspaces/frontend/src/app/App.tsx index 239beb13..df321091 100644 --- a/workspaces/frontend/src/app/App.tsx +++ b/workspaces/frontend/src/app/App.tsx @@ -12,7 +12,11 @@ import { MastheadMain, MastheadToggle, } from '@patternfly/react-core/dist/esm/components/Masthead'; -import { Page, PageToggleButton } from '@patternfly/react-core/dist/esm/components/Page'; +import { + Page, + PageSidebar, + PageToggleButton, +} from '@patternfly/react-core/dist/esm/components/Page'; import { Title } from '@patternfly/react-core/dist/esm/components/Title'; import { BarsIcon } from '@patternfly/react-icons/dist/esm/icons/bars-icon'; import ErrorBoundary from '~/app/error/ErrorBoundary'; @@ -25,6 +29,8 @@ import { NotebookContextProvider } from './context/NotebookContext'; import { isMUITheme, Theme } from './const'; import { BrowserStorageContextProvider } from './context/BrowserStorageContext'; +const isStandalone = process.env.PRODUCTION !== 'true'; + const App: React.FC = () => { useEffect(() => { // Apply the theme based on the value of STYLE_THEME @@ -43,14 +49,12 @@ const App: React.FC = () => { - {!isMUITheme() ? ( + {!isMUITheme() && ( - ) : ( - '' )} @@ -63,6 +67,7 @@ const App: React.FC = () => { ); + const sidebar = ; return ( @@ -71,10 +76,11 @@ const App: React.FC = () => { } + sidebar={isStandalone ? : sidebar} + isManagedSidebar={isStandalone} + className={isStandalone ? '' : 'embedded'} > diff --git a/workspaces/frontend/src/shared/style/MUI-theme.scss b/workspaces/frontend/src/shared/style/MUI-theme.scss index 9d98e53c..aacf6428 100644 --- a/workspaces/frontend/src/shared/style/MUI-theme.scss +++ b/workspaces/frontend/src/shared/style/MUI-theme.scss @@ -887,6 +887,12 @@ /* Move content area below the app bar */ } +.mui-theme .pf-v6-c-page.embedded { + .pf-v6-c-page__main-container { + margin: 0px; + } +} + /* Hide Masthead Toggle by default */ .mui-theme .pf-v6-c-masthead__toggle { display: none;