first commit

This commit is contained in:
“dongming”
2025-12-18 22:54:30 +08:00
commit cce2baf1d8
110 changed files with 17872 additions and 0 deletions

18
src/App.css Normal file
View File

@@ -0,0 +1,18 @@
@media screen and (max-width: 400px) {
#features {
padding: 20px;
width: 111%;
}
#about,
#services,
#testimonials,
#team,
#contact,
#footer {
width: 111%;
}
#portfolio {
width: 110%;
}
}

41
src/App.jsx Normal file
View File

@@ -0,0 +1,41 @@
import React, { useState, useEffect } from "react";
import { Navigation } from "./components/navigation";
import { Header } from "./components/header";
import { Features } from "./components/features";
import { About } from "./components/about";
import { Services } from "./components/services";
import { Gallery } from "./components/gallery";
import { Testimonials } from "./components/testimonials";
import { Team } from "./components/Team";
import { Contact } from "./components/contact";
import JsonData from "./data/data.json";
import SmoothScroll from "smooth-scroll";
import "./App.css";
export const scroll = new SmoothScroll('a[href*="#"]', {
speed: 1000,
speedAsDuration: true,
});
const App = () => {
const [landingPageData, setLandingPageData] = useState({});
useEffect(() => {
setLandingPageData(JsonData);
}, []);
return (
<div>
<Navigation />
<Header data={landingPageData.Header} />
<Features data={landingPageData.Features} />
<About data={landingPageData.About} />
<Services data={landingPageData.Services} />
<Gallery data={landingPageData.Gallery} />
<Testimonials data={landingPageData.Testimonials} />
<Team data={landingPageData.Team} />
<Contact data={landingPageData.Contact} />
</div>
);
};
export default App;

33
src/components/Team.jsx Normal file
View File

@@ -0,0 +1,33 @@
import React from "react";
export const Team = (props) => {
return (
<div id="team" className="text-center">
<div className="container">
<div className="col-md-8 col-md-offset-2 section-title">
<h2>Meet the Team</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit duis sed
dapibus leonec.
</p>
</div>
<div id="row">
{props.data
? props.data.map((d, i) => (
<div key={`${d.name}-${i}`} className="col-md-3 col-sm-6 team">
<div className="thumbnail">
{" "}
<img src={d.img} alt="..." className="team-img" />
<div className="caption">
<h4>{d.name}</h4>
<p>{d.job}</p>
</div>
</div>
</div>
))
: "loading"}
</div>
</div>
</div>
);
};

43
src/components/about.jsx Normal file
View File

@@ -0,0 +1,43 @@
import React from "react";
export const About = (props) => {
return (
<div id="about">
<div className="container">
<div className="row">
<div className="col-xs-12 col-md-6">
{" "}
<img src="img/about.jpg" className="img-responsive" alt="" />{" "}
</div>
<div className="col-xs-12 col-md-6">
<div className="about-text">
<h2>About Us</h2>
<p>{props.data ? props.data.paragraph : "loading..."}</p>
<h3>Why Choose Us?</h3>
<div className="list-style">
<div className="col-lg-6 col-sm-6 col-xs-12">
<ul>
{props.data
? props.data.Why.map((d, i) => (
<li key={`${d}-${i}`}>{d}</li>
))
: "loading"}
</ul>
</div>
<div className="col-lg-6 col-sm-6 col-xs-12">
<ul>
{props.data
? props.data.Why2.map((d, i) => (
<li key={`${d}-${i}`}> {d}</li>
))
: "loading"}
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
);
};

164
src/components/contact.jsx Normal file
View File

@@ -0,0 +1,164 @@
import { useState } from "react";
import emailjs from "@emailjs/browser";
const initialState = {
name: "",
email: "",
message: "",
};
export const Contact = (props) => {
const [{ name, email, message }, setState] = useState(initialState);
const handleChange = (e) => {
const { name, value } = e.target;
setState((prevState) => ({ ...prevState, [name]: value }));
};
const clearState = () => setState({ ...initialState });
const handleSubmit = (e) => {
e.preventDefault();
console.log(name, email, message);
{/* replace below with your own Service ID, Template ID and Public Key from your EmailJS account */ }
emailjs
.sendForm("YOUR_SERVICE_ID", "YOUR_TEMPLATE_ID", e.target, "YOUR_PUBLIC_KEY")
.then(
(result) => {
console.log(result.text);
clearState();
},
(error) => {
console.log(error.text);
}
);
};
return (
<div>
<div id="contact">
<div className="container">
<div className="col-md-8">
<div className="row">
<div className="section-title">
<h2>Get In Touch</h2>
<p>
Please fill out the form below to send us an email and we will
get back to you as soon as possible.
</p>
</div>
<form name="sentMessage" validate onSubmit={handleSubmit}>
<div className="row">
<div className="col-md-6">
<div className="form-group">
<input
type="text"
id="name"
name="name"
className="form-control"
placeholder="Name"
required
onChange={handleChange}
/>
<p className="help-block text-danger"></p>
</div>
</div>
<div className="col-md-6">
<div className="form-group">
<input
type="email"
id="email"
name="email"
className="form-control"
placeholder="Email"
required
onChange={handleChange}
/>
<p className="help-block text-danger"></p>
</div>
</div>
</div>
<div className="form-group">
<textarea
name="message"
id="message"
className="form-control"
rows="4"
placeholder="Message"
required
onChange={handleChange}
></textarea>
<p className="help-block text-danger"></p>
</div>
<div id="success"></div>
<button type="submit" className="btn btn-custom btn-lg">
Send Message
</button>
</form>
</div>
</div>
<div className="col-md-3 col-md-offset-1 contact-info">
<div className="contact-item">
<h3>Contact Info</h3>
<p>
<span>
<i className="fa fa-map-marker"></i> Address
</span>
{props.data ? props.data.address : "loading"}
</p>
</div>
<div className="contact-item">
<p>
<span>
<i className="fa fa-phone"></i> Phone
</span>{" "}
{props.data ? props.data.phone : "loading"}
</p>
</div>
<div className="contact-item">
<p>
<span>
<i className="fa fa-envelope-o"></i> Email
</span>{" "}
{props.data ? props.data.email : "loading"}
</p>
</div>
</div>
<div className="col-md-12">
<div className="row">
<div className="social">
<ul>
<li>
<a href={props.data ? props.data.facebook : "/"}>
<i className="fa fa-facebook"></i>
</a>
</li>
<li>
<a href={props.data ? props.data.twitter : "/"}>
<i className="fa fa-twitter"></i>
</a>
</li>
<li>
<a href={props.data ? props.data.youtube : "/"}>
<i className="fa fa-youtube"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div className="container text-center">
<p>
&copy; 2023 Issaaf Kattan React Land Page Template. Design by{" "}
<a href="http://www.templatewire.com" rel="nofollow">
TemplateWire
</a>
</p>
</div>
</div>
</div>
);
};

View File

@@ -0,0 +1,25 @@
import React from "react";
export const Features = (props) => {
return (
<div id="features" className="text-center">
<div className="container">
<div className="col-md-10 col-md-offset-1 section-title">
<h2>Features</h2>
</div>
<div className="row">
{props.data
? props.data.map((d, i) => (
<div key={`${d.title}-${i}`} className="col-xs-6 col-md-3">
{" "}
<i className={d.icon}></i>
<h3>{d.title}</h3>
<p>{d.text}</p>
</div>
))
: "Loading..."}
</div>
</div>
</div>
);
};

View File

@@ -0,0 +1,36 @@
import { Image } from "./image";
import React from "react";
export const Gallery = (props) => {
return (
<div id="portfolio" className="text-center">
<div className="container">
<div className="section-title">
<h2>Gallery</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit duis sed
dapibus leonec.
</p>
</div>
<div className="row">
<div className="portfolio-items">
{props.data
? props.data.map((d, i) => (
<div
key={`${d.title}-${i}`}
className="col-sm-6 col-md-4 col-lg-4"
>
<Image
title={d.title}
largeImage={d.largeImage}
smallImage={d.smallImage}
/>
</div>
))
: "Loading..."}
</div>
</div>
</div>
</div>
);
};

29
src/components/header.jsx Normal file
View File

@@ -0,0 +1,29 @@
import React from "react";
export const Header = (props) => {
return (
<header id="header">
<div className="intro">
<div className="overlay">
<div className="container">
<div className="row">
<div className="col-md-8 col-md-offset-2 intro-text">
<h1>
{props.data ? props.data.title : "Loading"}
<span></span>
</h1>
<p>{props.data ? props.data.paragraph : "Loading"}</p>
<a
href="#features"
className="btn btn-custom btn-lg page-scroll"
>
Learn More
</a>{" "}
</div>
</div>
</div>
</div>
</div>
</header>
);
};

17
src/components/image.jsx Normal file
View File

@@ -0,0 +1,17 @@
import React from "react";
export const Image = ({ title, largeImage, smallImage }) => {
return (
<div className="portfolio-item">
<div className="hover-bg">
{" "}
<a href={largeImage} title={title} data-lightbox-gallery="gallery1">
<div className="hover-text">
<h4>{title}</h4>
</div>
<img src={smallImage} className="img-responsive" alt={title} />{" "}
</a>{" "}
</div>
</div>
);
};

View File

@@ -0,0 +1,70 @@
import React from "react";
export const Navigation = (props) => {
return (
<nav id="menu" className="navbar navbar-default navbar-fixed-top">
<div className="container">
<div className="navbar-header">
<button
type="button"
className="navbar-toggle collapsed"
data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1"
>
{" "}
<span className="sr-only">Toggle navigation</span>{" "}
<span className="icon-bar"></span>{" "}
<span className="icon-bar"></span>{" "}
<span className="icon-bar"></span>{" "}
</button>
<a className="navbar-brand page-scroll" href="#page-top">
React Landing Page
</a>{" "}
</div>
<div
className="collapse navbar-collapse"
id="bs-example-navbar-collapse-1"
>
<ul className="nav navbar-nav navbar-right">
<li>
<a href="#features" className="page-scroll">
Features
</a>
</li>
<li>
<a href="#about" className="page-scroll">
About
</a>
</li>
<li>
<a href="#services" className="page-scroll">
Services
</a>
</li>
<li>
<a href="#portfolio" className="page-scroll">
Gallery
</a>
</li>
<li>
<a href="#testimonials" className="page-scroll">
Testimonials
</a>
</li>
<li>
<a href="#team" className="page-scroll">
Team
</a>
</li>
<li>
<a href="#contact" className="page-scroll">
Contact
</a>
</li>
</ul>
</div>
</div>
</nav>
);
};

View File

@@ -0,0 +1,31 @@
import React from "react";
export const Services = (props) => {
return (
<div id="services" className="text-center">
<div className="container">
<div className="section-title">
<h2>Our Services</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit duis sed
dapibus leonec.
</p>
</div>
<div className="row">
{props.data
? props.data.map((d, i) => (
<div key={`${d.name}-${i}`} className="col-md-4">
{" "}
<i className={d.icon}></i>
<div className="service-desc">
<h3>{d.name}</h3>
<p>{d.text}</p>
</div>
</div>
))
: "loading"}
</div>
</div>
</div>
);
};

View File

@@ -0,0 +1,31 @@
import React from "react";
export const Testimonials = (props) => {
return (
<div id="testimonials">
<div className="container">
<div className="section-title text-center">
<h2>What our clients say</h2>
</div>
<div className="row">
{props.data
? props.data.map((d, i) => (
<div key={`${d.name}-${i}`} className="col-md-4">
<div className="testimonial">
<div className="testimonial-image">
{" "}
<img src={d.img} alt="" />{" "}
</div>
<div className="testimonial-content">
<p>"{d.text}"</p>
<div className="testimonial-meta"> - {d.name} </div>
</div>
</div>
</div>
))
: "loading"}
</div>
</div>
</div>
);
};

184
src/data/data.json Normal file
View File

@@ -0,0 +1,184 @@
{
"Header": {
"title": "We are a Landing Page",
"paragraph": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sed commodo nibh ante facilisis bibendum."
},
"About": {
"paragraph": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"Why": [
"Lorem ipsum dolor",
"Tempor incididunt",
"Lorem ipsum dolor",
"Incididunt ut labore"
],
"Why2": [
"Aliquip ex ea commodo",
"Lorem ipsum dolor",
"Exercitation ullamco",
"Lorem ipsum dolor"
]
},
"Gallery": [
{
"title": "Project Title",
"largeImage": "img/portfolio/01-large.jpg",
"smallImage": "img/portfolio/01-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/02-large.jpg",
"smallImage": "img/portfolio/02-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/03-large.jpg",
"smallImage": "img/portfolio/03-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/04-large.jpg",
"smallImage": "img/portfolio/04-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/05-large.jpg",
"smallImage": "img/portfolio/05-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/06-large.jpg",
"smallImage": "img/portfolio/06-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/07-large.jpg",
"smallImage": "img/portfolio/07-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/08-large.jpg",
"smallImage": "img/portfolio/08-small.jpg"
},
{
"title": "Project Title",
"largeImage": "img/portfolio/09-large.jpg",
"smallImage": "img/portfolio/09-small.jpg"
}
],
"Services": [
{
"icon": "fa fa-wordpress",
"name": "Lorem ipsum dolor",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at."
},
{
"icon": "fa fa-cart-arrow-down",
"name": "Consectetur adipiscing",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at."
},
{
"icon": "fa fa-cloud-download",
"name": "Lorem ipsum dolor",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at."
},
{
"icon": "fa fa-language",
"name": "Consectetur adipiscing",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at."
},
{
"icon": "fa fa-plane",
"name": "Lorem ipsum dolor",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at."
},
{
"icon": "fa fa-pie-chart",
"name": "Consectetur adipiscing",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at."
}
],
"Testimonials": [
{
"img": "img/testimonials/01.jpg",
"text": "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at.\"",
"name": "John Doe"
},
{
"img": "img/testimonials/02.jpg",
"text": "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at.\"",
"name": "Johnathan Doe"
},
{
"img": "img/testimonials/03.jpg",
"text": "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at.\"",
"name": "John Doe"
},
{
"img": "img/testimonials/04.jpg",
"text": "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at.\"",
"name": "Johnathan Doe"
},
{
"img": "img/testimonials/05.jpg",
"text": "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at.\"",
"name": "John Doe"
},
{
"img": "img/testimonials/06.jpg",
"text": "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sed dapibus leo nec ornare diam sedasd commodo nibh ante facilisis bibendum dolor feugiat at.\"",
"name": "Johnathan Doe"
}
],
"Team": [
{
"img": "img/team/01.jpg",
"name": "John Doe",
"job": "Director"
},
{
"img": "img/team/02.jpg",
"name": "Mike Doe",
"job": "Senior Designer"
},
{
"img": "img/team/03.jpg",
"name": "Jane Doe",
"job": "Senior Designer"
},
{
"img": "img/team/04.jpg",
"name": "Karen Doe",
"job": "Project Manager"
}
],
"Contact": {
"address": "4321 California St, San Francisco, CA 12345 ",
"phone": "+1 123 456 1234",
"email": "info@company.com",
"facebook": "fb.com",
"twitter": "twitter.com",
"youtube": "youtube.com"
},
"Features": [
{
"icon": "fa fa-comments-o",
"title": "Lorem ipsum",
"text": "Lorem ipsum dolor sit amet placerat facilisis felis mi in tempus eleifend pellentesque natoque etiam."
},
{
"icon": "fa fa-bullhorn",
"title": "Lorem ipsum",
"text": "Lorem ipsum dolor sit amet placerat facilisis felis mi in tempus eleifend pellentesque natoque etiam."
},
{
"icon": "fa fa-group",
"title": "Lorem ipsum",
"text": "Lorem ipsum dolor sit amet placerat facilisis felis mi in tempus eleifend pellentesque natoque etiam."
},
{
"icon": "fa fa-magic",
"title": "Lorem ipsum",
"text": "Lorem ipsum dolor sit amet placerat facilisis felis mi in tempus eleifend pellentesque natoque etiam."
}
]
}

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

7
src/logo.svg Normal file
View File

@@ -0,0 +1,7 @@
<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

10
src/main.jsx Normal file
View File

@@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App'
import './index.css'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>
)