src/components/HomepageFeatures/index.tsx (65 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React from 'react';
import clsx from 'clsx';
import styles from './styles.module.css';
type FeatureItem = {
title: string;
Svg: React.ComponentType<React.ComponentProps<'svg'>>;
description: JSX.Element;
};
const FeatureList: FeatureItem[] = [
{
title: 'Provision a Hadoop Cluster',
Svg: require('@site/static/img/hadoop-logo.svg').default,
description: (
<>
Ambari provides a step-by-step wizard for installing Hadoop services across
any number of hosts.
</>
),
},
{
title: 'Manage a Hadoop Cluster',
Svg: require('@site/static/img/hammer-and-wrench.svg').default,
description: (
<>
Ambari provides central management for starting, stopping, and reconfiguring
Hadoop services across the entire cluster.
</>
),
},
{
title: 'Monitor a Hadoop Cluster',
Svg: require('@site/static/img/monitor.svg').default,
description: (
<>
Ambari provides a dashboard for monitoring health and status of the Hadoop cluster.
</>
),
},
];
function Feature({title, Svg, description}: FeatureItem) {
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>
</div>
);
}
export default function HomepageFeatures(): JSX.Element {
return (
<section className={styles.features}>
<div className="container">
<div className="row">
{FeatureList.map((props, idx) => (
<Feature key={idx} {...props} />
))}
</div>
</div>
</section>
);
}