feat: first announcement
publish / Build-and-publish (push) Successful in 12m44s

This commit is contained in:
4gl
2026-07-26 15:27:48 +01:00
parent 8a10d127c1
commit 73fccc70a5
21 changed files with 571 additions and 480 deletions
-5
View File
@@ -1,15 +1,10 @@
import styled from 'styled-components'
import background from '../../images/home_hero_bg.png'
export const Hero = styled.main<{ bg?: boolean }>`
position: relative;
padding: 50px 0;
color: white;
background-color: #314351;
background-repeat: no-repeat;
background-image: ${(props) => (props.bg ? `url(${background})` : 'none')};
background-attachment: scroll;
background-position: bottom right;
`
export const HeroHeading = styled.h1`
+1 -1
View File
@@ -23,7 +23,7 @@ const naviLinks: NaviLink[] = [
{ name: 'Feed', url: '/feed/', active: 'no' },
{ name: 'FAQ', url: '/faq/', active: 'no' },
{
name: 'Documentation',
name: 'Docs',
url: 'https://docs.datacontroller.io/',
active: 'no'
},
+39 -35
View File
@@ -1,5 +1,4 @@
import * as React from 'react'
import { Helmet } from 'react-helmet'
import { useStaticQuery, graphql } from 'gatsby'
import type { SeoProps } from '../types'
@@ -38,41 +37,46 @@ const Seo: React.FC<SeoProps> = ({
? `${siteUrl}${previewImg}`
: `${siteUrl}/img/data-controller.svg`
const metaTags = (
[
{ name: 'author', property: 'author', content: author },
{
name: 'description',
property: 'og:description',
content: metaDescription
},
{ name: 'image', property: 'og:image', content: image },
{
name: `linkedin:site`,
content: site.siteMetadata?.social?.linkedin || ``
},
{ name: `twitter:card`, content: `summary` },
{ name: `twitter:description`, content: metaDescription },
{ name: `twitter:title`, content: title },
{ property: `og:title`, content: title },
{ property: `og:type`, content: `website` }
] as Array<{ name?: string; property?: string; content?: string }>
).concat(meta)
return (
<Helmet
htmlAttributes={{
lang
}}
title={pageTitle}
link={[
{
rel: 'alternate',
type: 'application/rss+xml',
title: `${defaultTitle} RSS Feed`,
href: `${siteUrl}rss.xml`
}
]}
meta={(
[
{ name: 'author', property: 'author', content: author },
{
name: 'description',
property: 'og:description',
content: metaDescription
},
{ name: 'image', property: 'og:image', content: image },
{
name: `linkedin:site`,
content: site.siteMetadata?.social?.linkedin || ``
},
{ name: `twitter:card`, content: `summary` },
{ name: `twitter:description`, content: metaDescription },
{ name: `twitter:title`, content: title },
{ property: `og:title`, content: title },
{ property: `og:type`, content: `website` }
] as Array<{ name?: string; property?: string; content?: string }>
).concat(meta)}
/>
<>
<html lang={lang} />
<title>{pageTitle}</title>
<link
rel="alternate"
type="application/rss+xml"
title={`${defaultTitle} RSS Feed`}
href={`${siteUrl}rss.xml`}
/>
{metaTags.map((tag, index) => (
<meta
key={tag.name || tag.property || index}
name={tag.name}
property={tag.property}
content={tag.content}
/>
))}
</>
)
}
+3 -2
View File
@@ -14,8 +14,7 @@ const NotFound: React.FC<PageProps<unknown, PageContext>> = ({
pageContext
}) => (
<Layout location={location} heroSection={false}>
<Seo title="Page Not Found" />
<Section color="black" bgColor="white" bottomArrow={false}>
<Section color="black" bgColor="white" bottomArrow={false}>
<SideBar
pageContext={pageContext}
location={location}
@@ -26,3 +25,5 @@ const NotFound: React.FC<PageProps<unknown, PageContext>> = ({
)
export default NotFound
export const Head = () => <Seo title="Page Not Found" />
+3 -2
View File
@@ -17,8 +17,7 @@ const About: React.FC<PageProps<unknown>> = ({ location }) => {
heading="Behind Data Controller"
desc="Data Controller is a product of 4GL, a brand of Bowe IO Ltd"
>
<Seo title="About" />
<Section color="black" bgColor="white">
<Section color="black" bgColor="white">
<div className="row">
<div className="offset-md-2 col-md-8">
<SectionHeading center="no">About Data Controller</SectionHeading>
@@ -46,3 +45,5 @@ const About: React.FC<PageProps<unknown>> = ({ location }) => {
}
export default About
export const Head = () => <Seo title="About" />
+3 -2
View File
@@ -58,8 +58,7 @@ const Contact: React.FC<PageProps<unknown>> = ({ location }) => {
heading="Book a Demo"
desc="Schedule a demonstration of the Data Controller to see our latest features and explore use cases"
>
<Seo title="Contact" />
<Section color="black" bgColor="white" bottomArrow={false}>
<Section color="black" bgColor="white" bottomArrow={false}>
<div className="row">
<div className="col-md-6">
<SectionHeading center="no">Schedule a Call</SectionHeading>
@@ -193,3 +192,5 @@ Message: ${message}`
}
export default Contact
export const Head = () => <Seo title="Contact" />
+3 -2
View File
@@ -20,8 +20,7 @@ const Faq: React.FC<PageProps<unknown>> = ({ location }) => {
heading="Data Controller FAQ"
desc="Most common user questions and answers regarding the Data Controller"
>
<Seo title="FAQ" />
<Section color="black" bgColor="white">
<Section color="black" bgColor="white">
<div className="row">
<div className="col-md-8">
<FAQ
@@ -67,3 +66,5 @@ const Faq: React.FC<PageProps<unknown>> = ({ location }) => {
}
export default Faq
export const Head = () => <Seo title="FAQ" />
+3 -2
View File
@@ -67,8 +67,7 @@ const Home: React.FC<PageProps<IndexPageData>> = ({ data, location }) => {
heading="Flexible and Secure Data Modification"
desc="Data Controller for SAS® enables business users to update IT owned source tables, secured by review / approve workflow and full audit trail."
>
<Seo />
<Section color="black" bgColor="white">
<Section color="black" bgColor="white">
<div className="row">
<div className="col-md-3">
<Art src={leftArt} info="Business Owner" />
@@ -262,3 +261,5 @@ export const pageQuery = graphql`
}
}
`
export const Head = () => <Seo />
@@ -40,7 +40,6 @@ const MarkdownPageTemplate: React.FC<
heading={frontmatter.heading}
desc={frontmatter.desc}
>
<Seo title={frontmatter.title} />
<Section color="black" bgColor="white" bottomArrow={false}>
<StyledMarkdown dangerouslySetInnerHTML={{ __html: html }} />
</Section>
@@ -50,6 +49,10 @@ const MarkdownPageTemplate: React.FC<
export default MarkdownPageTemplate
export const Head: React.FC<{ data: MarkdownPageData }> = ({ data }) => (
<Seo title={data.markdownRemark.frontmatter.title} />
)
export const pageQuery = graphql`
query ($id: String!) {
markdownRemark(id: { eq: $id }) {
+3 -2
View File
@@ -69,8 +69,7 @@ const BlogListTemplate: React.FC<PageProps<BlogListData, PageContext>> = ({
heading="Data Controllers Knowledge Base"
desc="A section dedicated to news, updates and educational pieces."
>
<Seo title="Blog" />
<Section color="black" bgColor="white" bottomArrow={false}>
<Section color="black" bgColor="white" bottomArrow={false}>
<div className="row">
<div className="col-md-7">
<div className="row">
@@ -126,3 +125,5 @@ export const pageQuery = graphql`
}
}
`
export const Head = () => <Seo title="Blog" />
+15 -8
View File
@@ -14,17 +14,9 @@ const BlogPostTemplate: React.FC<
PageProps<{ post: PostNode }, PageContext>
> = ({ data, location, pageContext }) => {
const { post } = data
const { previewImg } = post.frontmatter
return (
<Layout location={location} heroSection={false}>
<Seo
title={post.frontmatter.title}
description={post.frontmatter.description}
previewImg={
previewImg?.childImageSharp?.gatsbyImageData?.images?.fallback?.src
}
/>
<Section color="black" bgColor="white" bottomArrow={false}>
<div className="row">
<div className="col-md-7">
@@ -41,6 +33,21 @@ const BlogPostTemplate: React.FC<
export default BlogPostTemplate
export const Head: React.FC<{ data: { post: PostNode } }> = ({ data }) => {
const { post } = data
const { previewImg } = post.frontmatter
return (
<Seo
title={post.frontmatter.title}
description={post.frontmatter.description}
previewImg={
previewImg?.childImageSharp?.gatsbyImageData?.images?.fallback?.src
}
/>
)
}
export const pageQuery = graphql`
query PostByPath($id: String!) {
post: markdownRemark(id: { eq: $id }) {
+3 -2
View File
@@ -71,8 +71,7 @@ const BlogSearchTemplate: React.FC<PageProps<SearchData, PageContext>> = ({
heading="Data Controllers Knowledge Base"
desc="A section dedicated to news, updates and educational pieces."
>
<Seo title="Blog" />
<Section color="black" bgColor="white" bottomArrow={false}>
<Section color="black" bgColor="white" bottomArrow={false}>
<div className="row">
<div className="col-md-7">
<div className="row">
@@ -96,3 +95,5 @@ const BlogSearchTemplate: React.FC<PageProps<SearchData, PageContext>> = ({
}
export default BlogSearchTemplate
export const Head = () => <Seo title="Blog" />
+3 -2
View File
@@ -68,8 +68,7 @@ const FeedListTemplate: React.FC<PageProps<FeedListData, PageContext>> = ({
heading="Data Controllers Feed"
desc="Announcements and social media style updates from the Data Controller team."
>
<Seo title="Feed" />
<Section color="black" bgColor="white" bottomArrow={false}>
<Section color="black" bgColor="white" bottomArrow={false}>
<div className="row">
<div className="col-md-7">
<div className="row">
@@ -129,3 +128,5 @@ export const pageQuery = graphql`
}
}
`
export const Head = () => <Seo title="Feed" />
+15 -8
View File
@@ -14,17 +14,9 @@ const FeedPostTemplate: React.FC<
PageProps<{ post: PostNode }, PageContext>
> = ({ data, location, pageContext }) => {
const { post } = data
const { previewImg } = post.frontmatter
return (
<Layout location={location} heroSection={false}>
<Seo
title={post.frontmatter.title}
description={post.frontmatter.description}
previewImg={
previewImg?.childImageSharp?.gatsbyImageData?.images?.fallback?.src
}
/>
<Section color="black" bgColor="white" bottomArrow={false}>
<div className="row">
<div className="col-md-7">
@@ -45,6 +37,21 @@ const FeedPostTemplate: React.FC<
export default FeedPostTemplate
export const Head: React.FC<{ data: { post: PostNode } }> = ({ data }) => {
const { post } = data
const { previewImg } = post.frontmatter
return (
<Seo
title={post.frontmatter.title}
description={post.frontmatter.description}
previewImg={
previewImg?.childImageSharp?.gatsbyImageData?.images?.fallback?.src
}
/>
)
}
export const pageQuery = graphql`
query FeedPostByPath($id: String!) {
post: markdownRemark(id: { eq: $id }) {