From 7069ee8c2188bbd132a0f9b6fe184668acfa2c34 Mon Sep 17 00:00:00 2001 From: Rickard Natt och Dag Date: Fri, 5 Feb 2021 10:09:42 +0100 Subject: [PATCH] Add Prettier --- packages/site/.prettierrc | 10 + packages/site/components/AppShots.js | 352 ++++++------- packages/site/components/Banner.js | 191 +++---- packages/site/components/BannerTwo.js | 118 ++--- packages/site/components/BlogHome.js | 168 +++---- packages/site/components/BlogPost.js | 110 ++-- packages/site/components/Clients.js | 166 +++---- packages/site/components/CtaOne.js | 56 +-- packages/site/components/CtaThree.js | 71 +-- packages/site/components/CtaTwo.js | 70 +-- packages/site/components/FeatureCard.js | 30 +- packages/site/components/Features.js | 247 +++++---- packages/site/components/Footer.js | 339 +++++++------ packages/site/components/FunFacts.js | 124 ++--- packages/site/components/Header.js | 192 +++---- packages/site/components/HeaderTwo.js | 208 ++++---- packages/site/components/Layout.js | 108 ++-- packages/site/components/MobileMenu.js | 104 ++-- packages/site/components/NavLinks.js | 150 +++--- packages/site/components/PageBanner.js | 54 +- packages/site/components/Pagination.js | 64 +-- packages/site/components/Pricing.js | 607 ++++++++++++----------- packages/site/components/SectionTitle.js | 24 +- packages/site/components/Sidebar.js | 232 ++++----- packages/site/components/Testimonials.js | 262 +++++----- packages/site/components/Video.js | 84 ++-- packages/site/next.config.js | 4 +- packages/site/package.json | 3 + packages/site/pages/_app.js | 24 +- packages/site/pages/index-2.js | 82 +-- packages/site/pages/index.js | 74 +-- packages/site/pages/news-details.js | 470 +++++++++--------- packages/site/pages/news.js | 214 ++++---- 33 files changed, 2536 insertions(+), 2476 deletions(-) create mode 100644 packages/site/.prettierrc diff --git a/packages/site/.prettierrc b/packages/site/.prettierrc new file mode 100644 index 00000000..da36fd16 --- /dev/null +++ b/packages/site/.prettierrc @@ -0,0 +1,10 @@ +{ + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": false, + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "jsxBracketSameLine": false +} diff --git a/packages/site/components/AppShots.js b/packages/site/components/AppShots.js index ad59dc3d..c668b785 100644 --- a/packages/site/components/AppShots.js +++ b/packages/site/components/AppShots.js @@ -1,176 +1,176 @@ -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]); - -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"; - -const AppShots = () => { - const swiperParams = { - speed: 1000, - spaceBetween: 30, - autoplay: { - delay: 3000, - disableOnInteraction: false - }, - pagination: { - el: "#appshot-paginations", - type: "bullets", - clickable: "true" - }, - slidesPerView: 5, - // Responsive breakpoints - breakpoints: { - 0: { - slidesPerGroup: 2, - slidesPerView: 2 - }, - 767: { - slidesPerGroup: 3, - slidesPerView: 3 - }, - 991: { - slidesPerGroup: 2, - slidesPerView: 3 - }, - 1499: { - slidesPerGroup: 5, - slidesPerView: 5 - } - } - }; - return ( -
- - - - - - - - -
- - -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
-
-
-
- -
- ); -}; - -export default AppShots; +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]) + +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' + +const AppShots = () => { + const swiperParams = { + speed: 1000, + spaceBetween: 30, + autoplay: { + delay: 3000, + disableOnInteraction: false, + }, + pagination: { + el: '#appshot-paginations', + type: 'bullets', + clickable: 'true', + }, + slidesPerView: 5, + // Responsive breakpoints + breakpoints: { + 0: { + slidesPerGroup: 2, + slidesPerView: 2, + }, + 767: { + slidesPerGroup: 3, + slidesPerView: 3, + }, + 991: { + slidesPerGroup: 2, + slidesPerView: 3, + }, + 1499: { + slidesPerGroup: 5, + slidesPerView: 5, + }, + }, + } + return ( +
+ + + + + + + + +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ +
+ ) +} + +export default AppShots diff --git a/packages/site/components/Banner.js b/packages/site/components/Banner.js index e9ae29fb..f62d85ec 100644 --- a/packages/site/components/Banner.js +++ b/packages/site/components/Banner.js @@ -1,93 +1,98 @@ -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 bannerMoc from "../assets/img/banner/mockup.png"; - -const Banner = () => { - return ( -
-
- - - -
-
-
- - - - - - - -
-
- -

Öppna Skolplattformen

-

- Oavsett om du har tre eller sju barn - det är mycket att hålla reda på. 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. Så vi har byggt en bättre. - - Med all information du behöver som förälder. Snabbare och framförallt - mycket mindre krångel. -

-

- Appen är klar och kommer att dyka upp på App Store och Google Play Store vilken dag som helst. -

- - App Store - - - Mer info - -
- - -
- -
- -
-
-
-
- ); -}; - -export default Banner; +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 bannerMoc from '../assets/img/banner/mockup.png' + +const Banner = () => { + return ( +
+
+ + + +
+
+
+ + + + + + + +
+
+ +

Öppna Skolplattformen

+

+ Oavsett om du har tre eller sju barn - det är mycket att hålla + reda på. 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. Så vi har byggt en bättre. Med all information du behöver + som förälder. Snabbare och framförallt - mycket mindre + krångel. +

+

+ + Appen är klar och kommer att dyka upp på App Store och + Google Play Store vilken dag som helst. + +

+ + App Store + + + Mer info + +
+ + +
+ +
+ +
+
+
+
+ ) +} + +export default Banner diff --git a/packages/site/components/BannerTwo.js b/packages/site/components/BannerTwo.js index c7912238..ced79d5c 100644 --- a/packages/site/components/BannerTwo.js +++ b/packages/site/components/BannerTwo.js @@ -1,57 +1,61 @@ -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 bannerMoc from "../assets/img/banner/mockup.png"; - -const BannerTwo = () => { - return ( -
-
- - - -
-

Välkommen till den öppna skolplattformen

-

- Vi tröttnade på att vänta på att Skolplattformen skulle bli användbar så vi tog saken i egna händer och byggde en egen. Appen hämtar samma information som på den gamla Skolplattformen men visar den på ett snabbare och lättare sätt. -

- - App Store - - - Se Exempel - -
- -
-
-
- - - - - - - -
-
-
- -
-
-
-
-
-
- ); -}; - -export default BannerTwo; +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 bannerMoc from '../assets/img/banner/mockup.png' + +const BannerTwo = () => { + return ( +
+
+ + + +
+

Välkommen till den öppna skolplattformen

+

+ Vi tröttnade på att vänta på att Skolplattformen skulle bli + användbar så vi tog saken i egna händer och byggde en egen. + Appen hämtar samma information som på den gamla + Skolplattformen men visar den på ett snabbare och lättare + sätt. +

+ + App Store + + + Se Exempel + +
+ +
+
+
+ + + + + + + +
+
+
+ +
+
+
+
+
+
+ ) +} + +export default BannerTwo diff --git a/packages/site/components/BlogHome.js b/packages/site/components/BlogHome.js index 7aecfdad..6fd73583 100644 --- a/packages/site/components/BlogHome.js +++ b/packages/site/components/BlogHome.js @@ -1,84 +1,84 @@ -import React from "react"; -import { Container, Row, Col } from "react-bootstrap"; - -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"; - -const BLOG_HOME_DATA = [ - { - 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", - image: img1, - btnClass: "blog-btn" - }, - { - 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", - image: img2, - btnClass: "blog-btn" - }, - { - 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", - image: img3, - btnClass: "blog-btn" - } -]; - -const BlogHome = () => { - return ( -
- - - - - - - - {BLOG_HOME_DATA.map((blogPost, index) => ( - - - - ))} - - -
- ); -}; - -export default BlogHome; +import React from 'react' +import { Container, Row, Col } from 'react-bootstrap' + +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' + +const BLOG_HOME_DATA = [ + { + 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', + image: img1, + btnClass: 'blog-btn', + }, + { + 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', + image: img2, + btnClass: 'blog-btn', + }, + { + 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', + image: img3, + btnClass: 'blog-btn', + }, +] + +const BlogHome = () => { + return ( +
+ + + + + + + + {BLOG_HOME_DATA.map((blogPost, index) => ( + + + + ))} + + +
+ ) +} + +export default BlogHome diff --git a/packages/site/components/BlogPost.js b/packages/site/components/BlogPost.js index 5babbb7b..c805dab4 100644 --- a/packages/site/components/BlogPost.js +++ b/packages/site/components/BlogPost.js @@ -1,55 +1,55 @@ -import React from "react"; -import Link from "next/link"; - -const BlogPost = (props) => { - return ( -
-
- - - - - - -
-

- {props.postDate} - {props.postMonth} -

-
-
- -
-
-
- - - By - {props.postAuthor} - - - - - {props.postCommentCount} Comment - - -
- -
-

- - {props.postTitle} - -

-
-

{props.postContent}

- - Read More - -
-
-
- ); -}; - -export default BlogPost; +import React from 'react' +import Link from 'next/link' + +const BlogPost = (props) => { + return ( +
+
+ + + + + + +
+

+ {props.postDate} + {props.postMonth} +

+
+
+ +
+
+
+ + + By + {props.postAuthor} + + + + + {props.postCommentCount} Comment + + +
+ +
+

+ + {props.postTitle} + +

+
+

{props.postContent}

+ + Read More + +
+
+
+ ) +} + +export default BlogPost diff --git a/packages/site/components/Clients.js b/packages/site/components/Clients.js index 082034b8..0677e8da 100644 --- a/packages/site/components/Clients.js +++ b/packages/site/components/Clients.js @@ -1,83 +1,83 @@ -import React from "react"; -import SwiperCore, { Autoplay } from "swiper"; -import { Swiper, SwiperSlide } from "swiper/react"; - -SwiperCore.use([Autoplay]); - -import img1 from "../assets/img/partner2.png"; - -const Clients = () => { - const params = { - spaceBetween: 100, - loop: true, - autoplay: { - delay: 3000 - }, - breakpoints: { - 0: { - slidesPerView: 1, - spaceBetween: 0 - }, - 500: { - spaceBetween: 50, - slidesPerView: 3 - }, - 768: { - spaceBetween: 50, - slidesPerView: 4 - }, - 992: { - slidesPerView: 5 - } - } - }; - return ( -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
- ); -}; - -export default Clients; +import React from 'react' +import SwiperCore, { Autoplay } from 'swiper' +import { Swiper, SwiperSlide } from 'swiper/react' + +SwiperCore.use([Autoplay]) + +import img1 from '../assets/img/partner2.png' + +const Clients = () => { + const params = { + spaceBetween: 100, + loop: true, + autoplay: { + delay: 3000, + }, + breakpoints: { + 0: { + slidesPerView: 1, + spaceBetween: 0, + }, + 500: { + spaceBetween: 50, + slidesPerView: 3, + }, + 768: { + spaceBetween: 50, + slidesPerView: 4, + }, + 992: { + slidesPerView: 5, + }, + }, + } + return ( +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ ) +} + +export default Clients diff --git a/packages/site/components/CtaOne.js b/packages/site/components/CtaOne.js index 576826ee..2b6d701e 100644 --- a/packages/site/components/CtaOne.js +++ b/packages/site/components/CtaOne.js @@ -1,29 +1,27 @@ -import React from "react"; -import { Container, Row, Col } from "react-bootstrap"; - -const CtaOne = () => { - return ( -
- - - -
-

- Ladda ner appen idag &
- spara flera minuter varje dag -

-

- Du kommer inte att ångra dig. -

- - App Store - -
- -
-
-
- ); -}; - -export default CtaOne; +import React from 'react' +import { Container, Row, Col } from 'react-bootstrap' + +const CtaOne = () => { + return ( +
+ + + +
+

+ Ladda ner appen idag &
+ spara flera minuter varje dag +

+

Du kommer inte att ångra dig.

+ + App Store + +
+ +
+
+
+ ) +} + +export default CtaOne diff --git a/packages/site/components/CtaThree.js b/packages/site/components/CtaThree.js index 3e4718ee..12fbffee 100644 --- a/packages/site/components/CtaThree.js +++ b/packages/site/components/CtaThree.js @@ -1,34 +1,37 @@ -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"; - -const CtaThree = () => { - return ( -
- - - -
-

Se summering för alla dina barn på ett ställe

-

- Vi har räknat, det tar flera minuter att få 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 på en och samma skärm. -

- - App Store - -
- - -
- -
- -
-
-
- ); -}; - -export default CtaThree; +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' + +const CtaThree = () => { + return ( +
+ + + +
+

Se summering för alla dina barn på ett ställe

+

+ Vi har räknat, det tar flera minuter att få 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 på en och samma + skärm. +

+ + App Store + +
+ + +
+ +
+ +
+
+
+ ) +} + +export default CtaThree diff --git a/packages/site/components/CtaTwo.js b/packages/site/components/CtaTwo.js index 1b7d4b31..8cdd4922 100644 --- a/packages/site/components/CtaTwo.js +++ b/packages/site/components/CtaTwo.js @@ -1,34 +1,36 @@ -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"; - -const CtaTwo = () => { - return ( -
- - - -
- -
- - -
-

Lika säkert

-

- 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. -

- - App Store - -
- -
-
-
- ); -}; - -export default CtaTwo; +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' + +const CtaTwo = () => { + return ( +
+ + + +
+ +
+ + +
+

Lika säkert

+

+ 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. +

+ + App Store + +
+ +
+
+
+ ) +} + +export default CtaTwo diff --git a/packages/site/components/FeatureCard.js b/packages/site/components/FeatureCard.js index ffaf2271..89493cb5 100644 --- a/packages/site/components/FeatureCard.js +++ b/packages/site/components/FeatureCard.js @@ -1,15 +1,15 @@ -import React from "react"; - -const FeatureCard = (props) => { - return ( -
-
- -
-
{props.title}
-

{props.text}

-
- ); -}; - -export default FeatureCard; +import React from 'react' + +const FeatureCard = (props) => { + return ( +
+
+ +
+
{props.title}
+

{props.text}

+
+ ) +} + +export default FeatureCard diff --git a/packages/site/components/Features.js b/packages/site/components/Features.js index 21c5cae9..c8179ecb 100644 --- a/packages/site/components/Features.js +++ b/packages/site/components/Features.js @@ -1,124 +1,123 @@ -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]); - -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"; - -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: "Bygger på ny teknik", - text: - "Till skillnad från den gamla skolplattformen så bygger den öppna på senaste tekniken.", - image: img2 - }, - { - 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 - }, - { - 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 - }, - { - 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 - }, -]; - -const Features = () => { - const swiperParams = { - slidesPerView: 3, - slidesPerGroup: 3, - centeredSlides: true, - spaceBetween: 30, - autoplay: { - delay: 3000 - }, - pagination: { - el: "#features-paginations", - type: "bullets", - clickable: true - }, - loop: true, - breakpoints: { - 0: { - slidesPerView: 1, - slidesPerGroup: 1, - spaceBetween: 0 - }, - 575: { - slidesPerView: 1, - slidesPerGroup: 1, - spaceBetween: 0 - }, - 768: { - slidesPerGroup: 2, - slidesPerView: 2 - }, - 991: { - slidesPerView: 2, - slidesPerGroup: 2 - }, - 992: { - slidesPerGroup: 3, - slidesPerView: 3 - } - } - }; - return ( -
- - - - - - - - - - {FEATURES_DATA.map((feature, index) => ( - - - - ))} - -
- - - -
- ); -}; - -export default Features; +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]) + +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' + +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: 'Bygger på ny teknik', + text: + 'Till skillnad från den gamla skolplattformen så bygger den öppna på senaste tekniken.', + image: img2, + }, + { + 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, + }, + { + 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, + }, + { + 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, + }, +] + +const Features = () => { + const swiperParams = { + slidesPerView: 3, + slidesPerGroup: 3, + centeredSlides: true, + spaceBetween: 30, + autoplay: { + delay: 3000, + }, + pagination: { + el: '#features-paginations', + type: 'bullets', + clickable: true, + }, + loop: true, + breakpoints: { + 0: { + slidesPerView: 1, + slidesPerGroup: 1, + spaceBetween: 0, + }, + 575: { + slidesPerView: 1, + slidesPerGroup: 1, + spaceBetween: 0, + }, + 768: { + slidesPerGroup: 2, + slidesPerView: 2, + }, + 991: { + slidesPerView: 2, + slidesPerGroup: 2, + }, + 992: { + slidesPerGroup: 3, + slidesPerView: 3, + }, + }, + } + return ( +
+ + + + + + + + + + {FEATURES_DATA.map((feature, index) => ( + + + + ))} + +
+ + + +
+ ) +} + +export default Features diff --git a/packages/site/components/Footer.js b/packages/site/components/Footer.js index 7f56f930..2a8b4b08 100644 --- a/packages/site/components/Footer.js +++ b/packages/site/components/Footer.js @@ -1,165 +1,174 @@ -import React from "react"; -import footerBg from "../assets/img/footer-bg.png"; -import footerLogo from "../assets/img/logo.png"; - -const Footer = () => { - return ( - - ); -}; - -export default Footer; +import React from 'react' +import footerBg from '../assets/img/footer-bg.png' +import footerLogo from '../assets/img/logo.png' + +const Footer = () => { + return ( + + ) +} + +export default Footer diff --git a/packages/site/components/FunFacts.js b/packages/site/components/FunFacts.js index 14a7d8c6..2319446a 100644 --- a/packages/site/components/FunFacts.js +++ b/packages/site/components/FunFacts.js @@ -1,62 +1,62 @@ -import React, { useState } from "react"; -import { Container, Row, Col } from "react-bootstrap"; - -import CountUp from "react-countup"; -import VisibilitySensor from "react-visibility-sensor"; - -const FUNFACTS_DATA = [ - { - count: "1000000000", - title: "kronor kostade orginalet" - }, - { - count: "7", - title: "år att utveckla" - }, - { - count: "10", - title: "kronor kostar vår app :)" - }, - { - count: "5", - title: "veckors utveckling" - } -]; - -const FunFacts = () => { - const [counter, setCounter] = useState({ - startCounter: false - }); - - const onVisibilityChange = (isVisible) => { - if (isVisible) { - setCounter({ startCounter: true }); - } - }; - return ( -
- - - {FUNFACTS_DATA.map((funfact, index) => ( - -
- - - - - -

{funfact.title}

-
- - ))} -
-
-
- ); -}; - -export default FunFacts; +import React, { useState } from 'react' +import { Container, Row, Col } from 'react-bootstrap' + +import CountUp from 'react-countup' +import VisibilitySensor from 'react-visibility-sensor' + +const FUNFACTS_DATA = [ + { + count: '1000000000', + title: 'kronor kostade orginalet', + }, + { + count: '7', + title: 'år att utveckla', + }, + { + count: '10', + title: 'kronor kostar vår app :)', + }, + { + count: '5', + title: 'veckors utveckling', + }, +] + +const FunFacts = () => { + const [counter, setCounter] = useState({ + startCounter: false, + }) + + const onVisibilityChange = (isVisible) => { + if (isVisible) { + setCounter({ startCounter: true }) + } + } + return ( +
+ + + {FUNFACTS_DATA.map((funfact, index) => ( + +
+ + + + + +

{funfact.title}

+
+ + ))} +
+
+
+ ) +} + +export default FunFacts diff --git a/packages/site/components/Header.js b/packages/site/components/Header.js index 3ceeb637..cba02c95 100644 --- a/packages/site/components/Header.js +++ b/packages/site/components/Header.js @@ -1,94 +1,98 @@ -import React, { useState, useEffect } from "react"; -import NavLinks from "./NavLinks"; - -import headerLogo from "../assets/img/logo.png"; - -const HeaderHome = (props) => { - const [sticky, setSticky] = useState(false); - - const handleScroll = () => { - if (window.scrollY > 70) { - setSticky(true); - } else if (window.scrollY < 70) { - setSticky(false); - } - }; - - useEffect(() => { - window.addEventListener("scroll", handleScroll); - mobileMenu(); - return () => { - 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(); - }); - - //Close Mobile Menu - let sideMenuCloser = document.querySelectorAll( - ".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(); - }); - }); - }; - - return ( -
-
-
-
-
-
-
- - Skolplattformen - -
-
-
-
-
- -
-
-
- -
-
-
-
-
- ); -}; - -export default HeaderHome; +import React, { useState, useEffect } from 'react' +import NavLinks from './NavLinks' + +import headerLogo from '../assets/img/logo.png' + +const HeaderHome = (props) => { + const [sticky, setSticky] = useState(false) + + const handleScroll = () => { + if (window.scrollY > 70) { + setSticky(true) + } else if (window.scrollY < 70) { + setSticky(false) + } + } + + useEffect(() => { + window.addEventListener('scroll', handleScroll) + mobileMenu() + return () => { + 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() + }) + + //Close Mobile Menu + let sideMenuCloser = document.querySelectorAll( + '.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() + }) + }) + } + + return ( +
+
+
+
+
+
+
+ + Skolplattformen + +
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+ ) +} + +export default HeaderHome diff --git a/packages/site/components/HeaderTwo.js b/packages/site/components/HeaderTwo.js index 331e2e5a..98d5ec73 100644 --- a/packages/site/components/HeaderTwo.js +++ b/packages/site/components/HeaderTwo.js @@ -1,102 +1,106 @@ -import React, { useState, useEffect } from "react"; -import NavLinks from "./NavLinks"; - -import headerLogo from "../assets/img/logo.png"; -import headerLogoSticky from "../assets/img/logo.png"; - -const HeaderHome = (props) => { - const [sticky, setSticky] = useState(false); - - const handleScroll = () => { - if (window.scrollY > 70) { - setSticky(true); - } else if (window.scrollY < 70) { - setSticky(false); - } - }; - - useEffect(() => { - window.addEventListener("scroll", handleScroll); - mobileMenu(); - return () => { - 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(); - }); - - //Close Mobile Menu - let sideMenuCloser = document.querySelectorAll( - ".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(); - }); - }); - }; - - return ( -
-
-
-
-
-
- -
-
-
-
- -
-
-
- -
-
-
-
-
- ); -}; - -export default HeaderHome; +import React, { useState, useEffect } from 'react' +import NavLinks from './NavLinks' + +import headerLogo from '../assets/img/logo.png' +import headerLogoSticky from '../assets/img/logo.png' + +const HeaderHome = (props) => { + const [sticky, setSticky] = useState(false) + + const handleScroll = () => { + if (window.scrollY > 70) { + setSticky(true) + } else if (window.scrollY < 70) { + setSticky(false) + } + } + + useEffect(() => { + window.addEventListener('scroll', handleScroll) + mobileMenu() + return () => { + 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() + }) + + //Close Mobile Menu + let sideMenuCloser = document.querySelectorAll( + '.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() + }) + }) + } + + return ( +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+
+ ) +} + +export default HeaderHome diff --git a/packages/site/components/Layout.js b/packages/site/components/Layout.js index 3678560d..0bf40793 100644 --- a/packages/site/components/Layout.js +++ b/packages/site/components/Layout.js @@ -1,54 +1,54 @@ -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"; - -const Layout = (props) => { - const [scrollTop, setScrollTop] = useState(false); - - const handleScrollTop = () => { - if (window.scrollY > 70) { - setScrollTop(true); - } else if (window.scrollY < 70) { - setScrollTop(false); - } - }; - - useEffect(() => { - window.addEventListener("scroll", handleScrollTop); - return () => { - window.removeEventListener("scroll", handleScrollTop); - }; - }); - return ( -
- - - {props.pageTitle} - - - -
- {props.children} -
- {scrollTop === true ? ( -
- - - -
- ) : null} -
- ); -}; - -export default Layout; +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' + +const Layout = (props) => { + const [scrollTop, setScrollTop] = useState(false) + + const handleScrollTop = () => { + if (window.scrollY > 70) { + setScrollTop(true) + } else if (window.scrollY < 70) { + setScrollTop(false) + } + } + + useEffect(() => { + window.addEventListener('scroll', handleScrollTop) + return () => { + window.removeEventListener('scroll', handleScrollTop) + } + }) + return ( +
+ + + {props.pageTitle} + + + +
+ {props.children} +
+ {scrollTop === true ? ( +
+ + + +
+ ) : null} +
+ ) +} + +export default Layout diff --git a/packages/site/components/MobileMenu.js b/packages/site/components/MobileMenu.js index 87af4771..9cb71269 100644 --- a/packages/site/components/MobileMenu.js +++ b/packages/site/components/MobileMenu.js @@ -1,50 +1,54 @@ -import React from "react"; -import NavLinks from "./NavLinks"; - -const MobileMenu = () => { - return ( -
-
-
-
-
-
-
- - - -
- - -
-
-

- Skolplattformen.org är en öppen programvara som byggs av frustrerade föräldrar. Hjälp till du också. Kontakta oss nedan: -

-

- info@skolplattformen.org
- +46 70 775 58 31 -

-
- - - - - - - - - - - - -
-
-
-
- ); -}; - -export default MobileMenu; +import React from 'react' +import NavLinks from './NavLinks' + +const MobileMenu = () => { + return ( +
+
+
+
+
+
+
+ + + +
+ + +
+
+

+ Skolplattformen.org är en öppen programvara som byggs av frustrerade + föräldrar. Hjälp till du också. Kontakta oss nedan: +

+

+ + info@skolplattformen.org + {' '} +
+ +46 70 775 58 31 +

+
+ + + + + + + + + + + + +
+
+
+
+ ) +} + +export default MobileMenu diff --git a/packages/site/components/NavLinks.js b/packages/site/components/NavLinks.js index ef3833f7..a624f9bd 100644 --- a/packages/site/components/NavLinks.js +++ b/packages/site/components/NavLinks.js @@ -1,75 +1,75 @@ -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"); - }; - return ( - - ); -}; - -export default NavLinks; +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') + } + return ( + + ) +} + +export default NavLinks diff --git a/packages/site/components/PageBanner.js b/packages/site/components/PageBanner.js index a773dad5..e145bfc0 100644 --- a/packages/site/components/PageBanner.js +++ b/packages/site/components/PageBanner.js @@ -1,27 +1,27 @@ -import React from "react"; - -const PageBanner = (props) => { - return ( -
-
-
-
-
- -

{props.pageName}

-
-
-
-
-
- ); -}; - -export default PageBanner; +import React from 'react' + +const PageBanner = (props) => { + return ( +
+
+
+
+
+ +

{props.pageName}

+
+
+
+
+
+ ) +} + +export default PageBanner diff --git a/packages/site/components/Pagination.js b/packages/site/components/Pagination.js index 3db28ce8..c249a641 100644 --- a/packages/site/components/Pagination.js +++ b/packages/site/components/Pagination.js @@ -1,32 +1,32 @@ -import React from "react"; - -const Pagination = () => { - return ( - - ); -}; - -export default Pagination; +import React from 'react' + +const Pagination = () => { + return ( + + ) +} + +export default Pagination diff --git a/packages/site/components/Pricing.js b/packages/site/components/Pricing.js index 01c3fa75..f3c4cca9 100644 --- a/packages/site/components/Pricing.js +++ b/packages/site/components/Pricing.js @@ -1,302 +1,305 @@ -import React, { useState } from "react"; - -const Pricing = () => { - const [pricing, setPricing] = useState(false); - const handleClick = (e) => { - e.preventDefault(); - setPricing(!pricing); - }; - return ( -
-
-
-
-
-

Vad kostar det och varför är det inte gratis?

-

- 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. -

-
-
-
-
-
-
- {pricing === false ? ( -
-
-
-
-
-

Engångskostnad

- 10kr -
-
-
-
    -
  • - - - - BankID inloggning -
  • -
  • - - - - Se nyheter -
  • -
  • - - - - Se notifieringar -
  • -
  • - - - - Kontaktuppgifter till andra föräldrar -
  • -
  • - - - - Gratis support -
  • -
  • - - - - Pushnotifieringar -
  • -
-
- - App Store - -
-
-
-
-
- ) : null} - {pricing === true ? ( -
-
-
-
-
-

Standard

- $200 -
-
-
-
    -
  • - - - - 10 pages -
  • -
  • - - - - 500 gb storage -
  • -
  • - - - - 10 sdd Database -
  • -
  • - - - - Free coustom domain -
  • -
  • - - - - 24/7 free support -
  • -
-
- - Get Started - -
-
-
-
-
-
-

Business

- $300 -
-
-
-
    -
  • - - - - 10 pages -
  • -
  • - - - - 500 gb storage -
  • -
  • - - - - 10 sdd Database -
  • -
  • - - - - Free coustom domain -
  • -
  • - - - - 24/7 free support -
  • -
-
- - Get Started - -
-
-
-
-
-
-

Professional

- $400 -
-
-
-
    -
  • - - - - 10 pages -
  • -
  • - - - - 500 gb storage -
  • -
  • - - - - 10 sdd Database -
  • -
  • - - - - Free coustom domain -
  • -
  • - - - - 24/7 free support -
  • -
-
- - Get Started - -
-
-
-
-
- ) : null} -
-
-
-
-
- ); -}; - -export default Pricing; +import React, { useState } from 'react' + +const Pricing = () => { + const [pricing, setPricing] = useState(false) + const handleClick = (e) => { + e.preventDefault() + setPricing(!pricing) + } + return ( +
+
+
+
+
+

Vad kostar det och varför är det inte gratis?

+

+ 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. +

+
+
+
+
+
+
+ {pricing === false ? ( +
+
+
+
+
+

Engångskostnad

+ 10kr +
+
+
+
    +
  • + + + + BankID inloggning +
  • +
  • + + + + Se nyheter +
  • +
  • + + + + Se notifieringar +
  • +
  • + + + + Kontaktuppgifter till andra föräldrar +
  • +
  • + + + + Gratis support +
  • +
  • + + + + Pushnotifieringar +
  • +
+
+ + App Store + +
+
+
+
+
+ ) : null} + {pricing === true ? ( +
+
+
+
+
+

Standard

+ $200 +
+
+
+
    +
  • + + + + 10 pages +
  • +
  • + + + + 500 gb storage +
  • +
  • + + + + 10 sdd Database +
  • +
  • + + + + Free coustom domain +
  • +
  • + + + + 24/7 free support +
  • +
+
+ + Get Started + +
+
+
+
+
+
+

Business

+ $300 +
+
+
+
    +
  • + + + + 10 pages +
  • +
  • + + + + 500 gb storage +
  • +
  • + + + + 10 sdd Database +
  • +
  • + + + + Free coustom domain +
  • +
  • + + + + 24/7 free support +
  • +
+
+ + Get Started + +
+
+
+
+
+
+

Professional

+ $400 +
+
+
+
    +
  • + + + + 10 pages +
  • +
  • + + + + 500 gb storage +
  • +
  • + + + + 10 sdd Database +
  • +
  • + + + + Free coustom domain +
  • +
  • + + + + 24/7 free support +
  • +
+
+ + Get Started + +
+
+
+
+
+ ) : null} +
+
+
+
+
+ ) +} + +export default Pricing diff --git a/packages/site/components/SectionTitle.js b/packages/site/components/SectionTitle.js index ed377c75..93818f7f 100644 --- a/packages/site/components/SectionTitle.js +++ b/packages/site/components/SectionTitle.js @@ -1,12 +1,12 @@ -import React from "react"; - -const SectionTitle = (props) => { - return ( -
-

{props.title}

-

{props.text}

-
- ); -}; - -export default SectionTitle; +import React from 'react' + +const SectionTitle = (props) => { + return ( +
+

{props.title}

+

{props.text}

+
+ ) +} + +export default SectionTitle diff --git a/packages/site/components/Sidebar.js b/packages/site/components/Sidebar.js index 96d688ad..3d413a84 100644 --- a/packages/site/components/Sidebar.js +++ b/packages/site/components/Sidebar.js @@ -1,116 +1,116 @@ -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"; - -const Sidebar = () => { - return ( - - ); -}; - -export default Sidebar; +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' + +const Sidebar = () => { + return ( + + ) +} + +export default Sidebar diff --git a/packages/site/components/Testimonials.js b/packages/site/components/Testimonials.js index 203a665a..db35e461 100644 --- a/packages/site/components/Testimonials.js +++ b/packages/site/components/Testimonials.js @@ -1,125 +1,137 @@ -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"; - -SwiperCore.use([Autoplay, Thumbs, Navigation]); - -const Testimonials = () => { - const [thumbsSwiper, setThumbsSwiper] = useState(null); - const testimmonialsParams = { - slidesPerView: 1, - spaceBetween: 0, - navigation: { - nextEl: "#testi-swiper-button-next", - prevEl: "#testi-swiper-button-prev" - }, - autoplay: { - delay: 3000 - } - }; - const thumbnailsParam = { - slidesPerView: 3, - spaceBetween: 20, - autoplay: { - delay: 3000 - }, - breakpoints: { - 0: { - slidesPerView: 2 - }, - 500: { - slidesPerView: 2 - }, - 768: { - slidesPerView: 2 - }, - 992: { - slidesPerView: 3 - } - } - }; - return ( -
-
-
-
-
-
- - - - - - - - - - - - - - -
-
- -
- - -

- "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." -

-

Fredrik Wass, förälder

-
- - -

- "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." -

-

Karin Nygårds, lärare och förälder

-
- -

- Christian Landgren la upp en bild på 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, så som den borde vara. Så nu behövs inte den där kepsen längre, här är appen. -

-

Per Strömbeck, förälder

-
- - -

- Digitala lösningar inom skolan är som på många andra områden inom det offentliga varken användarvänliga eller effektiva. Med öppen källkod och öppen data kan vi få snabbare och billigare få till bättre lösningar. Och dessutom öka insynen i hur systemen som formar vår vardag fungerar. Öppna Skolplattformen är ett bra exempel på detta! -

-

Niels PaarupPetersen, Riksdagsledamot C

-
- - -
-
- - -
-
-
-
-
-
- ); -}; - -export default Testimonials; +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' + +SwiperCore.use([Autoplay, Thumbs, Navigation]) + +const Testimonials = () => { + const [thumbsSwiper, setThumbsSwiper] = useState(null) + const testimmonialsParams = { + slidesPerView: 1, + spaceBetween: 0, + navigation: { + nextEl: '#testi-swiper-button-next', + prevEl: '#testi-swiper-button-prev', + }, + autoplay: { + delay: 3000, + }, + } + const thumbnailsParam = { + slidesPerView: 3, + spaceBetween: 20, + autoplay: { + delay: 3000, + }, + breakpoints: { + 0: { + slidesPerView: 2, + }, + 500: { + slidesPerView: 2, + }, + 768: { + slidesPerView: 2, + }, + 992: { + slidesPerView: 3, + }, + }, + } + return ( +
+
+
+
+
+
+ + + + + + + + + + + + + + +
+
+ +
+ + +

+ "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." +

+

Fredrik Wass, förälder

+
+ + +

+ "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." +

+

Karin Nygårds, lärare och förälder

+
+ +

+ Christian Landgren la upp en bild på 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, så som + den borde vara. Så nu behövs inte den där kepsen längre, här + är appen. +

+

Per Strömbeck, förälder

+
+ + +

+ Digitala lösningar inom skolan är som på många andra områden + inom det offentliga varken användarvänliga eller effektiva. + Med öppen källkod och öppen data kan vi få snabbare och + billigare få till bättre lösningar. Och dessutom öka insynen + i hur systemen som formar vår vardag fungerar. Öppna + Skolplattformen är ett bra exempel på detta! +

+

Niels PaarupPetersen, Riksdagsledamot C

+
+
+
+ + +
+
+
+
+
+
+ ) +} + +export default Testimonials diff --git a/packages/site/components/Video.js b/packages/site/components/Video.js index 665bc965..aed74257 100644 --- a/packages/site/components/Video.js +++ b/packages/site/components/Video.js @@ -1,42 +1,42 @@ -import React, { useState } from "react"; -import ModalVideo from "react-modal-video"; - -const Video = () => { - const [open, setOpen] = useState({ - isOpen: false - }); - const openModal = (e) => { - e.preventDefault(); - setOpen({ - isOpen: true - }); - }; - return ( -
- setOpen({ isOpen: false })} - /> -
-
-
-
- - - -
-
-
-
-
- ); -}; - -export default Video; +import React, { useState } from 'react' +import ModalVideo from 'react-modal-video' + +const Video = () => { + const [open, setOpen] = useState({ + isOpen: false, + }) + const openModal = (e) => { + e.preventDefault() + setOpen({ + isOpen: true, + }) + } + return ( +
+ setOpen({ isOpen: false })} + /> +
+
+
+
+ + + +
+
+
+
+
+ ) +} + +export default Video diff --git a/packages/site/next.config.js b/packages/site/next.config.js index 0e7ef527..5113d67f 100644 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -1,2 +1,2 @@ -const withImages = require('next-images') -module.exports = withImages(); \ No newline at end of file +const withImages = require('next-images') +module.exports = withImages() diff --git a/packages/site/package.json b/packages/site/package.json index 1ecfe64a..818653f0 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -21,5 +21,8 @@ "dev": "next dev", "build": "next build", "start": "next start" + }, + "devDependencies": { + "prettier": "2.2.1" } } diff --git a/packages/site/pages/_app.js b/packages/site/pages/_app.js index c14e5d10..3a9bcf03 100644 --- a/packages/site/pages/_app.js +++ b/packages/site/pages/_app.js @@ -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"; - -// This default export is required in a new `pages/_app.js` file. -export default function MyApp({ Component, pageProps }) { - return ; -} +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 +} diff --git a/packages/site/pages/index-2.js b/packages/site/pages/index-2.js index 6db440e4..8dede0ce 100644 --- a/packages/site/pages/index-2.js +++ b/packages/site/pages/index-2.js @@ -1,41 +1,41 @@ -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 ( - - - - - - - - -