import React, { useState, useEffect } from "react";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
import { ChevronDown, Wrench, Battery, Cog, Cpu } from "lucide-react";
const HERRAMIENTAS = [
{
modelo: "ASM 18-3 PC",
codigo: "7 112 77 60 00 0",
formato: "Pistola",
torqueMin: 0.5,
torqueMax: 3,
speedMin: 250,
speedMax: 1000,
encastre: '1/4" Hex',
dimensiones: "245 x 58 x 175 mm",
peso: 0.8,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASM_18-3_PC.png"
},
{
modelo: "ASM 18-8 PC",
codigo: "7 112 78 60 00 0",
formato: "Pistola",
torqueMin: 1,
torqueMax: 8,
speedMin: 250,
speedMax: 900,
encastre: '1/4" Hex',
dimensiones: "250 x 60 x 180 mm",
peso: 0.85,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASM_18-8_PC.png"
},
{
modelo: "ASM 18-12 PC",
codigo: "7 112 79 60 00 0",
formato: "Pistola",
torqueMin: 4,
torqueMax: 12,
speedMin: 200,
speedMax: 850,
encastre: '1/4" Hex',
dimensiones: "255 x 62 x 180 mm",
peso: 0.9,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASM18-12_71127960000.jpeg"
},
{
modelo: "ASW 18-6 PC",
codigo: "7 112 66 60 00 0",
formato: "Angular",
torqueMin: 1.2,
torqueMax: 6,
speedMin: 200,
speedMax: 800,
encastre: '1/4" Cuadrado',
dimensiones: "390 x 60 x 85 mm",
peso: 1.1,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASW_18-6_PC.png"
},
{
modelo: "ASW 18-12 PC",
codigo: "7 112 68 60 00 0",
formato: "Angular",
torqueMin: 3,
torqueMax: 12,
speedMin: 150,
speedMax: 750,
encastre: '1/4" Cuadrado',
dimensiones: "400 x 60 x 90 mm",
peso: 1.2,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASW_18-12_PC_Angular_ACCUTECH_Imagen_420x420.png"
},
{
modelo: "ASW 18-18 PC",
codigo: "7 112 70 60 00 0",
formato: "Angular",
torqueMin: 6,
torqueMax: 18,
speedMin: 130,
speedMax: 600,
encastre: '1/4" Cuadrado',
dimensiones: "410 x 65 x 95 mm",
peso: 1.3,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASW_18-18_PC.png"
},
{
modelo: "ASW 18-30 PC",
codigo: "7 112 62 60 00 0",
formato: "Angular",
torqueMin: 12,
torqueMax: 30,
speedMin: 100,
speedMax: 450,
encastre: '3/8" Cuadrado',
dimensiones: "425 x 70 x 95 mm",
peso: 1.4,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASW_18-30_PC_Angular_ACCUTECH_Imagen_420x420.png"
},
{
modelo: "ASW 18-45 PC",
codigo: "7 112 63 60 00 0",
formato: "Angular",
torqueMin: 20,
torqueMax: 45,
speedMin: 80,
speedMax: 350,
encastre: '3/8" Cuadrado',
dimensiones: "430 x 70 x 100 mm",
peso: 1.45,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASW_18-45_PC.png"
},
{
modelo: "ASW 18-60 PC",
codigo: "7 112 64 60 00 0",
formato: "Angular",
torqueMin: 25,
torqueMax: 60,
speedMin: 60,
speedMax: 300,
encastre: '1/2" Cuadrado',
dimensiones: "440 x 75 x 105 mm",
peso: 1.5,
origen: "Alemania",
ncm: "84671190",
hs: "84671110",
img: "/images/FEIN_ASW_18-60_PC.png"
}
];
export default function DemoCatalogoFEIN() {
const [tab, setTab] = useState("herramientas");
const [expanded, setExpanded] = useState(null);
// Self-tests simples para prevenir regresiones
useEffect(() => {
console.assert(Array.isArray(HERRAMIENTAS) && HERRAMIENTAS.length > 0, "HERRAMIENTAS no debe estar vacío");
const torqueOk = HERRAMIENTAS.every(h => h.torqueMin <= h.torqueMax);
console.assert(torqueOk, "Torque Min debe ser <= Torque Max");
const rpmOk = HERRAMIENTAS.every(h => h.speedMin <= h.speedMax);
console.assert(rpmOk, "RPM Min debe ser <= RPM Max");
const encOk = HERRAMIENTAS.every(h => typeof h.encastre === 'string');
console.assert(encOk, "Encastre debe ser string");
}, []);
const tabData = [
{ id: "herramientas", label: "Herramientas", icon: <Wrench className="w-4 h-4" /> },
{ id: "accesorios", label: "Accesorios", icon: <Battery className="w-4 h-4" /> },
{ id: "repuestos", label: "Repuestos", icon: <Cog className="w-4 h-4" /> },
{ id: "software", label: "Software", icon: <Cpu className="w-4 h-4" /> }
];
return (
<div className="min-h-screen bg-neutral-50">
<section className="px-6 md:px-10 py-10 md:py-14 bg-gradient-to-b from-orange-500 to-orange-400 text-white">
<div className="max-w-6xl mx-auto">
<h1 className="text-3xl md:text-5xl font-bold leading-tight">FEIN AccuTec – Catálogo Interactivo</h1>
<p className="mt-3 text-white/90 md:text-lg max-w-3xl">
Herramientas de atornillado de precisión industrial. Elegí una categoría para explorar los modelos.
</p>
</div>
</section>
<section className="px-6 md:px-10 py-10">
<div className="max-w-6xl mx-auto">
<Tabs value={tab} onValueChange={setTab}>
<TabsList className="flex justify-between bg-white shadow-md border rounded-2xl p-2 mb-8 overflow-x-auto">
{tabData.map((t) => (
<TabsTrigger
key={t.id}
value={t.id}
className={`flex items-center gap-2 px-5 py-3 rounded-xl transition-all duration-200 text-sm font-semibold ${
tab === t.id
? "bg-orange-500 text-white shadow-md scale-105"
: "bg-neutral-100 text-neutral-600 hover:bg-orange-100 hover:text-orange-600"
}`}
>
{t.icon}
{t.label}
</TabsTrigger>
))}
</TabsList>
<TabsContent value="herramientas">
<div className="overflow-x-auto border rounded-xl bg-white shadow-sm">
<table className="min-w-full text-left border-collapse">
<thead className="bg-orange-500 text-white text-sm uppercase">
<tr>
<th className="py-3 px-4">Dibujo</th>
<th className="py-3 px-4">Modelo</th>
<th className="py-3 px-4">Código</th>
<th className="py-3 px-4">Formato</th>
<th className="py-3 px-4">Torque Mín. (Nm)</th>
<th className="py-3 px-4">Torque Máx. (Nm)</th>
<th className="py-3 px-4">Velocidad (RPM)</th>
<th className="py-3 px-4">Peso (kg)</th>
</tr>
</thead>
<tbody>
{HERRAMIENTAS.map((tool, i) => (
<React.Fragment key={i}>
<tr
className="border-b hover:bg-orange-50 cursor-pointer transition-all"
onClick={() => setExpanded(expanded === i ? null : i)}
>
<td className="py-3 px-4">
<img src={tool.img} alt={tool.modelo} className="w-16 h-auto mx-auto" />
</td>
<td className="py-3 px-4 font-semibold text-neutral-800">{tool.modelo}</td>
<td className="py-3 px-4 text-neutral-600">{tool.codigo}</td>
<td className="py-3 px-4">{tool.formato}</td>
<td className="py-3 px-4">{tool.torqueMin}</td>
<td className="py-3 px-4">{tool.torqueMax}</td>
<td className="py-3 px-4">{tool.speedMin}–{tool.speedMax}</td>
<td className="py-3 px-4">{tool.peso}</td>
</tr>
{expanded === i && (
<tr className="bg-orange-50 border-b">
<td colSpan="8" className="p-4 text-sm text-neutral-700">
<div className="flex flex-col md:flex-row gap-4 items-start">
<img src={tool.img} alt={tool.modelo} className="w-40 h-auto rounded-lg shadow-md" />
<div>
<h3 className="font-semibold text-lg mb-2 text-neutral-800">{tool.modelo}</h3>
<p><strong>Formato:</strong> {tool.formato}</p>
<p><strong>Torque:</strong> {tool.torqueMin}–{tool.torqueMax} Nm</p>
<p><strong>Velocidad:</strong> {tool.speedMin}–{tool.speedMax} RPM</p>
<p><strong>Tipo de encastre:</strong> {tool.encastre}</p>
<p><strong>Dimensiones:</strong> {tool.dimensiones}</p>
<p><strong>Peso:</strong> {tool.peso} kg</p>
<p><strong>Origen:</strong> {tool.origen}</p>
<p><strong>NCM:</strong> {tool.ncm} · <strong>HS Code:</strong> {tool.hs}</p>
<p className="mt-2 text-neutral-600">
Estas herramientas están diseñadas para precisión industrial y cumplen estándares ISO 5393 y VDI 2647.
</p>
</div>
</div>
</td>
</tr>
)}
</React.Fragment>
))}
</tbody>
</table>
</div>
</TabsContent>
<TabsContent value="accesorios">
<p className="text-neutral-600 text-center py-10">Próximamente: accesorios y baterías disponibles.</p>
</TabsContent>
<TabsContent value="repuestos">
<p className="text-neutral-600 text-center py-10">Próximamente: repuestos y cargadores FEIN.</p>
</TabsContent>
<TabsContent value="software">
<p className="text-neutral-600 text-center py-10">Próximamente: software AccuTec ParameterControl.</p>
</TabsContent>
</Tabs>
</div>
</section>
</div>
);
}