diff --git a/server/pages/Pricing.js b/server/pages/Pricing.js index 2f20f0765..73ad259db 100644 --- a/server/pages/Pricing.js +++ b/server/pages/Pricing.js @@ -1,8 +1,13 @@ // @flow import * as React from 'react'; +import styled from 'styled-components'; +import breakpoint from 'styled-components-breakpoint'; import Grid from 'styled-components-grid'; import { Helmet } from 'react-helmet'; -import Hero from './components/Hero'; +import Header from './components/Header'; +import Content from './components/Content'; +import Button from './components/Button'; +import Notice from '../../shared/components/Notice'; export default function Pricing() { return ( @@ -10,13 +15,179 @@ export default function Pricing() { Pricing - -

Pricing

-

- Explore Outline with a 14 day trial, free forever for teams smaller - than 5. -

-
+
+

Our Pricing

+

Our pricing is simple. You’ll only pay for what you use.

+
+ + + +
+ Free + + + $ + + 0 + +
+
+

Top features:

+
    +
  • Upto 5 team members
  • +
  • Unlimited documents
  • +
  • All integrations
  • +
  • API access
  • +
+
+
+ +
+ Standard + + + $ + + 5{' '} + per seat per month + +
+
+

Top features:

+
    +
  • Unlimited team members
  • +
  • Unlimited documents
  • +
  • Unlimited version history
  • +
  • Email support
  • +
+
+ + Note: Outline is currently in Beta. This plan is currently free + until public release in Q1 2019. + +
+
+
+ +

Self Hosted

+

Host your own instance on-premise or in the cloud

+ + +
+ Open Source + + + $ + + 0 + +
+

+ Outline’s codebase is open source. If you wish to run the service + on your own infrastructure you can do so. +

+

+ +

+
+ +
+ Enterprise + + + $ + + 199 per month + +
+ +

+ Run Outline on your own infrastructure. Get dedicated support with + setup, maintainence, and product issues. +

+

+ +

+
+
+
); } + +const Plan = styled(Grid.Unit)` + padding: 2em 0; + position: relative; + + &:before { + display: none; + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: ${props => props.theme.smoke}; + transform: skewX(2deg); + z-index: -1; + margin: 0 2em; + + ${breakpoint('tablet')` + display: block; + `}; + } + + ${breakpoint('tablet')` + padding: 2em 6em; + `}; + + ul { + padding: 0; + list-style: none; + + li { + &:before { + content: '✓'; + margin-right: 6px; + font-weight: 600; + color: ${props => props.theme.primary}; + } + } + } +`; + +const Name = styled.h3` + text-align: center; +`; + +const Price = styled.h2` + text-align: center; + font-size: 2.5em; + min-height: 90px; + margin-top: 0; + + span { + font-size: 1em; + } +`; + +const Period = styled.p` + font-size: 13px; + color: ${props => props.theme.slateDark}; +`; diff --git a/server/pages/components/Button.js b/server/pages/components/Button.js new file mode 100644 index 000000000..d985af388 --- /dev/null +++ b/server/pages/components/Button.js @@ -0,0 +1,15 @@ +// @flow +import styled from 'styled-components'; + +const Button = styled.a` + display: inline-flex; + align-items: center; + padding: 10px 20px; + color: ${props => props.theme.white}; + background: ${props => props.theme.black}; + border-radius: 4px; + font-weight: 600; + height: 56px; +`; + +export default Button; diff --git a/server/pages/components/Navigation.js b/server/pages/components/Navigation.js index d63c81330..a2e9c7813 100644 --- a/server/pages/components/Navigation.js +++ b/server/pages/components/Navigation.js @@ -10,7 +10,7 @@ import { fadeAndScaleIn } from '../../../shared/styles/animations'; import { developers, changelog, - features, + pricing, about, integrations, privacy, @@ -42,18 +42,18 @@ function TopNavigation({ sessions, loggedIn }: Props) {  Outline - - Features - Integrations + + Pricing + Changelog - + API - + {loggedIn ? ( {process.env.SUBDOMAINS_ENABLED === 'true' && diff --git a/server/pages/components/SigninButtons.js b/server/pages/components/SigninButtons.js index b2817972b..cab67f6cf 100644 --- a/server/pages/components/SigninButtons.js +++ b/server/pages/components/SigninButtons.js @@ -1,6 +1,7 @@ // @flow import * as React from 'react'; import styled from 'styled-components'; +import Button from './Button'; import { signin } from '../../../shared/utils/routeHelpers'; import Flex from '../../../shared/components/Flex'; import GoogleLogo from '../../../shared/components/GoogleLogo'; @@ -71,17 +72,6 @@ const Spacer = styled.span` padding-left: 10px; `; -const Button = styled.a` - display: inline-flex; - align-items: center; - padding: 10px 20px; - color: ${props => props.theme.white}; - background: ${props => props.theme.black}; - border-radius: 4px; - font-weight: 600; - height: 56px; -`; - const LastLogin = styled.p` font-size: 13px; font-weight: 500; diff --git a/shared/utils/routeHelpers.js b/shared/utils/routeHelpers.js index 623ff511c..97d5db95d 100644 --- a/shared/utils/routeHelpers.js +++ b/shared/utils/routeHelpers.js @@ -57,6 +57,10 @@ export function features(): string { return `${process.env.URL}/#features`; } +export function pricing(): string { + return `${process.env.URL}/pricing`; +} + export function developers(): string { return `${process.env.URL}/developers`; }