first commit

This commit is contained in:
Vassshhh
2025-07-30 14:53:08 +07:00
commit a92b63bbd0
27 changed files with 18564 additions and 0 deletions

23
.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

70
README.md Normal file
View File

@@ -0,0 +1,70 @@
# Getting Started with Create React App
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
## Available Scripts
In the project directory, you can run:
### `npm start`
Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
The page will reload when you make changes.\
You may also see any lint errors in the console.
### `npm test`
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
### `npm run build`
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### `npm run eject`
**Note: this is a one-way operation. Once you `eject`, you can't go back!**
If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
## Learn More
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).
### Code Splitting
This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
### Analyzing the Bundle Size
This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
### Making a Progressive Web App
This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
### Advanced Configuration
This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
### Deployment
This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
### `npm run build` fails to minify
This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)

17864
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

43
package.json Normal file
View File

@@ -0,0 +1,43 @@
{
"name": "my-technopark-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.6.4",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^13.5.0",
"bootstrap": "^5.3.7",
"react": "^19.1.1",
"react-bootstrap": "^2.10.10",
"react-dom": "^19.1.1",
"react-scripts": "5.0.1",
"react-slick": "^0.30.3",
"slick-carousel": "^1.8.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

43
public/index.html Normal file
View File

@@ -0,0 +1,43 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

BIN
public/logo192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
public/logo512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

25
public/manifest.json Normal file
View File

@@ -0,0 +1,25 @@
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

3
public/robots.txt Normal file
View File

@@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

38
src/App.css Normal file
View File

@@ -0,0 +1,38 @@
.App {
text-align: center;
}
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: #61dafb;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

70
src/App.js Normal file
View File

@@ -0,0 +1,70 @@
import React, { useEffect, useState } from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
// import './assets/css/templatemo-chain-app-dev.css'; // Assuming you copy your original CSS here
// import './assets/css/animated.css';
// import './assets/css/owl.css';
// Import your converted React components
import Header from './components/Header';
import HeroSection from './components/HeroSection';
import ServicesSection from './components/ServicesSection';
import ProductSection from './components/ProductSection';
import AcademySection from './components/AcademySection';
import AboutUsSection from './components/AboutUsSection';
import KnowledgeBaseSection from './components/KnowledgeBaseSection';
import ClientsSection from './components/ClientsSection';
import Footer from './components/Footer';
function App() {
const [loading, setLoading] = useState(true);
useEffect(() => {
// Simulate preloader and remove it after some time
const timer = setTimeout(() => {
setLoading(false);
}, 1000); // Adjust time as needed
return () => clearTimeout(timer);
}, []);
if (loading) {
return (
<div id="js-preloader" className="js-preloader">
<div className="preloader-inner">
<span className="dot"></span>
<div className="dots">
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
);
}
return (
<div className="App">
<Header />
<HeroSection />
{/* FULL WIDTH IMAGE SECTION */}
{/* This can be a separate component or integrated into HeroSection */}
<div className="custom-image-section wow fadeInRight">
<a href="https://registration.kediritechnopark.com/" target="_blank" className="custom-image-link" rel="noopener noreferrer">
<div className="custom-image-wrapper">
<img src="/assets/images/FREE!.png" alt="Snack dan Jajanan" className="custom-image" />
<div className="light-glare"></div>
</div>
</a>
</div>
<ServicesSection />
<ProductSection />
<AcademySection />
<AboutUsSection />
<KnowledgeBaseSection />
<ClientsSection />
<Footer />
</div>
);
}
export default App;

8
src/App.test.js Normal file
View File

@@ -0,0 +1,8 @@
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders learn react link', () => {
render(<App />);
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
});

View File

@@ -0,0 +1,40 @@
import React from 'react';
import { Container, Row, Col, Button } from 'react-bootstrap';
const AboutUsSection = () => {
return (
<section id="about" className="about-us section py-5">
<Container>
<Row className="align-items-center">
<Col lg={6}>
<div className="section-heading">
<span style={{ color: '#6a59ff', fontWeight: 'bold' }}>Kediri Technopark</span>
<h2 className="mt-2">ABOUT US</h2>
<img src="/assets/images/heading-line-dec.png" alt="" />
<p className="mt-3">
<strong>Kediri Technopark: Katalis Inovasi dan Pusat Pertumbuhan Digital Lokal</strong><br /><br />
Kediri Technopark adalah inisiatif strategis yang bertujuan membangun ekosistem teknologi dan inovasi yang dinamis di Kediri, Jawa Timur. Kami menyediakan infrastruktur, sumber daya, dan komunitas pendukung yang dibutuhkan untuk mendorong pertumbuhan startup dan bisnis IT yang sudah ada.<br /><br />
Dengan misi memberdayakan talenta lokal, menjembatani teknologi dan industri, serta mempercepat transformasi digital, Kediri Technopark berkomitmen menjadi penggerak kemajuan ekonomi dan teknologi, baik di tingkat lokal maupun nasional.
</p>
<div className="mt-4 d-flex gap-3">
<Button href="konsultasi.html" className="px-4 py-2 rounded-pill text-white" style={{ background: 'linear-gradient(to right, #6a59ff, #8261ee)', border: 'none' }}>
Konsultasi
</Button>
<Button href="https://wa.me/6281318894994" target="_blank" variant="outline-success" className="px-4 py-2 rounded-pill">
<i className="fab fa-whatsapp"></i> WhatsApp
</Button>
</div>
</div>
</Col>
<Col lg={6}>
<div className="right-image">
<img src="/assets/images/about-right-dec.png" alt="" className="img-fluid" />
</div>
</Col>
</Row>
</Container>
</section>
);
};
export default AboutUsSection;

View File

@@ -0,0 +1,48 @@
import React from 'react';
import { Container, Row, Col, Card, Button } from 'react-bootstrap';
const AcademySection = () => {
return (
<section id="academy" className="academy-tables py-5">
<Container>
<div className="section-heading text-center mb-4">
<h4>OUR <em>ACADEMY PROGRAM</em></h4>
<img src="/assets/images/heading-line-dec.png" alt="" />
<p>Academy Program adalah wadah belajar digital untuk anak-anak dan remaja. Didesain interaktif, kreatif, dan gratis setiap modul membekali peserta dengan keterampilan masa depan, dari teknologi dasar hingga coding dan proyek nyata.</p>
</div>
<Row>
{[
{ title: 'Digital Funstart', items: ['Pengenalan teknologi', 'Interaktif & menyenangkan', 'Untuk anak-anak usia dini'] },
{ title: 'KidCode', items: ['Belajar coding visual', 'Kreatif & edukatif', 'Untuk anak SD & SMP'] },
{ title: 'Tech for Teens', items: ['Pengembangan skill digital', 'Remaja & pelajar', 'Berbasis proyek'] },
{ title: 'IT Training Camp', items: ['Pelatihan intensif IT', 'Untuk semua usia', 'Instruktur profesional'] },
{ title: 'Smart Teacher', items: ['Pelatihan guru', 'Integrasi teknologi', 'Media ajar digital'] },
{ title: 'Smart Staff', items: ['Pelatihan digital untuk staf', 'Administrasi dan operasional', 'Penguatan sistem kerja'] },
{ title: 'UMKM Go Digital', items: ['Digitalisasi bisnis kecil', 'Platform online', 'Pelatihan marketplace'] },
{ title: 'Creative Spark', items: ['Inkubasi ide kreatif', 'Coaching & mentoring', 'Kompetisi & showcase'] },
].map((program, idx) => (
<Col lg={3} key={idx} className="mb-4">
<Card className="academy-item-regular h-100">
<Card.Body>
<Card.Title>{program.title}</Card.Title>
<div className="icon mb-3">
<img src="/assets/images/pricing-table-01.png" alt="" />
</div>
<ul>
{program.items.map((item, i) => (
<li key={i}>{item}</li>
))}</ul>
<div className="border-button mt-3">
<Button variant="outline-primary" href="#program">Lihat Detail</Button>
</div>
</Card.Body>
</Card>
</Col>
))}
</Row>
</Container>
</section>
);
};
export default AcademySection;

View File

@@ -0,0 +1,28 @@
import React from 'react';
import { Container, Row, Col, Image } from 'react-bootstrap';
const ClientsSection = () => {
return (
<section id="clients" className="the-clients section py-5">
<Container>
<Row>
<Col lg={{ span: 8, offset: 2 }}>
<div className="section-heading text-center mb-4">
<h4>TRUSTED BY <em>OUR CLIENTS</em></h4>
<img src="/assets/images/heading-line-dec.png" alt="" className="mb-3" />
<p>We are proud to work with these amazing brands and organizations.</p>
</div>
<div id="clients-carousel" className="d-flex justify-content-center flex-wrap">
{[1, 2, 3, 4, 5].map((num) => (
<div key={num} className="client-logo-wrapper m-2">
<Image src={`/assets/images/client-logo${num}.png`} alt={`Client ${num}`} fluid />
</div>
))}</div>
</Col>
</Row>
</Container>
</section>
);
};
export default ClientsSection;

49
src/components/Footer.js Normal file
View File

@@ -0,0 +1,49 @@
import React from 'react';
import { Container, Row, Col } from 'react-bootstrap';
const Footer = () => {
return (
<footer id="contact" className="bg-dark text-white py-4">
<Container>
<Row className="justify-content-center">
<Col lg={6} className="text-center mb-3">
<h4>Contact Us</h4>
<p>Sunan Giri GG. I No. 11, Rejomulyo, Kediri, Jawa Timur 64129</p>
<p><a href="tel:+6281318894994" className="text-white">0813 1889 4994</a></p>
<p><a href="mailto:marketing@kediritechnopark.com" className="text-white">marketing@kediritechnopark.com</a></p>
<p><a href="https://instagram.com/kediri.technopark" target="_blank" rel="noopener noreferrer" className="text-white">@kediri.technopark</a></p>
<p><a href="https://kediritechnopark.com" target="_blank" rel="noopener noreferrer" className="text-white">www.KEDIRITECHNOPARK.com</a></p>
<div className="mt-3">
<a href="https://wa.me/6281318894994" target="_blank" rel="noopener noreferrer" className="me-3 text-white fs-4">
<i className="fab fa-whatsapp"></i>
</a>
<a href="https://instagram.com/kediri.technopark" target="_blank" rel="noopener noreferrer" className="text-white fs-4">
<i className="fab fa-instagram"></i>
</a>
</div>
</Col>
<Col lg={6} className="text-center">
<div className="footer-widget">
<h4>About Our Company</h4>
<div className="logo mb-3">
<img src="/assets/images/logo-white.png" alt="Logo" className="img-fluid" />
</div>
<p>Kediri Technopark adalah pusat pengembangan inovasi digital dan aplikasi untuk masyarakat dan pelaku usaha.</p>
</div>
</Col>
<Col lg={12} className="text-center mt-3">
<div className="copyright-text">
<p>
&copy; 2025 Kediri Technopark. All Rights Reserved.<br />
Design by <a href="https://templatemo.com/" target="_blank" rel="noopener noreferrer" className="text-white">TemplateMo</a><br />
Distributed by <a href="https://themewagon.com/" target="_blank" rel="noopener noreferrer" className="text-white">ThemeWagon</a>
</p>
</div>
</Col>
</Row>
</Container>
</footer>
);
};
export default Footer;

25
src/components/Header.js Normal file
View File

@@ -0,0 +1,25 @@
import React from 'react';
import { Navbar, Nav, Container } from 'react-bootstrap';
const Header = () => {
return (
<Navbar bg="light" expand="lg" sticky="top">
<Container>
<Navbar.Brand href="#">Kediri Technopark</Navbar.Brand>
<Navbar.Toggle aria-controls="basic-navbar-nav" />
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="me-auto">
<Nav.Link href="#top">Home</Nav.Link>
<Nav.Link href="#services">Services</Nav.Link>
<Nav.Link href="#produk">Product</Nav.Link>
<Nav.Link href="#academy">Academy</Nav.Link>
<Nav.Link href="#about">About</Nav.Link>
<Nav.Link href="#knowledge">Knowledge</Nav.Link>
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
);
};
export default Header;

View File

@@ -0,0 +1,26 @@
import React from 'react';
import { Container, Row, Col, Button } from 'react-bootstrap';
const HeroSection = () => {
return (
<section className="hero-section py-5 bg-light">
<Container>
<Row className="align-items-center">
<Col lg={6}>
<h1>KATALIS KARIR DAN BISNIS DIGITAL</h1>
<p>Kami adalah ekosistem tempat mimpi digital tumbuh dan masa depan dibentuk. Di sinilah semangat belajar bertemu dengan inovasi, dan ide-ide muda diberi ruang untuk berkembang. Lebih dari sekadar tempat, kami adalah rumah bagi talenta, teknologi, dan transformasi. Mari jelajahi dunia digital, bangun karir, dan ciptakan solusi semua dimulai dari sini.</p>
<div className="d-flex gap-3">
<Button variant="outline-primary" href="https://instagram.com/kediri.technopark" target="_blank">Instagram</Button>
<Button variant="outline-success" href="tel:+6281318894994">WhatsApp</Button>
</div>
</Col>
<Col lg={6}>
<img src="/assets/images/gambar1.png" alt="Hero Image" className="img-fluid" />
</Col>
</Row>
</Container>
</section>
);
};
export default HeroSection;

View File

@@ -0,0 +1,25 @@
import React from 'react';
import { Container, Row, Col } from 'react-bootstrap';
const KnowledgeBaseSection = () => {
return (
<section id="knowledge" className="knowledge section py-5">
<Container>
<Row>
<Col lg={{ span: 8, offset: 2 }}>
<div className="section-heading text-center mb-4">
<h4>KNOWLEDGE <em>BASE</em></h4>
<img src="/assets/images/heading-line-dec.png" alt="" className="mb-3" />
<p>Berbagai artikel dan panduan untuk membantu Anda memahami teknologi dan inovasi digital.</p>
</div>
<div className="knowledge-content">
<p>Kami sedang mengembangkan pusat dokumentasi digital, artikel praktis, dan tutorial untuk mendukung pelaku usaha dan masyarakat digital. Nantikan konten terbaru kami!</p>
</div>
</Col>
</Row>
</Container>
</section>
);
};
export default KnowledgeBaseSection;

View File

@@ -0,0 +1,42 @@
import React from 'react';
import { Container, Row, Col, Card } from 'react-bootstrap';
const ProductSection = () => {
return (
<section id="produk" className="product-section py-5 bg-light">
<Container>
<div className="section-heading text-center mb-4">
<h4>OUR <em>PRODUCT</em></h4>
<img src="/assets/images/heading-line-dec.png" alt="" />
<p>Kami menyediakan berbagai solusi teknologi untuk mendukung transformasi digital bisnis dan masyarakat.</p>
</div>
<Row className="justify-content-center">
<Col lg={12}>
<div className="d-flex overflow-auto">
<Card className="text-center me-3" style={{ minWidth: '200px' }}>
<Card.Img variant="top" src="/assets/images/mr.kyaiiphone.png" alt="Mr. Kyai" />
<Card.Body>
<Card.Title>MR. KYAI</Card.Title>
</Card.Body>
</Card>
<Card className="text-center me-3" style={{ minWidth: '200px' }}>
<Card.Img variant="top" src="/assets/images/kedaimasteriphone.png" alt="Kedai Master" />
<Card.Body>
<Card.Title>KEDAIMASTER</Card.Title>
</Card.Body>
</Card>
<Card className="text-center" style={{ minWidth: '200px' }}>
<Card.Img variant="top" src="/assets/images/mayageniphone.png" alt="Mayagen" />
<Card.Body>
<Card.Title>MAYAGEN</Card.Title>
</Card.Body>
</Card>
</div>
</Col>
</Row>
</Container>
</section>
);
};
export default ProductSection;

View File

@@ -0,0 +1,44 @@
import React from 'react';
import { Container, Row, Col, Card } from 'react-bootstrap';
const ServicesSection = () => {
return (
<section id="services" className="services py-5">
<Container>
<div className="section-heading text-center mb-4">
<h4>OUR <em>SERVICES</em></h4>
<img src="/assets/images/heading-line-dec.png" alt="" />
<p>Kami menyediakan berbagai solusi teknologi untuk mendukung transformasi digital bisnis dan masyarakat.</p>
</div>
<Row>
<Col lg={4}>
<Card className="mb-4">
<Card.Body>
<Card.Title>Mesthicon</Card.Title>
<Card.Text>Layanan instalasi jaringan, CCTV, dan infrastruktur teknologi.</Card.Text>
</Card.Body>
</Card>
</Col>
<Col lg={4}>
<Card className="mb-4">
<Card.Body>
<Card.Title>Techcare</Card.Title>
<Card.Text>Perakitan komputer, servis, dan konsultasi infrastruktur digital.</Card.Text>
</Card.Body>
</Card>
</Col>
<Col lg={4}>
<Card className="mb-4">
<Card.Body>
<Card.Title>Gawechno</Card.Title>
<Card.Text>Pembuatan software, website, sistem otomatisasi bisnis, dan aplikasi AI.</Card.Text>
</Card.Body>
</Card>
</Col>
</Row>
</Container>
</section>
);
};
export default ServicesSection;

13
src/index.css Normal file
View File

@@ -0,0 +1,13 @@
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
}

18
src/index.js Normal file
View File

@@ -0,0 +1,18 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import 'bootstrap/dist/css/bootstrap.min.css';
import reportWebVitals from './reportWebVitals';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

1
src/logo.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

13
src/reportWebVitals.js Normal file
View File

@@ -0,0 +1,13 @@
const reportWebVitals = onPerfEntry => {
if (onPerfEntry && onPerfEntry instanceof Function) {
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
getLCP(onPerfEntry);
getTTFB(onPerfEntry);
});
}
};
export default reportWebVitals;

5
src/setupTests.js Normal file
View File

@@ -0,0 +1,5 @@
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';