2022-05-16 03:26:04 +00:00
|
|
|
import React from 'react';
|
|
|
|
import clsx from 'clsx';
|
|
|
|
import styles from './styles.module.css';
|
|
|
|
import Link from '@docusaurus/Link';
|
|
|
|
|
|
|
|
const FeatureList = [
|
|
|
|
{
|
|
|
|
title: 'All the Data',
|
|
|
|
Svg: require('@site/static/img/data.svg').default,
|
|
|
|
description: (
|
|
|
|
<>
|
|
|
|
SheetJS presents a unified interface to every Excel file format as well
|
|
|
|
as Lotus 1-2-3, Numbers, and Quattro Pro. Process all the data!
|
|
|
|
</>
|
|
|
|
),
|
|
|
|
denouement: (
|
|
|
|
<div className={styles.buttons}>
|
|
|
|
<Link
|
|
|
|
className="button button--secondary button--lg"
|
|
|
|
to="/docs/miscellany/formats">
|
|
|
|
File Details
|
|
|
|
</Link>
|
|
|
|
</div>
|
|
|
|
),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: 'All the Tools',
|
|
|
|
Svg: require('@site/static/img/tools.svg').default,
|
|
|
|
description: (
|
|
|
|
<>
|
|
|
|
SheetJS offers solutions for common data problems. Unlock the power of
|
|
|
|
JavaScript to wrangle data and effortlessly solve problems.
|
|
|
|
</>
|
|
|
|
),
|
|
|
|
denouement: (
|
|
|
|
<div className={styles.buttons}>
|
|
|
|
<Link
|
|
|
|
className="button button--secondary button--lg"
|
2023-07-26 20:18:07 +00:00
|
|
|
to="/docs/getting-started/examples/export">
|
2022-05-16 03:26:04 +00:00
|
|
|
Complete Example
|
|
|
|
</Link>
|
|
|
|
</div>
|
|
|
|
),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: 'All the Places',
|
|
|
|
Svg: require('@site/static/img/places.svg').default,
|
|
|
|
description: (
|
|
|
|
<>
|
|
|
|
SheetJS runs everywhere: web browsers, servers, desktop apps, mobile
|
2022-09-22 00:20:14 +00:00
|
|
|
apps, Salesforce and Photoshop plugins, even within Excel!
|
2022-05-16 03:26:04 +00:00
|
|
|
</>
|
|
|
|
),
|
|
|
|
denouement: (
|
|
|
|
<div className={styles.buttons}>
|
|
|
|
<Link
|
|
|
|
className="button button--secondary button--lg"
|
2022-08-13 22:01:26 +00:00
|
|
|
to="/docs/demos/">
|
2022-05-16 03:26:04 +00:00
|
|
|
Demo Projects
|
|
|
|
</Link>
|
|
|
|
</div>
|
|
|
|
),
|
|
|
|
},
|
|
|
|
];
|
|
|
|
|
|
|
|
function Feature({Svg, title, description, denouement}) {
|
|
|
|
return (
|
|
|
|
<div className={clsx('col col--4')}>
|
|
|
|
<div className="text--center">
|
|
|
|
<Svg className={styles.featureSvg} role="img" />
|
|
|
|
</div>
|
|
|
|
<div className="text--center padding-horiz--md">
|
|
|
|
<h3>{title}</h3>
|
|
|
|
<p>{description}</p>
|
|
|
|
</div>
|
|
|
|
{denouement && (<div className="text--center">{denouement}</div>)}
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default function HomepageFeatures() {
|
|
|
|
return (
|
|
|
|
<section className={styles.features}>
|
|
|
|
<div className="container">
|
|
|
|
<div className="row">
|
|
|
|
{FeatureList.map((props, idx) => (
|
|
|
|
<Feature key={idx} {...props} />
|
|
|
|
))}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
);
|
|
|
|
}
|