diff --git a/.gitignore b/.gitignore index 2284795af..8500abdfd 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,9 @@ packages/*/lib/ packages/@textlint/*/lib/ packages/**/yarn.lock test/**/yarn.lock + +# Docusaurus +website/translated_docs +website/build +website/i18n/* +!website/i18n/en.json diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 000000000..aeedda9bf --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,11 @@ +node_modules +.DS_Store +lib/core/metadata.js +lib/core/MetadataBlog.js +website/translated_docs +website/build/ +website/yarn.lock +website/node_modules + +website/i18n/* +!website/i18n/en.json diff --git a/website/blog/2018-01-13-renewing-1.0.0.md b/website/blog/2018-01-13-renewing-1.0.0.md new file mode 100644 index 000000000..b06627ff9 --- /dev/null +++ b/website/blog/2018-01-13-renewing-1.0.0.md @@ -0,0 +1,7 @@ +--- +title: Renewing +author: 0x6b +authorURL: http://github.com/0x6b +--- + +We're renewing our website to be able to give you better experience. diff --git a/website/core/Footer.js b/website/core/Footer.js new file mode 100644 index 000000000..fc30bd3f6 --- /dev/null +++ b/website/core/Footer.js @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +const React = require("react"); + +class Footer extends React.Component { + docUrl(doc, language) { + const baseUrl = this.props.config.baseUrl; + return baseUrl + "docs/" + (language ? language + "/" : "") + doc; + } + + pageUrl(doc, language) { + const baseUrl = this.props.config.baseUrl; + return baseUrl + (language ? language + "/" : "") + doc; + } + + render() { + const currentYear = new Date().getFullYear(); + return ( + + ); + } +} + +module.exports = Footer; diff --git a/website/package.json b/website/package.json new file mode 100644 index 000000000..ec2e7d746 --- /dev/null +++ b/website/package.json @@ -0,0 +1,14 @@ +{ + "scripts": { + "examples": "docusaurus-examples", + "start": "docusaurus-start", + "build": "docusaurus-build", + "publish-gh-pages": "docusaurus-publish", + "write-translations": "docusaurus-write-translations", + "version": "docusaurus-version", + "rename-version": "docusaurus-rename-version" + }, + "devDependencies": { + "docusaurus": "^1.0.5" + } +} diff --git a/website/pages/en/help.js b/website/pages/en/help.js new file mode 100755 index 000000000..696baa3d3 --- /dev/null +++ b/website/pages/en/help.js @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +const React = require("react"); + +const CompLibrary = require("../../core/CompLibrary.js"); +const Container = CompLibrary.Container; +const GridBlock = CompLibrary.GridBlock; + +const siteConfig = require(process.cwd() + "/siteConfig.js"); + +class Help extends React.Component { + render() { + const supportLinks = [ + { + content: "Learn more using the [documentation on this site.](/docs/README.html)", + title: "Browse Docs" + }, + { + content: + "For bugs and feature requests, please [open an issue](https://github.com/textlint/textlint/issues).", + title: "Join the community" + } + ]; + + return ( +
+ +
+
+

Need help?

+
+

This project is maintained by a dedicated group of people.

+ +
+
+
+ ); + } +} + +module.exports = Help; diff --git a/website/pages/en/index.js b/website/pages/en/index.js new file mode 100755 index 000000000..e6342b3bc --- /dev/null +++ b/website/pages/en/index.js @@ -0,0 +1,217 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +const React = require("react"); + +const CompLibrary = require("../../core/CompLibrary.js"); +const MarkdownBlock = CompLibrary.MarkdownBlock; +/* Used to read markdown */ +const Container = CompLibrary.Container; +const GridBlock = CompLibrary.GridBlock; + +const siteConfig = require(process.cwd() + "/siteConfig.js"); + +function imgUrl(img) { + return siteConfig.baseUrl + "img/" + img; +} + +function docUrl(doc, language) { + return siteConfig.baseUrl + "docs/" + (language ? language + "/" : "") + doc; +} + +function pageUrl(page, language) { + return siteConfig.baseUrl + (language ? language + "/" : "") + page; +} + +class Button extends React.Component { + render() { + return ( +
+ + {this.props.children} + +
+ ); + } +} + +Button.defaultProps = { + target: "_self" +}; + +const SplashContainer = props => ( +
+
+
{props.children}
+
+
+); + +const Logo = props => ( +
+ +
+); + +const ProjectTitle = props => ( +

+ {siteConfig.title} + {siteConfig.tagline} +

+); + +const PromoSection = props => ( +
+
+
{props.children}
+
+
+); + +class HomeSplash extends React.Component { + render() { + let language = this.props.language || ""; + return ( + + +
+ + + + + +
+
+ ); + } +} + +const Block = props => ( + + + +); + +const Features = props => ( + + {[ + { + content: "This is the content of my feature", + image: imgUrl("docusaurus.svg"), + imageAlign: "top", + title: "Feature One" + }, + { + content: "The content of my second feature", + image: imgUrl("docusaurus.svg"), + imageAlign: "top", + title: "Feature Two" + } + ]} + +); + +const FeatureCallout = props => ( +
+

What is textlint?

+

+ textlint is an open source text linting utility written in JavaScript. It is hard to lint natural language + texts, but we try to resolve this issue by pluggable approach. +

+
+); + +const LearnHow = props => ( + + {[ + { + content: "Talk about learning how to use this", + image: imgUrl("docusaurus.svg"), + imageAlign: "right", + title: "Learn How" + } + ]} + +); + +const TryOut = props => ( + + {[ + { + content: "Talk about trying this out", + image: imgUrl("docusaurus.svg"), + imageAlign: "left", + title: "Try it Out" + } + ]} + +); + +const Description = props => ( + + {[ + { + content: "This is another description of how this project is useful", + image: imgUrl("docusaurus.svg"), + imageAlign: "right", + title: "Description" + } + ]} + +); + +const Showcase = props => { + if ((siteConfig.users || []).length === 0) { + return null; + } + const showcase = siteConfig.users + .filter(user => { + return user.pinned; + }) + .map((user, i) => { + return ( + + + + ); + }); + + return ( +
+

{"Who's Using This?"}

+

This project is used by all these people

+
{showcase}
+
+ + More {siteConfig.title} Users + +
+
+ ); +}; + +class Index extends React.Component { + render() { + let language = this.props.language || ""; + + return ( +
+ +
+ {/**/} + + {/**/} + {/**/} + {/**/} + +
+
+ ); + } +} + +module.exports = Index; diff --git a/website/pages/en/users.js b/website/pages/en/users.js new file mode 100644 index 000000000..09bbd8c6a --- /dev/null +++ b/website/pages/en/users.js @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +const React = require("react"); + +const CompLibrary = require("../../core/CompLibrary.js"); +const Container = CompLibrary.Container; + +const siteConfig = require(process.cwd() + "/siteConfig.js"); + +class Users extends React.Component { + render() { + const showcase = siteConfig.users.map((user, i) => { + return ( + + + + ); + }); + + return ( +
+ +
+
+

Who's Using This?

+

This project is used by many folks

+
+
{showcase}
+

Are you using this project?

+ + Add your company + +
+
+
+ ); + } +} + +module.exports = Users; diff --git a/website/sidebars.json b/website/sidebars.json new file mode 100644 index 000000000..7a1d05401 --- /dev/null +++ b/website/sidebars.json @@ -0,0 +1,10 @@ +{ + "docs": { + "Docusaurus": ["doc1"], + "First Category": ["doc2"], + "Second Category": ["doc3"] + }, + "docs-other": { + "First Category": ["doc4", "doc5"] + } +} diff --git a/website/siteConfig.js b/website/siteConfig.js new file mode 100644 index 000000000..482a846a1 --- /dev/null +++ b/website/siteConfig.js @@ -0,0 +1,57 @@ +const users = [ + { + caption: "SURVIVEJS - WEBPACK", + image: "https://www.gravatar.com/avatar/b26ec3c2769168c2cbc64cc3df9cdd9c?s=200", + infoLink: "https://survivejs.com/webpack/", + pinned: true + }, + { + caption: "Hoodie", + image: "http://hoodiehq.github.io/hoodie-css/src/content_img/animals/low-profile-dog-3.png", + infoLink: "http://hood.ie/", + pinned: true + }, + { + caption: "JavaScriptの入門書", + image: "http://78.media.tumblr.com/avatar_c63524fcb991_128.pnj", + infoLink: "https://asciidwango.github.io/js-primer/ ", + pinned: true + }, + { + caption: "jp.vuejs.org", + image: "https://avatars3.githubusercontent.com/u/11144750?s=200&v=4", + infoLink: "https://github.com/vuejs-jp/jp.vuejs.org", + pinned: true + } +]; + +const siteConfig = { + title: "textlint" /* title for your website */, + tagline: "The pluggable linting tool for text and markdown", + url: "https://textlint.github.io" /* your website url */, + baseUrl: "/" /* base url for your project */, + organizationName: "textlint", // or set an env variable ORGANIZATION_NAME + projectName: "textlint", + headerLinks: [{ doc: "README", label: "Docs" }, { page: "help", label: "Help" }, { blog: true, label: "Blog" }], + users, + /* path to images for header/footer */ + headerIcon: "img/textlint-icon_256x256.png", + footerIcon: "img/textlint-icon_256x256.png", + favicon: "img/textlint-icon_256x256.png", + /* colors for website */ + colors: { + primaryColor: "#5acbe3", + secondaryColor: "#f9f2f4" + }, + // This copyright info is used in /core/Footer.js and blog rss/atom feeds. + copyright: "Copyright © " + new Date().getFullYear() + "textlint organization", + highlight: { + // Highlight.js theme to use for syntax highlighting in code blocks + theme: "default" + }, + scripts: ["https://buttons.github.io/buttons.js"], + // You may provide arbitrary config keys to be used as needed by your template. + repoUrl: "https://github.com/textlint/textlint" +}; + +module.exports = siteConfig; diff --git a/website/static/css/custom.css b/website/static/css/custom.css new file mode 100644 index 000000000..da029f78e --- /dev/null +++ b/website/static/css/custom.css @@ -0,0 +1,16 @@ +/* your custom css */ + +@media only screen and (min-device-width: 360px) and (max-device-width: 736px) { +} + +@media only screen and (min-width: 1024px) { +} + +@media only screen and (max-width: 1023px) { +} + +@media only screen and (min-width: 1400px) { +} + +@media only screen and (min-width: 1500px) { +} diff --git a/website/static/img/textlint-icon_256x256.png b/website/static/img/textlint-icon_256x256.png new file mode 100644 index 000000000..9463bc769 Binary files /dev/null and b/website/static/img/textlint-icon_256x256.png differ diff --git a/website/static/img/textlint-icon_black-white-128x128.png b/website/static/img/textlint-icon_black-white-128x128.png new file mode 100644 index 000000000..c318c8e8e Binary files /dev/null and b/website/static/img/textlint-icon_black-white-128x128.png differ