// SPDX-License-Identifier: MIT // Copyright (c) 2020-2026 The Pybricks Authors import 'react-splitter-layout/lib/index.css'; import './app.scss'; import { Classes, Spinner } from '@blueprintjs/core'; import React, { useEffect, useState } from 'react'; import SplitterLayout from 'react-splitter-layout'; import { useLocalStorage, useTernaryDarkMode } from 'usehooks-ts'; import Activities from '../activities/Activities'; import DfuWindowsDriverInstallDialog from '../firmware/dfuWindowsDriverInstallDialog/DfuWindowsDriverInstallDialog'; import { InstallPybricksDialog } from '../firmware/installPybricksDialog/InstallPybricksDialog'; import RestoreOfficialDialog from '../firmware/restoreOfficialDialog/RestoreOfficialDialog'; import { useSettingIsShowDocsEnabled } from '../settings/hooks'; import SponsorDialog from '../sponsor/SponsorDialog'; import StatusBar from '../status-bar/StatusBar'; import Toolbar from '../toolbar/Toolbar'; import Tour from '../tour/Tour'; import { docsDefaultPage } from './constants'; import { useI18n } from './i18n'; const Editor = React.lazy(async () => { const [sagaModule, componentModule] = await Promise.all([ import('../editor/sagas'), import('../editor/Editor'), ]); window.dispatchEvent( new CustomEvent('pb-lazy-saga', { detail: { saga: sagaModule.default } }), ); return componentModule; }); const Terminal = React.lazy(async () => { const [sagaModule, componentModule] = await Promise.all([ import('../terminal/sagas'), import('../terminal/Terminal'), ]); window.dispatchEvent( new CustomEvent('pb-lazy-saga', { detail: { saga: sagaModule.default } }), ); return componentModule; }); const Docs: React.FunctionComponent = () => { return (