footer, feedback, subscribe

This commit is contained in:
Schneider Roland 2025-01-21 23:19:02 +01:00
parent a068aeb375
commit 86dda89db9
43 changed files with 841 additions and 162 deletions

View File

@ -16,3 +16,9 @@ Accept: application/json
GET {{domain}}/api/about?populate[header][fields][0]=header1&populate[header][fields][1]=description&populate[blogs][fields][0]=*&populate[blogs][populate][posts][fields][0]=name&populate[blogs][populate][posts][fields][1]=id&populate[blogs][populate][posts][fields][2]=header&populate[blogs][populate][posts][populate][tags][fields][0]=*&populate[blogs][populate][posts][populate][teaserImage][fields][0]=name&populate[blogs][populate][posts][populate][teaserImage][fields][1]=mime&populate[blogs][populate][posts][populate][teaserImage][fields][2]=url&populate[feedbacks][fields][0]=*&populate[feedbacks][populate][feedbacks][fields][0]=*&populate[feedbacks][populate][feedbacks][populate][customerImage][fields][0]=name&populate[feedbacks][populate][feedbacks][populate][customerImage][fields][1]=mime&populate[feedbacks][populate][feedbacks][populate][customerImage][fields][2]=url&populate[ourServices][fields][0]=*&populate[ourServices][populate][services][fields][0]=*&populate[ourServices][populate][services][populate][image][fields][0]=name&populate[ourServices][populate][services][populate][image][fields][1]=mime&populate[ourServices][populate][services][populate][image][fields][2]=url&populate[aboutUs][fields][0]=*&populate[aboutUs][populate][image][fields][0]=name&populate[aboutUs][populate][image][fields][1]=mime&populate[aboutUs][populate][image][fields][2]=url&populate[contactUs][fields][0]=*&populate[prices][fields][0]=*&populate[prices][populate][prices][fields][0]=*&populate[prices][populate][prices][populate][icon][fields][0]=name&populate[prices][populate][prices][populate][icon][fields][1]=mime&populate[prices][populate][prices][populate][icon][fields][2]=url&populate[prices][populate][prices][populate][image][fields][0]=name&populate[prices][populate][prices][populate][image][fields][1]=mime&populate[prices][populate][prices][populate][image][fields][2]=url&populate[ourSpecialities][fields][0]=*&populate[ourSpecialities][populate][left1][fields][0]=*&populate[ourSpecialities][populate][left2][fields][0]=*&populate[ourSpecialities][populate][left3][fields][0]=*&populate[ourSpecialities][populate][left4][fields][0]=*&populate[ourSpecialities][populate][right1][fields][0]=*&populate[ourSpecialities][populate][right2][fields][0]=*&populate[ourSpecialities][populate][right3][fields][0]=*&populate[ourSpecialities][populate][right4][fields][0]=* GET {{domain}}/api/about?populate[header][fields][0]=header1&populate[header][fields][1]=description&populate[blogs][fields][0]=*&populate[blogs][populate][posts][fields][0]=name&populate[blogs][populate][posts][fields][1]=id&populate[blogs][populate][posts][fields][2]=header&populate[blogs][populate][posts][populate][tags][fields][0]=*&populate[blogs][populate][posts][populate][teaserImage][fields][0]=name&populate[blogs][populate][posts][populate][teaserImage][fields][1]=mime&populate[blogs][populate][posts][populate][teaserImage][fields][2]=url&populate[feedbacks][fields][0]=*&populate[feedbacks][populate][feedbacks][fields][0]=*&populate[feedbacks][populate][feedbacks][populate][customerImage][fields][0]=name&populate[feedbacks][populate][feedbacks][populate][customerImage][fields][1]=mime&populate[feedbacks][populate][feedbacks][populate][customerImage][fields][2]=url&populate[ourServices][fields][0]=*&populate[ourServices][populate][services][fields][0]=*&populate[ourServices][populate][services][populate][image][fields][0]=name&populate[ourServices][populate][services][populate][image][fields][1]=mime&populate[ourServices][populate][services][populate][image][fields][2]=url&populate[aboutUs][fields][0]=*&populate[aboutUs][populate][image][fields][0]=name&populate[aboutUs][populate][image][fields][1]=mime&populate[aboutUs][populate][image][fields][2]=url&populate[contactUs][fields][0]=*&populate[prices][fields][0]=*&populate[prices][populate][prices][fields][0]=*&populate[prices][populate][prices][populate][icon][fields][0]=name&populate[prices][populate][prices][populate][icon][fields][1]=mime&populate[prices][populate][prices][populate][icon][fields][2]=url&populate[prices][populate][prices][populate][image][fields][0]=name&populate[prices][populate][prices][populate][image][fields][1]=mime&populate[prices][populate][prices][populate][image][fields][2]=url&populate[ourSpecialities][fields][0]=*&populate[ourSpecialities][populate][left1][fields][0]=*&populate[ourSpecialities][populate][left2][fields][0]=*&populate[ourSpecialities][populate][left3][fields][0]=*&populate[ourSpecialities][populate][left4][fields][0]=*&populate[ourSpecialities][populate][right1][fields][0]=*&populate[ourSpecialities][populate][right2][fields][0]=*&populate[ourSpecialities][populate][right3][fields][0]=*&populate[ourSpecialities][populate][right4][fields][0]=*
Accept: application/json Accept: application/json
#Authorization: Bearer {{token}} #Authorization: Bearer {{token}}
### GET request with a header
GET {{domain}}/api/yoga-blog-posts/wmhqy1n8japcfpy0of4hauwm
Accept: application/json
#Authorization: Bearer {{token}}

View File

@ -5,15 +5,13 @@ import AboutUsComponent from "@/components/about.us.component";
import OurSpecialitiesComponent from "@/components/our.specialities.component"; import OurSpecialitiesComponent from "@/components/our.specialities.component";
import ContactUsComponent from "@/components/contact.us.component"; import ContactUsComponent from "@/components/contact.us.component";
import PricingComponent from "@/components/pricing.component"; import PricingComponent from "@/components/pricing.component";
import QuotesComponent from "@/components/quotes.component"; import FeedbackComponent from "@/components/feedbackComponent";
import BlogPostsComponent from "@/components/blog.posts.component"; import BlogPostsComponent from "@/components/blog.posts.component";
import FooterComponent from "@/components/footer.component"; import FooterComponent from "@/components/footer.component";
import SubscribeComponent from "@/components/subscribe.component"; import SubscribeComponent from "@/components/subscribe.component";
import SubHeaderComponent from "@/components/subHeader.component"; import SubHeaderComponent from "@/components/subHeader.component";
import BootstrapComponent from "@/components/bootstrap.component"; import BootstrapComponent from "@/components/bootstrap.component";
import webApi from "@/app/api/web-client/web-api"; 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() { export default async function About() {
const pageData = await webApi.getAboutPage(); const pageData = await webApi.getAboutPage();
@ -24,22 +22,25 @@ export default async function About() {
contactUs, contactUs,
ourSpecialities, ourSpecialities,
prices, prices,
blogs blogs,
subscribeNow,
footer,
feedbacks
} = pageData; } = pageData;
return ( return (
<> <>
<SubHeaderComponent header1={header?.header1} header2={header?.header2} description={header?.description}/> { header && <SubHeaderComponent header1={header?.header1} header2={header?.header2} description={header?.description}/> }
<OurServicesComponent title={ourServices?.title!} header={ourServices?.header!} description={ourServices?.description!} /> { ourServices && <OurServicesComponent title={ourServices?.title!} header={ourServices?.header!} description={ourServices?.description!} /> }
{ aboutUs && <AboutUsComponent data={aboutUs}/>} { aboutUs && <AboutUsComponent data={aboutUs}/>}
{ ourSpecialities && <OurSpecialitiesComponent config={ourSpecialities} /> } { ourSpecialities && <OurSpecialitiesComponent config={ourSpecialities} /> }
{ contactUs && <ContactUsComponent contactUs={contactUs}/>} { contactUs && <ContactUsComponent contactUs={contactUs}/>}
{ prices && <PricingComponent config={prices} /> } { prices && <PricingComponent config={prices} /> }
<QuotesComponent /> { feedbacks && <FeedbackComponent config={feedbacks} /> }
{ blogs && <BlogPostsComponent config={blogs} />} { blogs && <BlogPostsComponent config={blogs} />}
<SubscribeComponent /> {subscribeNow && <SubscribeComponent config={subscribeNow} /> }
<FooterComponent /> { footer && <FooterComponent config={footer} />}
<AosComponent /> <AosComponent />
<BootstrapComponent /> <BootstrapComponent />

View File

@ -3,11 +3,34 @@
"header": { "header": {
"fields": ["header1","description"] "fields": ["header1","description"]
}, },
"footer": {
"fields": ["*"],
"populate": {
"links": {
"fields": ["*"]
},
"contactUsEmail": {
"fields": ["*"]
},
"contactUsLocation": {
"fields": ["*"]
},
"contactUsPhoneNumber": {
"fields": ["*"]
}
}
},
"subscribeNow": {
"fields": ["*"]
},
"blogs": { "blogs": {
"fields": ["*"], "fields": ["*"],
"populate": { "populate": {
"button": {
"fields": ["*"]
},
"posts": { "posts": {
"fields": ["name", "id", "header" ], "fields": ["name", "id", "header","documentId" ],
"populate": { "populate": {
"tags": { "tags": {
"fields": ["*" ] "fields": ["*" ]

View File

@ -3,28 +3,36 @@ import strapiClient from "@/app/api/strapi/strapi-client";
import {StrapiQuery} from "@/app/api/strapi/strapi-query"; import {StrapiQuery} from "@/app/api/strapi/strapi-query";
import qs from "qs"; import qs from "qs";
import aboutQuery from "@/app/api/strapi/query/about.json"; import aboutQuery from "@/app/api/strapi/query/about.json";
import {YogaBlogPost_Plain} from "@/types/generated-strapi-interfaces/api/yoga-blog-post";
class StrapiApi{ class StrapiApi{
constructor( ) { constructor( ) {
} }
protected async getJson<T>(path: string, params?: object){
const query = params ? qs.stringify(params,{ arrayFormat: 'indices' , encode: false}) : "";
const payload = await strapiClient.httpGetJson<T>(
path+ query
);
return payload?.data;
}
public getImageUrl(imagePath: string){ public getImageUrl(imagePath: string){
return strapiClient.getImageUrl(imagePath); return strapiClient.getImageUrl(imagePath);
} }
public async getAboutPage(): Promise<About_Plain>{ public async getAboutPage(): Promise<About_Plain>{
const query = qs.stringify(aboutQuery,{ arrayFormat: 'indices' , encode: false}) return this.getJson("/api/about?",aboutQuery);
const payload = await strapiClient.httpGetJson<About_Plain>(
"/api/about?"+ query
);
return payload?.data;
} }
public getHomePage(){ public getHomePage(){
console.info('Get Home Page'); return this.getJson("/api/home?",aboutQuery);
}
public getBlog(blogId: string): Promise<YogaBlogPost_Plain>{
return this.getJson("/api/yoga-blog-posts/"+blogId,undefined);
} }
} }

View File

@ -0,0 +1,16 @@
import strapiApi from "@/app/api/strapi/strapi-api";
import clsx from "clsx";
export default async function BlogComponent({
params,
}: {
params: Promise<{ blogId: string }>
}){
const blogId = (await params).blogId
const blog = await strapiApi.getBlog(blogId);
return (
<div className={clsx("container", "text-primary")}>
<h1 className={clsx("container", "text-primary")}>{blog.header}</h1>
</div>
)
}

View File

@ -0,0 +1,6 @@
export default function BlogListComponent(){
return (
<div>Blog list</div>
)
}

View File

@ -5,7 +5,7 @@ import AboutUsComponent from "@/components/about.us.component";
import OurSpecialitiesComponent from "@/components/our.specialities.component"; import OurSpecialitiesComponent from "@/components/our.specialities.component";
import ContactUsComponent from "@/components/contact.us.component"; import ContactUsComponent from "@/components/contact.us.component";
import PricingComponent from "@/components/pricing.component"; import PricingComponent from "@/components/pricing.component";
import QuotesComponent from "@/components/quotes.component"; import FeedbackComponent from "@/components/feedbackComponent";
import BlogPostsComponent from "@/components/blog.posts.component"; import BlogPostsComponent from "@/components/blog.posts.component";
import FooterComponent from "@/components/footer.component"; import FooterComponent from "@/components/footer.component";
import SubscribeComponent from "@/components/subscribe.component"; import SubscribeComponent from "@/components/subscribe.component";
@ -18,7 +18,7 @@ export default function About() {
<OurSpecialitiesComponent /> <OurSpecialitiesComponent />
<ContactUsComponent /> <ContactUsComponent />
<PricingComponent /> <PricingComponent />
<QuotesComponent /> <FeedbackComponent />
<BlogPostsComponent /> <BlogPostsComponent />
<SubscribeComponent /> <SubscribeComponent />
<FooterComponent /> <FooterComponent />

View File

@ -5,7 +5,7 @@ import AboutUsComponent from "@/components/about.us.component";
import OurSpecialitiesComponent from "@/components/our.specialities.component"; import OurSpecialitiesComponent from "@/components/our.specialities.component";
import ContactUsComponent from "@/components/contact.us.component"; import ContactUsComponent from "@/components/contact.us.component";
import PricingComponent from "@/components/pricing.component"; import PricingComponent from "@/components/pricing.component";
import QuotesComponent from "@/components/quotes.component"; import FeedbackComponent from "@/components/feedbackComponent";
import BlogPostsComponent from "@/components/blog.posts.component"; import BlogPostsComponent from "@/components/blog.posts.component";
import FooterComponent from "@/components/footer.component"; import FooterComponent from "@/components/footer.component";
import SubscribeComponent from "@/components/subscribe.component"; import SubscribeComponent from "@/components/subscribe.component";
@ -22,7 +22,7 @@ export default function Home() {
<OurSpecialitiesComponent /> <OurSpecialitiesComponent />
<ContactUsComponent /> <ContactUsComponent />
<PricingComponent /> <PricingComponent />
<QuotesComponent /> <FeedbackComponent />
<BlogPostsComponent /> <BlogPostsComponent />
<SubscribeComponent /> <SubscribeComponent />
<FooterComponent /> <FooterComponent />

View File

@ -5,7 +5,7 @@ import AboutUsComponent from "@/components/about.us.component";
import OurSpecialitiesComponent from "@/components/our.specialities.component"; import OurSpecialitiesComponent from "@/components/our.specialities.component";
import ContactUsComponent from "@/components/contact.us.component"; import ContactUsComponent from "@/components/contact.us.component";
import PricingComponent from "@/components/pricing.component"; import PricingComponent from "@/components/pricing.component";
import QuotesComponent from "@/components/quotes.component"; import FeedbackComponent from "@/components/feedbackComponent";
import BlogPostsComponent from "@/components/blog.posts.component"; import BlogPostsComponent from "@/components/blog.posts.component";
import FooterComponent from "@/components/footer.component"; import FooterComponent from "@/components/footer.component";
import SubscribeComponent from "@/components/subscribe.component"; import SubscribeComponent from "@/components/subscribe.component";
@ -18,7 +18,7 @@ export default function About() {
<OurSpecialitiesComponent /> <OurSpecialitiesComponent />
<ContactUsComponent /> <ContactUsComponent />
<PricingComponent /> <PricingComponent />
<QuotesComponent /> <FeedbackComponent />
<BlogPostsComponent /> <BlogPostsComponent />
<SubscribeComponent /> <SubscribeComponent />
<FooterComponent /> <FooterComponent />

View File

@ -5,7 +5,7 @@ import AboutUsComponent from "@/components/about.us.component";
import OurSpecialitiesComponent from "@/components/our.specialities.component"; import OurSpecialitiesComponent from "@/components/our.specialities.component";
import ContactUsComponent from "@/components/contact.us.component"; import ContactUsComponent from "@/components/contact.us.component";
import PricingComponent from "@/components/pricing.component"; import PricingComponent from "@/components/pricing.component";
import QuotesComponent from "@/components/quotes.component"; import FeedbackComponent from "@/components/feedbackComponent";
import BlogPostsComponent from "@/components/blog.posts.component"; import BlogPostsComponent from "@/components/blog.posts.component";
import FooterComponent from "@/components/footer.component"; import FooterComponent from "@/components/footer.component";
import SubscribeComponent from "@/components/subscribe.component"; import SubscribeComponent from "@/components/subscribe.component";
@ -18,7 +18,7 @@ export default function About() {
<OurSpecialitiesComponent /> <OurSpecialitiesComponent />
<ContactUsComponent /> <ContactUsComponent />
<PricingComponent /> <PricingComponent />
<QuotesComponent /> <FeedbackComponent />
<BlogPostsComponent /> <BlogPostsComponent />
<SubscribeComponent /> <SubscribeComponent />
<FooterComponent /> <FooterComponent />

View File

@ -1,11 +1,13 @@
import YogaImageComponent from "@/components/yoga.image.component"; import YogaImageComponent from "@/components/yoga.image.component";
import {YogaBlogPostsComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-blog-posts-component"; import {YogaBlogPostsComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-blog-posts-component";
import BlogSinglePostComponent from "@/components/blog.single.post.component";
export interface Props { export interface Props {
config: YogaBlogPostsComponent_Plain config: YogaBlogPostsComponent_Plain
} }
const BlogPostsComponent = ( {config: { title,header,description,posts} }: Props) => { const BlogPostsComponent = ( {config: { title,header,description,posts, button} }: Props) => {
const teaserPosts = posts?.length ? posts.slice(0,2) : [];
return (<section className="blog_posts_section"> return (<section className="blog_posts_section">
<div className="container"> <div className="container">
<div className="row"> <div className="row">
@ -18,37 +20,10 @@ const BlogPostsComponent = ( {config: { title,header,description,posts} }: Props
</div> </div>
</div> </div>
<div className="row" data-aos="fade-up"> <div className="row" data-aos="fade-up">
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12"> {teaserPosts.map( value =><BlogSinglePostComponent post={value} /> )}
<div className="blog_posts_image position-relative">
<figure className="mb-0"><YogaImageComponent 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"><YogaImageComponent 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>
<div className="btn_wrapper"> <div className="btn_wrapper">
<a href="/single-post.html" className="text-decoration-none view_blog">View All Blogs</a> <a href={button?.link} className="text-decoration-none view_blog">{button?.label}</a>
</div> </div>
<figure className="blog_posts_left_shape left_shape mb-0"> <figure className="blog_posts_left_shape left_shape mb-0">
<YogaImageComponent src="/assets/images/blog_posts_left_shape.png" alt="" className="img-fluid"/> <YogaImageComponent src="/assets/images/blog_posts_left_shape.png" alt="" className="img-fluid"/>

View File

@ -0,0 +1,34 @@
import YogaImageComponent from "@/components/yoga.image.component";
import {YogaBlogPostsComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-blog-posts-component";
import {YogaBlogPost_Plain} from "@/types/generated-strapi-interfaces/api/yoga-blog-post";
import {StrapiFile} from "@/types/types";
import strapiApi from "@/app/api/strapi/strapi-api";
export interface Props {
post: YogaBlogPost_Plain & {documentId?: string}
}
const BlogSinglePostComponent = ({post: {header,teaserImage,tags,documentId} }: Props) => {
const teaserFile: StrapiFile = teaserImage as StrapiFile;
const tagText = tags?.length ? tags[0].tag : null;
return (
<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">
<YogaImageComponent src={strapiApi.getImageUrl( teaserFile.url ) } alt=""
className="img-fluid"/>
</figure>
<div className="blog_posts_image_content">
<span>{tagText}</span>
<h4>{header}</h4>
<div className="icon_wrapper">
<a href={"/blog/"+documentId} className="text-decoration-none"><i
className="fa-solid fa-arrow-right" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
);
}
export default BlogSinglePostComponent;

View File

@ -0,0 +1,65 @@
'use client'
import YogaImageComponent from "@/components/yoga.image.component";
import {
YogaCustomerFeedbackComponent_Plain
} from "@/types/generated-strapi-interfaces/api/yoga-customer-feedback-component";
import FeedbackItemComponent from "@/components/feedbackItemComponent";
import {useState} from "react";
export interface Props{
config: YogaCustomerFeedbackComponent_Plain
}
const FeedbackComponent = ({ config: { feedbacks }}: Props) => {
const [index, setIndex] = useState(0);
const move = (val: number) =>{
setIndex(prevState => {
let i = prevState;
i = i + val;
i = Math.min( Math.max(i,0), feedbacks.length )
return i;
})
}
return (
<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">
{feedbacks && feedbacks.map( (feedback,i) => {
return (<FeedbackItemComponent active={index == i} config={feedback} />)
} )}
</div>
<a className="carousel-control-prev" href="#carouselExampleControls" role="button"
data-slide="prev"
onClick={() => move(-1)}
>
<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"
onClick={() => move(1)}
>
<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">
<YogaImageComponent src="/assets/images/testimonial_left_shape.png" alt="" className="img-fluid"/>
</figure>
<figure className="testimonial_right_shape right_shape mb-0">
<YogaImageComponent src="/assets/images/testimonial_right_shape.png" alt="" className="img-fluid"/>
</figure>
</div>
</div>
);
}
export default FeedbackComponent;

View File

@ -0,0 +1,32 @@
import YogaImageComponent from "@/components/yoga.image.component";
import {
YogaCustomerFeedbackComponent_Plain
} from "@/types/generated-strapi-interfaces/api/yoga-customer-feedback-component";
import {YogaCustomerFeedback_Plain} from "@/types/generated-strapi-interfaces/api/yoga-customer-feedback";
import {StrapiFile} from "@/types/types";
import strapiApi from "@/app/api/strapi/strapi-api";
import clsx from "clsx";
export interface Props {
config: YogaCustomerFeedback_Plain,
active: boolean
}
const FeedbackComponent = ({active,config: {customerName, feedback, customerImage, customerDescription}}: Props) => {
const imageFile: StrapiFile = customerImage as StrapiFile;
return (
<div className={clsx("carousel-item ", {"active":active })}>
<div className="testimonial_content">
<i className="fa-solid fa-quote-left"></i>
<p className="testimonial_paragraph">{feedback}</p>
<figure><YogaImageComponent src={strapiApi.getImageUrl(imageFile.url)} alt=""
className="img-fluid"/></figure>
<p className="testimonial_person_name">{customerName}</p>
<span>{customerDescription}</span>
</div>
</div>
);
}
export default FeedbackComponent;

View File

@ -1,8 +1,24 @@
import Link from "next/link"; import Link from "next/link";
import YogaImageComponent from "@/components/yoga.image.component"; import YogaImageComponent from "@/components/yoga.image.component";
import {YogaFooter_Plain} from "@/types/generated-strapi-interfaces/api/yoga-footer";
export interface Props{
config: YogaFooter_Plain
}
const FooterComponent = ({ config: {
aboutUsHeader,
aboutUsContent,
quickLinksHeader,
links,
contactInfoHeader,
contactUsEmail,
contactUsLocation,
contactUsPhoneNumber,
copyRight
} }: Props) => {
const FooterComponent = () => {
return (<section className="footer-section" id="footer_section"> return (<section className="footer-section" id="footer_section">
<div className="container"> <div className="container">
<div className="middle-portion"> <div className="middle-portion">
@ -17,11 +33,10 @@ const FooterComponent = () => {
</div> </div>
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12"> <div className="col-lg-3 col-md-4 col-sm-6 col-xs-12">
<div className="about_col"> <div className="about_col">
<h4>About Us</h4> <h4>{aboutUsHeader}</h4>
<ul className="list-unstyled"> <ul className="list-unstyled">
<li> <li>
<p>Quisuam est rui dolorem ipsum quia dolor sit amet, consectetur adipisci velit <p>{aboutUsContent}</p>
sea...</p>
</li> </li>
<li className="icons"><a href="#"><i className="fa-brands fa-facebook-f" <li className="icons"><a href="#"><i className="fa-brands fa-facebook-f"
aria-hidden="true"></i></a></li> aria-hidden="true"></i></a></li>
@ -34,42 +49,33 @@ const FooterComponent = () => {
</div> </div>
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-md-block d-none"> <div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-md-block d-none">
<div className="links_col"> <div className="links_col">
<h4>Quick Links</h4> <h4>{quickLinksHeader}</h4>
<ul className="list-unstyled"> {links && <ul className="list-unstyled">
<li> { links.map(link => (
<Link href="/index.html">Home</Link> <li>
</li> <Link href={link.linkHref!}>{link.linkLabel}</Link>
<li> </li>
<Link href="/about.html">About Us</Link> ))}
</li>
<li>
<Link href="/services.html">Services</Link>
</li>
<li>
<Link href="/team.html">Team</Link>
</li>
<li>
<Link href="/contact.html">Contact Us</Link>
</li>
</ul> </ul>
}
</div> </div>
</div> </div>
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-sm-block d-none"> <div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-sm-block d-none">
<div className="contact_col"> <div className="contact_col">
<h4>Contact Info</h4> <h4>{contactInfoHeader}</h4>
<ul className="list-unstyled"> <ul className="list-unstyled">
<li className="contact_icons"> { contactUsPhoneNumber && <li className="contact_icons">
<i className="fa-solid fa-phone"></i> <i className="fa-solid fa-phone"></i>
<a href="tel:+61383766284" className="text-decoration-none">+61 3 8376 6284</a> <a href={contactUsPhoneNumber.linkHref} className="text-decoration-none">{contactUsPhoneNumber.linkLabel}</a>
</li> </li>}
<li className="contact_icons"> <li className="contact_icons">
<i className="fa-sharp fa-solid fa-envelope"></i> <i className="fa-sharp fa-solid fa-envelope"></i>
<a href="mailto:Info@yogastic.om" <a href={contactUsEmail?.linkHref}
className="text-decoration-none">Info@yogastic.om</a> className="text-decoration-none">{contactUsEmail?.linkLabel}</a>
</li> </li>
<li className="mb-0"> <li className="mb-0">
<i className="fa-solid fa-location-dot location"></i> <i className="fa-solid fa-location-dot location"></i>
<span>21 King Street Melbourne, 3000, Australia</span> <span>{contactUsLocation?.linkLabel}</span>
</li> </li>
</ul> </ul>
</div> </div>
@ -79,7 +85,7 @@ const FooterComponent = () => {
</div> </div>
<div className="bottom-portion"> <div className="bottom-portion">
<div className="copyright col-xl-12"> <div className="copyright col-xl-12">
<p>Copyright 2022, Yogastic.com All Rights Reserved.</p> <p>{copyRight}</p>
</div> </div>
</div> </div>
<div className="footer_shape right_shape"> <div className="footer_shape right_shape">

View File

@ -1,70 +0,0 @@
import YogaImageComponent from "@/components/yoga.image.component";
const QuotesComponent = () => {
return (
<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><YogaImageComponent 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><YogaImageComponent 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">
<YogaImageComponent src="/assets/images/testimonial_left_shape.png" alt="" className="img-fluid"/>
</figure>
<figure className="testimonial_right_shape right_shape mb-0">
<YogaImageComponent src="/assets/images/testimonial_right_shape.png" alt="" className="img-fluid"/>
</figure>
</div>
</div>
);
}
export default QuotesComponent;

View File

@ -1,6 +1,11 @@
import YogaImageComponent from "@/components/yoga.image.component"; import YogaImageComponent from "@/components/yoga.image.component";
import {
const SubscribeComponent = () => { YogaSubscribeNowComponent_Plain
} from "@/types/generated-strapi-interfaces/api/yoga-subscribe-now-component";
export interface Props{
config: YogaSubscribeNowComponent_Plain
}
const SubscribeComponent = ({config: {title,header,placeHolderEmail,buttonSubscribeLabel}}: Props) => {
return ( return (
<section className="subscribe_section"> <section className="subscribe_section">
<div className="container"> <div className="container">
@ -8,14 +13,14 @@ const SubscribeComponent = () => {
<div className="row"> <div className="row">
<div className="col-lg-7 col-md-7 col-sm-6 col-xs-12" data-aos="fade-right"> <div className="col-lg-7 col-md-7 col-sm-6 col-xs-12" data-aos="fade-right">
<div className="subscribe_content"> <div className="subscribe_content">
<h5>Subscribe now</h5> <h5>{title}</h5>
<h2>Get the Latest Updates With Our Newletter</h2> <h2>{header}</h2>
<form method="POST"> <form method="POST">
<div className="form-row"> <div className="form-row">
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div className="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<input type="email" name="email" id="emailadd" className="form-control" <input type="email" name="email" id="emailadd" className="form-control"
placeholder="Enter You Email"/> placeholder={placeHolderEmail}/>
<button type="submit" name="btnsubmit" id="submitbutton">Subscribe</button> <button type="submit" name="btnsubmit" id="submitbutton">{buttonSubscribeLabel}</button>
</div> </div>
</div> </div>
</form> </form>

View File

@ -8,6 +8,8 @@ import { YogaAboutUsComponent } from './yoga-about-us-component';
import { YogaCustomerFeedbackComponent } from './yoga-customer-feedback-component'; import { YogaCustomerFeedbackComponent } from './yoga-customer-feedback-component';
import { YogaOurServicesComponent } from './yoga-our-services-component'; import { YogaOurServicesComponent } from './yoga-our-services-component';
import { YogaBlogPostsComponent } from './yoga-blog-posts-component'; import { YogaBlogPostsComponent } from './yoga-blog-posts-component';
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
import { YogaFooter } from './yoga-footer';
import { HeaderB_Plain } from '../components/yoga-site/HeaderB'; import { HeaderB_Plain } from '../components/yoga-site/HeaderB';
import { YogaContactUs_Plain } from './yoga-contact-us'; import { YogaContactUs_Plain } from './yoga-contact-us';
import { YogaPriceComponent_Plain } from './yoga-price-component'; import { YogaPriceComponent_Plain } from './yoga-price-component';
@ -16,6 +18,8 @@ import { YogaAboutUsComponent_Plain } from './yoga-about-us-component';
import { YogaCustomerFeedbackComponent_Plain } from './yoga-customer-feedback-component'; import { YogaCustomerFeedbackComponent_Plain } from './yoga-customer-feedback-component';
import { YogaOurServicesComponent_Plain } from './yoga-our-services-component'; import { YogaOurServicesComponent_Plain } from './yoga-our-services-component';
import { YogaBlogPostsComponent_Plain } from './yoga-blog-posts-component'; import { YogaBlogPostsComponent_Plain } from './yoga-blog-posts-component';
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
import { YogaFooter_Plain } from './yoga-footer';
import { HeaderB_NoRelations } from '../components/yoga-site/HeaderB'; import { HeaderB_NoRelations } from '../components/yoga-site/HeaderB';
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification'; import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
@ -30,6 +34,8 @@ export interface About {
feedbacks?: { data: YogaCustomerFeedbackComponent }; feedbacks?: { data: YogaCustomerFeedbackComponent };
ourServices?: { data: YogaOurServicesComponent }; ourServices?: { data: YogaOurServicesComponent };
blogs?: { data: YogaBlogPostsComponent }; blogs?: { data: YogaBlogPostsComponent };
subscribeNow?: { data: YogaSubscribeNowComponent };
footer?: { data: YogaFooter };
locale: string; locale: string;
localizations?: { data: About[] }; localizations?: { data: About[] };
}; };
@ -44,6 +50,8 @@ export interface About_Plain {
feedbacks?: YogaCustomerFeedbackComponent_Plain; feedbacks?: YogaCustomerFeedbackComponent_Plain;
ourServices?: YogaOurServicesComponent_Plain; ourServices?: YogaOurServicesComponent_Plain;
blogs?: YogaBlogPostsComponent_Plain; blogs?: YogaBlogPostsComponent_Plain;
subscribeNow?: YogaSubscribeNowComponent_Plain;
footer?: YogaFooter_Plain;
locale: string; locale: string;
localizations?: About_Plain[]; localizations?: About_Plain[];
} }
@ -58,6 +66,8 @@ export interface About_NoRelations {
feedbacks?: number; feedbacks?: number;
ourServices?: number; ourServices?: number;
blogs?: number; blogs?: number;
subscribeNow?: number;
footer?: number;
locale: string; locale: string;
localizations?: About[]; localizations?: About[];
} }
@ -72,6 +82,8 @@ export interface About_AdminPanelLifeCycle {
feedbacks?: AdminPanelRelationPropertyModification<YogaCustomerFeedbackComponent_Plain>; feedbacks?: AdminPanelRelationPropertyModification<YogaCustomerFeedbackComponent_Plain>;
ourServices?: AdminPanelRelationPropertyModification<YogaOurServicesComponent_Plain>; ourServices?: AdminPanelRelationPropertyModification<YogaOurServicesComponent_Plain>;
blogs?: AdminPanelRelationPropertyModification<YogaBlogPostsComponent_Plain>; blogs?: AdminPanelRelationPropertyModification<YogaBlogPostsComponent_Plain>;
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
locale: string; locale: string;
localizations?: About[]; localizations?: About[];
} }

View File

@ -1,7 +1,10 @@
// Interface automatically generated by schemas-to-ts // Interface automatically generated by schemas-to-ts
import { YogaBlogPost } from './yoga-blog-post'; import { YogaBlogPost } from './yoga-blog-post';
import { Button } from '../components/yoga-site/Button';
import { YogaBlogPost_Plain } from './yoga-blog-post'; import { YogaBlogPost_Plain } from './yoga-blog-post';
import { Button_Plain } from '../components/yoga-site/Button';
import { Button_NoRelations } from '../components/yoga-site/Button';
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification'; import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
export interface YogaBlogPostsComponent { export interface YogaBlogPostsComponent {
@ -12,6 +15,7 @@ export interface YogaBlogPostsComponent {
header?: string; header?: string;
description?: string; description?: string;
posts: { data: YogaBlogPost[] }; posts: { data: YogaBlogPost[] };
button?: Button;
}; };
} }
export interface YogaBlogPostsComponent_Plain { export interface YogaBlogPostsComponent_Plain {
@ -21,6 +25,7 @@ export interface YogaBlogPostsComponent_Plain {
header?: string; header?: string;
description?: string; description?: string;
posts: YogaBlogPost_Plain[]; posts: YogaBlogPost_Plain[];
button?: Button_Plain;
} }
export interface YogaBlogPostsComponent_NoRelations { export interface YogaBlogPostsComponent_NoRelations {
@ -30,6 +35,7 @@ export interface YogaBlogPostsComponent_NoRelations {
header?: string; header?: string;
description?: string; description?: string;
posts: number[]; posts: number[];
button?: Button_NoRelations;
} }
export interface YogaBlogPostsComponent_AdminPanelLifeCycle { export interface YogaBlogPostsComponent_AdminPanelLifeCycle {
@ -39,4 +45,5 @@ export interface YogaBlogPostsComponent_AdminPanelLifeCycle {
header?: string; header?: string;
description?: string; description?: string;
posts: AdminPanelRelationPropertyModification<YogaBlogPost_Plain>; posts: AdminPanelRelationPropertyModification<YogaBlogPost_Plain>;
button?: Button_Plain;
} }

View File

@ -0,0 +1,62 @@
// Interface automatically generated by schemas-to-ts
import { Link } from '../components/yoga-site/Link';
import { Link_Plain } from '../components/yoga-site/Link';
import { Link_NoRelations } from '../components/yoga-site/Link';
export interface YogaFooter {
id: number;
attributes: {
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link[];
contactUsPhoneNumber?: Link;
contactUsEmail?: Link;
contactUsLocation?: Link;
copyRight?: string;
name?: string;
};
}
export interface YogaFooter_Plain {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link_Plain[];
contactUsPhoneNumber?: Link_Plain;
contactUsEmail?: Link_Plain;
contactUsLocation?: Link_Plain;
copyRight?: string;
name?: string;
}
export interface YogaFooter_NoRelations {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link_NoRelations[];
contactUsPhoneNumber?: Link_NoRelations;
contactUsEmail?: Link_NoRelations;
contactUsLocation?: Link_NoRelations;
copyRight?: string;
name?: string;
}
export interface YogaFooter_AdminPanelLifeCycle {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link_Plain[];
contactUsPhoneNumber?: Link_Plain;
contactUsEmail?: Link_Plain;
contactUsLocation?: Link_Plain;
copyRight?: string;
name?: string;
}

View File

@ -0,0 +1,34 @@
// Interface automatically generated by schemas-to-ts
export interface YogaSubscribeNowComponent {
id: number;
attributes: {
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
};
}
export interface YogaSubscribeNowComponent_Plain {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
}
export interface YogaSubscribeNowComponent_NoRelations {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
}
export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
}

View File

@ -0,0 +1,16 @@
// Interface automatically generated by schemas-to-ts
export interface Button {
label?: string;
link?: string;
}
export interface Button_Plain {
label?: string;
link?: string;
}
export interface Button_NoRelations {
label?: string;
link?: string;
}

View File

@ -0,0 +1,16 @@
// Interface automatically generated by schemas-to-ts
export interface Link {
linkLabel?: string;
linkHref?: string;
}
export interface Link_Plain {
linkLabel?: string;
linkHref?: string;
}
export interface Link_NoRelations {
linkLabel?: string;
linkHref?: string;
}

View File

@ -8,6 +8,8 @@ import { YogaAboutUsComponent } from './yoga-about-us-component';
import { YogaCustomerFeedbackComponent } from './yoga-customer-feedback-component'; import { YogaCustomerFeedbackComponent } from './yoga-customer-feedback-component';
import { YogaOurServicesComponent } from './yoga-our-services-component'; import { YogaOurServicesComponent } from './yoga-our-services-component';
import { YogaBlogPostsComponent } from './yoga-blog-posts-component'; import { YogaBlogPostsComponent } from './yoga-blog-posts-component';
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
import { YogaFooter } from './yoga-footer';
import { HeaderB_Plain } from '../components/yoga-site/HeaderB'; import { HeaderB_Plain } from '../components/yoga-site/HeaderB';
import { YogaContactUs_Plain } from './yoga-contact-us'; import { YogaContactUs_Plain } from './yoga-contact-us';
import { YogaPriceComponent_Plain } from './yoga-price-component'; import { YogaPriceComponent_Plain } from './yoga-price-component';
@ -16,6 +18,8 @@ import { YogaAboutUsComponent_Plain } from './yoga-about-us-component';
import { YogaCustomerFeedbackComponent_Plain } from './yoga-customer-feedback-component'; import { YogaCustomerFeedbackComponent_Plain } from './yoga-customer-feedback-component';
import { YogaOurServicesComponent_Plain } from './yoga-our-services-component'; import { YogaOurServicesComponent_Plain } from './yoga-our-services-component';
import { YogaBlogPostsComponent_Plain } from './yoga-blog-posts-component'; import { YogaBlogPostsComponent_Plain } from './yoga-blog-posts-component';
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
import { YogaFooter_Plain } from './yoga-footer';
import { HeaderB_NoRelations } from '../components/yoga-site/HeaderB'; import { HeaderB_NoRelations } from '../components/yoga-site/HeaderB';
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification'; import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
@ -30,6 +34,8 @@ export interface About {
feedbacks?: { data: YogaCustomerFeedbackComponent }; feedbacks?: { data: YogaCustomerFeedbackComponent };
ourServices?: { data: YogaOurServicesComponent }; ourServices?: { data: YogaOurServicesComponent };
blogs?: { data: YogaBlogPostsComponent }; blogs?: { data: YogaBlogPostsComponent };
subscribeNow?: { data: YogaSubscribeNowComponent };
footer?: { data: YogaFooter };
locale: string; locale: string;
localizations?: { data: About[] }; localizations?: { data: About[] };
}; };
@ -44,6 +50,8 @@ export interface About_Plain {
feedbacks?: YogaCustomerFeedbackComponent_Plain; feedbacks?: YogaCustomerFeedbackComponent_Plain;
ourServices?: YogaOurServicesComponent_Plain; ourServices?: YogaOurServicesComponent_Plain;
blogs?: YogaBlogPostsComponent_Plain; blogs?: YogaBlogPostsComponent_Plain;
subscribeNow?: YogaSubscribeNowComponent_Plain;
footer?: YogaFooter_Plain;
locale: string; locale: string;
localizations?: About_Plain[]; localizations?: About_Plain[];
} }
@ -58,6 +66,8 @@ export interface About_NoRelations {
feedbacks?: number; feedbacks?: number;
ourServices?: number; ourServices?: number;
blogs?: number; blogs?: number;
subscribeNow?: number;
footer?: number;
locale: string; locale: string;
localizations?: About[]; localizations?: About[];
} }
@ -72,6 +82,8 @@ export interface About_AdminPanelLifeCycle {
feedbacks?: AdminPanelRelationPropertyModification<YogaCustomerFeedbackComponent_Plain>; feedbacks?: AdminPanelRelationPropertyModification<YogaCustomerFeedbackComponent_Plain>;
ourServices?: AdminPanelRelationPropertyModification<YogaOurServicesComponent_Plain>; ourServices?: AdminPanelRelationPropertyModification<YogaOurServicesComponent_Plain>;
blogs?: AdminPanelRelationPropertyModification<YogaBlogPostsComponent_Plain>; blogs?: AdminPanelRelationPropertyModification<YogaBlogPostsComponent_Plain>;
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
locale: string; locale: string;
localizations?: About[]; localizations?: About[];
} }

View File

@ -1,7 +1,10 @@
// Interface automatically generated by schemas-to-ts // Interface automatically generated by schemas-to-ts
import { YogaBlogPost } from './yoga-blog-post'; import { YogaBlogPost } from './yoga-blog-post';
import { Button } from '../components/yoga-site/Button';
import { YogaBlogPost_Plain } from './yoga-blog-post'; import { YogaBlogPost_Plain } from './yoga-blog-post';
import { Button_Plain } from '../components/yoga-site/Button';
import { Button_NoRelations } from '../components/yoga-site/Button';
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification'; import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
export interface YogaBlogPostsComponent { export interface YogaBlogPostsComponent {
@ -12,6 +15,7 @@ export interface YogaBlogPostsComponent {
header?: string; header?: string;
description?: string; description?: string;
posts: { data: YogaBlogPost[] }; posts: { data: YogaBlogPost[] };
button?: Button;
}; };
} }
export interface YogaBlogPostsComponent_Plain { export interface YogaBlogPostsComponent_Plain {
@ -21,6 +25,7 @@ export interface YogaBlogPostsComponent_Plain {
header?: string; header?: string;
description?: string; description?: string;
posts: YogaBlogPost_Plain[]; posts: YogaBlogPost_Plain[];
button?: Button_Plain;
} }
export interface YogaBlogPostsComponent_NoRelations { export interface YogaBlogPostsComponent_NoRelations {
@ -30,6 +35,7 @@ export interface YogaBlogPostsComponent_NoRelations {
header?: string; header?: string;
description?: string; description?: string;
posts: number[]; posts: number[];
button?: Button_NoRelations;
} }
export interface YogaBlogPostsComponent_AdminPanelLifeCycle { export interface YogaBlogPostsComponent_AdminPanelLifeCycle {
@ -39,4 +45,5 @@ export interface YogaBlogPostsComponent_AdminPanelLifeCycle {
header?: string; header?: string;
description?: string; description?: string;
posts: AdminPanelRelationPropertyModification<YogaBlogPost_Plain>; posts: AdminPanelRelationPropertyModification<YogaBlogPost_Plain>;
button?: Button_Plain;
} }

View File

@ -0,0 +1,62 @@
// Interface automatically generated by schemas-to-ts
import { Link } from '../components/yoga-site/Link';
import { Link_Plain } from '../components/yoga-site/Link';
import { Link_NoRelations } from '../components/yoga-site/Link';
export interface YogaFooter {
id: number;
attributes: {
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link[];
contactUsPhoneNumber?: Link;
contactUsEmail?: Link;
contactUsLocation?: Link;
copyRight?: string;
name?: string;
};
}
export interface YogaFooter_Plain {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link_Plain[];
contactUsPhoneNumber?: Link_Plain;
contactUsEmail?: Link_Plain;
contactUsLocation?: Link_Plain;
copyRight?: string;
name?: string;
}
export interface YogaFooter_NoRelations {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link_NoRelations[];
contactUsPhoneNumber?: Link_NoRelations;
contactUsEmail?: Link_NoRelations;
contactUsLocation?: Link_NoRelations;
copyRight?: string;
name?: string;
}
export interface YogaFooter_AdminPanelLifeCycle {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; aboutUsHeader?: string;
aboutUsContent?: string;
quickLinksHeader?: string;
contactInfoHeader?: string;
links: Link_Plain[];
contactUsPhoneNumber?: Link_Plain;
contactUsEmail?: Link_Plain;
contactUsLocation?: Link_Plain;
copyRight?: string;
name?: string;
}

View File

@ -0,0 +1,34 @@
// Interface automatically generated by schemas-to-ts
export interface YogaSubscribeNowComponent {
id: number;
attributes: {
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
};
}
export interface YogaSubscribeNowComponent_Plain {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
}
export interface YogaSubscribeNowComponent_NoRelations {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
}
export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
id: number;
createdAt: Date; updatedAt: Date; publishedAt?: Date; title?: string;
header?: string;
placeHolderEmail?: string;
buttonSubscribeLabel?: string;
}

View File

@ -0,0 +1,16 @@
// Interface automatically generated by schemas-to-ts
export interface Button {
label?: string;
link?: string;
}
export interface Button_Plain {
label?: string;
link?: string;
}
export interface Button_NoRelations {
label?: string;
link?: string;
}

View File

@ -0,0 +1,16 @@
// Interface automatically generated by schemas-to-ts
export interface Link {
linkLabel?: string;
linkHref?: string;
}
export interface Link_Plain {
linkLabel?: string;
linkHref?: string;
}
export interface Link_NoRelations {
linkLabel?: string;
linkHref?: string;
}

View File

@ -60,6 +60,16 @@
"type": "relation", "type": "relation",
"relation": "oneToOne", "relation": "oneToOne",
"target": "api::yoga-blog-posts-component.yoga-blog-posts-component" "target": "api::yoga-blog-posts-component.yoga-blog-posts-component"
},
"subscribeNow": {
"type": "relation",
"relation": "oneToOne",
"target": "api::yoga-subscribe-now-component.yoga-subscribe-now-component"
},
"footer": {
"type": "relation",
"relation": "oneToOne",
"target": "api::yoga-footer.yoga-footer"
} }
} }
} }

View File

@ -4,7 +4,8 @@
"info": { "info": {
"singularName": "yoga-blog-posts-component", "singularName": "yoga-blog-posts-component",
"pluralName": "yoga-blog-posts-components", "pluralName": "yoga-blog-posts-components",
"displayName": "YogaBlogPostsComponent" "displayName": "YogaBlogPostsComponent",
"description": ""
}, },
"options": { "options": {
"draftAndPublish": true "draftAndPublish": true
@ -27,6 +28,11 @@
"type": "relation", "type": "relation",
"relation": "oneToMany", "relation": "oneToMany",
"target": "api::yoga-blog-post.yoga-blog-post" "target": "api::yoga-blog-post.yoga-blog-post"
},
"button": {
"type": "component",
"repeatable": false,
"component": "yoga-site.button"
} }
} }
} }

View File

@ -0,0 +1,55 @@
{
"kind": "collectionType",
"collectionName": "yoga_footers",
"info": {
"singularName": "yoga-footer",
"pluralName": "yoga-footers",
"displayName": "YogaFooter",
"description": ""
},
"options": {
"draftAndPublish": true
},
"pluginOptions": {},
"attributes": {
"aboutUsHeader": {
"type": "string"
},
"aboutUsContent": {
"type": "text"
},
"quickLinksHeader": {
"type": "string"
},
"contactInfoHeader": {
"type": "string"
},
"links": {
"type": "component",
"repeatable": true,
"component": "yoga-site.link"
},
"contactUsPhoneNumber": {
"type": "component",
"repeatable": false,
"component": "yoga-site.link",
"required": false
},
"contactUsEmail": {
"type": "component",
"repeatable": false,
"component": "yoga-site.link"
},
"contactUsLocation": {
"type": "component",
"repeatable": false,
"component": "yoga-site.link"
},
"copyRight": {
"type": "string"
},
"name": {
"type": "string"
}
}
}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,27 @@
{
"kind": "collectionType",
"collectionName": "yoga_subscribe_now_components",
"info": {
"singularName": "yoga-subscribe-now-component",
"pluralName": "yoga-subscribe-now-components",
"displayName": "YogaSubscribeNowComponent"
},
"options": {
"draftAndPublish": true
},
"pluginOptions": {},
"attributes": {
"title": {
"type": "string"
},
"header": {
"type": "string"
},
"placeHolderEmail": {
"type": "string"
},
"buttonSubscribeLabel": {
"type": "string"
}
}
}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,15 @@
{
"collectionName": "components_yoga_site_buttons",
"info": {
"displayName": "button"
},
"options": {},
"attributes": {
"label": {
"type": "string"
},
"link": {
"type": "string"
}
}
}

View File

@ -0,0 +1,16 @@
{
"collectionName": "components_yoga_site_links",
"info": {
"displayName": "link",
"description": ""
},
"options": {},
"attributes": {
"linkLabel": {
"type": "string"
},
"linkHref": {
"type": "string"
}
}
}

View File

@ -84,6 +84,17 @@ export interface SharedTitleDescription extends Struct.ComponentSchema {
}; };
} }
export interface YogaSiteButton extends Struct.ComponentSchema {
collectionName: 'components_yoga_site_buttons';
info: {
displayName: 'button';
};
attributes: {
label: Schema.Attribute.String;
link: Schema.Attribute.String;
};
}
export interface YogaSiteHeaderB extends Struct.ComponentSchema { export interface YogaSiteHeaderB extends Struct.ComponentSchema {
collectionName: 'components_yoga_site_header_bs'; collectionName: 'components_yoga_site_header_bs';
info: { info: {
@ -97,6 +108,18 @@ export interface YogaSiteHeaderB extends Struct.ComponentSchema {
}; };
} }
export interface YogaSiteLink extends Struct.ComponentSchema {
collectionName: 'components_yoga_site_links';
info: {
description: '';
displayName: 'link';
};
attributes: {
linkHref: Schema.Attribute.String;
linkLabel: Schema.Attribute.String;
};
}
export interface YogaSiteOurServicesComponent extends Struct.ComponentSchema { export interface YogaSiteOurServicesComponent extends Struct.ComponentSchema {
collectionName: 'components_yoga_site_our_services_components'; collectionName: 'components_yoga_site_our_services_components';
info: { info: {
@ -130,7 +153,9 @@ declare module '@strapi/strapi' {
'shared.seo': SharedSeo; 'shared.seo': SharedSeo;
'shared.slider': SharedSlider; 'shared.slider': SharedSlider;
'shared.title-description': SharedTitleDescription; 'shared.title-description': SharedTitleDescription;
'yoga-site.button': YogaSiteButton;
'yoga-site.header-b': YogaSiteHeaderB; 'yoga-site.header-b': YogaSiteHeaderB;
'yoga-site.link': YogaSiteLink;
'yoga-site.our-services-component': YogaSiteOurServicesComponent; 'yoga-site.our-services-component': YogaSiteOurServicesComponent;
'yoga-site.tag': YogaSiteTag; 'yoga-site.tag': YogaSiteTag;
} }

View File

@ -405,6 +405,10 @@ export interface ApiAboutAbout extends Struct.SingleTypeSchema {
'oneToOne', 'oneToOne',
'api::yoga-customer-feedback-component.yoga-customer-feedback-component' 'api::yoga-customer-feedback-component.yoga-customer-feedback-component'
>; >;
footer: Schema.Attribute.Relation<
'oneToOne',
'api::yoga-footer.yoga-footer'
>;
header: Schema.Attribute.Component<'yoga-site.header-b', false> & header: Schema.Attribute.Component<'yoga-site.header-b', false> &
Schema.Attribute.SetPluginOptions<{ Schema.Attribute.SetPluginOptions<{
i18n: { i18n: {
@ -426,6 +430,10 @@ export interface ApiAboutAbout extends Struct.SingleTypeSchema {
'api::yoga-price-component.yoga-price-component' 'api::yoga-price-component.yoga-price-component'
>; >;
publishedAt: Schema.Attribute.DateTime; publishedAt: Schema.Attribute.DateTime;
subscribeNow: Schema.Attribute.Relation<
'oneToOne',
'api::yoga-subscribe-now-component.yoga-subscribe-now-component'
>;
updatedAt: Schema.Attribute.DateTime; updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private; Schema.Attribute.Private;
@ -748,6 +756,7 @@ export interface ApiYogaBlogPostsComponentYogaBlogPostsComponent
extends Struct.CollectionTypeSchema { extends Struct.CollectionTypeSchema {
collectionName: 'yoga_blog_posts_components'; collectionName: 'yoga_blog_posts_components';
info: { info: {
description: '';
displayName: 'YogaBlogPostsComponent'; displayName: 'YogaBlogPostsComponent';
pluralName: 'yoga-blog-posts-components'; pluralName: 'yoga-blog-posts-components';
singularName: 'yoga-blog-posts-component'; singularName: 'yoga-blog-posts-component';
@ -756,6 +765,7 @@ export interface ApiYogaBlogPostsComponentYogaBlogPostsComponent
draftAndPublish: true; draftAndPublish: true;
}; };
attributes: { attributes: {
button: Schema.Attribute.Component<'yoga-site.button', false>;
createdAt: Schema.Attribute.DateTime; createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private; Schema.Attribute.Private;
@ -928,6 +938,44 @@ export interface ApiYogaCustomerFeedbackYogaCustomerFeedback
}; };
} }
export interface ApiYogaFooterYogaFooter extends Struct.CollectionTypeSchema {
collectionName: 'yoga_footers';
info: {
description: '';
displayName: 'YogaFooter';
pluralName: 'yoga-footers';
singularName: 'yoga-footer';
};
options: {
draftAndPublish: true;
};
attributes: {
aboutUsContent: Schema.Attribute.Text;
aboutUsHeader: Schema.Attribute.String;
contactInfoHeader: Schema.Attribute.String;
contactUsEmail: Schema.Attribute.Component<'yoga-site.link', false>;
contactUsLocation: Schema.Attribute.Component<'yoga-site.link', false>;
contactUsPhoneNumber: Schema.Attribute.Component<'yoga-site.link', false>;
copyRight: Schema.Attribute.String;
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
links: Schema.Attribute.Component<'yoga-site.link', true>;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<
'oneToMany',
'api::yoga-footer.yoga-footer'
> &
Schema.Attribute.Private;
name: Schema.Attribute.String;
publishedAt: Schema.Attribute.DateTime;
quickLinksHeader: Schema.Attribute.String;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
};
}
export interface ApiYogaOurServicesComponentYogaOurServicesComponent export interface ApiYogaOurServicesComponentYogaOurServicesComponent
extends Struct.CollectionTypeSchema { extends Struct.CollectionTypeSchema {
collectionName: 'yoga_our_services_components'; collectionName: 'yoga_our_services_components';
@ -1288,6 +1336,38 @@ export interface ApiYogaSpecialitiesComponentYogaSpecialitiesComponent
}; };
} }
export interface ApiYogaSubscribeNowComponentYogaSubscribeNowComponent
extends Struct.CollectionTypeSchema {
collectionName: 'yoga_subscribe_now_components';
info: {
displayName: 'YogaSubscribeNowComponent';
pluralName: 'yoga-subscribe-now-components';
singularName: 'yoga-subscribe-now-component';
};
options: {
draftAndPublish: true;
};
attributes: {
buttonSubscribeLabel: Schema.Attribute.String;
createdAt: Schema.Attribute.DateTime;
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
header: Schema.Attribute.String;
locale: Schema.Attribute.String & Schema.Attribute.Private;
localizations: Schema.Attribute.Relation<
'oneToMany',
'api::yoga-subscribe-now-component.yoga-subscribe-now-component'
> &
Schema.Attribute.Private;
placeHolderEmail: Schema.Attribute.String;
publishedAt: Schema.Attribute.DateTime;
title: Schema.Attribute.String;
updatedAt: Schema.Attribute.DateTime;
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
Schema.Attribute.Private;
};
}
export interface ApiYogaTagYogaTag extends Struct.CollectionTypeSchema { export interface ApiYogaTagYogaTag extends Struct.CollectionTypeSchema {
collectionName: 'yoga_tags'; collectionName: 'yoga_tags';
info: { info: {
@ -1838,12 +1918,14 @@ declare module '@strapi/strapi' {
'api::yoga-contact-us.yoga-contact-us': ApiYogaContactUsYogaContactUs; 'api::yoga-contact-us.yoga-contact-us': ApiYogaContactUsYogaContactUs;
'api::yoga-customer-feedback-component.yoga-customer-feedback-component': ApiYogaCustomerFeedbackComponentYogaCustomerFeedbackComponent; 'api::yoga-customer-feedback-component.yoga-customer-feedback-component': ApiYogaCustomerFeedbackComponentYogaCustomerFeedbackComponent;
'api::yoga-customer-feedback.yoga-customer-feedback': ApiYogaCustomerFeedbackYogaCustomerFeedback; 'api::yoga-customer-feedback.yoga-customer-feedback': ApiYogaCustomerFeedbackYogaCustomerFeedback;
'api::yoga-footer.yoga-footer': ApiYogaFooterYogaFooter;
'api::yoga-our-services-component.yoga-our-services-component': ApiYogaOurServicesComponentYogaOurServicesComponent; 'api::yoga-our-services-component.yoga-our-services-component': ApiYogaOurServicesComponentYogaOurServicesComponent;
'api::yoga-price-component.yoga-price-component': ApiYogaPriceComponentYogaPriceComponent; 'api::yoga-price-component.yoga-price-component': ApiYogaPriceComponentYogaPriceComponent;
'api::yoga-price.yoga-price': ApiYogaPriceYogaPrice; 'api::yoga-price.yoga-price': ApiYogaPriceYogaPrice;
'api::yoga-single-service.yoga-single-service': ApiYogaSingleServiceYogaSingleService; 'api::yoga-single-service.yoga-single-service': ApiYogaSingleServiceYogaSingleService;
'api::yoga-single-speciality.yoga-single-speciality': ApiYogaSingleSpecialityYogaSingleSpeciality; 'api::yoga-single-speciality.yoga-single-speciality': ApiYogaSingleSpecialityYogaSingleSpeciality;
'api::yoga-specialities-component.yoga-specialities-component': ApiYogaSpecialitiesComponentYogaSpecialitiesComponent; 'api::yoga-specialities-component.yoga-specialities-component': ApiYogaSpecialitiesComponentYogaSpecialitiesComponent;
'api::yoga-subscribe-now-component.yoga-subscribe-now-component': ApiYogaSubscribeNowComponentYogaSubscribeNowComponent;
'api::yoga-tag.yoga-tag': ApiYogaTagYogaTag; 'api::yoga-tag.yoga-tag': ApiYogaTagYogaTag;
'plugin::content-releases.release': PluginContentReleasesRelease; 'plugin::content-releases.release': PluginContentReleasesRelease;
'plugin::content-releases.release-action': PluginContentReleasesReleaseAction; 'plugin::content-releases.release-action': PluginContentReleasesReleaseAction;