removes old stale test pages

This commit is contained in:
jimmylee 2020-11-07 17:18:23 -08:00
parent b93d36dc8f
commit e8faed6be4
6 changed files with 0 additions and 2380 deletions

View File

@ -1,193 +0,0 @@
import * as React from "react";
import * as Constants from "~/common/constants";
import * as Actions from "~/common/actions";
import * as System from "~/components/system";
import { css } from "@emotion/core";
import WebsitePrototypeWrapper from "~/components/core/WebsitePrototypeWrapper";
import WebsitePrototypeHeader from "~/components/core/WebsitePrototypeHeader";
import WebsitePrototypeFooter from "~/components/core/WebsitePrototypeFooter";
const STYLES_ROOT = css`
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
height: 100vh;
text-align: center;
font-size: 1rem;
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 0.78rem;
}
`;
const STYLES_MIDDLE = css`
position: relative;
min-height: 10%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
padding: 24px;
`;
const STYLES_CARD = css`
margin: 0 auto 0 auto;
max-width: 420px;
width: 100%;
background: #000000;
border-radius: 8px;
padding-top: 24px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.7);
`;
const STYLES_CARD_IMAGE = css`
width: 100%;
border-radius: 8px 8px 0 0;
`;
const STYLES_CARD_PARAGRAPH = css`
padding: 48px;
font-size: 1.2rem;
color: ${Constants.system.white};
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 24px;
font-size: 1rem;
}
`;
const STYLES_CARD_ACTIONS = css`
display: flex;
align-items: center;
justify-content: space-between;
color: ${Constants.system.white};
padding: 24px;
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 16px;
}
`;
const STYLES_CARD_ACTIONS_LEFT = css`
min-width: 10%;
width: 100%;
font-family: ${Constants.font.code};
text-transform: uppercase;
font-size: 12px;
text-align: left;
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 10px;
}
`;
const STYLES_CARD_ACTIONS_RIGHT = css`
padding: 0 0 0 24px;
flex-shrink: 0;
`;
const STYLES_LINK = css`
color: #6a737d;
text-decoration: none;
transition: 200ms ease color;
cursor: pointer;
:visited {
color: #959da5;
}
:hover {
color: #959da5;
}
`;
// TODO(jim): Refactor this health check later.
export const getServerSideProps = async (context) => {
let buckets = false;
try {
const response = await fetch("https://slate.textile.io/health", {
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
});
if (response.status === 204) {
buckets = true;
}
} catch (e) {
console.log(e);
}
return {
props: { ...context.query, buckets },
};
};
export default class IndexPage extends React.Component {
state = {
available: this.props.buckets,
};
async componentDidMount() {
const response = await Actions.health({});
console.log("HEALTH_CHECK", response);
if (response && response.data) {
return this.setState({ available: this.props.buckets });
}
return this.setState({ available: false });
}
render() {
const title = `Slate`;
const description = "The place for all of your assets. Powered by Textile and Filecoin.";
const url = "https://slate.host";
return (
<WebsitePrototypeWrapper title={title} description={description} url={url}>
<div css={STYLES_ROOT}>
<WebsitePrototypeHeader />
<div css={STYLES_MIDDLE}>
<div css={STYLES_CARD}>
<img css={STYLES_CARD_IMAGE} src="/public/static/teaser.png" />
<p css={STYLES_CARD_PARAGRAPH}>
Store your files, turn them into collections, and share them with the world with{" "}
<a
css={STYLES_LINK}
href="https://github.com/filecoin-project/slate"
target="_blank"
>
Filecoin & Slate
</a>
.
<br />
<br />
We launch September 14th.
</p>
{this.state.available ? (
<div css={STYLES_CARD_ACTIONS}>
<System.ButtonPrimaryFull onClick={() => window.open("/_")}>
Use Slate (Alpha)
</System.ButtonPrimaryFull>
</div>
) : (
<div css={STYLES_CARD_ACTIONS}>
<div css={STYLES_CARD_ACTIONS_LEFT} style={{ textAlign: "center" }}>
Slate is currently down for maintenance.
</div>
</div>
)}
</div>
</div>
<WebsitePrototypeFooter />
</div>
</WebsitePrototypeWrapper>
);
}
}

View File

@ -1,453 +0,0 @@
import * as React from "react";
import * as Constants from "~/common/constants";
import * as Actions from "~/common/actions";
import * as System from "~/components/system";
import CodeBlock from "~/components/system/CodeBlock";
import ReactDOM from "react-dom";
import { css } from "@emotion/core";
import WebsitePrototypeWrapper from "~/components/core/WebsitePrototypeWrapper";
import WebsitePrototypeHeader from "~/components/core/NewWebsitePrototypeHeader";
import WebsitePrototypeFooter from "~/components/core/NewWebsitePrototypeFooter";
const STYLES_ROOT = css`
padding: 16px 88px;
section {
width: 1140px;
margin: auto;
padding: 15vh 0;
}
h1 {
font-size: 46px;
line-height: 100%;
}
button {
background: #36383d;
color: white;
width: 300px;
height: 60px;
border-radius: 5px;
font-style: normal;
font-weight: bold;
font-size: 18px;
align-items: center;
text-align: center;
margin: auto;
}
@media (max-width: ${Constants.sizes.mobile}px) {
}
`;
const STYLES_SECTION_CONTAINER = css`
width: 100%;
height: 100vh;
`;
const STYLES_OPENSOURCE_CONTAINER = css`
width: 100%;
background-color: ${Constants.system.foreground};
`;
const STYLES_HEADER_TEXT = css`
font-size: 4.768rem;
padding: 0px 0px 32px 0px;
width: 100%;
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 2.441rem;
}
`;
const STYLES_SECTION_TEXT = css`
font-size: 1rem;
color: ${Constants.system.black};
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 0.78rem;
}
`;
const STYLES_CONTRIBUTOR_CONTAINER = css`
display: grid;
padding-top: 32px;
column-gap: 5px;
row-gap: 10px;
justify-items: center;
align-item: center;
grid-template-columns: repeat(auto-fit, 150px);
height: 70vh;
overflow: hidden;
`;
const STYLES_CONTRIBUTOR_CARD = css`
height: 200px;
width: 150px;
background-color: ${Constants.system.white};
`;
const STYLES_IMAGE_CONTAINER = css`
height: 150px;
width: 150px;
`;
const STYLES_CARD_IMAGE = css`
width: 100%;
height: auto;
`;
const STYLES_CARD_TEXT = css`
font-size: 1rem;
color: ${Constants.system.black};
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 0.78rem;
}
`;
const STYLES_SECTION_CONTRIBUTE = css`
width: 100%;
height: 80%;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto 1fr 1fr;
`;
const STYLES_BTN_SPACER = css`
padding-bottom: 32px;
`;
const STYLES_IMAGES_CONTAINER = css`
grid-row: 1 / span 2;
grid-column: 2;
display: flex;
flex-direction: column;
`;
const STYLES_IMAGE_CONT = css`
max-width: 500px;
float: right;
justify-self: center;
align-self: center;
margin-bottom: 20px;
border: 1px solid ${Constants.system.border};
box-shadow: 5px 5px 1px ${Constants.system.border};
`;
const STYLES_CONTRIBUTE_CONTAINER = css`
width: 100%;
height: 100vh;
`;
const STYLES_IMAGE_THREE = css`
width: 100%;
height: auto;
`;
const STYLES_SECTION_QUOTE = css`
grid-row: 3;
grid-column: 1;
font-size: 2rem;
color: ${Constants.system.black};
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 1rem;
}
`;
const STYLES_CONTACT_CONTAINER = css`
width: 100%;
height: auto;
`;
const STYLES_CONTACT_BTN_CONTAINER = css`
display: flex;
padding: 96px 0;
flex-direction: row;
justify-content: space-around;
`;
const STYLES_INTEGRATE_GIF = css`
width: 100%
height: 70vh;
padding-top: 20vh;
`;
const STYLES_DESIGN_CONTAINER = css`
display: grid;
grid-template-rows: 1fr 1fr;
grid-template-columns: 1fr 1fr;
grid-column-gap: 32px;
`;
const STYLES_D_TEXT = css`
grid-column: 1;
grid-row: 1;
`;
const STYLES_DESIGN_CODE = css`
width: 100%;
grid-row: 2;
grid-column: 1;
`;
const STYLES_D_IMAGE_CONTAINER = css`
height: auto;
width: 90%;
grid-column: 2;
grid-row: 1 / span 2;
`;
const STYLES_DESIGN_IMAGE = css`
width: 100%;
height: auto;
`;
const STYLES_WRAPPER_TEXT = css`
width: 40%;
align-self: center;
padding: 0 50px;
`;
const STYLES_SECTION = css`
display: flex;
flex-direction: row;
align-self: center;
h1 {
font-size: 46px;
line-height: 100%;
}
`;
const STYLES_CARD = css``;
export const getServerSideProps = async (context) => {
return {
props: { ...context.query },
};
};
export default class IndexPage extends React.Component {
async componentDidMount() {
const response = await Actions.health();
console.log("HEALTH_CHECK", response);
this.addContributors();
}
contributorsList = [
{
id: 1,
name: "jimmylee",
url: "https://github.com/jimmylee",
organization: "Slate",
pic:
"https://avatars0.githubusercontent.com/u/310223?s=400&u=62a15c1b5791b953fc5153a4b3f491f4b0bf2ae5&v=4",
},
{
id: 2,
name: "martinalong",
url: "https://github.com/martinalong",
organization: "Slate",
pic:
"https://avatars2.githubusercontent.com/u/33686587?s=400&u=d1841da2872f30f7f8cb80e67cdc9b385d0f50e1&v=4",
},
{
id: 3,
name: "gndclouds",
url: "https://github.com/gndclouds",
organization: "Slate",
pic:
"https://avatars0.githubusercontent.com/u/1757261?s=400&u=b7136d82bfacac3002b3b08980ac611ca7f34b7b&v=4",
},
{
id: 4,
name: "uonai",
url: "https://github.com/uonai",
organization: "",
pic:
"https://avatars2.githubusercontent.com/u/7935491?s=400&u=8d91d58215c8df440eacf37d6291d912252685c3&v=4",
},
{
id: 5,
name: "tarafanlin",
url: "https://github.com/tarafanlin",
organization: "Slate",
pic:
"https://avatars2.githubusercontent.com/u/35607644?s=400&u=48483bdf251e5293fefb30ae993bfa04d06601a6&v=4",
},
{
id: 6,
name: "jasonleyser",
url: "https://github.com/",
organization: "Slate",
pic: "/static/a1.jpg",
},
{
id: 7,
name: "akuokojnr",
url: "https://github.com/akuokojnr",
organization: "",
pic:
"https://avatars2.githubusercontent.com/u/31008944?s=400&u=340814cc84eac860654a072781661e58aadaf560&v=4",
},
{
id: 8,
name: "jordattebayo",
url: "https://github.com/jordattebayo",
organization: "",
pic:
"https://avatars2.githubusercontent.com/u/31581758?s=400&u=21765bba0c302a554ef3aab835450a32fc947a98&v=4",
},
{
id: 9,
name: "Pooja",
url: "https://github.com/",
organization: "",
pic: "/static/a1.jpg",
},
{
id: 10,
name: "tmytrn",
url: "https://github.com/tmrtrn",
organization: "",
pic:
"https://avatars0.githubusercontent.com/u/2691514?s=400&u=b589dc97fa893152768b00c27b5f9f68d1a7fb79&v=4",
},
{
id: 11,
name: "motdde",
url: "https://github.com/motdde",
organization: "",
pic:
"https://avatars3.githubusercontent.com/u/12215060?s=400&u=aa85ebcfc7438becdb50a67aa79e78ba8feb2d77&v=4",
},
{
id: 12,
name: "harisbutt",
url: "https://github.com/harisbutt",
organization: "",
pic: "/static/a1.jpg",
},
{
id: 13,
name: "andrewxhill",
url: "https://github.com/andrewxhill",
organization: "",
pic: "/static/a1.jpg",
},
{
id: 14,
name: "johannes-jp",
url: "https://github.com/johannes-jp",
organization: "",
pic: "/static/a1.jpg",
},
{
id: 15,
name: "Anish-Agnihotri",
url: "https://github.com/anish-agnihotri",
organization: "",
pic: "/static/a1.jpg",
},
{
id: 16,
name: "Aminejvm",
url: "https://github.com/aminejvm",
organization: "",
pic: "/static/a1.jpg",
},
];
addContributors = () => {
const allContributors = [];
const contributors = this.contributorsList;
for (let c of contributors) {
allContributors.push(
<div key={c.id} css={STYLES_CONTRIBUTOR_CARD}>
<div css={STYLES_IMAGE_CONTAINER}>
<img css={STYLES_CARD_IMAGE} src={c.pic} />
</div>
<System.P css={STYLES_CARD_TEXT}>{c.name}</System.P>
<a href={c.url}>{`@${c.name}`}</a>
</div>
);
}
ReactDOM.render(allContributors, document.getElementById("contr-cont"));
};
render() {
const title = `Slate`;
const description = "The place for all of your assets. Powered by Textile and Filecoin.";
const url = "https://slate.host/community";
return (
<WebsitePrototypeWrapper title={title} description={description} url={url}>
<WebsitePrototypeHeader />
<div css={STYLES_ROOT}>
<section css={STYLES_SECTION}>
<div>
<System.H1>
Slate is designed and built by a growing community of hackers, artists, and
creatives on the web.
</System.H1>
<System.P>ytu</System.P>
</div>
<div>
{" "}
<div id="contr-cont" css={STYLES_CONTRIBUTOR_CONTAINER} />
</div>
</section>
<section css={STYLES_SECTION}>
<div css={STYLES_WRAPPER_TEXT}>
<System.H1>Get Involved</System.H1>
<System.P>
Slate is a fully open-source file sharing network designed for research and
collaboration.
</System.P>
<br />
<br />
<div>
<img
src="https://d2w9rnfcy7mm78.cloudfront.net/8547413/original_613b9b0a650a3f274c68e1407f552ff3.png?1599111034?bc=0"
alt="Slate Web App Screenshot"
/>
</div>
</div>
<div css={STYLES_CARD}>
<System.H2>Contribute</System.H2>
<br />
<System.P>Get involved with the project and contribute.</System.P>
<br />
<br />
</div>
<div css={STYLES_CARD}>
<System.H2>Contact</System.H2>
<br />
<System.P>
Reach out to any of the core contributors, reach us on Twitter, or join our Slack.
</System.P>
<br />
<br />
</div>
<div css={STYLES_CARD}>
<System.H2>Integrate</System.H2>
<br />
<System.P>Explore our API and SDK and build on top of Slate.</System.P>
<br />
<br />
<CodeBlock>npm install --save slate-react-system</CodeBlock>
</div>
<div>
<System.H2>Design System</System.H2>
<br />
<System.P>Check out our open source design system for your projects</System.P>
<br />
<br />
<CodeBlock>npm install --save slate-react-system</CodeBlock>
</div>
</section>
</div>
<WebsitePrototypeFooter />
</WebsitePrototypeWrapper>
);
}
}

View File

@ -1,353 +0,0 @@
import * as React from "react";
import * as Constants from "~/common/constants";
import * as Actions from "~/common/actions";
import { css } from "@emotion/core";
import WebsitePrototypeWrapper from "~/components/core/WebsitePrototypeWrapper";
import WebsitePrototypeHeader from "~/components/core/NewWebsitePrototypeHeader";
import WebsitePrototypeFooter from "~/components/core/NewWebsitePrototypeFooter";
const STYLES_ROOT = css`
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 0 0 80px 0;
`;
const STYLES_H1 = css`
font-size: ${Constants.typescale.lvl5};
font-family: ${Constants.font.medium};
font-weight: 400;
line-height: 1.3;
padding: 0px 0px 16px 0px;
letter-spacing: -0.021rem;
width: 100%;
color: ${Constants.system.slate};
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl3};
}
`;
const STYLES_H2 = css`
font-size: ${Constants.typescale.lvl3};
font-family: ${Constants.font.medium};
font-weight: 400;
line-height: 1.3;
letter-spacing: -0.019rem;
padding: 0 0 16px 0;
width: 100%;
color: ${Constants.system.slate};
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl2};
}
`;
const STYLES_H3 = css`
font-size: ${Constants.typescale.lvl2};
font-family: ${Constants.font.text};
font-weight: 400;
line-height: 1.5;
letter-spacing: -0.014rem;
padding: 0 0 8px 0;
color: ${Constants.system.slate};
opacity: 0.7;
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl1};
}
`;
const STYLES_BLOCK = css`
display: flex;
flex-direction: column;
justify-content: space-between;
max-width: 56vw;
width: 100%;
align-self: center;
margin-bottom: 16px;
@media (max-width: ${Constants.sizes.mobile}px) {
width: 100%;
max-width: 100vw;
}
`;
const STYLES_IMG = css`
margin: 0px auto 48px auto;
width: 40%;
@media (max-width: ${Constants.sizes.mobile}px) {
width: 60%;
}
`;
const STYLES_ANNOTATION = css`
margin-top: 4px;
font-size: ${Constants.typescale.lvl0};
color: ${Constants.system.moonstone};
`;
const STYLES_BUTTON_PRIMARY = css`
box-sizing: border-box;
border-radius: 2px;
outline: 0;
border: 0;
min-height: 48px;
padding: 0px 24px 0px 24px;
margin: 24px 0 16px 0;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 16px;
letter-spacing: 0.2px;
font-family: ${Constants.font.semiBold};
transition: 200ms ease all;
user-select: none;
cursor: pointer;
background-color: ${Constants.system.brand};
color: ${Constants.system.white};
box-shadow: -4px -4px 10px #ffffff, 4px 4px 10px #d4d4d4;
:hover {
color: ${Constants.system.foreground};
}
:focus {
box-shadow: inset 0 0 5px 2px rgba(0, 0, 0, 0.3);
background-color: ${Constants.system.pitchBlack};
color: ${Constants.system.wall};
outline: 0;
border: 0;
}
`;
const STYLES_BUTTON_SECONDARY = css`
box-sizing: border-box;
border-radius: 2px;
outline: 0;
border: 0;
min-height: 48px;
padding: 0px 24px 0px 24px;
margin: 24px 0 16px 0;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 16px;
letter-spacing: 0.2px;
font-family: ${Constants.font.semiBold};
transition: 200ms ease all;
user-select: none;
cursor: pointer;
background-color: ${Constants.system.foreground};
color: ${Constants.system.brand};
box-shadow: -4px -4px 10px #ffffff, 4px 4px 10px #d4d4d4;
:hover {
background-color: ${Constants.system.white};
}
:focus {
box-shadow: inset 0 0 5px 2px rgba(0, 0, 0, 0.3);
background-color: ${Constants.system.pitchBlack};
color: ${Constants.system.wall};
outline: 0;
border: 0;
}
`;
const STYLES_LINK_WHITE = css`
color: ${Constants.system.pitchBlack};
text-decoration: none;
transition: 200ms ease color;
padding: 24px 0 0 0;
:hover {
color: ${Constants.system.moonstone};
}
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 0.78rem;
}
`;
const STYLES_SECTION_HERO = css`
width: 100vw;
padding: 0 88px 88px 88px;
display: flex;
flex-direction: column;
justify-content: center;
margin: -88px 0px px 0px;
background: ${Constants.system.foreground};
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 16vh 24px 48px 24px;
display: block;
}
`;
const STYLES_SECTION_WRAPPER = css`
width: 100vw;
padding: 32px 88px;
display: flex;
flex-direction: column;
justify-content: center;
background: ${Constants.system.foreground};
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 64px 24px;
display: block;
}
`;
const STYLES_TABLE = css`
width: 100%;
font-size: ${Constants.typescale.lvl0};
border-collapse: collapse;
text-align: left;
`;
const STYLES_TH = css`
font-family: ${Constants.font.semiBold};
font-weight: 400;
border: 1px solid ${Constants.system.lightBorder};
padding: 12px;
`;
const STYLES_TD = css`
font-family: ${Constants.font.text};
font-weight: 400;
border: 1px solid ${Constants.system.lightBorder};
padding: 12px;
`;
const STYLES_LINK = css`
color: ${Constants.system.moonstone};
text-decoration: none;
transition: 200ms ease color;
:visited {
color: ${Constants.system.slate};
}
:hover {
color: ${Constants.system.slate};
}
`;
export const getServerSideProps = async (context) => {
return {
props: { ...context.query },
};
};
export default class IndexPage extends React.Component {
async componentDidMount() {
const response = await Actions.health();
console.log("HEALTH_CHECK", response);
}
getOs = () => {
const os = ["Windows", "Linux", "Mac"]; // add your OS values
return os.find((v) => navigator.appVersion.indexOf(v) >= 0);
};
render() {
const title = `Slate Download`;
const description = "Donwload Slate app and web extenstion";
const url = "https://slate.host/download";
return (
<WebsitePrototypeWrapper title={title} description={description} url={url}>
<WebsitePrototypeHeader color="dark" />
<div css={STYLES_ROOT}>
<div css={STYLES_SECTION_HERO}>
<div css={STYLES_BLOCK}>
<img
css={STYLES_IMG}
src="https://slate.textile.io/ipfs/bafkreidpydbatkl4rqf5bbim5qr3ottb2ibifazd2art4too5bmppp3rqm"
alt="Slate browser extension"
/>
<h1 css={STYLES_H1}>Slate for Chrome</h1>
<h3 css={STYLES_H3}>
Take any image on the web and save it to Slate right from your browser tab.
</h3>
<div>
<button
css={STYLES_BUTTON_PRIMARY}
onClick={() =>
window.open(
"https://chrome.google.com/webstore/detail/slate/gloembacbehhbfbkcfjmloikeeaebnoc"
)
}
>
Get Slate Chrome extension
</button>
</div>
<p css={STYLES_ANNOTATION}>
Currently avaible for{" "}
<a css={STYLES_LINK_WHITE} href="https://www.google.com/chrome/" target="_blank">
Chrome
</a>
.
</p>
</div>
</div>
<div css={STYLES_SECTION_WRAPPER}>
<div css={STYLES_BLOCK}>
<h2 css={STYLES_H2}>Contribute</h2>
<h3 css={STYLES_H3}>
We would love for you to join us. You're welcomed to file an issue or submit a pull
request on Github.
</h3>
<div>
<button
css={STYLES_BUTTON_SECONDARY}
onClick={() =>
window.open(
"https://chrome.google.com/webstore/detail/slate/gloembacbehhbfbkcfjmloikeeaebnoc"
)
}
>
View Github
</button>
</div>
</div>
</div>
<div css={STYLES_SECTION_WRAPPER}>
<div css={STYLES_BLOCK}>
<h2 css={STYLES_H2}>Releases</h2>
<h3 css={STYLES_H3}>
Slate is built in public and all past releases are always avaible for download.
</h3>
</div>
<div css={STYLES_BLOCK}>
<table css={STYLES_TABLE}>
<tr>
<th css={STYLES_TH}>Version</th>
<th css={STYLES_TH}>Product</th>
<th css={STYLES_TH}>Date</th>
<th css={STYLES_TH}>Download</th>
</tr>
<tr>
<td css={STYLES_TD}>0.4</td>
<td css={STYLES_TD}>Slate Chrome extension</td>
<td css={STYLES_TD}>2020-09-07</td>
<td css={STYLES_TD}>
<a
css={STYLES_LINK}
href="/public/static/slate-for-chrome-V0.4.zip"
download="Slate Chrome extension V0.4"
>
Download
</a>
</td>
</tr>
</table>
</div>
</div>
</div>
<WebsitePrototypeFooter />
</WebsitePrototypeWrapper>
);
}
}

View File

@ -1,237 +0,0 @@
import React, { useState } from "react";
import * as System from "~/components/system";
import { css } from "@emotion/core";
import WebsitePrototypeWrapper from "~/components/core/WebsitePrototypeWrapper";
import WebsitePrototypeHeader from "~/components/core/WebsitePrototypeHeader";
import WebsitePrototypeFooter from "~/components/core/NewWebsitePrototypeFooter";
const STYLES_ROOT = css`
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 88px 32px 128px 32px;
max-width: 736px;
width: 100%;
margin: 0 auto 0 auto;
`;
const STYLES_COPY_EMAIL = css`
display: inline;
`;
export const getServerSideProps = async (context) => {
return {
props: { ...context.query },
};
};
export function CopyEmail() {
const [copySuccess, setCopySuccess] = useState("");
function copyToClipboard() {
navigator.clipboard.writeText("abuse@filecoin.io");
setCopySuccess("Copied!");
}
return (
<div css={STYLES_COPY_EMAIL}>
<a onClick={copyToClipboard}>abuse@filecoin.io</a>
{copySuccess}
</div>
);
}
export default class GuidelinesPage extends React.Component {
render() {
const title = `Slate: Community Guidelines`;
const description =
"We believe that our mission is best served in an environment that is friendly, safe, and accepting.";
const url = "https://slate.host/guidelines";
return (
<WebsitePrototypeWrapper title={title} description={description} url={url}>
<WebsitePrototypeHeader />
<div css={STYLES_ROOT}>
<System.H1>Community Guidelines</System.H1>
<br />
<System.P>
We believe that our mission is best served in an environment that is friendly, safe, and
accepting; free from intimidation or harassment. Towards this end, certain behaviors and
practices will not be tolerated.
</System.P>
<br />
<System.UL>
<System.LI>Be respectful.</System.LI>
<System.LI>
We're here to help: <CopyEmail />
</System.LI>
<System.LI>Abusive behavior is never tolerated.</System.LI>
<System.LI>
Violations of this code may result in swift and permanent expulsion from the Slate
community.
</System.LI>
<System.LI>
"Too long, didn't read" is not a valid excuse for not knowing what is in this
document.
</System.LI>
</System.UL>
<br />
<System.P>
We expect all members of the Slate community to abide by this Code of Conduct at all
times in all Slate community venues, online and in person, and in one-on-one
communications pertaining to Slate affairs.
</System.P>
<br />
<System.P>
This policy covers the usage of Filecoin public infrastructure, as well as other
Filecoin websites, Filecoin related events, and any other services offered by or on
behalf of the Filecoin community. It also applies to behavior in the context of the
Filecoin Open Source project communities, including but not limited to public GitHub
repositories, IRC channels, social media, mailing lists, and public events.
</System.P>
<br />
<System.P>
The definitions of various subjective terms such as "discriminatory", "hateful", or
"confusing" will be decided at the sole discretion of the Filecoin abuse team.
</System.P>
<br />
<br />
<System.H2>Friendly Harassment-Free Space</System.H2>
<br />
<System.P>
We are committed to providing a friendly, safe and welcoming environment for all,
regardless of gender identity, sexual orientation, disability, ethnicity, religion, age,
physical appearance, body size, race, or similar personal characteristics.We ask that
you please respect that people have differences of opinion regarding technical choices,
and that every design or implementation choice carries a trade-off and numerous costs.
There is seldom a single right answer. A difference of technology preferences is not a
license to be rude.{" "}
</System.P>
<br />
<System.P>
Any spamming, trolling, flaming, baiting, or other attention-stealing behavior is not
welcome, and will not be tolerated. Harassing other users is never tolerated, whether
via public or private media. Avoid using offensive or harassing nicknames, or other
identifiers that might detract from a friendly, safe, and welcoming environment for all.{" "}
</System.P>
<br />
<System.P>
Harassment includes, but is not limited to: harmful or prejudicial verbal or written
comments related to gender identity, sexual orientation, disability, ethnicity,
religion, age, physical appearance, body size, race, or similar personal
characteristics; inappropriate use of nudity, sexual images, and/or sexually explicit
language in public spaces; threats of physical or non-physical harm; deliberate
intimidation, stalking or following; harassing photography or recording; sustained
disruption of talks or other events; inappropriate physical contact; and unwelcome
sexual attention.{" "}
</System.P>
<br />
<System.P>
Media shared through public infrastructure run by the Filecoin team must not contain
illegal or infringing content. You should only publish content via Filecoin public
infrastructure if you have the right to do so. This include complying with all software
license agreements or other intellectual property restrictions. You will be solely
responsible for any violation of laws or others' intellectual property rights.
</System.P>
<br />
<br />
<System.H2>Avoid Marketing or Soliciting</System.H2>
<br />
<System.P>
You are welcome to post endorsements of tools, products or services that you personally
find useful, but please refrain from blatant advertising, marketing or any kind of spam.
Selling commercial services or fundraising is not allowed.
</System.P>
<br />
<br />
<System.H2>Reporting Violations of this Code of Conduct</System.H2>
<br />
<System.P>
If you believe someone is harassing you or has otherwise violated this Code of Conduct,
please contact us at <CopyEmail /> to send us an abuse report. If this is the initial
report of a problem, please include as much detail as possible. It is easiest for us to
address issues when we have more context.
</System.P>
<br />
<br />
<System.H2>Copyright Violations</System.H2>
<br />
<System.P>
We respect the intellectual property of others and ask that you do too. If you believe
any content or other materials available through public Filecoin infrastructure violates
a copyright held by you and you would like to submit a notice pursuant to the Digital
Millennium Copyright Act or other similar international law, you can submit a notice to
our agent for service of notice to: <CopyEmail />. Please make sure your notice meets
the Digital Millennium Copyright Act requirements.
</System.P>
<br />
<br />
<System.H2>Consequences</System.H2>
<br />
<System.P>
All content published to public Filecoin infrastructure is hosted at the sole discretion
of the Filecoin team. Unacceptable behavior from any community member will not be
tolerated. Anyone asked to stop unacceptable behavior is expected to comply immediately.
If a community member engages in unacceptable behavior, the Filecoin team may take any
action they deem appropriate, up to and including a temporary ban or permanent expulsion
from the community without warning (and without refund in the case of a paid event or
service).
</System.P>
<br />
<br />
<System.H2>Addressing Grievances</System.H2>
<br />
<System.P>
Please contact <CopyEmail /> if you need to report a problem or address a grievance
related to an abuse report. If you feel you have been falsely or unfairly accused of
violating this Code of Conduct, you should contact <CopyEmail />. We will do our best to
ensure that your grievance is handled appropriately. In general, we will choose the
course of action that we judge as being most in the interest of fostering a safe and
friendly community.
</System.P>
<br />
<br />
<System.H2>Contact Info</System.H2>
<br />
<System.P>
Please contact <CopyEmail /> if you need to report a problem or address a grievance
related to an abuse report. You are also encouraged to contact us if you are curious
about something that might be "on the line" between appropriate and inappropriate
content. We are happy to provide guidance to help you be a successful part of our
community.
</System.P>
<br />
<br />
<System.H2>Changes</System.H2>
<br />
<System.P>
This is a living document and may be updated from time to time. Please refer to the{" "}
<a
href="https://github.com/filecoin-project/slate/blob/main/pages/guidelines.js"
alt="GitHub Changelog"
>
git history
</a>{" "}
for this document to view the changes.
</System.P>
<br />
<br />
<System.H2>Credit and License</System.H2>
<br />
<System.P>
This Code of Conduct is based on the{" "}
<a href="https://www.npmjs.com/policies/conduct">npm Code of Conduct</a>. This document
may be reused under a{" "}
<a href="http://creativecommons.org/licenses/by-sa/4.0/">
Creative Commons Attribution-ShareAlike License
</a>
.
</System.P>
</div>
<WebsitePrototypeFooter />
</WebsitePrototypeWrapper>
);
}
}

View File

@ -1,933 +0,0 @@
import * as React from "react";
import * as Constants from "~/common/constants";
import * as Actions from "~/common/actions";
import WebsitePrototypeWrapper from "~/components/core/WebsitePrototypeWrapper";
import WebsitePrototypeHeader from "~/components/core/NewWebsitePrototypeHeader";
import WebsitePrototypeFooter from "~/components/core/NewWebsitePrototypeFooter";
import { css } from "@emotion/core";
const USER_SLATES = [
{
name: "Urban gardens",
url: "https://slate.host/gndclouds/urban-gardens",
username: "gndclouds",
preview:
"https://slate.textile.io/ipfs/bafybeiff7y4kz4e2z4nfso4nsgdbkfsyroa62jvvldoxafuaf34m7lticu",
},
{
name: "Shapes and Letters",
url: "https://slate.host/haris/shapes-and-letters",
username: "haris",
preview:
"https://slate.textile.io/ipfs/bafybeifgxtl7mq5djnorxedzi35hkizjmbjvdy3nnoitd3xvdnqpmruxbm",
},
{
name: "Mountains",
url: "https://slate.host/jason/mountains",
username: "jason",
preview:
"https://slate.textile.io/ipfs/bafkreies6uykgocrkunrsndxfubntyqvfqzo5wuwyos42vak6d4qnvtdn4",
},
{
name: "Loom",
url: "https://slate.host/tara/loom",
username: "tara",
preview:
"https://slate.textile.io/ipfs/bafybeifl5xzy4vjctrsr3jywdlv5ceq3hpaadhcii2ekjx2gljyagveqna",
},
{
name: "Brand",
url: "https://slate.host/slate/brand",
username: "slate",
preview:
"https://slate.textile.io/ipfs/bafybeiaerbu2nivrgncqtwgwom27caji25netswvjbo6tcmbka47ucmupa",
},
{
name: "Montreal underground",
url: "https://slate.host/tcosta/montreal-underground",
username: "tcosta",
preview:
"https://slate.textile.io/ipfs/bafybeieblkyt6d7wg4xmltshvxm6w7tz4c3zjpjuu4yfhiak36debqccda",
},
{
name: "Monet",
url: "https://slate.host/slate/monet",
username: "slate",
preview:
"https://slate.textile.io/ipfs/bafkreieb4yfiamtipapmhoihl547lxeod2vfku67dimrhmab5tcglr5bli",
},
{
name: "Books",
url: "https://slate.host/haris/books",
username: "haris",
preview:
"https://slate.textile.io/ipfs/bafkreihe7ismqfyytekj6yvbv6mpbc5de3gozk6n7a47smodbcsnrhbpri",
},
{
name: "Papers",
url: "https://slate.host/slate/papers",
username: "slate",
preview:
"https://slate.textile.io/ipfs/bafkreif7l2vxkvdyrydcjwjjrrmqq73id3tdrdkf3z54tp2fotc75wkdwm",
},
];
const ASSET_HERO = {
src: "https://slate.textile.io/ipfs/bafybeidfr2x5ftxzixjxtrgiqm6iuotzip25tlrpase226jog3tqenqd4a",
backgroundImage: `https://slate.textile.io/ipfs/bafybeict43te7wcy7pdw3v45dwwedwxw7yjthbytdsja6dpsiqkgil7iey`,
};
const ASSET_HERO_COLLABORATE = {
src: "https://slate.textile.io/ipfs/bafybeih63zq5f7htbhkmrog447ybytyid2yi6fix4k6z3pbegxpcq2r2qa",
backgroundImage:
"https://slate.textile.io/ipfs/bafkreiagwjqvmisseb6voj7cwd3lhjudigkel63hqg6efpqjmhlfv5ucj4",
};
const ASSETS_SMALL = [
{
src:
"https://slate.textile.io/ipfs/bafybeiawzns4vxqp3llkzmc4shvytzpurysh26yj3aljde4d4fsgf7wlze",
backgroundImage:
"https://slate.textile.io/ipfs/bafybeihez3rtyqqftx7mkyktwozyqjkwdtk2kglxqjc4zspah26bva3yk4",
},
{
src:
"https://slate.textile.io/ipfs/bafybeiczug4d6uyr4pkejdwirkeffbzkkzrbaprxvreid6iitw3pmjzq3q",
backgroundImage:
"https://slate.textile.io/ipfs/bafybeidnt2l3lslxi7ofkxs5ffncsh4fw5h2ohbukxumngrqj5pdrooaou",
},
{
src:
"https://slate.textile.io/ipfs/bafkreid7wl4443p764ozdlqtodh7dmsej6ffayp4tc3lr3hil2qkclrohi",
backgroundImage:
"https://slate.textile.io/ipfs/bafkreibb3onijljnmonrbs7qguimjf5qwbnkx3m33pouxbtar2yb7hupti",
},
{
src:
"https://slate.textile.io/ipfs/bafybeicjovnsnhvt7xwjw3igdwwpb4ms2m23fayoydj3oevrwyi7dzjtga",
backgroundImage:
"https://slate.textile.io/ipfs/bafkreiefuyyk6dcjhyk3hl2httqvdlnl3mo6wrfzgmponexrc75jop757y",
},
];
const ASSETS_MEDIUM = [
{
title: "Create moodboards",
src:
"https://slate.textile.io/ipfs/bafybeib46kplzcylnzviaojgbogua52wyrzbvnj6uulvo4zwrxm4hnxeqe",
backgroundImage:
"https://slate.textile.io/ipfs/bafybeicoaponp2nv3ikpsjgcgu7pio6aercflsvsiyxrpaonza7ncg73dq",
},
{
title: "Organize research",
src:
"https://slate.textile.io/ipfs/bafybeigstyjfpzazdlmgkfuhw4yxrneux3opvbls7nmv6gq7dbnhmy6xwy",
backgroundImage:
"https://slate.textile.io/ipfs/bafybeie4p45yfvbjdzc2rgw67e7crcltpu7o544xtugs3wyv3qh3t3oegi",
},
{
title: "Share presentations",
src:
"https://slate.textile.io/ipfs/bafybeiampkmsxeihxnuz2hkgbhtzosgkwghslpwm7dsrxrzlqwa7tvzreq",
backgroundImage:
"https://slate.textile.io/ipfs/bafkreiglefskwq7bpa3aazihegawd4qwxockl6shipnps7zlokrbnu4f7u",
},
];
const ASSET_CHROME_EXTENSION =
"https://slate.textile.io/ipfs/bafybeibwppu23j5wgshqvm5qyqv3c6pmhp3y5irdwn3ivvnnrpexiguzbi";
const ASSET_SLATE_CUBE =
"https://slate.textile.io/ipfs/bafybeiaex6rorqtumulc4x3u4sbl5pdbn5sx45mvm6uvbebu4cxgk3okjy";
const STYLES_ROOT = css`
display: flex;
flex-direction: column;
justify-content: space-between;
`;
const STYLES_LINK = css`
text-decoration: none;
color: ${Constants.system.white};
transition: 200ms ease all;
:hover {
color: ${Constants.system.blue};
}
`;
const STYLES_H1 = css`
font-size: ${Constants.typescale.lvl5};
font-family: ${Constants.font.medium};
font-weight: 400;
line-height: 1.3;
padding: 0px 0px 24px 0px;
letter-spacing: -0.021rem;
width: 100%;
color: ${Constants.system.white};
@media (max-width: ${Constants.sizes.tablet}px) {
font-size: ${Constants.typescale.lvl5};
padding: 0px 0px 16px 0px;
}
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl3};
}
`;
const STYLES_H2 = css`
font-size: ${Constants.typescale.lvl3};
font-family: ${Constants.font.medium};
font-weight: 400;
line-height: 1.3;
letter-spacing: -0.019rem;
padding: 0 0 24px 0;
width: 100%;
color: ${Constants.system.darkGray};
@media (max-width: ${Constants.sizes.tablet}px) {
font-size: ${Constants.typescale.lvl3};
line-height: 1.5;
}
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl2};
}
`;
const STYLES_H3 = css`
font-size: ${Constants.typescale.lvl2};
font-family: ${Constants.font.medium};
font-weight: 400;
line-height: 1.5;
letter-spacing: -0.014rem;
padding: 0 0 8px 0;
color: ${Constants.system.darkGray};
@media (max-width: ${Constants.sizes.tablet}px) {
font-size: ${Constants.typescale.lvl2};
}
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl1};
}
`;
const STYLES_HIGHLIGHT = css`
color: ${Constants.system.white};
`;
const STYLES_HIGHLIGHT_BLACK = css`
color: ${Constants.system.slate};
`;
const STYLES_SECTION_HERO = css`
width: 100vw;
padding: 30vh 88px 88px 88px;
display: flex;
flex-direction: column;
justify-content: center;
margin: -88px 0px 0px 0px;
background: ${Constants.system.pitchBlack};
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 40vh 24px 48px 24px;
display: block;
}
`;
const STYLES_SECTION_SLATE_WALL = css`
display: flex;
flex-direction: column;
width: 100vw;
padding: 88px;
background: ${Constants.system.foreground};
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 64px 24px;
display: block;
}
`;
const STYLES_SECTION_SLATE = css`
display: flex;
flex-direction: column;
padding: 88px;
width: 100vw;
background: ${Constants.system.pitchBlack};
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 64px 24px;
display: block;
}
`;
const STYLES_FILETYPE = css`
display: flex;
flex-wrap: wrap;
width: 100%;
@media (max-width: ${Constants.sizes.mobile}px) {
display: flex;
flex-wrap: wrap;
}
`;
const STYLES_FILETYPE_GRID_ITEM = css`
padding: 0 24px 24px 0;
width: 25%;
@media (max-width: ${Constants.sizes.mobile}px) {
width: 50%;
padding: 0 0 24px 0;
}
`;
const STYLES_VIDEO_BIG = css`
display: block;
background-size: cover;
background-position: 50% 50%;
background-color: ${Constants.system.moonstone};
padding: 0;
outline: 0;
margin: 40px auto 80px auto;
border-radius: 4px;
width: 100%;
box-shadow: 0px 10px 50px 20px rgba(0, 0, 0, 0.1);
@media (max-width: ${Constants.sizes.tablet}px) {
margin: 32px auto 64px auto;
}
@media (max-width: ${Constants.sizes.mobile}px) {
margin: 16px auto 48px auto;
}
`;
const STYLES_VIDEO_MEDIUM = css`
display: block;
background-size: cover;
background-position: 50% 50%;
background-color: ${Constants.system.moonstone};
padding: 0;
outline: 0;
margin: 24px auto 96px auto;
border-radius: 4px;
width: 100%;
max-width: 56vw;
box-shadow: 0px 10px 50px 20px rgba(0, 0, 0, 0.1);
@media (max-width: ${Constants.sizes.tablet}px) {
margin: 16px auto 64px auto;
width: 100%;
max-width: 100vw;
}
@media (max-width: ${Constants.sizes.mobile}px) {
margin: 8px auto 48px auto;
}
`;
const STYLES_VIDEO_SMALL = css`
display: block;
width: 100%;
background-size: cover;
background-position: 50% 50%;
background-color: ${Constants.system.moonstone};
padding: 0;
outline: 0;
`;
const STYLES_MEDIA_LEFT = css`
margin: 64px 0 0 -240px;
width: 80vw;
border-radius: 4px;
box-shadow: 0px 10px 50px 20px rgba(0, 0, 0, 0.1);
@media (max-width: ${Constants.sizes.mobile}px) {
margin: 24px 0 0 -80px;
}
`;
const STYLES_MEDIA_RIGHT_OVERLAP = css`
float: right;
margin: -40px 240px 0 0;
width: 24vw;
@media (max-width: ${Constants.sizes.tablet}px) {
margin: 24px 0 0 80px;
width: 32vw;
}
@media (max-width: ${Constants.sizes.mobile}px) {
margin: 24px 0 0 80px;
width: 48vw;
}
`;
const STYLES_TEXT_BLOCK = css`
display: flex;
flex-direction: column;
justify-content: space-between;
max-width: 56vw;
width: 100%;
align-self: center;
margin-bottom: 16px;
@media (max-width: ${Constants.sizes.mobile}px) {
width: 100%;
max-width: 100vw;
}
`;
const STYLES_ACTIONS_RIGHT = css`
@media (max-width: ${Constants.sizes.mobile}px) {
display: block;
padding: 16px 0 8px 0;
}
`;
const STYLES_BUTTON_PRIMARY = css`
box-sizing: border-box;
border-radius: 2px;
outline: 0;
border: 0;
min-height: 48px;
padding: 0px 24px 0px 24px;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: ${Constants.typescale.lvl1};
letter-spacing: 0.2px;
font-family: ${Constants.font.semiBold};
transition: 200ms ease all;
user-select: none;
cursor: pointer;
background-color: ${Constants.system.slate};
color: ${Constants.system.white};
box-shadow: 0px 10px 50px 20px rgba(0, 0, 0, 0.1);
:hover {
background-color: ${Constants.system.white};
box-shadow: 0px 10px 90px 20px rgba(207, 206, 211, 0.3);
color: ${Constants.system.slate};
}
:focus {
box-shadow: inset 0 0 5px 2px rgba(0, 0, 0, 0.3);
background-color: ${Constants.system.pitchBlack};
color: ${Constants.system.wall};
outline: 0;
border: 0;
}
`;
const STYLES_LINK_WHITE = css`
color: ${Constants.system.darkGray};
text-decoration: none;
transition: 200ms ease color;
font-size: ${Constants.typescale.lvl2};
padding: 24px 0 0 0;
:visited {
color: ${Constants.system.white};
}
:hover {
color: ${Constants.system.brand};
}
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl0};
}
`;
const STYLES_SLATE_CARD_GROUP = css`
display: flex;
flex-wrap: wrap;
width: 100%;
margin-top: 48px;
`;
const STYLES_SLATE_CARD = css`
width: 33.33%;
height: 25vh;
margin: -1px 0 0 -1px;
transition: 200ms ease box-shadow;
border: 1px solid ${Constants.system.darkGray};
:hover {
transition: 200ms ease box-shadow;
box-shadow: 0px 10px 40px 20px rgba(0, 0, 0, 0.1);
}
`;
const STYLES_SLATE_CARD_CTA = css`
width: 100%;
height: calc(100vh / 2);
margin-left: -1px;
box-shadow: 0px 4px 80px 4px rgba(0, 0, 0, 0.1);
text-decoration: none;
transition: 200ms ease all;
:hover {
box-shadow: 0px 4px 120px 4px rgba(0, 0, 0, 0.1);
transform: scale(1.01);
}
`;
const STYLES_SLATE_CARD_TEXT = css`
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-between;
align-items: left;
width: 100%;
height: 100%;
padding: 12px;
`;
const STYLES_SLATE_CARD_TITLE = css`
padding: 12px;
font-size: ${Constants.typescale.lvl1};
letter-spacing: -0.021rem;
font-weight: 400;
text-align: left;
width: 100%;
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 0px;
font-size: 1rem;
}
`;
const STYLES_SLATE_CARD_CTA_TITLE = css`
font-size: ${Constants.typescale.lvl5};
font-family: ${Constants.font.medium};
font-weight: 400;
text-align: left;
line-height: 1.25;
padding: 12px;
overflow-wrap: break-word;
width: 100%;
color: ${Constants.system.darkGray};
@media (max-width: ${Constants.sizes.tablet}px) {
font-size: ${Constants.typescale.lvl4};
}
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: ${Constants.typescale.lvl3};
padding: 0px 0px 8px 0px;
}
`;
const STYLES_SLATE_CARD_EXPLAINER = css`
display: flex;
justify-content: space-between;
width: 100%;
padding: 12px;
@media (max-width: ${Constants.sizes.mobile}px) {
padding: 0px;
}
`;
const STYLES_SLATE_CARD_PARAGRAPH = css`
font-size: ${Constants.typescale.lvl0};
text-align: left;
text-decoration: none;
color: ${Constants.system.pitchBlack};
transition: 200ms ease all;
:hover,
:active {
color: ${Constants.system.pitchBlack};
background-color: transparent;
}
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 0.78rem;
}
`;
const STYLES_SLATE_CARD_CTA_PARAGRAPH = css`
font-size: ${Constants.typescale.lvl2};
text-align: left;
@media (max-width: ${Constants.sizes.mobile}px) {
font-size: 1rem;
}
`;
const SlateCardElement = (props) => {
return (
<div css={STYLES_SLATE_CARD}>
<div
css={css`
transition: 200ms ease all;
height: 100%;
background-color: transparent;
background-position: 50% 50%;
background-size: cover;
:hover {
background-color: ${Constants.system.pitchBlack};
background-image: url("${props.preview}");
}
`}
>
<a css={STYLES_SLATE_CARD_PARAGRAPH} href={props.url} target="_blank">
<div css={STYLES_SLATE_CARD_TEXT}>
<div css={STYLES_SLATE_CARD_TITLE}>{props.name}</div>
<div css={STYLES_SLATE_CARD_EXPLAINER}>
<div>{`@${props.username}`}</div>
<div>-&gt;</div>
</div>
</div>
</a>
</div>
</div>
);
};
function preloadVideo(video) {
const src = video.getAttribute("data-src");
if (!src) {
return;
}
video.src = src;
}
export const getServerSideProps = async (context) => {
return {
props: { ...context.query },
};
};
export default class IndexPage extends React.Component {
async componentDidMount() {
const videos = document.querySelectorAll("[data-src]");
const config = {
root: null,
rootMargin: "0px",
threshold: 0.1,
};
const observer = new IntersectionObserver(function(entries, self) {
entries.forEach((entry) => {
if (entry.isIntersecting) {
preloadVideo(entry.target);
self.unobserve(entry.target);
}
});
}, config);
videos.forEach((video) => {
observer.observe(video);
});
}
render() {
const title = `Slate`;
const description =
"Welcome to the future of file sharing. Powered by Textile, Filecoin, and IPFS.";
const url = "https://slate.host";
return (
<WebsitePrototypeWrapper title={title} description={description} url={url}>
<WebsitePrototypeHeader />
<div css={STYLES_ROOT}>
<div css={STYLES_SECTION_HERO}>
<div css={STYLES_TEXT_BLOCK}>
<h1 css={STYLES_H1}>
A file storage network <br />
for you, your files, and your friends.
</h1>
<div css={STYLES_ACTIONS_RIGHT}>
<div css={STYLES_BUTTON_PRIMARY} onClick={() => window.open("/_")}>
Use slate
</div>
</div>
</div>
<br />
<video
css={STYLES_VIDEO_BIG}
data-src={ASSET_HERO.src}
autoPlay
loop
muted
type="video/m4v"
playsInline
style={{
backgroundImage: `url('${ASSET_HERO.backgroundImage}')`,
}}
/>
<div css={STYLES_TEXT_BLOCK}>
<h2 css={STYLES_H2}>
Slate{" "}
<span css={STYLES_HIGHLIGHT}>
is a{" "}
<a
css={STYLES_LINK}
href={"https://github.com/filecoin-project/slate"}
target="_blank"
>
fully open-source
</a>{" "}
file sharing network designed for research and collaboration.
</span>
<br />
<br />
<span css={STYLES_HIGHLIGHT}>Store</span> your data,
<br />
<span css={STYLES_HIGHLIGHT}>organize</span> it any way you like, <br />
<span css={STYLES_HIGHLIGHT}>and share</span> it with the world.
<br />
<br />
</h2>
<h3 css={STYLES_H3}>Powered by</h3>
<h2 css={STYLES_H2}>
<span css={STYLES_HIGHLIGHT}>
<a href="https://textile.io" css={STYLES_LINK} target="_blank">
Textile
</a>{" "}
<br />
<a href="https://filecoin.io" css={STYLES_LINK} target="_blank">
Filecoin
</a>
<br />
<a href="https://ipfs.io" css={STYLES_LINK} target="_blank">
IPFS
</a>
</span>
</h2>
</div>
</div>
<div css={STYLES_SECTION_SLATE}>
<div css={STYLES_TEXT_BLOCK}>
<h1 css={STYLES_H1}>
A new home{" "}
<span css={STYLES_HIGHLIGHT}>for your images, video, audio, ePUBs, and PDFs</span>
</h1>
<h3 css={STYLES_H3} style={{ marginBottom: 48 }}>
<span css={STYLES_HIGHLIGHT}>Easily upload </span>any kind of media file to your
storage system.
<br />
</h3>
</div>
<div css={STYLES_FILETYPE}>
<div css={STYLES_FILETYPE_GRID_ITEM}>
<video
preload="none"
css={STYLES_VIDEO_SMALL}
data-src={ASSETS_SMALL[0].src}
autoPlay
loop
muted
type="video/mp4"
playsInline
style={{
backgroundImage: `url('${ASSETS_SMALL[0].backgroundImage}')`,
}}
/>
</div>
<div css={STYLES_FILETYPE_GRID_ITEM}>
<video
css={STYLES_VIDEO_SMALL}
data-src={ASSETS_SMALL[1].src}
autoPlay
loop
muted
type="video/mp4"
playsInline
style={{
backgroundImage: `url('${ASSETS_SMALL[1].backgroundImage}')`,
}}
/>
</div>
<div css={STYLES_FILETYPE_GRID_ITEM}>
<video
css={STYLES_VIDEO_SMALL}
data-src={ASSETS_SMALL[2].src}
autoPlay
loop
muted
type="video/mp4"
playsInline
style={{
backgroundImage: `url('${ASSETS_SMALL[2].backgroundImage}')`,
}}
/>
</div>
<div css={STYLES_FILETYPE_GRID_ITEM}>
<video
css={STYLES_VIDEO_SMALL}
data-src={ASSETS_SMALL[3].src}
autoPlay
loop
muted
type="video/mp4"
playsInline
style={{
backgroundImage: `url('${ASSETS_SMALL[3].backgroundImage}')`,
}}
/>
</div>
</div>
</div>
<div css={STYLES_SECTION_SLATE}>
<div css={STYLES_TEXT_BLOCK}>
<h1 css={STYLES_H1}>
Upload from <span css={STYLES_HIGHLIGHT}>anywhere</span>
</h1>
<h3 css={STYLES_H3}>
<span css={STYLES_HIGHLIGHT}>The Slate Chrome extension</span> lets you seamlessly
upload files to your slates from anywhere on the web.
</h3>
<div css={STYLES_ACTIONS_RIGHT}>
<div
css={STYLES_BUTTON_PRIMARY}
style={{ marginTop: 16 }}
onClick={() =>
window.open(
"https://chrome.google.com/webstore/detail/slate/gloembacbehhbfbkcfjmloikeeaebnoc?hl=en"
)
}
>
Add Slate to Chrome
</div>
</div>
</div>
<div>
<img
css={STYLES_MEDIA_LEFT}
src={ASSET_CHROME_EXTENSION}
alt="Slate Web Clipper being used in chrome dropdown menu"
/>
</div>
</div>
<div css={STYLES_SECTION_SLATE}>
<div css={STYLES_TEXT_BLOCK}>
<h1 css={STYLES_H1}>
<span css={STYLES_HIGHLIGHT}>Organize and publish</span>
</h1>
<h3 css={STYLES_H3}>
<span css={STYLES_HIGHLIGHT}>A modular interface</span> for your files, giving you
complete flexibility.
</h3>
</div>
{ASSETS_MEDIUM.map((each) => {
return (
<React.Fragment key={each.title}>
<div css={STYLES_TEXT_BLOCK}>
<h3 css={STYLES_H3}>
<span css={STYLES_HIGHLIGHT}>{each.title}</span>
</h3>
</div>
<video
css={STYLES_VIDEO_MEDIUM}
autoPlay
loop
muted
data-src={each.src}
type="video/mp4"
playsInline
style={{
backgroundImage: `url('${each.backgroundImage}')`,
}}
/>
</React.Fragment>
);
})}
</div>
<div css={STYLES_SECTION_SLATE}>
<div css={STYLES_TEXT_BLOCK}>
<h1 css={STYLES_H1}>
<span css={STYLES_HIGHLIGHT}>Collaborate and connect</span>
</h1>
<h3 css={STYLES_H3}>
<span css={STYLES_HIGHLIGHT}>A file sharing network</span> built on top of a storage
system making it possible to connect with other people on the Filecoin network.
</h3>
</div>
<video
css={STYLES_VIDEO_BIG}
data-src={ASSET_HERO_COLLABORATE.src}
autoPlay
loop
muted
type="video/mp4"
playsInline
style={{
backgroundImage: `url('${ASSET_HERO_COLLABORATE.backgroundImage}')`,
}}
/>
</div>
<div css={STYLES_SECTION_SLATE}>
<div css={STYLES_TEXT_BLOCK}>
<h1 css={STYLES_H1}>
Built on <span css={STYLES_HIGHLIGHT}>trust and privacy</span>
</h1>
<h3 css={STYLES_H3}>
<span css={STYLES_HIGHLIGHT}>Slate is built on Filecoin and IPFS</span>
technologies built around ownership and transparency for the future of the web.
</h3>
<a css={STYLES_LINK_WHITE} href="https://filecoin.io" target="_blank">
Learn more about Filecoin -&gt;
</a>
</div>
<div>
<img css={STYLES_MEDIA_RIGHT_OVERLAP} src={ASSET_SLATE_CUBE} />
</div>
</div>
<div css={STYLES_SECTION_SLATE_WALL}>
<div css={STYLES_SLATE_CARD_CTA}>
<a css={STYLES_SLATE_CARD_PARAGRAPH} href="https://slate.host/_" target="_blank">
<div css={STYLES_SLATE_CARD_TEXT}>
<h1 css={STYLES_SLATE_CARD_CTA_TITLE}>
Join us <br />
<span css={STYLES_HIGHLIGHT_BLACK}>in our open network</span>
</h1>
<div css={STYLES_SLATE_CARD_EXPLAINER}>
<div css={STYLES_SLATE_CARD_CTA_PARAGRAPH}>Create your first slate</div>
<div css={STYLES_SLATE_CARD_CTA_PARAGRAPH}>-&gt;</div>
</div>
</div>
</a>
</div>
<div css={STYLES_SLATE_CARD_GROUP}>
{USER_SLATES.map((each) => (
<SlateCardElement
key={each.name}
preview={each.preview}
url={each.url}
name={each.name}
username={each.username}
/>
))}
</div>
</div>
</div>
<WebsitePrototypeFooter />
</WebsitePrototypeWrapper>
);
}
}

View File

@ -1,211 +0,0 @@
import React, { useState } from "react";
import * as System from "~/components/system";
import { css } from "@emotion/core";
import WebsitePrototypeWrapper from "~/components/core/WebsitePrototypeWrapper";
import WebsitePrototypeHeader from "~/components/core/WebsitePrototypeHeader";
import WebsitePrototypeFooter from "~/components/core/NewWebsitePrototypeFooter";
const STYLES_ROOT = css`
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 88px 32px 128px 32px;
max-width: 736px;
width: 100%;
margin: 0 auto 0 auto;
`;
const STYLES_COPY_EMAIL = css`
display: inline;
`;
export const getServerSideProps = async (context) => {
return {
props: { ...context.query },
};
};
export function CopyEmail() {
const [copySuccess, setCopySuccess] = useState("");
function copyToClipboard() {
navigator.clipboard.writeText("abuse@filecoin.io");
setCopySuccess("Copied!");
}
return (
<div css={STYLES_COPY_EMAIL}>
<a onClick={copyToClipboard}>abuse@filecoin.io</a>
{copySuccess}
</div>
);
}
export default class GuidelinesPage extends React.Component {
render() {
const title = `Slate: Terms of Service`;
const description = "You must agree to our terms of service to use Slate.";
const url = "https://slate.host/terms";
return (
<WebsitePrototypeWrapper title={title} description={description} url={url}>
<WebsitePrototypeHeader />
<div css={STYLES_ROOT}>
<System.H1>Terms of Service</System.H1>
<br />
<System.P>
The following terms and conditions govern all use of the Slate's website and all
content, services and products available at or through the website.
</System.P>
<br />
<System.P>
Please read this Agreement carefully before accessing or using the Website. By accessing
or using any part of the web site, you agree to become bound by the terms and conditions
of this agreement.
</System.P>
<br />
<System.P>
If you do not agree to all the terms and conditions of this agreement, then you may not
access the Website or use any services. If these terms and conditions are considered an
offer by Slate, acceptance is expressly limited to these terms. The Website is available
only to individuals who are at least 18 years old.
</System.P>
<br />
<br />
<System.H2>Storage Deals to the Filecoin Network</System.H2>
<br />
<System.P>
You agree to allow Slate to make storage deals on your behalf to the Filecoin Network at
any given time.
</System.P>
<br />
<br />
<System.H2>Your Slate Account and Site</System.H2>
<br />
<System.P>
If you create an account on the Website, you are responsible for maintaining the
security of your account and its content, and you are fully responsible for all
activities that occur under the account and any other actions taken in connection with
the Website. You must not describe or assign content to your account in a misleading or
unlawful manner, including in a manner intended to trade on the name or reputation of
others, and Slate may change or remove any description or keyword that it considers
inappropriate or unlawful, or otherwise likely to cause Slate liability. You must
immediately notify Slate of any unauthorized uses of your account or any other breaches
of security. Slate will not be liable for any acts or omissions by You, including any
damages of any kind incurred as a result of such acts or omissions.
</System.P>
<br />
<br />
<System.H2>Responsibility of Contributors</System.H2>
<br />
<System.P>
If you operate an account, post material to the Website, post links on the Website, or
otherwise make (or allow any third party to make) material available by means of the
Website (any such material, Content), You are entirely responsible for the content of,
and any harm resulting from, that Content. That is the case regardless of whether the
Content in question constitutes text or graphics. By making Content available, you
represent and warrant that: the downloading, copying and use of the Content will not
infringe the proprietary rights, including but not limited to the copyright, patent,
trademark or trade secret rights, of any third party.
</System.P>
<br />
<br />
<System.H2>Changes</System.H2>
<br />
<System.P>
Slate reserves the right, at its sole discretion, to modify or replace any part of this
Agreement. It is your responsibility to check this Agreement periodically for changes.
Your continued use of or access to the Website following the posting of any changes to
this Agreement constitutes acceptance of those changes. Slate may also, in the future,
offer new services and/or features through the Website (including, the release of new
tools and resources). Such new features and/or services shall be subject to the terms
and conditions of this Agreement.
</System.P>
<br />
<br />
<System.H2>Termination</System.H2>
<br />
<System.P>
Slate may terminate your access to all or any part of the Website at any time, with or
without cause, with or without notice, effective immediately. If you wish to terminate
this Agreement or your Slate account (if you have one), you may simply discontinue using
the Website. Notwithstanding the foregoing, if you have a VIP Services account, such
account can only be terminated by Slate if you materially breach this Agreement and fail
to cure such breach within thirty (30) days from Slate notice to you thereof; provided
that, Slate can terminate the Website immediately as part of a general shut down of our
service. All provisions of this Agreement which by their nature should survive
termination shall survive termination, including, without limitation, ownership
provisions, warranty disclaimers, indemnity and limitations of liability.
</System.P>
<br />
<br />
<System.H2>Disclaimer of Warranties</System.H2>
<br />
<System.P>
The Website is provided as is. Slate and its suppliers and licensors hereby disclaim
all warranties of any kind, express or implied, including, without limitation, the
warranties of merchantability, fitness for a particular purpose and non-infringement.
Neither Slate nor its suppliers and licensors, makes any warranty that the Website will
be error free or that access thereto will be continuous or uninterrupted. You understand
that you download from, or otherwise obtain content or services through, the Website at
your own discretion and risk.
</System.P>
<br />
<br />
<System.H2>Limitation of Liability</System.H2>
<br />
<System.P>
In no event will Slate, or its suppliers or licensors, be liable with respect to any
subject matter of this agreement under any contract, negligence, strict liability or
other legal or equitable theory for: any special, incidental or consequential damages;
the cost of procurement or substitute products or services; for interruption of use or
loss or corruption of data; for any amounts that exceed the fees paid by you to Slate
under this agreement during the twelve (12) month period prior to the cause of action.
</System.P>
<br />
<System.P>
Slate shall have no liability for any failure or delay due to matters beyond their
reasonable control. The foregoing shall not apply to the extent prohibited by applicable
law.
</System.P>
<br />
<br />
<System.H2>General Representation and Warranty</System.H2>
<br />
<System.P>
You represent and warrant that Your use of the Website will be in strict accordance with
the Slate Community Guidelines, with this Agreement and with all applicable laws and
regulations (including without limitation any local laws or regulations in your country,
state, city, or other governmental area, regarding online conduct and acceptable
content, and including all applicable laws regarding the transmission of technical data
exported from the United States or the country in which you reside) and your use of the
Website will not infringe or misappropriate the intellectual property rights of any
third party.
</System.P>
<br />
<br />
<System.H2>Indemnification</System.H2>
<br />
<System.P>
You agree to indemnify and hold harmless Slate, its contractors, and its licensors, and
their respective directors, officers, employees and agents from and against any and all
claims and expenses, including attorneys fees, arising out of your use of the Website,
including but not limited to out of your violation this Agreement.
</System.P>
<br />
<br />
<System.H2>Miscellaneous</System.H2>
<br />
<System.P>
This Agreement constitutes the entire agreement between Slate and you concerning the
subject matter hereof, and they may only be modified by a written amendment signed by an
authorized executive of Slate, or by the posting by Slate of a revised version. Except
to the extent applicable law, if any, provides otherwise, this Agreement, any access to
or use of the Website will be governed by the laws of the state of California, U.S.A.
</System.P>
</div>
<WebsitePrototypeFooter />
</WebsitePrototypeWrapper>
);
}
}