diff --git a/src/components/Dashboard/common/MarkdownInput.jsx b/src/components/Dashboard/common/MarkdownInput.jsx
new file mode 100644
index 0000000..3ca12c5
--- /dev/null
+++ b/src/components/Dashboard/common/MarkdownInput.jsx
@@ -0,0 +1,32 @@
+import { Card, Splitter } from 'antd'
+import PropTypes from 'prop-types'
+import CodeBlockEditor from './CodeBlockEditor'
+import MarkdownDisplay from './MarkdownDisplay'
+
+const MarkdownInput = ({ value, onChange }) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+MarkdownInput.propTypes = {
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func
+}
+
+export default MarkdownInput
diff --git a/src/components/Dashboard/common/NewObjectButtons.jsx b/src/components/Dashboard/common/NewObjectButtons.jsx
index 9d08419..9888b92 100644
--- a/src/components/Dashboard/common/NewObjectButtons.jsx
+++ b/src/components/Dashboard/common/NewObjectButtons.jsx
@@ -13,13 +13,15 @@ const NewObjectButtons = ({
}) => {
return (
-
+ {totalSteps > 1 ? (
+
+ ) : null}
{currentStep < totalSteps - 1 ? (
)
diff --git a/src/components/Dashboard/common/ObjectProperty.jsx b/src/components/Dashboard/common/ObjectProperty.jsx
index 629259b..4ddad40 100644
--- a/src/components/Dashboard/common/ObjectProperty.jsx
+++ b/src/components/Dashboard/common/ObjectProperty.jsx
@@ -31,6 +31,7 @@ import ObjectList from './ObjectList'
import VarianceDisplay from './VarianceDisplay'
import OperationDisplay from './OperationDisplay'
import MarkdownDisplay from './MarkdownDisplay'
+import MarkdownInput from './MarkdownInput'
import ObjectSelect from './ObjectSelect'
import ObjectDisplay from './ObjectDisplay'
import ObjectTypeSelect from './ObjectTypeSelect'
@@ -603,6 +604,12 @@ const ObjectProperty = ({
/>
)
+ case 'markdown':
+ return (
+
+
+
+ )
case 'material':
return (
diff --git a/src/components/Dashboard/common/WizardView.jsx b/src/components/Dashboard/common/WizardView.jsx
new file mode 100644
index 0000000..8b6c464
--- /dev/null
+++ b/src/components/Dashboard/common/WizardView.jsx
@@ -0,0 +1,67 @@
+import PropTypes from 'prop-types'
+import { useState } from 'react'
+import { useMediaQuery } from 'react-responsive'
+import { Typography, Flex, Steps, Divider } from 'antd'
+import NewObjectButtons from './NewObjectButtons'
+
+const { Title } = Typography
+
+const WizardView = ({
+ showSteps = true,
+ steps,
+ title = 'Wizard View',
+ onSubmit,
+ formValid,
+ loading
+}) => {
+ const [currentStep, setCurrentStep] = useState(0)
+ const isMobile = useMediaQuery({ maxWidth: 768 })
+
+ return (
+
+ {!isMobile && showSteps == true ? (
+
+
+
+ ) : null}
+
+ {!isMobile && showSteps == true ? (
+
+ ) : null}
+
+
+
+ {title}
+
+
+ {steps[currentStep].content}
+
+ setCurrentStep((prev) => prev - 1)}
+ onNext={() => setCurrentStep((prev) => prev + 1)}
+ onSubmit={onSubmit}
+ formValid={formValid}
+ submitLoading={loading}
+ />
+
+
+ )
+}
+
+WizardView.propTypes = {
+ onSubmit: PropTypes.func.isRequired,
+ formValid: PropTypes.bool.isRequired,
+ steps: PropTypes.array.isRequired,
+ showSteps: PropTypes.bool,
+ title: PropTypes.string,
+ loading: PropTypes.bool
+}
+
+export default WizardView