// Stannox section components — Stannox DS aligned
const Ribbon = () => (
✦ ของแท้ 100% · จัดส่งทั่วประเทศจาก marketplace · เทียบสเปกได้ทุก SKU
LINE OA: @stannox
);
const Nav = () => {
const [openMega, setOpenMega] = React.useState(false);
const mps = ["shopee", "lazada", "tiktok"];
return (
);
};
const Hero = () => {
// Drop a real file at assets/hero-loop.mp4 (and optional .webm) and the placeholder gets out of the way.
const VIDEO_SRC = "assets/hero-loop.mp4";
const [hasVideo, setHasVideo] = React.useState(false);
return (
● Live Preview · Motion Placeholder drop hero-loop.mp4 in /assets to replace
setHasVideo(true)}
onError={() => setHasVideo(false)}
style={{ opacity: hasVideo ? 1 : 0 }}
>
STX-AT102
Heavy-Duty Tire Inflator
LEAD THE INNOVATION · Catalog 2026
เครื่องมือช่างมืออาชีพ ในราคาที่ทำงานได้
Stannox — เครื่องมือช่างระดับกลางสำหรับช่างที่ใช้งานจริง ครบทุกหมวด ทนทาน คุ้มราคา หาซื้อได้ทั่วประเทศ
217 SKUs in catalog
218+ ตัวแทนทั่วประเทศ
8 หมวดสินค้า
);
};
const Categories = () => (
);
const BestSellers = () => {
const mps = ["shopee","lazada","tiktok"];
return (
{BEST_SELLERS.map(p => (
{p.tag && {p.tag} }
))}
);
};
const WhyStannox = () => (
04 / Why Stannox
เหตุผลที่ช่างเลือก
{PILLARS.map(p => (
{p.idx}
{p.title}
{p.body}
))}
);
const Trusted = () => (
Across Thailand · 2026
218+
ร้านค้า stock สินค้า Stannox
77 จังหวัด · 6 ภูมิภาค
เครือข่ายตัวแทนของเรากระจายครบทุกภูมิภาค — ยี่ปั๊วใหม่สั่งของได้จากศูนย์กระจายที่ใกล้ที่สุด พร้อมทีม sales ลงพื้นที่
หาตัวแทนใกล้คุณ
{REGIONS.map(r => (
{r.name}
{r.count}
{r.prov}
))}
{DEALER_LOGOS.map((name, i) => (
{name}
))}
);
const InAction = () => (
06 / In Action · ใช้จริง ในงานจริง
เครื่องมือที่ลงไซต์ทุกวัน
);
const WhereToBuy = () => (
07 / Where to Buy
ซื้อ Stannox ได้ที่ไหน?
Retail · ซื้อปลีก
ซื้อปลีกที่ marketplace ที่คุณใช้ประจำ
ทุก SKU มีจำหน่ายบน 3 marketplace หลัก — ของแท้จากแบรนด์ ส่งฟรีตามโปรของแต่ละแพลตฟอร์ม
B2B · ตัวแทนจำหน่าย
เปิดร้าน? ขายให้คนอื่น?
เปิดรับยี่ปั๊ว ซาปั๊ว และร้านค้าปลีกที่ต้องการ stock สินค้า Stannox — margin ดี exclusive territory ทีม sales support
+ Margin 25-40% สำหรับร้านปลีก
+ Exclusive territory ในจังหวัดที่ตกลง
+ ทีม Sales ลงพื้นที่ + POS materials
+ เงื่อนไขเครดิตที่ยืดหยุ่น
);
const Footer = () => (
);
Object.assign(window, { Nav, Hero, Categories, BestSellers, WhyStannox, Trusted, InAction, WhereToBuy, Footer });
/* ============================================================
HeroV2 — Product slider (yellow stage, slide L/R interaction)
============================================================ */
const HERO_SLIDES = [
{
idx: "01", category: "Power Tools · เครื่องมือไฟฟ้า",
titleLines: ["HAMMER", "DRILL", "20V MAX"],
code: "STX-HD205",
spec: "20V LITHIUM-ION · 3-SPEED HAMMER DRILL · ALL-METAL CHUCK",
stat: { tag: "20V", figure: "MAX", plus: false },
desc: "สว่านกระแทกไร้สาย Stannox — แรง ทน ใช้งานหนัก เหมาะกับช่างมืออาชีพทุกประเภท",
video: { title: "ดูสาธิตการใช้งาน", sub: "VIDEO · 1:42" },
img: "assets/hero/drill.png",
},
{
idx: "02", category: "Measuring · เครื่องมือวัด",
titleLines: ["TAPE", "MEASURE", "8 METER"],
code: "STX-MT826",
spec: "8 M / 26 FT · AUTO-LOCK · NYLON COATED · IMPACT SHELL",
stat: { tag: "AUTO", figure: "8M", plus: false },
desc: "ตลับเมตร 8 ม. ตัวเรือนยางกันกระแทก — เทป Nylon Coated ทนสึก อ่านง่ายในทุกสภาพแสง",
video: { title: "วิธีอ่านสเกล", sub: "VIDEO · 0:48" },
img: "assets/hero/tape.png",
},
{
idx: "03", category: "Hand Tools · ไขควง",
titleLines: ["PRO-GRIP", "SCREWDRIVER", "PH2"],
code: "STX-SD200",
spec: "S2 STEEL SHAFT · TPR DUAL-GRIP · MAGNETIC TIP · PHILLIPS PH2",
stat: { tag: "S2", figure: "PH2", plus: false },
desc: "ไขควงด้าม Dual-Grip ปลายแม่เหล็ก ก้านเหล็ก S2 — ทนแรงบิด ใช้งานทุกวันไม่เสื่อมสภาพ",
video: { title: "เทคนิคจับด้าม", sub: "VIDEO · 0:52" },
img: "assets/hero/screwdriver.png",
},
{
idx: "04", category: "Cutting · ใบตัด",
titleLines: ["DIAMOND", "CUTTING", "DISC"],
code: "STX-CD115",
spec: "4.5\" / 115 MM · 13,300 RPM MAX · GRANITE · MARBLE · MASONRY",
stat: { tag: "RPM", figure: "13.3K", plus: false },
desc: "ใบตัดเพชร 4.5 นิ้ว ฟันเทอร์โบ — สำหรับงานหิน แกรนิต และวัสดุก่อสร้างทุกประเภท",
video: { title: "วิธีติดตั้ง", sub: "VIDEO · 1:05" },
img: "assets/hero/disc.png",
},
];
/* ============================================================
ProductArt — bold flat silhouette art for each hero slide.
No photoreal — intentional industrial graphics on yellow stage.
============================================================ */
const ProductArt = ({ kind }) => {
const INK = "#0E1A4F"; // brand deep navy
const BLUE = "#1B2A78"; // primary
const YEL = "#FFD60A"; // brand yellow accent
const HI = "#FFFFFF"; // highlight
const SHADE = "rgba(14,26,79,.18)";
const wrap = (children) => (
{children}
);
if (kind === "inflator") return wrap(
{/* Gauge dial */}
{/* tick marks */}
{Array.from({length:12}).map((_,n)=>{
const a = (n / 12) * Math.PI * 1.5 - Math.PI * 1.75;
const x1 = 300 + Math.cos(a) * 64, y1 = 170 + Math.sin(a) * 64;
const x2 = 300 + Math.cos(a) * 76, y2 = 170 + Math.sin(a) * 76;
return ;
})}
{/* needle */}
{/* Body cylinder */}
{/* Trigger handle */}
{/* Trigger */}
{/* Hose nozzle going down */}
{/* Wordmark detail */}
STANNOX
);
if (kind === "plier") return wrap(
{/* Top jaw cluster */}
{/* small teeth gap */}
{/* pivot bolt */}
{/* Handles (crossed) */}
{/* Grip overmolds */}
{/* Grip dots */}
{Array.from({length:6}).map((_,n)=>(
))}
{/* End caps */}
);
if (kind === "tape") return wrap(
{/* Body shell */}
{/* Yellow inset front */}
{/* Big dial circle */}
{/* Inner ring */}
5M
{/* Wordmark strip */}
STANNOX
{/* Lock button on top */}
{/* Clip on bottom */}
{/* Tape exit slot */}
);
if (kind === "blade") return wrap(
{/* Main blade body — slight perspective angle */}
{/* Top edge highlight */}
{/* Teeth strip on bottom */}
{
let d = "M80 380 ";
for (let x = 80; x < 520; x += 18) d += `L${x+9} 410 L${x+18} 380 `;
d += "L520 380 Z";
return d;
})()} fill={INK}/>
{/* Mount hole left */}
{/* Mount hole right */}
{/* Wordmark on blade */}
STANNOX HSS · 24T
{/* Second blade behind */}
{
let d = "M80 540 ";
for (let x = 80; x < 520; x += 18) d += `L${x+9} 568 L${x+18} 540 `;
d += "L520 540 Z";
return d;
})()} fill={BLUE}/>
{/* Pack count badge */}
10
PACK
);
if (kind === "trimmer") return wrap(
{/* Outer ring */}
{/* Inner ring of nylon line — concentric rings */}
{Array.from({length:14}).map((_,n)=>{
const r = 200 - n*12;
return ;
})}
{/* End tail of line */}
{/* Center label */}
STANNOX
2.4 MM
15 METER SPOOL
{/* Cross-hatch over coil suggesting texture */}
);
return null;
};
Object.assign(window, { ProductArt });
const HeroV2 = () => {
const [i, setI] = React.useState(0);
const total = HERO_SLIDES.length;
const touchStart = React.useRef(null);
const go = (next) => setI((next + total) % total);
React.useEffect(() => {
const t = setInterval(() => setI(x => (x + 1) % total), 7500);
return () => clearInterval(t);
}, [total]);
React.useEffect(() => {
const onKey = (e) => {
if (e.key === "ArrowLeft") go(i - 1);
if (e.key === "ArrowRight") go(i + 1);
};
window.addEventListener("keydown", onKey);
return () => window.removeEventListener("keydown", onKey);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [i]);
const onTouchStart = (e) => { touchStart.current = e.touches[0].clientX; };
const onTouchEnd = (e) => {
if (touchStart.current == null) return;
const dx = e.changedTouches[0].clientX - touchStart.current;
if (dx > 40) go(i - 1);
else if (dx < -40) go(i + 1);
touchStart.current = null;
};
const slide = HERO_SLIDES[i];
return (
{/* Industrial backdrop — yellow stage + watermark wordmark texture */}
{Array.from({length: 6}).map((_,n) => (
STANNOX · LEAD THE INNOVATION · STANNOX · LEAD THE INNOVATION · STANNOX
))}
{slide.idx}
go(i - 1)} aria-label="Previous">‹
go(i + 1)} aria-label="Next">›
{String(i + 1).padStart(2, "0")} / {String(total).padStart(2, "0")}
{slide.idx}
{slide.category}
{slide.titleLines.map((t, n) => {t} )}
{HERO_SLIDES.map((_, n) => (
go(n)}
aria-label={"Slide " + (n + 1)}
/>
))}
{slide.code}
{slide.spec}
{slide.stat.tag}
{slide.stat.figure}{slide.stat.plus && + }
{slide.desc}
▶
{slide.video.title}{slide.video.sub}
);
};
Object.assign(window, { HeroV2 });