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> ); }