Compare commits
56 Commits
service-ar
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| cf9bc27a23 | |||
|
|
4a1fee0092 | ||
|
|
65409a908b | ||
|
|
c47ec66dff | ||
|
|
70fbefd317 | ||
|
|
27ca602154 | ||
|
|
c89dd356fb | ||
|
|
1414b6ff74 | ||
| f263a79ff7 | |||
|
|
00f9f00392 | ||
|
|
ad0cec9efb | ||
|
|
db881cba06 | ||
|
|
1e553380e2 | ||
|
|
8fc0f924b8 | ||
|
|
c0ca7108c7 | ||
| 6b316ec1aa | |||
|
|
298f35903b | ||
| 598107f8ad | |||
|
|
e3b4b40ae7 | ||
|
|
b64ad30c00 | ||
|
|
0c232f80cd | ||
|
|
effa7f8f2f | ||
|
|
2c74b1a2fd | ||
|
|
a9ca4b3482 | ||
|
|
587a4482db | ||
| 6075457fcf | |||
|
|
3de55264c9 | ||
|
|
cde23153ba | ||
|
|
622f2a7686 | ||
|
|
917918d742 | ||
|
|
f1069f3124 | ||
|
|
a3e57f295f | ||
|
|
054cb48e4c | ||
|
|
6298bb7b8c | ||
| f977877cd7 | |||
|
|
4807edec8f | ||
|
|
11cbd10db9 | ||
|
|
6acf79e23d | ||
|
|
e9aa0e795e | ||
| cc1a4aade1 | |||
|
|
fe4c4be6dd | ||
|
|
cd2eded7aa | ||
|
|
8fdc59552f | ||
| a6e7bb9dab | |||
|
|
930dbe3354 | ||
|
|
0f1bfcf774 | ||
|
|
1a7c5c5247 | ||
| 7133e43464 | |||
|
|
2929ab6150 | ||
|
|
92b528c9e9 | ||
|
|
8324294853 | ||
|
|
3bbd9dcbf6 | ||
|
|
ca60a9a2f4 | ||
| 90a7dbf827 | |||
|
|
fac8dd6f19 | ||
|
|
cc6d8147de |
2
api.http
2
api.http
@ -29,7 +29,7 @@ GET {{domain}}/api/yoga-single-services?filters[name][$eq]=service4
|
|||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
### GET service page
|
### GET service page
|
||||||
GET {{domain}}/api/contact-page?fields[0]=*&populate[contactUs][fields][0]=*&populate[google_maps][fields][0]=*&populate[subscribe][fields][0]=*&populate[footer][fields][0]=*&populate[footer][populate][links][fields][0]=*&populate[footer][populate][contactUsEmail][fields][0]=*&populate[footer][populate][contactUsLocation][fields][0]=*&populate[footer][populate][contactUsPhoneNumber][fields][0]=*
|
GET {{domain}}/api/service-list-page?fields[0]=*&populate[services][fields][0]=*&populate[services][populate][image][fields][0]=name&populate[services][populate][image][fields][1]=mime&populate[services][populate][image][fields][2]=url&populate[common][fields][0]=*&populate[common][populate][logoImage][fields][0]=name&populate[common][populate][logoImage][fields][1]=mime&populate[common][populate][logoImage][fields][2]=url&populate[subscribeNow][fields][0]=*&populate[subscribeNow][populate][image][fields][0]=name&populate[subscribeNow][populate][image][fields][1]=mime&populate[subscribeNow][populate][image][fields][2]=url&populate[footer][fields][0]=*&populate[footer][populate][links][fields][0]=*&populate[footer][populate][contactUsEmail][fields][0]=*&populate[footer][populate][contactUsLocation][fields][0]=*&populate[footer][populate][contactUsPhoneNumber][fields][0]=*&populate[footer][populate][logo][fields][0]=name&populate[footer][populate][logo][fields][1]=mime&populate[footer][populate][logo][fields][2]=url
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
17
dev.sh
17
dev.sh
@ -1,5 +1,20 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
cd environment/dev/docker-compose/yogastic
|
PROJECT_ROOT=$(readlink -f $(dirname $0))
|
||||||
|
|
||||||
|
ENV_DIR=${PROJECT_ROOT}"/environment/dev/docker-compose/yogastic"
|
||||||
|
CMS_DIR=${PROJECT_ROOT}"/yoga-cms"
|
||||||
|
APP_DIR=${PROJECT_ROOT}"/yoga-app"
|
||||||
|
|
||||||
|
echo "PROJECT_ROOT $PROJECT_ROOT"
|
||||||
|
|
||||||
|
cd $ENV_DIR
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
|
cd $CMS_DIR
|
||||||
|
fuser -k 1337/tcp
|
||||||
|
npm run develop &
|
||||||
|
|
||||||
|
cd $APP_DIR
|
||||||
|
fuser -k 4081/tcp
|
||||||
|
npm run dev &
|
||||||
@ -1 +1 @@
|
|||||||
202505262234.f0f0a97
|
202509160924.c47ec66
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
202505232026.6bb9365
|
202509161943.65409a9
|
||||||
|
|||||||
@ -21,7 +21,7 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- yogastic
|
- yogastic
|
||||||
app:
|
app:
|
||||||
image: docker.rschneider.hu/infra/yoga-app:202505262234.f0f0a97
|
image: docker.rschneider.hu/infra/yoga-app:202509160924.c47ec66
|
||||||
platform: linux/amd64
|
platform: linux/amd64
|
||||||
ports:
|
ports:
|
||||||
- '4025:3000'
|
- '4025:3000'
|
||||||
@ -47,7 +47,7 @@ services:
|
|||||||
- proxy_shared
|
- proxy_shared
|
||||||
- yogastic
|
- yogastic
|
||||||
cms:
|
cms:
|
||||||
image: docker.rschneider.hu/infra/yoga-cms:202505232026.6bb9365
|
image: docker.rschneider.hu/infra/yoga-cms:202509161943.65409a9
|
||||||
ports:
|
ports:
|
||||||
- '4026:1337'
|
- '4026:1337'
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@ -8,7 +8,8 @@
|
|||||||
"build.docker.image.app": "cd environment/dev/docker/app/scripts && bash build.docker.build.sh ",
|
"build.docker.image.app": "cd environment/dev/docker/app/scripts && bash build.docker.build.sh ",
|
||||||
"build.docker.image.cms": "cd environment/dev/docker/cms/scripts && bash build.docker.build.sh ",
|
"build.docker.image.cms": "cd environment/dev/docker/cms/scripts && bash build.docker.build.sh ",
|
||||||
"push.docker.image.app": "cd environment/dev/docker/app/scripts && bash build.docker.push.sh ",
|
"push.docker.image.app": "cd environment/dev/docker/app/scripts && bash build.docker.push.sh ",
|
||||||
"push.docker.image.cms": "cd environment/dev/docker/cms/scripts && bash build.docker.push.sh "
|
"push.docker.image.cms": "cd environment/dev/docker/cms/scripts && bash build.docker.push.sh ",
|
||||||
|
"dev": "bash ./dev.sh"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
|||||||
@ -72,7 +72,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"subscribeNow": {
|
"subscribeNow": {
|
||||||
"fields": ["*"]
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
@ -88,6 +97,9 @@
|
|||||||
},
|
},
|
||||||
"contactUsPhoneNumber": {
|
"contactUsPhoneNumber": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,8 +16,17 @@
|
|||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
},
|
},
|
||||||
"subscribe": {
|
"subscribe": {
|
||||||
"fields": ["*"]
|
"fields": ["*"],
|
||||||
},
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
"populate": {
|
"populate": {
|
||||||
@ -32,6 +41,9 @@
|
|||||||
},
|
},
|
||||||
"contactUsPhoneNumber": {
|
"contactUsPhoneNumber": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,8 +51,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"subscribe": {
|
"subscribe": {
|
||||||
"fields": ["*"]
|
"fields": ["*"],
|
||||||
},
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
"populate": {
|
"populate": {
|
||||||
@ -67,6 +76,9 @@
|
|||||||
},
|
},
|
||||||
"contactUsPhoneNumber": {
|
"contactUsPhoneNumber": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,13 @@
|
|||||||
{
|
{
|
||||||
"populate": {
|
"populate": {
|
||||||
|
"common": {
|
||||||
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"logoImage": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"header": {
|
"header": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
"populate": {
|
"populate": {
|
||||||
@ -7,8 +15,12 @@
|
|||||||
"fields": [
|
"fields": [
|
||||||
"*"
|
"*"
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
"image": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
@ -24,12 +36,24 @@
|
|||||||
},
|
},
|
||||||
"contactUsPhoneNumber": {
|
"contactUsPhoneNumber": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"subscribeNow": {
|
"subscribeNow": {
|
||||||
"fields": ["*"]
|
"fields": ["*"],
|
||||||
},
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"blogs": {
|
"blogs": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
"populate": {
|
"populate": {
|
||||||
@ -128,6 +152,9 @@
|
|||||||
},
|
},
|
||||||
"right4": {
|
"right4": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,7 +48,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"subscribe": {
|
"subscribe": {
|
||||||
"fields": ["*"]
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
@ -64,6 +73,9 @@
|
|||||||
},
|
},
|
||||||
"contactUsPhoneNumber": {
|
"contactUsPhoneNumber": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
56
yoga-app/src/api/strapi/query/service-list.json
Normal file
56
yoga-app/src/api/strapi/query/service-list.json
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"services": {
|
||||||
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": ["name","mime","url" ]
|
||||||
|
},
|
||||||
|
"articleImage": {
|
||||||
|
"fields": ["name","mime","url" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"logoImage": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"subscribeNow": {
|
||||||
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"fields": ["*"],
|
||||||
|
"populate": {
|
||||||
|
"links": {
|
||||||
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"contactUsEmail": {
|
||||||
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"contactUsLocation": {
|
||||||
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"contactUsPhoneNumber": {
|
||||||
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,8 +10,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"subscribeNow": {
|
"subscribeNow": {
|
||||||
"fields": ["*"]
|
"fields": ["*"],
|
||||||
},
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
"populate": {
|
"populate": {
|
||||||
@ -26,6 +35,9 @@
|
|||||||
},
|
},
|
||||||
"contactUsPhoneNumber": {
|
"contactUsPhoneNumber": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,6 +51,9 @@
|
|||||||
},
|
},
|
||||||
"right4": {
|
"right4": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -87,8 +90,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"subscribe": {
|
"subscribe": {
|
||||||
"fields": ["*"]
|
"fields": ["*"],
|
||||||
},
|
"populate": {
|
||||||
|
"image": {
|
||||||
|
"fields": [
|
||||||
|
"name",
|
||||||
|
"mime",
|
||||||
|
"url"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fields": ["*"],
|
"fields": ["*"],
|
||||||
"populate": {
|
"populate": {
|
||||||
@ -103,6 +115,9 @@
|
|||||||
},
|
},
|
||||||
"contactUsPhoneNumber": {
|
"contactUsPhoneNumber": {
|
||||||
"fields": ["*"]
|
"fields": ["*"]
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import qs from "qs";
|
|||||||
import aboutQuery from "@/api/strapi/query/about.json";
|
import aboutQuery from "@/api/strapi/query/about.json";
|
||||||
import homeQuery from "@/api/strapi/query/home.json";
|
import homeQuery from "@/api/strapi/query/home.json";
|
||||||
import servicesQuery from "@/api/strapi/query/services.json";
|
import servicesQuery from "@/api/strapi/query/services.json";
|
||||||
|
import serviceListPageQuery from "@/api/strapi/query/service-list.json";
|
||||||
import serviceQuery from "@/api/strapi/query/service.json";
|
import serviceQuery from "@/api/strapi/query/service.json";
|
||||||
import pricesQuery from "@/api/strapi/query/prices.json";
|
import pricesQuery from "@/api/strapi/query/prices.json";
|
||||||
import faqQuery from "@/api/strapi/query/faq.json";
|
import faqQuery from "@/api/strapi/query/faq.json";
|
||||||
@ -11,6 +12,7 @@ import contactQuery from "@/api/strapi/query/contact.json";
|
|||||||
import {YogaBlogPost_Plain} from "@/types/generated-strapi-interfaces/api/yoga-blog-post";
|
import {YogaBlogPost_Plain} from "@/types/generated-strapi-interfaces/api/yoga-blog-post";
|
||||||
import {Home_Plain} from "@/types/generated-strapi-interfaces/api/home";
|
import {Home_Plain} from "@/types/generated-strapi-interfaces/api/home";
|
||||||
import {ServicesPage_Plain} from "@/types/generated-strapi-interfaces/api/services-page";
|
import {ServicesPage_Plain} from "@/types/generated-strapi-interfaces/api/services-page";
|
||||||
|
import {ServiceListPage_Plain} from "@/types/generated-strapi-interfaces/api/service-list-page";
|
||||||
import {PricesPage_Plain} from "@/types/generated-strapi-interfaces/api/prices-page";
|
import {PricesPage_Plain} from "@/types/generated-strapi-interfaces/api/prices-page";
|
||||||
import {FaqPage_Plain} from "@/types/generated-strapi-interfaces/api/faq-page";
|
import {FaqPage_Plain} from "@/types/generated-strapi-interfaces/api/faq-page";
|
||||||
import {ContactPage_Plain} from "@/types/generated-strapi-interfaces/api/contact-page";
|
import {ContactPage_Plain} from "@/types/generated-strapi-interfaces/api/contact-page";
|
||||||
@ -49,6 +51,10 @@ class StrapiApi{
|
|||||||
return this.getJson("/api/service-page?",serviceQuery);
|
return this.getJson("/api/service-page?",serviceQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getServiceListPage(): Promise<ServiceListPage_Plain>{
|
||||||
|
return this.getJson("/api/service-list-page?",serviceListPageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
public getService(name: string): Promise<YogaSingleService_Plain[]>{
|
public getService(name: string): Promise<YogaSingleService_Plain[]>{
|
||||||
return this.getJson("/api/yoga-single-services?", {
|
return this.getJson("/api/yoga-single-services?", {
|
||||||
filters: {
|
filters: {
|
||||||
|
|||||||
@ -1,44 +1,58 @@
|
|||||||
import httpClient from "@/api/http-client";
|
import httpClient from "@/api/http-client";
|
||||||
import {Payload} from "@/types/generated-strapi-interfaces/common/Payload";
|
import {Payload} from "@/types/generated-strapi-interfaces/common/Payload";
|
||||||
|
|
||||||
const STRAPI_URL = process.env.STRAPI_URL;
|
const STRAPI_URL = process.env.STRAPI_URL;
|
||||||
|
|
||||||
class StrapiClient{
|
class StrapiClient {
|
||||||
|
|
||||||
constructor(private strapiUrl: string = "http://localhost:1337") {
|
constructor(private strapiUrl: string = "http://localhost:1337") {
|
||||||
}
|
}
|
||||||
public getImageUrl(imagePath: string){
|
|
||||||
if ( !imagePath ){
|
public getImageUrl(imagePath: string) {
|
||||||
|
if (!imagePath) {
|
||||||
return "dummy.png"
|
return "dummy.png"
|
||||||
}
|
}
|
||||||
return '/image/'+ imagePath;
|
return '/image/' + imagePath;
|
||||||
}
|
}
|
||||||
public async httpGet(path: string){
|
|
||||||
console.info("httpGet", path);
|
public async httpGet(path: string) {
|
||||||
return await httpClient.httpGet(this.strapiUrl + path);
|
let result = undefined;
|
||||||
|
try {
|
||||||
|
const absoluteUrl = this.strapiUrl + path;
|
||||||
|
console.info("httpGet", {path,absoluteUrl});
|
||||||
|
result = await httpClient.httpGet(this.strapiUrl + path);
|
||||||
|
} catch (e) {
|
||||||
|
console.log("httpGet error", e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
if (!result.ok) {
|
||||||
|
console.info("httpGet not ok", result);
|
||||||
|
throw new Error(result.statusText);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
public async httpGetJson<T>(url: string): Promise<Payload<T>>{
|
|
||||||
const response = await this.httpGet(url);
|
public async httpGetJson<T>(url: string): Promise<Payload<T>> {
|
||||||
|
const response = await this.httpGet(url);
|
||||||
return await response.json();
|
return await response.json();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async findContentType<T>(contentType: string,options?: FindContentOptions): Promise<Payload<T>>{
|
public async findContentType<T>(contentType: string, options?: FindContentOptions): Promise<Payload<T>> {
|
||||||
const searchParams = new URLSearchParams();
|
const searchParams = new URLSearchParams();
|
||||||
if ( options?.populateAll ){
|
if (options?.populateAll) {
|
||||||
searchParams.append("populate","*");
|
searchParams.append("populate", "*");
|
||||||
}
|
}
|
||||||
if (options?.localeAll){
|
if (options?.localeAll) {
|
||||||
searchParams.append("_locale","all");
|
searchParams.append("_locale", "all");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const response = await this.httpGet("/api/" + contentType + "?" + searchParams.toString());
|
||||||
const response = await this.httpGet("/api/"+contentType+"?"+searchParams.toString());
|
|
||||||
return await response.json();
|
return await response.json();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FindContentOptions{
|
export interface FindContentOptions {
|
||||||
populateAll?: boolean;
|
populateAll?: boolean;
|
||||||
localeAll?: boolean;
|
localeAll?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import AosComponent from "@/components/aos.component";
|
import AosComponent from "@/components/aos.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 strapiApi from "@/api/strapi/strapi-api";
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
@ -13,7 +12,6 @@ export default async function About() {
|
|||||||
header,
|
header,
|
||||||
description,
|
description,
|
||||||
questionsAndAnswers,
|
questionsAndAnswers,
|
||||||
blogs,
|
|
||||||
subscribe,
|
subscribe,
|
||||||
footer,
|
footer,
|
||||||
common
|
common
|
||||||
@ -22,7 +20,6 @@ export default async function About() {
|
|||||||
<>
|
<>
|
||||||
{ <SubHeaderComponent header={{header1:header,description}} common={common}/> }
|
{ <SubHeaderComponent header={{header1:header,description}} common={common}/> }
|
||||||
{ questionsAndAnswers && <FaqComponent config={questionsAndAnswers} /> }
|
{ questionsAndAnswers && <FaqComponent config={questionsAndAnswers} /> }
|
||||||
{ blogs && <BlogPostsComponent config={blogs} /> }
|
|
||||||
{ subscribe && <SubscribeComponent config={subscribe} /> }
|
{ subscribe && <SubscribeComponent config={subscribe} /> }
|
||||||
{ footer && <FooterComponent config={footer} /> }
|
{ footer && <FooterComponent config={footer} /> }
|
||||||
<AosComponent />
|
<AosComponent />
|
||||||
|
|||||||
@ -12,6 +12,9 @@
|
|||||||
@import '../styles/custom-style';
|
@import '../styles/custom-style';
|
||||||
@import '../styles/special-classes';
|
@import '../styles/special-classes';
|
||||||
@import 'node_modules/aos/src/sass/aos.scss';
|
@import 'node_modules/aos/src/sass/aos.scss';
|
||||||
|
@import '../styles/block-with-image';
|
||||||
|
@import '../styles/block-with-left-image';
|
||||||
|
@import '../styles/block-with-right-image';
|
||||||
|
|
||||||
//<!-- Latest compiled and minified CSS -->
|
//<!-- Latest compiled and minified CSS -->
|
||||||
//<link
|
//<link
|
||||||
|
|||||||
@ -73,8 +73,8 @@ const generateIcons = ( ): IconDescriptor[] => {
|
|||||||
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Yoga App",
|
title: "Reverseyoga",
|
||||||
description: "Yoga App",
|
description: "Reverseyoga - Yoga mindenkinek",
|
||||||
icons: generateIcons(),
|
icons: generateIcons(),
|
||||||
manifest: "./assets/images/favicon/manifest.json",
|
manifest: "./assets/images/favicon/manifest.json",
|
||||||
other: {
|
other: {
|
||||||
|
|||||||
@ -5,7 +5,6 @@ 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 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";
|
||||||
@ -17,6 +16,7 @@ export default async function Home() {
|
|||||||
const pageData = await webApi.getHomePage();
|
const pageData = await webApi.getHomePage();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
common,
|
||||||
header,
|
header,
|
||||||
ourServices,
|
ourServices,
|
||||||
aboutUs,
|
aboutUs,
|
||||||
@ -26,18 +26,18 @@ export default async function Home() {
|
|||||||
blogs,
|
blogs,
|
||||||
subscribeNow,
|
subscribeNow,
|
||||||
footer,
|
footer,
|
||||||
feedbacks
|
|
||||||
} = pageData;
|
} = pageData;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{ header && <MainHeaderComponent config={header}/> }
|
{ header && <MainHeaderComponent config={header} common={common} /> }
|
||||||
{ aboutUs && <AboutUsComponent data={aboutUs} /> }
|
{ aboutUs && <AboutUsComponent data={aboutUs} /> }
|
||||||
{ ourServices && <OurServicesComponent config={ourServices}/> }
|
{ ourServices && <OurServicesComponent config={ourServices}/> }
|
||||||
{ ourSpecialities && <OurSpecialitiesComponent config={ourSpecialities} /> }
|
{ ourSpecialities && <OurSpecialitiesComponent config={ourSpecialities} /> }
|
||||||
{ contactUs && <ContactUsComponent contactUs={contactUs} /> }
|
{ contactUs && <ContactUsComponent contactUs={contactUs} /> }
|
||||||
{ prices && <PricingComponent config={prices}/> }
|
{ prices && <PricingComponent config={prices}/> }
|
||||||
{ feedbacks && <FeedbackComponent config={feedbacks} /> }
|
{/*{ feedbacks && <FeedbackComponent config={feedbacks} /> }*/}
|
||||||
{ blogs && <BlogPostsComponent config={blogs} /> }
|
{ blogs && blogs.posts?.length && <BlogPostsComponent config={blogs} /> }
|
||||||
{ subscribeNow && <SubscribeComponent config={subscribeNow} /> }
|
{ subscribeNow && <SubscribeComponent config={subscribeNow} /> }
|
||||||
{ footer && <FooterComponent config={footer} /> }
|
{ footer && <FooterComponent config={footer} /> }
|
||||||
<AosComponent />
|
<AosComponent />
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import AosComponent from "@/components/aos.component";
|
import AosComponent from "@/components/aos.component";
|
||||||
import PricingComponent from "@/components/pricing.component";
|
import PricingComponent from "@/components/pricing.component";
|
||||||
import BlogPostsComponent from "@/components/blog.posts.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 YogaDiscountComponent from "@/components/yogaDiscountComponent";
|
import YogaDiscountComponent from "@/components/yogaDiscountComponent";
|
||||||
@ -19,7 +18,6 @@ export default async function PricesPage( ) {
|
|||||||
description,
|
description,
|
||||||
price,
|
price,
|
||||||
discount,
|
discount,
|
||||||
blogs,
|
|
||||||
subscribe,
|
subscribe,
|
||||||
footer,
|
footer,
|
||||||
common
|
common
|
||||||
@ -29,7 +27,6 @@ export default async function PricesPage( ) {
|
|||||||
<SubHeaderComponent header={{header1:header,description}} common={common}/>
|
<SubHeaderComponent header={{header1:header,description}} common={common}/>
|
||||||
{ price && <PricingComponent config={price}/> }
|
{ price && <PricingComponent config={price}/> }
|
||||||
{ discount && <YogaDiscountComponent config={discount} /> }
|
{ discount && <YogaDiscountComponent config={discount} /> }
|
||||||
{ blogs && <BlogPostsComponent config={blogs} /> }
|
|
||||||
{ subscribe && <SubscribeComponent config={subscribe} /> }
|
{ subscribe && <SubscribeComponent config={subscribe} /> }
|
||||||
{ footer && <FooterComponent config={footer} /> }
|
{ footer && <FooterComponent config={footer} /> }
|
||||||
<AosComponent />
|
<AosComponent />
|
||||||
|
|||||||
@ -110,10 +110,8 @@ export async function GET() {
|
|||||||
// 'Uncomment this file and remove this line. You can delete this file when you are finished.',
|
// 'Uncomment this file and remove this line. You can delete this file when you are finished.',
|
||||||
// });
|
// });
|
||||||
try {
|
try {
|
||||||
console.info("get request")
|
|
||||||
strapiApi.getHomePage();
|
strapiApi.getHomePage();
|
||||||
|
|
||||||
console.info("begin")
|
|
||||||
await connectionPool.query(`BEGIN`);
|
await connectionPool.query(`BEGIN`);
|
||||||
await seedUsers();
|
await seedUsers();
|
||||||
await seedCustomers();
|
await seedCustomers();
|
||||||
|
|||||||
39
yoga-app/src/app/serviceList/page.tsx
Normal file
39
yoga-app/src/app/serviceList/page.tsx
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import React from "react";
|
||||||
|
import AosComponent from "@/components/aos.component";
|
||||||
|
import FooterComponent from "@/components/footer.component";
|
||||||
|
import SubscribeComponent from "@/components/subscribe.component";
|
||||||
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
import SubHeaderComponent from "@/components/subHeader.component";
|
||||||
|
import SingleServiceComponent from "@/components/single.service.component";
|
||||||
|
import {sortServicesByPriority} from "@/util/sorting";
|
||||||
|
|
||||||
|
export default async function Services() {
|
||||||
|
const {
|
||||||
|
header,
|
||||||
|
description,
|
||||||
|
footer,
|
||||||
|
subscribeNow,
|
||||||
|
common,
|
||||||
|
services
|
||||||
|
} = await strapiApi.getServiceListPage();
|
||||||
|
const sortedServices = services ? [...services] : [];
|
||||||
|
sortedServices.sort( sortServicesByPriority )
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<SubHeaderComponent header={{header1:header,description}} common={common}/>
|
||||||
|
{
|
||||||
|
sortedServices.map( (singleService,index) => {
|
||||||
|
return (
|
||||||
|
<SingleServiceComponent key={singleService.id} config={singleService} index={index}/>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
{ subscribeNow && <SubscribeComponent config={subscribeNow} /> }
|
||||||
|
{ footer && <FooterComponent config={footer} /> }
|
||||||
|
<AosComponent />
|
||||||
|
</>
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const dynamic = 'force-dynamic'
|
||||||
@ -27,16 +27,21 @@ export default async function ServiceArticlePage({params}: {
|
|||||||
}) {
|
}) {
|
||||||
const {slug} = await params
|
const {slug} = await params
|
||||||
|
|
||||||
|
console.info("service slug",slug);
|
||||||
const servicePage = await strapiApi.getServicePage();
|
const servicePage = await strapiApi.getServicePage();
|
||||||
if (!servicePage) {
|
if (!servicePage) {
|
||||||
return notFound()
|
return notFound()
|
||||||
}
|
}
|
||||||
|
console.info("Servicepage found");
|
||||||
const {subscribeNow, footer, common} = servicePage;
|
const {subscribeNow, footer, common} = servicePage;
|
||||||
const servicesByName = await strapiApi.getService(slug);
|
const servicesByName = await strapiApi.getService(slug);
|
||||||
|
console.info("servicesByName",servicesByName);
|
||||||
|
|
||||||
if (!servicesByName || servicesByName.length === 0) {
|
if (!servicesByName || servicesByName.length === 0) {
|
||||||
return notFound();
|
return notFound();
|
||||||
}
|
}
|
||||||
const selectedService = servicesByName[0];
|
const selectedService = servicesByName[0];
|
||||||
|
console.info("selected service",selectedService)
|
||||||
if ( !selectedService?.article?.length ) {
|
if ( !selectedService?.article?.length ) {
|
||||||
return notFound();
|
return notFound();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import SubHeaderComponent from "@/components/subHeader.component";
|
|||||||
|
|
||||||
export default async function Services() {
|
export default async function Services() {
|
||||||
const {
|
const {
|
||||||
header,
|
header = undefined,
|
||||||
description,
|
description,
|
||||||
ourServices,
|
ourServices,
|
||||||
contactUs,
|
contactUs,
|
||||||
@ -22,7 +22,7 @@ export default async function Services() {
|
|||||||
footer,
|
footer,
|
||||||
subscribe,
|
subscribe,
|
||||||
common
|
common
|
||||||
} = await strapiApi.getServicesPage();
|
} = await strapiApi.getServicesPage()
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<SubHeaderComponent header={{header1:header,description}} common={common}/>
|
<SubHeaderComponent header={{header1:header,description}} common={common}/>
|
||||||
|
|||||||
@ -2,13 +2,17 @@ import YogaImageComponent from "@/components/yoga.image.component";
|
|||||||
import {
|
import {
|
||||||
YogaAboutUsWithBoxesComponent_Plain
|
YogaAboutUsWithBoxesComponent_Plain
|
||||||
} from "@/types/generated-strapi-interfaces/api/yoga-about-us-with-boxes-component";
|
} from "@/types/generated-strapi-interfaces/api/yoga-about-us-with-boxes-component";
|
||||||
|
import {StrapiFile} from "@/types/types";
|
||||||
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
config: YogaAboutUsWithBoxesComponent_Plain
|
config: YogaAboutUsWithBoxesComponent_Plain
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function AboutUsWithBoxesComponent({ config: {title,header,description, box1,box2,box3,box4}}: Props){
|
export default function AboutUsWithBoxesComponent({ config: {title,header,description, image, box1,box2,box3,box4}}: Props){
|
||||||
|
|
||||||
|
const imageFile: StrapiFile = image as StrapiFile;
|
||||||
|
const imageUrl = strapiApi.getImageUrl(imageFile?.url)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="aboutpage_aboutus_section">
|
<section className="aboutpage_aboutus_section">
|
||||||
@ -16,7 +20,7 @@ export default function AboutUsWithBoxesComponent({ config: {title,header,descri
|
|||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-lg-7 col-md-6 col-sm-12 col-xs-12">
|
<div className="col-lg-7 col-md-6 col-sm-12 col-xs-12">
|
||||||
<div className="aboutpage_aboutus_image">
|
<div className="aboutpage_aboutus_image">
|
||||||
<figure className="mb-0"><YogaImageComponent src="./assets/images/about_page_aboutus_image.png" alt="" className="img-fluid" /></figure>
|
<figure className="mb-0"><YogaImageComponent src={imageUrl} alt="" className="img-fluid" /></figure>
|
||||||
</div>
|
</div>
|
||||||
<figure className="aboutus_top_shape left_shape mb-0">
|
<figure className="aboutus_top_shape left_shape mb-0">
|
||||||
<YogaImageComponent src="./assets/images/aboutus_top_shape.png" alt="" className="img-fluid" />
|
<YogaImageComponent src="./assets/images/aboutus_top_shape.png" alt="" className="img-fluid" />
|
||||||
|
|||||||
@ -10,7 +10,6 @@ export default function AchievementsComponent({
|
|||||||
title,header,description
|
title,header,description
|
||||||
}
|
}
|
||||||
}: Props){
|
}: Props){
|
||||||
console.info("achievements",achievements)
|
|
||||||
return (
|
return (
|
||||||
<section className="achievement_section">
|
<section className="achievement_section">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
.textCenter{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
@ -3,6 +3,10 @@ import {YogaAchivement_Plain} from "@/types/generated-strapi-interfaces/api/yoga
|
|||||||
import {StrapiFile} from "@/types/types";
|
import {StrapiFile} from "@/types/types";
|
||||||
import strapiApi from "@/api/strapi/strapi-api";
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
|
||||||
|
import styles from './achievements.item.component.module.css';
|
||||||
|
import clsx from "clsx";
|
||||||
|
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
achievement: YogaAchivement_Plain
|
achievement: YogaAchivement_Plain
|
||||||
|
|
||||||
@ -15,7 +19,7 @@ const imageFile: StrapiFile = image as StrapiFile;
|
|||||||
return (
|
return (
|
||||||
<div className="col-lg-2 col-md-4 col-sm-6 col-xs-12">
|
<div className="col-lg-2 col-md-4 col-sm-6 col-xs-12">
|
||||||
<div className="logo_wrapper">
|
<div className="logo_wrapper">
|
||||||
<figure className="mb-0"><YogaImageComponent src={strapiApi.getImageUrl(imageFile?.url)} alt="" className="img-fluid"/></figure>
|
<figure className="mb-0"><YogaImageComponent src={strapiApi.getImageUrl(imageFile?.url)} alt="" className={clsx(styles.textCenter, "img-fluid")}/></figure>
|
||||||
<div className="logo_content">
|
<div className="logo_content">
|
||||||
{description}
|
{description}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
35
yoga-app/src/components/block.with.image.component.tsx
Normal file
35
yoga-app/src/components/block.with.image.component.tsx
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import {ButtonConfig, ImageConfig} from "@/types/types";
|
||||||
|
import {BlocksContent} from "@strapi/blocks-react-renderer";
|
||||||
|
import BlockWithRightImage from "@/components/block.with.right.image.component";
|
||||||
|
import BlockWithLeftImage from "@/components/block.with.left.image.component";
|
||||||
|
|
||||||
|
|
||||||
|
export interface BlockWithImageComponentProps {
|
||||||
|
id?: string;
|
||||||
|
title?: string;
|
||||||
|
header?: string;
|
||||||
|
block: BlocksContent;
|
||||||
|
image: ImageConfig;
|
||||||
|
button?: ButtonConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function BlockWithImageComponent({
|
||||||
|
block,
|
||||||
|
image,
|
||||||
|
id,
|
||||||
|
title,
|
||||||
|
header,
|
||||||
|
button
|
||||||
|
}: BlockWithImageComponentProps) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{image?.position == 'Right' && <BlockWithRightImage
|
||||||
|
block={block} image={image} id={id} title={title}
|
||||||
|
header={header}
|
||||||
|
button={button}/>}
|
||||||
|
{image?.position == 'Left' && <BlockWithLeftImage block={block} image={image} id={id} title={title}
|
||||||
|
header={header}
|
||||||
|
button={button}/>}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
.leftImage {
|
||||||
|
/*border-top-left-radius: 200px;*/
|
||||||
|
/*border-bottom-right-radius: 200px;*/
|
||||||
|
/*margin: -150px 12px 12px 0;*/
|
||||||
|
}
|
||||||
|
|
||||||
50
yoga-app/src/components/block.with.left.image.component.tsx
Normal file
50
yoga-app/src/components/block.with.left.image.component.tsx
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import YogaImageComponent from "@/components/yoga.image.component";
|
||||||
|
import NextBlocksRenderer from "@/components/next.blocks.renderer";
|
||||||
|
import {BlockWithImageComponentProps} from "@/components/block.with.image.component";
|
||||||
|
import styles from './block.with.left.image.component.module.css';
|
||||||
|
import clsx from "clsx";
|
||||||
|
|
||||||
|
|
||||||
|
export default function BlockWithLeftImage ( {
|
||||||
|
id,title,header, image: {
|
||||||
|
url,
|
||||||
|
},block,button
|
||||||
|
} : BlockWithImageComponentProps){
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section className={clsx("block_with_left_image_section","block_with_image","block_with_left_image",styles.blockWithLeftImage)} id={id}>
|
||||||
|
<div className="container">
|
||||||
|
<div className="block_with_left_image_box">
|
||||||
|
<div className="row">
|
||||||
|
{ url && <div className="block_with_left_image_image d-lg-none d-md-none col-sm-12 col-xs-12">
|
||||||
|
<figure className="mb-0">
|
||||||
|
<YogaImageComponent src={url} alt=""
|
||||||
|
className={clsx("img-fluid", styles.leftImage)}/>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12" data-aos="fade-up">
|
||||||
|
<div className={ clsx("block_with_image_content","block_with_image_content","block_with_left_image_content",styles.blockLeftblock_with_imageContent)}>
|
||||||
|
{url && <div className="block_with_left_image_image d-lg-block d-md-block d-sm-none d-xs-none d-none">
|
||||||
|
<figure className="mb-0"><YogaImageComponent src={url} alt="" className={clsx("img-fluid", "float-left", styles.leftImage)}/></figure>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
{title && <h5>{title}</h5> }
|
||||||
|
{header && <h2>{header}</h2> }
|
||||||
|
<NextBlocksRenderer content={ block } />
|
||||||
|
<div className="btn_wrapper">
|
||||||
|
{button && <a href={button.link} className="text-decoration-none read_more_btn">{button.label}</a>}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<figure className="block_with_image_left_shape left_shape mb-0">
|
||||||
|
<YogaImageComponent src="./assets/images/our_block_with_image_shape.png" alt="" className="img-fluid" />
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
.rightImage {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
53
yoga-app/src/components/block.with.right.image.component.tsx
Normal file
53
yoga-app/src/components/block.with.right.image.component.tsx
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import YogaImageComponent from "@/components/yoga.image.component";
|
||||||
|
import {BlockWithImageComponentProps} from "@/components/block.with.image.component";
|
||||||
|
import NextBlocksRenderer from "@/components/next.blocks.renderer";
|
||||||
|
import styles from './block.with.right.image.component.module.css';
|
||||||
|
import clsx from "clsx";
|
||||||
|
|
||||||
|
export default function BlockWithRightImage({
|
||||||
|
id, title, header, block, button, image: {
|
||||||
|
url,
|
||||||
|
},
|
||||||
|
}: BlockWithImageComponentProps) {
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section className={clsx("block_with_right_image_section","block_with_image","block_with_right_image")} id={id}>
|
||||||
|
<div className="container">
|
||||||
|
<div className="block_with_image_box">
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-lg-12 col-md-12 col-sm-12 col-xs-12" data-aos="fade-up">
|
||||||
|
<div className={ clsx("block_with_right_image_content","block-with-image-content","block-with-right-image-content")}>
|
||||||
|
{
|
||||||
|
url && <div className="block_with_right_image_image d-lg-block d-md-block d-sm-none d-xs-none d-none">
|
||||||
|
<figure className="mb-0">
|
||||||
|
<YogaImageComponent src={url} alt=""
|
||||||
|
className={clsx("img-fluid", "float-right", styles.rightImage)}/>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
{title && <h5>{title}</h5>}
|
||||||
|
{header && <h2>{header}</h2>}
|
||||||
|
<NextBlocksRenderer content={block}/>
|
||||||
|
<div className="btn_wrapper">
|
||||||
|
{button && <a href={button.link}
|
||||||
|
className="text-decoration-none read_more_btn">{button.label}</a>}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{ url && <div className="block_with_right_image_image d-lg-none d-md-none col-sm-12 col-xs-12">
|
||||||
|
<figure className="mb-0">
|
||||||
|
<YogaImageComponent src={url} alt=""
|
||||||
|
className={clsx("img-fluid", "float-right", styles.rightImage)}/>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<figure className="block_with_right_image_right_shape right_shape mb-0">
|
||||||
|
<YogaImageComponent src="./assets/images/our_block_with_image_shape.png" alt="" className="img-fluid"/>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -12,6 +12,7 @@ const pathToBreadCrumbs = (path: string) => {
|
|||||||
'services' : 'Szolgáltatásaim',
|
'services' : 'Szolgáltatásaim',
|
||||||
'prices' : 'Áraim',
|
'prices' : 'Áraim',
|
||||||
'faq' : 'GYIK',
|
'faq' : 'GYIK',
|
||||||
|
'serviceList' : 'Szolgáltatások',
|
||||||
}
|
}
|
||||||
if ( mapping.hasOwnProperty(path)){
|
if ( mapping.hasOwnProperty(path)){
|
||||||
return mapping[path];
|
return mapping[path];
|
||||||
@ -24,9 +25,6 @@ const NextBreadcrumb = () => {
|
|||||||
const paths = usePathname()
|
const paths = usePathname()
|
||||||
const pathNames = paths.split('/').filter( path => path )
|
const pathNames = paths.split('/').filter( path => path )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="btn_wrapper">
|
<div className="btn_wrapper">
|
||||||
<span className="sub_home_span">{pathToBreadCrumbs( "/" )} </span>
|
<span className="sub_home_span">{pathToBreadCrumbs( "/" )} </span>
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
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";
|
import {YogaFooter_Plain} from "@/types/generated-strapi-interfaces/api/yoga-footer";
|
||||||
|
import {StrapiFile} from "@/types/types";
|
||||||
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
config: YogaFooter_Plain
|
config: YogaFooter_Plain
|
||||||
@ -14,10 +16,13 @@ const FooterComponent = ({ config: {
|
|||||||
contactUsEmail,
|
contactUsEmail,
|
||||||
contactUsLocation,
|
contactUsLocation,
|
||||||
contactUsPhoneNumber,
|
contactUsPhoneNumber,
|
||||||
copyRight
|
copyRight,
|
||||||
|
logo = undefined
|
||||||
} }: Props) => {
|
} }: Props) => {
|
||||||
|
|
||||||
|
const imageFile: StrapiFile = logo as StrapiFile;
|
||||||
|
const imageUrl = strapiApi.getImageUrl(imageFile?.url)
|
||||||
|
console.info("imageUrl", imageUrl);
|
||||||
|
|
||||||
return (<section className="footer-section" id="footer_section">
|
return (<section className="footer-section" id="footer_section">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
@ -26,7 +31,7 @@ const FooterComponent = ({ config: {
|
|||||||
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-lg-block d-none">
|
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12 d-lg-block d-none">
|
||||||
<div className="footer_logo">
|
<div className="footer_logo">
|
||||||
<Link href="/index.html" className="text-decoration-none">
|
<Link href="/index.html" className="text-decoration-none">
|
||||||
<figure className="mb-0"><YogaImageComponent src="/assets/images/footer_logo.png" alt=""
|
<figure className="mb-0"><YogaImageComponent src={imageUrl} alt=""
|
||||||
className="img-fluid"/></figure>
|
className="img-fluid"/></figure>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
69
yoga-app/src/components/listing.component.tsx
Normal file
69
yoga-app/src/components/listing.component.tsx
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
interface ListingComponentProps {
|
||||||
|
text?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ListingComponent: React.FC<ListingComponentProps> = ({ text }) => {
|
||||||
|
if (!text) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const lines = text.split('\n');
|
||||||
|
const elements: React.ReactNode[] = [];
|
||||||
|
let currentParagraph: string[] = [];
|
||||||
|
let currentList: React.ReactNode[] = [];
|
||||||
|
|
||||||
|
const flushParagraph = () => {
|
||||||
|
if (currentParagraph.length > 0) {
|
||||||
|
elements.push(<p key={elements.length}>{currentParagraph.join('\n')}</p>);
|
||||||
|
currentParagraph = [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const flushList = () => {
|
||||||
|
if (currentList.length > 0) {
|
||||||
|
elements.push(<ul key={elements.length}>{currentList}</ul>);
|
||||||
|
currentList = [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let currentListItemContent: string[] = [];
|
||||||
|
|
||||||
|
const flushListItem = () => {
|
||||||
|
if(currentListItemContent.length > 0) {
|
||||||
|
currentList.push(<li key={currentList.length}>{currentListItemContent.join('\n')}</li>);
|
||||||
|
currentListItemContent = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const line of lines) {
|
||||||
|
const trimmedLine = line.trim();
|
||||||
|
|
||||||
|
if (trimmedLine.startsWith('- ') || trimmedLine.startsWith('* ')) {
|
||||||
|
flushParagraph(); // End any ongoing paragraph
|
||||||
|
flushListItem(); // End previous list item
|
||||||
|
currentListItemContent.push(trimmedLine.substring(2));
|
||||||
|
} else if (trimmedLine === '') {
|
||||||
|
flushListItem();
|
||||||
|
flushList(); // An empty line ends the list
|
||||||
|
} else {
|
||||||
|
if (currentList.length > 0 || currentListItemContent.length > 0) {
|
||||||
|
// This line belongs to the current list item
|
||||||
|
currentListItemContent.push(line);
|
||||||
|
} else {
|
||||||
|
// This is a paragraph line
|
||||||
|
flushList();
|
||||||
|
currentParagraph.push(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flushListItem();
|
||||||
|
flushList();
|
||||||
|
flushParagraph();
|
||||||
|
|
||||||
|
return <>{elements}</>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ListingComponent;
|
||||||
@ -4,8 +4,10 @@ import {MAIN_MENU} from "@/util/const";
|
|||||||
import Nav from "@/components/nav.component";
|
import Nav from "@/components/nav.component";
|
||||||
import {StrapiFile} from "@/types/types";
|
import {StrapiFile} from "@/types/types";
|
||||||
import strapiApi from "@/api/strapi/strapi-api";
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
import { YogaCommon_Plain } from "@/types/generated-strapi-interfaces/api/yoga-common";
|
||||||
export interface Props{
|
export interface Props{
|
||||||
config: YogaMainHeaderComponent_Plain
|
config: YogaMainHeaderComponent_Plain,
|
||||||
|
common?: YogaCommon_Plain
|
||||||
}
|
}
|
||||||
const MainHeaderComponent = ({ config: {
|
const MainHeaderComponent = ({ config: {
|
||||||
title,
|
title,
|
||||||
@ -15,15 +17,17 @@ const MainHeaderComponent = ({ config: {
|
|||||||
headerIType,
|
headerIType,
|
||||||
image
|
image
|
||||||
|
|
||||||
}}: Props) => {
|
},common}: Props) => {
|
||||||
|
|
||||||
const imageFile: StrapiFile = image as StrapiFile;
|
const imageFile: StrapiFile = image as StrapiFile;
|
||||||
const imageSrc = imageFile ? strapiApi.getImageUrl(imageFile?.url): undefined;
|
const imageSrc = imageFile ? strapiApi.getImageUrl(imageFile?.url): undefined;
|
||||||
|
const logoImageFile: StrapiFile = (common?.logoImage) as StrapiFile;
|
||||||
|
const logoImageSrc = logoImageFile ? strapiApi.getImageUrl(logoImageFile.url) : undefined;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="banner-section-outer">
|
<div className="banner-section-outer">
|
||||||
<header>
|
<header>
|
||||||
<Nav menuItems={MAIN_MENU} imageSrc={imageSrc} />
|
<Nav menuItems={MAIN_MENU} imageSrc={logoImageSrc} />
|
||||||
</header>
|
</header>
|
||||||
{/*<!-- SOCIAL ICONS -->*/}
|
{/*<!-- SOCIAL ICONS -->*/}
|
||||||
<div className="social-icons left_icons float-left d-table" data-aos="fade-down">
|
<div className="social-icons left_icons float-left d-table" data-aos="fade-down">
|
||||||
@ -60,7 +64,7 @@ const MainHeaderComponent = ({ config: {
|
|||||||
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
<div className="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||||
<div className="banner-section-image">
|
<div className="banner-section-image">
|
||||||
<figure className="mb-0">
|
<figure className="mb-0">
|
||||||
<YogaImageComponent src="/assets/images/banner_right_image.png" alt="" />
|
<YogaImageComponent src={imageSrc!} alt="" />
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,22 +1,22 @@
|
|||||||
"use client"
|
"use client"
|
||||||
import {FC} from "react";
|
|
||||||
import YogaImageComponent from "@/components/yoga.image.component";
|
import YogaImageComponent from "@/components/yoga.image.component";
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
export interface MenuItem{
|
export interface MenuItem {
|
||||||
href?: string;
|
href?: string;
|
||||||
label: string;
|
label: string;
|
||||||
children?: MenuItem[];
|
children?: MenuItem[];
|
||||||
active?: boolean,
|
active?: boolean,
|
||||||
styleClass?: string;
|
styleClass?: string;
|
||||||
}
|
}
|
||||||
export interface Props{
|
|
||||||
|
export interface Props {
|
||||||
menuItems: MenuItem[];
|
menuItems: MenuItem[];
|
||||||
imageSrc?: string;
|
imageSrc?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Nav: FC<Props> = ({menuItems, imageSrc}:Props) => {
|
const Nav = ({menuItems, imageSrc}: Props) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<header>
|
<header>
|
||||||
@ -36,7 +36,8 @@ const Nav: FC<Props> = ({menuItems, imageSrc}:Props) => {
|
|||||||
</button>
|
</button>
|
||||||
<div className="collapse navbar-collapse" id="navbarSupportedContent">
|
<div className="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
<ul className="navbar-nav">
|
<ul className="navbar-nav">
|
||||||
{menuItems.map( (menuItem,index) => <MenuItemComponent key={"nav"+menuItem.href+"_"+index} menuItem={menuItem} />)}
|
{menuItems.map((menuItem, index) => <MenuItemComponent
|
||||||
|
key={"nav" + menuItem.href + "_" + index} menuItem={menuItem}/>)}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@ -46,32 +47,35 @@ const Nav: FC<Props> = ({menuItems, imageSrc}:Props) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MenuItemProps{
|
interface MenuItemProps {
|
||||||
menuItem: MenuItem,
|
menuItem: MenuItem,
|
||||||
dropdownItem?: boolean,
|
dropdownItem?: boolean,
|
||||||
}
|
}
|
||||||
const MenuItemComponent: FC<MenuItemProps> = ({menuItem, dropdownItem}: MenuItemProps) => {
|
|
||||||
if ( !menuItem ){
|
const MenuItemComponent = ({menuItem, dropdownItem}: MenuItemProps) => {
|
||||||
|
if (!menuItem) {
|
||||||
return (<></>);
|
return (<></>);
|
||||||
}
|
}
|
||||||
if ( !menuItem.children || menuItem.children.length == 0 ){
|
if (!menuItem.children || menuItem.children.length == 0) {
|
||||||
return (
|
return (
|
||||||
// <li className="nav-item active">
|
// <li className="nav-item active">
|
||||||
<li className={clsx("nav-item", {"active": menuItem.active})}>
|
<li className={clsx("nav-item", {"active": menuItem.active})}>
|
||||||
<a className={clsx("nav-link", {"dropdown-item":dropdownItem},menuItem.styleClass)} href={menuItem.href}>{menuItem.label}</a>
|
<a className={clsx("nav-link", {"dropdown-item": dropdownItem}, menuItem.styleClass)}
|
||||||
|
href={menuItem.href!}>{menuItem.label}</a>
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li className={clsx("nav-item", "dropdown",{"active": menuItem.active})}>
|
<li className={clsx("nav-item", "dropdown", {"active": menuItem.active})}>
|
||||||
<a className="nav-link dropdown-toggle dropdown-color navbar-text-color" href="#"
|
<a className="nav-link dropdown-toggle dropdown-color navbar-text-color" href="#"
|
||||||
role="button" data-toggle="dropdown" aria-haspopup="true"
|
role="button" data-toggle="dropdown" aria-haspopup="true"
|
||||||
aria-expanded="false">{menuItem.label}</a>
|
aria-expanded="false">{menuItem.label}</a>
|
||||||
<div className="dropdown-menu drop-down-content">
|
<div className="dropdown-menu drop-down-content">
|
||||||
<ul className="list-unstyled drop-down-pages">
|
<ul className="list-unstyled drop-down-pages">
|
||||||
{
|
{
|
||||||
menuItem.children.map((item,index) => <MenuItemComponent key={"child_"+item.href+"_"+index} menuItem={item} dropdownItem={true}/>)
|
menuItem.children.map((item, index) => <MenuItemComponent
|
||||||
|
key={"child_" + item.href + "_" + index} menuItem={item} dropdownItem={true}/>)
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import "slick-carousel/slick/slick.css";
|
|||||||
import "slick-carousel/slick/slick-theme.css";
|
import "slick-carousel/slick/slick-theme.css";
|
||||||
import Slider ,{Settings} from "react-slick";
|
import Slider ,{Settings} from "react-slick";
|
||||||
import OurServiceItemComponent from "@/components/our.services.item.component";
|
import OurServiceItemComponent from "@/components/our.services.item.component";
|
||||||
|
import {sortServicesByPriority} from "@/util/sorting";
|
||||||
|
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
@ -67,7 +68,8 @@ const OurServiceComponent = ({config: {title,header,description,services}}: Prop
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
console.info(settings)
|
const sortedServices = services ? [...services] : [];
|
||||||
|
sortedServices.sort( sortServicesByPriority )
|
||||||
return (
|
return (
|
||||||
<section className="services_section">
|
<section className="services_section">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
@ -89,7 +91,7 @@ const OurServiceComponent = ({config: {title,header,description,services}}: Prop
|
|||||||
{/*</div>*/}
|
{/*</div>*/}
|
||||||
|
|
||||||
<Slider {...settings}>
|
<Slider {...settings}>
|
||||||
{services.map(
|
{sortedServices.map(
|
||||||
itemConfig =>
|
itemConfig =>
|
||||||
<OurServiceItemComponent config={itemConfig} key={itemConfig.id} />
|
<OurServiceItemComponent config={itemConfig} key={itemConfig.id} />
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -31,6 +31,11 @@
|
|||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.roundedImage{
|
||||||
|
border-top-left-radius: 60px;
|
||||||
|
border-bottom-right-radius: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
/*:global(div.slick-active):nth-last-child(n!*){*/
|
/*:global(div.slick-active):nth-last-child(n!*){*/
|
||||||
/* padding-left: 6px;*/
|
/* padding-left: 6px;*/
|
||||||
/* padding-right: 0;*!*/
|
/* padding-right: 0;*!*/
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import {StrapiFile} from "@/types/types";
|
|||||||
import strapiApi from "@/api/strapi/strapi-api";
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
import styles from './our.services.item.component.module.css'
|
import styles from './our.services.item.component.module.css'
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import classNames from "classnames";
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
config: YogaSingleService_Plain
|
config: YogaSingleService_Plain
|
||||||
@ -14,7 +15,7 @@ const OurServiceItemComponent = ({config: {header,description,image,name}}: Prop
|
|||||||
if (!imageFile || !imageFile.url) {
|
if (!imageFile || !imageFile.url) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
const path = '/services/' + name;
|
const path = '/serviceList#' + name;
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<div className={styles.serviceSlide}>
|
<div className={styles.serviceSlide}>
|
||||||
@ -22,7 +23,7 @@ const OurServiceItemComponent = ({config: {header,description,image,name}}: Prop
|
|||||||
<div className="services_box_content">
|
<div className="services_box_content">
|
||||||
<div className="services_box_upper_portion">
|
<div className="services_box_upper_portion">
|
||||||
<figure className="mb-0">
|
<figure className="mb-0">
|
||||||
<YogaImageComponent src={strapiApi.getImageUrl(imageFile.url)} alt="" className="img-fluid"/>
|
<YogaImageComponent src={strapiApi.getImageUrl(imageFile.url)} alt="" className={classNames(styles.roundedImage,"img-fluid" )}/>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
<div className="services_box_lower_portion">
|
<div className="services_box_lower_portion">
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
import YogaImageComponent from "@/components/yoga.image.component";
|
import YogaImageComponent from "@/components/yoga.image.component";
|
||||||
import OurSpecialitiesItemComponent from "@/components/our.specialities.item.component";
|
import OurSpecialitiesItemComponent from "@/components/our.specialities.item.component";
|
||||||
import {YogaSpecialitiesComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-specialities-component";
|
import {YogaSpecialitiesComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-specialities-component";
|
||||||
|
import {StrapiFile} from "@/types/types";
|
||||||
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
config: YogaSpecialitiesComponent_Plain
|
config: YogaSpecialitiesComponent_Plain
|
||||||
@ -14,8 +16,14 @@ const OurSpecialitiesComponent = ({ config: { title,header,description,
|
|||||||
right1,
|
right1,
|
||||||
right2,
|
right2,
|
||||||
right3,
|
right3,
|
||||||
right4
|
right4,
|
||||||
|
image
|
||||||
} }: Props) => {
|
} }: Props) => {
|
||||||
|
|
||||||
|
|
||||||
|
const imageFile: StrapiFile = image as StrapiFile;
|
||||||
|
const imageUrl = strapiApi.getImageUrl(imageFile?.url)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<section className="our_specialties_section">
|
<section className="our_specialties_section">
|
||||||
@ -43,7 +51,7 @@ const OurSpecialitiesComponent = ({ config: { title,header,description,
|
|||||||
</div>
|
</div>
|
||||||
<div className="col-lg-6 col-md-4 col-sm-6 col-xs-12 d-md-block d-none">
|
<div className="col-lg-6 col-md-4 col-sm-6 col-xs-12 d-md-block d-none">
|
||||||
<figure className="specialties_image mb-0">
|
<figure className="specialties_image mb-0">
|
||||||
<YogaImageComponent src="/assets/images/specialties_image.png" alt="" className="img-fluid" />
|
<YogaImageComponent src={imageUrl} alt="" className="img-fluid" />
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12" data-aos="fade-right">
|
<div className="col-lg-3 col-md-4 col-sm-6 col-xs-12" data-aos="fade-right">
|
||||||
|
|||||||
@ -11,7 +11,6 @@ export function PriceItemComponent({config: {header, description, option1,option
|
|||||||
// there are some issues with the strapi generated types
|
// there are some issues with the strapi generated types
|
||||||
const iconFile: StrapiFile = icon as StrapiFile;
|
const iconFile: StrapiFile = icon as StrapiFile;
|
||||||
const imageFile: StrapiFile = image as StrapiFile;
|
const imageFile: StrapiFile = image as StrapiFile;
|
||||||
console.info("image:",strapiApi.getImageUrl(imageFile?.url));
|
|
||||||
return (
|
return (
|
||||||
<div className="col-lg-4 col-md-4 col-sm-6 col-xs-12">
|
<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_content">
|
||||||
|
|||||||
30
yoga-app/src/components/single.service.component.tsx
Normal file
30
yoga-app/src/components/single.service.component.tsx
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import {YogaSingleService_Plain} from "@/types/generated-strapi-interfaces/api/yoga-single-service";
|
||||||
|
import React from "react";
|
||||||
|
import BlockWithImageComponent from "@/components/block.with.image.component";
|
||||||
|
import {ImagePosition, StrapiFile} from "@/types/types";
|
||||||
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
|
||||||
|
|
||||||
|
export interface Props {
|
||||||
|
config: YogaSingleService_Plain,
|
||||||
|
index: number
|
||||||
|
}
|
||||||
|
|
||||||
|
const SingleService = ({config, index}: Props) => {
|
||||||
|
if (!config || !config.article) {
|
||||||
|
return null; // or some fallback UI
|
||||||
|
}
|
||||||
|
|
||||||
|
const {article, articleImage, name, header} = config;
|
||||||
|
let imageUrl: string | undefined = undefined;
|
||||||
|
const strapiFile = articleImage as StrapiFile;
|
||||||
|
imageUrl = strapiApi.getImageUrl(strapiFile?.url);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<BlockWithImageComponent id={name} block={article}
|
||||||
|
image={{position: index % 2 ? ImagePosition.Left : ImagePosition.Right, url: imageUrl}}
|
||||||
|
header={header}/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default SingleService;
|
||||||
@ -25,8 +25,6 @@ const SubHeaderComponent = ( {
|
|||||||
logoImageSrc = strapiApi.getImageUrl(logoImageFile?.url) ;
|
logoImageSrc = strapiApi.getImageUrl(logoImageFile?.url) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.info("image", logoImageSrc);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="sub-banner-section">
|
<div className="sub-banner-section">
|
||||||
<Nav menuItems={MAIN_MENU} imageSrc={logoImageSrc} />
|
<Nav menuItems={MAIN_MENU} imageSrc={logoImageSrc} />
|
||||||
|
|||||||
4
yoga-app/src/components/subscribe.component.module.css
Normal file
4
yoga-app/src/components/subscribe.component.module.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
.roundedImage img{
|
||||||
|
border-bottom-right-radius: 60px;
|
||||||
|
}
|
||||||
@ -3,14 +3,22 @@ import {
|
|||||||
YogaSubscribeNowComponent_Plain
|
YogaSubscribeNowComponent_Plain
|
||||||
} from "@/types/generated-strapi-interfaces/api/yoga-subscribe-now-component";
|
} from "@/types/generated-strapi-interfaces/api/yoga-subscribe-now-component";
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
|
import {StrapiFile} from "@/types/types";
|
||||||
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
import styles from './subscribe.component.module.css'
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
config: YogaSubscribeNowComponent_Plain,
|
config: YogaSubscribeNowComponent_Plain,
|
||||||
styleClass?: string
|
styleClass?: string,
|
||||||
}
|
}
|
||||||
const SubscribeComponent = ({
|
const SubscribeComponent = ({
|
||||||
config: {title,header,placeHolderEmail,buttonSubscribeLabel},
|
config: {title,header,placeHolderEmail,buttonSubscribeLabel, image = undefined},
|
||||||
styleClass
|
styleClass
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
|
const imageFile: StrapiFile = image as StrapiFile;
|
||||||
|
if (!imageFile || !imageFile.url) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<section className={clsx("subscribe_section",styleClass)}>
|
<section className={clsx("subscribe_section",styleClass)}>
|
||||||
<div className="container">
|
<div className="container">
|
||||||
@ -32,8 +40,8 @@ const SubscribeComponent = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-lg-5 col-md-5 col-sm-6 col-xs-12">
|
<div className="col-lg-5 col-md-5 col-sm-6 col-xs-12">
|
||||||
<figure className="subscribe_image mb-0">
|
<figure className={clsx(styles.roundedImage,"subscribe_image","mb-0",)}>
|
||||||
<YogaImageComponent src="/assets/images/subscribe_image.png" alt=""/>
|
<YogaImageComponent src={strapiApi.getImageUrl(imageFile.url)} alt=""/>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import TextWithRightImage from "@/components/text.with.right.image.component";
|
import TextWithRightImage from "@/components/text.with.right.image.component";
|
||||||
import TextWithLeftImage from "@/components/text.with.right.left.component";
|
import TextWithLeftImage from "@/components/text.with.left.image.component";
|
||||||
import {YogaTextWithImageComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-text-with-image-component";
|
import {YogaTextWithImageComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-text-with-image-component";
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import YogaImageComponent from "@/components/yoga.image.component";
|
|||||||
import {YogaTextWithImageComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-text-with-image-component";
|
import {YogaTextWithImageComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-text-with-image-component";
|
||||||
import {StrapiFile} from "@/types/types";
|
import {StrapiFile} from "@/types/types";
|
||||||
import strapiApi from "@/api/strapi/strapi-api";
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
import ListingComponent from "@/components/listing.component";
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
config: YogaTextWithImageComponent_Plain
|
config: YogaTextWithImageComponent_Plain
|
||||||
@ -29,7 +30,7 @@ export default function TextWithLeftImage ({config: {
|
|||||||
<div className="vision_content">
|
<div className="vision_content">
|
||||||
<h5>{title}</h5>
|
<h5>{title}</h5>
|
||||||
<h2>{header}</h2>
|
<h2>{header}</h2>
|
||||||
<p>{description}</p>
|
<ListingComponent text={description} />
|
||||||
<div className="btn_wrapper">
|
<div className="btn_wrapper">
|
||||||
{button && <a href={button.link} className="text-decoration-none read_more_btn">{button.label}</a>}
|
{button && <a href={button.link} className="text-decoration-none read_more_btn">{button.label}</a>}
|
||||||
</div>
|
</div>
|
||||||
@ -2,6 +2,7 @@ import YogaImageComponent from "@/components/yoga.image.component";
|
|||||||
import {YogaTextWithImageComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-text-with-image-component";
|
import {YogaTextWithImageComponent_Plain} from "@/types/generated-strapi-interfaces/api/yoga-text-with-image-component";
|
||||||
import {StrapiFile} from "@/types/types";
|
import {StrapiFile} from "@/types/types";
|
||||||
import strapiApi from "@/api/strapi/strapi-api";
|
import strapiApi from "@/api/strapi/strapi-api";
|
||||||
|
import ListingComponent from "./listing.component";
|
||||||
|
|
||||||
export interface Props{
|
export interface Props{
|
||||||
config: YogaTextWithImageComponent_Plain
|
config: YogaTextWithImageComponent_Plain
|
||||||
@ -22,7 +23,7 @@ export default function TextWithRightImage ({config: {
|
|||||||
<div className="mission_content">
|
<div className="mission_content">
|
||||||
<h5>{title}</h5>
|
<h5>{title}</h5>
|
||||||
<h2>{header}</h2>
|
<h2>{header}</h2>
|
||||||
<p>{description}</p>
|
<ListingComponent text={description} />
|
||||||
<div className="btn_wrapper">
|
<div className="btn_wrapper">
|
||||||
{button && <a href={button.link} className="text-decoration-none read_more_btn">{button.label}</a>}
|
{button && <a href={button.link} className="text-decoration-none read_more_btn">{button.label}</a>}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
1
yoga-app/src/styles/block-with-image.scss
Normal file
1
yoga-app/src/styles/block-with-image.scss
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
||||||
209
yoga-app/src/styles/block-with-left-image.scss
Normal file
209
yoga-app/src/styles/block-with-left-image.scss
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
.block_with_left_image {
|
||||||
|
--y-padding: 45px 0 130px;
|
||||||
|
--y-box-border-radius: 200px;
|
||||||
|
--y-content-padding-top: 150px;
|
||||||
|
--y-btn-font-size: 22px;
|
||||||
|
--y-btn-padding: 24px 44px;
|
||||||
|
--y-image-margin-top: -150px;
|
||||||
|
--y-block-with-right-image-spacing-image: 96px;
|
||||||
|
--y-block-with-image-spacing-main: 66px;
|
||||||
|
|
||||||
|
padding: var(--y-padding);
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&_box {
|
||||||
|
width: 100%;
|
||||||
|
background-color: var(--e-global-color-white);
|
||||||
|
border-radius: var(--y-box-border-radius) 0 var(--y-box-border-radius) 0;
|
||||||
|
box-shadow: 1px 1px 50px rgb(0 0 0 / 7%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
padding-top: var(--y-content-padding-top);
|
||||||
|
padding-left: 40px;
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--e-global-color-secondary);
|
||||||
|
letter-spacing: 3.1px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
color: var(--e-global-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
color: var(--e-global-color-text);
|
||||||
|
padding-right: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn_wrapper .read_more_btn {
|
||||||
|
font-size: var(--y-btn-font-size);
|
||||||
|
line-height: var(--y-btn-font-size);
|
||||||
|
font-weight: 500;
|
||||||
|
padding: var(--y-btn-padding);
|
||||||
|
text-align: center;
|
||||||
|
color: var(--e-global-color-white);
|
||||||
|
display: inline-block;
|
||||||
|
background-color: var(--e-global-color-secondary);
|
||||||
|
border-radius: 35px 0px 35px 0px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--e-global-color-accent);
|
||||||
|
background-color: var(--e-global-color-soft-orange);
|
||||||
|
transform: translateY(-10px);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
left: 0%;
|
||||||
|
right: auto;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
right: 0px;
|
||||||
|
height: 100%;
|
||||||
|
width: 0px;
|
||||||
|
z-index: -1;
|
||||||
|
content: '';
|
||||||
|
color: var(--e-global-color-accent);
|
||||||
|
background-color: var(--e-global-color-soft-orange);
|
||||||
|
transition: all 0.4s cubic-bezier(0.12, 0, 0.38, 1) 0s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p, h1, h2, h3, h4, h5 {
|
||||||
|
padding-right: var(--y-block-with-right-image-spacing-image);
|
||||||
|
padding-left: var(--y-block-with-image-spacing-main);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&_image img {
|
||||||
|
border-top-left-radius: var(--y-box-border-radius);
|
||||||
|
border-bottom-right-radius: var(--y-box-border-radius);
|
||||||
|
margin: var(--y-image-margin-top) 12px 12px -40px;
|
||||||
|
max-width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_left_shape {
|
||||||
|
position: absolute;
|
||||||
|
top: 140px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1440px) {
|
||||||
|
&_left_shape {
|
||||||
|
top: unset;
|
||||||
|
bottom: 15px;
|
||||||
|
img {
|
||||||
|
width: 95px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1199px) {
|
||||||
|
--y-padding: 50px 0 100px;
|
||||||
|
--y-content-padding-top: 80px;
|
||||||
|
--y-btn-font-size: 20px;
|
||||||
|
--y-btn-padding: 22px 40px;
|
||||||
|
--y-image-margin-top: -80px;
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
padding-left: 15px;
|
||||||
|
|
||||||
|
p, h2, h3, h4, h5, h6{
|
||||||
|
padding-left: 55px;
|
||||||
|
padding-right: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 { margin-bottom: 8px; }
|
||||||
|
h2 { margin-bottom: 12px; }
|
||||||
|
p {
|
||||||
|
margin-bottom: 28px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_left_shape {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block_with_left_image_image img{
|
||||||
|
margin-left: -15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 991px) {
|
||||||
|
--y-padding: 35px 0 70px;
|
||||||
|
--y-box-border-radius: 120px;
|
||||||
|
--y-content-padding-top: 40px;
|
||||||
|
--y-btn-font-size: 18px;
|
||||||
|
--y-btn-padding: 20px 35px;
|
||||||
|
--y-image-margin-top: -40px;
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
padding-left: 0;
|
||||||
|
|
||||||
|
p, h2, h3, h4, h5, h6{
|
||||||
|
padding-right: 45px;
|
||||||
|
padding-left: 45px;
|
||||||
|
}
|
||||||
|
h5 { margin-bottom: 5px; }
|
||||||
|
h2 { margin-bottom: 10px; }
|
||||||
|
p {
|
||||||
|
margin-bottom: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.block_with_left_image_image img{
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
--y-padding: 30px 0 60px;
|
||||||
|
--y-box-border-radius: 185px;
|
||||||
|
--y-btn-font-size: 16px;
|
||||||
|
--y-btn-padding: 18px 32px;
|
||||||
|
--y-image-margin-top: 0;
|
||||||
|
|
||||||
|
&_image {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
padding-top: 0;
|
||||||
|
text-align: center;
|
||||||
|
padding-left: 0px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
h2 { margin-bottom: 8px; }
|
||||||
|
p {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
padding: 0 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 575px) {
|
||||||
|
--y-box-border-radius: 118px;
|
||||||
|
--y-btn-font-size: 14px;
|
||||||
|
--y-btn-padding: 16px 30px;
|
||||||
|
|
||||||
|
&_content p {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
&_image img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
221
yoga-app/src/styles/block-with-right-image.scss
Normal file
221
yoga-app/src/styles/block-with-right-image.scss
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
/* About Page Our block_with_image Section Style */
|
||||||
|
|
||||||
|
.block_with_right_image {
|
||||||
|
--y-block-with-right-image-spacing-image: 96px;
|
||||||
|
--y-block-with-image-spacing-main: 66px;
|
||||||
|
--y-block-with-right-image-top-spacing: 150px;
|
||||||
|
--y-box-border-radius: 200px;
|
||||||
|
--y-btn-font-size: 22px;
|
||||||
|
--y-btn-padding: 24px 44px;
|
||||||
|
|
||||||
|
padding: 130px 0 45px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&_image img {
|
||||||
|
max-width: 50%;
|
||||||
|
border-top-left-radius: var(--y-box-border-radius);
|
||||||
|
border-bottom-right-radius: var(--y-box-border-radius);
|
||||||
|
margin: calc(-1 * var(--y-block-with-right-image-top-spacing)) 0 12px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block_with_image_box {
|
||||||
|
width: 100%;
|
||||||
|
background-color: var(--e-global-color-white);
|
||||||
|
border-radius: var(--y-box-border-radius) 0 var(--y-box-border-radius) 0;
|
||||||
|
box-shadow: 1px 1px 50px rgb(0 0 0 / 7%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
padding-top: var(--y-block-with-right-image-top-spacing);
|
||||||
|
padding-left: 96px;
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--e-global-color-secondary);
|
||||||
|
letter-spacing: 3.1px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
color: var(--e-global-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
color: var(--e-global-color-text);
|
||||||
|
padding-right: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn_wrapper .read_more_btn {
|
||||||
|
font-size: var(--y-btn-font-size);
|
||||||
|
line-height: var(--y-btn-font-size);
|
||||||
|
font-weight: 500;
|
||||||
|
padding: var(--y-btn-padding);
|
||||||
|
text-align: center;
|
||||||
|
color: var(--e-global-color-white);
|
||||||
|
display: inline-block;
|
||||||
|
background-color: var(--e-global-color-secondary);
|
||||||
|
border-radius: 35px 0px 35px 0px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--e-global-color-accent);
|
||||||
|
background-color: var(--e-global-color-soft-orange);
|
||||||
|
transform: translateY(-10px);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
left: 0%;
|
||||||
|
right: auto;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
right: 0px;
|
||||||
|
height: 100%;
|
||||||
|
width: 0px;
|
||||||
|
z-index: -1;
|
||||||
|
content: '';
|
||||||
|
color: var(--e-global-color-accent);
|
||||||
|
background-color: var(--e-global-color-soft-orange);
|
||||||
|
transition: all 0.4s cubic-bezier(0.12, 0, 0.38, 1) 0s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p, h1, h2, h3, h4, h5 {
|
||||||
|
padding-right: var(--y-block-with-right-image-spacing-image);
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&_right_shape {
|
||||||
|
position: absolute;
|
||||||
|
top: 210px;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1440px) {
|
||||||
|
&_right_shape {
|
||||||
|
top: 15px;
|
||||||
|
img {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_image img {
|
||||||
|
margin-top: calc(-1 * var(--y-block-with-right-image-top-spacing));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1199px) {
|
||||||
|
--y-block-with-right-image-top-spacing: 135px;
|
||||||
|
--y-btn-font-size: 20px;
|
||||||
|
--y-btn-padding: 22px 40px;
|
||||||
|
padding: 100px 0 50px;
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
padding-left: 70px;
|
||||||
|
p, h2, h3, h4, h5, h6{
|
||||||
|
padding-right: 70px;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-bottom: 28px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_right_shape {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&_image img {
|
||||||
|
margin-top: calc(-1 * var(--y-block-with-right-image-top-spacing));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 991px) {
|
||||||
|
--y-block-with-right-image-top-spacing: 70px;
|
||||||
|
--y-box-border-radius: 140px;
|
||||||
|
--y-btn-font-size: 18px;
|
||||||
|
--y-btn-padding: 20px 35px;
|
||||||
|
padding: 70px 0 35px;
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
|
||||||
|
p, h2, h3, h4, h5, h6{
|
||||||
|
padding-right: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
padding-left: 45px;
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-bottom: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_image img {
|
||||||
|
margin-top: calc(-1 * var(--y-block-with-right-image-top-spacing));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
--y-block-with-right-image-top-spacing: 60px;
|
||||||
|
--y-box-border-radius: 185px;
|
||||||
|
--y-btn-font-size: 16px;
|
||||||
|
--y-btn-padding: 18px 32px;
|
||||||
|
padding: 60px 0 30px;
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
padding-left: 0;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
h2,h3,h4,h5,h6 {
|
||||||
|
padding-right: 0;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
padding: 0 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_image img {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 575px) {
|
||||||
|
--y-block-with-right-image-top-spacing: 50px;
|
||||||
|
--y-box-border-radius: 118px;
|
||||||
|
--y-btn-font-size: 14px;
|
||||||
|
--y-btn-padding: 16px 30px;
|
||||||
|
|
||||||
|
&_content {
|
||||||
|
h2,h3,h4,h5,h6{
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_image img {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -299,7 +299,7 @@
|
|||||||
width: 115px;
|
width: 115px;
|
||||||
}
|
}
|
||||||
.aboutus_content {
|
.aboutus_content {
|
||||||
padding-top: 130px;
|
padding-top: 0;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
.aboutus_content h5 {
|
.aboutus_content h5 {
|
||||||
@ -1263,7 +1263,7 @@
|
|||||||
width: 110px;
|
width: 110px;
|
||||||
}
|
}
|
||||||
.aboutus_content {
|
.aboutus_content {
|
||||||
padding-top: 60px;
|
padding-top: 0;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
.aboutus_content h2 {
|
.aboutus_content h2 {
|
||||||
|
|||||||
21
yoga-app/src/styles/readme.md
Normal file
21
yoga-app/src/styles/readme.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
## MediaQueries brakepoints
|
||||||
|
|
||||||
|
```css
|
||||||
|
|
||||||
|
|
||||||
|
/* Media Queries */
|
||||||
|
|
||||||
|
@media screen and (max-width: 1440px){
|
||||||
|
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1199px){
|
||||||
|
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 991px){}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px){}
|
||||||
|
|
||||||
|
@media screen and (max-width: 575px) {
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
@ -501,7 +501,7 @@ p{
|
|||||||
left: -65px;
|
left: -65px;
|
||||||
}
|
}
|
||||||
.aboutus_content{
|
.aboutus_content{
|
||||||
padding-top: 145px;
|
padding-top: 0;
|
||||||
padding-left: 16px;
|
padding-left: 16px;
|
||||||
}
|
}
|
||||||
.aboutus_content h5{
|
.aboutus_content h5{
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { YogaBlogPostsComponent } from './yoga-blog-posts-component';
|
|||||||
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
|
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
|
||||||
import { YogaFooter } from './yoga-footer';
|
import { YogaFooter } from './yoga-footer';
|
||||||
import { YogaMainHeaderComponent } from './yoga-main-header-component';
|
import { YogaMainHeaderComponent } from './yoga-main-header-component';
|
||||||
|
import { YogaCommon } from './yoga-common';
|
||||||
import { YogaOurServicesComponent_Plain } from './yoga-our-services-component';
|
import { YogaOurServicesComponent_Plain } from './yoga-our-services-component';
|
||||||
import { YogaAboutUsComponent_Plain } from './yoga-about-us-component';
|
import { YogaAboutUsComponent_Plain } from './yoga-about-us-component';
|
||||||
import { YogaSpecialitiesComponent_Plain } from './yoga-specialities-component';
|
import { YogaSpecialitiesComponent_Plain } from './yoga-specialities-component';
|
||||||
@ -20,6 +21,7 @@ import { YogaBlogPostsComponent_Plain } from './yoga-blog-posts-component';
|
|||||||
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
|
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
|
||||||
import { YogaFooter_Plain } from './yoga-footer';
|
import { YogaFooter_Plain } from './yoga-footer';
|
||||||
import { YogaMainHeaderComponent_Plain } from './yoga-main-header-component';
|
import { YogaMainHeaderComponent_Plain } from './yoga-main-header-component';
|
||||||
|
import { YogaCommon_Plain } from './yoga-common';
|
||||||
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface Home {
|
export interface Home {
|
||||||
@ -35,6 +37,7 @@ export interface Home {
|
|||||||
subscribeNow?: { data: YogaSubscribeNowComponent };
|
subscribeNow?: { data: YogaSubscribeNowComponent };
|
||||||
footer?: { data: YogaFooter };
|
footer?: { data: YogaFooter };
|
||||||
header?: { data: YogaMainHeaderComponent };
|
header?: { data: YogaMainHeaderComponent };
|
||||||
|
common?: { data: YogaCommon };
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: { data: Home[] };
|
localizations?: { data: Home[] };
|
||||||
};
|
};
|
||||||
@ -51,6 +54,7 @@ export interface Home_Plain {
|
|||||||
subscribeNow?: YogaSubscribeNowComponent_Plain;
|
subscribeNow?: YogaSubscribeNowComponent_Plain;
|
||||||
footer?: YogaFooter_Plain;
|
footer?: YogaFooter_Plain;
|
||||||
header?: YogaMainHeaderComponent_Plain;
|
header?: YogaMainHeaderComponent_Plain;
|
||||||
|
common?: YogaCommon_Plain;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: Home_Plain[];
|
localizations?: Home_Plain[];
|
||||||
}
|
}
|
||||||
@ -67,6 +71,7 @@ export interface Home_NoRelations {
|
|||||||
subscribeNow?: number;
|
subscribeNow?: number;
|
||||||
footer?: number;
|
footer?: number;
|
||||||
header?: number;
|
header?: number;
|
||||||
|
common?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: Home[];
|
localizations?: Home[];
|
||||||
}
|
}
|
||||||
@ -83,6 +88,7 @@ export interface Home_AdminPanelLifeCycle {
|
|||||||
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
|
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
|
||||||
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
|
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
|
||||||
header?: AdminPanelRelationPropertyModification<YogaMainHeaderComponent_Plain>;
|
header?: AdminPanelRelationPropertyModification<YogaMainHeaderComponent_Plain>;
|
||||||
|
common?: AdminPanelRelationPropertyModification<YogaCommon_Plain>;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: Home[];
|
localizations?: Home[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,52 @@
|
|||||||
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
|
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
|
||||||
|
import { YogaFooter } from './yoga-footer';
|
||||||
|
import { YogaCommon } from './yoga-common';
|
||||||
|
import { YogaSingleService } from './yoga-single-service';
|
||||||
|
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
|
||||||
|
import { YogaFooter_Plain } from './yoga-footer';
|
||||||
|
import { YogaCommon_Plain } from './yoga-common';
|
||||||
|
import { YogaSingleService_Plain } from './yoga-single-service';
|
||||||
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
|
export interface ServiceListPage {
|
||||||
|
id: number;
|
||||||
|
attributes: {
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: { data: YogaSubscribeNowComponent };
|
||||||
|
footer?: { data: YogaFooter };
|
||||||
|
common?: { data: YogaCommon };
|
||||||
|
services: { data: YogaSingleService[] };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface ServiceListPage_Plain {
|
||||||
|
id: number;
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: YogaSubscribeNowComponent_Plain;
|
||||||
|
footer?: YogaFooter_Plain;
|
||||||
|
common?: YogaCommon_Plain;
|
||||||
|
services: YogaSingleService_Plain[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServiceListPage_NoRelations {
|
||||||
|
id: number;
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: number;
|
||||||
|
footer?: number;
|
||||||
|
common?: number;
|
||||||
|
services: number[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServiceListPage_AdminPanelLifeCycle {
|
||||||
|
id: number;
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
|
||||||
|
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
|
||||||
|
common?: AdminPanelRelationPropertyModification<YogaCommon_Plain>;
|
||||||
|
services: AdminPanelRelationPropertyModification<YogaSingleService_Plain>;
|
||||||
|
}
|
||||||
@ -8,19 +8,23 @@ export interface YogaCommon {
|
|||||||
id: number;
|
id: number;
|
||||||
attributes: {
|
attributes: {
|
||||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: { data: Media };
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: { data: Media };
|
||||||
|
name: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
export interface YogaCommon_Plain {
|
export interface YogaCommon_Plain {
|
||||||
id: number;
|
id: number;
|
||||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: Media_Plain;
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: Media_Plain;
|
||||||
|
name: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaCommon_NoRelations {
|
export interface YogaCommon_NoRelations {
|
||||||
id: number;
|
id: number;
|
||||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: number;
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: number;
|
||||||
|
name: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaCommon_AdminPanelLifeCycle {
|
export interface YogaCommon_AdminPanelLifeCycle {
|
||||||
id: number;
|
id: number;
|
||||||
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: AdminPanelRelationPropertyModification<Media_Plain>;
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; logoImage?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
|
name: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
// Interface automatically generated by schemas-to-ts
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
import { Link } from '../components/yoga-site/Link';
|
import { Link } from '../components/yoga-site/Link';
|
||||||
|
import { Media } from '../components/shared/Media';
|
||||||
import { Link_Plain } from '../components/yoga-site/Link';
|
import { Link_Plain } from '../components/yoga-site/Link';
|
||||||
|
import { Media_Plain } from '../components/shared/Media';
|
||||||
import { Link_NoRelations } from '../components/yoga-site/Link';
|
import { Link_NoRelations } from '../components/yoga-site/Link';
|
||||||
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface YogaFooter {
|
export interface YogaFooter {
|
||||||
id: number;
|
id: number;
|
||||||
@ -17,6 +20,7 @@ export interface YogaFooter {
|
|||||||
contactUsLocation?: Link;
|
contactUsLocation?: Link;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: { data: Media };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
export interface YogaFooter_Plain {
|
export interface YogaFooter_Plain {
|
||||||
@ -31,6 +35,7 @@ export interface YogaFooter_Plain {
|
|||||||
contactUsLocation?: Link_Plain;
|
contactUsLocation?: Link_Plain;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: Media_Plain;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaFooter_NoRelations {
|
export interface YogaFooter_NoRelations {
|
||||||
@ -45,6 +50,7 @@ export interface YogaFooter_NoRelations {
|
|||||||
contactUsLocation?: Link_NoRelations;
|
contactUsLocation?: Link_NoRelations;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaFooter_AdminPanelLifeCycle {
|
export interface YogaFooter_AdminPanelLifeCycle {
|
||||||
@ -59,4 +65,5 @@ export interface YogaFooter_AdminPanelLifeCycle {
|
|||||||
contactUsLocation?: Link_Plain;
|
contactUsLocation?: Link_Plain;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,8 @@ export interface YogaSingleService {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: { data: Media };
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: { data: YogaSingleService[] };
|
localizations?: { data: YogaSingleService[] };
|
||||||
};
|
};
|
||||||
@ -27,6 +29,8 @@ export interface YogaSingleService_Plain {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: Media_Plain;
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSingleService_Plain[];
|
localizations?: YogaSingleService_Plain[];
|
||||||
}
|
}
|
||||||
@ -40,6 +44,8 @@ export interface YogaSingleService_NoRelations {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: number;
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSingleService[];
|
localizations?: YogaSingleService[];
|
||||||
}
|
}
|
||||||
@ -53,6 +59,8 @@ export interface YogaSingleService_AdminPanelLifeCycle {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSingleService[];
|
localizations?: YogaSingleService[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
// Interface automatically generated by schemas-to-ts
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
import { YogaSingleSpeciality } from './yoga-single-speciality';
|
import { YogaSingleSpeciality } from './yoga-single-speciality';
|
||||||
|
import { Media } from '../components/shared/Media';
|
||||||
import { YogaSingleSpeciality_Plain } from './yoga-single-speciality';
|
import { YogaSingleSpeciality_Plain } from './yoga-single-speciality';
|
||||||
|
import { Media_Plain } from '../components/shared/Media';
|
||||||
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface YogaSpecialitiesComponent {
|
export interface YogaSpecialitiesComponent {
|
||||||
@ -19,6 +21,7 @@ export interface YogaSpecialitiesComponent {
|
|||||||
right2?: { data: YogaSingleSpeciality };
|
right2?: { data: YogaSingleSpeciality };
|
||||||
right3?: { data: YogaSingleSpeciality };
|
right3?: { data: YogaSingleSpeciality };
|
||||||
right4?: { data: YogaSingleSpeciality };
|
right4?: { data: YogaSingleSpeciality };
|
||||||
|
image?: { data: Media };
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: { data: YogaSpecialitiesComponent[] };
|
localizations?: { data: YogaSpecialitiesComponent[] };
|
||||||
};
|
};
|
||||||
@ -37,6 +40,7 @@ export interface YogaSpecialitiesComponent_Plain {
|
|||||||
right2?: YogaSingleSpeciality_Plain;
|
right2?: YogaSingleSpeciality_Plain;
|
||||||
right3?: YogaSingleSpeciality_Plain;
|
right3?: YogaSingleSpeciality_Plain;
|
||||||
right4?: YogaSingleSpeciality_Plain;
|
right4?: YogaSingleSpeciality_Plain;
|
||||||
|
image?: Media_Plain;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSpecialitiesComponent_Plain[];
|
localizations?: YogaSpecialitiesComponent_Plain[];
|
||||||
}
|
}
|
||||||
@ -55,6 +59,7 @@ export interface YogaSpecialitiesComponent_NoRelations {
|
|||||||
right2?: number;
|
right2?: number;
|
||||||
right3?: number;
|
right3?: number;
|
||||||
right4?: number;
|
right4?: number;
|
||||||
|
image?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSpecialitiesComponent[];
|
localizations?: YogaSpecialitiesComponent[];
|
||||||
}
|
}
|
||||||
@ -73,6 +78,7 @@ export interface YogaSpecialitiesComponent_AdminPanelLifeCycle {
|
|||||||
right2?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
right2?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
||||||
right3?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
right3?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
||||||
right4?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
right4?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
||||||
|
image?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSpecialitiesComponent[];
|
localizations?: YogaSpecialitiesComponent[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,9 @@
|
|||||||
// Interface automatically generated by schemas-to-ts
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
|
import { Media } from '../components/shared/Media';
|
||||||
|
import { Media_Plain } from '../components/shared/Media';
|
||||||
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface YogaSubscribeNowComponent {
|
export interface YogaSubscribeNowComponent {
|
||||||
id: number;
|
id: number;
|
||||||
attributes: {
|
attributes: {
|
||||||
@ -7,6 +11,7 @@ export interface YogaSubscribeNowComponent {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: { data: Media };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
export interface YogaSubscribeNowComponent_Plain {
|
export interface YogaSubscribeNowComponent_Plain {
|
||||||
@ -15,6 +20,7 @@ export interface YogaSubscribeNowComponent_Plain {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: Media_Plain;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaSubscribeNowComponent_NoRelations {
|
export interface YogaSubscribeNowComponent_NoRelations {
|
||||||
@ -23,6 +29,7 @@ export interface YogaSubscribeNowComponent_NoRelations {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
|
export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
|
||||||
@ -31,4 +38,5 @@ export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
export interface StrapiFile{
|
export interface StrapiFile{
|
||||||
"id": string,
|
"id": string,
|
||||||
"documentId": string,
|
"documentId": string,
|
||||||
@ -5,3 +6,23 @@ export interface StrapiFile{
|
|||||||
"mime": string,
|
"mime": string,
|
||||||
"url": string
|
"url": string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export enum ImagePosition {
|
||||||
|
Left = 'Left',
|
||||||
|
Right = 'Right',}
|
||||||
|
|
||||||
|
export interface ButtonConfig{
|
||||||
|
label?: string,
|
||||||
|
link?: string,
|
||||||
|
style?: 'Primary' | 'Secondary' | 'Outline' | 'Text',
|
||||||
|
size?: 'Small' | 'Medium' | 'Large',
|
||||||
|
openInNewTab?: boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImageConfig{
|
||||||
|
position: ImagePosition,
|
||||||
|
url?: string,
|
||||||
|
alt?: string,
|
||||||
|
width?: number,
|
||||||
|
height?: number,
|
||||||
|
}
|
||||||
|
|||||||
@ -11,29 +11,42 @@ export const MAIN_MENU:MenuItem[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Szolgáltatásaink',
|
label: 'Szolgáltatásaink',
|
||||||
href: '/services'
|
href: '/serviceList'
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// label: 'Oldalak',
|
||||||
|
// children: [
|
||||||
|
// {
|
||||||
|
// label: 'Áraink',
|
||||||
|
// href: '/prices'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: 'FAQ',
|
||||||
|
// href: '/faq'
|
||||||
|
// },
|
||||||
|
// ]
|
||||||
|
// },
|
||||||
|
{
|
||||||
|
label: 'Áraink',
|
||||||
|
href: '/prices'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Oldalak',
|
label: 'GY.I.K',
|
||||||
children: [
|
href: '/faq'
|
||||||
{
|
|
||||||
label: 'Áraink',
|
|
||||||
href: '/prices'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'FAQ',
|
|
||||||
href: '/faq'
|
|
||||||
},
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Rólam',
|
label: 'Szolgáltatásaink',
|
||||||
href: '/team'
|
href: '/serviceList'
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// label: 'Rólam',
|
||||||
|
// href: '/team'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: 'Blog',
|
||||||
|
// href: '/blog'
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
label: 'Blog',
|
|
||||||
href: '/blog'
|
|
||||||
}, {
|
|
||||||
label: 'Kapcsolat',
|
label: 'Kapcsolat',
|
||||||
href: '/contact',
|
href: '/contact',
|
||||||
styleClass: "contact_us"
|
styleClass: "contact_us"
|
||||||
|
|||||||
7
yoga-app/src/util/sorting.ts
Normal file
7
yoga-app/src/util/sorting.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import {YogaSingleService_Plain} from "@/types/generated-strapi-interfaces/api/yoga-single-service";
|
||||||
|
|
||||||
|
export function sortServicesByPriority(a: YogaSingleService_Plain, b: YogaSingleService_Plain) {
|
||||||
|
const priorityA = a.priority ?? 0;
|
||||||
|
const priorityB = b.priority ?? 0;
|
||||||
|
return priorityB - priorityA;
|
||||||
|
}
|
||||||
@ -39,6 +39,9 @@
|
|||||||
specialityRight4: {
|
specialityRight4: {
|
||||||
fields: ['*'] ,
|
fields: ['*'] ,
|
||||||
},
|
},
|
||||||
|
"image": {
|
||||||
|
"fields": ["name","mime","url"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { YogaBlogPostsComponent } from './yoga-blog-posts-component';
|
|||||||
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
|
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
|
||||||
import { YogaFooter } from './yoga-footer';
|
import { YogaFooter } from './yoga-footer';
|
||||||
import { YogaMainHeaderComponent } from './yoga-main-header-component';
|
import { YogaMainHeaderComponent } from './yoga-main-header-component';
|
||||||
|
import { YogaCommon } from './yoga-common';
|
||||||
import { YogaOurServicesComponent_Plain } from './yoga-our-services-component';
|
import { YogaOurServicesComponent_Plain } from './yoga-our-services-component';
|
||||||
import { YogaAboutUsComponent_Plain } from './yoga-about-us-component';
|
import { YogaAboutUsComponent_Plain } from './yoga-about-us-component';
|
||||||
import { YogaSpecialitiesComponent_Plain } from './yoga-specialities-component';
|
import { YogaSpecialitiesComponent_Plain } from './yoga-specialities-component';
|
||||||
@ -20,6 +21,7 @@ import { YogaBlogPostsComponent_Plain } from './yoga-blog-posts-component';
|
|||||||
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
|
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
|
||||||
import { YogaFooter_Plain } from './yoga-footer';
|
import { YogaFooter_Plain } from './yoga-footer';
|
||||||
import { YogaMainHeaderComponent_Plain } from './yoga-main-header-component';
|
import { YogaMainHeaderComponent_Plain } from './yoga-main-header-component';
|
||||||
|
import { YogaCommon_Plain } from './yoga-common';
|
||||||
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface Home {
|
export interface Home {
|
||||||
@ -35,6 +37,7 @@ export interface Home {
|
|||||||
subscribeNow?: { data: YogaSubscribeNowComponent };
|
subscribeNow?: { data: YogaSubscribeNowComponent };
|
||||||
footer?: { data: YogaFooter };
|
footer?: { data: YogaFooter };
|
||||||
header?: { data: YogaMainHeaderComponent };
|
header?: { data: YogaMainHeaderComponent };
|
||||||
|
common?: { data: YogaCommon };
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: { data: Home[] };
|
localizations?: { data: Home[] };
|
||||||
};
|
};
|
||||||
@ -51,6 +54,7 @@ export interface Home_Plain {
|
|||||||
subscribeNow?: YogaSubscribeNowComponent_Plain;
|
subscribeNow?: YogaSubscribeNowComponent_Plain;
|
||||||
footer?: YogaFooter_Plain;
|
footer?: YogaFooter_Plain;
|
||||||
header?: YogaMainHeaderComponent_Plain;
|
header?: YogaMainHeaderComponent_Plain;
|
||||||
|
common?: YogaCommon_Plain;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: Home_Plain[];
|
localizations?: Home_Plain[];
|
||||||
}
|
}
|
||||||
@ -67,6 +71,7 @@ export interface Home_NoRelations {
|
|||||||
subscribeNow?: number;
|
subscribeNow?: number;
|
||||||
footer?: number;
|
footer?: number;
|
||||||
header?: number;
|
header?: number;
|
||||||
|
common?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: Home[];
|
localizations?: Home[];
|
||||||
}
|
}
|
||||||
@ -83,6 +88,7 @@ export interface Home_AdminPanelLifeCycle {
|
|||||||
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
|
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
|
||||||
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
|
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
|
||||||
header?: AdminPanelRelationPropertyModification<YogaMainHeaderComponent_Plain>;
|
header?: AdminPanelRelationPropertyModification<YogaMainHeaderComponent_Plain>;
|
||||||
|
common?: AdminPanelRelationPropertyModification<YogaCommon_Plain>;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: Home[];
|
localizations?: Home[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,52 @@
|
|||||||
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
|
import { YogaSubscribeNowComponent } from './yoga-subscribe-now-component';
|
||||||
|
import { YogaFooter } from './yoga-footer';
|
||||||
|
import { YogaCommon } from './yoga-common';
|
||||||
|
import { YogaSingleService } from './yoga-single-service';
|
||||||
|
import { YogaSubscribeNowComponent_Plain } from './yoga-subscribe-now-component';
|
||||||
|
import { YogaFooter_Plain } from './yoga-footer';
|
||||||
|
import { YogaCommon_Plain } from './yoga-common';
|
||||||
|
import { YogaSingleService_Plain } from './yoga-single-service';
|
||||||
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
|
export interface ServiceListPage {
|
||||||
|
id: number;
|
||||||
|
attributes: {
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: { data: YogaSubscribeNowComponent };
|
||||||
|
footer?: { data: YogaFooter };
|
||||||
|
common?: { data: YogaCommon };
|
||||||
|
services: { data: YogaSingleService[] };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export interface ServiceListPage_Plain {
|
||||||
|
id: number;
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: YogaSubscribeNowComponent_Plain;
|
||||||
|
footer?: YogaFooter_Plain;
|
||||||
|
common?: YogaCommon_Plain;
|
||||||
|
services: YogaSingleService_Plain[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServiceListPage_NoRelations {
|
||||||
|
id: number;
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: number;
|
||||||
|
footer?: number;
|
||||||
|
common?: number;
|
||||||
|
services: number[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServiceListPage_AdminPanelLifeCycle {
|
||||||
|
id: number;
|
||||||
|
createdAt: Date; updatedAt: Date; publishedAt?: Date; header?: string;
|
||||||
|
description?: string;
|
||||||
|
subscribeNow?: AdminPanelRelationPropertyModification<YogaSubscribeNowComponent_Plain>;
|
||||||
|
footer?: AdminPanelRelationPropertyModification<YogaFooter_Plain>;
|
||||||
|
common?: AdminPanelRelationPropertyModification<YogaCommon_Plain>;
|
||||||
|
services: AdminPanelRelationPropertyModification<YogaSingleService_Plain>;
|
||||||
|
}
|
||||||
@ -1,8 +1,11 @@
|
|||||||
// Interface automatically generated by schemas-to-ts
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
import { Link } from '../components/yoga-site/Link';
|
import { Link } from '../components/yoga-site/Link';
|
||||||
|
import { Media } from '../components/shared/Media';
|
||||||
import { Link_Plain } from '../components/yoga-site/Link';
|
import { Link_Plain } from '../components/yoga-site/Link';
|
||||||
|
import { Media_Plain } from '../components/shared/Media';
|
||||||
import { Link_NoRelations } from '../components/yoga-site/Link';
|
import { Link_NoRelations } from '../components/yoga-site/Link';
|
||||||
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface YogaFooter {
|
export interface YogaFooter {
|
||||||
id: number;
|
id: number;
|
||||||
@ -17,6 +20,7 @@ export interface YogaFooter {
|
|||||||
contactUsLocation?: Link;
|
contactUsLocation?: Link;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: { data: Media };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
export interface YogaFooter_Plain {
|
export interface YogaFooter_Plain {
|
||||||
@ -31,6 +35,7 @@ export interface YogaFooter_Plain {
|
|||||||
contactUsLocation?: Link_Plain;
|
contactUsLocation?: Link_Plain;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: Media_Plain;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaFooter_NoRelations {
|
export interface YogaFooter_NoRelations {
|
||||||
@ -45,6 +50,7 @@ export interface YogaFooter_NoRelations {
|
|||||||
contactUsLocation?: Link_NoRelations;
|
contactUsLocation?: Link_NoRelations;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaFooter_AdminPanelLifeCycle {
|
export interface YogaFooter_AdminPanelLifeCycle {
|
||||||
@ -59,4 +65,5 @@ export interface YogaFooter_AdminPanelLifeCycle {
|
|||||||
contactUsLocation?: Link_Plain;
|
contactUsLocation?: Link_Plain;
|
||||||
copyRight?: string;
|
copyRight?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
|
logo?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,8 @@ export interface YogaSingleService {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: { data: Media };
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: { data: YogaSingleService[] };
|
localizations?: { data: YogaSingleService[] };
|
||||||
};
|
};
|
||||||
@ -27,6 +29,8 @@ export interface YogaSingleService_Plain {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: Media_Plain;
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSingleService_Plain[];
|
localizations?: YogaSingleService_Plain[];
|
||||||
}
|
}
|
||||||
@ -40,6 +44,8 @@ export interface YogaSingleService_NoRelations {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: number;
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSingleService[];
|
localizations?: YogaSingleService[];
|
||||||
}
|
}
|
||||||
@ -53,6 +59,8 @@ export interface YogaSingleService_AdminPanelLifeCycle {
|
|||||||
imageAlt?: string;
|
imageAlt?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
article?: any;
|
article?: any;
|
||||||
|
articleImage?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
|
priority?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSingleService[];
|
localizations?: YogaSingleService[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
// Interface automatically generated by schemas-to-ts
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
import { YogaSingleSpeciality } from './yoga-single-speciality';
|
import { YogaSingleSpeciality } from './yoga-single-speciality';
|
||||||
|
import { Media } from '../components/shared/Media';
|
||||||
import { YogaSingleSpeciality_Plain } from './yoga-single-speciality';
|
import { YogaSingleSpeciality_Plain } from './yoga-single-speciality';
|
||||||
|
import { Media_Plain } from '../components/shared/Media';
|
||||||
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface YogaSpecialitiesComponent {
|
export interface YogaSpecialitiesComponent {
|
||||||
@ -19,6 +21,7 @@ export interface YogaSpecialitiesComponent {
|
|||||||
right2?: { data: YogaSingleSpeciality };
|
right2?: { data: YogaSingleSpeciality };
|
||||||
right3?: { data: YogaSingleSpeciality };
|
right3?: { data: YogaSingleSpeciality };
|
||||||
right4?: { data: YogaSingleSpeciality };
|
right4?: { data: YogaSingleSpeciality };
|
||||||
|
image?: { data: Media };
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: { data: YogaSpecialitiesComponent[] };
|
localizations?: { data: YogaSpecialitiesComponent[] };
|
||||||
};
|
};
|
||||||
@ -37,6 +40,7 @@ export interface YogaSpecialitiesComponent_Plain {
|
|||||||
right2?: YogaSingleSpeciality_Plain;
|
right2?: YogaSingleSpeciality_Plain;
|
||||||
right3?: YogaSingleSpeciality_Plain;
|
right3?: YogaSingleSpeciality_Plain;
|
||||||
right4?: YogaSingleSpeciality_Plain;
|
right4?: YogaSingleSpeciality_Plain;
|
||||||
|
image?: Media_Plain;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSpecialitiesComponent_Plain[];
|
localizations?: YogaSpecialitiesComponent_Plain[];
|
||||||
}
|
}
|
||||||
@ -55,6 +59,7 @@ export interface YogaSpecialitiesComponent_NoRelations {
|
|||||||
right2?: number;
|
right2?: number;
|
||||||
right3?: number;
|
right3?: number;
|
||||||
right4?: number;
|
right4?: number;
|
||||||
|
image?: number;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSpecialitiesComponent[];
|
localizations?: YogaSpecialitiesComponent[];
|
||||||
}
|
}
|
||||||
@ -73,6 +78,7 @@ export interface YogaSpecialitiesComponent_AdminPanelLifeCycle {
|
|||||||
right2?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
right2?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
||||||
right3?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
right3?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
||||||
right4?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
right4?: AdminPanelRelationPropertyModification<YogaSingleSpeciality_Plain>;
|
||||||
|
image?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
locale: string;
|
locale: string;
|
||||||
localizations?: YogaSpecialitiesComponent[];
|
localizations?: YogaSpecialitiesComponent[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,9 @@
|
|||||||
// Interface automatically generated by schemas-to-ts
|
// Interface automatically generated by schemas-to-ts
|
||||||
|
|
||||||
|
import { Media } from '../components/shared/Media';
|
||||||
|
import { Media_Plain } from '../components/shared/Media';
|
||||||
|
import { AdminPanelRelationPropertyModification } from '../common/AdminPanelRelationPropertyModification';
|
||||||
|
|
||||||
export interface YogaSubscribeNowComponent {
|
export interface YogaSubscribeNowComponent {
|
||||||
id: number;
|
id: number;
|
||||||
attributes: {
|
attributes: {
|
||||||
@ -7,6 +11,7 @@ export interface YogaSubscribeNowComponent {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: { data: Media };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
export interface YogaSubscribeNowComponent_Plain {
|
export interface YogaSubscribeNowComponent_Plain {
|
||||||
@ -15,6 +20,7 @@ export interface YogaSubscribeNowComponent_Plain {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: Media_Plain;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaSubscribeNowComponent_NoRelations {
|
export interface YogaSubscribeNowComponent_NoRelations {
|
||||||
@ -23,6 +29,7 @@ export interface YogaSubscribeNowComponent_NoRelations {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
|
export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
|
||||||
@ -31,4 +38,5 @@ export interface YogaSubscribeNowComponent_AdminPanelLifeCycle {
|
|||||||
header?: string;
|
header?: string;
|
||||||
placeHolderEmail?: string;
|
placeHolderEmail?: string;
|
||||||
buttonSubscribeLabel?: string;
|
buttonSubscribeLabel?: string;
|
||||||
|
image?: AdminPanelRelationPropertyModification<Media_Plain>;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,6 +65,11 @@
|
|||||||
"type": "relation",
|
"type": "relation",
|
||||||
"relation": "oneToOne",
|
"relation": "oneToOne",
|
||||||
"target": "api::yoga-main-header-component.yoga-main-header-component"
|
"target": "api::yoga-main-header-component.yoga-main-header-component"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToOne",
|
||||||
|
"target": "api::yoga-common.yoga-common"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"kind": "singleType",
|
||||||
|
"collectionName": "service_list_pages",
|
||||||
|
"info": {
|
||||||
|
"singularName": "service-list-page",
|
||||||
|
"pluralName": "service-list-pages",
|
||||||
|
"displayName": "ServiceListPage"
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"draftAndPublish": true
|
||||||
|
},
|
||||||
|
"attributes": {
|
||||||
|
"header": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "text"
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToOne",
|
||||||
|
"target": "api::yoga-common.yoga-common"
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToMany",
|
||||||
|
"target": "api::yoga-single-service.yoga-single-service"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* service-list-page controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi'
|
||||||
|
|
||||||
|
export default factories.createCoreController('api::service-list-page.service-list-page');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* service-list-page router
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreRouter('api::service-list-page.service-list-page');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* service-list-page service
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreService('api::service-list-page.service-list-page');
|
||||||
@ -4,7 +4,7 @@
|
|||||||
"info": {
|
"info": {
|
||||||
"singularName": "services-page",
|
"singularName": "services-page",
|
||||||
"pluralName": "services-pages",
|
"pluralName": "services-pages",
|
||||||
"displayName": "Services",
|
"displayName": "ServicesPage",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
|
|||||||
@ -50,6 +50,14 @@
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logo": {
|
||||||
|
"allowedTypes": [
|
||||||
|
"images",
|
||||||
|
"files"
|
||||||
|
],
|
||||||
|
"type": "media",
|
||||||
|
"multiple": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,6 +74,18 @@
|
|||||||
},
|
},
|
||||||
"article": {
|
"article": {
|
||||||
"type": "blocks"
|
"type": "blocks"
|
||||||
|
},
|
||||||
|
"articleImage": {
|
||||||
|
"allowedTypes": [
|
||||||
|
"images",
|
||||||
|
"files"
|
||||||
|
],
|
||||||
|
"type": "media",
|
||||||
|
"multiple": false
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 100
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,6 +87,14 @@
|
|||||||
"type": "relation",
|
"type": "relation",
|
||||||
"relation": "oneToOne",
|
"relation": "oneToOne",
|
||||||
"target": "api::yoga-single-speciality.yoga-single-speciality"
|
"target": "api::yoga-single-speciality.yoga-single-speciality"
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"allowedTypes": [
|
||||||
|
"images",
|
||||||
|
"files"
|
||||||
|
],
|
||||||
|
"type": "media",
|
||||||
|
"multiple": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
"info": {
|
"info": {
|
||||||
"singularName": "yoga-subscribe-now-component",
|
"singularName": "yoga-subscribe-now-component",
|
||||||
"pluralName": "yoga-subscribe-now-components",
|
"pluralName": "yoga-subscribe-now-components",
|
||||||
"displayName": "YogaSubscribeNowComponent"
|
"displayName": "YogaSubscribeNowComponent",
|
||||||
|
"description": ""
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"draftAndPublish": true
|
"draftAndPublish": true
|
||||||
@ -22,6 +23,14 @@
|
|||||||
},
|
},
|
||||||
"buttonSubscribeLabel": {
|
"buttonSubscribeLabel": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"allowedTypes": [
|
||||||
|
"images",
|
||||||
|
"files"
|
||||||
|
],
|
||||||
|
"type": "media",
|
||||||
|
"multiple": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
59
yoga-cms/types/generated/contentTypes.d.ts
vendored
59
yoga-cms/types/generated/contentTypes.d.ts
vendored
@ -710,6 +710,10 @@ export interface ApiHomeHome extends Struct.SingleTypeSchema {
|
|||||||
'oneToOne',
|
'oneToOne',
|
||||||
'api::yoga-blog-posts-component.yoga-blog-posts-component'
|
'api::yoga-blog-posts-component.yoga-blog-posts-component'
|
||||||
>;
|
>;
|
||||||
|
common: Schema.Attribute.Relation<
|
||||||
|
'oneToOne',
|
||||||
|
'api::yoga-common.yoga-common'
|
||||||
|
>;
|
||||||
contactUs: Schema.Attribute.Relation<
|
contactUs: Schema.Attribute.Relation<
|
||||||
'oneToOne',
|
'oneToOne',
|
||||||
'api::yoga-contact-us.yoga-contact-us'
|
'api::yoga-contact-us.yoga-contact-us'
|
||||||
@ -867,6 +871,52 @@ export interface ApiPricesPagePricesPage extends Struct.SingleTypeSchema {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ApiServiceListPageServiceListPage
|
||||||
|
extends Struct.SingleTypeSchema {
|
||||||
|
collectionName: 'service_list_pages';
|
||||||
|
info: {
|
||||||
|
displayName: 'ServiceListPage';
|
||||||
|
pluralName: 'service-list-pages';
|
||||||
|
singularName: 'service-list-page';
|
||||||
|
};
|
||||||
|
options: {
|
||||||
|
draftAndPublish: true;
|
||||||
|
};
|
||||||
|
attributes: {
|
||||||
|
common: Schema.Attribute.Relation<
|
||||||
|
'oneToOne',
|
||||||
|
'api::yoga-common.yoga-common'
|
||||||
|
>;
|
||||||
|
createdAt: Schema.Attribute.DateTime;
|
||||||
|
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
|
Schema.Attribute.Private;
|
||||||
|
description: Schema.Attribute.Text;
|
||||||
|
footer: Schema.Attribute.Relation<
|
||||||
|
'oneToOne',
|
||||||
|
'api::yoga-footer.yoga-footer'
|
||||||
|
>;
|
||||||
|
header: Schema.Attribute.String;
|
||||||
|
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
||||||
|
localizations: Schema.Attribute.Relation<
|
||||||
|
'oneToMany',
|
||||||
|
'api::service-list-page.service-list-page'
|
||||||
|
> &
|
||||||
|
Schema.Attribute.Private;
|
||||||
|
publishedAt: Schema.Attribute.DateTime;
|
||||||
|
services: Schema.Attribute.Relation<
|
||||||
|
'oneToMany',
|
||||||
|
'api::yoga-single-service.yoga-single-service'
|
||||||
|
>;
|
||||||
|
subscribeNow: Schema.Attribute.Relation<
|
||||||
|
'oneToOne',
|
||||||
|
'api::yoga-subscribe-now-component.yoga-subscribe-now-component'
|
||||||
|
>;
|
||||||
|
updatedAt: Schema.Attribute.DateTime;
|
||||||
|
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
|
Schema.Attribute.Private;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export interface ApiServicePageServicePage extends Struct.SingleTypeSchema {
|
export interface ApiServicePageServicePage extends Struct.SingleTypeSchema {
|
||||||
collectionName: 'service_pages';
|
collectionName: 'service_pages';
|
||||||
info: {
|
info: {
|
||||||
@ -913,7 +963,7 @@ export interface ApiServicesPageServicesPage extends Struct.SingleTypeSchema {
|
|||||||
collectionName: 'services_pages';
|
collectionName: 'services_pages';
|
||||||
info: {
|
info: {
|
||||||
description: '';
|
description: '';
|
||||||
displayName: 'Services';
|
displayName: 'ServicesPage';
|
||||||
pluralName: 'services-pages';
|
pluralName: 'services-pages';
|
||||||
singularName: 'services-page';
|
singularName: 'services-page';
|
||||||
};
|
};
|
||||||
@ -1543,6 +1593,7 @@ export interface ApiYogaFooterYogaFooter extends Struct.CollectionTypeSchema {
|
|||||||
'api::yoga-footer.yoga-footer'
|
'api::yoga-footer.yoga-footer'
|
||||||
> &
|
> &
|
||||||
Schema.Attribute.Private;
|
Schema.Attribute.Private;
|
||||||
|
logo: Schema.Attribute.Media<'images' | 'files'>;
|
||||||
name: Schema.Attribute.String;
|
name: Schema.Attribute.String;
|
||||||
publishedAt: Schema.Attribute.DateTime;
|
publishedAt: Schema.Attribute.DateTime;
|
||||||
quickLinksHeader: Schema.Attribute.String;
|
quickLinksHeader: Schema.Attribute.String;
|
||||||
@ -1789,6 +1840,7 @@ export interface ApiYogaSingleServiceYogaSingleService
|
|||||||
};
|
};
|
||||||
attributes: {
|
attributes: {
|
||||||
article: Schema.Attribute.Blocks;
|
article: Schema.Attribute.Blocks;
|
||||||
|
articleImage: Schema.Attribute.Media<'images' | 'files'>;
|
||||||
buttonLink: Schema.Attribute.String &
|
buttonLink: Schema.Attribute.String &
|
||||||
Schema.Attribute.SetPluginOptions<{
|
Schema.Attribute.SetPluginOptions<{
|
||||||
i18n: {
|
i18n: {
|
||||||
@ -1833,6 +1885,7 @@ export interface ApiYogaSingleServiceYogaSingleService
|
|||||||
localized: true;
|
localized: true;
|
||||||
};
|
};
|
||||||
}>;
|
}>;
|
||||||
|
priority: Schema.Attribute.Integer & Schema.Attribute.DefaultTo<100>;
|
||||||
publishedAt: Schema.Attribute.DateTime;
|
publishedAt: Schema.Attribute.DateTime;
|
||||||
updatedAt: Schema.Attribute.DateTime;
|
updatedAt: Schema.Attribute.DateTime;
|
||||||
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
@ -1926,6 +1979,7 @@ export interface ApiYogaSpecialitiesComponentYogaSpecialitiesComponent
|
|||||||
localized: true;
|
localized: true;
|
||||||
};
|
};
|
||||||
}>;
|
}>;
|
||||||
|
image: Schema.Attribute.Media<'images' | 'files'>;
|
||||||
left1: Schema.Attribute.Relation<
|
left1: Schema.Attribute.Relation<
|
||||||
'oneToOne',
|
'oneToOne',
|
||||||
'api::yoga-single-speciality.yoga-single-speciality'
|
'api::yoga-single-speciality.yoga-single-speciality'
|
||||||
@ -1986,6 +2040,7 @@ export interface ApiYogaSubscribeNowComponentYogaSubscribeNowComponent
|
|||||||
extends Struct.CollectionTypeSchema {
|
extends Struct.CollectionTypeSchema {
|
||||||
collectionName: 'yoga_subscribe_now_components';
|
collectionName: 'yoga_subscribe_now_components';
|
||||||
info: {
|
info: {
|
||||||
|
description: '';
|
||||||
displayName: 'YogaSubscribeNowComponent';
|
displayName: 'YogaSubscribeNowComponent';
|
||||||
pluralName: 'yoga-subscribe-now-components';
|
pluralName: 'yoga-subscribe-now-components';
|
||||||
singularName: 'yoga-subscribe-now-component';
|
singularName: 'yoga-subscribe-now-component';
|
||||||
@ -1999,6 +2054,7 @@ export interface ApiYogaSubscribeNowComponentYogaSubscribeNowComponent
|
|||||||
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &
|
||||||
Schema.Attribute.Private;
|
Schema.Attribute.Private;
|
||||||
header: Schema.Attribute.String;
|
header: Schema.Attribute.String;
|
||||||
|
image: Schema.Attribute.Media<'images' | 'files'>;
|
||||||
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
||||||
localizations: Schema.Attribute.Relation<
|
localizations: Schema.Attribute.Relation<
|
||||||
'oneToMany',
|
'oneToMany',
|
||||||
@ -2600,6 +2656,7 @@ declare module '@strapi/strapi' {
|
|||||||
'api::page.page': ApiPagePage;
|
'api::page.page': ApiPagePage;
|
||||||
'api::person.person': ApiPersonPerson;
|
'api::person.person': ApiPersonPerson;
|
||||||
'api::prices-page.prices-page': ApiPricesPagePricesPage;
|
'api::prices-page.prices-page': ApiPricesPagePricesPage;
|
||||||
|
'api::service-list-page.service-list-page': ApiServiceListPageServiceListPage;
|
||||||
'api::service-page.service-page': ApiServicePageServicePage;
|
'api::service-page.service-page': ApiServicePageServicePage;
|
||||||
'api::services-page.services-page': ApiServicesPageServicesPage;
|
'api::services-page.services-page': ApiServicesPageServicesPage;
|
||||||
'api::yoga-about-us-component.yoga-about-us-component': ApiYogaAboutUsComponentYogaAboutUsComponent;
|
'api::yoga-about-us-component.yoga-about-us-component': ApiYogaAboutUsComponentYogaAboutUsComponent;
|
||||||
|
|||||||
@ -299,7 +299,7 @@
|
|||||||
width: 115px;
|
width: 115px;
|
||||||
}
|
}
|
||||||
.aboutus_content {
|
.aboutus_content {
|
||||||
padding-top: 130px;
|
padding-top: 0;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
.aboutus_content h5 {
|
.aboutus_content h5 {
|
||||||
@ -1263,7 +1263,7 @@
|
|||||||
width: 110px;
|
width: 110px;
|
||||||
}
|
}
|
||||||
.aboutus_content {
|
.aboutus_content {
|
||||||
padding-top: 60px;
|
padding-top: 0;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
.aboutus_content h2 {
|
.aboutus_content h2 {
|
||||||
|
|||||||
@ -501,7 +501,7 @@ p{
|
|||||||
left: -65px;
|
left: -65px;
|
||||||
}
|
}
|
||||||
.aboutus_content{
|
.aboutus_content{
|
||||||
padding-top: 145px;
|
padding-top: 0;
|
||||||
padding-left: 16px;
|
padding-left: 16px;
|
||||||
}
|
}
|
||||||
.aboutus_content h5{
|
.aboutus_content h5{
|
||||||
@ -1483,7 +1483,7 @@ textarea {
|
|||||||
z-index: -1;
|
z-index: -1;
|
||||||
}
|
}
|
||||||
.aboutpage_aboutus_content{
|
.aboutpage_aboutus_content{
|
||||||
padding-top: 110px;
|
padding-top: 0;
|
||||||
}
|
}
|
||||||
.aboutpage_aboutus_content h5{
|
.aboutpage_aboutus_content h5{
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user