wip
This commit is contained in:
@@ -1,15 +1,12 @@
|
||||
import { notFound } from 'next/navigation';
|
||||
import { getPageBySlug, getAllPages, getMediaById } from '@/lib/data';
|
||||
import { Metadata } from 'next';
|
||||
import { SEO } from '@/components/SEO';
|
||||
import { processHTML } from '@/lib/html-compat';
|
||||
import { LocaleSwitcher } from '@/components/LocaleSwitcher';
|
||||
import Link from 'next/link';
|
||||
import { ResponsiveSection, ResponsiveWrapper, ResponsiveGrid } from '@/components/layout/ResponsiveWrapper';
|
||||
import { FeaturedImage } from '@/components/content/FeaturedImage';
|
||||
import { Container } from '@/components/ui/Container';
|
||||
import { Button } from '@/components/ui/Button';
|
||||
import { ContentRenderer } from '@/components/content/ContentRenderer';
|
||||
import { FeaturedImage } from '@/components/content/FeaturedImage';
|
||||
import { ResponsiveWrapper, ResponsiveSection } from '@/components/layout/ResponsiveWrapper';
|
||||
import { LocaleSwitcher } from '@/components/LocaleSwitcher';
|
||||
import { SEO } from '@/components/SEO';
|
||||
import { Container } from '@/components/ui/Container';
|
||||
import { getAllPages, getMediaById, getPageBySlug } from '@/lib/data';
|
||||
import { Metadata } from 'next';
|
||||
|
||||
interface PageProps {
|
||||
params: {
|
||||
@@ -73,16 +70,40 @@ export default async function Page({ params }: PageProps) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
// Use contentHtml if available, otherwise use excerptHtml
|
||||
// Both should be processed through ContentRenderer which handles shortcodes
|
||||
const contentToDisplay = page.contentHtml && page.contentHtml.trim() !== ''
|
||||
? page.contentHtml
|
||||
: page.excerptHtml;
|
||||
// Special handling for home page vs other pages
|
||||
const isHomePage = slug === 'home' || actualSlug === 'corporate-3-landing-2' || actualSlug === 'start';
|
||||
|
||||
// Process the content to handle shortcodes and convert to HTML
|
||||
const processedContent = processHTML(contentToDisplay || '');
|
||||
if (isHomePage) {
|
||||
// HOME PAGE: Render content directly without additional wrappers
|
||||
// The content already contains full vc_row structures with backgrounds
|
||||
return (
|
||||
<>
|
||||
<SEO
|
||||
title={page.title}
|
||||
description={page.excerptHtml || ''}
|
||||
/>
|
||||
|
||||
{/* Main content - full width, no containers */}
|
||||
<div className="w-full">
|
||||
<ContentRenderer
|
||||
content={page.contentHtml || page.excerptHtml || ''}
|
||||
className=""
|
||||
parsePatterns={true}
|
||||
/>
|
||||
</div>
|
||||
|
||||
// Get featured image if available
|
||||
{/* Locale switcher at bottom */}
|
||||
<ResponsiveSection padding="responsive" className="bg-gray-50">
|
||||
<Container maxWidth="6xl" centered={true} padding="none">
|
||||
<LocaleSwitcher />
|
||||
</Container>
|
||||
</ResponsiveSection>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
// STANDARD PAGES: Use the existing layout with hero and containers
|
||||
const contentToDisplay = page.contentHtml || page.excerptHtml;
|
||||
const featuredImage = page.featuredImage ? getMediaById(page.featuredImage) : null;
|
||||
|
||||
return (
|
||||
@@ -114,111 +135,25 @@ export default async function Page({ params }: PageProps) {
|
||||
|
||||
{/* Main Content */}
|
||||
<ResponsiveSection padding="responsive" maxWidth="4xl">
|
||||
{/* Title - only show if no featured image */}
|
||||
{!featuredImage && (
|
||||
<ResponsiveWrapper stackOnMobile={true} centerOnMobile={true} className="mb-8">
|
||||
<h1 className="text-3xl sm:text-4xl font-bold text-gray-900 mb-4">
|
||||
{page.title}
|
||||
</h1>
|
||||
{page.excerptHtml && (
|
||||
<ContentRenderer
|
||||
content={processHTML(page.excerptHtml)}
|
||||
className="text-lg sm:text-xl text-gray-600 leading-relaxed"
|
||||
/>
|
||||
)}
|
||||
</ResponsiveWrapper>
|
||||
)}
|
||||
|
||||
{processedContent && (
|
||||
{/* Content with pattern parsing */}
|
||||
{contentToDisplay && (
|
||||
<ResponsiveWrapper className="bg-white rounded-lg shadow-sm p-6 sm:p-8" container={true} maxWidth="full">
|
||||
<ContentRenderer
|
||||
content={processedContent}
|
||||
content={contentToDisplay}
|
||||
className="prose prose-lg max-w-none"
|
||||
parsePatterns={true}
|
||||
/>
|
||||
</ResponsiveWrapper>
|
||||
)}
|
||||
|
||||
{/* Navigation Links */}
|
||||
<ResponsiveWrapper className="mt-12" container={true} maxWidth="full">
|
||||
<ResponsiveGrid
|
||||
columns={{ mobile: 1, tablet: 2, desktop: 4 }}
|
||||
gap="responsive"
|
||||
stackMobile={true}
|
||||
>
|
||||
<Link
|
||||
href={`/${locale}/blog`}
|
||||
className="p-4 bg-blue-50 hover:bg-blue-100 active:bg-blue-200 rounded-lg text-center transition-colors touch-target-md"
|
||||
>
|
||||
<div className="font-semibold text-blue-900 text-lg">Blog</div>
|
||||
<div className="text-sm text-blue-700 mt-1">Read our latest posts</div>
|
||||
</Link>
|
||||
<Link
|
||||
href={`/${locale}/products`}
|
||||
className="p-4 bg-green-50 hover:bg-green-100 active:bg-green-200 rounded-lg text-center transition-colors touch-target-md"
|
||||
>
|
||||
<div className="font-semibold text-green-900 text-lg">Products</div>
|
||||
<div className="text-sm text-green-700 mt-1">Browse our catalog</div>
|
||||
</Link>
|
||||
<Link
|
||||
href={`/${locale}/contact`}
|
||||
className="p-4 bg-orange-50 hover:bg-orange-100 active:bg-orange-200 rounded-lg text-center transition-colors touch-target-md"
|
||||
>
|
||||
<div className="font-semibold text-orange-900 text-lg">Contact</div>
|
||||
<div className="text-sm text-orange-700 mt-1">Get in touch</div>
|
||||
</Link>
|
||||
<Link
|
||||
href={`/${locale}/blog`}
|
||||
className="p-4 bg-purple-50 hover:bg-purple-100 active:bg-purple-200 rounded-lg text-center transition-colors touch-target-md"
|
||||
>
|
||||
<div className="font-semibold text-purple-900 text-lg">News</div>
|
||||
<div className="text-sm text-purple-700 mt-1">Latest updates</div>
|
||||
</Link>
|
||||
</ResponsiveGrid>
|
||||
</ResponsiveWrapper>
|
||||
</ResponsiveSection>
|
||||
|
||||
{/* Tailwind CSS Test Section */}
|
||||
<ResponsiveSection padding="responsive" className="bg-gradient-to-r from-blue-50 to-indigo-50">
|
||||
<Container maxWidth="6xl" centered={true} padding="none">
|
||||
<div className="text-center mb-8">
|
||||
<h2 className="text-3xl font-bold text-gray-900 mb-4">Tailwind CSS Test</h2>
|
||||
<p className="text-lg text-gray-600">If you can see styled components below, Tailwind CSS is working correctly!</p>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-4 justify-center items-center">
|
||||
<Button variant="primary" size="lg">
|
||||
Primary Button
|
||||
</Button>
|
||||
<Button variant="secondary" size="lg">
|
||||
Secondary Button
|
||||
</Button>
|
||||
<Button variant="outline" size="lg">
|
||||
Outline Button
|
||||
</Button>
|
||||
<Button variant="ghost" size="lg">
|
||||
Ghost Button
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="mt-8 grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
<div className="bg-white p-6 rounded-lg shadow-md border-2 border-blue-200">
|
||||
<h3 className="text-xl font-bold text-blue-900 mb-2">Card 1</h3>
|
||||
<p className="text-gray-600">This card uses Tailwind shadow, rounded, and border utilities.</p>
|
||||
</div>
|
||||
<div className="bg-white p-6 rounded-lg shadow-lg border-2 border-green-200">
|
||||
<h3 className="text-xl font-bold text-green-900 mb-2">Card 2</h3>
|
||||
<p className="text-gray-600">Different shadow intensity and border color.</p>
|
||||
</div>
|
||||
<div className="bg-white p-6 rounded-xl shadow-xl border-2 border-purple-200">
|
||||
<h3 className="text-xl font-bold text-purple-900 mb-2">Card 3</h3>
|
||||
<p className="text-gray-600">Rounded-xl and shadow-xl for emphasis.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-8 p-4 bg-yellow-100 border-l-4 border-yellow-500 text-yellow-800">
|
||||
<p className="font-bold">Success!</p>
|
||||
<p>If you see this styled alert box with proper colors, spacing, and borders, Tailwind CSS is processing correctly.</p>
|
||||
</div>
|
||||
</Container>
|
||||
</ResponsiveSection>
|
||||
|
||||
{/* Locale Switcher */}
|
||||
|
||||
Reference in New Issue
Block a user