feat: Hardcode dar theme, set up top left logo & add adopters form

Signed-off-by: Carlos Esteban Lopez <lcarlosesteb@vmware.com>
This commit is contained in:
Carlos Esteban Lopez
2023-02-09 18:29:08 -05:00
committed by Carlos Lopez
parent cc4f67d952
commit 0e22cacc48
5 changed files with 154 additions and 20 deletions
+8 -1
View File
@@ -85,8 +85,15 @@ module.exports = {
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
{
colorMode: {
defaultMode: 'dark',
// disableSwitch: true,
},
navbar: {
title: 'Backstage Software Catalog and Developer Platform',
logo: {
alt: 'Backstage Software Catalog and Developer Platform',
src: 'img/logo.svg',
},
items: [
{
href: 'https://github.com/backstage/backstage',
+52 -19
View File
@@ -5,39 +5,70 @@ import { BannerSectionColumns } from '@site/src/components/banner-section/banner
import { ContentBlock } from '@site/src/components/content-block/content-block';
import Layout from '@theme/Layout';
import { clsx } from 'clsx';
import React from 'react';
import React, { useState } from 'react';
import homeStyles from './home.module.scss';
import { HubSpotNewAdoptersForm } from './_hub-spot-new-adopters-form';
const hiddenNewsletterBannerKey = 'hiddenNewsletterBanner';
export function Home() {
const { siteConfig } = useDocusaurusContext();
const [hiddenNewsletterBanner, setHideNewsletterBanner] = useState(() => {
return JSON.parse(localStorage.getItem(hiddenNewsletterBannerKey)) || false;
});
const hideNewsletterBanner = (shouldHide: boolean) => {
localStorage.setItem(hiddenNewsletterBannerKey, JSON.stringify(shouldHide));
setHideNewsletterBanner(shouldHide);
};
return (
<Layout>
<div className={homeStyles.homePage}>
<BannerSection greyBackground>
<BannerSectionColumns
header={
<div
className={clsx(
'card',
'padding--md',
homeStyles.newsletterBanner,
)}
>
<div className="text--left bannerContent">
🗞 Want to stay up to date with Backstage? Sign up for our{' '}
<Link
to="https://info.backstage.spotify.com/newsletter_subscribe"
className="text--secondary"
<>
{!hiddenNewsletterBanner && (
<div
className={clsx(
'card',
'padding--md',
homeStyles.newsletterBanner,
)}
>
Newsletter
</Link>
!
</div>
<div className="text--left bannerContent">
🗞 Want to stay up to date with Backstage? Sign up for our{' '}
<Link
to="https://info.backstage.spotify.com/newsletter_subscribe"
className="text--secondary"
>
Newsletter
</Link>
!
</div>
<div className="bannerCloseButton">X</div>
</div>
<div
className={clsx(
'button button--link',
'bannerCloseButton',
)}
onClick={() => hideNewsletterBanner(true)}
>
<svg
className="text--secondary"
width="24"
height="24"
viewBox="0 0 24 24"
>
<path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" />
</svg>
</div>
</div>
)}
</>
}
>
<ContentBlock
@@ -500,6 +531,8 @@ export function Home() {
/>
</div>
</BannerSection>
<HubSpotNewAdoptersForm />
</div>
</Layout>
);
@@ -0,0 +1,52 @@
import clsx from 'clsx';
import React, { useEffect, useState } from 'react';
import hubSpotStyles from './hub-spot-new-adopters-form.module.scss';
export const HubSpotNewAdoptersForm = () => {
const [isClosed, setClosed] = useState(true);
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://js.hsforms.net/forms/v2.js';
document.body.appendChild(script);
script.addEventListener('load', () => {
// @ts-ignore
if (window.hbspt) {
// @ts-ignore
window.hbspt.forms.create({
portalId: '21894833',
formId: '9a5aa2af-87f3-4a44-819f-88ee243bb61e',
target: `.${hubSpotStyles.hubSpotNewAdopterFormContent}`,
pageId: '79735607665',
});
}
});
}, []);
return (
<div
className={clsx(
hubSpotStyles.hubSpotNewAdopterFormContainer,
isClosed && 'adoptersFormHidden',
)}
>
<button
className="button button--primary"
onClick={() => {
setClosed(!isClosed);
}}
>
New Adopters
</button>
<div
className={clsx(
'padding-left--lg padding-vert--lg thin-scrollbar',
hubSpotStyles.hubSpotNewAdopterFormContent,
)}
></div>
</div>
);
};
@@ -26,6 +26,10 @@ $desktopUpBreakpoint: 997px;
:global(.bannerContent) {
flex: 1;
}
:global(.bannerCloseButton) {
color: var(--ifm-color-secondary);
}
}
.svgContainer {
@@ -0,0 +1,38 @@
.hubSpotNewAdopterFormContainer {
top: 50%;
right: 0;
display: flex;
position: fixed;
transform: translateY(-50%);
transition: all 250ms ease-in-out;
&:global(.adoptersFormHidden) {
transform: translate(500px, -50%);
}
> button {
top: 50%;
left: -2rem;
position: fixed;
transform: rotate(-90deg) translateX(-50%);
transform-origin: top left;
}
}
.hubSpotNewAdopterFormContent {
height: 600px;
max-width: 500px;
overflow-y: hidden;
border-radius: 8px 0 0 8px;
background-color: var(--ifm-color-content);
form {
width: 100%;
height: 100%;
overflow-y: auto;
padding-right: 2rem;
}
}