diff --git a/components/Act/ActListSection.js b/components/Act/ActListSection.js index 0be818491..b3fc8bb90 100644 --- a/components/Act/ActListSection.js +++ b/components/Act/ActListSection.js @@ -6,7 +6,7 @@ import ActSearchInput from './ActSearchInput' import ActMenu from './ActMenu' import ActCard from './ActCard' import styled from 'styled-components' -import { List } from 'antd' +import { List, Card } from 'antd' import { useRouter } from 'next/router' const escapeRegex = require('../../server/util/regexUtil') @@ -80,31 +80,42 @@ export const ActListSection = () => { - + ( - - - - )} - />, + }} + renderItem={(act) => ( + + + + )} + /> + Cant find what you want? + + Suggest an activity here + + + ) diff --git a/components/Act/ActMenu.js b/components/Act/ActMenu.js index bf6f7c596..8dee627dd 100644 --- a/components/Act/ActMenu.js +++ b/components/Act/ActMenu.js @@ -1,6 +1,8 @@ import { Menu } from 'antd' import styled from 'styled-components' +import { useRouter } from 'next/router' +import Link from 'next/link' /** * * @param {*} acts - array of activities with offerOrg @@ -45,7 +47,7 @@ const ActivityMenu = styled(Menu)` const ActMenu = ({ acts, onClick }) => { const [counts, orgs] = countOfferOrgs(acts) - + const router = useRouter() return ( { ) })} + + + + See all + + + {/* More filters */} diff --git a/components/Act/__tests__/ActMenu.spec.js b/components/Act/__tests__/ActMenu.spec.js deleted file mode 100644 index 51b6a7251..000000000 --- a/components/Act/__tests__/ActMenu.spec.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import test from 'ava' -import { renderWithIntl } from '../../../lib/react-intl-test-helper' -import acts from '../../../server/api/activity/__tests__/activity.fixture' -import objectid from 'objectid' - -import ActMenu from '../ActMenu' - -test.before('Setup fixtures', (t) => { - // not using mongo or server here so faking ids - acts.map(p => { p._id = objectid().toString() }) - t.context.acts = acts -}) - -test('render the activity menu headers', t => { - const wrapper = renderWithIntl() - t.true(wrapper.exists('.ant-menu-item-group-title')) - t.is(wrapper.find('li').length, 3) -}) diff --git a/components/Home/HomeTabs.js b/components/Home/HomeTabs.js index aa115e5a5..1a1429ae0 100644 --- a/components/Home/HomeTabs.js +++ b/components/Home/HomeTabs.js @@ -59,12 +59,13 @@ export const HomeTabs = ({ person, onChange, defaultTab }) => + - + diff --git a/components/LandingPageComponents/Hero.js b/components/LandingPageComponents/Hero.js index 791fdc2c6..727bad96a 100644 --- a/components/LandingPageComponents/Hero.js +++ b/components/LandingPageComponents/Hero.js @@ -3,6 +3,7 @@ import React from 'react' import { FormattedMessage } from 'react-intl' import styled from 'styled-components' import { LearnMoreButton, SignUpButton } from '../../components/VTheme/Buttons' +import { HeroItem, HeroText } from '../VTheme/VTheme' // import { Button } from 'antd' // const Search = Input.Search @@ -29,122 +30,6 @@ max-width: 80rem; } ` -// start left hand video side -const HeroItem = styled.div` -position: relative; -padding: 1.5rem; - width: 100%; - background-color: black; - height:40vh; - min-height: 400px; - max-height: 450px; - overflow: hidden; - border-radius: 24px; - - box-shadow: 20px 20px 60px #d9d9d9; - img { - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - - z-index: 0; - object-fit: cover; - object-position: center; - } - - -@media screen and (min-width: 1025px) { - -webkit-transition: all 0.2s; - transition: all 0.2s; -:hover { - box-shadow: 1px 1px 12px 2px rgba(10,10,10,0.1); - transform: scale(1.04); - - h1 { - -webkit-transition: all 0.2s; - transition: all 0.2s; - color: #FFD9FB; - } -} -} - - @media screen and (max-width: 1024px) { - border-radius: 0; - height:50vh; - img { - height: 100%; - - object-position: center top; - } - } - @media screen and (max-width: 768px) { -height:50vh; - } - - - -` - -// end left hand video side - -const HeroText = styled.section` - display: flex; - flex-direction: column; - flex-wrap: wrap; - height: 100%; - align-items: flex-start; - justify-content: flex-end; -z-index: 100; - - - h1 { -font-weight: 600; -font-size: 2rem; -line-height: 1.5; -letter-spacing: -0.2px; -z-index: 100; - -color: white; -} -p { - min-height: 60px; - font-size: 1.25rem; - font-weight: 400; -letter-spacing: 0; -z-index: 100; -margin-bottom: 0; - -color: white; -} - - @media screen and (min-width: 768px) and (max-width: 1025px) { - padding: 1.5rem; - h1 { - font-size:2.5rem; - } - p { - font-size: 1.5rem; - line-height: 1.5; - min-height: initial; - - } - } - @media screen and (max-width: 768px) { - h1 { - font-size: 2rem; - line-height: 1.5; - margin-bottom: 0; - - } - p { - font-size: 1.5rem; - } - } - -` - const CTAGrid = styled.section` max-width: 80rem; border-radius: 24px; diff --git a/components/LandingPageComponents/WhoSection.js b/components/LandingPageComponents/WhoSection.js new file mode 100644 index 000000000..24e490456 --- /dev/null +++ b/components/LandingPageComponents/WhoSection.js @@ -0,0 +1,107 @@ + +import React from 'react' +import styled from 'styled-components' +import { H2, TripleGrid, HeroText, HeroItemStatic } from '../VTheme/VTheme' +import { FormattedMessage } from 'react-intl' + +const PersonaBox = styled.section` +@media screen and (max-width: 1300px) { + margin: 0 1rem; +} + +` + +const PersonaHeader = styled.div` +margin: 4rem 0; +text-align: center; + +h2 { + font-weight: 700; + +} + +@media screen and (max-width: 768px) { + margin-top: 2rem; +} +` +const ComingSoonTag = styled.p` +position: absolute; +z-index: 1200; +background-color: black; +padding: 0.5rem 1rem; +border-radius: 120px; +font-weight: 700; +color: white; +font-size: 1.2rem; + + +` + +const WhoSection = () => ( + + +

Who we help

+
+ + + + +

+ +

+

+ +

+ +
+ +
+ + Coming Soon + +

+ +

+

+ +

+ +
+ +
+ + Coming Soon + +

+ +

+

+ +

+ +
+ +
+
+ +
+) +export default WhoSection diff --git a/components/VTheme/VTheme.js b/components/VTheme/VTheme.js index 00abe4bbf..7eb350458 100644 --- a/components/VTheme/VTheme.js +++ b/components/VTheme/VTheme.js @@ -342,7 +342,7 @@ export const TripleGrid = styled.div` @media screen and (min-width: 768px) and (max-width: 1280px) { margin: 0 auto; - grid-template-columns: repeat(auto-fit, 25rem); + grid-template-columns: 1fr; justify-content: center; justify-items: center; } @@ -350,7 +350,7 @@ export const TripleGrid = styled.div` @media screen and (max-width: 767px) { grid-template-columns: 1fr; grid-row-gap: 2rem; - grid-gap: 0rem; + grid-gap: 2rem; } ` // end triplegrid @@ -505,6 +505,120 @@ text-align: center; padding: 2rem 0; } ` + +export const HeroItem = styled.div` +position: relative; +padding: 1.5rem; + width: 100%; + background-color: black; + height:40vh; + min-height: 400px; + max-height: 450px; + overflow: hidden; + border-radius: 24px; + + box-shadow: 20px 20px 60px #d9d9d9; + img { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + + + z-index: 0; + object-fit: cover; + object-position: top; + } + + +@media screen and (min-width: 1025px) { + -webkit-transition: all 0.2s; + transition: all 0.2s; +:hover { + box-shadow: 1px 1px 12px 2px rgba(10,10,10,0.1); + transform: scale(1.04); + + h1 { + -webkit-transition: all 0.2s; + transition: all 0.2s; + color: #FFD9FB; + } +} +} + + @media screen and (max-width: 1024px) { + border-radius: 0; + height:50vh; + img { + height: 100%; + + object-position: center top; + } + } + @media screen and (max-width: 768px) { +height:50vh; + } + + + +` + +export const HeroItemStatic = styled.div` +position: relative; +padding: 1.5rem; + width: 100%; + background-color: black; + height:40vh; + min-height: 400px; + max-height: 450px; + overflow: hidden; + border-radius: 24px; + + box-shadow: 20px 20px 60px #d9d9d9; + img { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + + + z-index: 0; + object-fit: cover; + object-position: top; + } + + +@media screen and (min-width: 1025px) { + -webkit-transition: all 0.2s; + transition: all 0.2s; + + h1 { + -webkit-transition: all 0.2s; + transition: all 0.2s; + color: #FFD9FB; + } +} +} + + @media screen and (max-width: 1024px) { + border-radius: 0; + height:50vh; + img { + height: 100%; + + object-position: center top; + } + } + @media screen and (max-width: 768px) { +height:50vh; + } + + + +` + /* ==================================================== @@ -517,6 +631,62 @@ I have done a terrible example so far, but will aim to fix usage soon ==================================================== */ +export const HeroText = styled.section` + display: flex; + flex-direction: column; + flex-wrap: wrap; + height: 100%; + align-items: flex-start; + justify-content: flex-end; +z-index: 100; + + + h1 { +font-weight: 600; +font-size: 2rem; +line-height: 1.5; +letter-spacing: -0.2px; +z-index: 100; + +color: white; +} +p { + min-height: 60px; + font-size: 1.25rem; + font-weight: 400; +letter-spacing: 0; +z-index: 100; +margin-bottom: 0; + +color: white; +} + + @media screen and (min-width: 768px) and (max-width: 1025px) { + padding: 1.5rem; + h1 { + font-size:2.5rem; + } + p { + font-size: 1.5rem; + line-height: 1.5; + min-height: initial; + + } + } + @media screen and (max-width: 768px) { + h1 { + font-size: 2rem; + line-height: 1.5; + margin-bottom: 0; + + } + p { + font-size: 1.5rem; + } + } + +` + export const TextPromo = styled.p` font-size:1.5rem; font-weight: 400; diff --git a/lang/en.json b/lang/en.json index c8590e9f5..46267b22f 100644 --- a/lang/en.json +++ b/lang/en.json @@ -613,5 +613,11 @@ "verificationlabel.vetted": "Police vet passed", "VerifyButton.label": "Verify Identity", "version": "Version", - "volunteer": "Volunteer" + "volunteer": "Volunteer", + "who.body.business": "Connect with experts to mentor and give free advice", + "who.body.communities": "White label the site to manage your volunteers safely", + "who.body.schools": "Connect your class or school with industry volunteers and experts", + "who.title.business": "Small businesses ", + "who.title.communities": "Communities", + "who.title.schools": "Schools" } \ No newline at end of file diff --git a/pages/landing/landing.js b/pages/landing/landing.js index a01b51ba6..e7b72def8 100644 --- a/pages/landing/landing.js +++ b/pages/landing/landing.js @@ -1,7 +1,7 @@ import React from 'react' import { Helmet } from 'react-helmet' import Hero from '../../components/LandingPageComponents/Hero' -import OfferSection from '../../components/LandingPageComponents/OfferSection' +// import OfferSection from '../../components/LandingPageComponents/OfferSection' // import OpAdd from '../../components/Op/OpAdd' // import OpListSection from '../../components/Op/OpListSection' import { FullPage } from '../../components/VTheme/VTheme' @@ -19,6 +19,7 @@ import TakeSupportSection from '../../components/LandingPageComponents/TakeSuppo // import HelpSocialSection from '../../components/LandingPageComponents/HelpSocialSection' // import HelpOrgsSection from '../../components/LandingPageComponents/HelpOrgsSection' import Sponsors from '../../components/LandingPageComponents/Sponsors' +import WhoSection from '../../components/LandingPageComponents/WhoSection' export const Landing = ({ isAuthenticated }) => ( <> @@ -29,9 +30,12 @@ export const Landing = ({ isAuthenticated }) => ( isAuthenticated={isAuthenticated} /> - - + + + + + <> {/* */} @@ -41,7 +45,7 @@ export const Landing = ({ isAuthenticated }) => ( - + {/* */} {/* diff --git a/public/static/img/landing-pages/business.png b/public/static/img/landing-pages/business.png new file mode 100644 index 000000000..6d4a70664 Binary files /dev/null and b/public/static/img/landing-pages/business.png differ diff --git a/public/static/img/landing-pages/community.png b/public/static/img/landing-pages/community.png new file mode 100644 index 000000000..94862b8af Binary files /dev/null and b/public/static/img/landing-pages/community.png differ diff --git a/public/static/img/landing-pages/school.png b/public/static/img/landing-pages/school.png new file mode 100644 index 000000000..534266e9e Binary files /dev/null and b/public/static/img/landing-pages/school.png differ