Skip to content
Snippets Groups Projects
Commit efe652eb authored by mrp19's avatar mrp19
Browse files

Fim da página sobre a plataforma

parent 5c6a577f
Branches
Tags
2 merge requests!57Merge of develop into master,!56Fixed buttons reportar, seguir, compartilhar, guardar and entrar (in comments...
Showing
with 1506 additions and 257 deletions
...@@ -26,6 +26,7 @@ import UserPage from './Pages/UserPage'; ...@@ -26,6 +26,7 @@ import UserPage from './Pages/UserPage';
import UserTerms from './Pages/UserTerms'; import UserTerms from './Pages/UserTerms';
import Contact from './Pages/Contact'; import Contact from './Pages/Contact';
import Teste from './Pages/Teste'; import Teste from './Pages/Teste';
import AboutPage from './Pages/AboutPage';
import ResourcePage from './Pages/ResourcePage'; import ResourcePage from './Pages/ResourcePage';
import {BrowserRouter, Switch, Route} from 'react-router-dom'; import {BrowserRouter, Switch, Route} from 'react-router-dom';
...@@ -81,6 +82,7 @@ export default function App(){ ...@@ -81,6 +82,7 @@ export default function App(){
<Route path="/contato" component={Contact}/> <Route path="/contato" component={Contact}/>
<Route path="/termos" component={UserTerms}/> <Route path="/termos" component={UserTerms}/>
<Route path="/teste" component={Teste}/> <Route path="/teste" component={Teste}/>
<Route path="/sobre" component={AboutPage}/>
</Switch> </Switch>
......
/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
Departamento de Informatica - Universidade Federal do Parana
This file is part of Plataforma Integrada MEC.
Plataforma Integrada MEC is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Plataforma Integrada MEC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import "react-responsive-carousel/lib/styles/carousel.min.css";
import { Carousel } from 'react-responsive-carousel';
import styled from 'styled-components';
import Img1 from '../img/carousel/Icone_Grande (1).png'
import Img2 from '../img/carousel/Icone_Grande (2).png'
import Img3 from '../img/carousel/Icone_Grande (3).png'
import Img4 from '../img/carousel/Icone_Grande (4).png'
import Img5 from '../img/carousel/Icone_Grande (5).png'
const CarouselAbout = styled(Carousel)`
.carousel.carousel-slider .control-arrow {
font-size: 18px !important;
bottom: 40% !important;
}
.carousel .thumb{
border-radius: 50%;
width:62px;
filter: grayscale(1);
}
.carousel .thumb.selected, .carousel .thumb:hover {
border: 2px solid #a4a4a4 !important;
filter:grayscale(0);
}
div {
color: #666 !important;
text-align: center !important;
img {
height: 52px;
width: 52px !important;
display: block;
margin: auto;
}
span {
font-size: 26px;
font-weight: 400;
margin-bottom: 10px;
}
p {
font-size: 15px;
line-height: 1.42857143;
text-align: center;
display: block;
margin: auto;
padding-inline: 235px
}
}
`
function AboutCarousel(props) {
return (
<CarouselAbout showThumbs= {true}
showStatus= {false}
showIndicators = {false}
transitionTime={1000}
infiniteLoop
>
<div>
<img src={Img1} alt="Slide 1"/>
<span>Buscar e Baixar Recursos</span>
<p>São mais de 20 mil recursos educacionais à sua disposição. São recursos de portais parceiros do MEC e de professores que, como você, atuam na Educação Básica!</p>
</div>
<div>
<img src={Img2} alt="Slide 2"/>
<span>Guardar Recursos em Coleções</span>
<p>Guarde e organize em coleções aqueles recursos que você considera ser interessantes para elaborar a sua aula. Aproveite e indique aos colegas pelas redes sociais ou e-mail.</p>
</div>
<div>
<img src={Img3} alt="Slide 3"/>
<span>Compartilhar suas Experiências</span>
<p>Você pode relatar suas experiências sobre o uso de recursos no seu cotidiano escolar. Aproveite esse espaço para sugerir e conhecer novos usos para um mesmo recurso.</p>
</div>
<div>
<img src={Img4} alt="Slide 4"/>
<span>Publicar o seu Recurso</span>
<p>Colabore e ajude a fortalecer a plataforma publicando um recurso educacional desenvolvido por você ou pelo coletivo da escola do qual faz parte. Compartilhe seu conhecimento e visibilidade ao seu recurso, torne-o público enriquecendo o conhecimento partilhado!</p>
</div>
<div>
<img src={Img5} alt="Slide 5"/>
<span>Encontrar Materiais de Formação</span>
<p>A plataforma disponibiliza um conjunto de materiais de formação desenvolvidos pelo Ministério da Educação com diversidade de temas e recursos educacionais.</p>
</div>
</CarouselAbout>
);
}
export default AboutCarousel;
/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
Departamento de Informatica - Universidade Federal do Parana
This file is part of Plataforma Integrada MEC.
Plataforma Integrada MEC is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Plataforma Integrada MEC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/
import React, { Component, useState, useEffect } from 'react';
import styled from 'styled-components';
import Banner1 from '../img/banner-sobre.jpg';
import { TextField } from '@material-ui/core';
import FormInput from "../Components/FormInput.js"
import axios from 'axios'
import {apiUrl} from '../env';
const Button = styled.button`
background-color: #00acc1;
color:#fff;
font-family: Roboto,sans-serif;
font-size: 14px;
font-weight: 500;
height: 36px;
border-radius: 3px;
padding-left: 16px;
padding-right: 16px;
box-shadow: 0 2px 5px 0 rgba(0,0,0,.26);
outline: none;
position: relative;
cursor: pointer;
min-height: 36px;
min-width: 88px;
line-height: 36px;
vertical-align: middle;
align-items: center;
text-align: center;
border-radius: 3px;
box-sizing: border-box;
user-select: none;
border: 0;
padding: 0 6px;
padding-right: 6px;
padding-left: 6px;
margin: 6px 8px;
white-space: nowrap;
text-transform: uppercase;
font-weight: 500;
font-size: 14px;
font-style: inherit;
font-variant: inherit;
font-family: inherit;
text-decoration: none;
overflow: hidden;
transition: box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1);
`
function validateNome (nome) {
let flag = false
if(nome.length === 0) {
flag = true
}
return flag
}
function validateMensagem (mensagem) {
let flag = false
if(mensagem.length === 0) {
flag = true
}
return flag
}
function validateEmail (email) {
let flag = false
if (email.split("").filter(x => x === "@").length !== 1) {
flag = true
}
return flag
}
function Formulario (props){
const [nome, handleNome] = useState(
{
dict : {
key:false,
value:""
}
})
const [email, handleEmail] = useState(
{
dict : {
key:false,
value:""
}
})
const [mensagem, handleMensagem] = useState(
{
dict : {
key: false,
value:""
}
})
const preencheNome = (e) => {
const aux2 = e.target.value
const flag = validateNome(aux2)
handleNome({...nome, dict : {
key : flag,
value : e.target.value
}})
console.log(nome)
}
const preencheEmail = (e) => {
const aux = e.target.value
const flag = validateEmail(aux)
handleEmail({...email, dict : {
key : flag,
value : e.target.value
}})
console.log(email)
}
const preencheMensagem = (e) => {
const msg = e.target.value
console.log(msg)
let flag = validateMensagem(msg)
handleMensagem({...mensagem, dict : {
key : flag,
value : msg
}})
console.log(mensagem)
}
const limpaTudo = () => {
handleNome({
dict : {
key: false,
value:""
}}
);
handleEmail({
dict : {
key: false,
value:""
}}
)
handleMensagem({
dict : {
key: false,
value:""
}}
)
}
const onSubmit = (e) => {
//on submit we should prevent the page from refreshing
e.preventDefault(); //though this is arguable
console.log(!(nome.dict.key && email.dict.key && mensagem.dict.key ))
// Se não houver erro em nunhum dos campos E nenhum dos campos for vazio: a página faz o contato com o backend e os campos ficam em branco no formulário
if (!(nome.dict.key && email.dict.key && mensagem.dict.key ) && ((nome.dict.value.length > 0) && (email.dict.value.length > 0) && (mensagem.dict.value.length > 0))) {
axios.post(`${apiUrl}/contacts`,
{
contact : {
name: nome.dict.value,
email: email.dict.value,
message: mensagem.dict.value
}
}
).then()
limpaTudo();
}
}
return(
<form onSubmit={e => onSubmit(e)}>
<FormInput
inputType={"text"}
name={"nome"}
value={nome.dict.value}
placeholder={"Nome *"}
error = {nome.dict.key}
help = {nome.dict.key ? "insira seu nome para o contato " : ""}
handleChange={e => preencheNome(e)}
/>
<br/>
<FormInput
inputType={"text"}
name={"email"}
value={email.dict.value}
placeholder={"E-mail *"}
error = {email.dict.key}
help = {email.dict.key ? "Formato de e-mail incorreto ou vazio, tente : usuario@provedor.com" : ""}
handleChange={e => preencheEmail(e)}
/>
<br/>
<br/>
<FormInput
inputType={"text"}
name={"mensagem"}
value={mensagem.dict.value}
placeholder={"Mensagem *"}
multi = {true}
rows = "5"
rowsMax = "6"
error = {mensagem.dict.key}
help = {mensagem.dict.key ? "Faltou escrever sua mensagem de sugestão, crítica ou dúvida." : "Escreva sua mensagem no campo acima."}
handleChange={e => preencheMensagem(e)}
/>
<br/>
<br/>
<div style={{display: "flex", justifyContent: "center"}}>
<Button onClick={e => onSubmit(e)} >ENVIAR MENSAGEM</Button>
</div>
</form>
);
}
export default Formulario;
...@@ -92,10 +92,10 @@ export default function MenuBar(props){ ...@@ -92,10 +92,10 @@ export default function MenuBar(props){
const { state, dispatch } = useContext(Store) const { state, dispatch } = useContext(Store)
const menuSobre = [ const menuSobre = [
{ name: "Sobre a Plataforma", href: "" }, { name: "Sobre a Plataforma", href: "sobre" },
{ name: "Portais Parceiros", href: "" }, { name: "Portais Parceiros", href: "" },
{ name: "Termos de Uso", href: "" }, { name: "Termos de Uso", href: "termos" },
{ name: "Contato", href: "" } { name: "Contato", href: "contato" }
] ]
const menuAjuda = [ const menuAjuda = [
......
...@@ -26,29 +26,12 @@ import Backdrop from '@material-ui/core/Backdrop'; ...@@ -26,29 +26,12 @@ import Backdrop from '@material-ui/core/Backdrop';
import Grid from '@material-ui/core/Grid'; import Grid from '@material-ui/core/Grid';
import Fade from '@material-ui/core/Fade'; import Fade from '@material-ui/core/Fade';
import VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined'; import VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined';
import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';
import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';
import styled from 'styled-components' import styled from 'styled-components'
/*Importação de imagens para o componente*/ /*Importação de imagens para o componente*/
import Handshake from "../img/termos/handshake.svg"
import Pessoa from "../img/termos/Pessoa.svg"
import Email from "../img/termos/Email.svg"
import Seguranca from "../img/termos/Seguranca.svg"
import Aberto from "../img/termos/Aberto.png";
import Fechado from "../img/termos/Fechado.png";
import Arrow_down from "../img/termos/Arrow_down.svg";
import Arrow_double from "../img/termos/Arrow_double.svg";
import Arrow_O from "../img/termos/Arrow_O que é a plataforma.png";
import Arrow_O_1 from "../img/termos/Arrow_O que é a plataforma-1.png";
import Like from "../img/termos/Like.svg";
import Unlike from "../img/termos/Unlike.svg";
import Line from "../img/termos/Line.svg";
import Entenda from "../img/termos/Entenda.svg";
import V from "../img/termos/V.svg";
import OrthogonalLineUp from "../img/termos/OrthogonalLineUp.png"
import OrthogonalLineDown from "../img/termos/OrthogonalLineDown.png"
......
/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
Departamento de Informatica - Universidade Federal do Parana
This file is part of Plataforma Integrada MEC.
Plataforma Integrada MEC is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Plataforma Integrada MEC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/
import React from 'react';
import { makeStyles } from '@material-ui/styles';
import Modal from '@material-ui/core/Modal';
import Formulario from "./ContactForm";
import Backdrop from '@material-ui/core/Backdrop';
import Grid from '@material-ui/core/Grid';
import Fade from '@material-ui/core/Fade';
import VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined';
import styled from 'styled-components'
/*Importação de imagens para o componente*/
const useStyles = makeStyles(theme => ({
modal: {
display: "flex",
alignItems: "center",
justifyContent: "center"
},
paper: {
border: '2px solid #000',
boxShadow: " 0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)"
},
carousel: {
width: "750px",
height:"370px",
}
}));
const Button = styled.button`
background-color: #00bcd4;
color: #fff;
font-family: Roboto,sans-serif;
font-size: 14px;
font-weight: 700;
height: 36px;
border-radius: 3px;
padding-left: 16px;
padding-right: 16px;
box-shadow: 0 2px 5px 0 rgba(0,0,0,.26);
display: inline-block;
position: relative;
cursor: pointer;
min-height: 36px;
min-width: 88px;
line-height: 36px;
vertical-align: middle;
-webkit-box-align: center;
outline: none;
text-align: center;
border: 0;
padding: 0 16px !important;
hite-space: nowrap;
text-decoration: none;
`
const Formulário = styled.div `
background-color: #fff;
padding: 40px;
border-radius: 4px;
color: #666 !important;
h2 {
font-size: 26px;
font-weight: lighter;
margin-top: 20px;
margin-bottom: 10px;
}
form .inputBlock {
margin-block: 22px;
}
form .inputBlock label {
font-size: 14px;
font-weight: bold;
display: block;
}
form .inputBlock input {
width: 100%;
height: 32px;
font-size: 14px;
border: 0;
border-bottom: 1px solid #eee;
}
form .inputBlock.Message input {
height: 131px;
}
form buttom[type=submit] {
width: 100%;
border: 0;
margin-top: 30px;
background: #7d40e7
border-radius: 2px;
padding: 15px 20px;
font-size: 16px;
font-weight: bold;
color: #fff;
cursor: pointer;
transition: background 0.5s;
}
form buttom[type=submit]:hover {
background: #6931ac
}
h2 {
font-size: 24px;
font-weight: lighter;
margin-bottom: 50px;
margin-top: 20px;
text-align: center;
}
`
export default function TransitionsModal() {
const classes = useStyles();
const [open, setOpen] = React.useState(false);
const handleOpen = () => {
setOpen(true);
};
const handleClose = () => {
setOpen(false);
};
return (
<div style={{display:"flex", justifyContent: "center"}}>
<link href="https://fonts.googleapis.com/css?family=Kalam|Pompiere|Roboto&display=swap" rel="stylesheet"/>
<Button type="button" onClick={handleOpen}>
SUGERIR OUTRO SITE
</Button>
<Modal
aria-labelledby="transition-modal-title"
aria-describedby="transition-modal-description"
className={classes.modal}
open={open}
onClose={handleClose}
closeAfterTransition
BackdropComponent={Backdrop}
BackdropProps={{
timeout: 500,
}}
>
<Fade in={open}>
<div>
<Formulário>
<h2>Sugerir site de Recursos Educacionais Digitais</h2>
<Formulario/>
</Formulário>
</div>
</Fade>
</Modal>
</div>
);
}
This diff is collapsed.
...@@ -20,7 +20,8 @@ import React, { Component, useState, useEffect } from 'react'; ...@@ -20,7 +20,8 @@ import React, { Component, useState, useEffect } from 'react';
import styled from 'styled-components'; import styled from 'styled-components';
import Banner1 from '../img/banner-sobre.jpg'; import Banner1 from '../img/banner-sobre.jpg';
import { TextField } from '@material-ui/core'; import { TextField } from '@material-ui/core';
import FormInput from "../Components/FormInput.js" import FormInput from "../Components/FormInput.js";
import Formulario from "../Components/ContactForm.js";
import axios from 'axios' import axios from 'axios'
import {apiUrl} from '../env'; import {apiUrl} from '../env';
...@@ -63,50 +64,25 @@ const Seção2 = styled.div ` ...@@ -63,50 +64,25 @@ const Seção2 = styled.div `
justify-content: center; justify-content: center;
align-items: center; align-items: center;
` `
const Button = styled.button`
background-color: #00acc1; const Seção3 = styled.div `
color:#fff; height: 127px;
font-family: Roboto,sans-serif; background-color: #f4f4f4;
font-size: 14px; color:#666;
font-weight: 500; line-height: 1.42857143;
height: 36px; font-size:18px;
border-radius: 3px;
padding-left: 16px;
padding-right: 16px;
box-shadow: 0 2px 5px 0 rgba(0,0,0,.26);
outline: none;
position: relative;
cursor: pointer;
min-height: 36px;
min-width: 88px;
line-height: 36px;
vertical-align: middle;
align-items: center;
text-align: center; text-align: center;
border-radius: 3px; padding-top: 70px;
box-sizing: border-box;
user-select: none;
border: 0;
padding: 0 6px;
padding-right: 6px;
padding-left: 6px;
margin: 6px 8px;
white-space: nowrap;
text-transform: uppercase; p {
font-weight: 500; margin: 0 0 10px 0;
font-size: 14px; }
font-style: inherit;
font-variant: inherit;
font-family: inherit;
text-decoration: none;
overflow: hidden;
transition: box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1);
` `
const Formulário = styled.div ` const Formulário = styled.div `
background-color: #fff; background-color: #fff;
box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);
...@@ -172,163 +148,9 @@ const Formulário = styled.div ` ...@@ -172,163 +148,9 @@ const Formulário = styled.div `
const Seção3 = styled.div `
height: 127px;
background-color: #f4f4f4;
color:#666;
line-height: 1.42857143;
font-size:18px;
text-align: center;
padding-top: 70px;
p {
margin: 0 0 10px 0;
}
`
function validateNome (nome) {
let flag = false
if(nome.length === 0) {
flag = true
}
return flag
}
function validateMensagem (mensagem) {
let flag = false
if(mensagem.length === 0) {
flag = true
}
return flag
}
function validateEmail (email) {
let flag = false
if (email.split("").filter(x => x === "@").length !== 1) {
flag = true
}
return flag
}
function Contact (props) { function Contact (props) {
const [nome, handleNome] = useState(
{
dict : {
key:false,
value:""
}
})
const [email, handleEmail] = useState(
{
dict : {
key:false,
value:""
}
})
const [mensagem, handleMensagem] = useState(
{
dict : {
key: false,
value:""
}
})
const preencheNome = (e) => {
const aux2 = e.target.value
const flag = validateNome(aux2)
handleNome({...nome, dict : {
key : flag,
value : e.target.value
}})
console.log(nome)
}
const preencheEmail = (e) => {
const aux = e.target.value
const flag = validateEmail(aux)
handleEmail({...email, dict : {
key : flag,
value : e.target.value
}})
console.log(email)
}
const preencheMensagem = (e) => {
const msg = e.target.value
console.log(msg)
let flag = validateMensagem(msg)
handleMensagem({...mensagem, dict : {
key : flag,
value : msg
}})
console.log(mensagem)
}
const limpaTudo = () => {
handleNome({
dict : {
key: false,
value:""
}}
);
handleEmail({
dict : {
key: false,
value:""
}}
)
handleMensagem({
dict : {
key: false,
value:""
}}
)
}
const onSubmit = (e) => {
//on submit we should prevent the page from refreshing
e.preventDefault(); //though this is arguable
console.log(!(nome.dict.key && email.dict.key && mensagem.dict.key ))
// Se não houver erro em nunhum dos campos E nenhum dos campos for vazio: a página faz o contato com o backend e os campos ficam em branco no formulário
if (!(nome.dict.key && email.dict.key && mensagem.dict.key ) && ((nome.dict.value.length > 0) && (email.dict.value.length > 0) && (mensagem.dict.value.length > 0))) {
axios.post(`${apiUrl}/contacts`,
{
contact : {
name: nome.dict.value,
email: email.dict.value,
message: mensagem.dict.value
}
}
).then()
limpaTudo();
}
}
return( return(
...@@ -340,50 +162,9 @@ function Contact (props) { ...@@ -340,50 +162,9 @@ function Contact (props) {
</Seção1> </Seção1>
<Seção2> <Seção2>
<Formulário noValidate autoComplete="off"> <Formulário noValidate autoComplete="off">
<h2>Entre em contato para enviar dúvidas,<br/>sugestões ou críticas</h2> <h2>Entre em contato para enviar dúvidas,<br/>sugestões ou críticas</h2>
<form onSubmit={e => onSubmit(e)}> <Formulario/>
<FormInput
inputType={"text"}
name={"nome"}
value={nome.dict.value}
placeholder={"Nome *"}
error = {nome.dict.key}
help = {nome.dict.key ? "insira seu nome para o contato " : ""}
handleChange={e => preencheNome(e)}
/>
<br/>
<FormInput
inputType={"text"}
name={"email"}
value={email.dict.value}
placeholder={"E-mail *"}
error = {email.dict.key}
help = {email.dict.key ? "Formato de e-mail incorreto ou vazio, tente : usuario@provedor.com" : ""}
handleChange={e => preencheEmail(e)}
/>
<br/>
<br/>
<FormInput
inputType={"text"}
name={"mensagem"}
value={mensagem.dict.value}
placeholder={"Mensagem *"}
multi = {true}
rows = "5"
rowsMax = "6"
error = {mensagem.dict.key}
help = {mensagem.dict.key ? "Faltou escrever sua mensagem de sugestão, crítica ou dúvida." : "Escreva sua mensagem no campo acima."}
handleChange={e => preencheMensagem(e)}
/>
<br/>
<br/>
<div style={{display: "flex", justifyContent: "center"}}>
<Button onClick={e => onSubmit(e)} >ENVIAR MENSAGEM</Button>
</div>
</form>
</Formulário> </Formulário>
</Seção2> </Seção2>
......
src/img/carousel/Icone_Ativado_dot1.png

23.4 KiB

src/img/carousel/Icone_Ativado_dot2.png

23 KiB

src/img/carousel/Icone_Ativado_dot3.png

23.3 KiB

src/img/carousel/Icone_Ativado_dot4.png

23.5 KiB

src/img/carousel/Icone_Ativado_dot5.png

22.8 KiB

src/img/carousel/Icone_Desativado_dot1.png

22.5 KiB

src/img/carousel/Icone_Desativado_dot2.png

22 KiB

src/img/carousel/Icone_Desativado_dot3.png

22.4 KiB

src/img/carousel/Icone_Desativado_dot4.png

22.5 KiB

src/img/carousel/Icone_Desativado_dot5.png

21.8 KiB

src/img/carousel/Icone_Grande (1).png

46 KiB

src/img/carousel/Icone_Grande (2).png

39 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment