Semne de afaceri

importă React, { useMemo, useState } din "react"; // Paletă de brand const marcă = { primar: "#910F3F", // bord nisip: „#F2EFDD”, // nisip cerneală: „#111827”, dezactivat: „#6B7280”, alb: „#FFFFFF”, }; const DIMENSIUNI = [ { cheie: „A3”, etichetă: „A3 – 297×420 mm” }, { cheie: „A2”, etichetă: „A2 – 420×594 mm” }, { cheie: „A1”, etichetă: „A1 – 594×841 mm” }, { cheie: „A0”, etichetă: „A0 – 841×1189 mm” }, ]; constant MATERIALE = [ { cheie: „PVC”, etichetă: „Spumă PVC 3 mm” }, { cheie: „DIBOND”, etichetă: „Aluminium Dibond 3 mm” }, ]; const VINILURI = [ { cheie: „651”, etichetă: „Oral 651 (3–5 ani)” }, { cheie: „751”, etichetă: „Oral 751 (7–8 ani)” }, ]; ORIENTĂRI constante = [ { cheie: „PORTRET”, etichetă: „Portret” }, { cheie: „PEISAJ”, etichetă: „Peisaj” }, ]; const RIDICARE = ​​[ { cheie: „STANDARD”, etichetă: „Standard – 3–5 zile lucrătoare”, suprataxă: 0 }, { cheie: „EXPRESS”, etichetă: „Express – 24h (aceeași/a doua zi)”, suprataxă: 0,25 }, ]; const INSTALARE = ​​[ { cheie: „NONE”, etichetă: „Doar livrare” }, { cheie: „INTERIOR”, etichetă: „Instalare – Interior” }, { cheie: „EXTERIOR”, etichetă: „Instalare – Exterior” }, ]; const ZONE_CĂLĂTORIE = [ { cheie: „Z1”, etichetă: „Zona 1 (până la 16 km)”, cost: 25 }, { cheie: „Z2”, etichetă: „Zona 2 (16–48 km)”, cost: 50 }, { cheie: „Z3”, etichetă: „Zona 3 (48–96 km)”, cost: 80 }, { cheie: „Z4”, etichetă: „Zona 4 (96+ mile)”, cost: null }, ]; // Prețuri de bază medii (£) – derivate din lista dvs. de prețuri const BASE_PRICE = { A3: { PVC: { 651: 45, 751: 55 }, DIBOND: { 651: 65, 751: 78 } }, A2: { PVC: { 651: 62, 751: 78 }, DIBOND: { 651: 88, 751: 103 } }, A1: { PVC: { 651: 85, 751: 100 }, DIBOND: { 651: 120, 751: 138 } }, A0: { PVC: { 651: 120, 751: 145 }, DIBOND: { 651: 175, 751: 200 } }, }; // Preț de instalare (£) per dimensiune (puncte medii din tabelul dvs.) const PREȚ_INSTALARE = ​​{ A3: { INTERIOR: 25, EXTERIOR: 30 }, A2: { INTERIOR: 40, EXTERIOR: 50 }, A1: { INTERIOR: 50, EXTERIOR: 70 }, A0: { INTERIOR: 70, EXTERIOR: 90 }, }; funcție Secțiune({ titlu, copii }: { titlu: șir de caractere; copii: React.ReactNode }) { returnare (

{titlu}

copii
); } funcție Card({ copii, numeClasă = "" }: { copii: React.ReactNode; numeClasă?: șir }) { returnare (
); } exportă funcția implicită FastTurnaroundProductPage() { const [dimensiune, setDimensiune] = useState("A2"); const [material, setMaterial] = useState("DIBOND"); const [vinil, setVinil] = useState("751"); const [orientare, setOrientare] = useState("PORTRET"); const [timp_de_luare, set_timp_de_luare] = useState("EXPRESS"); const [instalare, setInstalare] = useState("EXTERIOR"); const [cantitate, setQuantity] = useState(1); const [zonă, setZone] = useState("Z1"); const [zona4Mile, setZona4Mile] = useState(0); preț constant = useMemo(() => { const base = BASE_PRICE[dimensiune][material][vinil]; const expressMult = TURNAROUND.find(t => t.key === turnaround)?.supliment ?? 0; const install = installation === "NONE" ? 0 : INSTALL_PRICE[size][installation]; fie călătorie = 0; dacă (zona === "Z1") cursa = 25; altfel dacă (zona === "Z2") cursa = 50; altfel dacă (zona === "Z3") cursa = 80; altfel dacă (zona === "Z4") { călătorie = Math.max(0, Number(zone4Miles) || 0) * 1; // 1 GBP pe milă dus-întors din totalul milelor } const unit = base * (1 + expressMult) + (instalare === "NONE" ? 0 : instalare); // Model simplu de reducere în vrac similar cu cel din documentul dvs. reducere constantă = cantitate >= 25 ? 0,25 : cantitate >= 10 ? 0,15 : cantitate >= 5 ? 0,10 : 0; subtotal constant = unitate * cantitate * (1 - reducere); const total = subtotal + transport; // transportul este per comandă, nu per unitate return { bază, instalare, expressMult, reducere, subtotal, călătorie, total, unitateDupăExpress: bază * (1 + expressMult) }; }, [dimensiune, material, vinil, termen de execuție, instalare, cantitate, zonă, zone4Miles]); returnare (
{/* Erou *

Semne personalizate – Gata în 24h

Inscripții din vinil de înaltă calitate (Oracal 651/751) aplicate pe plăci din spumă PVC sau aluminiu Dibond. Perfecte pentru utilizare în interior și exterior.

Machetă – Aluminiu Dibond 3 mm cu Oracal 751

{/* De ce să ne alegeți pe noi *
{[ [„Livrare rapidă”, „Livrare expresă 24h și a doua zi disponibilă”], [„Materiale durabile”, „Spumă PVC 3 mm sau Aluminiu Dibond 3 mm”], [„Vinil premium”, „Oracal 651 / 751 – 3–8 ani pentru exterior”], ].map(([h, t]) => (

{h}

{t}

))}
{/* Configurație + Rezumat *
{/* Configurator *
{/* Mărime *
setQuantity(Math.max(1, Number(e.target.value) || 1))} />
{zonă === "Z4" && (
setZone4Miles(Number(e.target.value) || 0)} />

1,00 GBP pe milă (se percepe o taxă pe distanța totală dus-întors)

)}
{/* Fișă rezumativă *

Cotația dumneavoastră

Preț de bază £{price.base.toFixed(2)}
{preț.expressMult > 0 && (
Suprataxă expresă {Math.round(price.expressMult*100)}%
)} {instalare !== "NONE" && (
Instalare ({installation.toLowerCase()}) £{price.install.toFixed(2)}
)}
Preț unitar £{price.unitAfterExpress + (instalare === "NONE" ? 0 : price.instalare)}
Cantitate {cantitate}
{preț.reducere > 0 && (
Reducere en-gros -{Math.round(price.discount*100)}%
)}
Subtotal £{preț.subtotal.laPreț Fix(2)}
Călătorie £{price.travel.toFixed(2)}
Total £{preț.total.toFixed(2)}

Comandați până la ora 14:00 pentru expediere a doua zi (sub rezerva aprobării graficii).

{/* Notă de subsol *

Note: Prețurile includ placaj + aplicarea vinilului. Prețurile de instalare sunt pentru montaj standard la nivelul solului, cu acces facil. Dibond 4 mm disponibil la cerere.

); }