работа над степпером

This commit is contained in:
Tamara 2023-03-02 01:59:51 +03:00
parent 5933d6f418
commit 6cd5f65fd5
22 changed files with 36984 additions and 6985 deletions

8
.idea/.gitignore vendored Normal file

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

8
.idea/modules.xml Normal file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/squiz.iml" filepath="$PROJECT_DIR$/.idea/squiz.iml" />
</modules>
</component>
</project>

8
.idea/squiz.iml Normal file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

29717
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

@ -6,7 +6,8 @@ import MyQuizzes from "./components/MyQuizzes";
import Navbar from "./components/Navbar/Navbar"; import Navbar from "./components/Navbar/Navbar";
import NavbarCreateQuiz from "./components/Navbar/NavbarCreateQuiz"; import NavbarCreateQuiz from "./components/Navbar/NavbarCreateQuiz";
import QuizGallery from "./components/QuizGallery"; import QuizGallery from "./components/QuizGallery";
import lightTheme from "./utils/themes/light"; // import lightTheme from "./utils/themes/light";
// import darkTheme from "./utils/themes/dark";
const Divider = styled("div")(() => ({ const Divider = styled("div")(() => ({
height: "30px", height: "30px",
@ -16,7 +17,7 @@ const Divider = styled("div")(() => ({
function App() { function App() {
return ( return (
<ThemeProvider theme={lightTheme}> <>
<CssBaseline /> <CssBaseline />
<Navbar isLoggedIn={true} /> <Navbar isLoggedIn={true} />
<FirstQuiz /> <FirstQuiz />
@ -27,10 +28,10 @@ function App() {
<QuizGallery /> <QuizGallery />
<Divider /> <Divider />
<NavbarCreateQuiz /> <NavbarCreateQuiz />
<CreateQuiz /> <CreateQuiz />
</ThemeProvider> </>
); );
} }

@ -1,6 +1,6 @@
import NavbarCollapsed from "./NavbarCollapsed"; import NavbarCollapsed from "./NavbarCollapsed";
import NavbarCreateQuiz from "./NavbarCreateQuiz"; import NavbarCreateQuiz from "./NavbarCreateQuiz";
import NavbarFull from "./NavbarFull"; import Header from "../../ui_kit/Header";
interface Props { interface Props {
@ -17,5 +17,5 @@ export default function Navbar({ isLoggedIn, isCollapsed = false, mode = "defaul
mode === "createQuiz" ? mode === "createQuiz" ?
<NavbarCreateQuiz /> <NavbarCreateQuiz />
: :
<NavbarFull isLoggedIn={isLoggedIn} />; <Header isLoggedIn={true} />;
} }

@ -1,117 +0,0 @@
import { Box, Button, Container, IconButton, Typography, useTheme } from "@mui/material";
import LogoutIcon from "../icons/LogoutIcon";
import NavMenuItem from "../NavMenuItem";
import PenaLogo from "../PenaLogo";
import SectionWrapper from "../SectionWrapper";
import WalletIcon from "../icons/WalletIcon";
import CustomAvatar from "./Avatar";
interface Props {
isLoggedIn: boolean;
}
export default function NavbarFull({ isLoggedIn }: Props) {
const theme = useTheme();
return isLoggedIn ? (
<Container
component="nav"
disableGutters
maxWidth={false}
sx={{
px: "16px",
display: "flex",
height: "80px",
alignItems: "center",
gap: "60px",
bgcolor: "white",
borderBottom: "1px solid #E3E3E3",
}}
>
<PenaLogo width={124} />
<Box
sx={{
display: "flex",
gap: "30px",
overflow: "hidden",
}}
>
<NavMenuItem text="Меню 1" />
<NavMenuItem text="Меню 2" isActive />
<NavMenuItem text="Меню 3" />
<NavMenuItem text="Меню 4" />
<NavMenuItem text="Меню 5" />
<NavMenuItem text="Меню 1" />
<NavMenuItem text="Меню 2" />
</Box>
<Box
sx={{
display: "flex",
ml: "auto",
}}
>
<IconButton sx={{ p: 0 }}>
<WalletIcon color={theme.palette.grey2.main} bgcolor="#F2F3F7" />
</IconButton>
<Box sx={{ ml: "8px", whiteSpace: "nowrap" }}>
<Typography
sx={{
fontSize: "12px",
lineHeight: "14px",
color: theme.palette.grey3.main,
}}
>Мой баланс</Typography>
<Typography variant="body2" color={theme.palette.brightPurple.main}>00.00 руб.</Typography>
</Box>
<CustomAvatar sx={{ ml: "27px", backgroundColor: theme.palette.orange.main, height: "36px", width: "36px" }} />
<IconButton
sx={{ ml: "20px", bgcolor: "#F2F3F7", borderRadius: "6px", height: "36px", width: "36px" }}
>
<LogoutIcon />
</IconButton>
</Box>
</Container>
) : (
<SectionWrapper
component="nav"
maxWidth="lg"
outerContainerSx={{
backgroundColor: theme.palette.lightPurple.main,
// borderBottom: "1px solid #E3E3E3",
}}
sx={{
px: "20px",
display: "flex",
justifyContent: "space-between",
height: "80px",
alignItems: "center",
}}
>
<Box
sx={{
display: "flex",
gap: "30px",
overflow: "hidden",
}}
>
<NavMenuItem text="Меню 1" />
<NavMenuItem text="Меню 2" isActive />
<NavMenuItem text="Меню 3" />
<NavMenuItem text="Меню 4" />
<NavMenuItem text="Меню 5" />
<NavMenuItem text="Меню 1" />
<NavMenuItem text="Меню 2" />
</Box>
<Button
variant="outlined"
sx={{
px: "18px",
py: "10px",
borderColor: "white",
borderRadius: "8px"
}}
>Личный кабинет</Button>
</SectionWrapper>
);
}

@ -7,13 +7,15 @@ import lightTheme from "./utils/themes/light";
import { ThemeProvider } from '@mui/material'; import { ThemeProvider } from '@mui/material';
import CreateQuiz from './components/CreateQuiz/CreateQuiz'; import CreateQuiz from './components/CreateQuiz/CreateQuiz';
import NavbarCreateQuiz from './components/Navbar/NavbarCreateQuiz'; import NavbarCreateQuiz from './components/Navbar/NavbarCreateQuiz';
import darkTheme from "./utils/themes/dark";
import HorizontalLinearStepper from './ui_kit/Stepper'; import HorizontalLinearStepper from './ui_kit/Stepper';
import Create from './pages/createQuize/Create'; import Create from './pages/createQuize/Create';
import Quizes from './pages/createQuize/Quizes'; import Quizes from './pages/createQuize/Quizes';
import Projects from './pages/createQuize/Projects'; import Projects from './pages/createQuize/Projects';
import Gallery from './pages/createQuize/Gallery'; import Gallery from './pages/createQuize/Gallery';
import StartPage from "./pages/startPage/StartPage";
import Main from "./pages/main"
const root = ReactDOM.createRoot( const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement document.getElementById('root') as HTMLElement
@ -23,18 +25,23 @@ root.render(
<ThemeProvider theme={lightTheme}> <ThemeProvider theme={lightTheme}>
<BrowserRouter> <BrowserRouter>
<Routes> <Routes>
<Route path="/" element={ <App /> } /> <Route path="/" element={ <Main /> }>
<Route path="/create" element={<Create/>} /> <Route path="/create" element={<Create/>} />
<Route path="/quizes" element={<Quizes/>}/> <Route path="/start" element={<StartPage/>} />
<Route path="/projects" element={<Projects/>} /> </Route>
<Route path="/gallery" element={<Gallery/>} />
<Route path="/create/quiz" element={<><NavbarCreateQuiz /></>} />
<Route path="/create/start" element={<><NavbarCreateQuiz /></>} />
<Route path="/create/settings" element={<><NavbarCreateQuiz /><CreateQuiz /></>} />
<Route path="/create/stepper" element={<><NavbarCreateQuiz /><HorizontalLinearStepper/></>} />
</Routes> </Routes>
</BrowserRouter> </BrowserRouter>
</ThemeProvider> </ThemeProvider>
</React.StrictMode> </React.StrictMode>
); );
// <Route path="/quizes" element={<Quizes/>}/>
// <Route path="/projects" element={<Projects/>} />
// <Route path="/gallery" element={<Gallery/>} />
// <Route path="/create/quiz" element={<><NavbarCreateQuiz /></>} />
// <Route path="/create/start" element={<><NavbarCreateQuiz /></>} />
// <Route path="/create/settings" element={<><NavbarCreateQuiz /><CreateQuiz /></>} />
// <Route path="/create/stepper" element={<><NavbarCreateQuiz /><HorizontalLinearStepper/></>} />

@ -3,6 +3,9 @@ import Navbar from "../../components/Navbar/Navbar";
export default function Create(){ export default function Create(){
return ( return (
<><Navbar isLoggedIn={true} /><FirstQuiz/></> <>
<Navbar isLoggedIn={true} /><FirstQuiz/>
<></>
</>
) )
} }

30
src/pages/main.tsx Normal file

@ -0,0 +1,30 @@
import Header from '../ui_kit/Header';
import Sidebar from '../ui_kit/sidebarCreateQuize';
import Box from '@mui/material/Box';
import {Outlet} from "react-router-dom";
import {useTheme} from "@mui/material";
export default function Main () {
const theme = useTheme();
return (
<>
<Header isLoggedIn={true}/>
<Box sx={{
display: 'flex'
}}
>
<Sidebar />
<Box
sx={{
background: theme.palette.background.default,
width: '100%',
padding: '25px'
}}
>
<Outlet />
</Box>
</Box>
</>
)
}

@ -0,0 +1,48 @@
import { Box, Typography } from "@mui/material";
import CardWithImage from "../../components/CreateQuiz/CardWithImage";
import cardImage1 from "../../assets/card-1.png";
import cardImage2 from "../../assets/card-2.png";
import cardImage3 from "../../assets/card-3.png";
import Card from '@mui/material/Card';
import CardContent from '@mui/material/CardContent';
import CardMedia from '@mui/material/CardMedia';
import { Button, CardActionArea, CardActions } from '@mui/material';
import CustomButton from "../../components/CustomButton";
import Stepper from "../../ui_kit/Stepper";
import StartPageSettings from "../../components/CreateQuiz/StartPageSettings";
import CreateCard from "../../ui_kit/CreateCard";
export default function StartPage() {
return (
<>
{/*Степпер*/}
<Stepper />
{/*первый шаг*/}
<CreateCard/>
{/*второй шаг*/}
<Box sx={{
mt: "60px",
}}>
<Typography variant="h5">Стартовая страница</Typography>
<Box sx={{
display: "flex",
gap: "3.4%",
mt: "40px",
}}>
<Button variant='text'>
<CardWithImage image={cardImage1} text="Standart" />
</Button>
<Button variant='text'>
<CardWithImage image={cardImage2} text="Expanded" />
</Button>
<Button variant='text'>
<CardWithImage image={cardImage3} text="Centered" />
</Button>
</Box>
</Box>
{/*третий шаг*/}
<StartPageSettings/>
</>
)
}

@ -0,0 +1,7 @@
import {Box} from "@mui/material";
export default function Stepone () {
return (
<Box></Box>
)
}

@ -0,0 +1,7 @@
import {Box} from "@mui/material";
export default function Steptwo () {
return (
<Box></Box>
)
}

@ -1,75 +1,31 @@
import { Box, Typography, useTheme } from "@mui/material"; import {Box, Button, Typography, useTheme} from "@mui/material";
import CreationCard from "../components/CreateQuiz/CreationCard"; import CreationCard from "../components/CreateQuiz/CreationCard";
import quizCreationImage1 from "../assets/quiz-creation-1.png"; import quizCreationImage1 from "../assets/quiz-creation-1.png";
import quizCreationImage2 from "../assets/quiz-creation-2.png"; import quizCreationImage2 from "../assets/quiz-creation-2.png";
import { useState } from "react"; import { useState } from "react";
export default function CreateCard() { export default function CreateCard() {
const theme = useTheme(); const theme = useTheme();
const [progress, setProgress] = useState<number>(1 / 6); return (
return (<> <>
<Box
sx={{
border: `1px solid ${theme.palette.brightPurple.main}`,
borderRadius: "12px",
overflow: "hidden",
px: "20px",
pt: "20px",
pb: "10px",
position: "relative",
}}
>
<Box
sx={{
backgroundColor: "white",
height: "10px",
position: "absolute",
top: 0,
left: 0,
width: "100%",
boxShadow: `0px 6.6501px 20.5488px rgba(210, 208, 225, 0.0969343), 0px 2.76726px 8.55082px rgba(210, 208, 225, 0.0674749)`,
}}
/>
<Box
sx={{
backgroundColor: theme.palette.brightPurple.main,
height: "10px",
position: "absolute",
top: 0,
left: 0,
width: `${(progress * 100).toFixed(3)}%`,
}}
/>
<Typography
sx={{
fontSize: "12px",
lineHeight: "14px",
color: "#4D4D4D",
}}
>Шаг 1 из 6</Typography>
<Typography
sx={{
fontSize: "18px",
lineHeight: "24px",
color: "#4D4D4D",
mt: "5px",
}}
>Настройка стартовой страницы</Typography>
</Box>
<Box sx={{ <Box sx={{
display: "flex", display: "flex",
gap: "3.4%", gap: "3.4%",
mt: "60px", mt: "60px",
}}> }}>
<CreationCard <Button variant='text'>
header="Создание квиз-опроса" <CreationCard
text="У стартовой страницы одна ключевая задача - заинтересовать посетителя пройти квиз. С ней сложно ошибиться, сформулируйте суть предложения и подберите живую фотографию, остальное мы сделаем за вас" header="Создание квиз-опроса"
image={quizCreationImage1} text="У стартовой страницы одна ключевая задача - заинтересовать посетителя пройти квиз. С ней сложно ошибиться, сформулируйте суть предложения и подберите живую фотографию, остальное мы сделаем за вас"
/> image={quizCreationImage1}
<CreationCard />
header="Создание анкеты" </Button>
text="У стартовой страницы одна ключевая задача - заинтересовать посетителя пройти квиз. С ней сложно ошибиться, сформулируйте суть предложения и подберите живую фотографию, остальное мы сделаем за вас" <Button variant='text'>
image={quizCreationImage2} <CreationCard
/> header="Создание анкеты"
text="У стартовой страницы одна ключевая задача - заинтересовать посетителя пройти квиз. С ней сложно ошибиться, сформулируйте суть предложения и подберите живую фотографию, остальное мы сделаем за вас"
image={quizCreationImage2}
/>
</Button>
</Box> </Box>
</> </>
) )

129
src/ui_kit/Header.tsx Normal file

@ -0,0 +1,129 @@
import { Box, Container, FormControl, IconButton, TextField, useTheme } from "@mui/material";
import CustomButton from "../components/CustomButton";
import BackArrowIcon from "../components/icons/BackArrowIcon";
import EyeIcon from "../components/icons/EyeIcon";
import CustomAvatar from "../components/Navbar/Avatar";
import NavMenuItem from "../components/NavMenuItem";
import PenaLogo from "../components/PenaLogo";
interface Props {
isLoggedIn: boolean;
}
export default function Header({ isLoggedIn }: Props) {
const theme = useTheme();
return (
<Container
component="nav"
maxWidth={false}
disableGutters
sx={{
px: "16px",
display: "flex",
height: "80px",
alignItems: "center",
bgcolor: "white",
borderBottom: "1px solid #E3E3E3",
zIndex: theme.zIndex.drawer + 1,
}}
>
<PenaLogo width={124} />
<Box
sx={{
display: "flex",
alignItems: "center",
ml: "37px",
}}
>
<IconButton sx={{ p: "6px" }}>
<BackArrowIcon />
</IconButton>
<FormControl
fullWidth
variant="standard"
>
<TextField
fullWidth
id="project-name"
placeholder="Название проекта окно"
sx={{
width: "270px",
"& .MuiInputBase-root": {
height: "34px",
borderRadius: "8px",
p: 0,
},
}}
inputProps={{
sx: {
height: "20px",
borderRadius: "8px",
fontSize: "16px",
lineHeight: "20px",
p: "7px",
color: "black",
"&::placeholder": {
opacity: 1,
},
}
}}
/>
</FormControl>
</Box>
<Box
sx={{
display: "flex",
gap: "30px",
overflow: "hidden",
ml: "20px",
}}
>
<NavMenuItem text="Редактировать" isActive />
<NavMenuItem text="Заявки" />
<NavMenuItem text="Аналитика" />
<NavMenuItem text="История" />
<NavMenuItem text="Помощь" />
</Box>
<Box
sx={{
display: "flex",
ml: "auto",
gap: "15px",
}}
>
<CustomButton
variant="outlined"
startIcon={<EyeIcon />}
sx={{
color: theme.palette.brightPurple.main,
borderColor: theme.palette.brightPurple.main,
fontSize: "14px",
lineHeight: "18px",
px: "14px",
py: "8px",
width: "auto",
height: "34px",
"& .MuiButton-startIcon": {
mr: "3px",
}
}}
>Предпросмотр</CustomButton>
<CustomButton
variant="contained"
sx={{
backgroundColor: theme.palette.brightPurple.main,
borderColor: theme.palette.brightPurple.main,
fontSize: "14px",
lineHeight: "18px",
px: "17px",
py: "8px",
width: "auto",
height: "34px",
}}
>Опубликовать</CustomButton>
<CustomAvatar sx={{ ml: "11px", backgroundColor: theme.palette.orange.main, height: "36px", width: "36px" }} />
</Box>
</Container>
);
}

@ -1,25 +0,0 @@
import { Box, Typography } from "@mui/material";
import CardWithImage from "../components/CreateQuiz/CardWithImage";
import cardImage1 from "../assets/card-1.png";
import cardImage2 from "../assets/card-2.png";
import cardImage3 from "../assets/card-3.png";
export default function StartPage() {
return (
<>
<Box sx={{
mt: "60px",
}}>
<Typography variant="h5">Стартовая страница</Typography>
<Box sx={{
display: "flex",
gap: "3.4%",
mt: "40px",
}}>
<CardWithImage image={cardImage1} text="Standart" />
<CardWithImage image={cardImage2} text="Expanded" />
<CardWithImage image={cardImage3} text="Centered" />
</Box>
</Box>
</>
)
}

@ -1,159 +1,268 @@
import * as React from "react"; import * as React from 'react';
import Box from "@mui/material/Box"; import { useTheme } from '@mui/material/styles';
import Stepper from "@mui/material/Stepper"; import MobileStepper from '@mui/material/MobileStepper';
import Step from "@mui/material/Step"; import Button from '@mui/material/Button';
import StepLabel from "@mui/material/StepLabel"; import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';
import Button from "@mui/material/Button"; import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';
import Typography from "@mui/material/Typography"; import {Box, Typography} from "@mui/material";
import Navbar from "../components/Navbar/Navbar";
import Create from "../pages/createQuize/Create";
import { Container, useTheme } from "@mui/material";
import Projects from "../pages/createQuize/Projects";
import MyQuizzes from "../components/MyQuizzes";
import SidebarCreateQuize from "./sidebarCreateQuize";
import CreateCard from "./CreateCard";
import StartPage from "./StartPage";
const steps = ["Step 34", "Step 2", "Step 3"]; export default function ProgressMobileStepper() {
export default function HorizontalLinearStepper() {
const [activeStep, setActiveStep] = React.useState(0);
const [skipped, setSkipped] = React.useState(new Set<number>());
const theme = useTheme(); const theme = useTheme();
const isStepOptional = (step: number) => { const [activeStep, setActiveStep] = React.useState(1);
return step === 1;
};
const isStepSkipped = (step: number) => {
return skipped.has(step);
};
const handleNext = () => { const handleNext = () => {
let newSkipped = skipped;
if (isStepSkipped(activeStep)) {
newSkipped = new Set(newSkipped.values());
newSkipped.delete(activeStep);
}
setActiveStep((prevActiveStep) => prevActiveStep + 1); setActiveStep((prevActiveStep) => prevActiveStep + 1);
setSkipped(newSkipped);
}; };
const handleBack = () => { const handleBack = () => {
setActiveStep((prevActiveStep) => prevActiveStep - 1); setActiveStep((prevActiveStep) => prevActiveStep - 1);
}; };
const handleSkip = () => { return (
if (!isStepOptional(activeStep)) { <Box
// You probably want to guard against something like this, sx={{
// it should never occur unless someone's actively trying to break something. width: '100%',
throw new Error("You can't skip a step that isn't optional."); display: 'flex',
} justifyContent: 'center',
flexDirection: 'column',
setActiveStep((prevActiveStep) => prevActiveStep + 1); height: '51px',
setSkipped((prevSkipped) => { borderRadius: '13px',
const newSkipped = new Set(prevSkipped.values()); border: 'solid #7E2AEA 1px',
newSkipped.add(activeStep); padding: '0 0 20px 20px',
return newSkipped; overflow: 'hidden'
}); }}
}; >
<MobileStepper
const handleReset = () => { variant="progress"
setActiveStep(0); steps={6}
}; position="static"
let component = null activeStep={activeStep}
switch (activeStep) { sx={{
case 0: width: '100%',
component = <></> flexGrow: 1,
break; '& .css-1ej0n1q-MuiLinearProgress-root-MuiMobileStepper-progress': {
case 1: height: '10px',
component = <CreateCard/> background: '#ffffff',
break; width: '100%'
case 2: },
component = <StartPage/> '& .css-1v0msyf-MuiLinearProgress-bar1': {
break; background: '#7e2aea',
default: },
break; }}
} nextButton={
return (<> <Button size="small" onClick={handleNext} disabled={activeStep === 5} sx={{display: 'none'}}>
<Container maxWidth={false} {theme.direction === 'rtl' ? (
disableGutters <KeyboardArrowLeft />
sx={{ ) : (
display:'flex', <KeyboardArrowRight />
minHeight: "calc(100vh - 80px)", )}
}}> </Button>
<SidebarCreateQuize/> }
<Container backButton={
maxWidth="lg" <Button size="small" onClick={handleBack} disabled={activeStep === 0} sx={{display: 'none'}}>
disableGutters {theme.direction === 'rtl' ? (
sx={{ <KeyboardArrowRight />
p: "25px", ) : (
[theme.breakpoints.up("lg")]: { <KeyboardArrowLeft />
maxWidth: "1210px", )}
} </Button>
}} }
> />
{component} <Typography> Шаг 1 из 6</Typography>
</Container> <Typography>Настройка стартовой страницы</Typography>
</Container> </Box>
{activeStep === steps.length ? (
<React.Fragment>
<Typography sx={{ mt: 2, mb: 1 }}>
All steps completed - you&apos;re finished
</Typography>
<Box sx={{ display: "flex", flexDirection: "row", pt: 2 }}>
<Box sx={{ flex: "1 1 auto" }} />
<Button onClick={handleReset}>Reset</Button>
</Box>
</React.Fragment>
) : (
//Тут отображаемые компоненты
<React.Fragment>
<Box sx={{ display: "flex", flexDirection: "row", pt: 2 }}>
<Button
color="inherit"
disabled={activeStep === 0}
onClick={handleBack}
sx={{ mr: 1 }}
>
Back
</Button>
<Box sx={{ flex: "1 1 auto" }} />
{isStepOptional(activeStep) && (
<Button color="inherit" onClick={handleSkip} sx={{ mr: 1 }}>
Skip
</Button>
)}
<Button onClick={handleNext}>
{activeStep === steps.length - 1 ? "Finish" : "Next"}
</Button>
</Box>
</React.Fragment>
)}
<Stepper activeStep={activeStep}>
{steps.map((label, index) => {
const stepProps: { completed?: boolean } = {};
const labelProps: {
optional?: React.ReactNode;
} = {};
if (isStepOptional(index)) {
labelProps.optional = (
<Typography variant="caption">Optional</Typography>
);
}
if (isStepSkipped(index)) {
stepProps.completed = false;
}
return (
<Step key={label} {...stepProps}>
<StepLabel {...labelProps}>{label}</StepLabel>
</Step>
);
})}
</Stepper>
</>
); );
} }
// import * as React from "react";
// import Box from "@mui/material/Box";
// import Stepper from "@mui/material/Stepper";
// import Step from "@mui/material/Step";
// import StepLabel from "@mui/material/StepLabel";
// import Button from "@mui/material/Button";
// import Typography from "@mui/material/Typography";
// import Navbar from "../components/Navbar/Navbar";
// import Create from "../pages/createQuize/Create";
// import { Container, useTheme } from "@mui/material";
// import Projects from "../pages/createQuize/Projects";
// import MyQuizzes from "../components/MyQuizzes";
// import SidebarCreateQuize from "./sidebarCreateQuize";
// import CreateCard from "./CreateCard";
// // import StartPage from "../pages/startPage/StartPage";
//
// const steps = ["Step 34", "Step 2", "Step 3"];
//
// export default function HorizontalLinearStepper() {
// const [activeStep, setActiveStep] = React.useState(0);
// const [skipped, setSkipped] = React.useState(new Set<number>());
// const theme = useTheme();
// const isStepOptional = (step: number) => {
// return step === 1;
// };
//
// const isStepSkipped = (step: number) => {
// return skipped.has(step);
// };
//
// const handleNext = () => {
// let newSkipped = skipped;
// if (isStepSkipped(activeStep)) {
// newSkipped = new Set(newSkipped.values());
// newSkipped.delete(activeStep);
// }
//
// setActiveStep((prevActiveStep) => prevActiveStep + 1);
// setSkipped(newSkipped);
// };
//
// const handleBack = () => {
// setActiveStep((prevActiveStep) => prevActiveStep - 1);
// };
//
// const handleSkip = () => {
// if (!isStepOptional(activeStep)) {
// // You probably want to guard against something like this,
// // it should never occur unless someone's actively trying to break something.
// throw new Error("You can't skip a step that isn't optional.");
// }
//
// setActiveStep((prevActiveStep) => prevActiveStep + 1);
// setSkipped((prevSkipped) => {
// const newSkipped = new Set(prevSkipped.values());
// newSkipped.add(activeStep);
// return newSkipped;
// });
// };
//
// const handleReset = () => {
// setActiveStep(0);
// };
// let component = null
// switch (activeStep) {
// case 0:
// component = <></>
// break;
// case 1:
// component = <CreateCard/>
// break;
// // case 2:
// // component = <StartPage/>
// // break;
// default:
// break;
// }
// return (<>
// <Container maxWidth={false}
// disableGutters
// sx={{
// display:'flex',
// minHeight: "calc(100vh - 80px)",
// }}>
// {/*<SidebarCreateQuize/>*/}
// <Container
// maxWidth="lg"
// disableGutters
// sx={{
// p: "25px",
// [theme.breakpoints.up("lg")]: {
// maxWidth: "1210px",
// }
// }}
// >
// {component}
// </Container>
// </Container>
// {activeStep === steps.length ? (
// <React.Fragment>
// <Typography sx={{ mt: 2, mb: 1 }}>
// All steps completed - you&apos;re finished
// </Typography>
// <Box sx={{ display: "flex", flexDirection: "row", pt: 2 }}>
// <Box sx={{ flex: "1 1 auto" }} />
// <Button onClick={handleReset}>Reset</Button>
// </Box>
// </React.Fragment>
// ) : (
//
// //Тут отображаемые компоненты
// <React.Fragment>
// <Box sx={{ display: "flex", flexDirection: "row", pt: 2 }}>
// <Button
// color="inherit"
// disabled={activeStep === 0}
// onClick={handleBack}
// sx={{ mr: 1 }}
// >
// Back
// </Button>
// <Box sx={{ flex: "1 1 auto" }} />
// {isStepOptional(activeStep) && (
// <Button color="inherit" onClick={handleSkip} sx={{ mr: 1 }}>
// Skip
// </Button>
// )}
// <Button onClick={handleNext}>
// {activeStep === steps.length - 1 ? "Finish" : "Next"}
// </Button>
// </Box>
// </React.Fragment>
// )}
//
// <Stepper activeStep={activeStep}>
// {steps.map((label, index) => {
// const stepProps: { completed?: boolean } = {};
// const labelProps: {
// optional?: React.ReactNode;
// } = {};
// if (isStepOptional(index)) {
// labelProps.optional = (
// <Typography variant="caption">Optional</Typography>
// );
// }
// if (isStepSkipped(index)) {
// stepProps.completed = false;
// }
//
// return (
// <Step key={label} {...stepProps}>
// <StepLabel {...labelProps}>{label}</StepLabel>
// </Step>
// );
// })}
// </Stepper>
// </>
// );
// }

@ -14,7 +14,6 @@ import GearIcon from "../components/icons/GearIcon";
import LayoutIcon from "../components/icons/LayoutIcon"; import LayoutIcon from "../components/icons/LayoutIcon";
import MenuItem from "../components/CreateQuiz/MenuItem"; import MenuItem from "../components/CreateQuiz/MenuItem";
const createQuizMenuItems = [ const createQuizMenuItems = [
[LayoutIcon, "Стартовая страница"], [LayoutIcon, "Стартовая страница"],
[QuestionIcon, "Вопросы"], [QuestionIcon, "Вопросы"],
@ -45,6 +44,7 @@ export default function SidebarCreateQuize() {
backgroundColor: theme.palette.lightPurple.main, backgroundColor: theme.palette.lightPurple.main,
minWidth: isMenuCollapsed ? "80px" : "230px", minWidth: isMenuCollapsed ? "80px" : "230px",
width: isMenuCollapsed ? "80px" : "230px", width: isMenuCollapsed ? "80px" : "230px",
height: '100vh',
display: "flex", display: "flex",
flexDirection: "column", flexDirection: "column",
py: "19px", py: "19px",

@ -31,6 +31,15 @@ const darkTheme = createTheme({
grey1: { grey1: {
main: "#434657", main: "#434657",
}, },
grey2: {
main: "#9A9AAF",
},
grey3: {
main: "#4D4D4D",
},
orange: {
main: "#FB5607",
},
navbarbg: { navbarbg: {
main: "#333647", main: "#333647",
}, },

13318
yarn.lock

File diff suppressed because it is too large Load Diff