Skip to content

Commit

Permalink
feat: add caption to user links (#1075)
Browse files Browse the repository at this point in the history
* feat: add caption to users links

created a shared component `Showcase`

* Cleans linter

* revert main.css changes — update custom.css

* Move Showcase comp to website out of lib - fix layout
  • Loading branch information
goksu authored and yangshun committed Nov 2, 2018
1 parent 8bcb5d3 commit 3250662
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 23 deletions.
40 changes: 40 additions & 0 deletions v1/website/core/Showcase.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* 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 PropTypes = require('prop-types');

const UserLink = ({infoLink, image, caption}) => (
<a className="link" href={infoLink} key={infoLink}>
<img src={image} alt={caption} title={caption} />
<span className="caption">{caption}</span>
</a>
);

UserLink.propTypes = {
infoLink: PropTypes.string.isRequired,
image: PropTypes.string.isRequired,
caption: PropTypes.string.isRequired,
};

const Showcase = ({users}) => (
<div className="showcase">
{users.map(user => (
<UserLink key={user.infoLink} {...user} />
))}
</div>
);

Showcase.propTypes = {
users: PropTypes.array.isRequired,
};

Showcase.defaultProps = {
users: [],
};

module.exports = Showcase;
10 changes: 4 additions & 6 deletions v1/website/pages/en/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
*/

const React = require('react');

const CompLibrary = require('../../core/CompLibrary.js');

const Container = CompLibrary.Container;
const GridBlock = CompLibrary.GridBlock;
const Showcase = require(`${process.cwd()}/core/Showcase.js`);
const siteConfig = require(`${process.cwd()}/siteConfig.js`);
const translate = require('../../server/translate.js').translate;

Expand Down Expand Up @@ -74,11 +76,7 @@ class HomeSplash extends React.Component {
class Index extends React.Component {
render() {
const language = this.props.language || 'en';
const showcase = siteConfig.users.filter(user => user.pinned).map(user => (
<a href={user.infoLink} key={user.infoLink}>
<img src={user.image} alt={user.caption} title={user.caption} />
</a>
));
const pinnedUsersToShowcase = siteConfig.users.filter(user => user.pinned);

return (
<div>
Expand Down Expand Up @@ -234,7 +232,7 @@ class Index extends React.Component {
Docusaurus is building websites for these projects...
</translate>
</p>
<div className="logos">{showcase}</div>
<Showcase users={pinnedUsersToShowcase} />
<div className="more-users">
<a
className="button"
Expand Down
24 changes: 7 additions & 17 deletions v1/website/pages/en/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,16 @@ const React = require('react');
const CompLibrary = require('../../core/CompLibrary.js');

const Container = CompLibrary.Container;
const Showcase = require(`${process.cwd()}/core/Showcase.js`);
const siteConfig = require(`${process.cwd()}/siteConfig.js`);
const translate = require('../../server/translate.js').translate;

class Users extends React.Component {
renderUser(user) {
return (
<a href={user.infoLink} key={user.infoLink}>
<img src={user.image} alt={user.caption} title={user.caption} />
</a>
);
}

render() {
const fbShowcase = siteConfig.users
.filter(user => user.fbOpenSource)
.map((user, i) => this.renderUser(user, i));

const showcase = siteConfig.users
.filter(user => !user.fbOpenSource)
.map((user, i) => this.renderUser(user, i));
const fbUsersToShowcase = siteConfig.users.filter(
user => user.fbOpenSource,
);
const restToShowcase = siteConfig.users.filter(user => !user.fbOpenSource);

return (
<div className="mainContainer">
Expand All @@ -46,15 +36,15 @@ class Users extends React.Component {
.
</p>
</div>
<div className="logos">{fbShowcase}</div>
<Showcase users={fbUsersToShowcase} />
<div className="prose">
<p>
<translate>
Docusaurus is also used by open source projects of all sizes.
</translate>
</p>
</div>
<div className="logos">{showcase}</div>
<Showcase users={restToShowcase} />
<div className="prose">
<p>
<translate>Is your project using Docusaurus?</translate>
Expand Down
45 changes: 45 additions & 0 deletions v1/website/static/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,48 @@
table td:first-child > code {
white-space: nowrap;
}

.showcase {
align-items: center;
display: flex;
flex-flow: row wrap;
justify-content: center;
margin-bottom: 20px;
}

.showcase .link {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 180px;
margin: 5px;
padding: 5px;
}

.showcase .link:hover {
text-decoration: underline;
}

.showcase .link .caption {
line-height: 20px;
height: 20px;
}

.showcase .link img {
max-height: 110px;
padding: 20px;
width: 110px;
align-self: center;
}

@media only screen and (max-width: 735px) {
.showcase .link {
height: 134px;
}

.showcase .link img {
max-height: 64px;
padding: 20px;
width: 64px;
}
}

0 comments on commit 3250662

Please sign in to comment.