Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
efd4e88
[build] Configurações iniciais do projeto
diegofrr Jan 13, 2023
9828991
[feat] Preparação para uso dos temas
diegofrr Jan 14, 2023
8ad88ab
[feat] Criação de arquivo com importação da fonte
diegofrr Jan 14, 2023
2b50922
[style] Criação de CSS global da aplicação
diegofrr Jan 14, 2023
a1f478f
[feat] Adição das propriedades dos temas
diegofrr Jan 14, 2023
fe07b64
[style] Alteração nos temas e CSS global
diegofrr Jan 14, 2023
e7f5466
[feat] Criação do Header
diegofrr Jan 14, 2023
6fab49e
[feat] Criação do componente "Button"
diegofrr Jan 14, 2023
6f9d723
[refactor] Atualização de atributos dos temas
diegofrr Jan 14, 2023
656de4c
[styles] Atualização do estilo global
diegofrr Jan 14, 2023
520cad8
[refactor] Simplificação de código
diegofrr Jan 14, 2023
d5b353b
[refactor] Atualização do Header
diegofrr Jan 14, 2023
e0d9500
[refactor] Alteração de propriedade dos temas
diegofrr Jan 14, 2023
4d09b70
[refactor] Remoção de itens não utilizados
diegofrr Jan 14, 2023
922cf0b
[refactor] Refatoração no código do componente Header
diegofrr Jan 14, 2023
b3c2fef
[feat] Criação do contexto "Repository"
diegofrr Jan 14, 2023
9c6c4f4
[feat] Criação/preparação inicial da página de Issues
diegofrr Jan 14, 2023
caf9b8d
[feat] Criaçaõ de Header das páginas de Repositório e Issues
diegofrr Jan 14, 2023
3944825
[refactor] Refatoiração do botão de troca de tema
diegofrr Jan 14, 2023
fb30d9a
[feat] Criação da página Home
diegofrr Jan 14, 2023
3401a05
[style] Alteração de atributo CSS
diegofrr Jan 14, 2023
80d9e30
[build] next.config
diegofrr Jan 14, 2023
8031f8b
[feat] Criação inicial de componente "Issue"
diegofrr Jan 14, 2023
3ffa432
[feat] Chamada inicial da Home em index.js
diegofrr Jan 14, 2023
af487e1
[feat] Objetos das requisições (repositório e issue)
diegofrr Jan 14, 2023
b62fce4
[feat] Adição das Labels dentro das Issues
diegofrr Jan 15, 2023
df3d9cd
[build Adição da lib react-loader-spinner
diegofrr Jan 16, 2023
6f0bea3
[feat] Criação de Header personalizado
diegofrr Jan 16, 2023
5624b85
[build] Adição da lib de icons do Github
diegofrr Jan 16, 2023
5b8fb1a
[feat] Adição de ícone para identificar status da issue
diegofrr Jan 16, 2023
9ec262d
[feat] Adição de Dropdrown
diegofrr Jan 16, 2023
dc856a7
[build] Adição de lib de toast
diegofrr Jan 16, 2023
a4a9e28
[feat] Conclusão da página de Issues
diegofrr Jan 16, 2023
ed9b28d
[refactor] Adição de Providers
diegofrr Jan 16, 2023
b2d674f
[refactor] Tamanho da fonte do componente Botão
diegofrr Jan 16, 2023
67460d9
[feat] Conclusão do Header das páginas de Repositório e Issues
diegofrr Jan 16, 2023
2b1819b
[feat] Adição do contexto Repository
diegofrr Jan 16, 2023
96a029c
[feat] Adição do contexto StorageRepository
diegofrr Jan 16, 2023
8f5ea98
[refactor] Alteração z-index header
diegofrr Jan 16, 2023
dab2486
[style] Finalização do estilo do Dropdown
diegofrr Jan 16, 2023
0cef369
[feat] Criação do componente de Toast
diegofrr Jan 16, 2023
8803a11
[refactor] Alteração no ícone referente aos temas
diegofrr Jan 16, 2023
7be885b
[feat] Finalização da página Home
diegofrr Jan 16, 2023
553c0cf
[style] Alteração de cor ícone de estado da issue
diegofrr Jan 16, 2023
ef15834
[refactor] Remoção de itens não utilizados
diegofrr Jan 17, 2023
f8bc416
[feat] Criação de página de repositório
diegofrr Jan 17, 2023
25880cb
[fix] Redirecionamento de botão em páginas diferentes
diegofrr Jan 17, 2023
6e403e0
[refactor] Título da aba
diegofrr Jan 17, 2023
f4577ec
[feat] Criação de página de repositório
diegofrr Jan 17, 2023
ba8ebb3
[fix] update
diegofrr Jan 17, 2023
03c27cc
[refactor] Add atributo componente Toast
diegofrr Jan 17, 2023
555e0df
[feat] Add provedor de Favoritos
diegofrr Jan 17, 2023
e2f3b67
[feat] Criação de contexto de favoritos
diegofrr Jan 17, 2023
a7ef4fa
[style] Aplicação de cor de tema
diegofrr Jan 17, 2023
48c0b2a
[feat] Criação da página de favoritos
diegofrr Jan 17, 2023
abbfa59
[feat] Criação da página de favoritos
diegofrr Jan 17, 2023
7a60e1e
[feat] Add componente RepositoryIssue
diegofrr Jan 17, 2023
7b28b87
[refactor] Alteração no código
diegofrr Jan 17, 2023
e83764a
[feat] Finalização da página Home
diegofrr Jan 17, 2023
7332a2b
[feat] Finalização da página de Issues
diegofrr Jan 17, 2023
e1173c1
[feat] Finalização da página de Repositório
diegofrr Jan 17, 2023
df49450
[build] fix build errors
diegofrr Jan 17, 2023
39a3f6a
[fix] maxPages value
diegofrr Jan 18, 2023
fadf301
[refactor] update code
diegofrr Jan 18, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"presets": ["next/babel"],
"plugins": [["styled-components", { "ssr": true }]]
}
1 change: 1 addition & 0 deletions debug.log
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[0117/050649.516:ERROR:registration_protocol_win.cc(102)] CreateFile: O sistema n�o pode encontrar o arquivo especificado. (0x2)
7 changes: 5 additions & 2 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
}
// pageExtensions: ["Page.jsx"],
};

module.exports = nextConfig
module.exports = {
nextConfig,
};
21 changes: 18 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,34 @@
"name": "frontend-test",
"version": "0.1.0",
"private": true,
"homepage": "https://diegofrr.github.io/yssues",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
"lint": "next lint",
"predeploy": "npm run build",
"deploy": "gh-pages -d build"
},
"dependencies": {
"@fontsource/plus-jakarta-sans": "^4.5.10",
"@primer/octicons-react": "^17.10.2",
"axios": "^1.2.2",
"next": "13.0.6",
"npm": "^9.3.0",
"react": "18.2.0",
"react-dom": "18.2.0"
"react-dom": "18.2.0",
"react-hot-toast": "^2.4.0",
"react-icons": "^4.7.1",
"react-loader-spinner": "^5.3.4",
"styled-components": "^5.3.6"
},
"devDependencies": {
"eslint": "8.29.0",
"eslint-config-next": "13.0.6"
"eslint-config-next": "13.0.6",
"gh-pages": "^4.0.0"
},
"resolutions": {
"styled-components": "^5"
}
}
6 changes: 0 additions & 6 deletions pages/_app.js

This file was deleted.

8 changes: 0 additions & 8 deletions pages/index.js

This file was deleted.

3 changes: 3 additions & 0 deletions public/assets/empty-favorites.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions public/assets/empty-issues.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions src/components/PagesComponents/Favorites/Favorite/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { ArrowRightIcon, XIcon } from "@primer/octicons-react";
import { Container, Content } from "./styles";
import { useContext } from "react";
import { FavoritesContext } from "../../../../contexts/StorageRepositories/favorites";

export default function FavoriteRepository({ data }) {
const { removeFavorite } = useContext(FavoritesContext);

function formatUrl(url) {
return url.replace("/", "%2F");
}

return (
<Container>
<Content>
<img alt={`${data.name} logo`} src={data.owner.avatar_url} />
<span>{data.full_name}</span>
<div>
<button onClick={() => removeFavorite(data)}>
<XIcon />
</button>
<a
target="_blank"
rel="noreferrer"
href={`/repository/${formatUrl(data.full_name)}`}
>
Acessar
<span>
<ArrowRightIcon size={14} />
</span>
</a>
</div>
</Content>
</Container>
);
}
98 changes: 98 additions & 0 deletions src/components/PagesComponents/Favorites/Favorite/styles.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
import styled from "styled-components";

export const Container = styled.div`
width: 100%;
border: 1px solid ${(p) => p.theme.colors.header.border};
border-radius: 10px;
transition: all 0.3s ease;
`;

export const Content = styled.div`
margin: 10px;
display: flex;
align-items: center;
justify-content: left;
gap: 10px;
position: relative;

img {
width: 40px;
height: 40px;
border-radius: 50%;
}

span {
transition: all 0.3s ease;
color: ${(p) => p.theme.colors.primary};
font-size: 1.1rem;
}

div {
position: absolute;
right: 0;
display: flex;
align-items: center;
justify-content: center;
flex-direction: row-reverse;
gap: 10px;

button {
display: grid;
place-items: center;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: ${(p) => p.theme.colors.button.bg};
transition: all 0.3s ease;

svg {
transition: all 0.3s ease;
color: ${(p) => p.theme.colors.button.text};
}

:hover {
background-color: ${(p) => p.theme.colors.red};
svg {
color: #fff;
}
}
}

a {
display: flex;
transition: all 0.3s ease;
background-color: ${(p) => p.theme.colors.button.bg};
padding: 0 10px;
align-items: center;
justify-content: center;
height: 20px;
border-radius: 10px;
font-size: 0.8rem;
color: ${(p) => p.theme.colors.button.text};
font-weight: 600;

span {
display: grid;
place-items: center;
transform: scale(0);
width: 12px;
margin-left: -12px;

svg {
color: #fff;
}
}

:hover {
background-color: ${(p) => p.theme.colors.blue[200]};
color: #fff;

span {
transform: scale(1);
width: 12px;
margin-left: 4px;
}
}
}
}
`;
30 changes: 30 additions & 0 deletions src/components/PagesComponents/Home/Header/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import Link from "next/link";
import ToggleThemeButton from "../../../SharedComponents/ToggleThemeButton";
import Button from "../../../SharedComponents/Button";

import { AppName, ButtonsContainer, Container, Content } from "./styles";
import { useRouter } from "next/router";

export default function Header() {
const router = useRouter();

const goToFavorites = () => router.push("/favorites");

return (
<>
<Container>
<Content>
<AppName rel="noreferrer" href="/">
y<span>ssues</span>
</AppName>
<ButtonsContainer>
<ToggleThemeButton />
<Button primary type="rounded" onClick={goToFavorites}>
Favoritos
</Button>
</ButtonsContainer>
</Content>
</Container>
</>
);
}
71 changes: 71 additions & 0 deletions src/components/PagesComponents/Home/Header/styles.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import styled from "styled-components";

export const Container = styled.div`
position: fixed;
display: grid;
place-items: center;
top: 0;
left: 0;
width: 100%;
height: 60px;
background-color: ${(p) => p.theme.colors.bg};
border-bottom: 1px solid ${(p) => p.theme.colors.header.border};
margin-bottom: -1px;
z-index: 10000;
`;

export const Content = styled.div`
display: flex;
align-items: center;
justify-content: space-between;
width: calc(100% - 40px);
max-width: 1000px;
height: 100%;
`;

export const AppName = styled.a`
color: ${(p) => p.theme.colors.header.title};
font-weight: 800;
font-size: 1.2rem;

@media only screen and (max-width: 320px) {
span {
display: none;
}
}
`;

export const ButtonsContainer = styled.div`
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
gap: 20px;
margin-left: auto;
`;

export const Button = styled.div`
transition: all 0.3s ease;
display: grid;
place-items: center;
padding: 0 20px;
background-color: ${(p) => p.theme.colors.blue[200]};
color: #ffffff;
height: 32px;
font-size: 0.8rem;
font-weight: 600;
border-radius: ${(buttonProps) =>
buttonProps.type === "rounded"
? "100px"
: buttonProps.type === "rounded-square"
? "4px"
: 0};

:hover {
background-color: ${(p) => p.theme.colors.blue[300]};
}

:active {
background-color: ${(p) => p.theme.colors.blue[100]};
}
`;
16 changes: 16 additions & 0 deletions src/components/PagesComponents/Home/HistoryRepository/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Container, Content } from "./styles";

export default function HistoryRepository({ data }) {
function formatUrl(url) {
return url.replace("/", "%2F");
}

return (
<Container href={`/repository/${formatUrl(data.full_name)}`}>
<Content>
<img alt={`${data.name} logo`} src={data.owner.avatar_url} />
<span>{data.full_name}</span>
</Content>
</Container>
);
}
36 changes: 36 additions & 0 deletions src/components/PagesComponents/Home/HistoryRepository/styles.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import styled from "styled-components";

export const Container = styled.a`
max-width: 100%;
border: 1px solid ${(p) => p.theme.colors.header.border};
padding: 10px;
border-radius: 10px;
transition: all 0.3s ease;

:hover {
border-color: ${(p) => p.theme.colors.blue[200]};
span {
color: ${(p) => p.theme.colors.blue[200]};
}
}
`;

export const Content = styled.div`
width: 100%;
display: flex;
align-items: center;
justify-content: left;
gap: 10px;

img {
width: 40px;
height: 40px;
border-radius: 50%;
}

span {
transition: all 0.3s ease;
color: ${(p) => p.theme.colors.secundary};
font-size: 1.1rem;
}
`;
Loading