diff --git a/src/components/gui/gui.jsx b/src/components/gui/gui.jsx index a96c5f16c..c1c8d823e 100644 --- a/src/components/gui/gui.jsx +++ b/src/components/gui/gui.jsx @@ -8,7 +8,6 @@ import MediaQuery from 'react-responsive'; import {Tab, Tabs, TabList, TabPanel} from 'react-tabs'; import tabStyles from 'react-tabs/style/react-tabs.css'; import VM from 'scratch-vm'; - import Blocks from '../../containers/blocks.jsx'; import CostumeTab from '../../containers/costume-tab.jsx'; import TargetPane from '../../containers/target-pane.jsx'; @@ -37,7 +36,7 @@ import TWRestorePointManager from '../../containers/tw-restore-point-manager.jsx import TWFontsModal from '../../containers/tw-fonts-modal.jsx'; import TWUnknownPlatformModal from '../../containers/tw-unknown-platform-modal.jsx'; import TWInvalidProjectModal from '../../containers/tw-invalid-project-modal.jsx'; - +import WelcomeModal from '../welcome-modal/welcome-modal.jsx'; import {STAGE_SIZE_MODES, FIXED_WIDTH, UNCONSTRAINED_NON_STAGE_WIDTH} from '../../lib/layout-constants'; import {resolveStageSize} from '../../lib/screen-utils'; import {Theme} from '../../lib/themes'; @@ -160,9 +159,15 @@ const GUIComponent = props => { fontsModalVisible, unknownPlatformModalVisible, invalidProjectModalVisible, + showWelcomeModal, + onRequestCloseWelcomeModal, vm, ...componentProps } = omit(props, 'dispatch'); + console.log('🎯 showWelcomeModal:', showWelcomeModal); + const welcomeModalElement = showWelcomeModal ? ( + + ) : null; if (children) { return {children}; } @@ -238,6 +243,7 @@ const GUIComponent = props => { {...componentProps} > {alwaysEnabledModals} + {telemetryModalVisible ? ( ({ blocksId: state.scratchGui.timeTravel.year.toString(), stageSizeMode: state.scratchGui.stageSize.stageSize, theme: state.scratchGui.theme.theme + }); export default injectIntl(connect( diff --git a/src/components/welcome-modal/addons-step.css b/src/components/welcome-modal/addons-step.css new file mode 100644 index 000000000..c93df66e3 --- /dev/null +++ b/src/components/welcome-modal/addons-step.css @@ -0,0 +1,71 @@ +.addons-step { + display: flex; + flex-direction: column; + height: 100%; +} + +.header { + flex: 0 0 auto; + display: flex; + align-items: center; + gap: 1.5rem; + margin-bottom: 1.5rem; +} + +.illustration-container { + flex-shrink: 0; +} + +.illustration-placeholder { + font-size: 3rem; + padding: 1rem; + background: linear-gradient(135deg, #0FBD8C 0%, #0DA57A 100%); + border-radius: 12px; + color: white; +} + +.header-text { + flex: 1; + text-align: left; +} + +.title { + font-size: 2rem; + font-weight: 800; + margin: 0 0 0.5rem 0; + color: #333; +} + +.subtitle { + font-size: 1.1rem; + color: #666; + margin: 0; +} + +/* Iframe container */ +.iframe-container { + flex: 1; + border: 2px solid #e0e0e0; + border-radius: 12px; + overflow: hidden; + background: white; +} + +.addons-iframe { + width: 100%; + height: 100%; + border: none; +} + +/* Footer */ +.footer { + flex: 0 0 auto; + margin-top: 1rem; + text-align: center; +} + +.footer-note { + margin: 0; + font-size: 0.9rem; + color: #999; +} \ No newline at end of file diff --git a/src/components/welcome-modal/addons-step.jsx b/src/components/welcome-modal/addons-step.jsx new file mode 100644 index 000000000..67eac29b9 --- /dev/null +++ b/src/components/welcome-modal/addons-step.jsx @@ -0,0 +1,46 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import styles from './addons-step.css'; + +const AddonsStep = () => ( +
+
+
+ {/* Your SVG illustration goes here! */} +
+ 🧩 Your addons SVG illustration here! +
+
+ +
+

Set Up Your Addons 🧩

+

+ Customize OmniBlocks with powerful extensions +

+
+
+ +
+