@@ -23,19 +23,19 @@ import * as Antd from 'antd';
2323import '@ant-design/v5-patch-for-react-19' ;
2424
2525import * as Blockly from 'blockly/core' ;
26- import { pythonGenerator } from 'blockly/python' ;
26+ import { pythonGenerator } from 'blockly/python' ;
2727
2828import Header from './reactComponents/Header' ;
2929import * as Menu from './reactComponents/Menu' ;
3030import CodeDisplay from './reactComponents/CodeDisplay' ;
31- import BlocklyComponent , { BlocklyComponentType } from './reactComponents/BlocklyComponent' ;
31+ import BlocklyComponent , { BlocklyComponentType } from './reactComponents/BlocklyComponent' ;
3232import ToolboxSettingsModal from './reactComponents/ToolboxSettings' ;
3333import * as Tabs from './reactComponents/Tabs' ;
34- import { TabType } from './types/TabType' ;
34+ import { TabType } from './types/TabType' ;
3535
36- import { createGeneratorContext , GeneratorContext } from './editor/generator_context' ;
36+ import { createGeneratorContext , GeneratorContext } from './editor/generator_context' ;
3737import * as editor from './editor/editor' ;
38- import { extendedPythonGenerator } from './editor/extended_python_generator' ;
38+ import { extendedPythonGenerator } from './editor/extended_python_generator' ;
3939
4040import * as commonStorage from './storage/common_storage' ;
4141import * as clientSideStorage from './storage/client_side_storage' ;
@@ -46,6 +46,7 @@ import { initialize as initializePythonBlocks } from './blocks/utils/python';
4646import * as ChangeFramework from './blocks/utils/change_framework'
4747import { mutatorOpenListener } from './blocks/mrc_param_container'
4848import { TOOLBOX_UPDATE_EVENT } from './blocks/mrc_mechanism_component_holder' ;
49+ import { antdThemeFromString } from './reactComponents/ThemeModal' ;
4950
5051/** Storage key for shown toolbox categories. */
5152const SHOWN_TOOLBOX_CATEGORIES_KEY = 'shownPythonToolboxCategories' ;
@@ -98,6 +99,7 @@ const App: React.FC = (): React.JSX.Element => {
9899 const [ triggerPythonRegeneration , setTriggerPythonRegeneration ] = React . useState ( 0 ) ;
99100 const [ leftCollapsed , setLeftCollapsed ] = React . useState ( false ) ;
100101 const [ rightCollapsed , setRightCollapsed ] = React . useState ( false ) ;
102+ const [ theme , setTheme ] = React . useState ( 'dark' ) ;
101103
102104
103105 const blocksEditor = React . useRef < editor . Editor | null > ( null ) ;
@@ -264,7 +266,7 @@ const App: React.FC = (): React.JSX.Element => {
264266 // Add event listener for toolbox updates
265267 React . useEffect ( ( ) => {
266268 window . addEventListener ( TOOLBOX_UPDATE_EVENT , handleToolboxUpdateRequest ) ;
267-
269+
268270 return ( ) => {
269271 window . removeEventListener ( TOOLBOX_UPDATE_EVENT , handleToolboxUpdateRequest ) ;
270272 } ;
@@ -312,8 +314,8 @@ const App: React.FC = (): React.JSX.Element => {
312314 if ( currentModule && blocklyComponent . current && generatorContext . current ) {
313315 const blocklyWorkspace = blocklyComponent . current . getBlocklyWorkspace ( ) ;
314316 setGeneratedCode ( extendedPythonGenerator . mrcWorkspaceToCode (
315- blocklyWorkspace ,
316- generatorContext . current
317+ blocklyWorkspace ,
318+ generatorContext . current
317319 ) ) ;
318320 } else {
319321 setGeneratedCode ( '' ) ;
@@ -336,26 +338,14 @@ const App: React.FC = (): React.JSX.Element => {
336338 }
337339 } , [ project ] ) ;
338340
339- const { Sider, Content} = Antd . Layout ;
341+ const { Sider, Content } = Antd . Layout ;
340342
341343 return (
342344 < Antd . ConfigProvider
343- theme = { {
344- algorithm : Antd . theme . darkAlgorithm ,
345- components : {
346- Layout : {
347- headerBg : '#000000' , // This is only for dark mode
348- siderBg : '#000000' , // This is only for dark mode
349- triggerBg : '#000000' , // This is only for dark mode
350- } ,
351- Menu :{
352- darkItemBg : '#000000' , // This is only for dark mode
353- }
354- } ,
355- } }
345+ theme = { antdThemeFromString ( theme ) }
356346 >
357347 { contextHolder }
358- < Antd . Layout style = { { height : FULL_VIEWPORT_HEIGHT } } >
348+ < Antd . Layout style = { { height : FULL_VIEWPORT_HEIGHT } } >
359349 < Header
360350 alertErrorMessage = { alertErrorMessage }
361351 setAlertErrorMessage = { setAlertErrorMessage }
@@ -379,6 +369,7 @@ const App: React.FC = (): React.JSX.Element => {
379369 project = { project }
380370 setProject = { setProject }
381371 openWPIToolboxSettings = { ( ) => setToolboxSettingsModalIsOpen ( true ) }
372+ setTheme = { setTheme }
382373 />
383374 </ Sider >
384375 < Antd . Layout >
@@ -395,7 +386,10 @@ const App: React.FC = (): React.JSX.Element => {
395386 />
396387 < Antd . Layout >
397388 < Content >
398- < BlocklyComponent ref = { blocklyComponent } />
389+ < BlocklyComponent
390+ theme = { theme }
391+ ref = { blocklyComponent }
392+ />
399393 </ Content >
400394 < Sider
401395 collapsible
@@ -409,6 +403,7 @@ const App: React.FC = (): React.JSX.Element => {
409403 generatedCode = { generatedCode }
410404 messageApi = { messageApi }
411405 setAlertErrorMessage = { setAlertErrorMessage }
406+ theme = { theme }
412407 />
413408 </ Sider >
414409 </ Antd . Layout >
0 commit comments