update site with new design
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
<template>
|
||||
<Layout :hideHeader="true" :disableScroll="true">
|
||||
<div class="container sm:pxi-0 mx-auto overflow-x-hidden pt-20 px-4">
|
||||
<div class="container sm:pxi-0 mx-auto overflow-x-hidden pt-20">
|
||||
<div class="pt-8">
|
||||
<Alert v-if="showAlert" @clicked="linkCopied" />
|
||||
<section class="post-header container mx-auto px-0 mb-4 border-b">
|
||||
<h1 class="text-5xl font-medium leading-none mt-0">
|
||||
{{ $page.blog.title }}
|
||||
@@ -25,15 +24,7 @@
|
||||
<g-image
|
||||
:src="author.image"
|
||||
:alt="author.name"
|
||||
class="
|
||||
h-8
|
||||
w-8
|
||||
sm:h-10
|
||||
sm:w-10
|
||||
rounded-full
|
||||
bg-gray-200
|
||||
border-2 border-white
|
||||
"
|
||||
class="h-8 w-8 sm:h-10 sm:w-10 rounded-full bg-gray-200 border-2 border-white"
|
||||
/>
|
||||
</g-link>
|
||||
</li>
|
||||
@@ -70,18 +61,6 @@
|
||||
</g-link>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<share-it
|
||||
icons
|
||||
:targets="['twitter', 'linkedin', 'facebook']"
|
||||
class="ml-auto"
|
||||
/>
|
||||
|
||||
<font-awesome
|
||||
:icon="['fas', 'link']"
|
||||
class="cursor-pointer"
|
||||
@click="copyLink"
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -91,17 +70,10 @@
|
||||
|
||||
<div class="py-12">
|
||||
<section
|
||||
class="
|
||||
post-content
|
||||
container
|
||||
mx-auto
|
||||
relative
|
||||
font-serif
|
||||
text-gray-700
|
||||
"
|
||||
class="post-content container mx-auto relative font-serif text-gray-700"
|
||||
>
|
||||
<div
|
||||
class="post-content-text text-lg"
|
||||
class="post-content-text text-xl"
|
||||
v-html="$page.blog.content"
|
||||
></div>
|
||||
</section>
|
||||
@@ -111,19 +83,7 @@
|
||||
v-for="tag in $page.blog.tags"
|
||||
:key="tag.id"
|
||||
:to="tag.path"
|
||||
class="
|
||||
text-xs
|
||||
bg-transparent
|
||||
hover:text-blue-700
|
||||
py-2
|
||||
px-4
|
||||
mr-2
|
||||
border
|
||||
hover:border-blue-500
|
||||
border-gray-600
|
||||
text-gray-700
|
||||
rounded-full
|
||||
"
|
||||
class="text-xs bg-transparent hover:text-blue-700 py-2 px-4 mr-2 border hover:border-blue-500 border-gray-600 text-gray-700 rounded-full"
|
||||
>{{ tag.title }}</g-link
|
||||
>
|
||||
</section>
|
||||
@@ -207,104 +167,34 @@
|
||||
path
|
||||
}
|
||||
}
|
||||
metadata {
|
||||
siteUrl
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
</page-query>
|
||||
|
||||
<script>
|
||||
import PostListItem from "~/components/custom/Cards/PostListItem.vue";
|
||||
import Alert from "~/components/custom/Alert.vue";
|
||||
|
||||
|
||||
export default {
|
||||
components: {
|
||||
PostListItem,
|
||||
Alert,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showAlert: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
copyLink() {
|
||||
const el = document.createElement("input");
|
||||
el.value = window.location.href;
|
||||
document.body.appendChild(el);
|
||||
el.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(el);
|
||||
this.showAlert = true;
|
||||
},
|
||||
linkCopied(val) {
|
||||
this.showAlert = val;
|
||||
},
|
||||
img(image) {
|
||||
if (!image) return "";
|
||||
if (image.src) return image.src;
|
||||
return image;
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
getCoverImage() {
|
||||
let coverImage = "";
|
||||
const cover = this.$page.blog.image;
|
||||
if (cover != null) {
|
||||
coverImage = `${this.getBaseUrl}${this.$page.blog.image.src}`;
|
||||
}
|
||||
return coverImage;
|
||||
},
|
||||
getBaseUrl() {
|
||||
return this.$page.metadata.siteUrl;
|
||||
},
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
title: "",
|
||||
titleTemplate: `ThreeFold | ${this.$page.blog.title}`,
|
||||
meta: [
|
||||
{
|
||||
key: "description",
|
||||
name: "description",
|
||||
content: this.$page.blog.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:title",
|
||||
property: "og:title",
|
||||
content: this.$page.blog.title,
|
||||
},
|
||||
{
|
||||
key: "og:description",
|
||||
property: "og:description",
|
||||
content: this.$page.blog.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:image",
|
||||
property: "og:image",
|
||||
content: this.getCoverImage,
|
||||
},
|
||||
{
|
||||
name: "twitter:description",
|
||||
property: "twitter:description",
|
||||
content: this.$page.blog.excerpt,
|
||||
},
|
||||
{
|
||||
name: "twitter:image",
|
||||
property: "twitter:image",
|
||||
content: this.getCoverImage,
|
||||
},
|
||||
{
|
||||
name: "twitter:title",
|
||||
property: "twitter:title",
|
||||
content: this.$page.blog.title,
|
||||
},
|
||||
{
|
||||
name: "twitter:card",
|
||||
property: "twitter:card",
|
||||
content: "summary_large_image",
|
||||
},
|
||||
],
|
||||
title: this.$page.blog.title,
|
||||
};
|
||||
},
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import url("https://fonts.googleapis.com/css2?family=Roboto&display=swap");
|
||||
.post-card-excerpt,
|
||||
.post-content-text {
|
||||
font-family: "Roboto", sans-serif !important;
|
||||
line-height: 1.2;
|
||||
}
|
||||
</style>
|
||||
@@ -1,112 +0,0 @@
|
||||
<template>
|
||||
<Layout :hideHeader="true" :disableScroll="true">
|
||||
<div class="container sm:pxi-0 mx-auto min-h-screen pt-24">
|
||||
<div class="flex flex-row flex-wrap items-center mx-4 sm:mx-0">
|
||||
<div class="w-full md:w-5/6 md:pl-8 lg:pl-0">
|
||||
<h1
|
||||
class="
|
||||
uppercase
|
||||
leading-none
|
||||
text-4xl text-gray-800
|
||||
font-black font-heading
|
||||
"
|
||||
>
|
||||
{{ $page.job.title }}
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
<section class="post-content mx-auto relative font-serif text-gray-700">
|
||||
<div class="mt-6 mb-8 text-gray-900" v-html="$page.job.content"></div>
|
||||
<a
|
||||
:href="$page.job.link"
|
||||
target="_blank"
|
||||
aria-current="page"
|
||||
class="
|
||||
inline-block
|
||||
bg-green-500
|
||||
text-sm
|
||||
learn-button
|
||||
hover:bg-green-600
|
||||
px-8
|
||||
py-2
|
||||
mr-2
|
||||
my-0
|
||||
rounded
|
||||
shadow
|
||||
rounded-full
|
||||
active--exact active
|
||||
"
|
||||
type="button"
|
||||
>
|
||||
{{ $page.job.button }}
|
||||
</a>
|
||||
</section>
|
||||
</div>
|
||||
<div
|
||||
class="container-fluid mx-auto pt-24"
|
||||
v-for="edge in $page.allCustomCta.edges"
|
||||
:key="edge.node.id"
|
||||
>
|
||||
<CustomCTA
|
||||
v-if="edge.node.id == 'careers'"
|
||||
:title="edge.node.title"
|
||||
:link="edge.node.link"
|
||||
:image="edge.node.image"
|
||||
/>
|
||||
</div>
|
||||
</Layout>
|
||||
</template>
|
||||
|
||||
<page-query>
|
||||
query($id: ID!) {
|
||||
job(id: $id) {
|
||||
id
|
||||
title
|
||||
content
|
||||
button
|
||||
link
|
||||
}
|
||||
allCustomCta {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
title
|
||||
link
|
||||
image
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</page-query>
|
||||
|
||||
<script>
|
||||
import CustomCTA from "~/components/custom/sections/CustomCTA.vue";
|
||||
export default {
|
||||
components: {
|
||||
CustomCTA,
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
title: this.$page.job.title,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.post-content {
|
||||
font-family: "Roboto", sans-serif !important;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
ul li {
|
||||
list-style-type: disc !important;
|
||||
}
|
||||
|
||||
.learn-button {
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
@@ -1,300 +1,40 @@
|
||||
<template>
|
||||
<Layout :hideHeader="true" :disableScroll="true">
|
||||
<div
|
||||
class="container-fluid sm:pxi-0 mx-auto overflow-x-hidden py-5"
|
||||
v-if="
|
||||
$page.markdownPage.id == 'careers' ||
|
||||
$page.markdownPage.id == 'community'
|
||||
"
|
||||
>
|
||||
<CustomCTA
|
||||
:header="true"
|
||||
:image="$page.markdownPage.pageHeader.image"
|
||||
:title="$page.markdownPage.pageHeader.title"
|
||||
/>
|
||||
<!-- <div class="singlePic">
|
||||
<g-image
|
||||
class="w-100 mx-auto"
|
||||
v-if="$page.markdownPage.solution_image"
|
||||
:src="$page.markdownPage.solution_image.src"
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
<div
|
||||
class="container sm:pxi-0 mx-auto overflow-x-hidden py-5"
|
||||
v-if="
|
||||
$page.markdownPage.id !== 'careers' &&
|
||||
$page.markdownPage.id !== 'community' &&
|
||||
$page.markdownPage.id !== 'tft'
|
||||
"
|
||||
>
|
||||
<div class="container sm:pxi-0 mx-auto overflow-x-hidden py-5">
|
||||
<Header
|
||||
v-if="
|
||||
$page.markdownPage.id !== 'contact' &&
|
||||
$page.markdownPage.header_title &&
|
||||
$page.markdownPage.header_title != ''
|
||||
"
|
||||
:id="$page.markdownPage.id"
|
||||
:title="$page.markdownPage.header_title"
|
||||
:slogan="$page.markdownPage.header_slogan"
|
||||
:image="$page.markdownPage.header_image"
|
||||
:altImg="$page.markdownPage.header_altImg"
|
||||
:excerpt="$page.markdownPage.header_excerpt"
|
||||
:button="$page.markdownPage.button"
|
||||
:link="$page.markdownPage.link"
|
||||
/>
|
||||
<!-- <SignUp
|
||||
v-if="$page.markdownPage.signup"
|
||||
:signup="$page.markdownPage.signup"
|
||||
/> -->
|
||||
|
||||
<!-- <Comparison
|
||||
v-if="
|
||||
$page.markdownPage.comparisonSecs &&
|
||||
$page.markdownPage.comparisonSecs.length > 0
|
||||
"
|
||||
:main="$page.markdownPage.comparisonMain"
|
||||
:sections="$page.markdownPage.comparisonSecs"
|
||||
/> -->
|
||||
|
||||
<TFTFuel
|
||||
v-if="
|
||||
$page.markdownPage.comparisonSecs &&
|
||||
$page.markdownPage.comparisonSecs.length > 0
|
||||
"
|
||||
:main="$page.markdownPage.comparisonMain"
|
||||
:sections="$page.markdownPage.comparisonSecs"
|
||||
/>
|
||||
</div>
|
||||
<!-- <g-image
|
||||
v-if="
|
||||
$page.markdownPage.id !== 'careers' && $page.markdownPage.solution_image
|
||||
"
|
||||
class="mx-auto mt-10"
|
||||
:src="$page.markdownPage.solution_image.src"
|
||||
/> -->
|
||||
|
||||
<!-- tft page -->
|
||||
<div
|
||||
class="container_tft sm:pxi-0 mx-auto overflow-x-hidden py-5"
|
||||
v-if="$page.markdownPage.id == 'tft'"
|
||||
>
|
||||
<Header
|
||||
v-if="
|
||||
|
||||
$page.markdownPage.header_title &&
|
||||
$page.markdownPage.header_title != ''
|
||||
"
|
||||
:id="$page.markdownPage.id"
|
||||
:title="$page.markdownPage.header_title"
|
||||
:slogan="$page.markdownPage.header_slogan"
|
||||
:image="$page.markdownPage.header_image"
|
||||
:altImg="$page.markdownPage.header_altImg"
|
||||
:excerpt="$page.markdownPage.header_excerpt"
|
||||
:button="$page.markdownPage.button"
|
||||
:link="$page.markdownPage.link"
|
||||
/>
|
||||
<CallToAction
|
||||
:id="$page.markdownPage.id"
|
||||
v-if="$page.markdownPage.id == 'tft'"
|
||||
:cta="$page.markdownPage.cta"
|
||||
/>
|
||||
|
||||
<BrandPanel
|
||||
:id="$page.markdownPage.id"
|
||||
:brand="$page.markdownPage.brandPanel"
|
||||
v-if="$page.markdownPage.brandPanel"
|
||||
:diveInto="false"
|
||||
/>
|
||||
|
||||
<NewCard
|
||||
v-if="$page.markdownPage.card"
|
||||
:id="$page.markdownPage.id"
|
||||
:card="$page.markdownPage.card"
|
||||
/>
|
||||
|
||||
<Slider
|
||||
v-if="$page.markdownPage.carousel"
|
||||
:slides="$page.markdownPage.carousel"
|
||||
:main="$page.markdownPage.sliderMain"
|
||||
/>
|
||||
|
||||
<TFTFuel
|
||||
v-if="$page.markdownPage.tftUses.length > 0"
|
||||
:id="$page.markdownPage.id"
|
||||
:main="$page.markdownPage.useTftMain"
|
||||
:sections="$page.markdownPage.tftUses"
|
||||
:farmingProcess="false"
|
||||
/>
|
||||
|
||||
<TFTFuel
|
||||
v-if="$page.markdownPage.farmingProcess.length > 0"
|
||||
:id="$page.markdownPage.id"
|
||||
:main="$page.markdownPage.farmingMain"
|
||||
:sections="$page.markdownPage.farmingProcess"
|
||||
:farmingProcess="true"
|
||||
/>
|
||||
|
||||
<TFTFuel
|
||||
v-if="$page.markdownPage.cultivationProcess.length > 0"
|
||||
:id="$page.markdownPage.id"
|
||||
:main="$page.markdownPage.cultivationMain"
|
||||
:sections="$page.markdownPage.cultivationProcess"
|
||||
:cultivationProcess="true"
|
||||
/>
|
||||
|
||||
<g-image class ="lg:py-10"
|
||||
v-if="$page.markdownPage.solution_image"
|
||||
:src="$page.markdownPage.solution_image"
|
||||
/>
|
||||
|
||||
<BrandPanel
|
||||
:id="$page.markdownPage.id"
|
||||
:brand="$page.markdownPage.brandPanel2"
|
||||
v-if="$page.markdownPage.brandPanel2"
|
||||
:diveInto="true"
|
||||
/>
|
||||
|
||||
<CallToActionbg1
|
||||
v-if="$page.markdownPage.cta4"
|
||||
:cta="$page.markdownPage.cta4"
|
||||
:id="$page.markdownPage.id"
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container sm:pxi-0 mx-auto py-5 overflow-visible">
|
||||
<CallToAction
|
||||
:id="$page.markdownPage.id"
|
||||
v-if="
|
||||
$page.markdownPage.cta && $page.markdownPage.id == 'why'
|
||||
|
||||
"
|
||||
:cta="$page.markdownPage.cta"
|
||||
/>
|
||||
|
||||
<AppListItem
|
||||
v-if="
|
||||
$page.markdownPage.appData && $page.markdownPage.appData.length > 0
|
||||
"
|
||||
:products="$page.markdownPage.appData"
|
||||
:main="$page.markdownPage.appsMain"
|
||||
/>
|
||||
<ShowcaseProducts
|
||||
v-if="
|
||||
$page.markdownPage.productData &&
|
||||
$page.markdownPage.productData.length > 0
|
||||
"
|
||||
:id="$page.markdownPage.id"
|
||||
:main="$page.markdownPage.productsMain"
|
||||
:products="$page.markdownPage.productData"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
|
||||
<Partenerships
|
||||
v-if="
|
||||
$page.markdownPage.partnerships &&
|
||||
$page.markdownPage.partnerships.length > 0
|
||||
"
|
||||
:id="$page.markdownPage.id"
|
||||
:main="$page.markdownPage.partenershipsMain"
|
||||
:partnerships="$page.markdownPage.partnerships"
|
||||
/>
|
||||
|
||||
<CenteredAccordion
|
||||
v-if="$page.markdownPage.faqContent && $page.markdownPage.id == 'faq'"
|
||||
:main="$page.markdownPage.faqMain"
|
||||
:faqs="$page.markdownPage.faqContent"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
class="mt-20"
|
||||
:id="$page.markdownPage.id"
|
||||
v-if="$page.markdownPage.cta3"
|
||||
:cta="$page.markdownPage.cta3"
|
||||
/>
|
||||
<CallToAction
|
||||
:id="$page.markdownPage.id"
|
||||
v-if="$page.markdownPage.cta2"
|
||||
:cta="$page.markdownPage.cta2"
|
||||
/>
|
||||
|
||||
<!-- <ShowcaseProducts
|
||||
class="my-20"
|
||||
v-if="
|
||||
$page.markdownPage.productData &&
|
||||
$page.markdownPage.productData.length > 0
|
||||
"
|
||||
:id="$page.markdownPage.id"
|
||||
:main="$page.markdownPage.productsMain"
|
||||
:products="$page.markdownPage.productData"
|
||||
/> -->
|
||||
|
||||
<SolutionsHeader
|
||||
class="mt-0"
|
||||
v-if="$page.markdownPage.header"
|
||||
:header="$page.markdownPage.header"
|
||||
/>
|
||||
|
||||
<g-image
|
||||
v-if="$page.markdownPage.solution_image2"
|
||||
:src="$page.markdownPage.solution_image2.src"
|
||||
/>
|
||||
|
||||
<SolutionsHeader
|
||||
v-if="$page.markdownPage.header2"
|
||||
:header="$page.markdownPage.header2"
|
||||
/>
|
||||
|
||||
<!-- <SolutionsHeader
|
||||
v-if="$page.markdownPage.header3"
|
||||
:header="$page.markdownPage.header3"
|
||||
/> -->
|
||||
|
||||
<logoShowcase
|
||||
v-if="$page.markdownPage.logos.length > 0"
|
||||
:id="$page.markdownPage.id"
|
||||
:logos="$page.markdownPage.logos"
|
||||
:main="$page.markdownPage.logosMain"
|
||||
/>
|
||||
|
||||
<FourTiersWithToggle
|
||||
v-if="$page.markdownPage.jobs.length > 0"
|
||||
:pricingPlans="$page.markdownPage.jobs"
|
||||
:main="$page.markdownPage.jobsMain"
|
||||
/>
|
||||
|
||||
<SolutionsHeader
|
||||
class="mt-0"
|
||||
v-if="$page.markdownPage.header4"
|
||||
:header="$page.markdownPage.header4"
|
||||
/>
|
||||
|
||||
<GetInTouch
|
||||
v-if="
|
||||
$page.markdownPage.contactData &&
|
||||
$page.markdownPage.contactData.length > 0
|
||||
"
|
||||
:contacts="$page.markdownPage.contactData"
|
||||
/>
|
||||
|
||||
<SignUp
|
||||
v-if="$page.markdownPage.signup"
|
||||
:signup="$page.markdownPage.signup"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="container-fluid mx-auto"
|
||||
v-for="edge in $page.allCustomCta.edges"
|
||||
:key="edge.node.id"
|
||||
>
|
||||
<CustomCTA
|
||||
v-if="edge.node.id == $page.markdownPage.id"
|
||||
:title="edge.node.title"
|
||||
:link="edge.node.link"
|
||||
:image="edge.node.image"
|
||||
|
||||
<Comparison
|
||||
v-if="
|
||||
$page.markdownPage.comparisonSecs &&
|
||||
$page.markdownPage.comparisonSecs.length > 0
|
||||
"
|
||||
:main="$page.markdownPage.comparisonMain"
|
||||
:sections="$page.markdownPage.comparisonSecs"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
v-if="$page.markdownPage.cta"
|
||||
:cta="$page.markdownPage.cta"
|
||||
/>
|
||||
|
||||
<g-image
|
||||
v-if="$page.markdownPage.solution_image"
|
||||
:src="$page.markdownPage.solution_image.src"
|
||||
/>
|
||||
</div>
|
||||
</Layout>
|
||||
@@ -306,61 +46,15 @@
|
||||
id
|
||||
path
|
||||
excerpt
|
||||
metaTitle
|
||||
metaDesc
|
||||
metaImg
|
||||
header_excerpt
|
||||
header_altImg
|
||||
header_title
|
||||
header_image
|
||||
header_slogan
|
||||
button
|
||||
link
|
||||
solution_image
|
||||
solution_image2
|
||||
header{
|
||||
title
|
||||
subtitle
|
||||
content
|
||||
btn1
|
||||
link1
|
||||
btn2
|
||||
link2
|
||||
}
|
||||
header2{
|
||||
title
|
||||
subtitle
|
||||
content
|
||||
btn1
|
||||
link1
|
||||
btn2
|
||||
link2
|
||||
}
|
||||
header4{
|
||||
title
|
||||
subtitle
|
||||
content
|
||||
btn1
|
||||
link1
|
||||
btn2
|
||||
link2
|
||||
}
|
||||
productsMain{
|
||||
id
|
||||
title
|
||||
subtitle
|
||||
content
|
||||
button
|
||||
link
|
||||
# image
|
||||
}
|
||||
productData{
|
||||
id
|
||||
title
|
||||
content
|
||||
image
|
||||
button
|
||||
link
|
||||
}
|
||||
comparisonMain{
|
||||
id
|
||||
@@ -368,8 +62,6 @@
|
||||
description
|
||||
button
|
||||
link
|
||||
button2
|
||||
link2
|
||||
}
|
||||
comparisonSecs{
|
||||
id
|
||||
@@ -377,44 +69,17 @@
|
||||
title
|
||||
content
|
||||
}
|
||||
logosMain {
|
||||
id
|
||||
title
|
||||
}
|
||||
logos{
|
||||
id
|
||||
image
|
||||
url
|
||||
}
|
||||
cta{
|
||||
title
|
||||
slogan
|
||||
content
|
||||
button
|
||||
link
|
||||
}
|
||||
cta2{
|
||||
title
|
||||
slogan
|
||||
content
|
||||
button
|
||||
link
|
||||
}
|
||||
cta3{
|
||||
id
|
||||
title
|
||||
content
|
||||
button
|
||||
link
|
||||
}
|
||||
cta4{
|
||||
title1
|
||||
title2
|
||||
slogan
|
||||
content
|
||||
button
|
||||
link
|
||||
}
|
||||
|
||||
brandPanel{
|
||||
id
|
||||
title
|
||||
@@ -424,130 +89,6 @@
|
||||
btnTxt
|
||||
image
|
||||
}
|
||||
brandPanel2{
|
||||
id
|
||||
title
|
||||
subtitle
|
||||
content
|
||||
sourceUrl
|
||||
btnTxt
|
||||
image
|
||||
}
|
||||
partenershipsMain{
|
||||
id
|
||||
title
|
||||
slogan
|
||||
content
|
||||
link
|
||||
link2
|
||||
button
|
||||
button2
|
||||
}
|
||||
partnerships {
|
||||
id
|
||||
title
|
||||
img
|
||||
content
|
||||
}
|
||||
faqMain{
|
||||
id
|
||||
title
|
||||
}
|
||||
faqContent{
|
||||
id
|
||||
question
|
||||
content
|
||||
}
|
||||
jobsMain{
|
||||
id
|
||||
# title
|
||||
# button1
|
||||
# button2
|
||||
excerpt
|
||||
}
|
||||
jobs{
|
||||
id
|
||||
title
|
||||
excerpt
|
||||
price
|
||||
duration
|
||||
button
|
||||
link
|
||||
includeTitle
|
||||
options
|
||||
}
|
||||
contactData{
|
||||
id
|
||||
title
|
||||
mail
|
||||
phone
|
||||
}
|
||||
pageHeader {
|
||||
id
|
||||
title
|
||||
image
|
||||
}
|
||||
|
||||
carousel {
|
||||
id
|
||||
img
|
||||
}
|
||||
|
||||
sliderMain {
|
||||
id
|
||||
title
|
||||
subtitle
|
||||
content
|
||||
}
|
||||
|
||||
card{
|
||||
id
|
||||
img
|
||||
title
|
||||
content
|
||||
button
|
||||
link
|
||||
}
|
||||
useTftMain {
|
||||
id
|
||||
image
|
||||
}
|
||||
tftUses{
|
||||
id
|
||||
title
|
||||
content
|
||||
}
|
||||
farmingMain {
|
||||
id
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
farmingProcess{
|
||||
id
|
||||
image
|
||||
content
|
||||
}
|
||||
|
||||
cultivationMain {
|
||||
id
|
||||
title
|
||||
subtitle
|
||||
}
|
||||
cultivationProcess{
|
||||
id
|
||||
image
|
||||
content
|
||||
}
|
||||
}
|
||||
allCustomCta {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
title
|
||||
link
|
||||
image
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -558,25 +99,17 @@ import NewCard from "~/components/marketing/sections/cta-sections/NewCard.vue";
|
||||
import Header from "~/components/marketing/sections/cta-sections/Header.vue";
|
||||
import VerticalNav from "~/components/custom/Navbar/VerticalNav.vue";
|
||||
import GetInTouch from "~/components/custom/Navbar/Getintouch.vue";
|
||||
import ShowcaseProducts from "~/components/marketing/sections/cta-sections/ShowcaseProducts.vue";
|
||||
import SolutionsHeader from "~/components/custom/sections/header/HeaderSection.vue";
|
||||
import HowItWorks from "~/components/custom/sections/HowItWorks.vue";
|
||||
import Features from "~/components/custom/sections/Features.vue";
|
||||
import logoShowcase from "~/components/marketing/sections/cta-sections/logoShowcase.vue";
|
||||
import CallToAction from "~/components/custom/sections/CallToAction.vue";
|
||||
import CallToActionbg1 from "~/components/custom/sections/CallToActionbg1.vue";
|
||||
import SignUp from "~/components/custom/sections/SignUp.vue";
|
||||
import Comparison from "~/components/custom/sections/Comparison.vue";
|
||||
import TFTFuel from "~/components/marketing/sections/team-sections/with_large_images.vue";
|
||||
import Roadmap from "~/components/custom/sections/Roadmap.vue";
|
||||
import FourTiersWithToggle from "~/components/marketing/sections/pricing/four_tiers_with_toggle.vue";
|
||||
import WithComparisonTable from "~/components/marketing/sections/pricing/with_comparison_table.vue";
|
||||
import BrandPanel from "~/components/marketing/sections/cta-sections/BrandPanel.vue";
|
||||
import AppListItem from "~/components/AppListItem.vue";
|
||||
import Partenerships from "~/components/marketing/sections/team-sections/grid_with_large_round_images.vue";
|
||||
import CenteredAccordion from "~/components/marketing/sections/faq-sections/CenteredAccordion.vue";
|
||||
import CustomCTA from "~/components/custom/sections/CustomCTA.vue";
|
||||
import Slider from "~/components/custom/Slider.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -585,82 +118,30 @@ export default {
|
||||
VerticalNav,
|
||||
GetInTouch,
|
||||
SolutionsHeader,
|
||||
ShowcaseProducts,
|
||||
HowItWorks,
|
||||
Features,
|
||||
logoShowcase,
|
||||
CallToAction,
|
||||
CallToActionbg1,
|
||||
SignUp,
|
||||
Comparison,
|
||||
TFTFuel,
|
||||
Roadmap,
|
||||
FourTiersWithToggle,
|
||||
WithComparisonTable,
|
||||
BrandPanel,
|
||||
AppListItem,
|
||||
Partenerships,
|
||||
CenteredAccordion,
|
||||
CustomCTA,
|
||||
Slider,
|
||||
},
|
||||
|
||||
metaInfo() {
|
||||
return {
|
||||
title: this.pageName,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
getImg() {
|
||||
let img = "";
|
||||
if (process.isClient) {
|
||||
img = `${window.location.origin}${this.$page.markdownPage.metaImg.src}`;
|
||||
}
|
||||
return img;
|
||||
},
|
||||
pageName() {
|
||||
let path = this.$route.path.substring(1);
|
||||
let name = path[0].toUpperCase() + path.slice(1);
|
||||
return name;
|
||||
},
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
title: "",
|
||||
titleTemplate: this.$page.markdownPage.metaTitle,
|
||||
meta: [
|
||||
{
|
||||
key: "description",
|
||||
name: "description",
|
||||
content: this.$page.markdownPage.metaDesc,
|
||||
},
|
||||
{
|
||||
key: "og:title",
|
||||
property: "og:title",
|
||||
content: this.$page.markdownPage.metaTitle,
|
||||
},
|
||||
{
|
||||
key: "og:description",
|
||||
property: "og:description",
|
||||
content: this.$page.markdownPage.metaDesc,
|
||||
},
|
||||
{
|
||||
key: "og:image",
|
||||
property: "og:image",
|
||||
content: this.getImg,
|
||||
},
|
||||
{
|
||||
key: "twitter:description",
|
||||
name: "twitter:description",
|
||||
content: this.$page.markdownPage.metaDesc,
|
||||
},
|
||||
{
|
||||
key: "twitter:image",
|
||||
property: "twitter:image",
|
||||
content: this.getImg,
|
||||
},
|
||||
{
|
||||
key: "twitter:title",
|
||||
property: "twitter:title",
|
||||
content: this.$page.markdownPage.metaTitle,
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
@@ -706,4 +187,4 @@ export default {
|
||||
.gridsome-highlight pre[class*="language-"].line-numbers {
|
||||
padding-left: 2.8em;
|
||||
}
|
||||
</style>
|
||||
</style> >
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
<template>
|
||||
<Layout :hideHeader="true" :disableScroll="true">
|
||||
<TagFilterHeader
|
||||
:tags="memberships"
|
||||
:selected="$page.membership.title"
|
||||
v-if="$page.allMembership.edges.length > 1"
|
||||
/>
|
||||
<TagFilterHeader :tags="memberships" :selected="$page.membership.title" v-if="$page.allMembership.edges.length > 1"/>
|
||||
<div class="container sm:pxi-0 mx-auto mt-8 overflow-x-hidden">
|
||||
<div class="mx-4 sm:mx-0">
|
||||
<h1 class="pb-0 mb-0 text-5xl font-medium capitalize">
|
||||
{{ $page.membership.title.replace("_", " ") }}
|
||||
{{ $page.membership.title }}
|
||||
</h1>
|
||||
<p class="text-gray-700 text-xl">
|
||||
<span class="self-center">{{ items.length }} People</span>
|
||||
<span class="self-center"
|
||||
>{{ $page.membership.belongsTo.totalCount }} People</span
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -19,10 +17,9 @@
|
||||
|
||||
<div class="flex flex-wrap with-large pt-8 pb-8 mx-4 sm:-mx-4">
|
||||
<PostListItem
|
||||
:showtags="true"
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
:record="item"
|
||||
v-for="edge in $page.membership.belongsTo.edges"
|
||||
:key="edge.node.id"
|
||||
:record="edge.node"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -56,14 +53,13 @@
|
||||
cities
|
||||
private
|
||||
image
|
||||
category
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
allMembership(filter: {title: {in: ["cofounders", "tech", "foundation", "ambassadors", "matchmakers", "farmers", "aci_members", "partners", "wisdom_council", "technology_council", "grid_guardians"]}}){
|
||||
allMembership(filter: {title: {in: ["foundation", "tech"]}}){
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
@@ -88,20 +84,12 @@ export default {
|
||||
|
||||
computed: {
|
||||
memberships() {
|
||||
var res = [{ title: "All", path: "/people" }];
|
||||
var res = [{ title: "All", path: "/team" }];
|
||||
this.$page.allMembership.edges.forEach((edge) =>
|
||||
res.push({ title: edge.node.title, path: edge.node.path })
|
||||
);
|
||||
return res;
|
||||
},
|
||||
items() {
|
||||
let foundationItems = [];
|
||||
this.$page.membership.belongsTo.edges.map((edge) => {
|
||||
if (edge.node.category.includes("foundation"))
|
||||
foundationItems.push(edge.node);
|
||||
});
|
||||
return foundationItems;
|
||||
},
|
||||
},
|
||||
|
||||
metaInfo() {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
<template>
|
||||
<Layout :hideHeader="true" :disableScroll="true">
|
||||
<div class="container sm:pxi-0 mx-auto overflow-x-hidden pt-20 px-4">
|
||||
<div class="container sm:pxi-0 mx-auto overflow-x-hidden pt-20">
|
||||
<div class="pt-8">
|
||||
<Alert v-if="showAlert" @clicked="linkCopied" />
|
||||
|
||||
<section class="post-header container mx-auto px-0 mb-4 border-b">
|
||||
<h1 class="text-5xl font-medium leading-none mt-0">
|
||||
{{ $page.news.title }}
|
||||
@@ -26,15 +24,7 @@
|
||||
<g-image
|
||||
:src="author.image"
|
||||
:alt="author.name"
|
||||
class="
|
||||
h-8
|
||||
w-8
|
||||
sm:h-10
|
||||
sm:w-10
|
||||
rounded-full
|
||||
bg-gray-200
|
||||
border-2 border-white
|
||||
"
|
||||
class="h-8 w-8 sm:h-10 sm:w-10 rounded-full bg-gray-200 border-2 border-white"
|
||||
/>
|
||||
</g-link>
|
||||
</li>
|
||||
@@ -71,16 +61,6 @@
|
||||
</g-link>
|
||||
</p>
|
||||
</div>
|
||||
<share-it
|
||||
icons
|
||||
:targets="['twitter', 'linkedin', 'facebook']"
|
||||
class="ml-auto"
|
||||
/>
|
||||
<font-awesome
|
||||
:icon="['fas', 'link']"
|
||||
class="cursor-pointer"
|
||||
@click="copyLink"
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -90,14 +70,7 @@
|
||||
|
||||
<div class="py-12">
|
||||
<section
|
||||
class="
|
||||
post-content
|
||||
container
|
||||
mx-auto
|
||||
relative
|
||||
font-serif
|
||||
text-gray-700
|
||||
"
|
||||
class="post-content container mx-auto relative font-serif text-gray-700"
|
||||
>
|
||||
<div
|
||||
class="post-content-text text-xl"
|
||||
@@ -110,19 +83,7 @@
|
||||
v-for="tag in $page.news.tags"
|
||||
:key="tag.id"
|
||||
:to="tag.path"
|
||||
class="
|
||||
text-xs
|
||||
bg-transparent
|
||||
hover:text-blue-700
|
||||
py-2
|
||||
px-4
|
||||
mr-2
|
||||
border
|
||||
hover:border-blue-500
|
||||
border-gray-600
|
||||
text-gray-700
|
||||
rounded-full
|
||||
"
|
||||
class="text-xs bg-transparent hover:text-blue-700 py-2 px-4 mr-2 border hover:border-blue-500 border-gray-600 text-gray-700 rounded-full"
|
||||
>{{ tag.title }}</g-link
|
||||
>
|
||||
</section>
|
||||
@@ -202,97 +163,33 @@
|
||||
path
|
||||
}
|
||||
}
|
||||
|
||||
metadata {
|
||||
siteUrl
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
</page-query>
|
||||
|
||||
<script>
|
||||
import PostListItem from "~/components/custom/Cards/PostListItem.vue";
|
||||
import Alert from "~/components/custom/Alert.vue";
|
||||
|
||||
|
||||
export default {
|
||||
components: {
|
||||
PostListItem,
|
||||
Alert,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showAlert: false,
|
||||
};
|
||||
},
|
||||
|
||||
metaInfo() {
|
||||
return {
|
||||
title: "",
|
||||
titleTemplate: `ThreeFold | ${this.$page.news.title}`,
|
||||
meta: [
|
||||
{
|
||||
key: "description",
|
||||
name: "description",
|
||||
content: this.$page.news.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:title",
|
||||
property: "og:title",
|
||||
content: this.$page.news.title,
|
||||
},
|
||||
{
|
||||
key: "og:description",
|
||||
property: "og:description",
|
||||
content: this.$page.news.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:image",
|
||||
property: "og:image",
|
||||
content: this.getCoverImage,
|
||||
},
|
||||
{
|
||||
key: "twitter:description",
|
||||
name: "twitter:description",
|
||||
content: this.$page.news.excerpt,
|
||||
},
|
||||
{
|
||||
key: "twitter:image",
|
||||
property: "twitter:image",
|
||||
content: this.getCoverImage,
|
||||
},
|
||||
{
|
||||
key: "twitter:title",
|
||||
property: "twitter:title",
|
||||
content: this.$page.news.title,
|
||||
},
|
||||
],
|
||||
title: this.$page.news.title,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
copyLink() {
|
||||
const el = document.createElement("input");
|
||||
el.value = window.location.href;
|
||||
document.body.appendChild(el);
|
||||
el.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(el);
|
||||
this.showAlert = true;
|
||||
},
|
||||
linkCopied(val) {
|
||||
this.showAlert = val;
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
getCoverImage() {
|
||||
let coverImage = "";
|
||||
const cover = this.$page.news.image;
|
||||
if (cover != null) {
|
||||
coverImage = `${this.getBaseUrl}${this.$page.news.image.src}`;
|
||||
}
|
||||
return coverImage;
|
||||
},
|
||||
getBaseUrl() {
|
||||
return this.$page.metadata.siteUrl;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import url("https://fonts.googleapis.com/css2?family=Roboto&display=swap");
|
||||
.post-card-excerpt,
|
||||
.post-content-text {
|
||||
font-family: "Roboto", sans-serif !important;
|
||||
line-height: 1.2;
|
||||
}
|
||||
</style>
|
||||
@@ -1,14 +1,9 @@
|
||||
<template>
|
||||
<Layout>
|
||||
<TagFilterHeader
|
||||
:tags="tags"
|
||||
selected="all"
|
||||
v-if="$page.tags.edges.length > 1"
|
||||
/>
|
||||
<TagFilterHeader :tags="tags" selected="all" v-if="$page.tags.edges.length > 1"/>
|
||||
<div class="container mt-8 sm:pxi-0 mx-auto overflow-x-hidden">
|
||||
<div class="flex flex-wrap with-large pt-8 pb-8 mx-4 sm:-mx-4">
|
||||
<PostListItem
|
||||
:showtags="true"
|
||||
v-for="partner in $page.entries.edges"
|
||||
:key="partner.id"
|
||||
:record="partner.node"
|
||||
@@ -21,7 +16,7 @@
|
||||
|
||||
<page-query>
|
||||
query ($private: Int){
|
||||
entries: allProject (sortBy: "rank", order: ASC, filter: { private: { ne: $private }, category: { contains: ["foundation"]}}){
|
||||
entries: allProject (sortBy: "rank", order: DESC, filter: { private: { ne: $private }, tags: { id: {in: ["tech", "foundation"]}}}){
|
||||
totalCount
|
||||
edges {
|
||||
node {
|
||||
@@ -40,31 +35,21 @@ query ($private: Int){
|
||||
image(width:800)
|
||||
timeToRead
|
||||
logo
|
||||
category
|
||||
tags{
|
||||
id
|
||||
path
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
markdownPage(id: "home") {
|
||||
id
|
||||
metaImg
|
||||
}
|
||||
|
||||
tags: allProjectTag (filter: { title: {in: ["blockchain", "experience", "technology", "farming", "community", "infrastructure", "impact"]}}) {
|
||||
tags: allProjectTag (filter: { title: {in: ["tech", "foundation"]}}) {
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
title
|
||||
path
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</page-query>
|
||||
|
||||
<script>
|
||||
@@ -84,65 +69,9 @@ export default {
|
||||
);
|
||||
return res;
|
||||
},
|
||||
getImg() {
|
||||
let image = "";
|
||||
if (process.isClient) {
|
||||
image = `${window.location.origin}${this.img}`;
|
||||
}
|
||||
return image;
|
||||
},
|
||||
img() {
|
||||
if (!this.$page.markdownPage.metaImg) return "";
|
||||
if (this.$page.markdownPage.metaImg.src)
|
||||
return this.$page.markdownPage.metaImg.src;
|
||||
return this.$page.markdownPage.metaImg;
|
||||
},
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
title: "",
|
||||
titleTemplate: "ThreeFold | Partners",
|
||||
meta: [
|
||||
{
|
||||
key: "description",
|
||||
name: "description",
|
||||
content:
|
||||
"Meet the incredible organizations co-creating the peer-to-peer alongside the ThreeFold Foundation.",
|
||||
},
|
||||
{
|
||||
key: "og:title",
|
||||
property: "og:title",
|
||||
content: "ThreeFold | Partners",
|
||||
},
|
||||
{
|
||||
key: "og:description",
|
||||
property: "og:description",
|
||||
content:
|
||||
"Meet the incredible organizations co-creating the peer-to-peer alongside the ThreeFold Foundation.",
|
||||
},
|
||||
{
|
||||
key: "og:image",
|
||||
property: "og:image",
|
||||
content: this.getImg,
|
||||
},
|
||||
{
|
||||
key: "twitter:description",
|
||||
name: "twitter:description",
|
||||
content:
|
||||
"Meet the incredible organizations co-creating the peer-to-peer alongside the ThreeFold Foundation.",
|
||||
},
|
||||
{
|
||||
key: "twitter:image",
|
||||
property: "twitter:image",
|
||||
content: this.getImg,
|
||||
},
|
||||
{
|
||||
key: "twitter:title",
|
||||
property: "twitter:title",
|
||||
content: "ThreeFold | Partners",
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
mounted(){
|
||||
console.log(this.$page)
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,48 +1,28 @@
|
||||
<template>
|
||||
<Layout>
|
||||
<TagFilterHeader
|
||||
:tags="memberships"
|
||||
selected="all"
|
||||
v-if="$page.memberships.edges.length > 1"
|
||||
/>
|
||||
<div class="container sm:pxi-0 mx-auto mt-8 overflow-x-hidden">
|
||||
<div
|
||||
class="container sm:pxi-0 mx-auto overflow-x-hidden"
|
||||
:style="{ 'min-height': contentHeight + 'px' }"
|
||||
>
|
||||
<div class="flex flex-wrap with-large pt-8 pb-8 mx-4 sm:-mx-4">
|
||||
<PostListItem
|
||||
:showtags="true"
|
||||
v-for="person in $page.entries.edges"
|
||||
:key="person.id"
|
||||
:record="person.node"
|
||||
v-for="edge in $page.entries.edges"
|
||||
:key="edge.node.id"
|
||||
:record="edge.node"
|
||||
/>
|
||||
</div>
|
||||
<div class="text-center" v-if="$page.entries.edges.length == 0">
|
||||
<h2 class="inlibe-flex mx-auto text-gray-700 w-3/4">No results</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pagination flex justify-center mb-8">
|
||||
<Pagination
|
||||
:baseUrl="baseurl"
|
||||
:currentPage="$page.entries.pageInfo.currentPage"
|
||||
:totalPages="$page.entries.pageInfo.totalPages"
|
||||
:maxVisibleButtons="5"
|
||||
v-if="$page.entries.pageInfo.totalPages > 1 && $page.entries.edges.length > 0"
|
||||
/>
|
||||
</div>
|
||||
</Layout>
|
||||
</template>
|
||||
|
||||
<page-query>
|
||||
query($page: Int){
|
||||
entries: allPerson (perPage: 25, page: $page, sortBy: "rank", order: ASC, filter: {category: { contains: ["foundation"]}}) @paginate{
|
||||
query ($private: Int){
|
||||
entries: allPerson (sortBy: "rank", order: DESC, filter: { private: { ne: $private }}){
|
||||
totalCount
|
||||
pageInfo {
|
||||
totalPages
|
||||
currentPage
|
||||
}
|
||||
edges {
|
||||
node {
|
||||
path
|
||||
content
|
||||
excerpt
|
||||
content
|
||||
name
|
||||
rank
|
||||
bio
|
||||
@@ -52,21 +32,11 @@ query($page: Int){
|
||||
cities
|
||||
image(width:800)
|
||||
private
|
||||
memberships {
|
||||
id
|
||||
path
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
markdownPage(id: "home") {
|
||||
id
|
||||
metaImg
|
||||
}
|
||||
|
||||
memberships: allMembership(filter: {title: {in: ["cofounders", "tech", "foundation", "ambassadors", "matchmakers", "farmers", "aci_members", "partners", "wisdom_council", "technology_council", "grid_guardians"]}}){
|
||||
memberships: allMembership{
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
@@ -76,80 +46,30 @@ query($page: Int){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</page-query>
|
||||
|
||||
<script>
|
||||
import PostListItem from "~/components/custom/Cards/PostListItem.vue";
|
||||
import TagFilterHeader from "~/components/custom/TagFilterHeader.vue";
|
||||
import Pagination from "~/components/custom/Pagination.vue";
|
||||
import Pagination from "~/components/Pagination.vue";
|
||||
import PostListItem from "~/components/PostListItem.vue";
|
||||
|
||||
export default {
|
||||
metaInfo: {
|
||||
title: "People",
|
||||
},
|
||||
components: {
|
||||
PostListItem,
|
||||
TagFilterHeader,
|
||||
Pagination
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
title: "",
|
||||
titleTemplate: "ThreeFold | People",
|
||||
meta: [
|
||||
{
|
||||
key: "description",
|
||||
name: "description",
|
||||
content: "Meet the wide range of passionate and dedicated individuals involved in the ThreeFold movement.",
|
||||
},
|
||||
{
|
||||
key: "og:title",
|
||||
property: "og:title",
|
||||
content: "ThreeFold | People",
|
||||
},
|
||||
{
|
||||
key: "og:description",
|
||||
property: "og:description",
|
||||
content: "Meet the wide range of passionate and dedicated individuals involved in the ThreeFold movement.",
|
||||
},
|
||||
{
|
||||
key: "og:image",
|
||||
property: "og:image",
|
||||
content: this.getImg,
|
||||
},
|
||||
{
|
||||
key: "twitter:description",
|
||||
name: "twitter:description",
|
||||
content: "Meet the wide range of passionate and dedicated individuals involved in the ThreeFold movement.",
|
||||
},
|
||||
{
|
||||
key: "twitter:image",
|
||||
property: "twitter:image",
|
||||
content: this.getImg,
|
||||
},
|
||||
{
|
||||
key: "twitter:title",
|
||||
property: "twitter:title",
|
||||
content: "ThreeFold | People",
|
||||
},
|
||||
],
|
||||
};
|
||||
Pagination,
|
||||
},
|
||||
computed: {
|
||||
memberships() {
|
||||
var res = [{ title: "All", path: "/people" }];
|
||||
this.$page.memberships.edges.forEach((edge) =>
|
||||
res.push({ title: edge.node.title, path: edge.node.path })
|
||||
);
|
||||
return res;
|
||||
},
|
||||
getImg() {
|
||||
let img = "";
|
||||
if (process.isClient) {
|
||||
img = `${window.location.origin}${this.$page.markdownPage.metaImg.src}`;
|
||||
}
|
||||
return img;
|
||||
},
|
||||
baseurl: function () {
|
||||
return "/people/";
|
||||
},
|
||||
contentHeight() {
|
||||
if (process.isClient) {
|
||||
return window.innerHeight - 100;
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,28 +1,17 @@
|
||||
<template>
|
||||
<Layout :hideHeader="true" :disableScroll="true">
|
||||
<div
|
||||
class="container sm:pxi-0 mx-auto min-h-screen overflow-x-hidden pt-24"
|
||||
>
|
||||
<div class="container sm:pxi-0 mx-auto min-h-screen overflow-x-hidden pt-24">
|
||||
<div class="flex flex-row flex-wrap items-center mx-4 sm:mx-0">
|
||||
<div class="w-full md:w-1/6 mx-auto sm:mx-0">
|
||||
<g-image
|
||||
:src="$page.person.image"
|
||||
class="
|
||||
rounded-full
|
||||
bg-gray-200
|
||||
w-32
|
||||
h-32
|
||||
border-4 border-gray-400
|
||||
mx-auto
|
||||
md:mx-0
|
||||
"
|
||||
class="rounded-full bg-gray-200 w-32 h-32 border-4 border-gray-400 mx-auto md:mx-0"
|
||||
></g-image>
|
||||
</div>
|
||||
<div class="w-full md:w-5/6 text-center md:text-left md:pl-8 lg:pl-0">
|
||||
<h1 class="pb-0 mb-0 mt-0 text-4xl font-medium">
|
||||
{{ $page.person.name }}
|
||||
<a
|
||||
v-if="$page.person.linkedin"
|
||||
:href="$page.person.linkedin"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
@@ -35,55 +24,33 @@
|
||||
<p class="text-gray-700 text-xl" v-if="$page.person.bio">
|
||||
{{ $page.person.bio }}
|
||||
</p>
|
||||
<div class="author-social"></div>
|
||||
<section>
|
||||
<div class="avatars">
|
||||
<div class="flex items-center">
|
||||
<div class="flex justify-between items-center">
|
||||
<ul class="list-none flex author-list m-0 py-2">
|
||||
<li
|
||||
v-for="project in $page.person.projects"
|
||||
:key="project.id"
|
||||
class="author-list-item"
|
||||
>
|
||||
<g-link :to="project.path" v-tooltip="project.title">
|
||||
<g-image
|
||||
:src="project.logo"
|
||||
:alt="project.title"
|
||||
class="
|
||||
w-20
|
||||
h-20
|
||||
rounded-full
|
||||
bg-gray-200
|
||||
border-2 border-white
|
||||
"
|
||||
/>
|
||||
</g-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="author-social">
|
||||
|
||||
</div>
|
||||
<section>
|
||||
<div class="avatars">
|
||||
<div class="flex items-center">
|
||||
<div class="flex justify-between items-center">
|
||||
<ul class="list-none flex author-list m-0 py-2">
|
||||
<li
|
||||
v-for="project in $page.person.projects"
|
||||
:key="project.id"
|
||||
class="author-list-item"
|
||||
>
|
||||
<g-link :to="project.path" v-tooltip="project.title">
|
||||
<g-image
|
||||
:src="project.logo"
|
||||
:alt="project.title"
|
||||
class="w-20 h-20 rounded-full bg-gray-200 border-2 border-white"
|
||||
/>
|
||||
</g-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<g-link
|
||||
v-for="membership in $page.person.memberships"
|
||||
:key="membership.id"
|
||||
:to="membership.path"
|
||||
class="
|
||||
text-xs
|
||||
bg-transparent
|
||||
hover:text-blue-700
|
||||
py-2
|
||||
px-4
|
||||
mr-2
|
||||
border
|
||||
hover:border-blue-500
|
||||
border-gray-600
|
||||
text-gray-700
|
||||
rounded-full
|
||||
"
|
||||
>{{ membership.title }}</g-link
|
||||
>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -99,14 +66,16 @@
|
||||
</section>
|
||||
|
||||
<div class="pt-8 border-b mx-4 sm:-mx-4"></div>
|
||||
<!--
|
||||
|
||||
<div class="flex flex-wrap pt-8 pb-8 mx-4 sm:-mx-4">
|
||||
<PostListItem
|
||||
v-for="edge in $page.person.belongsTo.edges"
|
||||
:key="edge.node.id"
|
||||
:record="edge.node"
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</Layout>
|
||||
</template>
|
||||
@@ -175,7 +144,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
memberships: allMembership{
|
||||
memberships: allMembership(filter: {title: {in: ["foundation", "tech"]}}){
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
@@ -202,60 +171,22 @@ export default {
|
||||
return pluralize("post", this.$page.person.belongsTo.totalCount);
|
||||
},
|
||||
|
||||
memberships() {
|
||||
var all = [];
|
||||
this.$page.memberships.edges.forEach((edgs) => all.push(edge.node.title));
|
||||
var res = [];
|
||||
this.$page.person.memberships.forEach(function (membership) {
|
||||
if (all.includes(membership.title)) {
|
||||
res.push(membership);
|
||||
memberships(){
|
||||
var all = []
|
||||
this.$page.memberships.edges.forEach((edgs) => all.push(edge.node.title))
|
||||
var res = []
|
||||
this.$page.person.memberships.forEach(function(membership){
|
||||
if (all.includes(membership.title)){
|
||||
res.push(membership)
|
||||
}
|
||||
});
|
||||
return res;
|
||||
},
|
||||
return res
|
||||
}
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
title: "",
|
||||
titleTemplate: `ThreeFold | ${this.$page.person.name}`,
|
||||
meta: [
|
||||
{
|
||||
key: "description",
|
||||
name: "description",
|
||||
content: this.$page.person.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:title",
|
||||
property: "og:title",
|
||||
content: this.$page.person.name,
|
||||
},
|
||||
{
|
||||
key: "og:description",
|
||||
property: "og:description",
|
||||
content: this.$page.person.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:image",
|
||||
property: "og:image",
|
||||
content: this.$page.person.image.src,
|
||||
},
|
||||
{
|
||||
key: "twitter:description",
|
||||
name: "twitter:description",
|
||||
content: this.$page.person.excerpt,
|
||||
},
|
||||
{
|
||||
key: "twitter:image",
|
||||
property: "twitter:image",
|
||||
content: this.$page.person.image.src,
|
||||
},
|
||||
{
|
||||
key: "twitter:title",
|
||||
property: "twitter:title",
|
||||
content: this.$page.person.name,
|
||||
},
|
||||
],
|
||||
title: this.$page.person.name,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -5,28 +5,20 @@
|
||||
<div class="w-full md:w-1/6 mx-auto sm:mx-0">
|
||||
<g-image
|
||||
:src="$page.project.logo"
|
||||
class="
|
||||
rounded-full
|
||||
bg-gray-200
|
||||
w-32
|
||||
h-32
|
||||
border-4 border-gray-400
|
||||
mx-auto
|
||||
md:mx-0
|
||||
"
|
||||
class="rounded-full bg-gray-200 w-32 h-32 border-4 border-gray-400 mx-auto md:mx-0"
|
||||
></g-image>
|
||||
</div>
|
||||
<div class="w-full md:w-5/6 text-center md:text-left md:pl-8 lg:pl-0">
|
||||
<h1 class="pb-0 mb-0 mt-0 text-4xl font-medium">
|
||||
{{ $page.project.title }}
|
||||
<!-- <a
|
||||
<a
|
||||
:href="$page.project.linkedin"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="text-gray-400 hover:text-black"
|
||||
>
|
||||
<font-awesome :icon="['fab', 'linkedin']" />
|
||||
</a> -->
|
||||
</a>
|
||||
</h1>
|
||||
|
||||
<p class="text-gray-700 text-xl" v-if="$page.project.bio">
|
||||
@@ -43,17 +35,11 @@
|
||||
:key="member.id"
|
||||
class="author-list-item"
|
||||
>
|
||||
<g-link :to="member.path">
|
||||
<g-link :to="member.path" v-tooltip="member.name">
|
||||
<g-image
|
||||
:src="member.image"
|
||||
:alt="member.name"
|
||||
class="
|
||||
w-8
|
||||
h-8
|
||||
rounded-full
|
||||
bg-gray-200
|
||||
border-2 border-white
|
||||
"
|
||||
class="w-8 h-8 rounded-full bg-gray-200 border-2 border-white"
|
||||
/>
|
||||
</g-link>
|
||||
</li>
|
||||
@@ -62,54 +48,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="container mx-auto py-2">
|
||||
<ul class="list-none flex author-list m-0">
|
||||
<!-- <li class="mx-2">
|
||||
<g-image
|
||||
:src="$page.project.logo"
|
||||
class="rounded-full bg-gray-200 w-8 h-8 border-2 border-gray-400 mx-auto md:mx-0"
|
||||
></g-image>
|
||||
</li> -->
|
||||
<li v-if="$page.project.websites">
|
||||
<a
|
||||
:href="$page.project.websites"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="text-gray-400 hover:text-black linkedin_size mx-1"
|
||||
>
|
||||
<font-awesome :icon="['fas', 'globe']" />
|
||||
</a>
|
||||
</li>
|
||||
<li v-if="$page.project.linkedin">
|
||||
<a
|
||||
:href="$page.project.linkedin"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="text-gray-400 hover:text-black linkedin_size mx-1"
|
||||
>
|
||||
<font-awesome :icon="['fab', 'linkedin']" />
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<section class="post-tags container mx-auto relative py-5">
|
||||
<g-link
|
||||
v-for="tag in $page.project.tags"
|
||||
:key="tag.id"
|
||||
:to="tag.path"
|
||||
class="
|
||||
text-xs
|
||||
bg-transparent
|
||||
hover:text-blue-700
|
||||
py-2
|
||||
px-4
|
||||
mr-2
|
||||
border
|
||||
hover:border-blue-500
|
||||
border-gray-600
|
||||
text-gray-700
|
||||
rounded-full
|
||||
"
|
||||
>{{ tag.title }}</g-link
|
||||
v-for="edge in $page.tags.edges"
|
||||
:key="edge.node.id"
|
||||
:to="edge.node.path"
|
||||
class="text-xs bg-transparent hover:text-blue-700 py-2 px-4 mr-2 border hover:border-blue-500 border-gray-600 text-gray-700 rounded-full"
|
||||
>{{ edge.node.title }}</g-link
|
||||
>
|
||||
</section>
|
||||
</div>
|
||||
@@ -182,11 +127,6 @@
|
||||
path
|
||||
logo
|
||||
image
|
||||
tags {
|
||||
id
|
||||
title
|
||||
path
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -194,15 +134,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
tags: allProjectTag (filter: { title: {in: ["foundation"]}}) {
|
||||
tags: allProjectTag (filter: { title: {in: ["tech", "foundation"]}}) {
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
title
|
||||
path
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
</page-query>
|
||||
@@ -211,6 +153,7 @@
|
||||
import PostListItem from "~/components/custom/Cards/PostListItem.vue";
|
||||
import Pagination from "~/components/custom/Pagination.vue";
|
||||
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Pagination,
|
||||
@@ -222,70 +165,17 @@ export default {
|
||||
return pluralize("post", this.$page.project.belongsTo.totalCount);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
img(image) {
|
||||
if (!image) return "";
|
||||
if (image.src) return image.src;
|
||||
return image;
|
||||
},
|
||||
},
|
||||
metaInfo() {
|
||||
return {
|
||||
title: "",
|
||||
titleTemplate: `ThreeFold | ${this.$page.project.title}`,
|
||||
meta: [
|
||||
{
|
||||
key: "description",
|
||||
name: "description",
|
||||
content: this.$page.project.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:title",
|
||||
property: "og:title",
|
||||
content: this.$page.project.title,
|
||||
},
|
||||
{
|
||||
key: "og:description",
|
||||
property: "og:description",
|
||||
content: this.$page.project.excerpt,
|
||||
},
|
||||
{
|
||||
key: "og:image",
|
||||
property: "og:image",
|
||||
content: this.img(this.$page.project.image),
|
||||
},
|
||||
{
|
||||
key: "twitter:description",
|
||||
name: "twitter:description",
|
||||
content: this.$page.project.excerpt,
|
||||
},
|
||||
{
|
||||
key: "twitter:image",
|
||||
property: "twitter:image",
|
||||
content: this.img(this.$page.project.image),
|
||||
},
|
||||
{
|
||||
key: "twitter:title",
|
||||
property: "twitter:title",
|
||||
content: this.$page.project.title,
|
||||
},
|
||||
{
|
||||
key: "twitter:card",
|
||||
name: "twitter:card",
|
||||
content: this.$page.project.excerpt,
|
||||
},
|
||||
],
|
||||
title: this.$page.project.title,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
@import url("https://fonts.googleapis.com/css2?family=Roboto&display=swap");
|
||||
.post-content-text {
|
||||
font-family: "Roboto", sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.linkedin_size {
|
||||
font-size: 2rem !important;
|
||||
}
|
||||
</style>
|
||||
80
src/templates/Projects.vue
Normal file
80
src/templates/Projects.vue
Normal file
@@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<Layout>
|
||||
<div
|
||||
class="container sm:pxi-0 mx-auto overflow-x-hidden"
|
||||
:style="{ 'min-height': contentHeight + 'px' }"
|
||||
>
|
||||
<div class="flex flex-wrap with-large projects pt-8 pb-8 mx-4 sm:-mx-4">
|
||||
<PostListItem
|
||||
v-for="edge in $page.entries.edges"
|
||||
:key="edge.node.id"
|
||||
:record="edge.node"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</Layout>
|
||||
</template>
|
||||
|
||||
<page-query>
|
||||
|
||||
query ($private: Int){
|
||||
entries: allProject (sortBy: "rank", order: DESC, filter: { private: { ne: $private }}, tags: { id: {in: ["tech", "foundation"]}}){
|
||||
totalCount
|
||||
edges {
|
||||
node {
|
||||
title
|
||||
path
|
||||
members {
|
||||
id
|
||||
name
|
||||
image(width:64, height:64, fit:inside)
|
||||
path
|
||||
},
|
||||
rank
|
||||
linkedin
|
||||
excerpt
|
||||
image(width:800)
|
||||
path
|
||||
timeToRead
|
||||
logo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
memberships: allProjectTag{
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
title
|
||||
path
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</page-query>
|
||||
|
||||
<script>
|
||||
import PostListItem from "~/components/PostListItem.vue";
|
||||
import Pagination from "~/components/Pagination.vue";
|
||||
|
||||
export default {
|
||||
metaInfo: {
|
||||
title: "Projects",
|
||||
},
|
||||
components: {
|
||||
PostListItem,
|
||||
Pagination,
|
||||
},
|
||||
computed: {
|
||||
baseurl: function () {
|
||||
return "/projects/";
|
||||
},
|
||||
contentHeight() {
|
||||
if (process.isClient) {
|
||||
return window.innerHeight - 100;
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -60,7 +60,7 @@ query ($private: Int){
|
||||
}
|
||||
}
|
||||
|
||||
people: allPerson(filter: { private: { ne: $private }}) {
|
||||
people: allPerson(filter: { private: { ne: $private }, memberships: { id: {in: ["foundation", "tech"]}}}) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
@@ -69,11 +69,11 @@ query ($private: Int){
|
||||
content
|
||||
name
|
||||
rank
|
||||
# memberships{
|
||||
# id
|
||||
# title
|
||||
# path
|
||||
# }
|
||||
memberships{
|
||||
id
|
||||
title
|
||||
path
|
||||
}
|
||||
bio
|
||||
linkedin
|
||||
websites
|
||||
|
||||
@@ -12,7 +12,9 @@
|
||||
{{ tags.title }}
|
||||
</h1>
|
||||
<p class="text-gray-700 text-xl">
|
||||
<span class="self-center">{{ items.length }} {{ item }}</span>
|
||||
<span class="self-center"
|
||||
>{{ tags.belongsTo.totalCount }} {{ item }}</span
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -20,7 +22,6 @@
|
||||
|
||||
<div class="flex flex-wrap pt-8 pb-8 mx-4 sm:-mx-4">
|
||||
<PostListItem
|
||||
:showtags="true"
|
||||
v-for="edge in tags.belongsTo.edges"
|
||||
:key="edge.node.id"
|
||||
:record="edge.node"
|
||||
@@ -59,11 +60,7 @@
|
||||
image(width:800)
|
||||
path
|
||||
datetime : created
|
||||
tags{
|
||||
id
|
||||
path
|
||||
title
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -132,7 +129,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
allProjectTag(filter: { title: {in: ["blockchain", "experience", "technology", "farming", "community", "infrastructure", "impact"]}}){
|
||||
allProjectTag(filter: { title: {in: ["tech", "foundation"]}}){
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
@@ -222,18 +219,6 @@ export default {
|
||||
return "post";
|
||||
}
|
||||
},
|
||||
items() {
|
||||
let foundationItems = [];
|
||||
this.tags.belongsTo.edges.map((edge) => {
|
||||
if (Array.isArray(edge.node.category)) {
|
||||
if (edge.node.category.includes("foundation"))
|
||||
foundationItems.push(edge.node);
|
||||
} else {
|
||||
foundationItems.push(edge.node);
|
||||
}
|
||||
});
|
||||
return foundationItems;
|
||||
},
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
69
src/templates/Team.vue
Normal file
69
src/templates/Team.vue
Normal file
@@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<Layout>
|
||||
<!-- <TagFilterHeader :tags="memberships" selected="all" v-if="$page.memberships.edges.length > 1"/> -->
|
||||
<div class="container sm:pxi-0 mx-auto mt-8 overflow-x-hidden">
|
||||
<div class="flex flex-wrap with-large pt-8 pb-8 mx-4 sm:-mx-4">
|
||||
<PostListItem
|
||||
v-for="person in $page.entries.edges"
|
||||
:key="person.id"
|
||||
:record="person.node"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</Layout>
|
||||
</template>
|
||||
|
||||
<page-query>
|
||||
query ($private: Int){
|
||||
entries: allPerson (sortBy: "rank", order: DESC, filter: { private: { ne: $private }, memberships: { id: {in: ["foundation", "tech"]}}}){
|
||||
totalCount
|
||||
edges {
|
||||
node {
|
||||
path
|
||||
content
|
||||
excerpt
|
||||
name
|
||||
rank
|
||||
bio
|
||||
linkedin
|
||||
websites
|
||||
countries
|
||||
cities
|
||||
image(width:800)
|
||||
private
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
memberships: allMembership(filter: {title: {in: ["foundation", "tech"]}}){
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
title
|
||||
path
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</page-query>
|
||||
|
||||
<script>
|
||||
import PostListItem from "~/components/custom/Cards/PostListItem.vue";
|
||||
import TagFilterHeader from "~/components/custom/TagFilterHeader.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
PostListItem,
|
||||
TagFilterHeader,
|
||||
},
|
||||
computed: {
|
||||
memberships() {
|
||||
var res = [{ title: "All", path: "/team" }];
|
||||
this.$page.memberships.edges.forEach((edge) =>
|
||||
res.push({ title: edge.node.title, path: edge.node.path })
|
||||
);
|
||||
return res;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
Reference in New Issue
Block a user