mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-30 02:37:59 +02:00
refactor(v2): simplify markup of Showcase page (#2180)
This commit is contained in:
parent
24206de744
commit
7074754252
1 changed files with 44 additions and 58 deletions
|
@ -14,77 +14,63 @@ import classnames from 'classnames';
|
||||||
import styles from './styles.module.css';
|
import styles from './styles.module.css';
|
||||||
import users from '../../data/users';
|
import users from '../../data/users';
|
||||||
|
|
||||||
const ITEMS_PER_ROW = 3; // Sync up the item col width if this is changed.
|
|
||||||
const TITLE = 'Showcase';
|
const TITLE = 'Showcase';
|
||||||
const DESCRIPTION =
|
const DESCRIPTION =
|
||||||
'See the awesome websites people are building with Docusaurus';
|
'See the awesome websites people are building with Docusaurus';
|
||||||
|
|
||||||
function chunkArray(array, size) {
|
|
||||||
const chunks = [];
|
|
||||||
const copied = [...array];
|
|
||||||
const numChunks = Math.ceil(copied.length / size); // Round up to the nearest integer.
|
|
||||||
for (let i = 0; i < numChunks; i++) {
|
|
||||||
chunks.push(copied.splice(0, size));
|
|
||||||
}
|
|
||||||
|
|
||||||
return chunks;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Showcase() {
|
function Showcase() {
|
||||||
return (
|
return (
|
||||||
<Layout title={TITLE} description={DESCRIPTION}>
|
<Layout title={TITLE} description={DESCRIPTION}>
|
||||||
<div className="container margin-vert--xl">
|
<div className="container margin-vert--lg">
|
||||||
<div className="text--center margin-bottom--xl">
|
<div className="text--center margin-bottom--xl">
|
||||||
<h1>{TITLE}</h1>
|
<h1>{TITLE}</h1>
|
||||||
<p>{DESCRIPTION}</p>
|
<p>{DESCRIPTION}</p>
|
||||||
</div>
|
</div>
|
||||||
{chunkArray(users, ITEMS_PER_ROW).map((row, i) => (
|
<div className="row">
|
||||||
<div key={`row${i}`} className="row margin-vert--lg">
|
{users.map(user => (
|
||||||
{row.map(user => (
|
<div key={user.title} className="col col--4 margin-bottom--lg">
|
||||||
<div key={user.title} className="col col--4">
|
<div className={classnames('card', styles.showcaseUser)}>
|
||||||
<div className={classnames('card', styles.showcaseUser)}>
|
<div className="card__image">
|
||||||
<div className="card__image">
|
<Image img={user.preview} alt={user.title} />
|
||||||
<Image img={user.preview} alt={user.title} />
|
|
||||||
</div>
|
|
||||||
<div className="card__body">
|
|
||||||
<div className="avatar">
|
|
||||||
<div className="avatar__intro margin-left--none">
|
|
||||||
<h4 className="avatar__name">{user.title}</h4>
|
|
||||||
<small className="avatar__subtitle">
|
|
||||||
{user.description}
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{(user.website || user.source) && (
|
|
||||||
<div className="card__footer">
|
|
||||||
<div className="button-group button-group--block">
|
|
||||||
{user.website && (
|
|
||||||
<a
|
|
||||||
className="button button--small button--secondary button--block"
|
|
||||||
href={user.website}
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer noopener">
|
|
||||||
Website
|
|
||||||
</a>
|
|
||||||
)}
|
|
||||||
{user.source && (
|
|
||||||
<a
|
|
||||||
className="button button--small button--secondary button--block"
|
|
||||||
href={user.source}
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer noopener">
|
|
||||||
Source
|
|
||||||
</a>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
<div className="card__body">
|
||||||
|
<div className="avatar">
|
||||||
|
<div className="avatar__intro margin-left--none">
|
||||||
|
<h4 className="avatar__name">{user.title}</h4>
|
||||||
|
<small className="avatar__subtitle">
|
||||||
|
{user.description}
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{(user.website || user.source) && (
|
||||||
|
<div className="card__footer">
|
||||||
|
<div className="button-group button-group--block">
|
||||||
|
{user.website && (
|
||||||
|
<a
|
||||||
|
className="button button--small button--secondary button--block"
|
||||||
|
href={user.website}
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer noopener">
|
||||||
|
Website
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
{user.source && (
|
||||||
|
<a
|
||||||
|
className="button button--small button--secondary button--block"
|
||||||
|
href={user.source}
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer noopener">
|
||||||
|
Source
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
))}
|
</div>
|
||||||
</div>
|
))}
|
||||||
))}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Reference in a new issue