1*2167191dSAndroid Build Coastguard Worker/* 2*2167191dSAndroid Build Coastguard Worker * Copyright 2022 The JSpecify Authors. 3*2167191dSAndroid Build Coastguard Worker * 4*2167191dSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*2167191dSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*2167191dSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*2167191dSAndroid Build Coastguard Worker * 8*2167191dSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*2167191dSAndroid Build Coastguard Worker * 10*2167191dSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*2167191dSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*2167191dSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*2167191dSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*2167191dSAndroid Build Coastguard Worker * limitations under the License. 15*2167191dSAndroid Build Coastguard Worker */ 16*2167191dSAndroid Build Coastguard Worker 17*2167191dSAndroid Build Coastguard Workerimport React from 'react'; 18*2167191dSAndroid Build Coastguard Workerimport clsx from 'clsx'; 19*2167191dSAndroid Build Coastguard Workerimport styles from './styles.module.css'; 20*2167191dSAndroid Build Coastguard Worker 21*2167191dSAndroid Build Coastguard Workerconst FeatureListSvg = [ 22*2167191dSAndroid Build Coastguard Worker { 23*2167191dSAndroid Build Coastguard Worker title: 'Standard Annotations', 24*2167191dSAndroid Build Coastguard Worker Svg: require('@site/static/img/jspecify-landing-annot.svg').default, 25*2167191dSAndroid Build Coastguard Worker description: ( 26*2167191dSAndroid Build Coastguard Worker <> 27*2167191dSAndroid Build Coastguard Worker JSpecify is releasing the first artifact of tool-independent annotations 28*2167191dSAndroid Build Coastguard Worker for powering static analysis checks in your Java code. 29*2167191dSAndroid Build Coastguard Worker </> 30*2167191dSAndroid Build Coastguard Worker ), 31*2167191dSAndroid Build Coastguard Worker }, 32*2167191dSAndroid Build Coastguard Worker { 33*2167191dSAndroid Build Coastguard Worker title: 'Next Level Static Analysis', 34*2167191dSAndroid Build Coastguard Worker Svg: require('@site/static/img/jspecify-landing-bugs.svg').default, 35*2167191dSAndroid Build Coastguard Worker description: ( 36*2167191dSAndroid Build Coastguard Worker <> 37*2167191dSAndroid Build Coastguard Worker JSpecify defines precise semantics, letting analysis tools find more 38*2167191dSAndroid Build Coastguard Worker bugs, and more consistently. Library owners won't have to decide which 39*2167191dSAndroid Build Coastguard Worker tool to support. 40*2167191dSAndroid Build Coastguard Worker </> 41*2167191dSAndroid Build Coastguard Worker ), 42*2167191dSAndroid Build Coastguard Worker }, 43*2167191dSAndroid Build Coastguard Worker]; 44*2167191dSAndroid Build Coastguard Worker 45*2167191dSAndroid Build Coastguard Workerconst FeatureListPng = [ 46*2167191dSAndroid Build Coastguard Worker { 47*2167191dSAndroid Build Coastguard Worker title: 'Community Effort', 48*2167191dSAndroid Build Coastguard Worker Png: require('@site/static/img/jspecify-landing-community.png').default, 49*2167191dSAndroid Build Coastguard Worker description: ( 50*2167191dSAndroid Build Coastguard Worker <> 51*2167191dSAndroid Build Coastguard Worker JSpecify is developed by consensus of members representing a variety of 52*2167191dSAndroid Build Coastguard Worker stakeholders in Java static analysis, and we welcome your participation. 53*2167191dSAndroid Build Coastguard Worker </> 54*2167191dSAndroid Build Coastguard Worker ), 55*2167191dSAndroid Build Coastguard Worker }, 56*2167191dSAndroid Build Coastguard Worker]; 57*2167191dSAndroid Build Coastguard Worker 58*2167191dSAndroid Build Coastguard Worker 59*2167191dSAndroid Build Coastguard Workerfunction FeatureSvg({Svg, title, description}) { 60*2167191dSAndroid Build Coastguard Worker return ( 61*2167191dSAndroid Build Coastguard Worker <div className={clsx('col col--4')}> 62*2167191dSAndroid Build Coastguard Worker <div className="text--center"> 63*2167191dSAndroid Build Coastguard Worker <Svg className={styles.featureSvg} role="img" /> 64*2167191dSAndroid Build Coastguard Worker </div> 65*2167191dSAndroid Build Coastguard Worker <div className="text--center padding-horiz--md"> 66*2167191dSAndroid Build Coastguard Worker <h3>{title}</h3> 67*2167191dSAndroid Build Coastguard Worker <p>{description}</p> 68*2167191dSAndroid Build Coastguard Worker </div> 69*2167191dSAndroid Build Coastguard Worker </div> 70*2167191dSAndroid Build Coastguard Worker ); 71*2167191dSAndroid Build Coastguard Worker} 72*2167191dSAndroid Build Coastguard Worker 73*2167191dSAndroid Build Coastguard Workerfunction FeaturePng({Png, title, description}) { 74*2167191dSAndroid Build Coastguard Worker return ( 75*2167191dSAndroid Build Coastguard Worker <div className={clsx('col col--4')}> 76*2167191dSAndroid Build Coastguard Worker <div className="text--center"> 77*2167191dSAndroid Build Coastguard Worker <img src={Png} className={styles.featureSvg} /> 78*2167191dSAndroid Build Coastguard Worker </div> 79*2167191dSAndroid Build Coastguard Worker <div className="text--center padding-horiz--md"> 80*2167191dSAndroid Build Coastguard Worker <h3>{title}</h3> 81*2167191dSAndroid Build Coastguard Worker <p>{description}</p> 82*2167191dSAndroid Build Coastguard Worker </div> 83*2167191dSAndroid Build Coastguard Worker </div> 84*2167191dSAndroid Build Coastguard Worker ); 85*2167191dSAndroid Build Coastguard Worker} 86*2167191dSAndroid Build Coastguard Worker 87*2167191dSAndroid Build Coastguard Workerexport default function HomepageFeatures() { 88*2167191dSAndroid Build Coastguard Worker return ( 89*2167191dSAndroid Build Coastguard Worker <section className={styles.features}> 90*2167191dSAndroid Build Coastguard Worker <div className="container"> 91*2167191dSAndroid Build Coastguard Worker <div className="row"> 92*2167191dSAndroid Build Coastguard Worker {FeatureListSvg.map((props, idx) => ( 93*2167191dSAndroid Build Coastguard Worker <FeatureSvg key={idx} {...props} /> 94*2167191dSAndroid Build Coastguard Worker ))} 95*2167191dSAndroid Build Coastguard Worker {FeatureListPng.map((props, idx) => ( 96*2167191dSAndroid Build Coastguard Worker <FeaturePng key={idx} {...props} /> 97*2167191dSAndroid Build Coastguard Worker ))} 98*2167191dSAndroid Build Coastguard Worker </div> 99*2167191dSAndroid Build Coastguard Worker </div> 100*2167191dSAndroid Build Coastguard Worker </section> 101*2167191dSAndroid Build Coastguard Worker ); 102*2167191dSAndroid Build Coastguard Worker} 103