diff --git a/messages/pl.json b/messages/pl.json
index e9741b3..721a0be 100644
--- a/messages/pl.json
+++ b/messages/pl.json
@@ -8,7 +8,7 @@
},
"navigation": {
"platform": "Platforma",
- "demos": "Dema",
+ "demos": "Demo",
"features": "Funkcje",
"faq": "FAQ",
"contact": "Kontakt",
@@ -79,9 +79,9 @@
},
"demos": {
"desk": {
- "slug": "demo",
+ "slug": "demo-biurko",
"eyebrow": "Demo produktowe",
- "title": "Konfigurator 3D, który sprzedaje za Ciebie",
+ "title": "Konfigurator - Biurko",
"intro": "Pozwalaj klientom tworzyć własne biurka regulowane w czasie rzeczywistym.",
"description": "Klient może zobaczyć swoje biurko w naturalnym oświetleniu, obrócić je o 360 stopni, powiększyć detale, zmienić dodatki i sprawdzić jak całość będzie wyglądała w jego przestrzeni.",
"imageUrl": "https://backend.ultifide.com/uploads/offer/page-header-element/optimized/b64b9dddfb838bfafea9da0ee5c04c68.png?width=1000&height=1000",
@@ -117,9 +117,9 @@
}
},
"room": {
- "slug": "demo-room",
+ "slug": "demo-pokoj",
"eyebrow": "Demo wnętrzarskie",
- "title": "Konfigurator 3D, który sprzedaje całe wnętrza",
+ "title": "Konfigurator - Wnętrze",
"intro": "Twórz i prezentuj kompletne aranżacje pomieszczeń oraz meble w interaktywnym środowisku 3D.",
"description": "Klient może zaprojektować pokój od podstaw, ustawić meble, zmienić kolory ścian, materiały, dodatki i zobaczyć wszystko w realistycznym oświetleniu.",
"imageUrl": "https://backend.ultifide.com/uploads/offer/page-header-element/optimized/e78aac1388ff07761422e12272690878.png?width=1000&height=1000",
@@ -155,12 +155,12 @@
}
},
"door": {
- "slug": "demo-door",
+ "slug": "demo-drzwi",
"eyebrow": "Demo produktowe",
- "title": "Konfigurator 3D drzwi dla producentów i sprzedawców",
+ "title": "Konfigurator - Drzwi",
"intro": "Pozwól klientom dobrać model, kolor, przeszklenie, klamkę i detale drzwi w interaktywnym podglądzie 3D.",
"description": "Konfigurator drzwi ułatwia sprzedaż produktów z wieloma wariantami. Klient widzi efekt wyborów od razu, a konfiguracja może zostać przekazana do koszyka, zapytania ofertowego albo systemu sprzedaży.",
- "imageUrl": "/demo-door-preview.svg",
+ "imageUrl": "/demo-door-preview.png",
"openLabel": "Otwórz konfigurator drzwi",
"benefitsIntro": "Dla firm, które sprzedają drzwi, fronty, zabudowy i produkty wymagające precyzyjnego dopasowania wariantów.",
"stats": [
diff --git a/public/demo-door-preview.png b/public/demo-door-preview.png
new file mode 100644
index 0000000..28d14d0
Binary files /dev/null and b/public/demo-door-preview.png differ
diff --git a/public/demo-door-preview.svg b/public/demo-door-preview.svg
deleted file mode 100644
index 436d682..0000000
--- a/public/demo-door-preview.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-
diff --git a/src/app/[locale]/dema/page.tsx b/src/app/[locale]/dema/page.tsx
index dea33af..57de6cf 100644
--- a/src/app/[locale]/dema/page.tsx
+++ b/src/app/[locale]/dema/page.tsx
@@ -1,7 +1,8 @@
import type {Metadata} from 'next';
import {DemoBrowser} from '@/components/DemoBrowser';
+import {DemoSubnav} from '@/components/DemoSubnav';
import {SectionHeader} from '@/components/SectionHeader';
-import {demoContent} from '@/config/content';
+import {orderedDemos} from '@/config/content';
export const metadata: Metadata = {
title: 'Dema konfiguratorów 3D | Ultifide',
@@ -9,8 +10,6 @@ export const metadata: Metadata = {
};
export default function DemosPage() {
- const demos = [demoContent.desk, demoContent.room, demoContent.door];
-
return (
@@ -20,7 +19,8 @@ export default function DemosPage() {
title="Sprawdź konfiguratory 3D w jednym miejscu"
description="Wybierz demo z listy, przetestuj je od razu w podglądzie, a potem przejdź do strony z opisem zastosowania i korzyści."
/>
-
+
+
diff --git a/src/app/[locale]/demo-biurko/page.tsx b/src/app/[locale]/demo-biurko/page.tsx
new file mode 100644
index 0000000..85f3c97
--- /dev/null
+++ b/src/app/[locale]/demo-biurko/page.tsx
@@ -0,0 +1,14 @@
+import type {Metadata} from 'next';
+import {DemoPage} from '@/components/DemoPage';
+import {demoContent} from '@/config/content';
+import messages from '../../../../messages/pl.json';
+
+export const metadata: Metadata = {
+ title: messages.metadata.deskTitle,
+ description:
+ 'Poznaj konfigurator 3D, który zwiększa konwersję i pozwala klientom tworzyć własne biurka regulowane w czasie rzeczywistym.'
+};
+
+export default function DeskDemoPage() {
+ return ;
+}
diff --git a/src/app/[locale]/demo-door/page.tsx b/src/app/[locale]/demo-door/page.tsx
index 9df2189..ab2fd12 100644
--- a/src/app/[locale]/demo-door/page.tsx
+++ b/src/app/[locale]/demo-door/page.tsx
@@ -1,14 +1,5 @@
-import type {Metadata} from 'next';
-import {DemoPage} from '@/components/DemoPage';
-import {demoContent} from '@/config/content';
-import messages from '../../../../messages/pl.json';
-
-export const metadata: Metadata = {
- title: messages.metadata.doorTitle,
- description:
- 'Poznaj konfigurator 3D drzwi, który pozwala klientom dobrać model, kolor, przeszklenie, klamkę i detale w czasie rzeczywistym.'
-};
+import {redirect} from 'next/navigation';
export default function DoorDemoPage() {
- return ;
+ redirect('/pl/demo-drzwi');
}
diff --git a/src/app/[locale]/demo-drzwi/page.tsx b/src/app/[locale]/demo-drzwi/page.tsx
new file mode 100644
index 0000000..9df2189
--- /dev/null
+++ b/src/app/[locale]/demo-drzwi/page.tsx
@@ -0,0 +1,14 @@
+import type {Metadata} from 'next';
+import {DemoPage} from '@/components/DemoPage';
+import {demoContent} from '@/config/content';
+import messages from '../../../../messages/pl.json';
+
+export const metadata: Metadata = {
+ title: messages.metadata.doorTitle,
+ description:
+ 'Poznaj konfigurator 3D drzwi, który pozwala klientom dobrać model, kolor, przeszklenie, klamkę i detale w czasie rzeczywistym.'
+};
+
+export default function DoorDemoPage() {
+ return ;
+}
diff --git a/src/app/[locale]/demo-pokoj/page.tsx b/src/app/[locale]/demo-pokoj/page.tsx
new file mode 100644
index 0000000..3a84c90
--- /dev/null
+++ b/src/app/[locale]/demo-pokoj/page.tsx
@@ -0,0 +1,14 @@
+import type {Metadata} from 'next';
+import {DemoPage} from '@/components/DemoPage';
+import {demoContent} from '@/config/content';
+import messages from '../../../../messages/pl.json';
+
+export const metadata: Metadata = {
+ title: messages.metadata.roomTitle,
+ description:
+ 'Poznaj konfigurator 3D, który pozwala klientom projektować całe pomieszczenia i zestawy mebli w czasie rzeczywistym.'
+};
+
+export default function RoomDemoPage() {
+ return ;
+}
diff --git a/src/app/[locale]/demo-room/page.tsx b/src/app/[locale]/demo-room/page.tsx
index 3a84c90..a75755a 100644
--- a/src/app/[locale]/demo-room/page.tsx
+++ b/src/app/[locale]/demo-room/page.tsx
@@ -1,14 +1,5 @@
-import type {Metadata} from 'next';
-import {DemoPage} from '@/components/DemoPage';
-import {demoContent} from '@/config/content';
-import messages from '../../../../messages/pl.json';
-
-export const metadata: Metadata = {
- title: messages.metadata.roomTitle,
- description:
- 'Poznaj konfigurator 3D, który pozwala klientom projektować całe pomieszczenia i zestawy mebli w czasie rzeczywistym.'
-};
+import {redirect} from 'next/navigation';
export default function RoomDemoPage() {
- return ;
+ redirect('/pl/demo-pokoj');
}
diff --git a/src/app/[locale]/demo/page.tsx b/src/app/[locale]/demo/page.tsx
index 85f3c97..ad12179 100644
--- a/src/app/[locale]/demo/page.tsx
+++ b/src/app/[locale]/demo/page.tsx
@@ -1,14 +1,5 @@
-import type {Metadata} from 'next';
-import {DemoPage} from '@/components/DemoPage';
-import {demoContent} from '@/config/content';
-import messages from '../../../../messages/pl.json';
-
-export const metadata: Metadata = {
- title: messages.metadata.deskTitle,
- description:
- 'Poznaj konfigurator 3D, który zwiększa konwersję i pozwala klientom tworzyć własne biurka regulowane w czasie rzeczywistym.'
-};
+import {redirect} from 'next/navigation';
export default function DeskDemoPage() {
- return ;
+ redirect('/pl/demo-biurko');
}
diff --git a/src/app/[locale]/layout.tsx b/src/app/[locale]/layout.tsx
index acd6d64..50c4ee2 100644
--- a/src/app/[locale]/layout.tsx
+++ b/src/app/[locale]/layout.tsx
@@ -1,8 +1,9 @@
import type {Metadata} from 'next';
-import {Poppins} from 'next/font/google';
+import localFont from 'next/font/local';
import {NextIntlClientProvider} from 'next-intl';
import {getMessages} from 'next-intl/server';
import {notFound} from 'next/navigation';
+import {ContactSection} from '@/components/ContactSection';
import {Footer} from '@/components/Footer';
import {Header} from '@/components/Header';
import {routing} from '@/i18n/routing';
@@ -12,9 +13,24 @@ type LocaleLayoutProps = {
params: Promise<{locale: string}>;
};
-const poppins = Poppins({
- subsets: ['latin', 'latin-ext'],
- weight: ['400', '600', '700'],
+const poppins = localFont({
+ src: [
+ {
+ path: '../fonts/Poppins-Regular.ttf',
+ weight: '400',
+ style: 'normal'
+ },
+ {
+ path: '../fonts/Poppins-SemiBold.ttf',
+ weight: '600',
+ style: 'normal'
+ },
+ {
+ path: '../fonts/Poppins-Bold.ttf',
+ weight: '700',
+ style: 'normal'
+ }
+ ],
display: 'swap'
});
@@ -44,6 +60,7 @@ export default async function LocaleLayout({children, params}: LocaleLayoutProps
{children}
+