Initial commit: New industrial design with green theme

This commit is contained in:
Kunthawat Greethong
2026-02-25 22:04:30 +07:00
commit ed1150ceaf
255 changed files with 15546 additions and 0 deletions

119
src/app/about-us/page.tsx Normal file
View File

@@ -0,0 +1,119 @@
import Image from 'next/image';
import { siteConfig } from '@/data/site-config';
export const metadata = {
title: 'เกี่ยวกับเรา',
description: 'เรียนรู้เพิ่มเติมเกี่ยวกับดีลพลัสเทค ผู้เชี่ยวชาญด้านวัสดุท่อและอุปกรณ์ระบบท่อ',
};
export default function AboutPage() {
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Hero */}
<div className="relative h-[400px] -mt-32 mb-12 rounded-b-3xl overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-r from-secondary-900 via-secondary-800 to-secondary-900" />
<div className="absolute inset-0 flex items-center justify-center">
<div className="text-center">
<h1 className="text-4xl md:text-5xl font-bold text-white mb-4">
<span className="text-primary-400">{siteConfig.name}</span>
</h1>
<p className="text-xl text-secondary-200">
</p>
</div>
</div>
</div>
{/* Company Story */}
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 mb-16">
<div>
<h2 className="text-3xl font-bold text-secondary-900 mb-6"></h2>
<div className="space-y-4 text-secondary-600">
<p>
{siteConfig.nameTh}
</p>
<p>
10
</p>
<p>
</p>
</div>
</div>
<div className="relative aspect-video bg-secondary-100 rounded-xl overflow-hidden">
<Image
src="/images/2021/03/hdpe-pipe_000C.jpg"
alt="เกี่ยวกับดีลพลัสเทค"
fill
className="object-cover"
/>
</div>
</div>
{/* Vision & Mission */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 mb-16">
<div className="card-industrial">
<h3 className="text-2xl font-bold text-primary-400 mb-4"></h3>
<p className="text-secondary-200">
</p>
</div>
<div className="card-industrial">
<h3 className="text-2xl font-bold text-primary-400 mb-4"></h3>
<p className="text-secondary-200">
</p>
</div>
</div>
{/* Core Values */}
<div className="text-center mb-12">
<h2 className="text-3xl font-bold text-secondary-900 mb-8"></h2>
<div className="grid grid-cols-1 md:grid-cols-4 gap-6">
<div className="p-6 bg-primary-50 rounded-xl">
<div className="w-12 h-12 bg-primary-600 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
<h4 className="font-bold text-secondary-900 mb-2"></h4>
<p className="text-secondary-600 text-sm"></p>
</div>
<div className="p-6 bg-primary-50 rounded-xl">
<div className="w-12 h-12 bg-primary-600 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
<h4 className="font-bold text-secondary-900 mb-2"></h4>
<p className="text-secondary-600 text-sm"></p>
</div>
<div className="p-6 bg-primary-50 rounded-xl">
<div className="w-12 h-12 bg-primary-600 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
</svg>
</div>
<h4 className="font-bold text-secondary-900 mb-2"></h4>
<p className="text-secondary-600 text-sm"></p>
</div>
<div className="p-6 bg-primary-50 rounded-xl">
<div className="w-12 h-12 bg-primary-600 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
</svg>
</div>
<h4 className="font-bold text-secondary-900 mb-2"></h4>
<p className="text-secondary-600 text-sm"></p>
</div>
</div>
</div>
</div>
</div>
);
}

View File

@@ -0,0 +1,133 @@
import { notFound } from 'next/navigation';
import Image from 'next/image';
import Link from 'next/link';
import fs from 'fs';
import path from 'path';
import matter from 'gray-matter';
import { remark } from 'remark';
import html from 'remark-html';
interface Props {
params: { slug: string };
}
async function getPost(slug: string) {
const blogDir = path.join(process.cwd(), 'src/content/blog');
const filePath = path.join(blogDir, `${slug}.md`);
if (!fs.existsSync(filePath)) {
return null;
}
const fileContent = fs.readFileSync(filePath, 'utf-8');
const { data, content } = matter(fileContent);
const processedContent = await remark()
.use(html, { sanitize: false })
.process(content);
const contentHtml = processedContent.toString();
return {
slug,
title: data.title || 'ไม่มีชื่อ',
excerpt: data.excerpt || '',
date: data.date || new Date().toISOString(),
author: data.author || 'ดีลพลัสเทค',
category: data.category || 'ทั่วไป',
image: data.image || '/images/2021/03/ppr-pipe_000C.jpg',
content: contentHtml,
};
}
export async function generateMetadata({ params }: Props) {
const post = await getPost(params.slug);
if (!post) return { title: 'ไม่พบบทความ' };
return {
title: post.title,
description: post.excerpt,
};
}
export async function generateStaticParams() {
const blogDir = path.join(process.cwd(), 'src/content/blog');
const files = fs.readdirSync(blogDir).filter(f => f.endsWith('.md'));
return files.map(filename => ({
slug: filename.replace('.md', ''),
}));
}
export default async function BlogPostPage({ params }: Props) {
const post = await getPost(params.slug);
if (!post) {
notFound();
}
return (
<div className="pt-32 pb-16">
<article className="container mx-auto px-4">
{/* Header */}
<header className="max-w-3xl mx-auto mb-8">
<Link
href="/blog"
className="inline-flex items-center text-primary-600 hover:text-primary-700 mb-4"
>
<svg className="w-4 h-4 mr-2" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 19l-7-7 7-7" />
</svg>
</Link>
<span className="industrial-badge">{post.category}</span>
<h1 className="text-3xl md:text-4xl lg:text-5xl font-bold text-secondary-900 mt-4 mb-4">
{post.title}
</h1>
<div className="flex items-center gap-4 text-secondary-600">
<span>{post.author}</span>
<span></span>
<time>
{new Date(post.date).toLocaleDateString('th-TH', {
year: 'numeric',
month: 'long',
day: 'numeric',
})}
</time>
</div>
</header>
{/* Featured Image */}
<div className="relative aspect-video max-w-4xl mx-auto rounded-xl overflow-hidden mb-8">
<Image
src={post.image}
alt={post.title}
fill
className="object-cover"
/>
</div>
{/* Content */}
<div
className="max-w-3xl mx-auto prose prose-lg prose-headings:font-bold prose-headings:text-secondary-900 prose-p:text-secondary-600 prose-a:text-primary-600 prose-strong:text-secondary-900"
dangerouslySetInnerHTML={{ __html: post.content }}
/>
{/* CTA */}
<div className="max-w-3xl mx-auto mt-12 bg-secondary-800 rounded-2xl p-8 text-center">
<h2 className="text-2xl font-bold text-white mb-4">
?
</h2>
<p className="text-secondary-300 mb-6">
</p>
<Link href="/contact-us" className="btn-primary">
</Link>
</div>
</article>
</div>
);
}

101
src/app/blog/page.tsx Normal file
View File

@@ -0,0 +1,101 @@
import Link from 'next/link';
import Image from 'next/image';
import fs from 'fs';
import path from 'path';
import matter from 'gray-matter';
export const metadata = {
title: 'บทความ',
description: 'บทความความรู้เกี่ยวกับวัสดุท่อ อุปกรณ์ระบบท่อ และเทคนิคการติดตั้ง',
};
function getBlogPosts() {
const blogDir = path.join(process.cwd(), 'src/content/blog');
const files = fs.readdirSync(blogDir).filter(f => f.endsWith('.md'));
return files.map(filename => {
const filePath = path.join(blogDir, filename);
const fileContent = fs.readFileSync(filePath, 'utf-8');
const { data } = matter(fileContent);
return {
slug: filename.replace('.md', ''),
title: data.title || 'ไม่มีชื่อ',
excerpt: data.excerpt || '',
date: data.date || new Date().toISOString(),
author: data.author || 'ดีลพลัสเทค',
category: data.category || 'ทั่วไป',
image: data.image || '/images/2021/03/ppr-pipe_000C.jpg',
};
}).sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
}
export default function BlogPage() {
const posts = getBlogPosts();
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Hero */}
<div className="text-center mb-12">
<h1 className="text-4xl md:text-5xl font-bold text-secondary-900 mb-4">
<span className="text-primary-600"></span>
</h1>
<p className="text-xl text-secondary-600 max-w-2xl mx-auto">
</p>
</div>
{/* Blog Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{posts.map((post) => (
<Link
key={post.slug}
href={`/blog/${post.slug}`}
className="card group"
>
<div className="relative aspect-video bg-secondary-100">
<Image
src={post.image}
alt={post.title}
fill
className="object-cover group-hover:scale-105 transition-transform duration-300"
/>
<div className="absolute top-4 left-4">
<span className="industrial-badge">{post.category}</span>
</div>
</div>
<div className="p-6">
<time className="text-sm text-secondary-500">
{new Date(post.date).toLocaleDateString('th-TH', {
year: 'numeric',
month: 'long',
day: 'numeric',
})}
</time>
<h3 className="text-xl font-bold text-secondary-900 mt-2 group-hover:text-primary-600 transition-colors">
{post.title}
</h3>
<p className="text-secondary-600 text-sm mt-2 line-clamp-2">
{post.excerpt}
</p>
<span className="text-primary-600 font-semibold flex items-center gap-2 mt-4">
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
</span>
</div>
</Link>
))}
</div>
{posts.length === 0 && (
<div className="text-center py-12">
<p className="text-secondary-600"></p>
</div>
)}
</div>
</div>
);
}

181
src/app/contact-us/page.tsx Normal file
View File

@@ -0,0 +1,181 @@
import { siteConfig, workHours } from '@/data/site-config';
export const metadata = {
title: 'ติดต่อเรา',
description: 'ติดต่อดีลพลัสเทค สอบถามข้อมูลสินค้า ขอใบเสนอราคา หรือติดต่อทีมงาน',
};
export default function ContactPage() {
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Hero */}
<div className="text-center mb-12">
<h1 className="text-4xl md:text-5xl font-bold text-secondary-900 mb-4">
<span className="text-primary-600"></span>
</h1>
<p className="text-xl text-secondary-600 max-w-2xl mx-auto">
</p>
</div>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12">
{/* Contact Info */}
<div>
<div className="bg-secondary-800 rounded-2xl p-8 mb-8">
<h2 className="text-2xl font-bold text-white mb-6"></h2>
<div className="space-y-6">
<div className="flex items-start gap-4">
<div className="w-12 h-12 bg-primary-600 rounded-lg flex items-center justify-center flex-shrink-0">
<svg className="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" />
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 11a3 3 0 11-6 0 3 3 0 016 0z" />
</svg>
</div>
<div>
<h3 className="font-bold text-white"></h3>
<p className="text-secondary-300">{siteConfig.address}</p>
</div>
</div>
<div className="flex items-start gap-4">
<div className="w-12 h-12 bg-primary-600 rounded-lg flex items-center justify-center flex-shrink-0">
<svg className="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" />
</svg>
</div>
<div>
<h3 className="font-bold text-white"></h3>
<a href={`tel:${siteConfig.phone}`} className="text-primary-400 hover:text-primary-300">
{siteConfig.phone}
</a>
</div>
</div>
<div className="flex items-start gap-4">
<div className="w-12 h-12 bg-primary-600 rounded-lg flex items-center justify-center flex-shrink-0">
<svg className="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
</svg>
</div>
<div>
<h3 className="font-bold text-white"></h3>
<a href={`mailto:${siteConfig.email}`} className="text-primary-400 hover:text-primary-300">
{siteConfig.email}
</a>
</div>
</div>
<div className="flex items-start gap-4">
<div className="w-12 h-12 bg-[#00B900] rounded-lg flex items-center justify-center flex-shrink-0">
<svg className="w-6 h-6 text-white" viewBox="0 0 24 24" fill="currentColor">
<path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/>
</svg>
</div>
<div>
<h3 className="font-bold text-white">LINE Official</h3>
<a
href={`https://line.me/ti/p/${siteConfig.lineId}`}
target="_blank"
rel="noopener noreferrer"
className="text-primary-400 hover:text-primary-300"
>
{siteConfig.lineId}
</a>
</div>
</div>
</div>
</div>
{/* Business Hours */}
<div className="bg-primary-600 rounded-2xl p-8">
<h2 className="text-2xl font-bold text-white mb-6"></h2>
<ul className="space-y-3">
{workHours.map((item) => (
<li key={item.day} className="flex justify-between">
<span className="text-primary-100">{item.day}</span>
<span className={`font-semibold ${item.isClosed ? 'text-red-200' : 'text-white'}`}>
{item.hours}
</span>
</li>
))}
</ul>
</div>
</div>
{/* Contact Form */}
<div>
<div className="bg-white rounded-2xl shadow-card p-8">
<h2 className="text-2xl font-bold text-secondary-900 mb-6"></h2>
<form className="space-y-6">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label className="block text-sm font-medium text-secondary-700 mb-2">
- *
</label>
<input
type="text"
className="w-full px-4 py-3 rounded-lg border border-secondary-200 focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 outline-none transition-colors"
placeholder="ชื่อของคุณ"
/>
</div>
<div>
<label className="block text-sm font-medium text-secondary-700 mb-2">
*
</label>
<input
type="tel"
className="w-full px-4 py-3 rounded-lg border border-secondary-200 focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 outline-none transition-colors"
placeholder="08x-xxx-xxxx"
/>
</div>
</div>
<div>
<label className="block text-sm font-medium text-secondary-700 mb-2">
</label>
<input
type="email"
className="w-full px-4 py-3 rounded-lg border border-secondary-200 focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 outline-none transition-colors"
placeholder="email@example.com"
/>
</div>
<div>
<label className="block text-sm font-medium text-secondary-700 mb-2">
*
</label>
<select className="w-full px-4 py-3 rounded-lg border border-secondary-200 focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 outline-none transition-colors">
<option value=""></option>
<option value="quote"></option>
<option value="product"></option>
<option value="service"></option>
<option value="other"></option>
</select>
</div>
<div>
<label className="block text-sm font-medium text-secondary-700 mb-2">
*
</label>
<textarea
rows={5}
className="w-full px-4 py-3 rounded-lg border border-secondary-200 focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 outline-none transition-colors resize-none"
placeholder="รายละเอียดที่ต้องการสอบถาม..."
/>
</div>
<button type="submit" className="btn-primary w-full">
</button>
</form>
</div>
</div>
</div>
</div>
</div>
);
}

48
src/app/layout.tsx Normal file
View File

@@ -0,0 +1,48 @@
import type { Metadata } from 'next';
import { Kanit } from 'next/font/google';
import '@/styles/globals.css';
import Header from '@/components/layout/Header';
import Footer from '@/components/layout/Footer';
import FloatingContact from '@/components/layout/FloatingContact';
const kanit = Kanit({
subsets: ['latin', 'thai'],
weight: ['300', '400', '500', '600', '700'],
variable: '--font-kanit',
display: 'swap',
});
export const metadata: Metadata = {
title: {
default: 'ดีลพลัสเทค - ผู้เชี่ยวชาญด้านวัสดุท่อและอุปกรณ์ระบบท่อ',
template: '%s | ดีลพลัสเทค',
},
description: 'ดีลพลัสเทค - ผู้เชี่ยวชาญด้านวัสดุท่อและอุปกรณ์ระบบท่อ ท่อพีพีอาร์ ท่อ HDPE ท่อ PVC วาล์ว และอุปกรณ์ต่อท่อครบวงจร',
keywords: ['ท่อพีพีอาร์', 'ท่อ HDPE', 'ท่อ PVC', 'วาล์ว', 'อุปกรณ์ท่อ', 'ดีลพลัสเทค'],
authors: [{ name: 'Deal Plus Tech' }],
openGraph: {
type: 'website',
locale: 'th_TH',
url: 'https://dealplustech.co.th',
siteName: 'ดีลพลัสเทค',
title: 'ดีลพลัสเทค - ผู้เชี่ยวชาญด้านวัสดุท่อและอุปกรณ์ระบบท่อ',
description: 'ดีลพลัสเทค - ผู้เชี่ยวชาญด้านวัสดุท่อและอุปกรณ์ระบบท่อ ท่อพีพีอาร์ ท่อ HDPE ท่อ PVC วาล์ว และอุปกรณ์ต่อท่อครบวงจร',
},
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="th" className={kanit.variable}>
<body className="font-sans">
<Header />
<main className="min-h-screen">{children}</main>
<Footer />
<FloatingContact />
</body>
</html>
);
}

20
src/app/not-found.tsx Normal file
View File

@@ -0,0 +1,20 @@
import Link from 'next/link';
export default function NotFound() {
return (
<div className="min-h-[60vh] flex items-center justify-center">
<div className="text-center px-4">
<h1 className="text-6xl font-bold text-secondary-900 mb-4">404</h1>
<h2 className="text-2xl font-bold text-secondary-700 mb-4">
</h2>
<p className="text-secondary-600 mb-8">
</p>
<Link href="/" className="btn-primary">
</Link>
</div>
</div>
);
}

198
src/app/page.tsx Normal file
View File

@@ -0,0 +1,198 @@
import Image from 'next/image';
import Link from 'next/link';
import { productCategories, siteConfig } from '@/data/site-config';
export default function HomePage() {
const featuredProducts = productCategories.slice(0, 6);
return (
<>
{/* Hero Section */}
<section className="relative h-[80vh] min-h-[600px] bg-secondary-900">
<div className="absolute inset-0 bg-gradient-to-r from-secondary-900 via-secondary-900/80 to-secondary-900/40 z-10" />
<Image
src="/images/2021/03/ppr-pipe_000C.jpg"
alt="ท่อพีพีอาร์คุณภาพสูง"
fill
className="object-cover opacity-60"
priority
/>
<div className="relative z-20 container mx-auto px-4 h-full flex items-center">
<div className="max-w-2xl">
<span className="inline-block px-4 py-2 bg-primary-600 text-white font-semibold mb-4">
</span>
<h1 className="text-4xl md:text-5xl lg:text-6xl font-bold text-white mb-6">
<span className="text-primary-400"></span>
</h1>
<p className="text-xl text-secondary-200 mb-8">
{siteConfig.description}
</p>
<div className="flex flex-wrap gap-4">
<Link href="/product" className="btn-primary">
</Link>
<Link href="/contact-us" className="btn-outline border-white text-white hover:bg-white hover:text-secondary-900">
</Link>
</div>
</div>
</div>
</section>
{/* Features Section */}
<section className="py-16 bg-secondary-800">
<div className="container mx-auto px-4">
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
<div className="text-center p-6">
<div className="w-16 h-16 bg-primary-600 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z" />
</svg>
</div>
<h3 className="text-xl font-bold text-white mb-2"></h3>
<p className="text-secondary-300">
</p>
</div>
<div className="text-center p-6">
<div className="w-16 h-16 bg-primary-600 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
</div>
<h3 className="text-xl font-bold text-white mb-2"></h3>
<p className="text-secondary-300">
</p>
</div>
<div className="text-center p-6">
<div className="w-16 h-16 bg-primary-600 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M18.364 5.636l-3.536 3.536m0 5.656l3.536 3.536M9.172 9.172L5.636 5.636m3.536 9.192l-3.536 3.536M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-5 0a4 4 0 11-8 0 4 4 0 018 0z" />
</svg>
</div>
<h3 className="text-xl font-bold text-white mb-2"></h3>
<p className="text-secondary-300">
</p>
</div>
</div>
</div>
</section>
{/* Featured Products Section */}
<section className="py-16">
<div className="container mx-auto px-4">
<div className="text-center mb-12">
<h2 className="section-title">
<span className="text-primary-600"></span>
</h2>
<p className="section-subtitle">
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{featuredProducts.map((product) => (
<Link
key={product.id}
href={product.href}
className="card group"
>
<div className="relative aspect-video bg-secondary-100">
<Image
src={product.image}
alt={product.name}
fill
className="object-cover group-hover:scale-105 transition-transform duration-300"
/>
<div className="absolute top-4 left-4">
<span className="industrial-badge">{product.nameEn}</span>
</div>
</div>
<div className="p-6">
<h3 className="text-xl font-bold text-secondary-900 mb-2 group-hover:text-primary-600 transition-colors">
{product.name}
</h3>
<p className="text-secondary-600 text-sm mb-4">
{product.shortDescription || product.description.slice(0, 100) + '...'}
</p>
<span className="text-primary-600 font-semibold flex items-center gap-2">
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
</span>
</div>
</Link>
))}
</div>
<div className="text-center mt-12">
<Link href="/product" className="btn-secondary">
</Link>
</div>
</div>
</section>
{/* CTA Section */}
<section className="py-16 bg-primary-600">
<div className="container mx-auto px-4 text-center">
<h2 className="text-3xl md:text-4xl font-bold text-white mb-4">
?
</h2>
<p className="text-primary-100 text-lg mb-8 max-w-2xl mx-auto">
</p>
<div className="flex flex-wrap justify-center gap-4">
<a
href={`tel:${siteConfig.phone}`}
className="btn-secondary bg-white text-primary-600 hover:bg-primary-50"
>
: {siteConfig.phone}
</a>
<Link href="/contact-us" className="btn-outline border-white text-white hover:bg-white hover:text-primary-600">
</Link>
</div>
</div>
</section>
{/* About Section */}
<section className="py-16">
<div className="container mx-auto px-4">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<div>
<h2 className="section-title mb-6">
<span className="text-primary-600">{siteConfig.name}</span>
</h2>
<p className="text-secondary-600 mb-4">
{siteConfig.nameTh}
10
</p>
<p className="text-secondary-600 mb-6">
HDPE PVC
</p>
<Link href="/about-us" className="btn-primary">
</Link>
</div>
<div className="relative aspect-video bg-secondary-100 rounded-xl overflow-hidden">
<Image
src="/images/2021/03/hdpe-pipe_000C.jpg"
alt="เกี่ยวกับดีลพลัสเทค"
fill
className="object-cover"
/>
</div>
</div>
</div>
</section>
</>
);
}

View File

@@ -0,0 +1,82 @@
import Image from 'next/image';
export const metadata = {
title: 'ผลงานของเรา',
description: 'ผลงานโครงการต่างๆ ที่ดีลพลัสเทคได้ร่วมเป็นส่วนหนึ่ง',
};
const portfolioItems = [
{
title: 'โครงการอาคารสำนักงาน',
category: 'อาคารพาณิชย์',
image: '/images/2021/03/hdpe-pipe_000C.jpg',
},
{
title: 'โครงการโรงงานอุตสาหกรรม',
category: 'อุตสาหกรรม',
image: '/images/2021/03/ppr-pipe_000C.jpg',
},
{
title: 'โครงการบ้านพักอาศัย',
category: 'ที่อยู่อาศัย',
image: '/images/2021/03/pvc-pipe_000C.jpg',
},
{
title: 'โครงการระบบดับเพลิง',
category: 'ระบบดับเพลิง',
image: '/images/2021/03/realflex_000C.jpg',
},
{
title: 'โครงการระบบปรับอากาศ',
category: 'HVAC',
image: '/images/2021/03/grilles_000C.jpg',
},
{
title: 'โครงการระบบประปา',
category: 'ระบบประปา',
image: '/images/2021/03/upvc-pipe_000C.jpg',
},
];
export default function PortfolioPage() {
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Hero */}
<div className="text-center mb-12">
<h1 className="text-4xl md:text-5xl font-bold text-secondary-900 mb-4">
<span className="text-primary-600"></span>
</h1>
<p className="text-xl text-secondary-600 max-w-2xl mx-auto">
</p>
</div>
{/* Portfolio Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{portfolioItems.map((item, index) => (
<div key={index} className="card group cursor-pointer">
<div className="relative aspect-video bg-secondary-100">
<Image
src={item.image}
alt={item.title}
fill
className="object-cover group-hover:scale-105 transition-transform duration-300"
/>
<div className="absolute inset-0 bg-gradient-to-t from-secondary-900/80 to-transparent opacity-0 group-hover:opacity-100 transition-opacity" />
<div className="absolute bottom-0 left-0 right-0 p-4 translate-y-full group-hover:translate-y-0 transition-transform">
<span className="text-primary-400 text-sm">{item.category}</span>
<h3 className="text-white font-bold">{item.title}</h3>
</div>
</div>
<div className="p-4 group-hover:hidden">
<span className="text-xs text-primary-600 font-semibold">{item.category}</span>
<h3 className="text-lg font-bold text-secondary-900 mt-1">{item.title}</h3>
</div>
</div>
))}
</div>
</div>
</div>
);
}

65
src/app/product/page.tsx Normal file
View File

@@ -0,0 +1,65 @@
import Image from 'next/image';
import Link from 'next/link';
import { productCategories } from '@/data/site-config';
export const metadata = {
title: 'สินค้า - ท่อพีพีอาร์ ท่อ HDPE ท่อ PVC วาล์ว อุปกรณ์ท่อ',
description: 'สินค้าครบวงจร ท่อพีพีอาร์ ท่อ HDPE ท่อ PVC วาล์ว อุปกรณ์แขวนท่อ อุปกรณ์ปรับอากาศ และอุปกรณ์ดับเพลิง',
};
export default function ProductPage() {
// Group products by category
const categories = productCategories.reduce((acc, product) => {
const cat = product.slug;
if (!acc[cat]) {
acc[cat] = [];
}
acc[cat].push(product);
return acc;
}, {} as Record<string, typeof productCategories>);
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Page Header */}
<div className="text-center mb-12">
<h1 className="text-4xl md:text-5xl font-bold text-secondary-900 mb-4">
<span className="text-primary-600"></span>
</h1>
<p className="text-xl text-secondary-600 max-w-2xl mx-auto">
</p>
</div>
{/* Products Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
{productCategories.map((product) => (
<Link
key={product.id}
href={product.href}
className="card group"
>
<div className="relative aspect-video bg-secondary-100">
<Image
src={product.image}
alt={product.name}
fill
className="object-cover group-hover:scale-105 transition-transform duration-300"
/>
</div>
<div className="p-4">
<span className="text-xs text-primary-600 font-semibold">{product.nameEn}</span>
<h3 className="text-lg font-bold text-secondary-900 mt-1 group-hover:text-primary-600 transition-colors">
{product.name}
</h3>
<p className="text-secondary-600 text-sm mt-2 line-clamp-2">
{product.shortDescription || product.description}
</p>
</div>
</Link>
))}
</div>
</div>
</div>
);
}

83
src/app/services/page.tsx Normal file
View File

@@ -0,0 +1,83 @@
import Image from 'next/image';
export const metadata = {
title: 'บริการของเรา',
description: 'บริการครบวงจร จำหน่ายวัสดุท่อ ให้คำปรึกษา ออกแบบระบบ และติดตั้ง',
};
const services = [
{
title: 'จำหน่ายวัสดุท่อ',
description: 'จำหน่ายท่อพีพีอาร์ ท่อ HDPE ท่อ PVC วาล์ว และอุปกรณ์ต่อท่อครบวงจร สินค้าคุณภาพ ราคาแข่งขันได้',
image: '/images/2021/03/ppr-pipe_000C.jpg',
},
{
title: 'ให้คำปรึกษา',
description: 'ทีมงานมืออาชีพพร้อมให้คำปรึกษาเกี่ยวกับการเลือกวัสดุท่อที่เหมาะสมกับโครงการของคุณ',
image: '/images/2021/03/hdpe-pipe_000C.jpg',
},
{
title: 'ออกแบบระบบ',
description: 'บริการออกแบบระบบท่อน้ำ ระบบดับเพลิง และระบบปรับอากาศ โดยวิศวกรผู้เชี่ยวชาญ',
image: '/images/2021/03/valve_000C.jpg',
},
{
title: 'จัดส่งสินค้า',
description: 'บริการจัดส่งสินค้าทั่วประเทศ รวดเร็ว ปลอดภัย มีประกันความเสียหาย',
image: '/images/2021/03/hdpe-welding_000C-1.jpg',
},
];
export default function ServicesPage() {
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Hero */}
<div className="text-center mb-12">
<h1 className="text-4xl md:text-5xl font-bold text-secondary-900 mb-4">
<span className="text-primary-600"></span>
</h1>
<p className="text-xl text-secondary-600 max-w-2xl mx-auto">
</p>
</div>
{/* Services Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
{services.map((service, index) => (
<div key={index} className="card overflow-hidden group">
<div className="relative h-64 bg-secondary-100">
<Image
src={service.image}
alt={service.title}
fill
className="object-cover group-hover:scale-105 transition-transform duration-300"
/>
<div className="absolute inset-0 bg-gradient-to-t from-secondary-900/80 to-transparent" />
<div className="absolute bottom-0 left-0 right-0 p-6">
<h3 className="text-2xl font-bold text-white">{service.title}</h3>
</div>
</div>
<div className="p-6">
<p className="text-secondary-600">{service.description}</p>
</div>
</div>
))}
</div>
{/* CTA */}
<div className="mt-16 bg-secondary-800 rounded-2xl p-8 md:p-12 text-center">
<h2 className="text-3xl font-bold text-white mb-4">
?
</h2>
<p className="text-secondary-300 mb-6 max-w-xl mx-auto">
</p>
<a href="/contact-us" className="btn-primary">
</a>
</div>
</div>
</div>
);
}

View File

@@ -0,0 +1,33 @@
'use client';
import { siteConfig } from '@/data/site-config';
export default function FloatingContact() {
return (
<div className="fixed bottom-6 right-6 z-40 flex flex-col gap-3">
{/* LINE */}
<a
href={`https://line.me/ti/p/${siteConfig.lineId}`}
target="_blank"
rel="noopener noreferrer"
className="w-14 h-14 bg-[#00B900] rounded-full flex items-center justify-center shadow-lg hover:scale-110 transition-transform"
aria-label="ติดต่อผ่าน LINE"
>
<svg className="w-7 h-7 text-white" viewBox="0 0 24 24" fill="currentColor">
<path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/>
</svg>
</a>
{/* Phone */}
<a
href={`tel:${siteConfig.phone}`}
className="w-14 h-14 bg-primary-600 rounded-full flex items-center justify-center shadow-lg hover:scale-110 transition-transform"
aria-label="โทรหาเรา"
>
<svg className="w-7 h-7 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" />
</svg>
</a>
</div>
);
}

View File

@@ -0,0 +1,119 @@
import Link from 'next/link';
import { siteConfig, workHours, mainNavigation } from '@/data/site-config';
export default function Footer() {
return (
<footer className="bg-secondary-900 text-white">
{/* Main Footer */}
<div className="container mx-auto px-4 py-12">
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
{/* Company Info */}
<div>
<div className="flex items-center gap-3 mb-4">
<div className="w-10 h-10 bg-primary-600 rounded-lg flex items-center justify-center">
<span className="text-white font-bold text-xl">D</span>
</div>
<div>
<span className="font-bold text-lg">{siteConfig.name}</span>
<span className="block text-primary-400 text-xs">{siteConfig.nameTh}</span>
</div>
</div>
<p className="text-secondary-300 text-sm mb-4">
{siteConfig.description}
</p>
<div className="flex gap-3">
<a
href={siteConfig.facebookUrl}
target="_blank"
rel="noopener noreferrer"
className="w-10 h-10 bg-secondary-800 rounded-lg flex items-center justify-center hover:bg-primary-600 transition-colors"
>
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
<path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/>
</svg>
</a>
<a
href={`https://line.me/ti/p/${siteConfig.lineId}`}
target="_blank"
rel="noopener noreferrer"
className="w-10 h-10 bg-secondary-800 rounded-lg flex items-center justify-center hover:bg-primary-600 transition-colors"
>
<svg className="w-5 h-5" viewBox="0 0 24 24" fill="currentColor">
<path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/>
</svg>
</a>
</div>
</div>
{/* Quick Links */}
<div>
<h3 className="text-lg font-bold mb-4 text-primary-400"></h3>
<ul className="space-y-2">
{mainNavigation.slice(0, 5).map((item) => (
<li key={item.href}>
<Link href={item.href} className="text-secondary-300 hover:text-white transition-colors">
{item.label}
</Link>
</li>
))}
</ul>
</div>
{/* Contact Info */}
<div>
<h3 className="text-lg font-bold mb-4 text-primary-400"></h3>
<ul className="space-y-3">
<li className="flex items-start gap-3">
<svg className="w-5 h-5 text-primary-500 mt-0.5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" />
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 11a3 3 0 11-6 0 3 3 0 016 0z" />
</svg>
<span className="text-secondary-300 text-sm">{siteConfig.address}</span>
</li>
<li className="flex items-center gap-3">
<svg className="w-5 h-5 text-primary-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" />
</svg>
<a href={`tel:${siteConfig.phone}`} className="text-secondary-300 hover:text-white text-sm">
{siteConfig.phone}
</a>
</li>
<li className="flex items-center gap-3">
<svg className="w-5 h-5 text-primary-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
</svg>
<a href={`mailto:${siteConfig.email}`} className="text-secondary-300 hover:text-white text-sm">
{siteConfig.email}
</a>
</li>
</ul>
</div>
{/* Business Hours */}
<div>
<h3 className="text-lg font-bold mb-4 text-primary-400"></h3>
<ul className="space-y-2">
{workHours.map((item) => (
<li key={item.day} className="flex justify-between text-sm">
<span className="text-secondary-300">{item.day}</span>
<span className={item.isClosed ? 'text-red-400' : 'text-white'}>
{item.hours}
</span>
</li>
))}
</ul>
</div>
</div>
</div>
{/* Bottom Bar */}
<div className="border-t border-secondary-800">
<div className="container mx-auto px-4 py-4">
<p className="text-center text-secondary-400 text-sm">
© {new Date().getFullYear()} {siteConfig.name}. .
</p>
</div>
</div>
</footer>
);
}

View File

@@ -0,0 +1,157 @@
'use client';
import { useState } from 'react';
import Link from 'next/link';
import Image from 'next/image';
import { siteConfig, mainNavigation } from '@/data/site-config';
import { cn } from '@/lib/utils';
export default function Header() {
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const [activeDropdown, setActiveDropdown] = useState<string | null>(null);
return (
<header className="fixed top-0 left-0 right-0 z-50 bg-secondary-900 shadow-industrial">
{/* Top Bar */}
<div className="bg-primary-600 py-2">
<div className="container mx-auto px-4 flex justify-between items-center text-sm">
<div className="flex items-center gap-6 text-white">
<a href={`tel:${siteConfig.phone}`} className="flex items-center gap-2 hover:text-primary-100">
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" />
</svg>
{siteConfig.phone}
</a>
<a href={`mailto:${siteConfig.email}`} className="flex items-center gap-2 hover:text-primary-100">
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
</svg>
{siteConfig.email}
</a>
</div>
<div className="hidden md:flex items-center gap-4">
<a href={`https://line.me/ti/p/${siteConfig.lineId}`} className="flex items-center gap-1 text-white hover:text-primary-100">
<svg className="w-4 h-4" viewBox="0 0 24 24" fill="currentColor">
<path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/>
</svg>
LINE
</a>
</div>
</div>
</div>
{/* Main Navigation */}
<nav className="container mx-auto px-4">
<div className="flex items-center justify-between h-16">
{/* Logo */}
<Link href="/" className="flex items-center gap-3">
<div className="w-10 h-10 bg-primary-600 rounded-lg flex items-center justify-center">
<span className="text-white font-bold text-xl">D</span>
</div>
<div>
<span className="text-white font-bold text-lg">{siteConfig.name}</span>
<span className="block text-primary-400 text-xs">{siteConfig.nameTh}</span>
</div>
</Link>
{/* Desktop Navigation */}
<div className="hidden lg:flex items-center gap-1">
{mainNavigation.map((item) => (
<div
key={item.href}
className="relative"
onMouseEnter={() => item.children && setActiveDropdown(item.href)}
onMouseLeave={() => setActiveDropdown(null)}
>
<Link
href={item.href}
className={cn(
"px-4 py-2 text-white font-medium hover:text-primary-400 transition-colors flex items-center gap-1",
item.children && "pr-2"
)}
>
{item.label}
{item.children && (
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
</svg>
)}
</Link>
{/* Dropdown */}
{item.children && activeDropdown === item.href && (
<div className="absolute top-full left-0 w-64 bg-white shadow-industrial rounded-lg py-2 mt-1">
{item.children.map((child) => (
<div key={child.href} className="relative group">
<Link
href={child.href}
className="block px-4 py-2 text-secondary-700 hover:bg-primary-50 hover:text-primary-700 transition-colors"
>
{child.label}
</Link>
{child.children && (
<div className="hidden group-hover:block absolute left-full top-0 w-56 bg-white shadow-industrial rounded-lg py-2">
{child.children.map((subChild) => (
<Link
key={subChild.href}
href={subChild.href}
className="block px-4 py-2 text-secondary-700 hover:bg-primary-50 hover:text-primary-700"
>
{subChild.label}
</Link>
))}
</div>
)}
</div>
))}
</div>
)}
</div>
))}
<Link href="/contact-us" className="btn-primary ml-4">
</Link>
</div>
{/* Mobile Menu Button */}
<button
className="lg:hidden text-white p-2"
onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
>
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
{mobileMenuOpen ? (
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
) : (
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" />
)}
</svg>
</button>
</div>
{/* Mobile Menu */}
{mobileMenuOpen && (
<div className="lg:hidden py-4 border-t border-secondary-700">
{mainNavigation.map((item) => (
<div key={item.href}>
<Link
href={item.href}
className="block px-4 py-2 text-white hover:text-primary-400"
onClick={() => setMobileMenuOpen(false)}
>
{item.label}
</Link>
</div>
))}
<Link
href="/contact-us"
className="block mx-4 mt-4 btn-primary text-center"
onClick={() => setMobileMenuOpen(false)}
>
</Link>
</div>
)}
</nav>
</header>
);
}

View File

@@ -0,0 +1,104 @@
---
id: hdpe-pipe-advantages
title: "ข้อดีของท่อ HDPE ในงานระบบน้ำ ทำไมถึงเป็นตัวเลือกยอดนิยม"
excerpt: "ท่อ HDPE (High Density Polyethylene) เป็นท่อที่ได้รับความนิยมสูงในงานระบบน้ำ เนื่องจากความทนทานและความยืดหยุ่นที่เหนือกว่าท่อชนิดอื่น"
date: "2024-01-10"
author: "Deal Plus Tech"
categories: ["ท่อ HDPE", "ความรู้"]
featuredImage: "/images/2021/03/hdpe-pipe_000C.jpg"
---
## ท่อ HDPE คืออะไร?
ท่อ HDPE (High Density Polyethylene) หรือท่อเอชดีพีอี เป็นท่อที่ผลิตจากโพลิเอทิลีนความหนาแน่นสูง เป็นวัสดุพลาสติกที่มีความแข็งแรงและทนทานเป็นอย่างมาก
## ข้อดีของท่อ HDPE
### 1. ความยืดหยุ่นสูง
ท่อ HDPE สามารถโค้งงอได้ถึง 45 องศา ทำให้เหมาะสำหรับพื้นที่ติดตั้งจำกัด และสามารถรองรับการเคลื่อนไหวของดินได้ดี
### 2. ทนทานต่อสารเคมี
ท่อ HDPE ทนทานต่อการกัดกร่อนของสารเคมี กรด และด่าง ทำให้เหมาะสำหรับงานอุตสาหกรรม
### 3. อายุการใช้งานยาวนาน
ท่อ HDPE มีอายุการใช้งานมากกว่า 50 ปี เมื่อติดตั้งและใช้งานอย่างถูกต้อง
### 4. น้ำหนักเบา
ท่อ HDPE มีน้ำหนักเบากว่าท่อโลหะ ทำให้ง่ายต่อการขนส่งและติดตั้ง
### 5. การเชื่อมต่อที่แน่นหนา
การเชื่อมท่อ HDPE ด้วยวิธี Butt Fusion ทำให้ท่อเชื่อมต่อกันเป็นเนื้อเดียว ไม่มีรอยต่อ ป้องกันการรั่วซึม
### 6. ปลอดภัยต่อสุขภาพ
ท่อ HDPE ไม่เป็นสนิม ไม่ปล่อยสารพิษ ปลอดภัยสำหรับน้ำดื่ม
## การใช้งานท่อ HDPE
### งานประปา
- ท่อส่งน้ำประปา
- ระบบประปาในบ้านเรือน
- ระบบประปาในอาคาร
### งานเกษตร
- ระบบน้ำหยด
- ระบบสปริงเกลอร์
- ระบบน้ำเพื่อการเกษตร
### งานอุตสาหกรรม
- ท่อส่งสารเคมี
- ระบบบำบัดน้ำเสีย
- งานโรงงานอุตสาหกรรม
### งานโครงสร้างพื้นฐาน
- งานท่อใต้ดิน
- ท่อร้อยสายไฟ
- งานสาธารณูปโภค
## ขนาดท่อ HDPE ที่นิยมใช้
| ขนาด (มม.) | การใช้งาน |
|------------|-----------|
| 16-32 | งานประปาภายในบ้าน |
| 40-63 | งานประปาอาคารขนาดเล็ก |
| 75-110 | งานประปาอาคารขนาดใหญ่ |
| 125-315 | งานท่อส่งน้ำหลัก |
| 355-1200 | งานโครงสร้างพื้นฐาน |
## เกรดของท่อ HDPE
### PE80
- เหมาะสำหรับงานทั่วไป
- ทนแรงดันสูงสุด 8 MPa
### PE100
- เหมาะสำหรับงานที่ต้องการความแข็งแรงสูง
- ทนแรงดันสูงสุด 10 MPa
- เป็นเกรดที่นิยมใช้ในปัจจุบัน
## การติดตั้งท่อ HDPE
### วิธี Butt Fusion
1. ตัดท่อให้ตรง
2. ทำความสะอาดผิวท่อ
3. ใช้เครื่องเชื่อมท่อ HDPE
4. ให้ความร้อนจนผิวท่อละลาย
5. กดท่อเข้าด้วยกัน
6. รอให้เย็นตัวลง
### วิธี Electrofusion
1. ใช้ข้อต่อแบบ Electrofusion
2. เสียบปลั๊กไฟเข้ากับข้อต่อ
3. รอจนกระบวนการเชื่อมเสร็จสิ้น
## สรุป
ท่อ HDPE เป็นตัวเลือกที่ยอดเยี่ยมสำหรับงานระบบน้ำ เนื่องจากมีความทนทาน ความยืดหยุ่น และอายุการใช้งานที่ยาวนาน ไม่ว่าจะเป็นงานประปา งานเกษตร หรืองานอุตสาหกรรม ท่อ HDPE สามารถตอบโจทย์ได้ทุกการใช้งาน
---
**สนใจสินค้าท่อ HDPE?**
ติดต่อเราได้ที่:
- โทร: 090-555-1415
- LINE: jppselection
[ดูสินค้าท่อ HDPE ทั้งหมด](/ท่อhdpe)

View File

@@ -0,0 +1,80 @@
---
id: ppr-pipe-guide
title: "ท่อ PPR คืออะไร? คู่มือฉบับสมบูรณ์สำหรับการเลือกใช้งาน"
excerpt: "ท่อ PPR (Polypropylene Random Copolymer) เป็นท่อพลาสติกที่ได้รับความนิยมสูงในการใช้งานระบบประปา บทความนี้จะอธิบายทุกสิ่งที่คุณต้องรู้เกี่ยวกับท่อ PPR"
date: "2024-01-15"
author: "Deal Plus Tech"
categories: ["ท่อ PPR", "ความรู้", "คู่มือ"]
featuredImage: "/images/2021/03/ppr-pipe_000C.jpg"
---
## ท่อ PPR คืออะไร?
ท่อ PPR (Polypropylene Random Copolymer) หรือท่อพีพีอาร์ เป็นท่อพลาสติกที่ผลิตจากเม็ดพลาสติก PP-R 80 (Polypropylene Random Copolymer 80) ซึ่งเป็นวัสดุพลาสติกคุณภาพสูงที่มีความแข็งแรงและทนทานเป็นอย่างดี
## ข้อดีของท่อ PPR
### 1. ทนแรงดันและอุณหภูมิสูง
ท่อ PPR สามารถทนแรงดันได้สูงถึง 20 บาร์ และทนต่ออุณหภูมิได้สูงถึง 95°C ทำให้เหมาะสำหรับใช้งานทั้งระบบน้ำเย็นและน้ำร้อน
### 2. สะอาดและปลอดภัย
ท่อ PPR ไม่เป็นสนิม ปราศจากโลหะหนักและสิ่งปนเปื้อน ทำให้น้ำที่ไหลผ่านสะอาดและปลอดภัยต่อการบริโภค
### 3. อายุการใช้งานยาวนาน
ด้วยคุณสมบัติที่ทนทาน ท่อ PPR มีอายุการใช้งานยาวนานกว่า 50 ปี
### 4. ติดตั้งง่าย
การเชื่อมต่อท่อ PPR ใช้วิธีเชื่อมด้วยความร้อน ทำให้ท่อและข้อต่อเป็นเนื้อเดียวกัน ไม่มีปัญหารั่วซึม
### 5. ประหยัดพลังงาน
ท่อ PPR เป็นฉนวนกันความร้อนที่ดี ช่วยรักษาอุณหภูมิของน้ำได้ดีกว่าท่อโลหะ
## การเลือกท่อ PPR ที่เหมาะสม
### ขนาดท่อ
เลือกขนาดท่อให้เหมาะสมกับปริมาณน้ำที่ต้องการใช้งาน:
- ท่อขนาด 20-25 มม. เหมาะสำหรับบ้านเรือนทั่วไป
- ท่อขนาด 32-63 มม. เหมาะสำหรับอาคารขนาดใหญ่
### เกรดของท่อ
- **PN10** - สำหรับน้ำเย็น ทนแรงดัน 10 บาร์
- **PN16** - สำหรับน้ำอุ่น ทนแรงดัน 16 บาร์
- **PN20** - สำหรับน้ำร้อน ทนแรงดัน 20 บาร์
## การติดตั้งท่อ PPR
### ขั้นตอนการเชื่อมท่อ
1. ตัดท่อให้ตรงและเรียบ
2. ทำความสะอาดผิวท่อและข้อต่อ
3. ใช้เครื่องเชื่อมท่ออุณหภูมิ 260°C
4. สอดท่อและข้อต่อเข้าด้วยกัน
5. รอให้เย็นตัวลงประมาณ 2-3 นาที
### ข้อควรระวัง
- หลีกเลี่ยงการติดตั้งในพื้นที่ที่มีแสงแดดโดยตรง
- ควรทิ้งระยะห่างสำหรับการขยายตัวของท่อ
- ตรวจสอบความร้อนของเครื่องเชื่อมก่อนใช้งาน
## ท่อ PPR ตราช้าง
ท่อ PPR ตราช้าง เป็นท่อ PPR คุณภาพสูงที่ผลิตจากเม็ดพลาสติก PP-R 80 วัตถุดิบคุณภาพสูงมาตรฐานยุโรปจาก lyondellbasell
**คุณสมบัติเด่น:**
- ทนแรงดันได้สูงสุด 20 บาร์
- ทนต่ออุณหภูมิได้สูงถึง 95°C
- ผลิตตามมาตรฐาน DIN8077 และ DIN8078 ของประเทศเยอรมัน
- รับประกันคุณภาพ
## สรุป
ท่อ PPR เป็นตัวเลือกที่ดีสำหรับระบบประปาในปัจจุบัน เนื่องจากมีความทนทานสูง ติดตั้งง่าย และมีอายุการใช้งานยาวนาน หากคุณกำลังมองหาท่อสำหรับงานระบบน้ำ ท่อ PPR เป็นตัวเลือกที่คุ้มค่าและเหมาะสม
---
**สนใจสินค้าท่อ PPR?**
ติดต่อเราได้ที่:
- โทร: 090-555-1415
- LINE: jppselection
- อีเมล: dealplustech@gmail.com
[ดูสินค้าท่อ PPR ทั้งหมด](/ท่อพีพีอาร์ตราช้าง)

View File

@@ -0,0 +1,126 @@
---
id: water-pump-maintenance
title: "การบำรุงรักษาปั๊มน้ำให้มีอายุการใช้งานยาวนาน"
excerpt: "ปั๊มน้ำเป็นอุปกรณ์สำคัญในระบบน้ำทุกบ้าน การบำรุงรักษาที่ถูกต้องจะช่วยยืดอายุการใช้งานและประหยัดค่าไฟฟ้า"
date: "2024-01-05"
author: "Deal Plus Tech"
categories: ["ปั๊มน้ำ", "บำรุงรักษา", "เคล็ดลับ"]
featuredImage: "/images/2021/02/Water-Pump1.jpg"
---
## ความสำคัญของการบำรุงรักษาปั๊มน้ำ
ปั๊มน้ำเป็นหัวใจของระบบน้ำในบ้าน การบำรุงรักษาอย่างสม่ำเสมอจะช่วย:
- ยืดอายุการใช้งานของปั๊มน้ำ
- ลดปัญหาการเสีย
- ประหยัดค่าไฟฟ้า
- ป้องกันอุบัติเหตุจากการรั่วซึม
## การบำรุงรักษาปั๊มน้ำแบบทำเอง
### 1. ตรวจสอบสายไฟและสวิตช์
- ตรวจสอบสายไฟว่ามีรอยชำรุดหรือไม่
- ตรวจสอบสวิตช์ว่าทำงานปกติหรือไม่
- หากพบความผิดปกติควรเรียกช่าง
### 2. ทำความสะอาดตัวกรอง
- ปิดวาล์วน้ำเข้าก่อนทำความสะอาด
- ถอดตัวกรองออกมาล้าง
- ตรวจสอบว่ามีสิ่งปนเปื้อนหรือไม่
- ติดตั้งกลับเข้าที่เดิม
### 3. ตรวจสอบแรงดันน้ำ
- สังเกตแรงดันน้ำว่าลดลงหรือไม่
- ตรวจสอบว่ามีเสียงผิดปกติหรือไม่
- หากแรงดันลดลงอาจมีการรั่วซึม
### 4. ตรวจสอบถังแรงดัน (Pressure Tank)
- ตรวจสอบว่าถังมีอากาศเพียงพอหรือไม่
- หากปั๊มเปิด-ปิดบ่อยผิดปกติ อาจต้องเติมอากาศ
- ควรตรวจสอบทุก 6 เดือน
## ปัญหาที่พบบ่อยและวิธีแก้ไข
### ปั๊มไม่ทำงาน
**สาเหตุ:**
- ไฟดับหรือสายไฟขาด
- สวิตช์เสีย
- มอเตอร์เสีย
**วิธีแก้:**
- ตรวจสอบไฟและสายไฟ
- เปลี่ยนสวิตช์
- เรียกช่างซ่อมมอเตอร์
### แรงดันน้ำต่ำ
**สาเหตุ:**
- ตัวกรองอุดตัน
- ท่อรั่ว
- ใบพัดสึกหรอ
**วิธีแก้:**
- ทำความสะอาดตัวกรอง
- ตรวจสอบและซ่อมท่อ
- เปลี่ยนใบพัด
### ปั๊มเปิด-ปิดบ่อย
**สาเหตุ:**
- ถังแรงดันอากาศรั่ว
- แผ่นไดอะแฟรมแตก
- วาล์วตรวจสอบแรงดันเสีย
**วิธีแก้:**
- เติมอากาศในถัง
- เปลี่ยนแผ่นไดอะแฟรม
- เปลี่ยนวาล์ว
### ปั๊มมีเสียงดังผิดปกติ
**สาเหตุ:**
- ลูกปืนเสีย
- ใบพัดชำรุด
- การติดตั้งไม่แน่นหนา
**วิธีแก้:**
- เปลี่ยนลูกปืน
- เปลี่ยนใบพัด
- ตรวจสอบการยึดแน่น
## ตารางการบำรุงรักษา
| รายการ | ความถี่ | หมายเหตุ |
|--------|---------|----------|
| ตรวจสอบสายไฟ | ทุกเดือน | มองหารอยชำรุด |
| ทำความสะอาดตัวกรอง | ทุก 3 เดือน | หรือเมื่อแรงดันลด |
| ตรวจสอบถังแรงดัน | ทุก 6 เดือน | เติมอากาศหากจำเป็น |
| ตรวจสอบสวิตช์ | ทุกปี | เปลี่ยนหากเสีย |
| ตรวจสอบใบพัด | ทุก 2 ปี | โดยช่างผู้เชี่ยวชาญ |
## เคล็ดลับการใช้งานปั๊มน้ำ
### ประหยัดไฟฟ้า
- เลือกขนาดปั๊มที่เหมาะสมกับการใช้งาน
- ติดตั้งถังแรงดันขนาดเหมาะสม
- หลีกเลี่ยงการเปิด-ปิดปั๊มบ่อย
### ป้องกันปัญหา
- อย่าให้ปั๊มแห้ง (ทำงานโดยไม่มีน้ำ)
- ตรวจสอบรอยรั่วอย่างสม่ำเสมอ
- ใช้ตัวกรองเพื่อป้องกันสิ่งสกปรก
### เมื่อต้องเปลี่ยนปั๊ม
- เลือกปั๊มที่มีคุณภาพ
- พิจารณาขนาดและกำลังที่เหมาะสม
- ติดตั้งโดยช่างผู้เชี่ยวชาญ
## สรุป
การบำรุงรักษาปั๊มน้ำอย่างสม่ำเสมอจะช่วยยืดอายุการใช้งาน ลดปัญหาการเสีย และประหยัดค่าใช้จ่ายในระยะยาว ควรตรวจสอบและบำรุงรักษาตามตารางที่กำหนด และหากพบปัญหาที่ไม่สามารถแก้ไขได้เอง ควรติดต่อช่างผู้เชี่ยวชาญ
---
**ต้องการซื้อปั๊มน้ำหรืออุปกรณ์เสริม?**
ติดต่อเราได้ที่:
- โทร: 090-555-1415
- LINE: jppselection
[ดูสินค้าปั๊มน้ำทั้งหมด](/ปั๊มน้ำ-pump)

690
src/data/site-config.ts Normal file
View File

@@ -0,0 +1,690 @@
import { SiteConfig, NavItem, ProductCategory, WorkHours } from '@/types';
export const siteConfig: SiteConfig = {
name: 'Deal Plus Tech',
nameTh: 'ดีลพลัสเทค',
url: 'https://dealplustech.co.th',
description: 'ดีลพลัสเทค - ผู้เชี่ยวชาญด้านวัสดุท่อและอุปกรณ์ระบบท่อ ท่อพีพีอาร์ ท่อ HDPE ท่อ PVC วาล์ว และอุปกรณ์ต่อท่อครบวงจร',
phone: '02-xxx-xxxx',
email: 'info@dealplustech.co.th',
lineId: '@dealplustech',
facebookUrl: 'https://facebook.com/dealplustech',
address: 'กรุงเทพมหานคร ประเทศไทย',
};
export const workHours: WorkHours[] = [
{ day: 'จันทร์ - ศุกร์', hours: '08:30 - 17:30' },
{ day: 'เสาร์', hours: '08:30 - 12:00' },
{ day: 'อาทิตย์', hours: 'ปิดทำการ', isClosed: true },
];
// Product Categories with SEO content
export const productCategories: ProductCategory[] = [
// ท่อพีพีอาร์ (PPR Pipe)
{
id: 'ppr-scg',
name: 'ท่อพีพีอาร์ตราช้าง',
nameEn: 'SCG PPR Pipe',
slug: 'ท่อพีพีอาร์',
href: '/ท่อพีพีอาร์/ตราช้าง-scg',
image: '/images/2021/03/ppr-pipe_000C.jpg',
description: 'ท่อพีพีอาร์ตราช้าง (SCG) คุณภาพระดับสากล ทนอุณหภูมิสูง 95°C ทนความดัน 20 บาร์ อายุการใช้งาน 50 ปี',
shortDescription: 'ท่อพีพีอาร์ตราช้าง SCG มาตรฐาน DIN 8077/8078',
keywords: ['ท่อ PPR', 'ท่อพีพีอาร์', 'ท่อน้ำ PPR', 'ท่อประปา PPR', 'ราคาท่อ PPR', 'ท่อตราช้าง', 'SCG PPR', 'ท่อ PPR SCG', 'ท่อน้ำดื่ม PPR', 'ท่อประปาคุณภาพ'],
seoContent: `<h2>ท่อพีพีอาร์ตราช้าง (SCG) - มาตรฐานคุณภาพระดับสากล</h2>
<p>ท่อพีพีอาร์ตราช้าง (PPR Elephant) จาก SCG เป็นผลิตภัณฑ์ท่อน้ำคุณภาพสูงที่ได้รับการยอมรับในตลาดประเทศไทยมายาวนาน ผลิตจากวัตถุดิบ Polypropylene Random Copolymer (PPR) เกรดพรีเมียมจาก LyondellBasell ซึ่งเป็นผู้ผลิตวัตถุดิบชั้นนำระดับโลก มั่นใจได้ในความแข็งแรง ทนทาน และปลอดภัยสำหรับการใช้งานด้านประปาและการจ่ายน้ำดื่ม</p>
<h3>มาตรฐานและคุณสมบัติทางเทคนิค</h3>
<p>ท่อพีพีอาร์ SCG ผลิตตามมาตรฐาน <strong>DIN 8077/8078</strong> ซึ่งเป็นมาตรฐานคุณภาพระดับสากล เหมาะสำหรับระบบท่อน้ำร้อนและน้ำเย็นในอาคารที่อยู่อาศัย อาคารพาณิชย์ โรงงานอุตสาหกรรม และโครงการขนาดใหญ่</p>
<ul>
<li><strong>ทนอุณหภูมิสูงสุด 95 องศาเซลเซียส</strong> - เหมาะสำหรับระบบน้ำร้อนในครัวเรือนและอุตสาหกรรม</li>
<li><strong>ทนความดันได้ถึง 20 บาร์</strong> - รองรับแรงดันน้ำได้อย่างมีประสิทธิภาพ</li>
<li><strong>อายุการใช้งานยาวนานถึง 50 ปี</strong> - คุ้มค่าการลงทุนระยะยาว</li>
<li><strong>ผิวเรียบเนียน</strong> - ไม่เกิดตะกรันและเพิ่มอัตราการไหลของน้ำ</li>
<li><strong>ปลอดภัยสำหรับน้ำดื่ม</strong> - ไม่มีสารพิษและไม่เกิดการเปลี่ยนแปลงของรสชาติน้ำ</li>
</ul>`,
},
{
id: 'poloplast',
name: 'ท่อ POLOPLAST',
nameEn: 'POLOPLAST PP-R Pipe',
slug: 'ท่อพีพีอาร์',
href: '/ท่อพีพีอาร์/poloplast',
image: '/images/2021/03/poloplast_000C.jpg',
description: 'ท่อพีพีอาร์ POLOPLAST จากเยอรมนี มาตรฐาน DVGW และ SKZ ทนอุณหภูมิ 95°C รับประกัน 10 ปี',
shortDescription: 'ท่อ PP-R/PP-RCT POLOPLAST คุณภาพเยอรมัน',
keywords: ['ท่อ PPR', 'ท่อพีพีอาร์', 'ท่อน้ำ PPR', 'ท่อประปา PPR', 'ราคาท่อ PPR', 'POLOPLAST', 'ท่อเยอรมัน', 'PP-RCT', 'ท่อน้ำร้อน PPR', 'ท่อพีพีอาร์เกรดสูง'],
seoContent: `<h2>ท่อ PP-R / PP-RCT POLOPLAST - คุณภาพเยอรมันระดับพรีเมียม</h2>
<p>POLOPLAST เป็นแบรนด์ท่อพีพีอาร์ชั้นนำจากประเทศเยอรมันที่ได้รับการยอมรับในระดับสากลด้วยคุณภาพระดับพรีเมียมและมาตรฐานการผลิตที่เข้มงวด ผลิตภัณฑ์ท่อ PP-R และ PP-RCT ของ POLOPLAST เป็นตัวเลือกที่ดีที่สุดสำหรับโครงการที่ต้องการความแข็งแรงทนทานและอายุการใช้งานยาวนาน</p>
<h3>มาตรฐานและการรับรองระดับสากล</h3>
<p>ท่อพีพีอาร์ POLOPLAST ผลิตตามมาตรฐาน <strong>DIN 8077/8078</strong> พร้อมการรับรองคุณภาพจากหน่วยงานชั้นนำระดับโลก</p>
<ul>
<li><strong>DVGW Certified</strong> - รับรองจากสมาคมการประปาและก๊าซเยอรมัน</li>
<li><strong>SKZ Certified</strong> - รับรองจากสถาบันพลาสติกเยอรมัน</li>
<li><strong>ISO 9001:2015</strong> - ระบบบริหารคุณภาพมาตรฐานสากล</li>
<li><strong>WRAS Approved</strong> - รับรองความปลอดภัยสำหรับน้ำดื่มใน UK</li>
<li><strong>รับประกัน 10 ปี</strong> - ความมั่นใจในคุณภาพผลิตภัณฑ์</li>
</ul>`,
},
{
id: 'ppr-welder',
name: 'เครื่องเชื่อมท่อ PPR',
nameEn: 'PPR Welding Machine',
slug: 'อุปกรณ์ติดตั้ง',
href: '/อุปกรณ์ติดตั้ง/เครื่องเชื่อมท่อ-ppr',
image: '/images/2021/03/hdpe-welding_000C-1.jpg',
description: 'เครื่องเชื่อมท่อพีพีอาร์ 1500-2000W รองรับท่อ 20-110mm พร้อมจอดิจิทัลควบคุณอุณหภูมิ',
shortDescription: 'เครื่องเชื่อมท่อ PPR/HDPE/PB มืออาชีพ',
keywords: ['เครื่องเชื่อมท่อ PPR', 'เครื่องเชื่อมพีพีอาร์', 'เครื่องเชื่อมท่อน้ำ', 'อุปกรณ์ติดตั้งท่อ PPR', 'PPR welding machine', 'เครื่องเชื่อมท่อ HDPE', 'เครื่องเชื่อมท่อ PB', 'อุปกรณ์เชื่อมท่อความร้อน'],
seoContent: `<h2>เครื่องเชื่อมท่อพีพีอาร์ (PPR Welding Machine) - เครื่องมือมืออาชีพสำหรับติดตั้งท่อน้ำ</h2>
<p>เครื่องเชื่อมท่อพีพีอาร์ (PPR Welding Machine) เป็นอุปกรณ์สำคัญสำหรับการติดตั้งระบบท่อน้ำด้วยวิธี Heat Fusion หรือการเชื่อมด้วยความร้อน ซึ่งเป็นวิธีการเชื่อมต่อท่อพีพีอาร์ที่ได้รับการยอมรับว่าแน่นหนึ่ง100% และไม่รั่วซึมตลอดอายุการใช้งาน</p>
<h3>คุณสมบัติและข้อมูลจำเพาะ</h3>
<ul>
<li><strong>กำลังไฟ 1500-2000 วัตต์</strong> - ทำความร้อนได้รวดเร็วและสม่ำเสมอ</li>
<li><strong>ช่วงอุณหภูมิการทำงาน 180-280 องศาเซลเซียส</strong> - เหมาะสำหรับท่อ PPR, HDPE และ PB</li>
<li><strong>รองรับขนาดท่อ 20-110 มม.</strong> - ครอบคลุมทุกขนาดท่อมาตรฐาน</li>
<li><strong>จอแสดงผลดิจิทัล</strong> - ควบคุมอุณหภูมิได้อย่างแม่นยำ</li>
<li><strong>ระบบปิดอัตโนมัติ</strong> - ปลอดภัยและประหยัดพลังงาน</li>
</ul>`,
},
// ท่อ HDPE
{
id: 'hdpe',
name: 'ท่อ HDPE',
nameEn: 'HDPE Pipe',
slug: 'ท่อ-hdpe',
href: '/ท่อ-hdpe',
image: '/images/2021/03/hdpe-pipe_000C.jpg',
description: 'ท่อ HDPE PE80/PE100 ทนแรงดัน PN25 อายุการใช้งาน 50 ปี มอก. สำหรับประปาและชลประทาน',
shortDescription: 'ท่อเอชดีพีอี PE80/PE100 มาตรฐาน มอก.',
keywords: ['ท่อ HDPE', 'ท่อเอชดีพีอี', 'ท่อ PE', 'ท่อน้ำ HDPE', 'PE80', 'PE100', 'PN25', 'ท่อ HDPE 50 ปี', 'ท่อ HDPE มอก.', 'ท่อ PE สีดำ'],
seoContent: `<h2>ท่อเอชดีพีอี (HDPE Pipe) - ท่อพลาสติกคุณภาพสูง อายุการใช้งาน 50 ปี</h2>
<p>ท่อเอชดีพีอี (HDPE ย่อมาจาก High Density Polyethylene) หรือ ท่อ PE เป็นท่อน้ำพลาสติกคุณภาพสูงที่ได้รับความนิยมอย่างแพร่หลายในงานระบบประปา ระบบชลประทาน และงานอุตสาหกรรม ด้วยคุณสมบัติเด่นในเรื่องความแข็งแรง ความยืดหยุ่น และอายุการใช้งานที่ยาวนานถึง 50 ปี</p>
<h3>คุณสมบัติเด่นของท่อเอชดีพีอี</h3>
<ul>
<li><strong>ความแข็งแรงสูง:</strong> ท่อ HDPE ผลิตจากเม็ดพลาสติกโพลีเอทิลีนความหนาแน่นสูง มีความต้านทานแรงดึงและแรงกดดันสูง</li>
<li><strong>ความยืดหยุ่นสูง:</strong> สามารถดัดโค้งได้ง่ายโดยไม่แตกร้าว ลดการใช้ข้อต่อและความเสี่ยงต่อการรั่วซึม</li>
<li><strong>ทนต่อสารเคมี:</strong> ทนทานต่อการกัดกร่อนจากสารเคมีหลายชนิด</li>
<li><strong>อายุการใช้งานยาวนาน:</strong> สามารถใช้งานได้ถึง 50 ปี</li>
</ul>`,
},
// ท่อ uPVC
{
id: 'upvc',
name: 'ท่อ uPVC ทน UV',
nameEn: 'UV Resistant uPVC Pipe',
slug: 'ท่อ-upvc',
href: '/ท่อ-upvc',
image: '/images/2021/03/upvc-pipe_000C.jpg',
description: 'ท่อ uPVC ทน UV ด้วยเทคโนโลยี Multi-Chamber ลดเสียงรบกวน ทนอุณหภูมิ 82°C มอก.',
shortDescription: 'ท่อ uPVC ทน UV Multi-Chamber มาตรฐาน มอก.',
keywords: ['ท่อ uPVC', 'ท่อ uPVC ทน UV', 'UV Stabilizer', 'Titanium Dioxide', 'Multi-chamber', 'ท่อ uPVC 82 องศา', 'ท่อ uPVC มอก.', 'ท่อ uPVC สีเขียว'],
seoContent: `<h2>ท่อ uPVC ทนทานต่อทุกสภาวะอากาศ - เทคโนโลยี Multi-Chamber ลดเสียงรบกวน</h2>
<p>ท่อ uPVC (Unplasticized Polyvinyl Chloride) ทนทานต่อทุกสภาวะอากาศ เป็นนวัตกรรมท่อน้ำพลาสติกที่ออกแบบมาเพื่อตอบสนองความต้องการของสภาพอากาศเขตร้อนชื้นของประเทศไทย ด้วยเทคโนโลยี <strong>UV Stabilizer</strong> และ <strong>Titanium Dioxide</strong> ชั้นนำ</p>
<h3>เทคโนโลยีเด่นของท่อ uPVC</h3>
<ul>
<li><strong>UV Stabilizer (ตัวป้องกันรังสี UV):</strong> สารเติมแต่งพิเศษที่ช่วยป้องกันการเสื่อมสภาพของโครงสร้างโมเลกุล</li>
<li><strong>Titanium Dioxide (ไททาเนียมไดออกไซด์):</strong> สารประกอบที่มีคุณสมบัติสะท้อนรังสี UV</li>
<li><strong>โครงสร้าง Multi-Chamber:</strong> การออกแบบผนังท่อแบบหลายชั้นช่วยเพิ่มความแข็งแรงและลดเสียงรบกวน</li>
<li><strong>ทนความร้อนสูง:</strong> สามารถทนอุณหภูมิได้ถึง <strong>82°C</strong></li>
</ul>`,
},
// ท่อไซเลอร์
{
id: 'syler',
name: 'ท่อไซเลอร์',
nameEn: 'Syler Pipe',
slug: 'ท่อไซเลอร์',
href: '/ท่อไซเลอร์',
image: '/images/2021/03/syler_000C.jpg',
description: 'ท่อไซเลอร์ ท่อเหล็กบุ PE ทนแรงดัน 50 bar มาตรฐาน BS1387 FM APPROVED สำหรับระบบดับเพลิง',
shortDescription: 'ท่อเหล็กบุ PE BS1387 FM APPROVED',
keywords: ['ท่อไซเลอร์', 'Syler Pipe', 'ท่อเหล็กบุ PE', 'ท่อเหล็กบุพลาสติก', '50 bar', 'FM APPROVED', 'BS1387', 'ท่อไซเลอร์ มอก.'],
seoContent: `<h2>ท่อไซเลอร์ (Syler Pipe) - ท่อเหล็กบุ PE คุณภาพระดับมาตรฐานสากล</h2>
<p>ท่อไซเลอร์ (Syler Pipe) หรือ ท่อเหล็กบุ PE (Polyethylene) เป็นท่อน้ำคุณภาพสูงที่ผสมผสานความแข็งแรงของเหล็กและความทนทานของพลาสติกเข้าด้วยกัน ด้วยมาตรฐาน <strong>BS1387</strong> และการรับรอง <strong>FM APPROVED</strong></p>
<h3>โครงสร้างและคุณสมบัติเด่น</h3>
<ul>
<li><strong>โครงสร้างเหล็กบุ PE:</strong> ผนังด้านในเคลือบด้วยพลาสติกโพลีเอทิลีนคุณสูง ป้องกันการกัดกร่อนและการเกิดสนิม</li>
<li><strong>ทนแรงดันสูง:</strong> สามารถรองรับแรงดันได้ถึง <strong>50 bar</strong></li>
<li><strong>มาตรฐาน BS1387:</strong> ผลิตตามมาตรฐานอังกฤษ</li>
<li><strong>FM APPROVED:</strong> ได้รับการรับรองจาก FM Global สำหรับใช้ในระบบดับเพลิง</li>
</ul>`,
},
// ท่อ PVC
{
id: 'pvc',
name: 'ท่อพีวีซี',
nameEn: 'PVC Pipe',
slug: 'ท่อ-pvc',
href: '/ท่อ-pvc',
image: '/images/2021/03/pvc-pipe_000C.jpg',
description: 'ท่อ PVC มอก.17 สีฟ้า/สีเหลือง/สีเทา สำหรับประปา ไฟฟ้า และระบายน้ำ',
shortDescription: 'ท่อพีวีซี มอก.17 หลากหลายสี',
keywords: ['ท่อ PVC', 'ท่อพีวีซี', 'มอก.17', 'ท่อสีฟ้า', 'ท่อสีเหลือง', 'ท่อสีเทา', 'ท่อ PVC มอก.', 'ท่อพีวีซี สีฟ้า'],
seoContent: `<h2>ท่อและข้อต่อพีวีซี (PVC Pipe) - มาตรฐาน มอก.17 คุณภาพรับประกัน</h2>
<p>ท่อพีวีซี (PVC ย่อมาจาก Polyvinyl Chloride) เป็นผลิตภัณฑ์ท่อน้ำที่ได้รับความนิยมมากที่สุดในประเทศไทย ด้วยราคาที่เข้าถึงได้ คุณภาพที่ได้มาตรฐาน และความหลากหลายในการใช้งาน ท่อพีวีซีของเราผลิตตามมาตรฐาน <strong>มอก.17</strong></p>
<h3>ประเภทและสีของท่อพีวีซี</h3>
<ul>
<li><strong>ท่อสีฟ้า:</strong> ท่อพีวีซีสำหรับงานน้ำประปาภายในอาคาร</li>
<li><strong>ท่อสีเหลือง:</strong> ท่อพีวีซีสำหรับงานระบบไฟฟ้าและสื่อสาร</li>
<li><strong>ท่อสีเทา:</strong> ท่อพีวีซีสำหรับงานระบายน้ำและสุขาภิบาล</li>
</ul>`,
},
// ท่อ XYLENT
{
id: 'xylent',
name: 'ท่อ XYLENT',
nameEn: 'XYLENT Silent Pipe',
slug: 'ท่อระบายน้ำ-xylent',
href: '/ท่อระบายน้ำ-xylent',
image: '/images/2021/03/xylent_000C.jpg',
description: 'ท่อระบายน้ำ XYLENT 3 ชั้น ลดเสียง 22dB ระบบ Push Fit ติดตั้งง่าย จาก Poloplast ยุโรป',
shortDescription: 'ท่อระบายน้ำไซเลนท์ 22dB Push Fit',
keywords: ['ท่อระบายน้ำ XYLENT', 'ท่อ XYLENT', '22 dB', 'ท่อระบายน้ำ 3 ชั้น', 'ท่อไซเลนท์', 'Poloplast', 'Push Fit', 'ท่อระบายน้ำเงียบ'],
seoContent: `<h2>ท่อระบายน้ำ 3 ชั้น ไซเลนท์ (XYLENT) - ระบบ Push Fit เงียบสนิท 22 เดซิเบล</h2>
<p>ท่อระบายน้ำ 3 ชั้น ไซเลนท์ (XYLENT) เป็นนวัตกรรมท่อระบายน้ำคุณภาพสูงจาก <strong>Poloplast</strong> ผู้ผลิตชั้นนำจากยุโรป ด้วยเทคโนโลยี 3 ชั้นที่ลดเสียงรบกวนได้อย่างมีประสิทธิภาพ ท่อ XYLENT ให้ระดับเสียงเพียง <strong>22 เดซิเบล</strong></p>
<h3>เทคโนโลยี 3 ชั้น ไซเลนท์</h3>
<ul>
<li><strong>โครงสร้าง 3 ชั้น:</strong> ผนังท่อประกอบด้วย 3 ชั้น ทำงานร่วมกันในการลดเสียงและเพิ่มความแข็งแรง</li>
<li><strong>ลดเสียง 22 เดซิเบล:</strong> ระดับเสียงเพียง 22 dB เมื่อน้ำไหลผ่าน</li>
<li><strong>ระบบ Push Fit:</strong> ระบบต่อท่อแบบดันเข้าล็อก ติดตั้งง่าย รวดเร็ว</li>
</ul>`,
},
// เครื่องเชื่อม HDPE
{
id: 'hdpe-welder',
name: 'เครื่องเชื่อม HDPE',
nameEn: 'HDPE Welding Machine',
slug: 'อุปกรณ์ติดตั้ง',
href: '/อุปกรณ์ติดตั้ง/เครื่องเชื่อม-hdpe',
image: '/images/2021/03/hdpe-welding_000C-1.jpg',
description: 'เครื่องเชื่อมท่อ HDPE Butt Fusion และ Electrofusion รองรับท่อ 20-1200mm',
shortDescription: 'เครื่องเชื่อมท่อ HDPE Butt/Electro Fusion',
seoContent: `<h2>เครื่องเชื่อมท่อ HDPE คุณภาพสูง สำหรับงานติดตั้งระบบท่ออุตสาหกรรม</h2>
<p>เครื่องเชื่อมท่อ HDPE เป็นอุปกรณ์ที่จำเป็นสำหรับงานติดตั้งและซ่อมแซมระบบท่อพลาสติกชนิด HDPE (High-Density Polyethylene)</p>
<h3>เทคโนโลยีการเชื่อมท่อ HDPE ที่ทันสมัย</h3>
<ul>
<li><strong>Butt Fusion (การเชื่อมแบบบัตฟิวชัน)</strong> - วิธีการเชื่อมโดยใช้ความร้อนละลายปลายท่อทั้งสองด้านแล้วกดเข้าด้วยกัน</li>
<li><strong>Electrofusion (การเชื่อมแบบอิเล็กโทรฟิวชัน)</strong> - ใช้ขดลวดความร้อนไฟฟ้าภายในข้อต่อ ควบคุมอุณหภูมิอัตโนมัติ</li>
<li><strong>Socket Fusion</strong> - สำหรับข้อต่อแบบซ็อกเก็ต เหมาะสำหรับท่อขนาดเล็กถึงกลาง</li>
</ul>`,
},
// กรู๊ฟท่อ
{
id: 'groove-coupling',
name: 'กรู๊ฟท่อ',
nameEn: 'Groove Coupling',
slug: 'วาล์ว-valve',
href: '/วาล์ว-valve/กรู๊ฟท่อ-groove-coupling',
image: '/images/2025/01/pipe-coupling-machine_000.jpg',
description: 'กรู๊ฟท่อ (Groove Coupling) ติดตั้งง่าย ไม่ต้องเชื่อม รับแรงดัน 300-735 PSI สำหรับระบบดับเพลิง',
shortDescription: 'กรู๊ฟท่อติดตั้งง่าย ไม่ต้องเชื่อม',
seoContent: `<h2>กรู๊ฟท่อ (Groove Coupling) ระบบต่อท่อแบบรวดเร็ว ไม่ต้องเชื่อม</h2>
<p>กรู๊ฟท่อ หรือ Groove Coupling เป็นอุปกรณ์ต่อท่อที่ได้รับความนิยมอย่างมากในงานติดตั้งระบบท่อสำหรับอาคาร ระบบดับเพลิง และอุตสาหกรรมต่างๆ</p>
<h3>ข้อดีและประโยชน์ของกรู๊ฟท่อ</h3>
<ul>
<li><strong>ติดตั้งง่าย ไม่ต้องเชื่อม</strong> - ไม่ต้องใช้เครื่องเชื่อมท่อหรือเครื่องตัด</li>
<li><strong>ปลอดภัยจากอัคคีภัย</strong> - เหมาะสำหรับพื้นที่ที่มีข้อจำกัดด้านความปลอดภัย</li>
<li><strong>ติดตั้งรวดเร็ว</strong> - ใช้เวลาติดตั้งน้อยกว่าการเชื่อมถึง 5-10 เท่า</li>
<li><strong>รับแรงดันได้สูง</strong> - สามารถรับแรงดันได้ถึง 300-735 PSI</li>
</ul>`,
},
// ข้อต่อท่อ
{
id: 'pipe-coupling',
name: 'ข้อต่อท่อ',
nameEn: 'Pipe Coupling',
slug: 'วาล์ว-valve',
href: '/วาล์ว-valve/ข้อต่อท่อ-pipe-coupling',
image: '/images/2025/01/pipe-coupling-machine_000.jpg',
description: 'ข้อต่อท่อหลากหลายประเภท Full/Reducing/Slip Coupling ซ่อมท่อรั่วได้โดยไม่ต้องตัดท่อ',
shortDescription: 'ข้อต่อท่อซ่อมท่อรั่วง่าย',
seoContent: `<h2>ข้อต่อท่อ (Pipe Coupling) อุปกรณ์ซ่อมท่อรั่วและต่อท่อครบวงจร</h2>
<p>ข้อต่อท่อ หรือ Pipe Coupling เป็นอุปกรณ์ที่จำเป็นสำหรับงานติดตั้งและซ่อมแซมระบบท่อในทุกภาคส่วน</p>
<h3>ประเภทของข้อต่อท่อ</h3>
<ul>
<li><strong>ข้อต่อท่อแบบเต็ม (Full Coupling)</strong> - ใช้ต่อท่อขนาดเล็ก</li>
<li><strong>ข้อต่อท่อแบบลด (Reducing Coupling)</strong> - ใช้ต่อท่อขนาดต่างกัน</li>
<li><strong>ข้อต่อท่อแบบยืด (Slip Coupling)</strong> - สามารถปรับความยาวได้ เหมาะสำหรับซ่อมท่อ</li>
</ul>`,
},
// DUKELARRSEN
{
id: 'dukearrsen-coupling',
name: 'DUKELARRSEN Coupling',
nameEn: 'DUKELARRSEN Grooved Coupling',
slug: 'วาล์ว-valve',
href: '/วาล์ว-valve/dukelarrsen-coupling',
image: '/images/2021/03/MECH_001-1.jpg',
description: 'DUKELARRSEN Grooved Coupling มาตรฐาน FM1920/UL213 สกรูเกรด 8.8 สำหรับระบบดับเพลิง',
shortDescription: 'Groove Coupling FM1920/UL213 เกรด 8.8',
seoContent: `<h2>DUKELARRSEN Grooved Coupling มาตรฐาน FM1920 และ UL213</h2>
<p>DUKELARRSEN Grooved Coupling เป็นข้อต่อท่อระบบกรู๊ฟที่ได้รับการรับรองมาตรฐาน FM1920 และ UL213 ซึ่งเป็นมาตรฐานความปลอดภัยระดับสากลสำหรับระบบดับเพลิง</p>
<h3>คุณสมบัติเด่นของ DUKELARRSEN Grooved Coupling</h3>
<ul>
<li><strong>มาตรฐาน FM1920</strong> - ได้รับการรับรองจาก FM Global สำหรับระบบดับเพลิง</li>
<li><strong>มาตรฐาน UL213</strong> - ได้รับการรับรองจาก Underwriters Laboratories</li>
<li><strong>สกรูเกรด 8.8</strong> - สกรูคุณภาพสูง ทนแรงดึงและแรงเฉือนได้ดีเยี่ยม</li>
</ul>`,
},
// เม็กกรู๊ฟ
{
id: 'mech-grooved-coupling',
name: 'เม็กกรู๊ฟ คับปลิ้ง',
nameEn: 'MECH Grooved Coupling',
slug: 'วาล์ว-valve',
href: '/วาล์ว-valve/เม็กกรู๊ฟ-คับปลิ้ง',
image: '/images/2021/03/MECH_001-1.jpg',
description: 'เม็กกรู๊ฟ คับปลิ้ง เหล็กหล่อแข็ง Epoxy Coating รับแรงดัน 300-750 PSI มาตรฐาน FM/UL',
shortDescription: 'MECH Grooved Coupling เหล็กหล่อแข็ง',
seoContent: `<h2>เม็กกรู๊ฟ คับปลิ้ง (MECH Grooved Coupling) จากวัสดุเหล็กหล่อแข็ง</h2>
<p>เม็กกรู๊ฟ คับปลิ้ง หรือ MECH Grooved Coupling เป็นข้อต่อท่อระบบกรู๊ฟคุณภาพสูงที่ผลิตจากเหล็กหล่อแข็ง (Ductile Iron) พร้อมการเคลือบอีพ็อกซี่ (Epoxy Coating)</p>
<h3>คุณสมบัติทางเทคนิค</h3>
<ul>
<li><strong>วัสดุ: เหล็กหล่อแข็ง (Ductile Iron)</strong> - มีความแข็งแรงและความเหนียวสูงกว่าเหล็กหล่อธรรมดา</li>
<li><strong>การเคลือบ: Epoxy Coating</strong> - เคลือบผิวเพื่อป้องกันสนิมและการกัดกร่อน</li>
<li><strong>รับแรงดัน: 300-750 PSI</strong> - ขึ้นอยู่กับขนาดและรุ่น</li>
</ul>`,
},
// สปริทริงแฮงเกอร์
{
id: 'sr19',
name: 'สปริทริงแฮงเกอร์',
nameEn: 'Split Ring Hanger',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/สปริทริงแฮงเกอร์',
image: '/images/2024/02/ADJUSTABLE_SPLIT_RING_HANGER_cover_01.jpg',
description: 'สปริทริงแฮงเกอร์ เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด 1/2-8 นิ้ว สำหรับแขวนท่อน้ำ',
shortDescription: 'Split Ring Hanger ชุบซิงค์/SUS304',
keywords: ['สปริทริงแฮงเกอร์', 'Split Ring Hanger', 'ท่อน้ำ', 'แฮงเกอร์ท่อ', 'สแตนเลส SUS304', 'ชุบซิงค์กันสนิม'],
seoContent: `<h2>สปริทริงแฮงเกอร์ (Split Ring Hanger) - อุปกรณ์แขวนท่อคุณภาพสูง</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>สปริทริงแฮงเกอร์เป็นอุปกรณ์ยึดแขวนท่อที่ได้รับความนิยมอย่างแพร่หลายในงานติดตั้งระบบท่อน้ำ ท่อประปา และระบบปรับอากาศ ผลิตจากวัสดุคุณภาพสูงมีให้เลือกทั้ง<strong>เหล็กชุบซิงค์กันสนิม</strong>และ<strong>สแตนเลส SUS304</strong></p>
<h3>ขนาดและการใช้งาน</h3>
<p>สปริทริงแฮงเกอร์มีขนาดให้เลือกตั้งแต่ <strong>1/2 นิ้ว ถึง 8 นิ้ว</strong> ครอบคลุมการใช้งานกับท่อขนาดเล็กไปจนถึงท่อขนาดใหญ่</p>`,
},
// เควิสแฮงเกอร์
{
id: 'clevis',
name: 'เควิสแฮงเกอร์',
nameEn: 'Clevis Hanger',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/เควิสแฮงเกอร์',
image: '/images/2024/02/ADJUSTABLE_CLEVIS_HANGER_cover_01.jpg',
description: 'เควิสแฮงเกอร์ เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด 1/2-8 นิ้ว สำหรับแขวนท่อมาตรฐาน',
shortDescription: 'Clevis Hanger มาตรฐานอุตสาหกรรม',
keywords: ['เควิสแฮงเกอร์', 'Clevis Hanger', 'แฮงเกอร์ท่อ', 'สแตนเลส', 'ชุบซิงค์'],
seoContent: `<h2>เควิสแฮงเกอร์ (Clevis Hanger) - อุปกรณ์แขวนท่อมาตรฐานอุตสาหกรรม</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>เควิสแฮงเกอร์เป็นอุปกรณ์แขวนท่อแบบมาตรฐานที่ได้รับการยอมรับในวงการติดตั้งระบบท่อ ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong>ให้ความแข็งแรงทนทาน และมีรุ่นสแตนเลส <strong>SUS304</strong></p>
<h3>ขนาดและการใช้งาน</h3>
<p>เควิสแฮงเกอร์มีขนาดให้เลือกครอบคลุม <strong>1/2 นิ้ว ถึง 8 นิ้ว</strong> รองรับท่อน้ำ ท่อ PVC และท่อโลหะได้หลากหลาย</p>`,
},
// แคล้มฟันจระเข้
{
id: 'beamclamp',
name: 'แคล้มฟันจระเข้',
nameEn: 'Beam Clamp',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/แคล้มฟันจระเข้',
image: '/images/2024/02/BEAM_CLAMP_cover_01.jpg',
description: 'แคล้มฟันจระเข้ (Beam Clamp) เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด 1/2-6 นิ้ว ยึดคานเหล็ก',
shortDescription: 'Beam Clamp ยึดคานเหล็กไม่ต้องเจาะ',
keywords: ['แคล้มฟันจระเข้', 'Beam Clamp', 'แคล้มยึดคาน', 'สแตนเลส SUS304', 'ชุบซิงค์'],
seoContent: `<h2>แคล้มฟันจระเข้ (Beam Clamp) - อุปกรณ์ยึดติดแน่นบนโครงสร้างเหล็ก</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>แคล้มฟันจระเข้หรือบีมแคล้มเป็นอุปกรณ์ยึดท่อและอุปกรณ์กลุ่มวงจรบนโครงสร้างเหล็ก ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong>ให้ความแข็งแรงทนทาน และมีรุ่น<strong>สแตนเลส SUS304</strong></p>
<h3>จุดเด่นของผลิตภัณฑ์</h3>
<ul>
<li><strong>ติดตั้งง่าย</strong> - ไม่ต้องเจาะหรือเชื่อมโครงสร้าง</li>
<li><strong>ปรับระดับได้</strong> - สามารถปรับตำแหน่งได้ตามต้องการ</li>
<li><strong>แข็งแรงทนทาน</strong> - ยึดติดแน่นไม่หลุดง่าย</li>
</ul>`,
},
// แคล้มหยดน้ำ
{
id: 'bandhanger',
name: 'แคล้มหยดน้ำ',
nameEn: 'Band Hanger',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/แคล้มหยดน้ำ',
image: '/images/2024/02/ADJUSTABLE_BAND_HANGER_cover_01.jpg',
description: 'แคล้มหยดน้ำ (Band Hanger) เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด 1/2-8 นิ้ว ราคาประหยัด',
shortDescription: 'Band Hanger ราคาประหยัด',
keywords: ['แคล้มหยดน้ำ', 'Band Hanger', 'แฮงเกอร์ท่อ', 'สแตนเลส', 'ชุบซิงค์'],
seoContent: `<h2>แคล้มหยดน้ำ (Band Hanger) - แฮงเกอร์ท่อแบบประหยัดและใช้งานง่าย</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>แคล้มหยดน้ำหรือแบนด์แฮงเกอร์เป็นอุปกรณ์แขวนท่อแบบง่าย ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong>ให้ความแข็งแรงและทนทาน</p>
<h3>จุดเด่นของผลิตภัณฑ์</h3>
<ul>
<li><strong>ราคาประหยัด</strong> - คุ้มค่าสำหรับงานติดตั้งจำนวนมาก</li>
<li><strong>น้ำหนักเบา</strong> - ไม่เพิ่มภาระโครงสร้างมาก</li>
<li><strong>ปรับระดับได้</strong> - ปรับความสูงได้ตามต้องการ</li>
</ul>`,
},
// แคล้มเลเวล
{
id: 'levelclamp',
name: 'แคล้มเลเวล',
nameEn: 'Level Clamp',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/แคล้มเลเวล',
image: '/images/2024/02/LEVEL_CLAMP_cover_01.jpg',
description: 'แคล้มเลเวล (Level Clamp) ปรับระดับแม่นยำ เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด 1/2-8 นิ้ว',
shortDescription: 'Level Clamp ปรับระดับแม่นยำ',
keywords: ['แคล้มเลเวล', 'Level Clamp', 'แคล้มปรับระดับ', 'สแตนเลส SUS304', 'ชุบซิงค์'],
seoContent: `<h2>แคล้มเลเวล (Level Clamp) - อุปกรณ์ปรับระดับท่อแม่นยำ</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>แคล้มเลเวลเป็นอุปกรณ์แขวนท่อที่ออกแบบมาเพื่อการ<strong>ปรับระดับได้อย่างแม่นยำ</strong> ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong>คุณภาพสูง และมีรุ่น<strong>สแตนเลส SUS304</strong></p>
<h3>จุดเด่นของผลิตภัณฑ์</h3>
<ul>
<li><strong>ปรับระดับแม่นยำ</strong> - สามารถปรับระดับท่อได้ละเอียด</li>
<li><strong>ล็อคตำแหน่งได้</strong> - ยึดตำแหน่งได้แน่นหนาไม่เคลื่อนที่</li>
</ul>`,
},
// เจโบลท์ แอลโบลท์
{
id: 'jbolt',
name: 'เจโบลท์ แอลโบลท์',
nameEn: 'J-Bolt L-Bolt',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/เจโบลท์-แอลโบลท์',
image: '/images/2025/01/Hanger-Clamp-Bolt_000.jpg',
description: 'เจโบลท์ แอลโบลท์ เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด M8-M20 สำหรับงานยึดแข็งแรง',
shortDescription: 'J-Bolt/L-Bolt สำหรับงานยึดแข็งแรง',
keywords: ['เจโบลท์', 'แอลโบลท์', 'J-Bolt', 'L-Bolt', 'สแตนเลส SUS304', 'ชุบซิงค์'],
seoContent: `<h2>เจโบลท์ แอลโบลท์ (J-Bolt L-Bolt) - บอลท์ยึดแข็งแรงหลากหลายการใช้งาน</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>เจโบลท์และแอลโบลท์เป็นบอลท์ยึดที่มีรูปร่างเฉพาะตัว เหมาะสำหรับงานยึดแข็งแรง ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong>ให้ความแข็งแรงทนทาน และมีรุ่น<strong>สแตนเลส SUS304</strong></p>
<h3>ขนาดและการใช้งาน</h3>
<p>เจโบลท์และแอลโบลท์มีขนาดให้เลือกตั้งแต่ <strong>M8 ถึง M20</strong> หรือ <strong>3/8 นิ้ว ถึง 3/4 นิ้ว</strong></p>`,
},
// ยูโบลท์
{
id: 'ubolt',
name: 'ยูโบลท์',
nameEn: 'U-Bolt',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/ยูโบลท์',
image: '/images/2024/02/UBolt_cover_01.jpg',
description: 'ยูโบลท์ (U-Bolt) เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด 1/2-8 นิ้ว สำหรับยึดท่อ',
shortDescription: 'U-Bolt ยึดท่อรูปตัวยูมาตรฐาน',
keywords: ['ยูโบลท์', 'U-Bolt', 'บอลท์รูปยู', 'สแตนเลส SUS304', 'ชุบซิงค์กันสนิม'],
seoContent: `<h2>ยูโบลท์ (U-Bolt) - บอลท์ยึดท่อรูปตัวยูมาตรฐาน</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>ยูโบลท์เป็นอุปกรณ์ยึดท่อในรูปตัว U ที่ได้รับความนิยมสูงสุดในงานระบบท่อ ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong>ให้ความแข็งแรงทนทาน และมีรุ่น<strong>สแตนเลส SUS304</strong></p>
<h3>ขนาดและการใช้งาน</h3>
<p>ยูโบลท์มีขนาดให้เลือกตั้งแต่ <strong>1/2 นิ้ว ถึง 8 นิ้ว</strong> ครอบคลุมการใช้งานกับท่อขนาดเล็กไปจนถึงท่อขนาดใหญ่</p>`,
},
// สตัดเกลียวตลอด
{
id: 'threadedrod',
name: 'สตัดเกลียวตลอด',
nameEn: 'Threaded Rod',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/สตัดเกลียวตลอด',
image: '/images/2024/02/THREADED_ROD_cover_01.jpg',
description: 'สตัดเกลียวตลอด เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด M6-M20 ความยาว 1-3 เมตร',
shortDescription: 'Threaded Rod เกลียวตลอดแนว',
keywords: ['สตัดเกลียวตลอด', 'Threaded Rod', 'สตัดเหล็ก', 'สตัดสแตนเลส', 'SUS304'],
seoContent: `<h2>สตัดเกลียวตลอด (Threaded Rod) - วัสดุยึดหลักในงานติดตั้งระบบท่อ</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>สตัดเกลียวตลอดหรือสตัดแกนเป็นวัสดุยึดพื้นฐานที่ขาดไม่ได้ในงานติดตั้งระบบท่อ ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong>ให้ความแข็งแรงทนทาน และมีรุ่น<strong>สแตนเลส SUS304</strong></p>
<h3>ขนาดและการใช้งาน</h3>
<p>สตัดเกลียวตลอดมีขนาดให้เลือกตั้งแต่ <strong>M6 ถึง M20</strong> มีความยาวมาตรฐาน 1 เมตร 2 เมตร และ 3 เมตร</p>`,
},
// พุกต่างๆ
{
id: 'anchors',
name: 'พุกต่างๆ',
nameEn: 'Various Anchors',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/พุกต่างๆ',
image: '/images/2025/01/Hanger-Clamp-Bolt_000.jpg',
description: 'พุกพลาสติก/พุกเหล็ก ขนาด M6-M16 สำหรับยึดกับคอนกรีต อิฐ บล็อก',
shortDescription: 'พุกพลาสติก/เหล็กหลากหลายประเภท',
keywords: ['พุก', 'Anchor', 'พุกเหล็ก', 'พุกพลาสติก', 'สแตนเลส SUS304'],
seoContent: `<h2>พุกต่างๆ (Various Anchors) - อุปกรณ์ยึดแน่นในวัสดุก่อสร้าง</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>พุกหรือแอนเกอร์เป็นอุปกรณ์ยึดที่จำเป็นสำหรับการติดตั้งระบบท่อและอุปกรณ์ต่างๆ เข้ากับวัสดุก่อสร้าง มีให้เลือกหลากหลายประเภททั้ง<strong>พุกพลาสติก</strong> (Nylon) และ<strong>พุกเหล็ก</strong></p>
<h3>ขนาดและการใช้งาน</h3>
<p>พุกมีขนาดให้เลือกตั้งแต่ <strong>M6 ถึง M16</strong></p>`,
},
// พุกเหล็ก Sleeve Anchor
{
id: 'sleeveanchor',
name: 'พุกเหล็ก Sleeve Anchor',
nameEn: 'Sleeve Anchor',
slug: 'อุปกรณ์แขวนท่อ',
href: '/อุปกรณ์แขวนท่อ/พุกเหล็ก-sleeve-anchor',
image: '/images/2025/01/Hanger-Clamp-Bolt_000.jpg',
description: 'พุกเหล็ก Sleeve Anchor เหล็กชุบซิงค์/สแตนเลส SUS304 ขนาด M8-M16 สำหรับงานหนัก',
shortDescription: 'Sleeve Anchor พุกขยายงานหนัก',
keywords: ['พุกเหล็ก Sleeve Anchor', 'Sleeve Anchor', 'พุกขยาย', 'สแตนเลส SUS304', 'ชุบซิงค์'],
seoContent: `<h2>พุกเหล็ก Sleeve Anchor - พุกขยายแบบแมนเทลสำหรับงานหนัก</h2>
<h3>คุณสมบัติและวัสดุ</h3>
<p>พุกเหล็ก Sleeve Anchor หรือพุกขยายแบบแมนเทลเป็นพุกขยายที่ออกแบบมาเพื่อการยึดแน่นหนาในคอนกรีตและวัสดุก่อสร้างที่แข็ง ผลิตจาก<strong>เหล็กชุบซิงค์กันสนิม</strong></p>
<h3>จุดเด่นของผลิตภัณฑ์</h3>
<ul>
<li><strong>ระบบขยายตัว</strong> - ขยายตัวเมื่อขันแป้น ยึดแน่นหนาในรูเจาะ</li>
<li><strong>รับน้ำหนักสูง</strong> - เหมาะสำหรับงานหนักและงานอุตสาหกรรม</li>
</ul>`,
},
// กริลแอร์
{
id: 'grilles',
name: 'กริลแอร์',
nameEn: 'Air Grille Diffuser',
slug: 'อุปกรณ์ปรับอากาศ',
href: '/อุปกรณ์ปรับอากาศ/กริลแอร์',
image: '/images/2021/03/grilles_000C.jpg',
description: 'กริลแอร์พลาสติก/อลูมิเนียม Diffuser/Supply/Return Air Grille สำหรับระบบปรับอากาศ',
shortDescription: 'กริลแอร์ Diffuser/Supply/Return Air',
keywords: ['กริลแอร์', 'หน้ากากแอร์', 'Diffuser', 'Supply Air Grille', 'Return Air Grille', 'กริลแอร์พลาสติก', 'กริลอลูมิเนียม', 'Air Distribution', 'Ceiling Diffuser'],
seoContent: `<h2>กริลแอร์พลาสติก อุปกรณ์กระจายอากาศที่จำเป็นสำหรับระบบปรับอากาศ</h2>
<p>กริลแอร์ (Air Grille) หรือ หน้ากากแอร์ เป็นอุปกรณ์สำคัญในระบบปรับอากาศและระบบระบายอากาศ ทำหน้าที่กระจายอากาศเย็นหรืออากาศร้อนให้ทั่วพื้นที่อย่างสม่ำเสมอ</p>
<h3>ประเภทของกริลแอร์ที่นิยมใช้งาน</h3>
<ul>
<li><strong>Diffuser (ดิฟฟิวเซอร์)</strong> - กริลแอร์แบบกระจายลม เหมาะสำหรับติดตั้งบนเพดาน</li>
<li><strong>Supply Air Grille (กริลจ่ายอากาศ)</strong> - กริลแอร์สำหรับจ่ายอากาศเข้าสู่พื้นที่</li>
<li><strong>Return Air Grille (กริลรับอากาศ)</strong> - กริลแอร์สำหรับดูดอากาศกลับเข้าระบบ</li>
</ul>`,
},
// วาล์วเติมอากาศ DURGO
{
id: 'durgo',
name: 'วาล์วเติมอากาศ DURGO',
nameEn: 'DURGO Air Admittance Valve',
slug: 'อุปกรณ์ปรับอากาศ',
href: '/อุปกรณ์ปรับอากาศ/วาล์วเติมอากาศ-durgo',
image: '/images/2021/03/durgo_000C.jpg',
description: 'วาล์วเติมอากาศ DURGO มาตรฐาน EN 12380 ป้องกัน Trap Siphonage สำหรับระบบระบายน้ำ',
shortDescription: 'DURGO Air Valve EN 12380',
keywords: ['DURGO', 'วาล์วเติมอากาศ', 'Air Admittance Valve', 'EN 12380', 'Air Valve', 'AVV', 'ป้องกันการดูดน้ำจากซิฟอน', 'ระบบระบายน้ำ'],
seoContent: `<h2>วาล์วเติมอากาศ DURGO ระบบระบายน้ำมาตรฐานยุโรป</h2>
<p>วาล์วเติมอากาศหรือ Air Admittance Valve (AAV) เป็นอุปกรณ์สำคัญในระบบระบายน้ำที่ช่วยให้อากาศเข้าสู่ท่อระบายน้ำได้โดยไม่ให้กลิ่นเหม็นย้อนกลับเข้ามาในอาคาร DURGO เป็นแบรนด์ชั้นนำที่ได้รับการรับรองมาตรฐาน EN 12380</p>
<h3>หลักการทำงานของวาล์วเติมอากาศ DURGO</h3>
<ul>
<li><strong>เมื่อน้ำไหลผ่าน</strong> - วาล์วจะเปิดให้อากาศเข้ามาชดเชยแรงดันลบในท่อ</li>
<li><strong>เมื่อไม่มีน้ำไหล</strong> - วาล์วจะปิดสนิท ไม่ให้กลิ่นจากท่อระบายน้ำย้อนกลับ</li>
</ul>`,
},
// ท่อสแตนเลส Realflex
{
id: 'realflex',
name: 'ท่อสแตนเลส Realflex',
nameEn: 'Realflex Flexible Hose',
slug: 'อุปกรณ์ดับเพลิง',
href: '/อุปกรณ์ดับเพลิง/ท่อสแตนเลส-realflex',
image: '/images/2021/03/realflex_000C.jpg',
description: 'ท่อสแตนเลส Realflex Stainless Steel 304 มาตรฐาน NFPA 13 สำหรับระบบสปริงเกลอร์',
shortDescription: 'Realflex ท่อสแตนเลส NFPA 13',
keywords: ['Realflex', 'ท่อสแตนเลส', 'Flexible Hose', 'NFPA13', 'สปริงเกลอร์', 'Fire Sprinkler', 'Stainless Steel 304', 'ท่อยืดหยุ่น'],
seoContent: `<h2>ท่อสแตนเลส Realflex สำหรับระบบสปริงเกลอร์และดับเพลิง</h2>
<p>Realflex เป็นท่อสแตนเลสยืดหยุ่น (Stainless Steel Flexible Hose) ที่ออกแบบมาเพื่อใช้งานในระบบดับเพลิงและสปริงเกลอร์ตามมาตรฐาน NFPA 13 ผลิตจากสแตนเลสเกรด 304</p>
<h3>คุณสมบัติเด่นของท่อ Realflex</h3>
<ul>
<li><strong>วัสดุ Stainless Steel 304</strong> - ทนทานต่อสนิมและการกัดกร่อน</li>
<li><strong>ความยืดหยุ่นสูง</strong> - สามารถโค้งงอและเคลื่อนที่ได้ตามต้องการ</li>
<li><strong>ทนความร้อน</strong> - สามารถทำงานได้ในช่วงอุณหภูมิกว้าง</li>
</ul>`,
},
// เทอร์โมเบรค
{
id: 'thermobreak',
name: 'เทอร์โมเบรค',
nameEn: 'Thermobreak Insulation',
slug: 'อุปกรณ์ปรับอากาศ',
href: '/อุปกรณ์ปรับอากาศ/เทอร์โมเบรค',
image: '/images/2025/01/thermobrek_cover_000C.jpg',
description: 'เทอร์โมเบรค ฉนวนหุ้มท่อ Polyolefin Foam 0.032 W/mK มาตรฐาน FM/UL สำหรับ HVAC',
shortDescription: 'Thermobreak ฉนวนหุ้มท่อ FM/UL',
keywords: ['เทอร์โมเบรค', 'ฉนวนหุ้มท่อ', 'Thermobreak', 'FM', 'UL', '0.032 W/mK', 'Polyolefin Foam', 'ฉนวนกันความร้อน'],
seoContent: `<h2>เทอร์โมเบรค ฉนวนหุ้มท่อคุณภาพสูงมาตรฐาน FM/UL</h2>
<p>เทอร์โมเบรค (Thermobreak) เป็นฉนวนหุ้มท่อคุณภาพสูงที่ผลิตจาก Polyolefin Foam ซึ่งมีคุณสมบัติกันความร้อนได้ดีเยี่ยม มีค่าการนำความร้อน (Thermal Conductivity) เพียง 0.032 W/mK</p>
<h3>คุณสมบัติเด่นของเทอร์โมเบรค</h3>
<ul>
<li><strong>ค่าการนำความร้อน 0.032 W/mK</strong> - ประสิทธิภาพสูงในการป้องกันการถ่ายเทความร้อน</li>
<li><strong>ผลิตจาก Polyolefin Foam</strong> - วัสดุโพลีโอลีฟินคุณภาพสูง</li>
<li><strong>ทนไฟ</strong> - ไม่ลุกไหม้ง่าย ปลอดภัยสำหรับการใช้งานในอาคาร</li>
</ul>`,
},
// หัวจ่ายแอร์ Ball Jet
{
id: 'ball-jet',
name: 'หัวจ่ายแอร์ Ball Jet',
nameEn: 'Ball Jet Diffuser',
slug: 'อุปกรณ์ปรับอากาศ',
href: '/อุปกรณ์ปรับอากาศ/หัวจ่ายแอร์-ball-jet',
image: '/images/2025/01/balljet-cover_000C.jpg',
description: 'หัวจ่ายแอร์ Ball Jet ABS Plastic ปรับทิศทางลมได้ ลมแรงสูงระยะไกล สำหรับโรงงาน/โกดัง',
shortDescription: 'Ball Jet ลมแรงสูงระยะไกล',
keywords: ['หัวจ่ายแอร์', 'Ball Jet', 'Diffuser', 'กระจายลม', 'Air Jet', 'ABS Plastic', 'ลมแรง', 'ปรับทิศทางลม'],
seoContent: `<h2>หัวจ่ายแอร์ Ball Jet กระจายลมแรงสูงระยะไกล</h2>
<p>หัวจ่ายแอร์ Ball Jet (บอลเจ็ต) เป็นอุปกรณ์กระจายอากาศแบบลมแรงสูง (High Velocity Air Diffuser) ที่ออกแบบมาเพื่อส่งลมเย็นหรืออากาศร้อนไประยะไกล (Long Throw) ผลิตจากพลาสติก ABS คุณภาพสูง</p>
<h3>คุณสมบัติเด่นของหัวจ่ายแอร์ Ball Jet</h3>
<ul>
<li><strong>การปรับทิศทางลม</strong> - สามารถปรับทิศทางการจ่ายลมได้ตามต้องการ</li>
<li><strong>ลมแรงสูงระยะไกล</strong> - สามารถส่งลมได้ไกลกว่ากริลแอร์ทั่วไป</li>
<li><strong>วัสดุ ABS Plastic</strong> - พลาสติก ABS คุณภาพสูง ทนทานต่อการผุกร่อน</li>
</ul>`,
},
// อุปกรณ์ดับเพลิง
{
id: 'extinguishers',
name: 'อุปกรณ์ดับเพลิง',
nameEn: 'Fire Extinguishers',
slug: 'อุปกรณ์ดับเพลิง',
href: '/อุปกรณ์ดับเพลิง/อุปกรณ์ดับเพลิง',
image: '/images/2021/03/extinguishers_000C.jpg',
description: 'อุปกรณ์ดับเพลิง CO2/Dry Chemical/Foam มอก./UL/FM สำหรับทุกอาคาร',
shortDescription: 'ถังดับเพลิง มอก./UL/FM',
keywords: ['อุปกรณ์ดับเพลิง', 'ถังดับเพลิง', 'มอก.', 'UL', 'FM', 'ถังดับเพลิง CO2', 'Dry Chemical', 'Foam Extinguisher', 'Fire Safety'],
seoContent: `<h2>อุปกรณ์ดับเพลิง ระบบป้องกันอัคคีภัยที่จำเป็นสำหรับทุกอาคาร</h2>
<p>อุปกรณ์ดับเพลิง (Fire Extinguisher) เป็นอุปกรณ์ดับเพลิงขั้นพื้นฐานที่ทุกอาคารต้องมีไว้ประจำตำแหน่ง การเลือกซื้อถังดับเพลิงที่ได้มาตรฐาน มอก. (มาตรฐานผลิตภัณฑ์อุตสาหกรรมไทย) รวมถึงการรับรองจาก UL และ FM</p>
<h3>ประเภทของถังดับเพลิง</h3>
<ul>
<li><strong>ถังดับเพลิง CO2</strong> - ใช้ก๊าซคาร์บอนไดออกไซด์ในการดับไฟ เหมาะสำหรับไฟชนิด B และ C</li>
<li><strong>ถังดับเพลิง Dry Chemical</strong> - ใช้ผงเคมี ABC สามารถใช้กับไฟชนิด A B และ C ได้</li>
<li><strong>ถังดับเพลิง Foam</strong> - ใช้สารลดแรงตึงผิว เหมาะสำหรับไฟชนิด A และ B</li>
</ul>`,
},
];
// Featured products for homepage
export const featuredProducts = [
productCategories.find(p => p.id === 'ppr-scg')!,
productCategories.find(p => p.id === 'hdpe')!,
productCategories.find(p => p.id === 'groove-coupling')!,
];
// Main Navigation
export const mainNavigation: NavItem[] = [
{ label: 'หน้าแรก', labelEn: 'Home', href: '/' },
{ label: 'เกี่ยวกับเรา', labelEn: 'About Us', href: '/about-us' },
{
label: 'สินค้า',
labelEn: 'Products',
href: '/product',
children: [
{
label: 'ท่อพีพีอาร์ (PPR Pipe)',
labelEn: 'PPR Pipe',
href: '/product',
children: [
{ label: 'ท่อพีพีอาร์ตราช้าง', labelEn: 'SCG PPR', href: '/ท่อพีพีอาร์/ตราช้าง-scg' },
{ label: 'ท่อ POLOPLAST', labelEn: 'POLOPLAST', href: '/ท่อพีพีอาร์/poloplast' },
{ label: 'เครื่องเชื่อมท่อ PPR', labelEn: 'PPR Welder', href: '/อุปกรณ์ติดตั้ง/เครื่องเชื่อมท่อ-ppr' },
],
},
{
label: 'ท่อ HDPE',
labelEn: 'HDPE Pipe',
href: '/product',
children: [
{ label: 'ท่อ HDPE', labelEn: 'HDPE Pipe', href: '/ท่อ-hdpe' },
{ label: 'เครื่องเชื่อม HDPE', labelEn: 'HDPE Welder', href: '/อุปกรณ์ติดตั้ง/เครื่องเชื่อม-hdpe' },
],
},
{
label: 'ท่อ PVC/uPVC',
labelEn: 'PVC/uPVC Pipe',
href: '/product',
children: [
{ label: 'ท่อ uPVC ทน UV', labelEn: 'uPVC Pipe', href: '/ท่อ-upvc' },
{ label: 'ท่อพีวีซี', labelEn: 'PVC Pipe', href: '/ท่อ-pvc' },
{ label: 'ท่อไซเลอร์', labelEn: 'Syler Pipe', href: '/ท่อไซเลอร์' },
{ label: 'ท่อ XYLENT', labelEn: 'XYLENT Pipe', href: '/ท่อระบายน้ำ-xylent' },
],
},
{
label: 'วาล์วและข้อต่อ',
labelEn: 'Valves & Couplings',
href: '/product',
children: [
{ label: 'กรู๊ฟท่อ', labelEn: 'Groove Coupling', href: '/วาล์ว-valve/กรู๊ฟท่อ-groove-coupling' },
{ label: 'ข้อต่อท่อ', labelEn: 'Pipe Coupling', href: '/วาล์ว-valve/ข้อต่อท่อ-pipe-coupling' },
{ label: 'DUKELARRSEN Coupling', labelEn: 'DUKELARRSEN', href: '/วาล์ว-valve/dukelarrsen-coupling' },
{ label: 'เม็กกรู๊ฟ คับปลิ้ง', labelEn: 'MECH Coupling', href: '/วาล์ว-valve/เม็กกรู๊ฟ-คับปลิ้ง' },
],
},
{
label: 'อุปกรณ์แขวนท่อ',
labelEn: 'Pipe Hangers',
href: '/product',
children: [
{ label: 'สปริทริงแฮงเกอร์', labelEn: 'Split Ring Hanger', href: '/อุปกรณ์แขวนท่อ/สปริทริงแฮงเกอร์' },
{ label: 'เควิสแฮงเกอร์', labelEn: 'Clevis Hanger', href: '/อุปกรณ์แขวนท่อ/เควิสแฮงเกอร์' },
{ label: 'แคล้มฟันจระเข้', labelEn: 'Beam Clamp', href: '/อุปกรณ์แขวนท่อ/แคล้มฟันจระเข้' },
{ label: 'แคล้มหยดน้ำ', labelEn: 'Band Hanger', href: '/อุปกรณ์แขวนท่อ/แคล้มหยดน้ำ' },
{ label: 'แคล้มเลเวล', labelEn: 'Level Clamp', href: '/อุปกรณ์แขวนท่อ/แคล้มเลเวล' },
{ label: 'ยูโบลท์', labelEn: 'U-Bolt', href: '/อุปกรณ์แขวนท่อ/ยูโบลท์' },
{ label: 'สตัดเกลียวตลอด', labelEn: 'Threaded Rod', href: '/อุปกรณ์แขวนท่อ/สตัดเกลียวตลอด' },
{ label: 'พุกต่างๆ', labelEn: 'Anchors', href: '/อุปกรณ์แขวนท่อ/พุกต่างๆ' },
],
},
{
label: 'อุปกรณ์ปรับอากาศ',
labelEn: 'HVAC Equipment',
href: '/product',
children: [
{ label: 'กริลแอร์', labelEn: 'Air Grille', href: '/อุปกรณ์ปรับอากาศ/กริลแอร์' },
{ label: 'วาล์วเติมอากาศ DURGO', labelEn: 'DURGO Valve', href: '/อุปกรณ์ปรับอากาศ/วาล์วเติมอากาศ-durgo' },
{ label: 'เทอร์โมเบรค', labelEn: 'Thermobreak', href: '/อุปกรณ์ปรับอากาศ/เทอร์โมเบรค' },
{ label: 'หัวจ่ายแอร์ Ball Jet', labelEn: 'Ball Jet', href: '/อุปกรณ์ปรับอากาศ/หัวจ่ายแอร์-ball-jet' },
],
},
{
label: 'อุปกรณ์ดับเพลิง',
labelEn: 'Fire Protection',
href: '/product',
children: [
{ label: 'ท่อสแตนเลส Realflex', labelEn: 'Realflex', href: '/อุปกรณ์ดับเพลิง/ท่อสแตนเลส-realflex' },
{ label: 'อุปกรณ์ดับเพลิง', labelEn: 'Fire Extinguishers', href: '/อุปกรณ์ดับเพลิง/อุปกรณ์ดับเพลิง' },
],
},
],
},
{ label: 'โครงการ', labelEn: 'Portfolio', href: '/all-projects' },
{ label: 'บทความ', labelEn: 'Blog', href: '/blog' },
{ label: 'ติดต่อเรา', labelEn: 'Contact', href: '/contact-us' },
];

27
src/lib/utils.ts Normal file
View File

@@ -0,0 +1,27 @@
import { clsx, type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export function formatDate(date: string): string {
return new Date(date).toLocaleDateString('th-TH', {
year: 'numeric',
month: 'long',
day: 'numeric',
});
}
export function truncate(str: string, length: number): string {
if (str.length <= length) return str;
return str.slice(0, length) + '...';
}
export function slugify(str: string): string {
return str
.toLowerCase()
.replace(/[^\w\s-]/g, '')
.replace(/[\s_-]+/g, '-')
.replace(/^-+|-+$/g, '');
}

70
src/styles/globals.css Normal file
View File

@@ -0,0 +1,70 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
html {
scroll-behavior: smooth;
}
body {
@apply bg-white text-secondary-900 antialiased;
}
h1, h2, h3, h4, h5, h6 {
@apply font-bold tracking-tight;
}
}
@layer components {
.btn-primary {
@apply inline-flex items-center justify-center px-6 py-3 bg-primary-600 text-white font-semibold rounded-lg
hover:bg-primary-700 transition-all duration-200 shadow-bold hover:shadow-industrial
active:translate-y-0.5;
}
.btn-secondary {
@apply inline-flex items-center justify-center px-6 py-3 bg-secondary-800 text-white font-semibold rounded-lg
hover:bg-secondary-900 transition-all duration-200;
}
.btn-outline {
@apply inline-flex items-center justify-center px-6 py-3 border-2 border-primary-600 text-primary-600 font-semibold rounded-lg
hover:bg-primary-600 hover:text-white transition-all duration-200;
}
.section-title {
@apply text-3xl md:text-4xl lg:text-5xl font-bold text-secondary-900;
}
.section-subtitle {
@apply text-lg md:text-xl text-secondary-600 mt-4;
}
.card {
@apply bg-white rounded-xl shadow-card overflow-hidden transition-all duration-300
hover:shadow-industrial hover:-translate-y-1;
}
.card-industrial {
@apply bg-secondary-800 text-white rounded-xl p-6 border-l-4 border-primary-500;
}
.gradient-overlay {
@apply absolute inset-0 bg-gradient-to-r from-industrial-dark/90 to-industrial-dark/70;
}
.industrial-badge {
@apply inline-flex items-center px-3 py-1 bg-primary-600 text-white text-sm font-semibold rounded;
}
}
@layer utilities {
.text-balance {
text-wrap: balance;
}
.text-gradient {
@apply bg-clip-text text-transparent bg-gradient-to-r from-primary-500 to-primary-700;
}
}

83
src/types/index.ts Normal file
View File

@@ -0,0 +1,83 @@
// Site Configuration Types
export interface SiteConfig {
name: string;
nameTh: string;
url: string;
description: string;
phone: string;
email: string;
lineId: string;
facebookUrl: string;
address: string;
}
export interface WorkHours {
day: string;
hours: string;
isClosed?: boolean;
}
export interface ProductCategory {
id: string;
name: string;
nameEn: string;
slug: string;
href: string;
image: string;
description: string;
shortDescription?: string;
keywords?: string[];
seoContent?: string;
}
export interface NavItem {
label: string;
labelEn: string;
href: string;
children?: NavItem[];
}
// Blog Types
export interface BlogPost {
slug: string;
title: string;
excerpt: string;
content: string;
date: string;
author: string;
category: string;
image?: string;
}
export interface BlogCategory {
name: string;
slug: string;
count: number;
}
// Portfolio Types
export interface PortfolioItem {
id: string;
title: string;
category: string;
image: string;
description: string;
}
// Contact Form Types
export interface ContactFormData {
name: string;
email: string;
phone: string;
subject: string;
message: string;
}
// SEO Types
export interface SEOData {
title: string;
description: string;
keywords?: string[];
ogImage?: string;
canonical?: string;
}