diff --git a/next.config.ts b/next.config.ts index db244d5..295c903 100644 --- a/next.config.ts +++ b/next.config.ts @@ -8,6 +8,12 @@ const dirname = path.dirname(__filename) const nextConfig: NextConfig = { images: { + remotePatterns: [ + { + protocol: 'https', + hostname: 'images.unsplash.com', + }, + ], localPatterns: [ { pathname: '/api/media/file/**', diff --git a/src/blocks/FinalCTA/Component.tsx b/src/blocks/FinalCTA/Component.tsx index 2dd68f9..5131897 100644 --- a/src/blocks/FinalCTA/Component.tsx +++ b/src/blocks/FinalCTA/Component.tsx @@ -39,7 +39,7 @@ export const FinalCTABlock: React.FC = ({ title, subtitle, buttonText }) href={process.env.NEXT_PUBLIC_WHATSAPP_LINK || '#'} target="_blank" rel="noopener noreferrer" - className="inline-block px-10 py-5 bg-green-500 hover:bg-green-400 text-white text-lg font-bold rounded-xl transition-transform hover:scale-105 shadow-lg shadow-green-500/30" + className="inline-block px-10 py-4 bg-green-500 hover:bg-green-600 text-white text-base sm:text-lg font-bold rounded-xl transition-colors shadow-sm" > {buttonText} diff --git a/src/blocks/Hero/Component.tsx b/src/blocks/Hero/Component.tsx index 5d71fe1..e35cdf6 100644 --- a/src/blocks/Hero/Component.tsx +++ b/src/blocks/Hero/Component.tsx @@ -3,66 +3,82 @@ import React from 'react' import { motion } from 'framer-motion' import type { Page } from '../../payload-types' import Link from 'next/link' +import Image from 'next/image' +import { Shield, MessageCircle } from 'lucide-react' type Props = Extract[0], { blockType: 'hero' }> export const HeroBlock: React.FC = ({ title, subtitle, primaryCta, secondaryCta, yearsOfExperience }) => { return ( -
-
-
- - {title} - - - - {subtitle} - - - - - {primaryCta} - - {secondaryCta?.text && secondaryCta?.url && ( - - {secondaryCta.text} - - )} - +
+
+
+ {/* Kolumna tekstowa */} +
+ {yearsOfExperience && ( +
+ + {yearsOfExperience} +
+ )} - {yearsOfExperience && ( - - {yearsOfExperience} - - )} +

+ {title} +

+ +

+ {subtitle} +

+ +
+ + + {primaryCta} + + {secondaryCta?.text && secondaryCta?.url && ( + + {secondaryCta.text} + + )} +
+
+ + {/* Kolumna ze zdjęciem */} +
+
+
+ {/* PLACEHOLDER - do podmiany na realne zdjęcia klienta */} + Biuro doradztwa podatkowego +
+ + {/* Subtelna plakietka informacyjna */} +
+
+ JK +
+
+

Punkt Doradczy b.b.h.

+

Lohnsteuerhilfeverein e.V.

+
+
+
+
+
) diff --git a/src/blocks/Testimonials/Component.tsx b/src/blocks/Testimonials/Component.tsx index 96a2fb4..78eaf9b 100644 --- a/src/blocks/Testimonials/Component.tsx +++ b/src/blocks/Testimonials/Component.tsx @@ -1,39 +1,65 @@ 'use client' import React from 'react' -import { motion } from 'framer-motion' import { Quote } from 'lucide-react' +import Image from 'next/image' import type { Page } from '../../payload-types' type Props = Extract[0], { blockType: 'testimonials' }> +/* PLACEHOLDER - do podmiany na realne zdjęcia klienta */ +const avatarPlaceholders = [ + 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&w=150&h=150&q=80', + 'https://images.unsplash.com/photo-1534528741775-53994a69daeb?auto=format&fit=crop&w=150&h=150&q=80', + 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?auto=format&fit=crop&w=150&h=150&q=80', +] + export const TestimonialsBlock: React.FC = ({ title, testimonials }) => { return ( -
-
- - {title} - +
+
+
+

+ {title} +

+
-
- {testimonials?.map((t: NonNullable[0], index: number) => ( - - -

"{t.quote}"

-
— {t.author}
-
- ))} +
+ {testimonials?.map((t: NonNullable[0], index: number) => { + const avatarUrl = avatarPlaceholders[index % avatarPlaceholders.length] + + return ( +
+
+ +

+ "{t.quote}" +

+
+ +
+
+ {/* PLACEHOLDER - do podmiany na realne zdjęcia klienta */} + {t.author +
+
+

+ {t.author} +

+

Klient zweryfikowany

+
+
+
+ ) + })}
diff --git a/src/blocks/UniqueValue/Component.tsx b/src/blocks/UniqueValue/Component.tsx index 48539e1..ca11700 100644 --- a/src/blocks/UniqueValue/Component.tsx +++ b/src/blocks/UniqueValue/Component.tsx @@ -1,33 +1,57 @@ 'use client' import React from 'react' -import { motion } from 'framer-motion' import type { Page } from '../../payload-types' +import Image from 'next/image' +import { CheckCircle } from 'lucide-react' type Props = Extract[0], { blockType: 'uniqueValue' }> export const UniqueValueBlock: React.FC = ({ title, description }) => { return ( -
-
-
- - {title} - - - {description} - +
+
+
+ {/* Kolumna ze zdjęciem */} +
+
+ {/* PLACEHOLDER - do podmiany na realne zdjęcia klienta */} + Dokumenty i profesjonalne doradztwo podatkowe +
+
+ + {/* Kolumna tekstowa */} +
+
+ + Komfort i pewność +
+ +

+ {title} +

+ +

+ {description} +

+ +
+
+ + Bez barier językowych +
+
+ + Indywidualne podejście +
+
+
+
) diff --git a/src/proxy.ts b/src/proxy.ts index 0bb2603..8c42269 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -3,7 +3,7 @@ import type { NextRequest } from 'next/server'; import { createLocaleMiddleware } from '@intecion/ipal-kit/next/middleware'; import { i18n } from './i18n.config'; -const localeMiddleware = createLocaleMiddleware({ config: i18n }); +const localeMiddleware = createLocaleMiddleware({ config: i18n, consentCategory: 'necessary' }); export const config = { matcher: ['/((?!api|admin|_next|.*\\..*).*)'],