Add Prettier

This commit is contained in:
Rickard Natt och Dag 2021-02-05 10:09:42 +01:00
parent 464f77dac2
commit 7069ee8c21
No known key found for this signature in database
GPG Key ID: C3958EFC7F24E8DF
33 changed files with 2536 additions and 2476 deletions

10
packages/site/.prettierrc Normal file
View File

@ -0,0 +1,10 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": true,
"trailingComma": "es5",
"bracketSpacing": true,
"jsxBracketSameLine": false
}

View File

@ -1,17 +1,17 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import SwiperCore, { Pagination, Autoplay } from "swiper";
import { Swiper, SwiperSlide } from "swiper/react";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import SwiperCore, { Pagination, Autoplay } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/react'
SwiperCore.use([Pagination, Autoplay]);
SwiperCore.use([Pagination, Autoplay])
import SectionTitle from "./SectionTitle";
import SectionTitle from './SectionTitle'
import img1 from "../assets/img/feature/app-img.png";
import img2 from "../assets/img/feature/app-img2.png";
import img3 from "../assets/img/feature/app-img3.png";
import img4 from "../assets/img/feature/app-img4.png";
import img5 from "../assets/img/feature/app-img5.png";
import img1 from '../assets/img/feature/app-img.png'
import img2 from '../assets/img/feature/app-img2.png'
import img3 from '../assets/img/feature/app-img3.png'
import img4 from '../assets/img/feature/app-img4.png'
import img5 from '../assets/img/feature/app-img5.png'
const AppShots = () => {
const swiperParams = {
@ -19,34 +19,34 @@ const AppShots = () => {
spaceBetween: 30,
autoplay: {
delay: 3000,
disableOnInteraction: false
disableOnInteraction: false,
},
pagination: {
el: "#appshot-paginations",
type: "bullets",
clickable: "true"
el: '#appshot-paginations',
type: 'bullets',
clickable: 'true',
},
slidesPerView: 5,
// Responsive breakpoints
breakpoints: {
0: {
slidesPerGroup: 2,
slidesPerView: 2
slidesPerView: 2,
},
767: {
slidesPerGroup: 3,
slidesPerView: 3
slidesPerView: 3,
},
991: {
slidesPerGroup: 2,
slidesPerView: 3
slidesPerView: 3,
},
1499: {
slidesPerGroup: 5,
slidesPerView: 5
slidesPerView: 5,
},
},
}
}
};
return (
<section className="pt-120 pb-155 app-shot-one" id="app">
<Container>
@ -170,7 +170,7 @@ const AppShots = () => {
</div>
</Container>
</section>
);
};
)
}
export default AppShots;
export default AppShots

View File

@ -1,15 +1,15 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import shape1 from "../assets/img/banner/shaps1.png";
import shape2 from "../assets/img/banner/shaps2.png";
import shape3 from "../assets/img/banner/shaps3.png";
import shape4 from "../assets/img/banner/shaps4.png";
import shape5 from "../assets/img/banner/shaps5.png";
import shape6 from "../assets/img/banner/shaps6.png";
import shape7 from "../assets/img/banner/shaps7.png";
import shape1 from '../assets/img/banner/shaps1.png'
import shape2 from '../assets/img/banner/shaps2.png'
import shape3 from '../assets/img/banner/shaps3.png'
import shape4 from '../assets/img/banner/shaps4.png'
import shape5 from '../assets/img/banner/shaps5.png'
import shape6 from '../assets/img/banner/shaps6.png'
import shape7 from '../assets/img/banner/shaps7.png'
import bannerMoc from "../assets/img/banner/mockup.png";
import bannerMoc from '../assets/img/banner/mockup.png'
const Banner = () => {
return (
@ -61,14 +61,19 @@ const Banner = () => {
<h1>Öppna Skolplattformen</h1>
<p>
Oavsett om du har tre eller sju barn - det är mycket att hålla reda . Stövlarna. Frånvaruanmälan nummer 17 i februari. Vad vikarien heter den här veckan.
En dåligt fungerande Skolplattform som äter tid och ork? Det finns inte plats för det. vi har byggt en bättre.
Med all information du behöver som förälder. Snabbare och framförallt - mycket mindre krångel.
Oavsett om du har tre eller sju barn - det är mycket att hålla
reda . Stövlarna. Frånvaruanmälan nummer 17 i februari. Vad
vikarien heter den här veckan. En dåligt fungerande
Skolplattform som äter tid och ork? Det finns inte plats för
det. vi har byggt en bättre. Med all information du behöver
som förälder. Snabbare och framförallt - mycket mindre
krångel.
</p>
<p>
<b>Appen är klar och kommer att dyka upp App Store och Google Play Store vilken dag som helst.</b>
<b>
Appen är klar och kommer att dyka upp App Store och
Google Play Store vilken dag som helst.
</b>
</p>
<a href="#" className="btn">
App Store
@ -87,7 +92,7 @@ const Banner = () => {
</Container>
</div>
</div>
);
};
)
}
export default Banner;
export default Banner

View File

@ -1,15 +1,15 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import shape1 from "../assets/img/banner/shaps1.png";
import shape2 from "../assets/img/banner/shaps2.png";
import shape3 from "../assets/img/banner/shaps3.png";
import shape4 from "../assets/img/banner/shaps4.png";
import shape5 from "../assets/img/banner/shaps5.png";
import shape6 from "../assets/img/banner/shaps6.png";
import shape7 from "../assets/img/banner/shaps7.png";
import shape1 from '../assets/img/banner/shaps1.png'
import shape2 from '../assets/img/banner/shaps2.png'
import shape3 from '../assets/img/banner/shaps3.png'
import shape4 from '../assets/img/banner/shaps4.png'
import shape5 from '../assets/img/banner/shaps5.png'
import shape6 from '../assets/img/banner/shaps6.png'
import shape7 from '../assets/img/banner/shaps7.png'
import bannerMoc from "../assets/img/banner/mockup.png";
import bannerMoc from '../assets/img/banner/mockup.png'
const BannerTwo = () => {
return (
@ -21,7 +21,11 @@ const BannerTwo = () => {
<div className="banner-text-inner">
<h1>Välkommen till den öppna skolplattformen</h1>
<p>
Vi tröttnade att vänta att Skolplattformen skulle bli användbar vi tog saken i egna händer och byggde en egen. Appen hämtar samma information som den gamla Skolplattformen men visar den ett snabbare och lättare sätt.
Vi tröttnade att vänta att Skolplattformen skulle bli
användbar vi tog saken i egna händer och byggde en egen.
Appen hämtar samma information som den gamla
Skolplattformen men visar den ett snabbare och lättare
sätt.
</p>
<a href="#" className="btn">
App Store
@ -51,7 +55,7 @@ const BannerTwo = () => {
</Container>
</div>
</div>
);
};
)
}
export default BannerTwo;
export default BannerTwo

View File

@ -1,51 +1,51 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import BlogPost from "./BlogPost";
import SectionTitle from "./SectionTitle";
import BlogPost from './BlogPost'
import SectionTitle from './SectionTitle'
import img1 from "../assets/img/blog/blog1.png";
import img2 from "../assets/img/blog/blog2.png";
import img3 from "../assets/img/blog/blog3.png";
import img1 from '../assets/img/blog/blog1.png'
import img2 from '../assets/img/blog/blog2.png'
import img3 from '../assets/img/blog/blog3.png'
const BLOG_HOME_DATA = [
{
title: "Pre and Post Launch Mobile App Marketing Pitfalls to Avoid",
title: 'Pre and Post Launch Mobile App Marketing Pitfalls to Avoid',
content:
"There are many variations of passages of available but majority have alteration in some by inject humour or random words.",
link: "/news-details",
date: "30",
month: "Sep",
author: "Admin",
commentCount: "2",
'There are many variations of passages of available but majority have alteration in some by inject humour or random words.',
link: '/news-details',
date: '30',
month: 'Sep',
author: 'Admin',
commentCount: '2',
image: img1,
btnClass: "blog-btn"
btnClass: 'blog-btn',
},
{
title: "Pre and Post Launch Mobile App Marketing Pitfalls to Avoid",
title: 'Pre and Post Launch Mobile App Marketing Pitfalls to Avoid',
content:
"There are many variations of passages of available but majority have alteration in some by inject humour or random words.",
link: "/news-details",
date: "30",
month: "Sep",
author: "Admin",
commentCount: "2",
'There are many variations of passages of available but majority have alteration in some by inject humour or random words.',
link: '/news-details',
date: '30',
month: 'Sep',
author: 'Admin',
commentCount: '2',
image: img2,
btnClass: "blog-btn"
btnClass: 'blog-btn',
},
{
title: "Pre and Post Launch Mobile App Marketing Pitfalls to Avoid",
title: 'Pre and Post Launch Mobile App Marketing Pitfalls to Avoid',
content:
"There are many variations of passages of available but majority have alteration in some by inject humour or random words.",
link: "/news-details",
date: "30",
month: "Sep",
author: "Admin",
commentCount: "2",
'There are many variations of passages of available but majority have alteration in some by inject humour or random words.',
link: '/news-details',
date: '30',
month: 'Sep',
author: 'Admin',
commentCount: '2',
image: img3,
btnClass: "blog-btn"
}
];
btnClass: 'blog-btn',
},
]
const BlogHome = () => {
return (
@ -78,7 +78,7 @@ const BlogHome = () => {
</Row>
</Container>
</section>
);
};
)
}
export default BlogHome;
export default BlogHome

View File

@ -1,5 +1,5 @@
import React from "react";
import Link from "next/link";
import React from 'react'
import Link from 'next/link'
const BlogPost = (props) => {
return (
@ -49,7 +49,7 @@ const BlogPost = (props) => {
</div>
</div>
</div>
);
};
)
}
export default BlogPost;
export default BlogPost

View File

@ -1,36 +1,36 @@
import React from "react";
import SwiperCore, { Autoplay } from "swiper";
import { Swiper, SwiperSlide } from "swiper/react";
import React from 'react'
import SwiperCore, { Autoplay } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/react'
SwiperCore.use([Autoplay]);
SwiperCore.use([Autoplay])
import img1 from "../assets/img/partner2.png";
import img1 from '../assets/img/partner2.png'
const Clients = () => {
const params = {
spaceBetween: 100,
loop: true,
autoplay: {
delay: 3000
delay: 3000,
},
breakpoints: {
0: {
slidesPerView: 1,
spaceBetween: 0
spaceBetween: 0,
},
500: {
spaceBetween: 50,
slidesPerView: 3
slidesPerView: 3,
},
768: {
spaceBetween: 50,
slidesPerView: 4
slidesPerView: 4,
},
992: {
slidesPerView: 5
slidesPerView: 5,
},
},
}
}
};
return (
<section className="pt-120 pb-120">
<div className="container">
@ -77,7 +77,7 @@ const Clients = () => {
</div>
</div>
</section>
);
};
)
}
export default Clients;
export default Clients

View File

@ -1,5 +1,5 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
const CtaOne = () => {
return (
@ -12,9 +12,7 @@ const CtaOne = () => {
Ladda ner appen idag &<br />
spara flera minuter varje dag
</h2>
<h3>
Du kommer inte att ångra dig.
</h3>
<h3>Du kommer inte att ångra dig.</h3>
<a href="#" className="btn">
App Store
</a>
@ -23,7 +21,7 @@ const CtaOne = () => {
</Row>
</Container>
</section>
);
};
)
}
export default CtaOne;
export default CtaOne

View File

@ -1,8 +1,8 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import img1 from "../assets/img/icons/solution1.svg";
import img2 from "../assets/img/girls.png";
import img1 from '../assets/img/icons/solution1.svg'
import img2 from '../assets/img/girls.png'
const CtaThree = () => {
return (
@ -13,7 +13,10 @@ const CtaThree = () => {
<div className="user-interact-inner">
<h2>Se summering för alla dina barn ett ställe</h2>
<p>
Vi har räknat, det tar flera minuter att en uppfattning om vad som händer i skolan imorgon för dina barn. I vår app kan du direkt se allt som är aktuellt för alla barnen en och samma skärm.
Vi har räknat, det tar flera minuter att en uppfattning om
vad som händer i skolan imorgon för dina barn. I vår app kan du
direkt se allt som är aktuellt för alla barnen en och samma
skärm.
</p>
<a href="#" className="btn">
App Store
@ -28,7 +31,7 @@ const CtaThree = () => {
</Row>
</Container>
</section>
);
};
)
}
export default CtaThree;
export default CtaThree

View File

@ -1,8 +1,8 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import img1 from "../assets/img/boys.png";
import img2 from "../assets/img/icons/goal.svg";
import img1 from '../assets/img/boys.png'
import img2 from '../assets/img/icons/goal.svg'
const CtaTwo = () => {
return (
@ -18,7 +18,9 @@ const CtaTwo = () => {
<div className="user-interact-inner">
<h2>Lika säkert</h2>
<p>
Ingen information om dina barn skickas till oss, all kommunikatoin går direkt mellan din telefon och Skolplattformens servrar. Du loggar in med BankID som vanligt.
Ingen information om dina barn skickas till oss, all
kommunikatoin går direkt mellan din telefon och Skolplattformens
servrar. Du loggar in med BankID som vanligt.
</p>
<a href="#" className="btn">
App Store
@ -28,7 +30,7 @@ const CtaTwo = () => {
</Row>
</Container>
</section>
);
};
)
}
export default CtaTwo;
export default CtaTwo

View File

@ -1,4 +1,4 @@
import React from "react";
import React from 'react'
const FeatureCard = (props) => {
return (
@ -9,7 +9,7 @@ const FeatureCard = (props) => {
<h5>{props.title}</h5>
<p>{props.text}</p>
</div>
);
};
)
}
export default FeatureCard;
export default FeatureCard

View File

@ -1,50 +1,49 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import SwiperCore, { Pagination, Autoplay } from "swiper";
import { Swiper, SwiperSlide } from "swiper/react";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import SwiperCore, { Pagination, Autoplay } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/react'
SwiperCore.use([Pagination, Autoplay]);
SwiperCore.use([Pagination, Autoplay])
import SectionTitle from "./SectionTitle";
import FeatureCard from "./FeatureCard";
import SectionTitle from './SectionTitle'
import FeatureCard from './FeatureCard'
import img1 from "../assets/img/icons/project-management.svg";
import img2 from "../assets/img/icons/solution.svg";
import img3 from "../assets/img/icons/planning.svg";
import img4 from "../assets/img/icons/goal.svg";
import img1 from '../assets/img/icons/project-management.svg'
import img2 from '../assets/img/icons/solution.svg'
import img3 from '../assets/img/icons/planning.svg'
import img4 from '../assets/img/icons/goal.svg'
const FEATURES_DATA = [
{
title: "Öppen källkod",
text:
"Har du egna förslag på förbättringar? Du kan hjälpa till.",
image: img1
title: 'Öppen källkod',
text: 'Har du egna förslag på förbättringar? Du kan hjälpa till.',
image: img1,
},
{
title: "Bygger på ny teknik",
title: 'Bygger på ny teknik',
text:
"Till skillnad från den gamla skolplattformen så bygger den öppna på senaste tekniken.",
image: img2
'Till skillnad från den gamla skolplattformen så bygger den öppna på senaste tekniken.',
image: img2,
},
{
title: "Det här är bara början",
title: 'Det här är bara början',
text:
"Vi hoppas med denna app inspirera till fler initiativ i hela den offentliga digitaliseringen.",
image: img4
'Vi hoppas med denna app inspirera till fler initiativ i hela den offentliga digitaliseringen.',
image: img4,
},
{
title: "Kan byggas ut till fler skolsystem",
title: 'Kan byggas ut till fler skolsystem',
text:
"Just nu stöds bara Stockholm Stads skolplattform men med din hjälp kan fler skolplattformar integreras så att du slipper logga in i flera appar om du har barn i olika skolor.",
image: img3
'Just nu stöds bara Stockholm Stads skolplattform men med din hjälp kan fler skolplattformar integreras så att du slipper logga in i flera appar om du har barn i olika skolor.',
image: img3,
},
{
title: "Skolan är allas vårt ansvar",
title: 'Skolan är allas vårt ansvar',
text:
"Vi insåg att klaga inte hjälper så mycket så vi tog tag i problemet istället. Häng med!",
image: img1
'Vi insåg att klaga inte hjälper så mycket så vi tog tag i problemet istället. Häng med!',
image: img1,
},
];
]
const Features = () => {
const swiperParams = {
@ -53,39 +52,39 @@ const Features = () => {
centeredSlides: true,
spaceBetween: 30,
autoplay: {
delay: 3000
delay: 3000,
},
pagination: {
el: "#features-paginations",
type: "bullets",
clickable: true
el: '#features-paginations',
type: 'bullets',
clickable: true,
},
loop: true,
breakpoints: {
0: {
slidesPerView: 1,
slidesPerGroup: 1,
spaceBetween: 0
spaceBetween: 0,
},
575: {
slidesPerView: 1,
slidesPerGroup: 1,
spaceBetween: 0
spaceBetween: 0,
},
768: {
slidesPerGroup: 2,
slidesPerView: 2
slidesPerView: 2,
},
991: {
slidesPerView: 2,
slidesPerGroup: 2
slidesPerGroup: 2,
},
992: {
slidesPerGroup: 3,
slidesPerView: 3
slidesPerView: 3,
},
},
}
}
};
return (
<section className="pb-110" id="features">
<Container>
@ -118,7 +117,7 @@ const Features = () => {
</Row>
</Container>
</section>
);
};
)
}
export default Features;
export default Features

View File

@ -1,6 +1,6 @@
import React from "react";
import footerBg from "../assets/img/footer-bg.png";
import footerLogo from "../assets/img/logo.png";
import React from 'react'
import footerBg from '../assets/img/footer-bg.png'
import footerLogo from '../assets/img/logo.png'
const Footer = () => {
return (
@ -19,8 +19,12 @@ const Footer = () => {
</a>
</div>
<p>
Skolplattformen utvecklas av föräldrar för föräldrar. Vill du hjälpa till? Kom till vår <a href="https://github.com/kolplattformen">Github</a>, där finns all källkod och även uppgifter att ta tag i, vi behöver hjälp med allt från illustrationer, UX, Design och programmering. Vi har även en Discord där vi hjälps åt.
Skolplattformen utvecklas av föräldrar för föräldrar. Vill du
hjälpa till? Kom till vår{' '}
<a href="https://github.com/kolplattformen">Github</a>, där
finns all källkod och även uppgifter att ta tag i, vi behöver
hjälp med allt från illustrationer, UX, Design och
programmering. Vi har även en Discord där vi hjälps åt.
</p>
<div className="footer-social-area">
@ -62,21 +66,26 @@ const Footer = () => {
<span>
<i className="fa fa-twitter"></i>
</span>
<a href="https://twitter.com/@landgren">Christian Landgren</a>
<a href="https://twitter.com/@landgren">
Christian Landgren
</a>
</li>
<li>
<span>
<i className="fa fa-twitter"></i>
</span>
<a href="https://twitter.com/@erikhellman">Erik Hellman</a>
<a href="https://twitter.com/@erikhellman">
Erik Hellman
</a>
</li>
<li>
<span>
<i className="fa fa-twitter"></i>
</span>
<a href="https://twitter.com/@johanobrink">Johan Öbrink</a>
<a href="https://twitter.com/@johanobrink">
Johan Öbrink
</a>
</li>
</ul>
</div>
</div>
@ -159,7 +168,7 @@ const Footer = () => {
</div>
</div>
</footer>
);
};
)
}
export default Footer;
export default Footer

View File

@ -1,38 +1,38 @@
import React, { useState } from "react";
import { Container, Row, Col } from "react-bootstrap";
import React, { useState } from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import CountUp from "react-countup";
import VisibilitySensor from "react-visibility-sensor";
import CountUp from 'react-countup'
import VisibilitySensor from 'react-visibility-sensor'
const FUNFACTS_DATA = [
{
count: "1000000000",
title: "kronor kostade orginalet"
count: '1000000000',
title: 'kronor kostade orginalet',
},
{
count: "7",
title: "år att utveckla"
count: '7',
title: 'år att utveckla',
},
{
count: "10",
title: "kronor kostar vår app :)"
count: '10',
title: 'kronor kostar vår app :)',
},
{
count: "5",
title: "veckors utveckling"
}
];
count: '5',
title: 'veckors utveckling',
},
]
const FunFacts = () => {
const [counter, setCounter] = useState({
startCounter: false
});
startCounter: false,
})
const onVisibilityChange = (isVisible) => {
if (isVisible) {
setCounter({ startCounter: true });
setCounter({ startCounter: true })
}
}
};
return (
<section className="border-top pt-120 pb-80">
<Container>
@ -56,7 +56,7 @@ const FunFacts = () => {
</Row>
</Container>
</section>
);
};
)
}
export default FunFacts;
export default FunFacts

View File

@ -1,53 +1,53 @@
import React, { useState, useEffect } from "react";
import NavLinks from "./NavLinks";
import React, { useState, useEffect } from 'react'
import NavLinks from './NavLinks'
import headerLogo from "../assets/img/logo.png";
import headerLogo from '../assets/img/logo.png'
const HeaderHome = (props) => {
const [sticky, setSticky] = useState(false);
const [sticky, setSticky] = useState(false)
const handleScroll = () => {
if (window.scrollY > 70) {
setSticky(true);
setSticky(true)
} else if (window.scrollY < 70) {
setSticky(false);
setSticky(false)
}
}
};
useEffect(() => {
window.addEventListener("scroll", handleScroll);
mobileMenu();
window.addEventListener('scroll', handleScroll)
mobileMenu()
return () => {
mobileMenu();
window.removeEventListener("scroll", handleScroll);
};
});
mobileMenu()
window.removeEventListener('scroll', handleScroll)
}
})
const mobileMenu = () => {
document
.querySelector(".side-menu__toggler")
.addEventListener("click", function (e) {
document.querySelector(".side-menu__block").classList.toggle("active");
e.preventDefault();
});
.querySelector('.side-menu__toggler')
.addEventListener('click', function (e) {
document.querySelector('.side-menu__block').classList.toggle('active')
e.preventDefault()
})
//Close Mobile Menu
let sideMenuCloser = document.querySelectorAll(
".side-menu__close-btn, .side-menu__block-overlay"
);
'.side-menu__close-btn, .side-menu__block-overlay'
)
sideMenuCloser.forEach((sideMenuCloserBtn) => {
sideMenuCloserBtn.addEventListener("click", function (e) {
document.querySelector(".side-menu__block").classList.remove("active");
e.preventDefault();
});
});
};
sideMenuCloserBtn.addEventListener('click', function (e) {
document.querySelector('.side-menu__block').classList.remove('active')
e.preventDefault()
})
})
}
return (
<header className={`header ${props.extraClassName}`}>
<div
className={`main-header ${sticky === true ? "sticky fadeInDown" : " "}`}
className={`main-header ${sticky === true ? 'sticky fadeInDown' : ' '}`}
>
<div className="main-menu-wrap">
<div className="container">
@ -78,7 +78,11 @@ const HeaderHome = (props) => {
</div>
<div className="col-lg-3 col-md-4 col-sm-5 d-md-block d-none">
<div className="urgent-call text-right">
<a href="#" className="btn" onclick="alert('Håll ut! Appen kommer snart på App Store och Google Play')">
<a
href="#"
className="btn"
onclick="alert('Håll ut! Appen kommer snart på App Store och Google Play')"
>
Ladda ner
</a>
</div>
@ -88,7 +92,7 @@ const HeaderHome = (props) => {
</div>
</div>
</header>
);
};
)
}
export default HeaderHome;
export default HeaderHome

View File

@ -1,55 +1,55 @@
import React, { useState, useEffect } from "react";
import NavLinks from "./NavLinks";
import React, { useState, useEffect } from 'react'
import NavLinks from './NavLinks'
import headerLogo from "../assets/img/logo.png";
import headerLogoSticky from "../assets/img/logo.png";
import headerLogo from '../assets/img/logo.png'
import headerLogoSticky from '../assets/img/logo.png'
const HeaderHome = (props) => {
const [sticky, setSticky] = useState(false);
const [sticky, setSticky] = useState(false)
const handleScroll = () => {
if (window.scrollY > 70) {
setSticky(true);
setSticky(true)
} else if (window.scrollY < 70) {
setSticky(false);
setSticky(false)
}
}
};
useEffect(() => {
window.addEventListener("scroll", handleScroll);
mobileMenu();
window.addEventListener('scroll', handleScroll)
mobileMenu()
return () => {
mobileMenu();
window.removeEventListener("scroll", handleScroll);
};
});
mobileMenu()
window.removeEventListener('scroll', handleScroll)
}
})
const mobileMenu = () => {
document
.querySelector(".side-menu__toggler")
.addEventListener("click", function (e) {
document.querySelector(".side-menu__block").classList.toggle("active");
e.preventDefault();
});
.querySelector('.side-menu__toggler')
.addEventListener('click', function (e) {
document.querySelector('.side-menu__block').classList.toggle('active')
e.preventDefault()
})
//Close Mobile Menu
let sideMenuCloser = document.querySelectorAll(
".side-menu__close-btn, .side-menu__block-overlay"
);
'.side-menu__close-btn, .side-menu__block-overlay'
)
sideMenuCloser.forEach((sideMenuCloserBtn) => {
sideMenuCloserBtn.addEventListener("click", function (e) {
document.querySelector(".side-menu__block").classList.remove("active");
e.preventDefault();
});
});
};
sideMenuCloserBtn.addEventListener('click', function (e) {
document.querySelector('.side-menu__block').classList.remove('active')
e.preventDefault()
})
})
}
return (
<header className={`header ${props.extraClassName}`}>
<div
className={`main-header inner-header header-2 ${
sticky === true ? "sticky fadeInDown" : " "
sticky === true ? 'sticky fadeInDown' : ' '
}`}
>
<div className="main-menu-wrap">
@ -86,7 +86,11 @@ const HeaderHome = (props) => {
</div>
<div className="col-lg-3 col-md-4 col-sm-5 d-md-block d-none">
<div className="urgent-call text-right">
<a href="#" className="btn" onclick="alert('Håll ut! Appen kommer snart på App Store och Google Play')">
<a
href="#"
className="btn"
onclick="alert('Håll ut! Appen kommer snart på App Store och Google Play')"
>
Ladda ner
</a>
</div>
@ -96,7 +100,7 @@ const HeaderHome = (props) => {
</div>
</div>
</header>
);
};
)
}
export default HeaderHome;
export default HeaderHome

View File

@ -1,26 +1,26 @@
import React, { useState, useEffect } from "react";
import Head from "next/head";
import { Link as ScrollLink, animateScroll as scroll } from "react-scroll";
import React, { useState, useEffect } from 'react'
import Head from 'next/head'
import { Link as ScrollLink, animateScroll as scroll } from 'react-scroll'
import favImg from "../assets/img/favicon.png";
import favImg from '../assets/img/favicon.png'
const Layout = (props) => {
const [scrollTop, setScrollTop] = useState(false);
const [scrollTop, setScrollTop] = useState(false)
const handleScrollTop = () => {
if (window.scrollY > 70) {
setScrollTop(true);
setScrollTop(true)
} else if (window.scrollY < 70) {
setScrollTop(false);
setScrollTop(false)
}
}
};
useEffect(() => {
window.addEventListener("scroll", handleScrollTop);
window.addEventListener('scroll', handleScrollTop)
return () => {
window.removeEventListener("scroll", handleScrollTop);
};
});
window.removeEventListener('scroll', handleScrollTop)
}
})
return (
<div>
<Head>
@ -36,7 +36,7 @@ const Layout = (props) => {
{props.children}
</div>
{scrollTop === true ? (
<div class="back-to-top show" style={{ cursor: "pointer" }}>
<div class="back-to-top show" style={{ cursor: 'pointer' }}>
<ScrollLink
to="wrapper"
smooth={true}
@ -48,7 +48,7 @@ const Layout = (props) => {
</div>
) : null}
</div>
);
};
)
}
export default Layout;
export default Layout

View File

@ -1,5 +1,5 @@
import React from "react";
import NavLinks from "./NavLinks";
import React from 'react'
import NavLinks from './NavLinks'
const MobileMenu = () => {
return (
@ -21,10 +21,14 @@ const MobileMenu = () => {
<div className="side-menu__sep"></div>
<div className="side-menu__content">
<p>
Skolplattformen.org är en öppen programvara som byggs av frustrerade föräldrar. Hjälp till du också. Kontakta oss nedan:
Skolplattformen.org är en öppen programvara som byggs av frustrerade
föräldrar. Hjälp till du också. Kontakta oss nedan:
</p>
<p>
<a href="mailto:info@skolplattformen.org">info@skolplattformen.org</a> <br />
<a href="mailto:info@skolplattformen.org">
info@skolplattformen.org
</a>{' '}
<br />
<a href="tel:+46707755831">+46 70 775 58 31</a>
</p>
<div className="side-menu__social">
@ -44,7 +48,7 @@ const MobileMenu = () => {
</div>
</div>
</div>
);
};
)
}
export default MobileMenu;
export default MobileMenu

View File

@ -1,14 +1,14 @@
import React, { useState, useEffect } from "react";
import Link from "next/link";
import { Link as ScrollLink, animateScroll as scroll } from "react-scroll";
import React, { useState, useEffect } from 'react'
import Link from 'next/link'
import { Link as ScrollLink, animateScroll as scroll } from 'react-scroll'
const NavLinks = () => {
// const [dropdownStatus, setDropdownStatus] = useState(false);
const handleDropdownStatus = (e) => {
// setDropdownStatus(!dropdownStatus);
let clickedItem = e.currentTarget.parentNode;
clickedItem.querySelector(".dropdown-list").classList.toggle("show");
};
let clickedItem = e.currentTarget.parentNode
clickedItem.querySelector('.dropdown-list').classList.toggle('show')
}
return (
<ul className="main-nav__navigation-box">
<li className="dropdown">
@ -69,7 +69,7 @@ const NavLinks = () => {
</ScrollLink>
</li>
</ul>
);
};
)
}
export default NavLinks;
export default NavLinks

View File

@ -1,4 +1,4 @@
import React from "react";
import React from 'react'
const PageBanner = (props) => {
return (
@ -21,7 +21,7 @@ const PageBanner = (props) => {
</div>
</div>
</div>
);
};
)
}
export default PageBanner;
export default PageBanner

View File

@ -1,4 +1,4 @@
import React from "react";
import React from 'react'
const Pagination = () => {
return (
@ -26,7 +26,7 @@ const Pagination = () => {
</a>
</li>
</ul>
);
};
)
}
export default Pagination;
export default Pagination

View File

@ -1,11 +1,11 @@
import React, { useState } from "react";
import React, { useState } from 'react'
const Pricing = () => {
const [pricing, setPricing] = useState(false);
const [pricing, setPricing] = useState(false)
const handleClick = (e) => {
e.preventDefault();
setPricing(!pricing);
};
e.preventDefault()
setPricing(!pricing)
}
return (
<section className="pb-90" id="pricing">
<div className="container">
@ -14,7 +14,10 @@ const Pricing = () => {
<div className="section-title text-center">
<h2>Vad kostar det och varför är det inte gratis?</h2>
<p>
Vi som bygger appen vill gärna fortsätta vidareutveckla den och även ha möjlighet att ge ersättning till de som hjälper till. Därför kostar det 10kr att ladda ner appen. Det är en engångskostnad och hjälper oss att göra appen bättre.
Vi som bygger appen vill gärna fortsätta vidareutveckla den och
även ha möjlighet att ge ersättning till de som hjälper till.
Därför kostar det 10kr att ladda ner appen. Det är en
engångskostnad och hjälper oss att göra appen bättre.
</p>
</div>
</div>
@ -296,7 +299,7 @@ const Pricing = () => {
</div>
</div>
</section>
);
};
)
}
export default Pricing;
export default Pricing

View File

@ -1,4 +1,4 @@
import React from "react";
import React from 'react'
const SectionTitle = (props) => {
return (
@ -6,7 +6,7 @@ const SectionTitle = (props) => {
<h2>{props.title}</h2>
<p>{props.text}</p>
</div>
);
};
)
}
export default SectionTitle;
export default SectionTitle

View File

@ -1,8 +1,8 @@
import React from "react";
import React from 'react'
import postImg1 from "../assets/img/blog/latest-blog1.png";
import postImg2 from "../assets/img/blog/latest-blog2.png";
import postImg3 from "../assets/img/blog/latest-blog3.png";
import postImg1 from '../assets/img/blog/latest-blog1.png'
import postImg2 from '../assets/img/blog/latest-blog2.png'
import postImg3 from '../assets/img/blog/latest-blog3.png'
const Sidebar = () => {
return (
@ -110,7 +110,7 @@ const Sidebar = () => {
</div>
</div>
</aside>
);
};
)
}
export default Sidebar;
export default Sidebar

View File

@ -1,48 +1,48 @@
import React, { useState } from "react";
import SwiperCore, { Autoplay, Thumbs, Navigation } from "swiper";
import { Swiper, SwiperSlide } from "swiper/react";
import React, { useState } from 'react'
import SwiperCore, { Autoplay, Thumbs, Navigation } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/react'
import img1 from "../assets/img/wass.png";
import img2 from "../assets/img/karin.jpg";
import img3 from "../assets/img/per.jpg";
import img4 from "../assets/img/niels.jpg";
import img1 from '../assets/img/wass.png'
import img2 from '../assets/img/karin.jpg'
import img3 from '../assets/img/per.jpg'
import img4 from '../assets/img/niels.jpg'
SwiperCore.use([Autoplay, Thumbs, Navigation]);
SwiperCore.use([Autoplay, Thumbs, Navigation])
const Testimonials = () => {
const [thumbsSwiper, setThumbsSwiper] = useState(null);
const [thumbsSwiper, setThumbsSwiper] = useState(null)
const testimmonialsParams = {
slidesPerView: 1,
spaceBetween: 0,
navigation: {
nextEl: "#testi-swiper-button-next",
prevEl: "#testi-swiper-button-prev"
nextEl: '#testi-swiper-button-next',
prevEl: '#testi-swiper-button-prev',
},
autoplay: {
delay: 3000
delay: 3000,
},
}
};
const thumbnailsParam = {
slidesPerView: 3,
spaceBetween: 20,
autoplay: {
delay: 3000
delay: 3000,
},
breakpoints: {
0: {
slidesPerView: 2
slidesPerView: 2,
},
500: {
slidesPerView: 2
slidesPerView: 2,
},
768: {
slidesPerView: 2
slidesPerView: 2,
},
992: {
slidesPerView: 3
slidesPerView: 3,
},
},
}
}
};
return (
<section className="pt-120 pb-110 bg-2">
<div className="container">
@ -79,32 +79,44 @@ const Testimonials = () => {
>
<SwiperSlide className="single-author-comment">
<h4>
"Det känns bra att mänskligheten nu befrias från upphandlingshaveriets bojor. Framtiden är här! Och den kostade nästan ingenting. Öppen data är kärlek."
"Det känns bra att mänskligheten nu befrias från
upphandlingshaveriets bojor. Framtiden är här! Och den
kostade nästan ingenting. Öppen data är kärlek."
</h4>
<p>Fredrik Wass, förälder</p>
</SwiperSlide>
<SwiperSlide className="single-author-comment">
<h4>
"Oftast när jag behöver kolla upp något är jag stressad och på språng. Om det tar tid att logga in och leta så struntar jag till sist i det."
"Oftast när jag behöver kolla upp något är jag stressad och
språng. Om det tar tid att logga in och leta struntar
jag till sist i det."
</h4>
<p>Karin Nygårds, lärare och förälder</p>
</SwiperSlide>
<SwiperSlide className="single-author-comment">
<h4>
Christian Landgren la upp en bild sin Skrota Skolplattformen-keps, det fick mig att dra igång en Facebook-grupp som utvecklades till ett slags hackathon där Christian och några gjorde en app av Skolplattformen, som den borde vara. nu behövs inte den där kepsen längre, här är appen.
Christian Landgren la upp en bild sin Skrota
Skolplattformen-keps, det fick mig att dra igång en
Facebook-grupp som utvecklades till ett slags hackathon där
Christian och några gjorde en app av Skolplattformen, som
den borde vara. nu behövs inte den där kepsen längre, här
är appen.
</h4>
<p>Per Strömbeck, förälder</p>
</SwiperSlide>
<SwiperSlide className="single-author-comment">
<h4>
Digitala lösningar inom skolan är som många andra områden inom det offentliga varken användarvänliga eller effektiva. Med öppen källkod och öppen data kan vi snabbare och billigare till bättre lösningar. Och dessutom öka insynen i hur systemen som formar vår vardag fungerar. Öppna Skolplattformen är ett bra exempel detta!
Digitala lösningar inom skolan är som många andra områden
inom det offentliga varken användarvänliga eller effektiva.
Med öppen källkod och öppen data kan vi snabbare och
billigare till bättre lösningar. Och dessutom öka insynen
i hur systemen som formar vår vardag fungerar. Öppna
Skolplattformen är ett bra exempel detta!
</h4>
<p>Niels PaarupPetersen, Riksdagsledamot C</p>
</SwiperSlide>
</Swiper>
<div className="testimonial-author-comment-nav">
<button id="testi-swiper-button-prev">
@ -119,7 +131,7 @@ const Testimonials = () => {
</div>
</div>
</section>
);
};
)
}
export default Testimonials;
export default Testimonials

View File

@ -1,16 +1,16 @@
import React, { useState } from "react";
import ModalVideo from "react-modal-video";
import React, { useState } from 'react'
import ModalVideo from 'react-modal-video'
const Video = () => {
const [open, setOpen] = useState({
isOpen: false
});
isOpen: false,
})
const openModal = (e) => {
e.preventDefault();
e.preventDefault()
setOpen({
isOpen: true
});
};
isOpen: true,
})
}
return (
<section className="app-video">
<ModalVideo
@ -25,7 +25,7 @@ const Video = () => {
<div className="theme-video-wrap">
<span
onClick={openModal}
style={{ cursor: "pointer" }}
style={{ cursor: 'pointer' }}
className="video-btn"
data-popup="video"
>
@ -36,7 +36,7 @@ const Video = () => {
</div>
</div>
</section>
);
};
)
}
export default Video;
export default Video

View File

@ -1,2 +1,2 @@
const withImages = require('next-images')
module.exports = withImages();
module.exports = withImages()

View File

@ -21,5 +21,8 @@
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"devDependencies": {
"prettier": "2.2.1"
}
}

View File

@ -1,12 +1,12 @@
import "bootstrap/dist/css/bootstrap.min.css";
import "react-modal-video/css/modal-video.min.css";
import "../assets/css/font-awesome.min.css";
import "swiper/swiper-bundle.min.css";
import "../assets/css/style.css";
import "../assets/css/responsive.css";
import "../assets/css/custom.css";
import 'bootstrap/dist/css/bootstrap.min.css'
import 'react-modal-video/css/modal-video.min.css'
import '../assets/css/font-awesome.min.css'
import 'swiper/swiper-bundle.min.css'
import '../assets/css/style.css'
import '../assets/css/responsive.css'
import '../assets/css/custom.css'
// This default export is required in a new `pages/_app.js` file.
export default function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />;
return <Component {...pageProps} />
}

View File

@ -1,20 +1,20 @@
import React from "react";
import Layout from "../components/Layout";
import HeaderTwo from "../components/HeaderTwo";
import MobileMenu from "../components/MobileMenu";
import BannerTwo from "../components/BannerTwo";
import FunFacts from "../components/FunFacts";
import CtaTwo from "../components/CtaTwo";
import CtaThree from "../components/CtaThree";
import Video from "../components/Video";
import Pricing from "../components/Pricing";
import AppShots from "../components/AppShots";
import Features from "../components/Features";
import Testimonials from "../components/Testimonials";
import BlogHome from "../components/BlogHome";
import Clients from "../components/Clients";
import CtaOne from "../components/CtaOne";
import Footer from "../components/Footer";
import React from 'react'
import Layout from '../components/Layout'
import HeaderTwo from '../components/HeaderTwo'
import MobileMenu from '../components/MobileMenu'
import BannerTwo from '../components/BannerTwo'
import FunFacts from '../components/FunFacts'
import CtaTwo from '../components/CtaTwo'
import CtaThree from '../components/CtaThree'
import Video from '../components/Video'
import Pricing from '../components/Pricing'
import AppShots from '../components/AppShots'
import Features from '../components/Features'
import Testimonials from '../components/Testimonials'
import BlogHome from '../components/BlogHome'
import Clients from '../components/Clients'
import CtaOne from '../components/CtaOne'
import Footer from '../components/Footer'
const HomePageTwo = () => {
return (
@ -35,7 +35,7 @@ const HomePageTwo = () => {
<CtaOne />
<Footer />
</Layout>
);
};
)
}
export default HomePageTwo;
export default HomePageTwo

View File

@ -1,20 +1,20 @@
import React from "react";
import Layout from "../components/Layout";
import Header from "../components/Header";
import MobileMenu from "../components/MobileMenu";
import Banner from "../components/Banner";
import FunFacts from "../components/FunFacts";
import CtaTwo from "../components/CtaTwo";
import CtaThree from "../components/CtaThree";
import Video from "../components/Video";
import Pricing from "../components/Pricing";
import AppShots from "../components/AppShots";
import Features from "../components/Features";
import Testimonials from "../components/Testimonials";
import BlogHome from "../components/BlogHome";
import Clients from "../components/Clients";
import CtaOne from "../components/CtaOne";
import Footer from "../components/Footer";
import React from 'react'
import Layout from '../components/Layout'
import Header from '../components/Header'
import MobileMenu from '../components/MobileMenu'
import Banner from '../components/Banner'
import FunFacts from '../components/FunFacts'
import CtaTwo from '../components/CtaTwo'
import CtaThree from '../components/CtaThree'
import Video from '../components/Video'
import Pricing from '../components/Pricing'
import AppShots from '../components/AppShots'
import Features from '../components/Features'
import Testimonials from '../components/Testimonials'
import BlogHome from '../components/BlogHome'
import Clients from '../components/Clients'
import CtaOne from '../components/CtaOne'
import Footer from '../components/Footer'
const HomePage = () => {
return (
@ -31,7 +31,7 @@ const HomePage = () => {
<Testimonials />
<Footer />
</Layout>
);
};
)
}
export default HomePage;
export default HomePage

View File

@ -1,18 +1,18 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import Link from "next/link";
import Layout from "../components/Layout";
import HeaderTwo from "../components/HeaderTwo";
import MobileMenu from "../components/MobileMenu";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import Link from 'next/link'
import Layout from '../components/Layout'
import HeaderTwo from '../components/HeaderTwo'
import MobileMenu from '../components/MobileMenu'
import PageBanner from "../components/PageBanner";
import Sidebar from "../components/Sidebar";
import Footer from "../components/Footer";
import PageBanner from '../components/PageBanner'
import Sidebar from '../components/Sidebar'
import Footer from '../components/Footer'
import img1 from "../assets/img/blog/list1.png";
import authorImage from "../assets/img/blog/blog-author.png";
import commentAuthor1 from "../assets/img/blog/comment-author.png";
import commentAuthor2 from "../assets/img/blog/comment-author2.png";
import img1 from '../assets/img/blog/list1.png'
import authorImage from '../assets/img/blog/blog-author.png'
import commentAuthor1 from '../assets/img/blog/comment-author.png'
import commentAuthor2 from '../assets/img/blog/comment-author2.png'
const NewsDetails = () => {
return (
@ -229,7 +229,7 @@ const NewsDetails = () => {
</section>
<Footer />
</Layout>
);
};
)
}
export default NewsDetails;
export default NewsDetails

View File

@ -1,69 +1,69 @@
import React from "react";
import { Container, Row, Col } from "react-bootstrap";
import Layout from "../components/Layout";
import HeaderTwo from "../components/HeaderTwo";
import MobileMenu from "../components/MobileMenu";
import PageBanner from "../components/PageBanner";
import BlogPost from "../components/BlogPost";
import Pagination from "../components/Pagination";
import Sidebar from "../components/Sidebar";
import Footer from "../components/Footer";
import React from 'react'
import { Container, Row, Col } from 'react-bootstrap'
import Layout from '../components/Layout'
import HeaderTwo from '../components/HeaderTwo'
import MobileMenu from '../components/MobileMenu'
import PageBanner from '../components/PageBanner'
import BlogPost from '../components/BlogPost'
import Pagination from '../components/Pagination'
import Sidebar from '../components/Sidebar'
import Footer from '../components/Footer'
import img1 from "../assets/img/blog/list1.png";
import img2 from "../assets/img/blog/list2.png";
import img3 from "../assets/img/blog/list3.png";
import img4 from "../assets/img/blog/list4.png";
import img1 from '../assets/img/blog/list1.png'
import img2 from '../assets/img/blog/list2.png'
import img3 from '../assets/img/blog/list3.png'
import img4 from '../assets/img/blog/list4.png'
const BLOG_DATA = [
{
title: "Pre and Post Launch Mobile App Marketing Pitfalls to Avoid",
title: 'Pre and Post Launch Mobile App Marketing Pitfalls to Avoid',
content:
"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of you need to be sure there isn't anything embarrassing hidden in the middle of text.",
link: "/news-details",
date: "30",
month: "Sep",
author: "Admin",
commentCount: "2",
link: '/news-details',
date: '30',
month: 'Sep',
author: 'Admin',
commentCount: '2',
image: img1,
btnClass: "btn"
btnClass: 'btn',
},
{
title: "Pre and Post Launch Mobile App Marketing Pitfalls to Avoid",
title: 'Pre and Post Launch Mobile App Marketing Pitfalls to Avoid',
content:
"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of you need to be sure there isn't anything embarrassing hidden in the middle of text.",
link: "/news-details",
date: "30",
month: "Sep",
author: "Admin",
commentCount: "2",
link: '/news-details',
date: '30',
month: 'Sep',
author: 'Admin',
commentCount: '2',
image: img2,
btnClass: "btn"
btnClass: 'btn',
},
{
title: "Pre and Post Launch Mobile App Marketing Pitfalls to Avoid",
title: 'Pre and Post Launch Mobile App Marketing Pitfalls to Avoid',
content:
"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of you need to be sure there isn't anything embarrassing hidden in the middle of text.",
link: "/news-details",
date: "30",
month: "Sep",
author: "Admin",
commentCount: "2",
link: '/news-details',
date: '30',
month: 'Sep',
author: 'Admin',
commentCount: '2',
image: img3,
btnClass: "btn"
btnClass: 'btn',
},
{
title: "Pre and Post Launch Mobile App Marketing Pitfalls to Avoid",
title: 'Pre and Post Launch Mobile App Marketing Pitfalls to Avoid',
content:
"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of you need to be sure there isn't anything embarrassing hidden in the middle of text.",
link: "/news-details",
date: "30",
month: "Sep",
author: "Admin",
commentCount: "2",
link: '/news-details',
date: '30',
month: 'Sep',
author: 'Admin',
commentCount: '2',
image: img4,
btnClass: "btn"
}
];
btnClass: 'btn',
},
]
const NewsPage = () => {
return (
@ -101,7 +101,7 @@ const NewsPage = () => {
</section>
<Footer />
</Layout>
);
};
)
}
export default NewsPage;
export default NewsPage