Skip to content

Commit

Permalink
Contextos adicionados
Browse files Browse the repository at this point in the history
  • Loading branch information
williamdlm committed Oct 12, 2021
1 parent 462bf0b commit fd9862b
Show file tree
Hide file tree
Showing 8 changed files with 210 additions and 162 deletions.
11 changes: 7 additions & 4 deletions pages/_app.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { createGlobalStyle, ThemeProvider } from "styled-components";
import db from "../db.json";
import { ExperienceProvider } from "../src/contexts/ExperienceContext";

const GlobalStyle = createGlobalStyle`
@import url('https://fonts.googleapis.com/css?family=Roboto:400,500&display=swap');
Expand Down Expand Up @@ -34,10 +35,12 @@ const theme = db.theme;
export default function App({ Component, pageProps }) {
return (
<>
<ThemeProvider theme={theme}>
<GlobalStyle />
<Component {...pageProps} />
</ThemeProvider>
<ExperienceProvider>
<ThemeProvider theme={theme}>
<GlobalStyle />
<Component {...pageProps} />
</ThemeProvider>
</ExperienceProvider>
</>
);
}
117 changes: 3 additions & 114 deletions pages/index.js
Original file line number Diff line number Diff line change
@@ -1,127 +1,16 @@
import Header from "../src/components/Header";
import Main from "../src/components/Main";
import Background from "../src/components/Background";
import Head from "next/head";
import { motion } from "framer-motion";
import { useRouter } from "next/router";
import { MainComplete } from "../src/components/Main";

export default function Home() {
const router = useRouter();
return (
<Background>
<Head>
<title>TCC</title>
</Head>
<Header>
<Header.Stats
as={motion.section}
transition={{ delay: 0, duration: 1 }}
variants={{
show: { opacity: 1, x: "0" },
hidden: { opacity: 0, x: "100%" },
}}
initial="hidden"
animate="show"
>
<Header.StatsPicture />
<Header.StatsInfo>
<p>William Mota</p>
<p>Level 24</p>
<p>xp 220</p>
</Header.StatsInfo>
</Header.Stats>
<Header.Infos
as={motion.div}
transition={{ delay: 0, duration: 1 }}
variants={{
show: { opacity: 1, y: "0" },
hidden: { opacity: 0, y: "100%" },
}}
initial="hidden"
animate="show"
>
<Header.InfoBar
as={motion.div}
transition={{ delay: 0.5, duration: 0.5 }}
variants={{
show: { opacity: 1, y: "0" },
hidden: { opacity: 0, y: "100%" },
}}
initial="hidden"
animate="show"
>
<p>Title:</p>
<p>The Lord of Logic</p>
</Header.InfoBar>
<Header.InfoBar>
<p>Class:</p>
<p>Human</p>
</Header.InfoBar>
</Header.Infos>
<Header.ExperienceBar
as={motion.div}
transition={{ delay: 1, duration: 0.5 }}
variants={{
show: { opacity: 1, y: "0" },
hidden: { opacity: 0, y: "100%" },
}}
initial="hidden"
animate="show"
/>
</Header>
<Main>
<Main.PlayerArea
as={motion.div}
transition={{ delay: 1, duration: 0.5 }}
variants={{
show: { opacity: 1, x: "0" },
hidden: { opacity: 0, x: "-100%" },
}}
initial="hidden"
animate="show"
>
<Main.MiniCard>
<img
className="icon classic"
src="https://res.cloudinary.com/dhmkfekt2/image/upload/v1633396500/swords_rktxam.svg"
onClick={() => {
router.push(`/quiz`);
console.log("hello world");
}}
/>
<p>Classic</p>
</Main.MiniCard>
<Main.MiniCard>
<img
className="icon"
src="https://res.cloudinary.com/dhmkfekt2/image/upload/v1633054930/scroll_jbw9wv.png"
/>
<p>About</p>
</Main.MiniCard>
<Main.MiniCard>
<img
className="icon"
src="https://res.cloudinary.com/dhmkfekt2/image/upload/v1633054930/lock_l5sw35.png"
/>
</Main.MiniCard>
<Main.MiniCard>
<img
className="icon"
src="https://res.cloudinary.com/dhmkfekt2/image/upload/v1633054930/lock_l5sw35.png"
/>
</Main.MiniCard>
</Main.PlayerArea>
<Main.Ranking
as={motion.div}
transition={{ delay: 1.5, duration: 1 }}
variants={{
show: { opacity: 1 },
hidden: { opacity: 0 },
}}
initial="hidden"
animate="show"
/>
</Main>
<Header />
<MainComplete />
</Background>
);
}
23 changes: 1 addition & 22 deletions pages/quiz.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ export default function QuizPage() {
React.useEffect(() => {
setTimeout(() => {
setScreenState(screenStates.QUIZ);
}, 1 * 100);
}, 1 * 2000);
}, []);

function handleSubmitQuiz() {
Expand All @@ -160,27 +160,6 @@ export default function QuizPage() {
}
return (
<Background>
<Header>
<Header.Stats>
<Header.StatsPicture />
<Header.StatsInfo>
<p>William Mota</p>
<p>Level 24</p>
<p>xp 220</p>
</Header.StatsInfo>
</Header.Stats>
<Header.Infos>
<Header.InfoBar>
<p>Title:</p>
<p>The Lord of Logic</p>
</Header.InfoBar>
<Header.InfoBar>
<p>Class:</p>
<p>Human</p>
</Header.InfoBar>
</Header.Infos>
<Header.ExperienceBar />
</Header>
<QuizContainer>
{screenState === screenStates.QUIZ && (
<QuestionWidget
Expand Down
58 changes: 58 additions & 0 deletions src/components/ExperienceBar/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import styled from "styled-components";
import { useContext } from "react";
import { ExperienceContext } from "../../contexts/ExperienceContext";
import { motion } from "framer-motion";
import db from "../../../db.json";

const ExperienceBar = styled.div`
display: flex;
/* justify-content: end; */
overflow: hidden;
position: relative;
margin-top: 2rem;
width: 100%;
height: 1rem;
border-radius: 50px;
background-color: ${({ theme }) => theme.colors.primary};
/* &::after {
position: absolute;
top: -1.5rem;
width: 10rem;
content: "Experience";
font-style: italic;
text-align: right;
} */
`;

function ExpBar() {
const { currentExperience, experienceToNextLevel } =
useContext(ExperienceContext);
const percentToNextLevel = Math.round(
(currentExperience * 100) / experienceToNextLevel
);
// console.log(level);
return (
<ExperienceBar
as={motion.div}
transition={{ delay: 1, duration: 0.5 }}
variants={{
show: { opacity: 1, y: "0" },
hidden: { opacity: 0, y: "100%" },
}}
initial="hidden"
animate="show"
>
<div
style={{
backgroundColor: `${db.theme.colors.red}`,
height: "100%",
width: `${percentToNextLevel}%`,
alignSelf: "self-start",
}}
/>
</ExperienceBar>
);
}

export default ExpBar;
80 changes: 60 additions & 20 deletions src/components/Header/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import styled from "styled-components";
import { motion } from "framer-motion";
import ExperienceBar from "../../components/ExperienceBar";
import { ExperienceContext } from "../../contexts/ExperienceContext";
import { useContext } from "react";

const Header = styled.div`
margin: 1% auto 5% auto;
Expand Down Expand Up @@ -118,24 +122,60 @@ Header.InfoBar = styled.div`
border-radius: 50px;
`;

Header.ExperienceBar = styled.div`
display: flex;
justify-content: end;
position: relative;
margin-top: 2rem;
width: 100%;
height: 1rem;
border-radius: 50px;
background-color: ${({ theme }) => theme.colors.primary};
&::before {
position: absolute;
top: -1.5rem;
width: 10rem;
content: "Experience";
font-style: italic;
text-align: right;
}
`;
function HeaderComplete() {
const { level, currentExperience, experienceToNextLevel } =
useContext(ExperienceContext);
console.log(experienceToNextLevel);
return (
<Header>
<Header.Stats
as={motion.section}
transition={{ delay: 0, duration: 1 }}
variants={{
show: { opacity: 1, x: "0" },
hidden: { opacity: 0, x: "100%" },
}}
initial="hidden"
animate="show"
>
<Header.StatsPicture />
<Header.StatsInfo>
<p>William Mota</p>
<p>{`Level ${level}`}</p>
<p>{`xp ${currentExperience}`}</p>
</Header.StatsInfo>
</Header.Stats>
<Header.Infos
as={motion.div}
transition={{ delay: 0, duration: 1 }}
variants={{
show: { opacity: 1, y: "0" },
hidden: { opacity: 0, y: "100%" },
}}
initial="hidden"
animate="show"
>
<Header.InfoBar
as={motion.div}
transition={{ delay: 0.5, duration: 0.5 }}
variants={{
show: { opacity: 1, y: "0" },
hidden: { opacity: 0, y: "100%" },
}}
initial="hidden"
animate="show"
>
<p>Title:</p>
<p>The Lord of Logic</p>
</Header.InfoBar>
<Header.InfoBar>
<p>Class:</p>
<p>Human</p>
</Header.InfoBar>
</Header.Infos>
<ExperienceBar />
</Header>
);
}

export default Header;
export default HeaderComplete;
Loading

1 comment on commit fd9862b

@vercel
Copy link

@vercel vercel bot commented on fd9862b Oct 12, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.