add nextjs app: yoga-app

This commit is contained in:
Schneider Roland 2025-01-06 22:13:54 +01:00
parent 72681846d8
commit bed409f77c
283 changed files with 11753 additions and 331 deletions

750
docs/index.html.tsx Normal file
View File

@ -0,0 +1,750 @@
const page = () => {
return (
<html lang="zxx">
<head>
<title>Home | Yogastic</title>
<!-- /SEO Ultimate -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
<meta charset="utf-8" />
<link rel="apple-touch-icon" sizes="57x57" href="/assets/images/favicon/apple-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="60x60" href="/assets/images/favicon/apple-icon-60x60.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/assets/images/favicon/apple-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="76x76" href="/assets/images/favicon/apple-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/assets/images/favicon/apple-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="/assets/images/favicon/apple-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/assets/images/favicon/apple-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="/assets/images/favicon/apple-icon-152x152.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/assets/images/favicon/apple-icon-180x180.png" />
<link rel="icon" type="image/png" sizes="192x192" href="/assets/images/favicon/android-icon-192x192.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="96x96" href="/assets/images/favicon/favicon-96x96.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/assets/images/favicon/favicon-16x16.png" />
<link rel="manifest" href="/assets/images/favicon/manifest.json" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png" />
<meta name="theme-color" content="#ffffff" />
<!-- Latest compiled and minified CSS -->
<link href="assets/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="/assets/js/bootstrap.min.js" />
<!-- Font Awesome link -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" />
<!-- StyleSheet link CSS -->
<link href="assets/css/style.css" rel="stylesheet" type="text/css" />
<link href="assets/css/mediaqueries.css" rel="stylesheet" type="text/css" />
<link href="assets/css/custom-style.css" rel="stylesheet" type="text/css" />
<link href="assets/css/special-classes.css" rel="stylesheet" type="text/css" />
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.css" />
</head>
<body>
<div className="banner-section-outer">
<header>
<div className="main_header">
<div className="container-fluid">
<nav className="navbar navbar-expand-lg navbar-light p-0">
<a className="navbar-brand" href="/index.html"><figure className="mb-0"><img src="/assets/images/yogastic_logo.png" alt="" /></figure></a>
<button className="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
<span className="navbar-toggler-icon"></span>
<span className="navbar-toggler-icon"></span>
</button>
<div className="collapse navbar-collapse" id="navbarSupportedContent">
<ul className="navbar-nav">
<li className="nav-item active">
<a className="nav-link" href="/index.html">Home</a>
</li>
<li className="nav-item">
<a className="nav-link" href="/about.html">About Us</a>
</li>
<li className="nav-item">
<a className="nav-link" href="/services.html">Services</a>
</li>
<li className="nav-item dropdown">
<a className="nav-link dropdown-toggle dropdown-color navbar-text-color" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"> Pages </a>
<div className="dropdown-menu drop-down-content">
<ul className="list-unstyled drop-down-pages">
<li className="nav-item">
<a className="dropdown-item nav-link" href="/pricing.html">Pricing</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/faq.html">Faq</a>
</li>
</ul>
</div>
</li>
<li className="nav-item">
<a className="nav-link" href="/team.html">Team</a>
</li>
<li className="nav-item dropdown">
<a className="nav-link dropdown-toggle dropdown-color navbar-text-color" href="#" id="navbarDropdown2" role="button" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"> Blog </a>
<div className="dropdown-menu drop-down-content">
<ul className="list-unstyled drop-down-pages">
<li className="nav-item">
<a className="dropdown-item nav-link" href="/single-post.html">Single Post</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/infinite-scroll.html">Infinite Scroll</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/load-more.html">Load More</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/one-column.html">One Column</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/two-column.html">Two Column</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/three-column.html">Three Column</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/three-colum-sidbar.html">Three Column Sidebar</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/four-column.html">Four Column</a>
</li>
<li className="nav-item">
<a className="dropdown-item nav-link" href="/six-column.html">Six Column</a>
</li>
</ul>
</div>
</li>
<li className="nav-item">
<a className="nav-link contact_us" href="/contact.html">Contact Us</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
</header>
<!-- SOCIAL ICONS -->
<div className="left_icons float-left d-table" data-aos="fade-down">
<div className="icon_content d-table-cell align-middle">
<ul className="list-unstyled p-0 m-0">
<li>
<a href="#"><i className="fa-brands fa-facebook-f" aria-hidden="true"></i></a>
</li>
<li>
<a href="#"><i className="fa-brands fa-twitter" aria-hidden="true"></i></a>
</li>
<li>
<a href="#"><i className="fa-brands fa-linkedin-in" aria-hidden="true"></i></a>
</li>
</ul>
</div>
</div>
<!-- BANNER SECTION -->
<section className="banner-section">
<div className="container-fluid">
<div className="row" data-aos="fade-up">
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12 text-md-left text-center">
<div className="banner-section-content">
<h5>Start a Happy Life</h5>
<h1 data-aos="fade-up">Start Healing Your Mind, <span className="ityped"></span></h1>
<p data-aos="fade-right">Duis aute irure dolor in reprehenderit in volurate velit cillum nulla pariatur nostrud exercitation.</p>
<div className="btn_wrapper" data-aos="fade-up">
<a className="text-decoration-none getstarted_btn" href="/index.html">Get Started</a>
</div>
<a className="top-btn" href="/index.html#footer_section">
<i className="fa-solid fa-arrow-down-long"></i>
</a>
</div>
</div>
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div className="banner-section-image">
<figure className="mb-0">
<img src="/assets/images/banner_right_image.png" alt="" />
</figure>
</div>
</div>
</div>
<figure className="banner_left_top_shape left_shape mb-0">
<img src="/assets/images/banner_left_top_shape.png" alt="" className="img-fluid" />
</figure>
<figure className="banner_left_bottom_shape left_shape mb-0">
<img src="/assets/images/banner_left_bottom_shape.png" alt="" className="img-fluid" />
</figure>
<figure className="banner_right_top_shape right_shape mb-0">
<img src="/assets/images/banner_right_top_shape.png" alt="" className="img-fluid" />
</figure>
<figure className="banner_right_bottom_shape right_shape mb-0">
<img src="/assets/images/banner_right_bottom_shape.png" alt="" className="img-fluid" />
</figure>
</div>
</section>
</div>
<!-- OUR SERVICES SECTION -->
<section className="services_section">
<div className="container">
<div className="row">
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div className="services_content">
<h5>Our Services</h5>
<h2>Practice Whereever You Want Whenever You Need </h2>
<p>Taciti fames lacinia orci finibus metus elit tempus faucibus urna nunc dui rhoncus aibendum vea porttitor volutrat felis massa feugiat</p>
</div>
</div>
</div>
<div className="row" data-aos="fade-up">
<div className="col-lg-3 col-md-6 col-sm-6 col-xs-12">
<div className="services_box_content">
<div className="services_box_upper_portion">
<figure className="mb-0"><img src="/assets/images/services_img_1.png" alt="" className="img-fluid" /></figure>
</div>
<div className="services_box_lower_portion">
<h3>Prenatal Yoga</h3>
<p>Finibus metus elit tempus faucibus urna nunc aui.</p>
<div className="btn_wrapper">
<a href="/services.html" className="text-decoration-none"><i className="fa-solid fa-arrow-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
<div className="col-lg-3 col-md-6 col-sm-6 col-xs-12">
<div className="services_box_content">
<div className="services_box_upper_portion">
<figure className="mb-0"><img src="/assets/images/services_img_2.png" alt="" className="img-fluid" /></figure>
</div>
<div className="services_box_lower_portion">
<h3>Meditation</h3>
<p>Ainibus metus elit tempus faucibus urna nunc cui.</p>
<div className="btn_wrapper">
<a href="/services.html" className="text-decoration-none"><i className="fa-solid fa-arrow-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
<div className="col-lg-3 col-md-6 col-sm-6 col-xs-12">
<div className="services_box_content">
<div className="services_box_upper_portion">
<figure className="mb-0"><img src="/assets/images/services_img_3.png" alt="" className="img-fluid" /></figure>
</div>
<div className="services_box_lower_portion">
<h3>Nutrition Consultation</h3>
<p>Binibus metus elit tempus faucibus urna nunc eui.</p>
<div className="btn_wrapper">
<a href="/services.html" className="text-decoration-none"><i className="fa-solid fa-arrow-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
<div className="col-lg-3 col-md-6 col-sm-6 col-xs-12">
<div className="services_box_content">
<div className="services_box_upper_portion">
<figure className="mb-0"><img src="/assets/images/services_img_4.png" alt="" className="img-fluid" /></figure>
</div>
<div className="services_box_lower_portion">
<h3>Hatha Yoga</h3>
<p>Dinibus metus elit tempus faucibus urna nunc rui.</p>
<div className="btn_wrapper">
<a href="/services.html" className="text-decoration-none"><i className="fa-solid fa-arrow-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
</div>
<figure className="services_left_shape left_shape mb-0">
<img src="/assets/images/services_left_shape.png" alt="" className="img-fluid" />
</figure>
</div>
</section>
<!-- ABOUT US SECTION -->
<section className="aboutus_section">
<div className="container">
<div className="row">
<div className="col-lg-7 col-md-7 col-sm-12 col-xs-12">
<div className="aboutus_image">
<figure className="mb-0"><img src="/assets/images/aboutus_image.png" alt="" className="img-fluid" /></figure>
</div>
<figure className="aboutus_top_shape left_shape mb-0">
<img src="/assets/images/aboutus_top_shape.png" alt="" className="img-fluid" />
</figure>
<figure className="aboutus_bottom_shape left_shape mb-0">
<img src="/assets/images/aboutus_bottom_shape.png" alt="" className="img-fluid" />
</figure>
</div>
<div className="col-lg-5 col-md-5 col-sm-12 col-xs-12" data-aos="fade-right">
<div className="aboutus_content">
<h5>About us</h5>
<h2>Take Your Yoga to the Next Level</h2>
<p>Quis autem vel eum iure reprehenderit qui in eao voluptate velit esse quam nihil molestiae consequatur vel illum.</p>
<div className="aboutus_line_wrapper">
<h6>Modi tempora incidunt ut labore dolore magnam aliquam auerat volutaem.</h6>
<figure className="mb-0 purple_line"><img src="/assets/images/aboutus_line.png" alt="" className="img-fluid" /></figure>
</div>
<div className="btn_wrapper">
<a href="/about.html" className="text-decoration-none get_started_btn">Get Started</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- OUR SPECIALTIES SECTION -->
<section className="our_specialties_section">
<div className="container">
<div className="row">
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div className="our_specialties_heading_content">
<h5>Our Specialties</h5>
<h2>Why Choose Us</h2>
<p>Quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores nostrum exercitationem ullam corporis suscipit laboriosam</p>
</div>
</div>
</div>
<div className="row">
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12" data-aos="fade-right">
<div className="specialties_content_wrapper">
<div className="specialties_content s1">
<p className="specialties_name">Vinyasa Yoga</p>
<p className="specialties_paragraph">Dolor reaellendus temorius maiores alia</p>
</div>
<div className="specialties_content s2">
<p className="specialties_name">Slow Yoga</p>
<p className="specialties_paragraph">Rabore et dolore maga eiusmo rute aliua</p>
</div>
<div className="specialties_content s3">
<p className="specialties_name">Intuitive Yoga</p>
<p className="specialties_paragraph">Earum rerum hic tene sapiente delectus</p>
</div>
<div className="specialties_content s4">
<p className="specialties_name">Aroma Yoga</p>
<p className="specialties_paragraph">Neque orro quisquam est raui dolorem</p>
</div>
<figure className="specialties_left_line mb-0">
<img src="/assets/images/specialties_left_line.png" alt="" className="img-fluid" />
</figure>
</div>
</div>
<div className="col-lg-6 col-md-4 col-sm-6 col-xs-12 d-md-block d-none">
<figure className="specialties_image mb-0">
<img src="/assets/images/specialties_image.png" alt="" className="img-fluid" />
</figure>
</div>
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12" data-aos="fade-right">
<div className="specialties_content_wrapper">
<div className="specialties_content specialties_content2 s5">
<p className="specialties_name">Kundalini Yoga</p>
<p className="specialties_paragraph">Dolor reaellendus temorius maiores alia</p>
</div>
<div className="specialties_content specialties_content2 s6">
<p className="specialties_name">Bikram Yoga</p>
<p className="specialties_paragraph">Rabore et dolore mae eiusmo rute aliua</p>
</div>
<div className="specialties_content specialties_content2 s7">
<p className="specialties_name">Mindfulness Training</p>
<p className="specialties_paragraph">Earum rerum hic tene sapiente delectus</p>
</div>
<div className="specialties_content specialties_content2 s8">
<p className="specialties_name">Workout Routines</p>
<p className="specialties_paragraph">Neque orro quisquam est raui dolorem</p>
</div>
<figure className="specialties_right_line mb-0">
<img src="/assets/images/specialties_right_line.png" alt="" className="img-fluid" />
</figure>
</div>
</div>
</div>
<figure className="our_specialties_right_shape right_shape mb-0">
<img src="/assets/images/our_specialties_right_shape.png" alt="" className="img-fluid" />
</figure>
</div>
</section>
<!-- GET IN TOUCH SECTION -->
<section className="get_in_touch_section">
<div className="container">
<div className="row" data-aos="fade-up">
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div className="get_in_touch_content">
<h5>Get in touch</h5>
<h2>Get a Free Consultation Now</h2>
<form>
<div className="row">
<div className="col-lg-6 col-md-6 col-sm-6">
<div className="form-group mb-0">
<input type="text" name="fname" id="fname" className="form-control" placeholder="First Name" />
</div>
</div>
<div className="col-lg-6 col-md-6 col-sm-6">
<div className="form-group mb-0">
<input type="text" name="lname" id="lname" className="form-control form_style" placeholder="Last Name" />
</div>
</div>
<div className="col-lg-6 col-md-6 col-sm-6">
<div className="form-group mb-0">
<input type="tel" name="phonenum" id="phonenum" className="form-control" placeholder="Phone" />
</div>
</div>
<div className="col-lg-6 col-md-6 col-sm-6">
<div className="form-group mb-0">
<input type="email" name="emailaddrs" id="emailaddrs" className="form-control form_style" placeholder="Email" />
</div>
</div>
</div>
<div className="row">
<div className="col-lg-12">
<div className=" form-group mb-0">
<textarea rows="3" name="comment" id="msg" className="form-control" placeholder="Message"></textarea>
</div>
</div>
</div>
<div className="btn_wrapper">
<button type="submit" name="get_started" id="started">Get Started</button>
</div>
</form>
</div>
</div>
<div className="col-lg-3 col-md-3 col-sm-2 col-xs-12 d-md-block d-none"></div>
<div className="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<div className="get_in_touch_video position-relative">
<a className="popup-vimeo" href="https://previews.customer.envatousercontent.com/6720474d-ddc3-4b86-acf1-8d093cb37b6d/watermarked_preview/watermarked_preview.mp4">
<figure className="video_img mb-0">
<img className="thumb img-fluid" style="cursor: pointer" src="/assets/images/get_in_touch_video_icon.png" alt="" />
</figure>
</a>
</div>
</div>
</div>
<figure className="get_in_touch_shape left_shape mb-0">
<img src="/assets/images/get_in_touch_shape.png" alt="" className="img-fluid" />
</figure>
</div>
</section>
<!-- PRICING PLANS SECTION -->
<section className="pricing_plans_section">
<div className="container">
<div className="row">
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div className="pricing_plans_content">
<h5>What We Offer</h5>
<h2>Our Pricing Plans</h2>
<p>Molestiae non recusandae itaque earum rerum hic teneaur a sapiente delectus, rae aut reiciendis officia deserunt mollitia animi omnis dolor</p>
</div>
</div>
</div>
<div className="row" data-aos="fade-up">
<div className="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<div className="pricing_plans_box_content">
<div className="pricing_plans_box_upper_portion">
<figure className="pricing_plans_image mb-0">
<img src="/assets/images/pricing_plan_1.png" alt="" className="img-fluid" />
</figure>
<div className="pricing_plans_box_image_content">
<figure className="mb-0">
<img src="/assets/images/pricing_plan_icon_1.png" alt="" className="img-fluid" />
</figure>
</div>
</div>
<div className="pricing_plans_box_lower_portion">
<h3>Standard</h3>
<ul className="list-unstyled">
<li>
<i className="fa-solid fa-check" aria-hidden="true"></i>Pay as you go
</li>
<li>
<i className="fa-solid fa-check" aria-hidden="true"></i>Perfect for non-residence
</li>
</ul>
<div className="pricing_plans_span_wrapper">
<span className="price">$30</span>
<span className="per_month">/per month</span>
</div>
<div className="btn_wrapper">
<a className="enroll_now_btn text-decoration-none" href="/pricing.html">Enroll Now</a>
</div>
</div>
</div>
</div>
<div className="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<div className="pricing_plans_box_content">
<div className="pricing_plans_box_upper_portion">
<figure className="pricing_plans_image mb-0">
<img src="/assets/images/pricing_plan_2.png" alt="" className="img-fluid" />
</figure>
<div className="pricing_plans_box_image_content">
<figure className="mb-0">
<img src="/assets/images/pricing_plan_icon_2.png" alt="" className="img-fluid" />
</figure>
</div>
</div>
<div className="pricing_plans_box_lower_portion second_lower_portion">
<h3>Professional</h3>
<ul className="list-unstyled">
<li>
<i className="fa-solid fa-check" aria-hidden="true"></i>Short-term comitment
</li>
<li>
<i className="fa-solid fa-check" aria-hidden="true"></i>Online training for all
</li>
</ul>
<div className="pricing_plans_span_wrapper">
<span className="price">$120</span>
<span className="per_month">/per month</span>
</div>
<div className="btn_wrapper">
<a className="enroll_now_btn text-decoration-none" href="/pricing.html">Enroll Now</a>
</div>
</div>
</div>
</div>
<div className="col-lg-4 col-md-4 col-sm-6 col-xs-12">
<div className="pricing_plans_box_content">
<div className="pricing_plans_box_upper_portion">
<figure className="pricing_plans_image mb-0">
<img src="/assets/images/pricing_plan_3.png" alt="" className="img-fluid" />
</figure>
<div className="pricing_plans_box_image_content">
<figure className="mb-0">
<img src="/assets/images/pricing_plan_icon_3.png" alt="" className="img-fluid" />
</figure>
</div>
</div>
<div className="pricing_plans_box_lower_portion third_lower_portion">
<h3>Private</h3>
<ul className="list-unstyled">
<li>
<i className="fa-solid fa-check" aria-hidden="true"></i>Long-term comitment
</li>
<li>
<i className="fa-solid fa-check" aria-hidden="true"></i>24/7 Available
</li>
</ul>
<div className="pricing_plans_span_wrapper">
<span className="price">$250</span>
<span className="per_month">/per month</span>
</div>
<div className="btn_wrapper">
<a className="enroll_now_btn text-decoration-none" href="/pricing.html">Enroll Now</a>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- TESTIMONIAL SECTION -->
<div className="testimonial_section">
<div className="container">
<div className="row" data-aos="fade-up">
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div id="carouselExampleControls" className="carousel slide" data-ride="carousel">
<div className="carousel-inner">
<div className="carousel-item active">
<div className="testimonial_content">
<i className="fa-solid fa-quote-left"></i>
<p className="testimonial_paragraph">Quisuam est, qui dolorem ipsum quia dolor sit amet, consec velit sed ruia non nuam
eius modi tempora incidunt ut magnam aliruam auzerat voluptatem autenim rea minima
exercita ionem ullam corporis suscitnis officiis debitis aut rerum necessitatibus saepe
evenietut aer voluptates</p>
<figure><img src="/assets/images/testimonial_image.png" alt="" className="img-fluid" /></figure>
<p className="testimonial_person_name">Himala Joerge</p>
<span>Happy client</span>
</div>
</div>
<div className="carousel-item">
<div className="testimonial_content">
<i className="fa-solid fa-quote-left"></i>
<p className="testimonial_paragraph">Quisuam est, qui dolorem ipsum quia dolor sit amet, consec velit sed ruia non nuam
eius modi tempora incidunt ut magnam aliruam auzerat voluptatem autenim rea minima
exercita ionem ullam corporis suscitnis officiis debitis aut rerum necessitatibus saepe
evenietut aer voluptates</p>
<figure><img src="/assets/images/testimonial_image.png" alt="" className="img-fluid" /></figure>
<p className="testimonial_person_name">Himala Joerge</p>
<span>Happy client</span>
</div>
</div>
</div>
<a className="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
<i className="fa-solid fa-arrow-left-long"></i>
<span className="sr-only">Previous</span>
</a>
<a className="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
<i className="fa-solid fa-arrow-right-long"></i>
<span className="sr-only">Next</span>
</a>
</div>
</div>
</div>
<figure className="testimonial_left_shape left_shape mb-0">
<img src="/assets/images/testimonial_left_shape.png" alt="" className="img-fluid" />
</figure>
<figure className="testimonial_right_shape right_shape mb-0">
<img src="/assets/images/testimonial_right_shape.png" alt="" className="img-fluid" />
</figure>
</div>
</div>
<!-- BLOG POSTS SECTION -->
<section className="blog_posts_section">
<div className="container">
<div className="row">
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div className="blog_posts_content">
<h5>Blog Posts</h5>
<h2>Our News Feed</h2>
<p>Autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur vel illum qui dolorem eum fugiat</p>
</div>
</div>
</div>
<div className="row" data-aos="fade-up">
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div className="blog_posts_image position-relative">
<figure className="mb-0"><img src="/assets/images/blog_posts_1.png" alt="" className="img-fluid" /></figure>
<div className="blog_posts_image_content">
<span>YOGA</span>
<h4>Yoga Effects on Brain Health: A Systematic Review of the Current Literature</h4>
<div className="icon_wrapper">
<a href="/single-post.html" className="text-decoration-none"><i className="fa-solid fa-arrow-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div className="blog_posts_image position-relative">
<figure className="mb-0"><img src="/assets/images/blog_posts_2.png" alt="" className="img-fluid" /></figure>
<div className="blog_posts_image_content">
<span>FITNESS</span>
<h4>Maintaining a regular yoga practice can provide physical health</h4>
<div className="icon_wrapper">
<a href="/single-post.html" className="text-decoration-none"><i className="fa-solid fa-arrow-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
</div>
<div className="btn_wrapper">
<a href="/single-post.html" className="text-decoration-none view_blog">View All Blogs</a>
</div>
<figure className="blog_posts_left_shape left_shape mb-0">
<img src="/assets/images/blog_posts_left_shape.png" alt="" className="img-fluid" />
</figure>
<figure className="blog_posts_right_shape right_shape mb-0">
<img src="/assets/images/blog_posts_right_shape.png" alt="" className="img-fluid" />
</figure>
</div>
</section>
<!-- SUBSCRIBE SECTION -->
<section className="subscribe_section">
<div className="container">
<div className="subscribe_background_image">
<div className="row">
<div className="col-lg-7 col-md-7 col-sm-6 col-xs-12" data-aos="fade-right">
<div className="subscribe_content">
<h5>Subscribe now</h5>
<h2>Get the Latest Updates With Our Newletter</h2>
<form method="POST">
<div className="form-row">
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="email" name="email" id="emailadd" className="form-control" placeholder="Enter You Email" />
<button type="submit" name="btnsubmit" id="submitbutton">Subscribe</button>
</div>
</div>
</form>
</div>
</div>
<div className="col-lg-5 col-md-5 col-sm-6 col-xs-12">
<figure className="subscribe_image mb-0">
<img src="/assets/images/subscribe_image.png" alt="" />
</figure>
</div>
</div>
</div>
</div>
</section>
<!-- FOOTER SECTION -->
<section className="footer-section" id="footer_section">
<div className="container">
<div className="middle-portion">
<div className="row">
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-lg-block d-none">
<div className="footer_logo">
<a href="/index.html" className="text-decoration-none"><figure className="mb-0"><img src="/assets/images/footer_logo.png" alt="" className="img-fluid" /></figure></a>
</div>
</div>
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12">
<div className="about_col">
<h4>About Us</h4>
<ul className="list-unstyled">
<li>
<p>Quisuam est rui dolorem ipsum quia dolor sit amet, consectetur adipisci velit sea...</p>
</li>
<li className="icons"><a href="#"><i className="fa-brands fa-facebook-f" aria-hidden="true"></i></a></li>
<li className="icons"><a href="#"><i className="fa-brands fa-twitter" aria-hidden="true"></i></a></li>
<li className="icons"><a href="#"><i className="fa-brands fa-linkedin-in mr-0" aria-hidden="true"></i></a></li>
</ul>
</div>
</div>
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-md-block d-none">
<div className="links_col">
<h4>Quick Links</h4>
<ul className="list-unstyled">
<li>
<a href="/index.html">Home</a>
</li>
<li>
<a href="/about.html">About Us</a>
</li>
<li>
<a href="/services.html">Services</a>
</li>
<li>
<a href="/team.html">Team</a>
</li>
<li>
<a href="/contact.html">Contact Us</a>
</li>
</ul>
</div>
</div>
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-sm-block d-none">
<div className="contact_col">
<h4>Contact Info</h4>
<ul className="list-unstyled">
<li className="contact_icons">
<i className="fa-solid fa-phone"></i>
<a href="tel:+61383766284" className="text-decoration-none">+61 3 8376 6284</a>
</li>
<li className="contact_icons">
<i className="fa-sharp fa-solid fa-envelope"></i>
<a href="mailto:Info@yogastic.om" className="text-decoration-none">Info@yogastic.om</a>
</li>
<li className="mb-0">
<i className="fa-solid fa-location-dot location"></i>
<span>21 King Street Melbourne, 3000, Australia</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div className="bottom-portion">
<div className="copyright col-xl-12">
<p>Copyright 2022, Yogastic.com All Rights Reserved.</p>
</div>
</div>
<div className="footer_shape right_shape">
<figure className="mb-0"><img src="/assets/images/footer_shape.png" alt="" className="img-fluid" /></figure>
</div>
</section>
<!-- Latest compiled JavaScript -->
<script src="assets/js/jquery-3.6.0.min.js"></script>
<script src="assets/js/popper.min.js"></script>
<script src="assets/js/video-popup.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="assets/js/video-section.js"></script>
<script src="assets/js/animation.js"></script>
<script src="https://unpkg.com/ityped@0.0.10"></script>
<script src="assets/js/type.js"></script>
</body>
</html>
);
}

41
docs/structure.md Normal file
View File

@ -0,0 +1,41 @@
home
- menu + header
- start a happy life ( content, typing + image right)
- our services (title, description + 4 images)
- about us
- our specialities
- contact us
- pricing
- quotes
- blog posts
- subscribe now
- footer
about us
- header
- about us 2
- discount
- texts with right/left image incididunt/our mission
- Achievements
- blog posts
- subscribe now
- footer
services
- header
- our services
- contact us
- our specialities
- quotes
- blog posts
- subscribe now
- footer
contact
- header
- contact form
- google maps
- subcribe now
- footer

View File

@ -3,3 +3,10 @@ services:
image: docker.rschneider.hu/infra/yogastic:202412282019.ae4bba3
ports:
- "84:80"
db:
image: postgres:17.2-alpine
environment:
POSTGRES_PASSWORD: 123456
ports:
- "5432:5432"

View File

@ -0,0 +1,54 @@
# Building the docker image
## Dockerfile
The Dockerfile can be found in the root folder of the project.
## Available Environment Variables
| property name | description | values |
|----------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|
| DB_TYPE | type of the db enginge. | mysql, h2 |
| DB_URL | jdbc url of the db | "jdbc:mysql://ucs-intranet-db-author:3306/magnolia" |
| DB_USER | username for the db | root |
| DB_PASSWORD | password for the db | root |
| CATALINA_OPTS_APPEND | Java options form tomcat | "-Xms512M -Xmx2048M " |
| JAVA_OPTS | addition java options for application | "-agentlib:jdwp=transport=dt_socket,address=*:54455,server=y,suspend=n" |
| MAGNOLIA_UPDATE_AUTO | set the property 'magnolia.update.auto' in magnolia.properties | ${MAGNOLIA_UPDATE_AUTO} |
| MAGNOLIA_AUTHORINSTANCE_URL | public accessible url of the author instance | http://author.ucsintranet.at |
| MAGNOLIA_UCSWEBSITE_AUTHORINSTANCE_URL | public accessible url of the author instance of the UCS website | http://author.ucsintranet.at |
| MAGNOLIA_PUBLICINSTANCE_URL | public accessible url of the public instance | http://public.ucsintranet.at |
| MAGNOLIA_PROFILE | the magnolia profile to use (see: https://docs.magnolia-cms.com/product-docs/6.2/releases/release-notes-for-magnolia-cms-6.2.2/#_profile_based_configuration_of_property_files) | magnoliaAuthor, magnoliaPublic |
| KEYCLOAK_REALM | the keycloak realm to use | magnolia |
| KEYCLOAK_CLIENT_ID_AUTHOR | the author keycloak client id | author.ucsintranet |
| KEYCLOAK_CLIENT_ID_PUBLIC | the author keycloak client id | author.ucsintranet |
| KEYCLOAK_AUTH_URL | <TBD> | ${KEYCLOAK_AUTH_URL} |
| KEYCLOAK_SSL_REQUIRED | <TBD> | external |
| KEYCLOAK_CREDENTIALS_SECRET_AUTHOR | author keycloak secret | |
| KEYCLOAK_CREDENTIALS_SECRET_PUBLIC | public keycloak secret | |
## About the image
The image is based on the cli provided by magnolia ( a.k.a mgnl).
To get more information about the mgnl cli tool, please visit the [mgnl documentation](https://docs.magnolia-cms.com/magnolia-cli/4.x/)
The project generated by the mgnl tool, already includes the author and public instances!
Be sure, that in production you restrict the access to the author instance, and to the admin components
The image is set up so, that it uses the folder "/magnolia/light-modules" as resources dir.
While build the image, the <PROJECT_ROOT>/magnolia/modules will be copied in to the image as "/magnolia/light-modules".
For development, the <PROJECT_ROOT>/magnolia/modules can be mounted, so the changes in the lightmodules are "live/instant"
## Building & pushing the image
The easiest way to build and pusht the image is, to run the next commands
```bash
npm run docker:build
```
```bash
npm run docker:push
```
For more details, pls examine the package.json file, and the scripts in docker/magnolia/scripts folder

View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
source "${CURRENT_DIR}/build.docker.build.step.inc.version.sh"
source "${CURRENT_DIR}/build.docker.build.step.build.sh"

View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
# build docker image
source "${CURRENT_DIR}/build.docker.env.sh"
PROJECT_ROOT=$(readlink -f "${CURRENT_DIR}/../../../../..")
echo "build image ${TAG} from folder ${PROJECT_ROOT}"
cd $PROJECT_ROOT
docker build --platform linux/amd64 -t $TAG .

View File

@ -0,0 +1,17 @@
#!/usr/bin/env bash
# set the actual commit date and commit hash in version.txt
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
GIT_BRANCH_SHORT=$(echo $GIT_BRANCH | cut -d "/" -f 1)
GIT_COMMIT_DATE=$(git log -1 --format=%cd --date=format:%Y%m%d%H%M)
GIT_COMMIT_ID_SHORT=$(git rev-parse --short HEAD)
VERSION=$GIT_COMMIT_DATE.$GIT_COMMIT_ID_SHORT
CURRENT_DIR=$(dirname "$0")
VERSION_FILE="${CURRENT_DIR}/version.txt"
echo "Saving version ${VERSION} to file ${VERSION_FILE}"
echo $VERSION
echo $VERSION > $VERSION_FILE

View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
VERSION_FILE="${CURRENT_DIR}/version.txt"
echo "Reading version file: ${VERSION_FILE}"
export VERSION=$(cat "${VERSION_FILE}")
export TAG=docker.rschneider.hu/infra/yoga-strapi:$VERSION

View File

@ -0,0 +1,7 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
# push docker image
source "${CURRENT_DIR}/build.docker.env.sh"
echo "push image ${TAG}"
docker push $TAG

View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
source "${CURRENT_DIR}/build.docker.env.sh"
source "${CURRENT_DIR}/start.docker.env.sh"
cd ${ENV_DEV_DIR}
docker-compose down

View File

@ -0,0 +1,4 @@
#!/usr/bin/env bash
ENV_DEV_DIR=$(readlink -f "${CURRENT_DIR}/../../../environments/dev/docker-compose")
COMPOSE_FILE=$(readlink -f "/docker-compose.yml")

View File

@ -0,0 +1,8 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
source "${CURRENT_DIR}/start.docker.compose.env.sh"
cd "${ENV_DEV_DIR}"
echo "starting compose file in ${ENV_DEV_DIR}"
docker compose up -d

View File

@ -0,0 +1,18 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
source "${CURRENT_DIR}/build.docker.env.sh"
source "${CURRENT_DIR}/start.docker.compose.env.sh"
echo "updating image version to ${VERSION} in compose file ${COMPOSE_FILE}"
#export TAG=docker.rschneider.hu/infra/yogastic:$VERSION
case $(uname) in
"Darwin")
echo "Detected macOS"
sed -i'' -e "s/docker.rschneider.hu\\/infra\\/yogastic:.*/docker.rschneider.hu\\/infra\\/yogastic:$VERSION/g" $COMPOSE_FILE
;;
*)
sed -i "s/docker.rschneider.hu\\/infra\\/yogastic:.*/docker.rschneider.hu\\/infra\\/yogastic:$VERSION/g" $COMPOSE_FILE
#sed -i "s/docker.rschneider.hu\\/infra\\/yogastic:.*/docker.rschneider.hu\\/infra\\/yogastic:$VERSION/g" $COMPOSE_FILE
;;
esac

View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
source "${CURRENT_DIR}/build.docker.env.sh"
source "${CURRENT_DIR}/start.docker.compose.env.sh"
cd ${ENV_DEV_DIR}
echo "Destroy compose in ${ENV_DEV_DIR}"
docker compose down -v

View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
CURRENT_DIR=$(dirname "$0")
source "${CURRENT_DIR}/build.docker.env.sh"
source "${CURRENT_DIR}/start.docker.compose.env.sh"
cd ${ENV_DEV_DIR}
echo "Stopping compose in ${ENV_DEV_DIR}"
docker compose down

View File

@ -0,0 +1 @@
202412302206.7268184

30
strapi-yoga/Dockerfile Normal file
View File

@ -0,0 +1,30 @@
# Creating multi-stage build for production
FROM node:18-alpine as build
RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev vips-dev git > /dev/null 2>&1
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /opt/
COPY package.json package-lock.json ./
RUN npm install -g node-gyp
RUN npm config set fetch-retry-maxtimeout 600000 -g && npm install --only=production
ENV PATH=/opt/node_modules/.bin:$PATH
WORKDIR /opt/app
COPY . .
RUN npm run build
# Creating final production image
FROM node:18-alpine
RUN apk add --no-cache vips-dev
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /opt/
COPY --from=build /opt/node_modules ./node_modules
WORKDIR /opt/app
COPY --from=build /opt/app ./
ENV PATH=/opt/node_modules/.bin:$PATH
RUN chown -R node:node /opt/app
USER node
EXPOSE 1337
CMD ["npm", "run", "start"]

View File

@ -0,0 +1,19 @@
FROM node:18-alpine3.18
# Installing libvips-dev for sharp Compatibility
RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev git
ARG NODE_ENV=development
ENV NODE_ENV=${NODE_ENV}
WORKDIR /opt/
COPY package.json package-lock.json ./
RUN npm install -g node-gyp
RUN npm config set fetch-retry-maxtimeout 600000 -g && npm install
ENV PATH=/opt/node_modules/.bin:$PATH
WORKDIR /opt/app
COPY . .
RUN chown -R node:node /opt/app
USER node
RUN ["npm", "run", "build"]
EXPOSE 1337
CMD ["npm", "run", "develop"]

View File

@ -17,6 +17,7 @@
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-router-dom": "^6.0.0",
"strapi-import-export": "^0.0.1",
"styled-components": "^6.0.0"
},
"devDependencies": {
@ -963,6 +964,21 @@
"integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==",
"license": "BSD-3-Clause"
},
"node_modules/@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
"integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
"license": "BSD-3-Clause"
},
"node_modules/@hapi/topo": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
"integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
"license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.0.0"
}
},
"node_modules/@inquirer/figures": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.9.tgz",
@ -1219,6 +1235,32 @@
"integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==",
"license": "MIT"
},
"node_modules/@monaco-editor/loader": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz",
"integrity": "sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==",
"license": "MIT",
"dependencies": {
"state-local": "^1.0.6"
},
"peerDependencies": {
"monaco-editor": ">= 0.21.0 < 1"
}
},
"node_modules/@monaco-editor/react": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.6.0.tgz",
"integrity": "sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==",
"license": "MIT",
"dependencies": {
"@monaco-editor/loader": "^1.4.0"
},
"peerDependencies": {
"monaco-editor": ">= 0.25.0 < 1",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/@mux/mux-player": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-3.1.0.tgz",
@ -3098,6 +3140,34 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"license": "BSD-3-Clause"
},
"node_modules/@sec-ant/readable-stream": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
"integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
"license": "MIT",
"peer": true
},
"node_modules/@sideway/address": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
"integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
"license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.0.0"
}
},
"node_modules/@sideway/formula": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
"integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
"license": "BSD-3-Clause"
},
"node_modules/@sideway/pinpoint": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
"integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
"license": "BSD-3-Clause"
},
"node_modules/@simov/deep-extend": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@simov/deep-extend/-/deep-extend-1.0.0.tgz",
@ -3119,6 +3189,19 @@
"url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
"node_modules/@sindresorhus/merge-streams": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@sindresorhus/slugify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.0.tgz",
@ -4931,6 +5014,316 @@
"styled-components": "^6.0.0"
}
},
"node_modules/@strapi/sdk-plugin": {
"version": "5.2.8",
"resolved": "https://registry.npmjs.org/@strapi/sdk-plugin/-/sdk-plugin-5.2.8.tgz",
"integrity": "sha512-Il8HCG7MS/1hocyfUDKibCdjSd1JTgOnU/vTmg0aBUZUYJzCT1W7bOQPbKegUDqFb0oS9Em9UAWrGhp/VuUQ7w==",
"license": "SEE LICENSE IN LICENSE",
"peer": true,
"dependencies": {
"@strapi/pack-up": "^5.0.1",
"@types/prompts": "2.4.9",
"boxen": "5.1.2",
"chalk": "4.1.2",
"commander": "12.1.0",
"concurrently": "^8.2.2",
"execa": "^9.3.1",
"get-latest-version": "5.1.0",
"git-url-parse": "13.1.1",
"nodemon": "^3.1.0",
"ora": "5.4.1",
"outdent": "0.8.0",
"pkg-up": "3.1.0",
"prettier": "2.8.8",
"typescript": "5.4.4",
"yup": "0.32.9"
},
"bin": {
"strapi-plugin": "bin/strapi-plugin.js"
},
"engines": {
"node": ">=18.0.0 <=22.x.x",
"npm": ">=6.0.0"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"license": "MIT",
"peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/commander": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/execa": {
"version": "9.5.2",
"resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz",
"integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"@sindresorhus/merge-streams": "^4.0.0",
"cross-spawn": "^7.0.3",
"figures": "^6.1.0",
"get-stream": "^9.0.0",
"human-signals": "^8.0.0",
"is-plain-obj": "^4.1.0",
"is-stream": "^4.0.1",
"npm-run-path": "^6.0.0",
"pretty-ms": "^9.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^4.0.0",
"yoctocolors": "^2.0.0"
},
"engines": {
"node": "^18.19.0 || >=20.5.0"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/figures": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
"integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
"license": "MIT",
"peer": true,
"dependencies": {
"is-unicode-supported": "^2.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/get-stream": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
"integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@sec-ant/readable-stream": "^0.4.1",
"is-stream": "^4.0.1"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/git-url-parse": {
"version": "13.1.1",
"resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz",
"integrity": "sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"git-up": "^7.0.0"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/human-signals": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz",
"integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==",
"license": "Apache-2.0",
"peer": true,
"engines": {
"node": ">=18.18.0"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/is-stream": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
"integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/is-unicode-supported": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
"integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"license": "ISC",
"peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/nodemon": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz",
"integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==",
"license": "MIT",
"peer": true,
"dependencies": {
"chokidar": "^3.5.2",
"debug": "^4",
"ignore-by-default": "^1.0.1",
"minimatch": "^3.1.2",
"pstree.remy": "^1.1.8",
"semver": "^7.5.3",
"simple-update-notifier": "^2.0.0",
"supports-color": "^5.5.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.5"
},
"bin": {
"nodemon": "bin/nodemon.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/nodemon"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/npm-run-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
"integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
"license": "MIT",
"peer": true,
"dependencies": {
"path-key": "^4.0.0",
"unicorn-magic": "^0.3.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/path-key": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/prettier": {
"version": "2.8.8",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"license": "MIT",
"peer": true,
"bin": {
"prettier": "bin-prettier.js"
},
"engines": {
"node": ">=10.13.0"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"license": "ISC",
"peer": true,
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/strip-final-newline": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
"integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"license": "MIT",
"peer": true,
"dependencies": {
"has-flag": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@strapi/sdk-plugin/node_modules/typescript": {
"version": "5.4.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz",
"integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==",
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/@strapi/strapi": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/@strapi/strapi/-/strapi-5.6.0.tgz",
@ -5871,6 +6264,17 @@
"@types/node": "*"
}
},
"node_modules/@types/prompts": {
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz",
"integrity": "sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*",
"kleur": "^3.0.3"
}
},
"node_modules/@types/prop-types": {
"version": "15.7.14",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
@ -6734,6 +7138,12 @@
"safe-buffer": "~5.2.0"
}
},
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"license": "MIT"
},
"node_modules/bn.js": {
"version": "4.12.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz",
@ -8116,6 +8526,35 @@
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
"node_modules/csvtojson": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz",
"integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==",
"license": "MIT",
"dependencies": {
"bluebird": "^3.5.1",
"lodash": "^4.17.3",
"strip-bom": "^2.0.0"
},
"bin": {
"csvtojson": "bin/csvtojson"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/csvtojson/node_modules/strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
"license": "MIT",
"dependencies": {
"is-utf8": "^0.2.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/custom-media-element": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.3.3.tgz",
@ -11360,6 +11799,12 @@
"upper-case": "^1.1.0"
}
},
"node_modules/is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
"license": "MIT"
},
"node_modules/is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@ -11473,6 +11918,19 @@
"integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
"license": "MIT"
},
"node_modules/joi": {
"version": "17.13.3",
"resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
"integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
"license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.3.0",
"@hapi/topo": "^5.1.0",
"@sideway/address": "^4.1.5",
"@sideway/formula": "^3.0.1",
"@sideway/pinpoint": "^2.0.0"
}
},
"node_modules/jose": {
"version": "4.15.9",
"resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
@ -12847,6 +13305,13 @@
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"license": "MIT"
},
"node_modules/monaco-editor": {
"version": "0.52.2",
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz",
"integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==",
"license": "MIT",
"peer": true
},
"node_modules/mrmime": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
@ -13743,6 +14208,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/parse-ms": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
"integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/parse-passwd": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
@ -15109,6 +15587,22 @@
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"license": "MIT"
},
"node_modules/pretty-ms": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
"integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==",
"license": "MIT",
"peer": true,
"dependencies": {
"parse-ms": "^4.0.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/prismjs": {
"version": "1.29.0",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
@ -15652,6 +16146,23 @@
"react": "^16.3.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-singleton-hook": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/react-singleton-hook/-/react-singleton-hook-4.0.1.tgz",
"integrity": "sha512-fWuk8VxcZPChrkQasDLM8pgd/7kyi+Cr/5FfCiD99FicjEru+JmtEZNnN4lJ8Z7KbqAST5CYPlpz6lmNsZFGNw==",
"license": "MIT",
"peerDependencies": {
"react": "18"
},
"peerDependenciesMeta": {
"react-dom": {
"optional": true
},
"react-native": {
"optional": true
}
}
},
"node_modules/react-style-singleton": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz",
@ -17046,6 +17557,12 @@
"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
"license": "MIT"
},
"node_modules/state-local": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz",
"integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==",
"license": "MIT"
},
"node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@ -17067,6 +17584,215 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/strapi-import-export": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/strapi-import-export/-/strapi-import-export-0.0.1.tgz",
"integrity": "sha512-iRUHGaCmxY3r6axaDTQKyumFMA66PcWHRQlsBvhdEAJaEYogvpoh1bOh1peG+H4gENTPTSt8wV2ZeImfYk8gKg==",
"license": "MIT",
"dependencies": {
"@monaco-editor/react": "^4.6.0",
"@uiw/react-codemirror": "^4.23.5",
"csvtojson": "^2.0.10",
"joi": "^17.13.3",
"react-intl": "^6.7.2",
"react-singleton-hook": "^4.0.1"
},
"peerDependencies": {
"@strapi/sdk-plugin": "^5.2.6",
"@strapi/strapi": "^5.0.4",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^6.26.2",
"styled-components": "^6.1.13"
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/ecma402-abstract": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.4.tgz",
"integrity": "sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg==",
"license": "MIT",
"dependencies": {
"@formatjs/fast-memoize": "2.2.3",
"@formatjs/intl-localematcher": "0.5.8",
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/fast-memoize": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz",
"integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==",
"license": "MIT",
"dependencies": {
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/icu-messageformat-parser": {
"version": "2.9.4",
"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.4.tgz",
"integrity": "sha512-Tbvp5a9IWuxUcpWNIW6GlMQYEc4rwNHR259uUFoKWNN1jM9obf9Ul0e+7r7MvFOBNcN+13K7NuKCKqQiAn1QEg==",
"license": "MIT",
"dependencies": {
"@formatjs/ecma402-abstract": "2.2.4",
"@formatjs/icu-skeleton-parser": "1.8.8",
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/icu-skeleton-parser": {
"version": "1.8.8",
"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.8.tgz",
"integrity": "sha512-vHwK3piXwamFcx5YQdCdJxUQ1WdTl6ANclt5xba5zLGDv5Bsur7qz8AD7BevaKxITwpgDeU0u8My3AIibW9ywA==",
"license": "MIT",
"dependencies": {
"@formatjs/ecma402-abstract": "2.2.4",
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/intl": {
"version": "2.10.15",
"resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.15.tgz",
"integrity": "sha512-i6+xVqT+6KCz7nBfk4ybMXmbKO36tKvbMKtgFz9KV+8idYFyFbfwKooYk8kGjyA5+T5f1kEPQM5IDLXucTAQ9g==",
"license": "MIT",
"dependencies": {
"@formatjs/ecma402-abstract": "2.2.4",
"@formatjs/fast-memoize": "2.2.3",
"@formatjs/icu-messageformat-parser": "2.9.4",
"@formatjs/intl-displaynames": "6.8.5",
"@formatjs/intl-listformat": "7.7.5",
"intl-messageformat": "10.7.7",
"tslib": "2"
},
"peerDependencies": {
"typescript": "^4.7 || 5"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/intl-displaynames": {
"version": "6.8.5",
"resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.8.5.tgz",
"integrity": "sha512-85b+GdAKCsleS6cqVxf/Aw/uBd+20EM0wDpgaxzHo3RIR3bxF4xCJqH/Grbzx8CXurTgDDZHPdPdwJC+May41w==",
"license": "MIT",
"dependencies": {
"@formatjs/ecma402-abstract": "2.2.4",
"@formatjs/intl-localematcher": "0.5.8",
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/intl-listformat": {
"version": "7.7.5",
"resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.7.5.tgz",
"integrity": "sha512-Wzes10SMNeYgnxYiKsda4rnHP3Q3II4XT2tZyOgnH5fWuHDtIkceuWlRQNsvrI3uiwP4hLqp2XdQTCsfkhXulg==",
"license": "MIT",
"dependencies": {
"@formatjs/ecma402-abstract": "2.2.4",
"@formatjs/intl-localematcher": "0.5.8",
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/@formatjs/intl-localematcher": {
"version": "0.5.8",
"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.8.tgz",
"integrity": "sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg==",
"license": "MIT",
"dependencies": {
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/@uiw/codemirror-extensions-basic-setup": {
"version": "4.23.7",
"resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.7.tgz",
"integrity": "sha512-9/2EUa1Lck4kFKkR2BkxlZPpgD/EWuKHnOlysf1yHKZGraaZmZEaUw+utDK4QcuJc8Iz097vsLz4f4th5EU27g==",
"license": "MIT",
"dependencies": {
"@codemirror/autocomplete": "^6.0.0",
"@codemirror/commands": "^6.0.0",
"@codemirror/language": "^6.0.0",
"@codemirror/lint": "^6.0.0",
"@codemirror/search": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0"
},
"funding": {
"url": "https://jaywcjlove.github.io/#/sponsor"
},
"peerDependencies": {
"@codemirror/autocomplete": ">=6.0.0",
"@codemirror/commands": ">=6.0.0",
"@codemirror/language": ">=6.0.0",
"@codemirror/lint": ">=6.0.0",
"@codemirror/search": ">=6.0.0",
"@codemirror/state": ">=6.0.0",
"@codemirror/view": ">=6.0.0"
}
},
"node_modules/strapi-import-export/node_modules/@uiw/react-codemirror": {
"version": "4.23.7",
"resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.23.7.tgz",
"integrity": "sha512-Nh/0P6W+kWta+ARp9YpnKPD9ick5teEnwmtNoPQnyd6NPv0EQP3Ui4YmRVNj1nkUEo+QjrAUaEfcejJ2up/HZA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.18.6",
"@codemirror/commands": "^6.1.0",
"@codemirror/state": "^6.1.1",
"@codemirror/theme-one-dark": "^6.0.0",
"@uiw/codemirror-extensions-basic-setup": "4.23.7",
"codemirror": "^6.0.0"
},
"funding": {
"url": "https://jaywcjlove.github.io/#/sponsor"
},
"peerDependencies": {
"@babel/runtime": ">=7.11.0",
"@codemirror/state": ">=6.0.0",
"@codemirror/theme-one-dark": ">=6.0.0",
"@codemirror/view": ">=6.0.0",
"codemirror": ">=6.0.0",
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/strapi-import-export/node_modules/intl-messageformat": {
"version": "10.7.7",
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.7.tgz",
"integrity": "sha512-F134jIoeYMro/3I0h08D0Yt4N9o9pjddU/4IIxMMURqbAtI2wu70X8hvG1V48W49zXHXv3RKSF/po+0fDfsGjA==",
"license": "BSD-3-Clause",
"dependencies": {
"@formatjs/ecma402-abstract": "2.2.4",
"@formatjs/fast-memoize": "2.2.3",
"@formatjs/icu-messageformat-parser": "2.9.4",
"tslib": "2"
}
},
"node_modules/strapi-import-export/node_modules/react-intl": {
"version": "6.8.9",
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.8.9.tgz",
"integrity": "sha512-TUfj5E7lyUDvz/GtovC9OMh441kBr08rtIbgh3p0R8iF3hVY+V2W9Am7rb8BpJ/29BH1utJOqOOhmvEVh3GfZg==",
"license": "BSD-3-Clause",
"dependencies": {
"@formatjs/ecma402-abstract": "2.2.4",
"@formatjs/icu-messageformat-parser": "2.9.4",
"@formatjs/intl": "2.10.15",
"@formatjs/intl-displaynames": "6.8.5",
"@formatjs/intl-listformat": "7.7.5",
"@types/hoist-non-react-statics": "3",
"@types/react": "16 || 17 || 18",
"hoist-non-react-statics": "3",
"intl-messageformat": "10.7.7",
"tslib": "2"
},
"peerDependencies": {
"react": "^16.6.0 || 17 || 18",
"typescript": "^4.7 || 5"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/stream-chain": {
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz",
@ -17808,10 +18534,9 @@
}
},
"node_modules/typescript": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
"integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
"dev": true,
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
@ -17898,6 +18623,19 @@
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"license": "MIT"
},
"node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
"integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/unique-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
@ -19351,6 +20089,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/yoctocolors": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
"integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/yoctocolors-cjs": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",

View File

@ -21,6 +21,7 @@
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-router-dom": "^6.0.0",
"strapi-import-export": "^0.0.1",
"styled-components": "^6.0.0"
},
"devDependencies": {

View File

@ -17,6 +17,16 @@
},
"description": {
"type": "text"
},
"image": {
"allowedTypes": [
"images",
"files",
"videos",
"audios"
],
"type": "media",
"multiple": false
}
}
}

View File

@ -0,0 +1,33 @@
{
"kind": "collectionType",
"collectionName": "pages",
"info": {
"singularName": "page",
"pluralName": "pages",
"displayName": "Page",
"description": ""
},
"options": {
"draftAndPublish": true
},
"pluginOptions": {},
"attributes": {
"name": {
"type": "string"
},
"title": {
"type": "string"
},
"template": {
"type": "enumeration",
"enum": [
"homepage"
]
},
"parent": {
"type": "relation",
"relation": "oneToOne",
"target": "api::page.page"
}
}
}

View File

@ -0,0 +1,7 @@
/**
* page controller
*/
import { factories } from '@strapi/strapi'
export default factories.createCoreController('api::page.page');

View File

@ -0,0 +1,7 @@
/**
* page router
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreRouter('api::page.page');

View File

@ -0,0 +1,7 @@
/**
* page service
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreService('api::page.page');

View File

@ -485,6 +485,7 @@ export interface ApiCarCar extends Struct.CollectionTypeSchema {
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
description: Schema.Attribute.Text;
image: Schema.Attribute.Media<'images' | 'files' | 'videos' | 'audios'>;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<'oneToMany', 'api::car.car'> &
Schema.Attribute.Private;
@ -560,6 +561,35 @@ export interface ApiGlobalGlobal extends Struct.SingleTypeSchema {
};
}
export interface ApiPagePage extends Struct.CollectionTypeSchema {
collectionName: 'pages';
info: {
description: '';
displayName: 'Page';
pluralName: 'pages';
singularName: 'page';
};
options: {
draftAndPublish: true;
};
attributes: {
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<'oneToMany', 'api::page.page'> &
Schema.Attribute.Private;
name: Schema.Attribute.String;
parent: Schema.Attribute.Relation<'oneToOne', 'api::page.page'>;
publishedAt: Schema.Attribute.DateTime;
template: Schema.Attribute.Enumeration<['homepage']>;
title: Schema.Attribute.String;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
};
}
export interface ApiPersonPerson extends Struct.SingleTypeSchema {
collectionName: 'people';
info: {
@ -1105,6 +1135,7 @@ declare module '@strapi/strapi' {
'api::car.car': ApiCarCar;
'api::category.category': ApiCategoryCategory;
'api::global.global': ApiGlobalGlobal;
'api::page.page': ApiPagePage;
'api::person.person': ApiPersonPerson;
'plugin::content-releases.release': PluginContentReleasesRelease;
'plugin::content-releases.release-action': PluginContentReleasesReleaseAction;

View File

@ -3,6 +3,33 @@ import type { NextConfig } from "next";
const nextConfig: NextConfig = {
/* config options here */
output: "standalone",
sassOptions: {
silenceDeprecations: [
'abs-percent',
'bogus-combinators',
'call-string',
'color-4-api',
'color-functions',
'color-module-compat',
'css-function-mixin',
'duplicate-var-flags',
'elseif',
'feature-exists',
'fs-importer-cwd',
'function-units',
'global-builtin',
'import',
'legacy-js-api',
'mixed-decls',
'moz-document',
'new-global',
'null-alpha',
'relative-canonical',
'slash-div',
'strict-unary',
// 'user-authored',
]
}
};
export default nextConfig;

View File

@ -8,6 +8,10 @@
"name": "yoga-app",
"version": "0.1.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^6.7.2",
"@types/aos": "^3.0.7",
"aos": "^2.3.4",
"bootstrap": "^4.6.2",
"next": "15.1.3",
"react": "^19.0.0",
"react-dom": "^19.0.0"
@ -19,6 +23,7 @@
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "15.1.3",
"sass": "^1.83.0",
"typescript": "^5"
}
},
@ -149,6 +154,15 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@fortawesome/fontawesome-free": {
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz",
"integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==",
"license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)",
"engines": {
"node": ">=6"
}
},
"node_modules/@humanfs/core": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@ -730,6 +744,330 @@
"node": ">=12.4.0"
}
},
"node_modules/@parcel/watcher": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz",
"integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"dependencies": {
"detect-libc": "^1.0.3",
"is-glob": "^4.0.3",
"micromatch": "^4.0.5",
"node-addon-api": "^7.0.0"
},
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
"@parcel/watcher-android-arm64": "2.5.0",
"@parcel/watcher-darwin-arm64": "2.5.0",
"@parcel/watcher-darwin-x64": "2.5.0",
"@parcel/watcher-freebsd-x64": "2.5.0",
"@parcel/watcher-linux-arm-glibc": "2.5.0",
"@parcel/watcher-linux-arm-musl": "2.5.0",
"@parcel/watcher-linux-arm64-glibc": "2.5.0",
"@parcel/watcher-linux-arm64-musl": "2.5.0",
"@parcel/watcher-linux-x64-glibc": "2.5.0",
"@parcel/watcher-linux-x64-musl": "2.5.0",
"@parcel/watcher-win32-arm64": "2.5.0",
"@parcel/watcher-win32-ia32": "2.5.0",
"@parcel/watcher-win32-x64": "2.5.0"
}
},
"node_modules/@parcel/watcher-android-arm64": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz",
"integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-darwin-arm64": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz",
"integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-darwin-x64": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz",
"integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-freebsd-x64": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz",
"integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm-glibc": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz",
"integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm-musl": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz",
"integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm64-glibc": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz",
"integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm64-musl": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz",
"integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-x64-glibc": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz",
"integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-x64-musl": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz",
"integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-arm64": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz",
"integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-ia32": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz",
"integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-win32-x64": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz",
"integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
"dev": true,
"license": "Apache-2.0",
"optional": true,
"bin": {
"detect-libc": "bin/detect-libc.js"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/@rtsao/scc": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
@ -755,6 +1093,12 @@
"tslib": "^2.8.0"
}
},
"node_modules/@types/aos": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/@types/aos/-/aos-3.0.7.tgz",
"integrity": "sha512-sEhyFqvKauUJZDbvAB3Pggynrq6g+2PS4XB3tmUr+mDL1gfDJnwslUC4QQ7/l8UD+LWpr3RxZVR/rHoZrLqZVg==",
"license": "MIT"
},
"node_modules/@types/estree": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
@ -1076,6 +1420,17 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/aos": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/aos/-/aos-2.3.4.tgz",
"integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==",
"license": "MIT",
"dependencies": {
"classlist-polyfill": "^1.0.3",
"lodash.debounce": "^4.0.6",
"lodash.throttle": "^4.0.1"
}
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@ -1285,6 +1640,26 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/bootstrap": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
"integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"license": "MIT",
"peerDependencies": {
"jquery": "1.9.1 - 3",
"popper.js": "^1.16.1"
}
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@ -1409,6 +1784,28 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/chokidar": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"readdirp": "^4.0.1"
},
"engines": {
"node": ">= 14.16.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/classlist-polyfill": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz",
"integrity": "sha512-GzIjNdcEtH4ieA2S8NmrSxv7DfEV5fmixQeyTmqmRmRJPGpRBaSnA2a0VrCjyT8iW8JjEdMbKzDotAJf+ajgaQ==",
"license": "Unlicense"
},
"node_modules/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
@ -2627,6 +3024,13 @@
"node": ">= 4"
}
},
"node_modules/immutable": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz",
"integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==",
"devOptional": true,
"license": "MIT"
},
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@ -3057,6 +3461,13 @@
"node": ">= 0.4"
}
},
"node_modules/jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"license": "MIT",
"peer": true
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@ -3175,12 +3586,24 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"license": "MIT"
},
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
"node_modules/lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
"license": "MIT"
},
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@ -3327,6 +3750,14 @@
}
}
},
"node_modules/node-addon-api": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
"dev": true,
"license": "MIT",
"optional": true
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@ -3558,6 +3989,18 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/popper.js": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
"deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/possible-typed-array-names": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
@ -3668,6 +4111,20 @@
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"dev": true
},
"node_modules/readdirp": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
"integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
"devOptional": true,
"license": "MIT",
"engines": {
"node": ">= 14.16.0"
},
"funding": {
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/reflect.getprototypeof": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz",
@ -3831,6 +4288,27 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/sass": {
"version": "1.83.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz",
"integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.0.2",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
"node": ">=14.0.0"
},
"optionalDependencies": {
"@parcel/watcher": "^2.4.1"
}
},
"node_modules/scheduler": {
"version": "0.25.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz",

View File

@ -9,17 +9,22 @@
"lint": "next lint"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^6.7.2",
"@types/aos": "^3.0.7",
"aos": "^2.3.4",
"bootstrap": "^4.6.2",
"next": "15.1.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"next": "15.1.3"
"react-dom": "^19.0.0"
},
"devDependencies": {
"typescript": "^5",
"@eslint/eslintrc": "^3",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "15.1.3",
"@eslint/eslintrc": "^3"
"sass": "^1.83.0",
"typescript": "^5"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,41 @@
{
"name": "App",
"icons": [
{
"src": "\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

View File

@ -0,0 +1 @@
<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Some files were not shown because too many files have changed in this diff Show More