convert about types from component to collection-type
This commit is contained in:
@@ -13,27 +13,28 @@ import SubHeaderComponent from "@/components/subHeader.component";
|
||||
import BootstrapComponent from "@/components/bootstrap.component";
|
||||
import webApi from "@/app/api/web-client/web-api";
|
||||
import aboutUsComponent from "@/components/about.us.component";
|
||||
import pricingComponent from "@/components/pricing.component";
|
||||
|
||||
export default async function About() {
|
||||
const pageData = await webApi.getAboutPage();
|
||||
|
||||
const {header,ourServices, aboutUs} = pageData;
|
||||
const {header,
|
||||
ourServices,
|
||||
aboutUs,
|
||||
contactUs,
|
||||
ourSpecialities,
|
||||
prices
|
||||
} = pageData;
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<SubHeaderComponent header1={header?.header1} header2={header?.header2} description={header?.description}/>
|
||||
<OurServicesComponent title={ourServices?.title!} header={ourServices?.header!} description={ourServices?.description!} />
|
||||
<AboutUsComponent
|
||||
title={aboutUs.title!}
|
||||
header={aboutUs.header!}
|
||||
description={aboutUs.description!}
|
||||
content={aboutUs.content!}
|
||||
buttonText={aboutUs.buttonLabel!}
|
||||
buttonUrl={aboutUs.buttonLink!}
|
||||
/>
|
||||
<OurSpecialitiesComponent />
|
||||
<ContactUsComponent />
|
||||
<PricingComponent />
|
||||
{ aboutUs && <AboutUsComponent data={aboutUs}/>}
|
||||
{ ourSpecialities && <OurSpecialitiesComponent config={ourSpecialities} /> }
|
||||
{ contactUs && <ContactUsComponent contactUs={contactUs}/>}
|
||||
{ prices && <PricingComponent config={prices} /> }
|
||||
<QuotesComponent />
|
||||
<BlogPostsComponent />
|
||||
<SubscribeComponent />
|
||||
|
||||
89
yoga-app/src/app/api/strapi/query/about.json
Normal file
89
yoga-app/src/app/api/strapi/query/about.json
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"populate": {
|
||||
"header": {
|
||||
"fields": ["header1","description"]
|
||||
},
|
||||
"feedbacks": {
|
||||
"fields": ["*"],
|
||||
"populate": {
|
||||
"feedbacks": {
|
||||
"fields": ["*"],
|
||||
"populate": {
|
||||
"customerImage": {
|
||||
"fields": ["name","mime","url"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ourServices": {
|
||||
"fields": ["*"],
|
||||
"populate": {
|
||||
"services": {
|
||||
"fields": ["*"],
|
||||
"populate": {
|
||||
"image": {
|
||||
"fields": ["name","mime","url"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"aboutUs": {
|
||||
"fields": ["*"],
|
||||
"populate": {
|
||||
"image": {
|
||||
"fields": ["name","mime","url"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactUs": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"prices": {
|
||||
"fields": ["*"],
|
||||
"populate": {
|
||||
"prices": {
|
||||
"fields": ["*"],
|
||||
"populate": {
|
||||
"icon": {
|
||||
"fields": ["name","mime","url"]
|
||||
},
|
||||
"image": {
|
||||
"fields": ["name","mime","url"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ourSpecialities": {
|
||||
"fields": ["*"] ,
|
||||
"populate": {
|
||||
"left1": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"left2": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"left3": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"left4": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"right1": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"right2": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"right3": {
|
||||
"fields": ["*"]
|
||||
},
|
||||
"right4": {
|
||||
"fields": ["*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,22 @@
|
||||
import {About_Plain} from "@/types/generated-strapi-interfaces/api/about";
|
||||
import strapiClient from "@/app/api/strapi/strapi-client";
|
||||
import {Payload} from "@/types/generated-strapi-interfaces/common/Payload";
|
||||
import {StrapiQuery} from "@/app/api/strapi/strapi-query";
|
||||
import qs from "qs";
|
||||
import aboutQuery from "@/app/api/strapi/query/about.json";
|
||||
|
||||
|
||||
class StrapiApi{
|
||||
constructor( ) {
|
||||
}
|
||||
|
||||
|
||||
public getImageUrl(imagePath: string){
|
||||
return strapiClient.getImageUrl(imagePath);
|
||||
}
|
||||
public async getAboutPage(): Promise<About_Plain>{
|
||||
const query = qs.stringify(aboutQuery,{ arrayFormat: 'indices' , encode: false})
|
||||
const payload = await strapiClient.httpGetJson<About_Plain>(
|
||||
StrapiQuery.aboutUrl
|
||||
"/api/about?"+ query
|
||||
|
||||
);
|
||||
return payload?.data;
|
||||
|
||||
@@ -7,6 +7,9 @@ class StrapiClient{
|
||||
|
||||
constructor(private strapiUrl: string = "http://localhost:1337") {
|
||||
}
|
||||
public getImageUrl(imagePath: string){
|
||||
return this.strapiUrl + imagePath;
|
||||
}
|
||||
public async httpGet(path: string){
|
||||
return await httpClient.httpGet(this.strapiUrl + path);
|
||||
}
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
import YogaImageComponent from "@/components/yoga.image.component";
|
||||
import {
|
||||
YogaAboutUsComponent,
|
||||
YogaAboutUsComponent_Plain
|
||||
} from "@/types/generated-strapi-interfaces/api/yoga-about-us-component";
|
||||
import {StrapiFile} from "@/types/types";
|
||||
import strapiApi from "@/app/api/strapi/strapi-api";
|
||||
|
||||
export interface Props{
|
||||
title: string;
|
||||
header: string;
|
||||
description: string;
|
||||
content: string;
|
||||
buttonText: string,
|
||||
buttonUrl: string
|
||||
data: YogaAboutUsComponent_Plain
|
||||
}
|
||||
const AboutUsComponent = ({title,header,description,content,buttonText,buttonUrl}: Props) =>{
|
||||
const AboutUsComponent = ( {data: {title,header,description,content,buttonText,buttonLink, image}}: Props) =>{
|
||||
const fileImage = image as StrapiFile;
|
||||
return (
|
||||
<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"><YogaImageComponent src="/assets/images/aboutus_image.png" alt="" className="img-fluid"/></figure>
|
||||
<figure className="mb-0"><YogaImageComponent src={strapiApi.getImageUrl(fileImage.url)} alt="" className="img-fluid"/></figure>
|
||||
</div>
|
||||
<figure className="aboutus_top_shape left_shape mb-0">
|
||||
<YogaImageComponent src="/assets/images/aboutus_top_shape.png" alt="" className="img-fluid"/>
|
||||
@@ -34,7 +36,7 @@ const AboutUsComponent = ({title,header,description,content,buttonText,buttonUrl
|
||||
<figure className="mb-0 purple_line"><YogaImageComponent src="/assets/images/aboutus_line.png" alt="" className="img-fluid" /></figure>
|
||||
</div>
|
||||
<div className="btn_wrapper">
|
||||
<a href={buttonUrl} className="text-decoration-none get_started_btn">{buttonText}</a>
|
||||
<a href={buttonLink} className="text-decoration-none get_started_btn">{buttonText}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,39 +1,42 @@
|
||||
import YogaImageComponent from "@/components/yoga.image.component";
|
||||
import {YogaContactUs_Plain} from "@/types/generated-strapi-interfaces/api/yoga-contact-us";
|
||||
|
||||
|
||||
const ContactUsComponent = () => {
|
||||
export interface Props{
|
||||
contactUs: YogaContactUs_Plain
|
||||
}
|
||||
const ContactUsComponent = ( { contactUs :{ header,firstName,lastName,phone,title,message,email,buttonText }}: Props) => {
|
||||
return (
|
||||
<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>
|
||||
<h5>{title}</h5>
|
||||
<h2>{header}</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"/>
|
||||
placeholder={firstName}/>
|
||||
</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"/>
|
||||
className="form-control form_style" placeholder={lastName}/>
|
||||
</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"/>
|
||||
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"/>
|
||||
className="form-control form_style" placeholder={email}/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -41,12 +44,12 @@ const ContactUsComponent = () => {
|
||||
<div className="col-lg-12">
|
||||
<div className=" form-group mb-0">
|
||||
<textarea rows={3} name="comment" id="msg" className="form-control"
|
||||
placeholder="Message"></textarea>
|
||||
placeholder={message}></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="btn_wrapper">
|
||||
<button type="submit" name="get_started" id="started">Get Started</button>
|
||||
<button type="submit" name="get_started" id="started">{buttonText}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
import YogaImageComponent from "@/components/yoga.image.component";
|
||||
import {
|
||||
OurSpecialitiesComponent_Plain
|
||||
} from "@/types/generated-strapi-interfaces/components/yoga-site/OurSpecialitiesComponent";
|
||||
import OurSpecialitiesItemComponent from "@/components/our.specialities.item.component";
|
||||
import {YogaSpecialitiesComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-specialities-component";
|
||||
|
||||
export interface Props{
|
||||
config: YogaSpecialitiesComponent_Plain
|
||||
}
|
||||
|
||||
const OurSpecialitiesComponent = () => {
|
||||
const OurSpecialitiesComponent = ({ config: { title,header,description,
|
||||
left1,
|
||||
left2,
|
||||
left3,
|
||||
left4,
|
||||
right1,
|
||||
right2,
|
||||
right3,
|
||||
right4
|
||||
} }: Props) => {
|
||||
return (
|
||||
|
||||
<section className="our_specialties_section">
|
||||
@@ -9,31 +26,19 @@ const OurSpecialitiesComponent = () => {
|
||||
<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>
|
||||
<h5>{title}</h5>
|
||||
<h2>{header}</h2>
|
||||
<p>{description}</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>
|
||||
{ left1 && <OurSpecialitiesItemComponent config={left1} order={1} /> }
|
||||
{ left2 && <OurSpecialitiesItemComponent config={left2} order={2} /> }
|
||||
{ left3 && <OurSpecialitiesItemComponent config={left3} order={3} /> }
|
||||
{ left4 && <OurSpecialitiesItemComponent config={left4} order={4} /> }
|
||||
<figure className="specialties_left_line mb-0">
|
||||
<YogaImageComponent src="/assets/images/specialties_left_line.png" alt="" className="img-fluid" />
|
||||
</figure>
|
||||
@@ -46,22 +51,10 @@ const OurSpecialitiesComponent = () => {
|
||||
</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>
|
||||
{ right1 && <OurSpecialitiesItemComponent config={right1} position={"right"} order={5} /> }
|
||||
{ right2 && <OurSpecialitiesItemComponent config={right2} position={"right"} order={6} /> }
|
||||
{ right3 && <OurSpecialitiesItemComponent config={right3} position={"right"} order={7} /> }
|
||||
{ right4 && <OurSpecialitiesItemComponent config={right4} position={"right"} order={8} /> }
|
||||
<figure className="specialties_right_line mb-0">
|
||||
<YogaImageComponent src="/assets/images/specialties_right_line.png" alt="" className="img-fluid" />
|
||||
</figure>
|
||||
|
||||
32
yoga-app/src/components/our.specialities.item.component.tsx
Normal file
32
yoga-app/src/components/our.specialities.item.component.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
import YogaImageComponent from "@/components/yoga.image.component";
|
||||
import {
|
||||
OurSpecialitiesComponent_Plain
|
||||
} from "@/types/generated-strapi-interfaces/components/yoga-site/OurSpecialitiesComponent";
|
||||
import {TitleDescription_Plain} from "@/types/generated-strapi-interfaces/components/shared/TitleDescription";
|
||||
import clsx from "clsx";
|
||||
|
||||
export interface Props{
|
||||
config: TitleDescription_Plain,
|
||||
position?: 'left' | 'right';
|
||||
order: number;
|
||||
}
|
||||
|
||||
const OurSpecialitiesItemComponent = ({ position = "left",order, config: { title,description,
|
||||
|
||||
} }: Props) => {
|
||||
const orderClass = "s"+order;
|
||||
return (
|
||||
|
||||
<div className={clsx({
|
||||
"specialties_content": true,
|
||||
"specialties_content2": position == 'right',
|
||||
[orderClass]: true
|
||||
|
||||
})}>
|
||||
<p className="specialties_name">{title}</p>
|
||||
<p className="specialties_paragraph">{description}</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default OurSpecialitiesItemComponent;
|
||||
50
yoga-app/src/components/price.item.component.tsx
Normal file
50
yoga-app/src/components/price.item.component.tsx
Normal file
@@ -0,0 +1,50 @@
|
||||
import {YogaPrice_Plain} from "@/types/generated-strapi-interfaces/api/yoga-price";
|
||||
import YogaImageComponent from "@/components/yoga.image.component";
|
||||
import {StrapiFile} from "@/types/types";
|
||||
import strapiApi from "@/app/api/strapi/strapi-api";
|
||||
|
||||
export interface Props{
|
||||
config: YogaPrice_Plain
|
||||
}
|
||||
|
||||
export function PriceItemComponent({config: {header,option1,option2,price,icon, image,buttonText}} : Props){
|
||||
// there are some issues with the strapi generated types
|
||||
const iconFile: StrapiFile = icon as StrapiFile;
|
||||
const imageFile: StrapiFile = image as StrapiFile;
|
||||
console.info("image:",strapiApi.getImageUrl(imageFile.url));
|
||||
return (
|
||||
<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">
|
||||
<YogaImageComponent src={strapiApi.getImageUrl(imageFile.url)} alt="" className="img-fluid"/>
|
||||
</figure>
|
||||
<div className="pricing_plans_box_image_content">
|
||||
<figure className="mb-0">
|
||||
<YogaImageComponent src={strapiApi.getImageUrl(iconFile.url)} alt=""
|
||||
className="img-fluid"/>
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
<div className="pricing_plans_box_lower_portion">
|
||||
<h3>{header}</h3>
|
||||
<ul className="list-unstyled">
|
||||
<li>
|
||||
<i className="fa-solid fa-check" aria-hidden="true"></i>{option1}
|
||||
</li>
|
||||
<li>
|
||||
<i className="fa-solid fa-check" aria-hidden="true"></i>{option2}
|
||||
</li>
|
||||
</ul>
|
||||
<div className="pricing_plans_span_wrapper">
|
||||
<span className="price">{price} FT</span>
|
||||
<span className="per_month">/per month</span>
|
||||
</div>
|
||||
<div className="btn_wrapper">
|
||||
<a className="enroll_now_btn text-decoration-none" href="/pricing.html">{buttonText}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,121 +1,129 @@
|
||||
import YogaImageComponent from "@/components/yoga.image.component";
|
||||
import {YogaPriceComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-price-component";
|
||||
import {PriceItemComponent} from "@/components/price.item.component";
|
||||
|
||||
|
||||
const PricingComponent = () => {
|
||||
export interface Props{
|
||||
config: YogaPriceComponent_Plain
|
||||
}
|
||||
|
||||
const PricingComponent = ({config: { title,header,description,prices}}: Props) => {
|
||||
return (
|
||||
<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>
|
||||
<h5>{title}</h5>
|
||||
<h2>{header}</h2>
|
||||
<p>{description}</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">
|
||||
<YogaImageComponent src="/assets/images/pricing_plan_1.png" alt="" className="img-fluid"/>
|
||||
</figure>
|
||||
<div className="pricing_plans_box_image_content">
|
||||
<figure className="mb-0">
|
||||
<YogaImageComponent 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">
|
||||
<YogaImageComponent src="/assets/images/pricing_plan_2.png" alt="" className="img-fluid"/>
|
||||
</figure>
|
||||
<div className="pricing_plans_box_image_content">
|
||||
<figure className="mb-0">
|
||||
<YogaImageComponent 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">
|
||||
<YogaImageComponent src="/assets/images/pricing_plan_3.png" alt="" className="img-fluid"/>
|
||||
</figure>
|
||||
<div className="pricing_plans_box_image_content">
|
||||
<figure className="mb-0">
|
||||
<YogaImageComponent 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>
|
||||
{
|
||||
prices.map(value => <PriceItemComponent key={value.id} config={value} />)
|
||||
}
|
||||
{/* <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">*/}
|
||||
{/* <YogaImageComponent src="/assets/images/pricing_plan_1.png" alt="" className="img-fluid"/>*/}
|
||||
{/* </figure>*/}
|
||||
{/* <div className="pricing_plans_box_image_content">*/}
|
||||
{/* <figure className="mb-0">*/}
|
||||
{/* <YogaImageComponent 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">*/}
|
||||
{/* <YogaImageComponent src="/assets/images/pricing_plan_2.png" alt="" className="img-fluid"/>*/}
|
||||
{/* </figure>*/}
|
||||
{/* <div className="pricing_plans_box_image_content">*/}
|
||||
{/* <figure className="mb-0">*/}
|
||||
{/* <YogaImageComponent 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">*/}
|
||||
{/* <YogaImageComponent src="/assets/images/pricing_plan_3.png" alt="" className="img-fluid"/>*/}
|
||||
{/* </figure>*/}
|
||||
{/* <div className="pricing_plans_box_image_content">*/}
|
||||
{/* <figure className="mb-0">*/}
|
||||
{/* <YogaImageComponent 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>
|
||||
|
||||
@@ -2,24 +2,29 @@
|
||||
|
||||
import { HeaderB } from '../components/yoga-site/HeaderB';
|
||||
import { OurServicesComponent } from '../components/yoga-site/OurServicesComponent';
|
||||
import { AboutUs } from '../components/yoga-site/AboutUs';
|
||||
import { OurSpecialitiesComponent } from '../components/yoga-site/OurSpecialitiesComponent';
|
||||
import { YogaContactUs } from './yoga-contact-us';
|
||||
import { YogaPriceComponent } from './yoga-price-component';
|
||||
import { YogaSpecialitiesComponent } from './yoga-specialities-component';
|
||||
import { YogaAboutUsComponent } from './yoga-about-us-component';
|
||||
import { HeaderB_Plain } from '../components/yoga-site/HeaderB';
|
||||
import { OurServicesComponent_Plain } from '../components/yoga-site/OurServicesComponent';
|
||||
import { AboutUs_Plain } from '../components/yoga-site/AboutUs';
|
||||
import { OurSpecialitiesComponent_Plain } from '../components/yoga-site/OurSpecialitiesComponent';
|
||||
import { YogaContactUs_Plain } from './yoga-contact-us';
|
||||
import { YogaPriceComponent_Plain } from './yoga-price-component';
|
||||
import { YogaSpecialitiesComponent_Plain } from './yoga-specialities-component';
|
||||
import { YogaAboutUsComponent_Plain } from './yoga-about-us-component';
|
||||
import { HeaderB_NoRelations } from '../components/yoga-site/HeaderB';
|
||||
import { OurServicesComponent_NoRelations } from '../components/yoga-site/OurServicesComponent';
|
||||
import { AboutUs_NoRelations } from '../components/yoga-site/AboutUs';
|
||||
import { OurSpecialitiesComponent_NoRelations } from '../components/yoga-site/OurSpecialitiesComponent';
|
||||
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||
|
||||
export interface About {
|
||||
id: number;
|
||||
attributes: {
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: HeaderB;
|
||||
ourServices: OurServicesComponent;
|
||||
aboutUs: AboutUs;
|
||||
ourSpecialities?: OurSpecialitiesComponent;
|
||||
contactUs?: { data: YogaContactUs };
|
||||
prices?: { data: YogaPriceComponent };
|
||||
ourSpecialities?: { data: YogaSpecialitiesComponent };
|
||||
aboutUs?: { data: YogaAboutUsComponent };
|
||||
locale: string;
|
||||
localizations?: { data: About[] };
|
||||
};
|
||||
@@ -28,8 +33,10 @@ export interface About_Plain {
|
||||
id: number;
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: HeaderB_Plain;
|
||||
ourServices: OurServicesComponent_Plain;
|
||||
aboutUs: AboutUs_Plain;
|
||||
ourSpecialities?: OurSpecialitiesComponent_Plain;
|
||||
contactUs?: YogaContactUs_Plain;
|
||||
prices?: YogaPriceComponent_Plain;
|
||||
ourSpecialities?: YogaSpecialitiesComponent_Plain;
|
||||
aboutUs?: YogaAboutUsComponent_Plain;
|
||||
locale: string;
|
||||
localizations?: About_Plain[];
|
||||
}
|
||||
@@ -38,8 +45,10 @@ export interface About_NoRelations {
|
||||
id: number;
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: HeaderB_NoRelations;
|
||||
ourServices: OurServicesComponent_NoRelations;
|
||||
aboutUs: AboutUs_NoRelations;
|
||||
ourSpecialities?: OurSpecialitiesComponent_NoRelations;
|
||||
contactUs?: number;
|
||||
prices?: number;
|
||||
ourSpecialities?: number;
|
||||
aboutUs?: number;
|
||||
locale: string;
|
||||
localizations?: About[];
|
||||
}
|
||||
@@ -48,8 +57,10 @@ export interface About_AdminPanelLifeCycle {
|
||||
id: number;
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: HeaderB_Plain;
|
||||
ourServices: OurServicesComponent_Plain;
|
||||
aboutUs: AboutUs_Plain;
|
||||
ourSpecialities?: OurSpecialitiesComponent_Plain;
|
||||
contactUs?: AdminPanelRelationPropertyModification<YogaContactUs_Plain>;
|
||||
prices?: AdminPanelRelationPropertyModification<YogaPriceComponent_Plain>;
|
||||
ourSpecialities?: AdminPanelRelationPropertyModification<YogaSpecialitiesComponent_Plain>;
|
||||
aboutUs?: AdminPanelRelationPropertyModification<YogaAboutUsComponent_Plain>;
|
||||
locale: string;
|
||||
localizations?: About[];
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
// Interface automatically generated by schemas-to-ts
|
||||
|
||||
import { Media } from '../components/shared/Media';
|
||||
import { Quote } from '../components/shared/Quote';
|
||||
import { Media_Plain } from '../components/shared/Media';
|
||||
import { Quote_Plain } from '../components/shared/Quote';
|
||||
import { Quote_NoRelations } from '../components/shared/Quote';
|
||||
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||
|
||||
export interface Car {
|
||||
id: number;
|
||||
attributes: {
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; name?: string;
|
||||
description?: string;
|
||||
image?: { data: Media };
|
||||
myquote: Quote[];
|
||||
};
|
||||
}
|
||||
export interface Car_Plain {
|
||||
id: number;
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; name?: string;
|
||||
description?: string;
|
||||
image?: Media_Plain;
|
||||
myquote: Quote_Plain[];
|
||||
}
|
||||
|
||||
export interface Car_NoRelations {
|
||||
id: number;
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; name?: string;
|
||||
description?: string;
|
||||
image?: number;
|
||||
myquote: Quote_NoRelations[];
|
||||
}
|
||||
|
||||
export interface Car_AdminPanelLifeCycle {
|
||||
id: number;
|
||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; name?: string;
|
||||
description?: string;
|
||||
image?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||
myquote: Quote_Plain[];
|
||||
}
|
||||
7
yoga-app/src/types/types.ts
Normal file
7
yoga-app/src/types/types.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export interface StrapiFile{
|
||||
"id": string,
|
||||
"documentId": string,
|
||||
"name": string,
|
||||
"mime": string,
|
||||
"url": string
|
||||
}
|
||||
Reference in New Issue
Block a user