mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-03 20:36:03 +02:00
* docs: add release announcement post - add mailchimp newsletter form - fix wording - fix mobile - fix changelog links - fix release drafter to use our format (GH-$ISSUE) Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
459 lines
9.7 KiB
Vue
459 lines
9.7 KiB
Vue
<template>
|
|
<main class="home" aria-labelledby="main-title">
|
|
<header class="hero">
|
|
<div class="section">
|
|
<div class="content">
|
|
<h1 v-if="data.heroText !== null" id="main-title">
|
|
{{ data.heroText || $title || "Hello" }}
|
|
</h1>
|
|
|
|
<p class="description">
|
|
{{
|
|
data.tagline || $description || "Welcome to your VuePress site"
|
|
}}
|
|
</p>
|
|
|
|
<p class="action" v-if="data.actionText && data.actionLink">
|
|
<NavLink class="action-button" :item="actionLink" />
|
|
</p>
|
|
</div>
|
|
|
|
<video
|
|
v-if="data.heroImage"
|
|
class="media"
|
|
autoplay
|
|
loop
|
|
muted
|
|
playsinline
|
|
>
|
|
<source
|
|
v-if="data.heroImage"
|
|
:src="$withBase(data.heroImage)"
|
|
:alt="data.heroAlt"
|
|
type="video/mp4"
|
|
/>
|
|
Your browser does not support the video tag.
|
|
</video>
|
|
<form
|
|
v-if="data.contactForm === true"
|
|
method="POST"
|
|
name="contact"
|
|
data-netlify="true"
|
|
netlify-honeypot="bot-field"
|
|
>
|
|
<input type="hidden" name="form-name" value="contact" />
|
|
|
|
<fieldset>
|
|
<label>
|
|
<span>Name</span>
|
|
<input name="name" class="field" required />
|
|
</label>
|
|
<label>
|
|
<span>Email</span>
|
|
<input name="email" type="email" class="field" required />
|
|
</label>
|
|
<label>
|
|
<span>Company</span>
|
|
<input name="company" class="field" />
|
|
</label>
|
|
</fieldset>
|
|
<button class="nav-link action-button" type="submit">
|
|
Get in touch
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</header>
|
|
<SimpleNewsletter />
|
|
|
|
<div class v-if="data.features && data.features.length">
|
|
<div
|
|
class="features section"
|
|
v-for="(feature, index) in data.features"
|
|
:key="index"
|
|
>
|
|
<div class="feature">
|
|
<img class="media" :src="$withBase(feature.src)" />
|
|
<div class="content">
|
|
<h2>{{ feature.title }}</h2>
|
|
<p>{{ feature.text }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- triples -->
|
|
<div class v-if="data.triples && data.triples.length">
|
|
<div class="triples">
|
|
<div class="feature">
|
|
<div
|
|
class="content"
|
|
v-for="(feature, index) in data.triples"
|
|
:key="index"
|
|
>
|
|
<img class="media" :src="$withBase(feature.src)" />
|
|
<h2>{{ feature.title }}</h2>
|
|
<p>{{ feature.text }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<Content class="theme-default-content custom" />
|
|
<div class v-if="data.footer">
|
|
<div class="footer">
|
|
<a href="https://www.netlify.com/">
|
|
<img
|
|
src="https://api.netlify.com/api/v1/badges/1853c996-a1f7-4545-b60c-612e8fca557c/deploy-status"
|
|
alt="Deploy status badge"
|
|
/>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
</template>
|
|
|
|
<script>
|
|
import NavLink from "@parent-theme/components/NavLink.vue";
|
|
|
|
export default {
|
|
components: { NavLink },
|
|
|
|
computed: {
|
|
data() {
|
|
return this.$page.frontmatter;
|
|
},
|
|
|
|
actionLink() {
|
|
return {
|
|
link: this.data.actionLink,
|
|
text: this.data.actionText,
|
|
};
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="stylus">
|
|
.home {
|
|
padding: $navbarHeight 0 0;
|
|
|
|
.hero {
|
|
background-color: $accentColor;
|
|
padding-top: 96pt - $navbarHeight;
|
|
padding-bottom: 96pt;
|
|
|
|
.section {
|
|
padding: 0pt 0;
|
|
margin: 0 auto;
|
|
max-width: $contentWidth;
|
|
justify-content: space-between;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
flex-direction: row;
|
|
|
|
// flex-flow: column wrap;
|
|
.media {
|
|
padding: 0 20px;
|
|
flex: 1;
|
|
max-width: 45%;
|
|
align-items: center;
|
|
}
|
|
|
|
form {
|
|
background-color: $accentColor;
|
|
padding: 0 20px;
|
|
flex: 1;
|
|
max-width: 40%;
|
|
|
|
button {
|
|
display: block;
|
|
background: $offColor
|
|
color: $section-color;
|
|
box-shadow: 0 1px 3px darken($accentColor, 5%), 0 1px 1px rgba(0, 0, 0, 0.98);
|
|
border-radius: 6px;
|
|
border: 0;
|
|
width: 100%;
|
|
height: 40px;
|
|
outline: none;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
font-size: 1.2rem;
|
|
font-weight: 450;
|
|
|
|
&:hover {
|
|
transform: translateY(-1px);
|
|
}
|
|
}
|
|
|
|
fieldset {
|
|
margin-bottom: 20px;
|
|
background: #fff;
|
|
box-shadow: 0 1px 2px 0 lighten($section-color, 35%), 0 2px 2px 0 lighten($section-color, 35%);
|
|
border-radius: 4px;
|
|
border: none;
|
|
|
|
label {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: row;
|
|
height: 42px;
|
|
padding: 8px 0;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
&:not(:last-child) {
|
|
border-bottom: 1px solid #f0f5fa;
|
|
}
|
|
|
|
span {
|
|
color: lighten($textColor, 25%);
|
|
font-weight: 450;
|
|
min-width: 60px;
|
|
padding: 0 15px;
|
|
text-align: right;
|
|
font-size: 0.9rem;
|
|
}
|
|
}
|
|
|
|
.field {
|
|
flex: 1;
|
|
padding: 0 15px;
|
|
background: transparent;
|
|
color: $textColor;
|
|
outline: none;
|
|
cursor: text;
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
input {
|
|
flex: 1;
|
|
border-style: none;
|
|
outline: none;
|
|
color: #313b3f;
|
|
}
|
|
}
|
|
}
|
|
|
|
.content {
|
|
flex: 1;
|
|
padding: 0 20px;
|
|
|
|
h1 {
|
|
text-align: left;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
font-size: 3.2rem;
|
|
font-weight: 600;
|
|
border-bottom: none;
|
|
padding-bottom: 0;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.description {
|
|
text-align: left;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
font-weight: 300;
|
|
color: #ffffff;
|
|
font-size: 1.5rem;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.action-button {
|
|
display: inline-block;
|
|
font-size: 1.2rem;
|
|
color: #fff;
|
|
background-color: $accentColor;
|
|
padding: 0.8rem 1.6rem;
|
|
border-radius: 4px;
|
|
transition: background-color 0.1s ease;
|
|
box-sizing: border-box;
|
|
border-bottom: 1px solid darken($accentColor, 10%);
|
|
|
|
&:hover {
|
|
background-color: lighten($accentColor, 10%);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.triples {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
margin: 0 auto;
|
|
padding: 32pt 0;
|
|
background-color: $section-color;
|
|
|
|
.feature {
|
|
padding: 92pt 0;
|
|
margin: 0 auto;
|
|
max-width: $contentWidth;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
|
|
// flex-wrap: wrap;
|
|
.content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
max-width: 100%;
|
|
padding-left: 15px;
|
|
|
|
.media {
|
|
max-height: 150px;
|
|
}
|
|
|
|
h2 {
|
|
padding: 10pt 0;
|
|
display: flex;
|
|
font-weight: 500;
|
|
border-bottom: none;
|
|
padding-bottom: 0;
|
|
color: $headerColor;
|
|
}
|
|
|
|
p {
|
|
text-align: left;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
font-weight: 400;
|
|
color: $textColor;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.features {
|
|
background-color: #ffffff;
|
|
padding: 72pt 0;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
margin: 0 auto;
|
|
|
|
&:nth-child(even) {
|
|
background-color: $section-color;
|
|
border-top: 1px solid darken($section-color, 10%);
|
|
border-bottom: 1px solid darken($section-color, 10%);
|
|
|
|
.feature {
|
|
.media {
|
|
order: 1;
|
|
}
|
|
|
|
.content {
|
|
order: 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
.feature {
|
|
padding: 0pt 0;
|
|
margin: 0 auto;
|
|
max-width: $contentWidth;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
|
|
.media {
|
|
padding: 0 20px;
|
|
max-height: 400px;
|
|
max-width: 45%;
|
|
flex: 1;
|
|
order: 2;
|
|
}
|
|
|
|
.content {
|
|
padding: 0 10px;
|
|
max-width: 55%;
|
|
order: 1;
|
|
flex: 1;
|
|
|
|
h2 {
|
|
font-size: 2.4rem;
|
|
font-weight: 600;
|
|
border-bottom: none;
|
|
padding-bottom: 0;
|
|
color: $headerColor;
|
|
}
|
|
|
|
p {
|
|
font-size: 1.2rem;
|
|
text-align: left;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
font-weight: 400;
|
|
color: $textColor;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.footer {
|
|
padding: 0.75rem;
|
|
border-top: 1px solid $borderColor;
|
|
text-align: center;
|
|
}
|
|
|
|
@media (max-width: $MQMobile) {
|
|
.home {
|
|
.feature {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.hero {
|
|
padding-top: 20pt;
|
|
|
|
.section {
|
|
flex-direction: column;
|
|
|
|
.media {
|
|
max-width: 90%;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@media (max-width: $MQMobileNarrow) {
|
|
.home {
|
|
// padding-left: 0.5rem;
|
|
// padding-right: 0.5rem;
|
|
.hero {
|
|
padding-top: 20pt;
|
|
|
|
.section {
|
|
flex-direction: column;
|
|
|
|
.media {
|
|
max-width: 90%;
|
|
}
|
|
}
|
|
|
|
h1 {
|
|
font-size: 2rem;
|
|
}
|
|
|
|
h1, .description, .action {
|
|
margin: 1.2rem auto;
|
|
}
|
|
|
|
.description {
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.action-button {
|
|
font-size: 1rem;
|
|
padding: 0.6rem 1.2rem;
|
|
}
|
|
}
|
|
|
|
.feature {
|
|
h2 {
|
|
font-size: 1.25rem;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|