diff --git a/app/scenes/Document/components/Branding.js b/app/scenes/Document/components/Branding.js index 47c7eefcf..40e52299a 100644 --- a/app/scenes/Document/components/Branding.js +++ b/app/scenes/Document/components/Branding.js @@ -6,7 +6,7 @@ import OutlineLogo from 'shared/components/OutlineLogo'; function Branding() { return ( -  Outline +  Outline ); } diff --git a/public/fonts/LatoLatin-Semibold.woff b/public/fonts/LatoLatin-Semibold.woff new file mode 100644 index 000000000..5e228979e Binary files /dev/null and b/public/fonts/LatoLatin-Semibold.woff differ diff --git a/public/images/airtable.png b/public/images/airtable.png new file mode 100755 index 000000000..99304bd12 Binary files /dev/null and b/public/images/airtable.png differ diff --git a/public/images/codepen.png b/public/images/codepen.png new file mode 100755 index 000000000..b6423947b Binary files /dev/null and b/public/images/codepen.png differ diff --git a/public/images/figma.png b/public/images/figma.png new file mode 100755 index 000000000..23ba64a6a Binary files /dev/null and b/public/images/figma.png differ diff --git a/public/images/framer.png b/public/images/framer.png new file mode 100755 index 000000000..5a016aa54 Binary files /dev/null and b/public/images/framer.png differ diff --git a/public/images/github-gist.png b/public/images/github-gist.png new file mode 100755 index 000000000..90bec6cd9 Binary files /dev/null and b/public/images/github-gist.png differ diff --git a/public/images/invision.png b/public/images/invision.png new file mode 100755 index 000000000..816288269 Binary files /dev/null and b/public/images/invision.png differ diff --git a/public/images/loom.png b/public/images/loom.png new file mode 100755 index 000000000..9faf9ae52 Binary files /dev/null and b/public/images/loom.png differ diff --git a/public/images/lucidchart.png b/public/images/lucidchart.png new file mode 100755 index 000000000..be54da86c Binary files /dev/null and b/public/images/lucidchart.png differ diff --git a/public/images/marvel.png b/public/images/marvel.png new file mode 100755 index 000000000..f8588fa50 Binary files /dev/null and b/public/images/marvel.png differ diff --git a/public/images/mode-analytics.png b/public/images/mode-analytics.png new file mode 100755 index 000000000..f3dd845e9 Binary files /dev/null and b/public/images/mode-analytics.png differ diff --git a/public/images/numeracy.png b/public/images/numeracy.png new file mode 100755 index 000000000..fb45a8db6 Binary files /dev/null and b/public/images/numeracy.png differ diff --git a/public/images/realtime-board.png b/public/images/realtime-board.png new file mode 100755 index 000000000..2896a558d Binary files /dev/null and b/public/images/realtime-board.png differ diff --git a/public/images/screenshots/airtable.png b/public/images/screenshots/airtable.png new file mode 100755 index 000000000..ce2ced1c5 Binary files /dev/null and b/public/images/screenshots/airtable.png differ diff --git a/public/images/screenshots/figma.png b/public/images/screenshots/figma.png new file mode 100755 index 000000000..70226ba36 Binary files /dev/null and b/public/images/screenshots/figma.png differ diff --git a/public/images/screenshots/framer.png b/public/images/screenshots/framer.png new file mode 100755 index 000000000..74be5e879 Binary files /dev/null and b/public/images/screenshots/framer.png differ diff --git a/public/images/screenshots/invision.png b/public/images/screenshots/invision.png new file mode 100755 index 000000000..32e314209 Binary files /dev/null and b/public/images/screenshots/invision.png differ diff --git a/public/images/screenshots/lucidchart.png b/public/images/screenshots/lucidchart.png new file mode 100755 index 000000000..50f76820a Binary files /dev/null and b/public/images/screenshots/lucidchart.png differ diff --git a/public/images/screenshots/marvel.png b/public/images/screenshots/marvel.png new file mode 100755 index 000000000..7416afca5 Binary files /dev/null and b/public/images/screenshots/marvel.png differ diff --git a/public/images/screenshots/numeracy.png b/public/images/screenshots/numeracy.png new file mode 100755 index 000000000..851907909 Binary files /dev/null and b/public/images/screenshots/numeracy.png differ diff --git a/public/images/screenshots/realtime-board.png b/public/images/screenshots/realtime-board.png new file mode 100755 index 000000000..f30783b07 Binary files /dev/null and b/public/images/screenshots/realtime-board.png differ diff --git a/public/images/screenshots/slack-channel.png b/public/images/screenshots/slack-channel.png new file mode 100755 index 000000000..37fc0098c Binary files /dev/null and b/public/images/screenshots/slack-channel.png differ diff --git a/public/images/screenshots/slack-search.png b/public/images/screenshots/slack-search.png new file mode 100755 index 000000000..f17c0669c Binary files /dev/null and b/public/images/screenshots/slack-search.png differ diff --git a/public/images/screenshots/typeform.png b/public/images/screenshots/typeform.png new file mode 100755 index 000000000..fa005a370 Binary files /dev/null and b/public/images/screenshots/typeform.png differ diff --git a/public/images/slack.png b/public/images/slack.png new file mode 100755 index 000000000..d115ad062 Binary files /dev/null and b/public/images/slack.png differ diff --git a/public/images/trello.png b/public/images/trello.png new file mode 100755 index 000000000..8349aab1a Binary files /dev/null and b/public/images/trello.png differ diff --git a/public/images/typeform.png b/public/images/typeform.png new file mode 100755 index 000000000..ffac920c7 Binary files /dev/null and b/public/images/typeform.png differ diff --git a/public/images/vimeo.png b/public/images/vimeo.png new file mode 100755 index 000000000..83427afd6 Binary files /dev/null and b/public/images/vimeo.png differ diff --git a/public/images/youtube.png b/public/images/youtube.png new file mode 100755 index 000000000..95b7f5c92 Binary files /dev/null and b/public/images/youtube.png differ diff --git a/server/api/middlewares/errorHandling.js b/server/api/middlewares/errorHandling.js index 5acd500ab..9c5100b59 100644 --- a/server/api/middlewares/errorHandling.js +++ b/server/api/middlewares/errorHandling.js @@ -23,7 +23,12 @@ export default function errorHandling() { } } - if (message.match('Authorization error')) { + if (message.match(/Not found/i)) { + ctx.status = 404; + error = 'not_found'; + } + + if (message.match(/Authorization error/i)) { ctx.status = 403; error = 'authorization_error'; } diff --git a/server/pages/About.js b/server/pages/About.js index 72cc646f5..a0ea38509 100644 --- a/server/pages/About.js +++ b/server/pages/About.js @@ -38,7 +38,7 @@ export default function About() { About Us -
+

About Us

The team behind Outline

diff --git a/server/pages/Changelog.js b/server/pages/Changelog.js index 688b3e38b..e7ca70d7d 100644 --- a/server/pages/Changelog.js +++ b/server/pages/Changelog.js @@ -1,10 +1,11 @@ // @flow import * as React from 'react'; +import { groupBy, map } from 'lodash'; import format from 'date-fns/format'; import styled from 'styled-components'; import Grid from 'styled-components-grid'; -import ReactMarkdown from 'react-markdown'; import { Helmet } from 'react-helmet'; +import Markdown from './components/Markdown'; import Header from './components/Header'; import Content from './components/Content'; @@ -15,39 +16,84 @@ type Release = { created_at: string, }; -function Changelog({ releases }: { releases: Release[] }) { +type Props = { releases: Release[] }; + +function Changelog({ releases }: Props) { + const categories = groupBy(releases, i => + format(new Date(i.created_at), 'MMMM, YYYY') + ); + return ( Changelog -
+

Changelog

-

- We’re building in public. Here’s what we’ve been changing recently. -

+

We’re building in public. Here’s what has changed recently.

- {releases.map(release => ( -
- - {release.name} - - - -
- ))} + + + + + + {releases.map(release => ( +
+ + {release.name} + + + +
+ ))} +
+
); } +const MenuItem = styled.a` + display: flex; + align-items: center; + font-size: 16px; + color: ${props => props.theme.text}; +`; + +const List = styled.ul` + list-style: none; + margin: 0; + padding: 0; +`; + const Heading = styled.h1` + margin-top: 0.5em; + a { color: ${props => props.theme.text}; } + a:hover { text-decoration: underline; } @@ -66,13 +112,6 @@ const Article = styled.div` &:last-child { border-bottom: 0; } - - img { - max-width: 100%; - zoom: 50%; - box-shadow: 0 10px 80px rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); - border-radius: 8px; - } `; export default Changelog; diff --git a/server/pages/Home.js b/server/pages/Home.js index a7f49386d..597a8e3dc 100644 --- a/server/pages/Home.js +++ b/server/pages/Home.js @@ -166,7 +166,7 @@ const Mask = styled.div` `; const Features = styled.div` - background: hsl(180, 58%, 85%); + background: #00adff; padding: 0 2em; width: 100%; `; @@ -200,7 +200,7 @@ const Feature = styled(Grid.Unit)` `; const Footer = styled.div` - background: hsl(127, 58%, 85%); + background: #aa34f0; text-align: left; width: 100%; padding: 4em 2em; @@ -210,6 +210,10 @@ const Footer = styled.div` margin-top: 0; } + p { + margin-bottom: 0; + } + ${breakpoint('tablet')` margin: 2em 0; padding: 6em 4em; diff --git a/server/pages/Privacy.js b/server/pages/Privacy.js index 429e73a12..93ca7846c 100644 --- a/server/pages/Privacy.js +++ b/server/pages/Privacy.js @@ -11,7 +11,7 @@ export default function Privacy() { Privacy Policy -
+

Privacy Policy

How we collect and use your information

diff --git a/server/pages/components/Header.js b/server/pages/components/Header.js index 64a22b45d..c82cec15b 100644 --- a/server/pages/components/Header.js +++ b/server/pages/components/Header.js @@ -1,15 +1,17 @@ // @flow import * as React from 'react'; +import breakpoint from 'styled-components-breakpoint'; import styled from 'styled-components'; import Centered from './Centered'; type Props = { children: React.Node, + background?: string, }; -const Header = ({ children }: Props) => { +const Header = ({ children, background }: Props) => { return ( - + {children} ); @@ -17,9 +19,25 @@ const Header = ({ children }: Props) => { const Wrapper = styled.div` width: 100%; - padding: 2em; - background: ${props => props.theme.contentHeaderBackground}; + padding: 8em 0 3em; + position: relative; + + margin-top: -70px; margin-bottom: 2em; + text-align: center; + background: ${props => props.background || 'transparent'}; + z-index: -1; + + &:before { + content: ''; + position: absolute; + top: 0; + left: -30px; + width: 100vw; + height: 100%; + background: ${props => props.background || 'transparent'}; + z-index: -10; + } p { font-size: 22px; @@ -29,9 +47,17 @@ const Wrapper = styled.div` } h1 { - font-size: 3.5em; + font-size: 2em; margin: 0 0 0.1em; } + + ${breakpoint('tablet')` + padding: 8em 3em 3em 3em; + + h1 { + font-size: 4em; + } + `}; `; export default Header; diff --git a/server/pages/components/Layout.js b/server/pages/components/Layout.js index 9040b83bf..3e5514cfd 100644 --- a/server/pages/components/Layout.js +++ b/server/pages/components/Layout.js @@ -78,7 +78,7 @@ function Layout({ children, loggedIn, sessions }: Props) { const Body = styled.body` padding: 0 30px; - ${breakpoint('tablet')` + ${breakpoint('desktop')` padding: 0; `}; `; diff --git a/server/pages/components/Markdown.js b/server/pages/components/Markdown.js new file mode 100644 index 000000000..9537707a6 --- /dev/null +++ b/server/pages/components/Markdown.js @@ -0,0 +1,33 @@ +// @flow +import ReactMarkdown from 'react-markdown'; +import styled from 'styled-components'; + +export default styled(ReactMarkdown)` + blockquote { + margin-left: 0; + margin-right: 0; + background-color: ${props => props.theme.smoke}; + border-left: 6px solid ${props => props.theme.smokeDark}; + padding: 15px 30px 15px 15px; + font-style: italic; + font-size: 16px; + + p { + margin: 0; + } + } + + img { + max-width: 100%; + zoom: 50%; + box-shadow: 0 10px 80px rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); + border-radius: 8px; + } + + code { + font-size: 15px; + background: ${props => props.theme.smoke}; + padding: 2px 4px; + border-radius: 2px; + } +`; diff --git a/server/pages/components/Navigation.js b/server/pages/components/Navigation.js index 843082373..d63c81330 100644 --- a/server/pages/components/Navigation.js +++ b/server/pages/components/Navigation.js @@ -4,6 +4,7 @@ import { sortBy } from 'lodash'; import styled from 'styled-components'; import breakpoint from 'styled-components-breakpoint'; import Centered from './Centered'; +import OutlineLogo from '../../../shared/components/OutlineLogo'; import TeamLogo from '../../../shared/components/TeamLogo'; import { fadeAndScaleIn } from '../../../shared/styles/animations'; import { @@ -11,6 +12,7 @@ import { changelog, features, about, + integrations, privacy, githubUrl, twitterUrl, @@ -36,20 +38,19 @@ function TopNavigation({ sessions, loggedIn }: Props) { return (