Adding content pages [wip]
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,138 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"slug": "figma",
|
||||||
|
"name": "Figma",
|
||||||
|
"url": "https://figma.com",
|
||||||
|
"category": "Design",
|
||||||
|
"description": "Figma is a collaborative interface design tool",
|
||||||
|
"content": "Embed interactive Figma designs into your Outline docs. Paste a link to a Figma public share link to instantly convert into a rich preview."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "framer",
|
||||||
|
"name": "Framer",
|
||||||
|
"url": "https://framer.com",
|
||||||
|
"category": "Design",
|
||||||
|
"description": "Framer is an interactive design and prototyping tool",
|
||||||
|
"content": "Embed interactive Framer prototypes into your Outline docs. Paste a link to a Framer cloud link to instantly convert into an interactive embed."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "invision",
|
||||||
|
"name": "InVision",
|
||||||
|
"url": "https://invision.com",
|
||||||
|
"category": "Design",
|
||||||
|
"description": "InVision is an online design and prototyping tool",
|
||||||
|
"content": "Embed interactive InVision prototypes into your Outline docs. Paste an InVision share link to instantly convert into an interactive prototype."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "marvel",
|
||||||
|
"name": "Marvel",
|
||||||
|
"url": "https://marvelapp.com",
|
||||||
|
"category": "Design",
|
||||||
|
"description": "The all-in-one platform powering design",
|
||||||
|
"content": "Marvel prototypes inside your Outline docs. Paste a Marvel link to instantly convert into an interactive prototype."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "airtable",
|
||||||
|
"name": "Airtable",
|
||||||
|
"url": "https://airtable.com",
|
||||||
|
"category": "Collaboration",
|
||||||
|
"description": "Part spreadsheet, part database, and entirely flexible",
|
||||||
|
"content": "Embed interactive tables into your Outline docs. Paste a link to an Airtable public share link to instantly convert into a rich preview."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "lucidchart",
|
||||||
|
"name": "Lucidchart",
|
||||||
|
"url": "https://lucidchart.com",
|
||||||
|
"category": "Collaboration",
|
||||||
|
"description": "Create flowcharts and technical diagrams with ease",
|
||||||
|
"content": "Embed an interactive chart inside your Outline doc. Paste a link to any shared Lucidchart to instantly convert into a rich preview."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "realtime-board",
|
||||||
|
"name": "Realtime Board",
|
||||||
|
"url": "https://realtimeboard.com",
|
||||||
|
"category": "Collaboration",
|
||||||
|
"description": "Simple whiteboarding for cross-functional team collaboration",
|
||||||
|
"content": "Embed an interactive whiteboard inside your Outline doc. Paste a link to any shared Realtime Board to instantly convert to a board."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "slack",
|
||||||
|
"name": "Slack",
|
||||||
|
"url": "https://slack.com",
|
||||||
|
"category": "Collaboration",
|
||||||
|
"description": "Chat, collaboration, and file sharing for teams",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "trello",
|
||||||
|
"name": "Trello",
|
||||||
|
"url": "https://trello.com",
|
||||||
|
"category": "Collaboration",
|
||||||
|
"description": "Boards, lists, and cards to organize your projects",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "typeform",
|
||||||
|
"name": "Typeform",
|
||||||
|
"url": "https://typeform.com",
|
||||||
|
"category": "Collaboration",
|
||||||
|
"description": "Data collection tool and surveys, for professionals",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "codepen",
|
||||||
|
"name": "Codepen",
|
||||||
|
"url": "https://codepen.io",
|
||||||
|
"category": "Developers",
|
||||||
|
"description": "A social development environment and editor",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "github-gist",
|
||||||
|
"name": "GitHub Gist",
|
||||||
|
"url": "https://gist.github.com",
|
||||||
|
"category": "Developers",
|
||||||
|
"description": "Sharable code snippets, hosted by GitHub",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "numeracy",
|
||||||
|
"name": "Numeracy",
|
||||||
|
"url": "https://numeracy.io",
|
||||||
|
"category": "Developers",
|
||||||
|
"description": "A SQL pad for writing, iterating, and exploring data",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "mode-analytics",
|
||||||
|
"name": "Mode Analytics",
|
||||||
|
"url": "https://modeanalytics.com",
|
||||||
|
"category": "Developers",
|
||||||
|
"description": "Connect and analyze data from anywhere",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "loom",
|
||||||
|
"name": "Loom",
|
||||||
|
"url": "https://useloom.com",
|
||||||
|
"category": "Media",
|
||||||
|
"description": "Get your message across with instantly shareable videos",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "youtube",
|
||||||
|
"name": "YouTube",
|
||||||
|
"url": "https://youtube.com",
|
||||||
|
"category": "Media",
|
||||||
|
"description": "A popular little website for sharing videos",
|
||||||
|
"content": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "vimeo",
|
||||||
|
"name": "Vimeo",
|
||||||
|
"url": "https://vimeo.com",
|
||||||
|
"category": "Media",
|
||||||
|
"description": "A customizable and embeddable video player",
|
||||||
|
"content": ""
|
||||||
|
}
|
||||||
|
]
|
|
@ -38,7 +38,7 @@ export default function About() {
|
||||||
<Helmet>
|
<Helmet>
|
||||||
<title>About Us</title>
|
<title>About Us</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<Header>
|
<Header background="#F22C5F">
|
||||||
<h1>About Us</h1>
|
<h1>About Us</h1>
|
||||||
<p>The team behind Outline</p>
|
<p>The team behind Outline</p>
|
||||||
</Header>
|
</Header>
|
||||||
|
|
|
@ -60,7 +60,7 @@ export default function Pricing() {
|
||||||
<Helmet>
|
<Helmet>
|
||||||
<title>API Documentation - Outline</title>
|
<title>API Documentation - Outline</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<Header>
|
<Header background="#AA34F0">
|
||||||
<h1>Documentation</h1>
|
<h1>Documentation</h1>
|
||||||
<p>The API is the heart and soul of Outline.</p>
|
<p>The API is the heart and soul of Outline.</p>
|
||||||
</Header>
|
</Header>
|
||||||
|
|
|
@ -21,7 +21,7 @@ function Changelog({ releases }: { releases: Release[] }) {
|
||||||
<Helmet>
|
<Helmet>
|
||||||
<title>Changelog</title>
|
<title>Changelog</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<Header>
|
<Header background="#00ADFF">
|
||||||
<h1>Changelog</h1>
|
<h1>Changelog</h1>
|
||||||
<p>
|
<p>
|
||||||
We’re building in public. Here’s what we’ve been changing recently.
|
We’re building in public. Here’s what we’ve been changing recently.
|
||||||
|
|
|
@ -166,7 +166,7 @@ const Mask = styled.div`
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const Features = styled.div`
|
const Features = styled.div`
|
||||||
background: hsl(180, 58%, 85%);
|
background: #00adff;
|
||||||
padding: 0 2em;
|
padding: 0 2em;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
`;
|
`;
|
||||||
|
@ -200,7 +200,7 @@ const Feature = styled(Grid.Unit)`
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const Footer = styled.div`
|
const Footer = styled.div`
|
||||||
background: hsl(127, 58%, 85%);
|
background: #aa34f0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 4em 2em;
|
padding: 4em 2em;
|
||||||
|
@ -210,6 +210,10 @@ const Footer = styled.div`
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
${breakpoint('tablet')`
|
${breakpoint('tablet')`
|
||||||
margin: 2em 0;
|
margin: 2em 0;
|
||||||
padding: 6em 4em;
|
padding: 6em 4em;
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
// @flow
|
||||||
|
import * as React from 'react';
|
||||||
|
import { find } from 'lodash';
|
||||||
|
import Grid from 'styled-components-grid';
|
||||||
|
import { Helmet } from 'react-helmet';
|
||||||
|
import Header from './components/Header';
|
||||||
|
import Content from './components/Content';
|
||||||
|
import IntegrationMenu from './components/IntegrationMenu';
|
||||||
|
import integrations from '../config/integrations';
|
||||||
|
|
||||||
|
export default function Integration({ slug }: { slug: string }) {
|
||||||
|
const integation = find(integrations, i => i.slug === slug);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Grid>
|
||||||
|
<Helmet>
|
||||||
|
<title>{integation.name} Integration</title>
|
||||||
|
</Helmet>
|
||||||
|
<Header>
|
||||||
|
<h1>{integation.name} Integration</h1>
|
||||||
|
<p>{integation.description}</p>
|
||||||
|
</Header>
|
||||||
|
<Content>
|
||||||
|
<IntegrationMenu integrations={integrations} />
|
||||||
|
<div />
|
||||||
|
</Content>
|
||||||
|
</Grid>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
// @flow
|
||||||
|
import * as React from 'react';
|
||||||
|
import { map, groupBy } from 'lodash';
|
||||||
|
import styled from 'styled-components';
|
||||||
|
import Grid from 'styled-components-grid';
|
||||||
|
import { Helmet } from 'react-helmet';
|
||||||
|
import Header from './components/Header';
|
||||||
|
import Content from './components/Content';
|
||||||
|
import integrations from '../config/integrations';
|
||||||
|
|
||||||
|
const categories = groupBy(integrations, i => i.category);
|
||||||
|
|
||||||
|
function Integrations() {
|
||||||
|
return (
|
||||||
|
<Grid>
|
||||||
|
<Helmet>
|
||||||
|
<title>Integrations</title>
|
||||||
|
</Helmet>
|
||||||
|
<Header background="#FFB500">
|
||||||
|
<h1>Integrations</h1>
|
||||||
|
<p>
|
||||||
|
Outline is designed to integrate with your existing workflow and
|
||||||
|
tools.
|
||||||
|
</p>
|
||||||
|
</Header>
|
||||||
|
<Content>
|
||||||
|
{map(categories, (integrations, category) => (
|
||||||
|
<div key={category}>
|
||||||
|
<h2>{category}</h2>
|
||||||
|
<Category>
|
||||||
|
{integrations.map(i => (
|
||||||
|
<Grid.Unit size={{ desktop: 1 / 4 }} key={i.slug}>
|
||||||
|
<Integration href={`/integrations/${i.slug}`}>
|
||||||
|
<Logo src={`/images/${i.slug}.png`} alt={i.name} />
|
||||||
|
<h3>{i.name}</h3>
|
||||||
|
<p>{i.description}</p>
|
||||||
|
</Integration>
|
||||||
|
</Grid.Unit>
|
||||||
|
))}
|
||||||
|
</Category>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</Content>
|
||||||
|
</Grid>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Logo = styled.img`
|
||||||
|
height: 60px;
|
||||||
|
border-radius: 4px;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Category = styled(Grid)`
|
||||||
|
margin: 0 -1em;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const Integration = styled.a`
|
||||||
|
display: block;
|
||||||
|
padding: 2em 2em 1em;
|
||||||
|
margin: 1em;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 2px solid ${props => props.theme.slateLight};
|
||||||
|
color: ${props => props.theme.text};
|
||||||
|
font-size: 16px;
|
||||||
|
transition: background 200ms ease-in-out;
|
||||||
|
|
||||||
|
h3,
|
||||||
|
p {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: ${props => props.theme.slateLight};
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
export default Integrations;
|
|
@ -1,15 +1,17 @@
|
||||||
// @flow
|
// @flow
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
import breakpoint from 'styled-components-breakpoint';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import Centered from './Centered';
|
import Centered from './Centered';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
children: React.Node,
|
children: React.Node,
|
||||||
|
background?: string,
|
||||||
};
|
};
|
||||||
|
|
||||||
const Header = ({ children }: Props) => {
|
const Header = ({ children, background }: Props) => {
|
||||||
return (
|
return (
|
||||||
<Wrapper>
|
<Wrapper background={background}>
|
||||||
<Centered>{children}</Centered>
|
<Centered>{children}</Centered>
|
||||||
</Wrapper>
|
</Wrapper>
|
||||||
);
|
);
|
||||||
|
@ -17,9 +19,13 @@ const Header = ({ children }: Props) => {
|
||||||
|
|
||||||
const Wrapper = styled.div`
|
const Wrapper = styled.div`
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 2em;
|
padding: 8em 0 3em;
|
||||||
background: ${props => props.theme.contentHeaderBackground};
|
|
||||||
|
margin-top: -70px;
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
|
text-align: center;
|
||||||
|
background: ${props => props.background || 'transparent'};
|
||||||
|
z-index: -1;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
|
@ -29,9 +35,17 @@ const Wrapper = styled.div`
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 3.5em;
|
font-size: 2em;
|
||||||
margin: 0 0 0.1em;
|
margin: 0 0 0.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
${breakpoint('tablet')`
|
||||||
|
padding: 8em 3em 3em 3em;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 4em;
|
||||||
|
}
|
||||||
|
`};
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default Header;
|
export default Header;
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
// @flow
|
||||||
|
import { map, groupBy } from 'lodash';
|
||||||
|
import * as React from 'react';
|
||||||
|
|
||||||
|
export default function IntegrationMenu({ integrations }) {
|
||||||
|
const categories = groupBy(integrations, i => i.category);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<nav>
|
||||||
|
{map(categories, (integrations, category) => (
|
||||||
|
<React.Fragment>
|
||||||
|
<h3>{category}</h3>
|
||||||
|
<ul>
|
||||||
|
{integrations.map(i => (
|
||||||
|
<li>
|
||||||
|
<a href={`/integrations/${i.slug}`}>{i.name}</a>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</React.Fragment>
|
||||||
|
))}
|
||||||
|
</nav>
|
||||||
|
);
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ import {
|
||||||
changelog,
|
changelog,
|
||||||
features,
|
features,
|
||||||
about,
|
about,
|
||||||
|
integrations,
|
||||||
privacy,
|
privacy,
|
||||||
githubUrl,
|
githubUrl,
|
||||||
twitterUrl,
|
twitterUrl,
|
||||||
|
@ -42,14 +43,11 @@ function TopNavigation({ sessions, loggedIn }: Props) {
|
||||||
<a href={features()}>Features</a>
|
<a href={features()}>Features</a>
|
||||||
</MenuItemDesktop>
|
</MenuItemDesktop>
|
||||||
<MenuItemDesktop>
|
<MenuItemDesktop>
|
||||||
<a href={about()}>About</a>
|
<a href={integrations()}>Integrations</a>
|
||||||
</MenuItemDesktop>
|
</MenuItemDesktop>
|
||||||
<MenuItemDesktop>
|
<MenuItemDesktop>
|
||||||
<a href={changelog()}>Changelog</a>
|
<a href={changelog()}>Changelog</a>
|
||||||
</MenuItemDesktop>
|
</MenuItemDesktop>
|
||||||
<MenuItemDesktop>
|
|
||||||
<a href={twitterUrl()}>Twitter</a>
|
|
||||||
</MenuItemDesktop>
|
|
||||||
<MenuItem>
|
<MenuItem>
|
||||||
<a href={developers()}>API</a>
|
<a href={developers()}>API</a>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
@ -109,6 +107,9 @@ function BottomNavigation() {
|
||||||
<div>
|
<div>
|
||||||
<a href={privacy()}>Privacy</a>
|
<a href={privacy()}>Privacy</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href={about()}>About</a>
|
||||||
|
</div>
|
||||||
</BottomNav>
|
</BottomNav>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -118,11 +119,11 @@ const MenuLinkStyle = props => `
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: ${props.theme.slate};
|
color: rgba(0, 0, 0, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
color: ${props.theme.slateDark};
|
color: rgba(0, 0, 0, 0.4);
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
@ -142,17 +143,17 @@ const MenuItem = styled.li`
|
||||||
props.highlighted &&
|
props.highlighted &&
|
||||||
`
|
`
|
||||||
position: relative;
|
position: relative;
|
||||||
border: 2px solid ${props.theme.slate};
|
border: 2px solid rgba(0, 0, 0, 0.6);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 6px 8px;
|
padding: 6px 8px;
|
||||||
margin-top: -6px;
|
margin-top: -6px;
|
||||||
margin-bottom: -6px;
|
margin-bottom: -6px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border: 2px solid ${props.theme.slateDark};
|
border: 2px solid rgba(0, 0, 0, 0.4);
|
||||||
|
|
||||||
> a {
|
> a {
|
||||||
color: ${props.theme.slateDark};
|
color: rgba(0, 0, 0, 0.4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,8 @@ import About from './pages/About';
|
||||||
import Changelog from './pages/Changelog';
|
import Changelog from './pages/Changelog';
|
||||||
import Privacy from './pages/Privacy';
|
import Privacy from './pages/Privacy';
|
||||||
import Pricing from './pages/Pricing';
|
import Pricing from './pages/Pricing';
|
||||||
|
import Integrations from './pages/Integrations';
|
||||||
|
import Integration from './pages/Integration';
|
||||||
import Api from './pages/Api';
|
import Api from './pages/Api';
|
||||||
import SubdomainSignin from './pages/SubdomainSignin';
|
import SubdomainSignin from './pages/SubdomainSignin';
|
||||||
|
|
||||||
|
@ -56,6 +58,10 @@ router.get('/about', ctx => renderpage(ctx, <About />));
|
||||||
router.get('/pricing', ctx => renderpage(ctx, <Pricing />));
|
router.get('/pricing', ctx => renderpage(ctx, <Pricing />));
|
||||||
router.get('/developers', ctx => renderpage(ctx, <Api />));
|
router.get('/developers', ctx => renderpage(ctx, <Api />));
|
||||||
router.get('/privacy', ctx => renderpage(ctx, <Privacy />));
|
router.get('/privacy', ctx => renderpage(ctx, <Privacy />));
|
||||||
|
router.get('/integrations/:slug', ctx =>
|
||||||
|
renderpage(ctx, <Integration slug={ctx.params.slug} />)
|
||||||
|
);
|
||||||
|
router.get('/integrations', ctx => renderpage(ctx, <Integrations />));
|
||||||
router.get('/changelog', async ctx => {
|
router.get('/changelog', async ctx => {
|
||||||
const data = await fetch(
|
const data = await fetch(
|
||||||
'https://api.github.com/repos/outline/outline/releases'
|
'https://api.github.com/repos/outline/outline/releases'
|
||||||
|
|
|
@ -2,6 +2,11 @@
|
||||||
import theme from './theme';
|
import theme from './theme';
|
||||||
|
|
||||||
export default `
|
export default `
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src: url('/fonts/LatoLatin-Semibold.woff') format('woff');
|
||||||
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
@ -46,6 +51,7 @@ export default `
|
||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
|
font-family: 'Lato', -apple-system, BlinkMacSystemFont;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
line-height: 1.25;
|
line-height: 1.25;
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
|
|
|
@ -73,6 +73,10 @@ export function about(): string {
|
||||||
return `${process.env.URL}/about`;
|
return `${process.env.URL}/about`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function integrations(): string {
|
||||||
|
return `${process.env.URL}/integrations`;
|
||||||
|
}
|
||||||
|
|
||||||
export function privacy(): string {
|
export function privacy(): string {
|
||||||
return `${process.env.URL}/privacy`;
|
return `${process.env.URL}/privacy`;
|
||||||
}
|
}
|
||||||
|
|