CMS more content

This commit is contained in:
Fede Álvarez 2022-05-25 20:14:33 +02:00
parent 96f3c2651d
commit a1ebe00be2
5 changed files with 287 additions and 248 deletions

View File

@ -6,34 +6,54 @@ import Heading from '~/components/primitives/heading'
import s from './contact.module.scss'
const Contact = () => {
interface Props {
data: {
contactHeading: string
contactDescription: string
contactFormHeading: string
contactFormWarning: string
contactNameLabel: string
contactNamePlaceholder: string
contactEmailLabel: string
contactEmailPlaceholder: string
contactRoleLabel: string
contactRolePlaceholder: string
contactLegalLabel: string
contactLegalPlaceholder: string
contactCompanyLabel: string
contactCompanyPlaceholder: string
contactInquiryLabel: string
contactInquiryPlaceholder: string
contactMsgLabel: string
contactMsgPlaceholder: string
contactButtonLabel: string
}
}
const Contact = ({ data }: Props) => {
return (
<Section className={s['section']}>
<Container className={s['container']}>
<div className={s.heading}>
<Heading variant="sm" as="h2">
Are you interested in participating in Laconic Networks testnet?
{data?.contactHeading}
</Heading>
<p>
It may be easier than you think, with multiple opportunities for
people with varying levels of technical expertise, from running
large data pipelines to simply leaving your browser tab open.
</p>
<p>{data?.contactDescription}</p>
<Line className={s.line} height={144} />
</div>
<div className={s.form__container}>
<div className={s['header']}>
<Heading as="h2" variant="sm">
Tell us a bit about yourself, and join for early access.
{data?.contactFormHeading}
</Heading>
<span>ALL FIELDS ARE REQUIRED</span>
<span>{data?.contactFormWarning}</span>
</div>
<form action="/">
<div>
<label htmlFor="name">
Name
{data?.contactNameLabel}
<input
placeholder="Lorem*"
placeholder={data?.contactNamePlaceholder}
type="text"
name="name"
id="name"
@ -41,9 +61,9 @@ const Contact = () => {
/>
</label>
<label htmlFor="email">
Email
{data?.contactEmailLabel}
<input
placeholder="email@email.com*"
placeholder={data?.contactEmailPlaceholder}
type="email"
name="email"
id="email"
@ -51,9 +71,9 @@ const Contact = () => {
/>
</label>
<label htmlFor="role">
Role
{data?.contactRoleLabel}
<input
placeholder="Lorem*"
placeholder={data?.contactRolePlaceholder}
type="text"
name="role"
id="role"
@ -61,9 +81,9 @@ const Contact = () => {
/>
</label>
<label htmlFor="company">
Company
{data?.contactCompanyLabel}
<input
placeholder="Lorem*"
placeholder={data?.contactCompanyPlaceholder}
type="text"
name="company"
id="company"
@ -71,9 +91,9 @@ const Contact = () => {
/>
</label>
<label htmlFor="jurisdiction">
What legal jurisdiction is your entity based in?
{data?.contactLegalLabel}
<input
placeholder="Lorem*"
placeholder={data?.contactLegalPlaceholder}
type="text"
name="jurisdiction"
id="jurisdiction"
@ -81,10 +101,10 @@ const Contact = () => {
/>
</label>
<label htmlFor="partnership">
Type of inquiry
{data?.contactInquiryLabel}
<select name="partnership" id="partnership" required>
<option value="" hidden>
Partnership*
{data?.contactInquiryPlaceholder}
</option>
<option value="Validator/Member">Validator/Member</option>
<option value="Investor">Investor</option>
@ -94,9 +114,9 @@ const Contact = () => {
</label>
</div>
<label htmlFor="message">
Message
{data?.contactMsgLabel}
<textarea
placeholder="Write a message or a comment*"
placeholder={data?.contactMsgPlaceholder}
name="message"
id="message"
rows={5}
@ -104,7 +124,7 @@ const Contact = () => {
></textarea>
</label>
<Button size="medium" variant="primary">
Submit message
{data?.contactButtonLabel}
</Button>
</form>
</div>

View File

@ -1,5 +1,3 @@
import { useRef } from 'react'
import { Arrow } from '~/components/icons/arrow'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
@ -8,59 +6,43 @@ import Link from '~/components/primitives/link'
import s from './hero.module.scss'
// interface Props {
// data: {
// heroHeading: string
// heroLine: string
// }
// }
const Hero = () => {
const heroVideoRef = useRef<HTMLVideoElement>(null)
interface Props {
data: {
heroHeading: string
heroParagraph01: string
heroParagraph02: string
}
}
const Hero = ({ data }: Props) => {
return (
<Section className={s['section']} disableFadeIn>
<div className={s.gradient} />
<div className={s.video_container}>
<video
autoPlay
ref={heroVideoRef}
controls={false}
loop
muted
playsInline={true}
preload="true"
>
<source src="/videos/banner-products.webm" type="video/webm" />
<source src="/videos/banner-products.mp4" type="video/mp4" />
</video>
<div className={s.hero__container}>
<img
className={s.hero}
loading="eager"
alt="hero"
src="/images/partners/partners.png"
/>
<img
className={s.hero__mobile}
loading="eager"
alt="hero"
src="/images/partners/partners.png"
/>
</div>
<img
className={s.hero__mobile}
loading="eager"
alt="hero"
src="/images/products/products.jpg"
/>
<Container className={s['container']}>
<div className={s.body}>
<div>
<Heading as="h1" variant="xl">
Join Us to Build Web3
{data?.heroHeading}
</Heading>
<Arrow className={s['arrow']} />
</div>
<div className={s.text__container}>
<p>
Laconic is ushering in a new era of internet-scale Web3 apps.
Were solving the hardest problems in Web3 by expanding access to
verifiable data, and building a global incentivized peer-to-peer
data marketplace that anyone can participate in.
</p>
<p>
Interested in participating in the network? We have multiple
opportunities for people and organizations around the world with
varying levels of technical expertise to get involved:
</p>
{data?.heroParagraph01 && <p>{data?.heroParagraph01}</p>}
{data?.heroParagraph01 && <p>{data?.heroParagraph02}</p>}
<ol>
<li>
<Link href="#validators">Validators</Link>
@ -74,6 +56,9 @@ const Hero = () => {
<li>
<Link href="#investors">Investors</Link>
</li>
<li>
<Link href="#testnet">Testnet</Link>
</li>
</ol>
</div>
</div>

View File

@ -1,4 +1,3 @@
import { Arrow } from '~/components/icons/arrow'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
import Heading from '~/components/primitives/heading'
@ -6,189 +5,159 @@ import Link from '~/components/primitives/link'
import s from './opportunities.module.scss'
const Opportunities = () => {
interface Props {
data: {
oportunitiesHeading01: string
oportunitiesDesc01: string
oportunitiesHeading02: string
oportunitiesDesc02: string
oportunitiesHeading03: string
oportunitiesDesc03: string
oportunitiesHeading04: string
oportunitiesDesc04: string
oportunitiesHeading05: string
oportunitiesDesc05: string
}
}
const Opportunities = ({ data }: Props) => {
return (
<Section className={s['section']}>
<Container className={s['container']}>
<div className={s.block} id="validators">
<div className={s['header']}>
<Heading as="h2" variant="lg">
Validators
</Heading>
<img src="/images/careers/curiosity.png" alt="validators" />
<div>
<div className={s['header']}>
<Heading as="h2" variant="md">
{data?.oportunitiesHeading01}
</Heading>
</div>
<div className={s.text__container}>
<p>{data?.oportunitiesDesc01}</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.text__container}>
<Arrow className={s.arrow} />
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</p>
<p>
Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.
</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.block} id="providers">
<div className={s['header']}>
<Heading as="h2" variant="lg">
Service Providers
</Heading>
<img src="/images/careers/elegance.png" alt="validators" />
<div>
<div className={s['header']}>
<Heading as="h2" variant="md">
{data?.oportunitiesHeading02}
</Heading>
</div>
<div className={s.text__container}>
<p>{data?.oportunitiesDesc02}</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.text__container}>
<Arrow className={s.arrow} />
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</p>
<p>
Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.
</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.block} id="developers">
<div className={s['header']}>
<Heading as="h2" variant="lg">
Developers
</Heading>
<img src="/images/careers/precision.png" alt="validators" />
<div>
<div className={s['header']}>
<Heading as="h2" variant="md">
{data?.oportunitiesHeading03}
</Heading>
</div>
<div className={s.text__container}>
<p>{data?.oportunitiesDesc03}</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.text__container}>
<Arrow className={s.arrow} />
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</p>
<p>
Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.
</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.block} id="investors">
<div className={s['header']}>
<Heading as="h2" variant="lg">
Investors
</Heading>
<img src="/images/careers/self.png" alt="validators" />
<div>
<div className={s['header']}>
<Heading as="h2" variant="md">
{data?.oportunitiesHeading04}
</Heading>
</div>
<div className={s.text__container}>
<p>{data?.oportunitiesDesc04}</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.text__container}>
<Arrow className={s.arrow} />
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</p>
<p>
Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.
</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.block} id="testnet">
<div className={s['header']}>
<Heading as="h2" variant="lg">
Incentivized Testnet
</Heading>
<img src="/images/careers/curiosity.png" alt="validators" />
<div>
<div className={s['header']}>
<Heading as="h2" variant="md">
{data?.oportunitiesHeading05}
</Heading>
</div>
<div className={s.text__container}>
<p>{data?.oportunitiesDesc05}</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
<div className={s.text__container}>
<Arrow className={s.arrow} />
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</p>
<p>
Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.
</p>
</div>
<ul>
<li>
<Link href="https://google.com">DUIS AUTE</Link>
</li>
<li>
<Link href="https://google.com">Excepteur sint</Link>
</li>
<li>
<Link href="https://google.com">Sunt in culpa</Link>
</li>
<li>
<Link href="https://google.com">Qui oficia</Link>
</li>
</ul>
</div>
</Container>
</Section>

View File

@ -0,0 +1,56 @@
const PartnersHero = {
query: `
{
partnersPage {
heroHeading
heroParagraph01
heroParagraph02
}
}`
}
const PartnersOportunities = {
query: `
{
partnersPage {
oportunitiesDesc01
oportunitiesDesc02
oportunitiesDesc03
oportunitiesDesc04
oportunitiesDesc05
oportunitiesHeading01
oportunitiesHeading02
oportunitiesHeading03
oportunitiesHeading04
oportunitiesHeading05
}
}`
}
const PartnersContact = {
query: `
{
partnersPage {
contactCompanyLabel
contactCompanyPlaceholder
contactDescription
contactEmailLabel
contactEmailPlaceholder
contactFormHeading
contactFormWarning
contactHeading
contactInquiryLabel
contactInquiryPlaceholder
contactLegalLabel
contactLegalPlaceholder
contactMsgLabel
contactMsgPlaceholder
contactNameLabel
contactNamePlaceholder
contactRoleLabel
contactRolePlaceholder
contactButtonLabel
}
}`
}
export { PartnersContact, PartnersHero, PartnersOportunities }

View File

@ -11,6 +11,11 @@ import Contact from '~/components/sections/partners/contact'
import Hero from '~/components/sections/partners/hero'
import Opportunities from '~/components/sections/partners/opportunities'
import { HomeOthers, Testimonials } from '~/lib/cms/queries/home'
import {
PartnersContact,
PartnersHero,
PartnersOportunities
} from '~/lib/cms/queries/partners'
import { request } from '../lib/datocms'
@ -22,16 +27,22 @@ export const getStaticProps = async () => {
const heroBlogPost = allBlogPosts.data[0]
const [othersData, testimonialsData] = await Promise.all([
request(HomeOthers),
request(Testimonials)
])
const [othersData, testimonialsData, heroData, contactData, optData] =
await Promise.all([
request(HomeOthers),
request(Testimonials),
request(PartnersHero),
request(PartnersContact),
request(PartnersOportunities)
])
return {
props: {
othersData: othersData?.homePage,
testimonialsData: testimonialsData?.allTestimonials,
heroData: heroData?.partnersPage,
contactData: contactData?.partnersPage,
optData: optData?.partnersPage,
initialBlogPosts: {
pagination: allBlogPosts.pagination,
data: allBlogPosts.data.slice(0, 3)
@ -48,19 +59,17 @@ export const getStaticProps = async () => {
const Careers = ({
othersData,
testimonialsData
testimonialsData,
heroData,
contactData,
optData
}: InferGetStaticPropsType<typeof getStaticProps>) => {
return (
<PageLayout>
<Meta
// preload={[
// { href: '/videos/banner-products.mp4', as: 'fetch' },
// { href: '/videos/banner-products.webm', as: 'fetch' }
// ]}
/>
<Hero />
<Opportunities />
<Contact />
<Meta />
<Hero data={heroData} />
<Opportunities data={optData} />
<Contact data={contactData} />
<WhatOthersSay data={othersData} testimonialsData={testimonialsData} />
</PageLayout>
)