Consistent page titles

This commit is contained in:
Tom Moor
2019-01-06 14:14:44 -08:00
parent 56bda12192
commit c970cddd14
10 changed files with 58 additions and 50 deletions

View File

@ -2,7 +2,7 @@
import * as React from 'react'; import * as React from 'react';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import styled from 'styled-components'; import styled from 'styled-components';
import { Helmet } from 'react-helmet'; import PageTitle from './components/PageTitle';
import Flex from '../../shared/components/Flex'; import Flex from '../../shared/components/Flex';
import Header from './components/Header'; import Header from './components/Header';
import Content from './components/Content'; import Content from './components/Content';
@ -35,9 +35,8 @@ const Avatar = styled.img`
export default function About() { export default function About() {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title="About Us" />
<title>About Us</title>
</Helmet>
<Header background="#F22C5F"> <Header background="#F22C5F">
<h1>About Us</h1> <h1>About Us</h1>
<p>The team behind Outline</p> <p>The team behind Outline</p>

View File

@ -4,7 +4,7 @@ import { groupBy, map } from 'lodash';
import format from 'date-fns/format'; import format from 'date-fns/format';
import styled from 'styled-components'; import styled from 'styled-components';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet'; import PageTitle from './components/PageTitle';
import Markdown from './components/Markdown'; import Markdown from './components/Markdown';
import Header from './components/Header'; import Header from './components/Header';
import Content from './components/Content'; import Content from './components/Content';
@ -25,9 +25,7 @@ function Changelog({ releases }: Props) {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title="Changelog" />
<title>Changelog</title>
</Helmet>
<Header background="#00ADFF"> <Header background="#00ADFF">
<h1>Changelog</h1> <h1>Changelog</h1>
<p>Were building in public. Heres what has changed recently.</p> <p>Were building in public. Heres what has changed recently.</p>

View File

@ -3,18 +3,17 @@ import * as React from 'react';
import styled from 'styled-components'; import styled from 'styled-components';
import breakpoint from 'styled-components-breakpoint'; import breakpoint from 'styled-components-breakpoint';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet'; import PageTitle from './components/PageTitle';
import Header from './components/Header'; import Header from './components/Header';
import Content from './components/Content'; import Content from './components/Content';
import Button from './components/Button'; import Button from './components/Button';
import Notice from '../../shared/components/Notice'; import Notice from '../../shared/components/Notice';
import { mailToUrl, githubUrl } from '../../shared/utils/routeHelpers';
export default function Pricing() { export default function Pricing() {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title="Pricing" />
<title>Pricing</title>
</Helmet>
<Header background="#00adff"> <Header background="#00adff">
<h1>Our Pricing</h1> <h1>Our Pricing</h1>
<p>Our pricing is simple. Youll only pay for what you use.</p> <p>Our pricing is simple. Youll only pay for what you use.</p>
@ -57,7 +56,9 @@ export default function Pricing() {
$ $
</span> </span>
<span itemprop="price">5</span>{' '} <span itemprop="price">5</span>{' '}
<Period>per seat per month</Period> <Period>
<strong>per seat</strong> per month
</Period>
</Price> </Price>
</div> </div>
<div itemprop="description"> <div itemprop="description">
@ -70,15 +71,18 @@ export default function Pricing() {
</ul> </ul>
</div> </div>
<Notice> <Notice>
Note: Outline is currently in Beta. This plan is currently free Note: Outline is in Beta. This plan is currently free until public
until public release in Q1 2019. release in Q1 2019.
</Notice> </Notice>
</Plan> </Plan>
</Grid> </Grid>
</Content> </Content>
<Content> <Content>
<Centered>
<br />
<h2>Self Hosted</h2> <h2>Self Hosted</h2>
<p>Host your own instance on-premise or in the cloud</p> <p>Host your own instance on-premise or in the cloud.</p>
</Centered>
<Grid> <Grid>
<Plan <Plan
size={{ desktop: 1 / 2 }} size={{ desktop: 1 / 2 }}
@ -98,9 +102,11 @@ export default function Pricing() {
Outlines codebase is open source. If you wish to run the service Outlines codebase is open source. If you wish to run the service
on your own infrastructure you can do so. on your own infrastructure you can do so.
</p> </p>
<p> <Centered>
<Button>GitHub</Button> <Button href={githubUrl()} target="_blank">
</p> Source Code
</Button>
</Centered>
</Plan> </Plan>
<Plan <Plan
size={{ desktop: 1 / 2 }} size={{ desktop: 1 / 2 }}
@ -118,12 +124,12 @@ export default function Pricing() {
</div> </div>
<p itemprop="description"> <p itemprop="description">
Run Outline on your own infrastructure. Get dedicated support with Support continued development of Outline. Get dedicated support
setup, maintainence, and product issues. with setup, maintainence, and product issues.
</p>
<p>
<Button>Contact Us</Button>
</p> </p>
<Centered>
<Button href={mailToUrl()}>Contact Us</Button>
</Centered>
</Plan> </Plan>
</Grid> </Grid>
</Content> </Content>
@ -172,6 +178,10 @@ const Plan = styled(Grid.Unit)`
} }
`; `;
const Centered = styled.div`
text-align: center;
`;
const Name = styled.h3` const Name = styled.h3`
text-align: center; text-align: center;
`; `;

View File

@ -1,16 +1,14 @@
// @flow // @flow
import * as React from 'react'; import * as React from 'react';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet'; import PageTitle from './components/PageTitle';
import Header from './components/Header'; import Header from './components/Header';
import Content from './components/Content'; import Content from './components/Content';
export default function Privacy() { export default function Privacy() {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title="Privacy Policy" />
<title>Privacy Policy</title>
</Helmet>
<Header background="#F4F7FA"> <Header background="#F4F7FA">
<h1>Privacy Policy</h1> <h1>Privacy Policy</h1>
<p>How we collect and use your information</p> <p>How we collect and use your information</p>

View File

@ -1,6 +1,5 @@
// @flow // @flow
import * as React from 'react'; import * as React from 'react';
import { Helmet } from 'react-helmet';
import styled from 'styled-components'; import styled from 'styled-components';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import Hero from './components/Hero'; import Hero from './components/Hero';
@ -8,6 +7,7 @@ import HeroText from './components/HeroText';
import SigninButtons from './components/SigninButtons'; import SigninButtons from './components/SigninButtons';
import AuthErrors from './components/AuthErrors'; import AuthErrors from './components/AuthErrors';
import Centered from './components/Centered'; import Centered from './components/Centered';
import PageTitle from './components/PageTitle';
import { Team } from '../models'; import { Team } from '../models';
type Props = { type Props = {
@ -36,9 +36,7 @@ function SubdomainSignin({
return ( return (
<React.Fragment> <React.Fragment>
<Helmet> <PageTitle title={`Sign in to ${team.name}`} />
<title>Outline - Sign in to {team.name}</title>
</Helmet>
<Grid> <Grid>
<Hero> <Hero>
<h1>{lastSignedIn ? 'Welcome back,' : 'Hey there,'}</h1> <h1>{lastSignedIn ? 'Welcome back,' : 'Hey there,'}</h1>

View File

@ -0,0 +1,13 @@
// @flow
import * as React from 'react';
import { Helmet } from 'react-helmet';
function PageTitle({ title }: { title: string }) {
return (
<Helmet>
<title>{title} Outline</title>
</Helmet>
);
}
export default PageTitle;

View File

@ -1,17 +1,15 @@
// @flow // @flow
import * as React from 'react'; import * as React from 'react';
import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet';
import styled from 'styled-components'; import styled from 'styled-components';
import Grid from 'styled-components-grid';
import PageTitle from '../components/PageTitle';
import Header from '../components/Header'; import Header from '../components/Header';
import Content from '../components/Content'; import Content from '../components/Content';
export default function Pricing() { export default function Pricing() {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title="API Reference" />
<title>API Reference - Outline</title>
</Helmet>
<Header background="#AA34F0"> <Header background="#AA34F0">
<h1>API Reference</h1> <h1>API Reference</h1>
<p>Outline is built on an open, best-in-class, API</p> <p>Outline is built on an open, best-in-class, API</p>

View File

@ -1,17 +1,15 @@
// @flow // @flow
import * as React from 'react'; import * as React from 'react';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet';
import styled from 'styled-components'; import styled from 'styled-components';
import PageTitle from '../components/PageTitle';
import Header from '../components/Header'; import Header from '../components/Header';
import Content from '../components/Content'; import Content from '../components/Content';
export default function Pricing() { export default function Pricing() {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title="Developers" />
<title>Developers - Outline</title>
</Helmet>
<Header background="#AA34F0"> <Header background="#AA34F0">
<h1>Developers</h1> <h1>Developers</h1>
<p>Outline is built on an open, best-in-class, API</p> <p>Outline is built on an open, best-in-class, API</p>

View File

@ -1,7 +1,7 @@
// @flow // @flow
import * as React from 'react'; import * as React from 'react';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet'; import PageTitle from '../components/PageTitle';
import Markdown from '../components/Markdown'; import Markdown from '../components/Markdown';
import Header from '../components/Header'; import Header from '../components/Header';
import Content from '../components/Content'; import Content from '../components/Content';
@ -23,9 +23,7 @@ type Props = {
export default function Integration({ integration, content }: Props) { export default function Integration({ integration, content }: Props) {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title={`${integration.name} Integration`} />
<title>{integration.name} Integration Outline</title>
</Helmet>
<Header background="#F4F7FA"> <Header background="#F4F7FA">
<h1>{integration.name} Integration</h1> <h1>{integration.name} Integration</h1>
<p>{integration.description}</p> <p>{integration.description}</p>

View File

@ -3,7 +3,7 @@ import * as React from 'react';
import { map, groupBy } from 'lodash'; import { map, groupBy } from 'lodash';
import styled from 'styled-components'; import styled from 'styled-components';
import Grid from 'styled-components-grid'; import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet'; import PageTitle from '../components/PageTitle';
import Header from '../components/Header'; import Header from '../components/Header';
import Content from '../components/Content'; import Content from '../components/Content';
import integrations from './content'; import integrations from './content';
@ -13,9 +13,7 @@ const categories = groupBy(integrations, i => i.category);
function Integrations() { function Integrations() {
return ( return (
<Grid> <Grid>
<Helmet> <PageTitle title="Integrations" />
<title>Integrations</title>
</Helmet>
<Header background="#FFB500"> <Header background="#FFB500">
<h1>Integrations</h1> <h1>Integrations</h1>
<p> <p>