/* ============================================================
Data layer — Evans Equipment Web Store
Exposed on window for cross-script access.
============================================================ */
// Named colors used by swatches & garment tinting
const COLORS = {
silver: '#c7cbcb', maroon: '#7a2f3a', lightblue: '#9fc0dd', black: '#23282a',
forest: '#2f5d4f', charcoal: '#454b4d', navy: '#26344c', white: '#f3f5f4',
steel: '#7d8a8c', royal: '#2f5fa6', stone: '#b9b3a3', tan: '#c9bd9e',
teal: '#3f8f8a', cream: '#e9e3d4', brown: '#5e4b3a', sage: '#8a9a86',
hivis: '#d6e03a', orange: '#d8782f', khaki: '#b3a578', red: '#9a3326',
slate: '#5a6b72'
};
// Garment silhouettes (tintable). Each returns an SVG string given a fill + accent.
function garmentSVG(kind, fill) {
const stroke = 'rgba(0,0,0,.16)';
const shade = 'rgba(0,0,0,.10)';
if (kind === 'jacket') {
return ``;
}
if (kind === 'cap') {
return ``;
}
if (kind === 'tee') {
return ``;
}
// default: polo / collared shirt
return ``;
}
const LOCATIONS = [
{ id: 'hq', name: 'Lafayette HQ', addr: '212 N Luke St, Lafayette, LA 70506' },
{ id: 'yard', name: 'Broussard Yard', addr: '418 Albertson Pkwy, Broussard, LA 70518' },
{ id: 'shop', name: 'New Iberia Shop', addr: '2901 Hwy 90 E, New Iberia, LA 70560' },
];
// ---- Products ----
let _id = 0;
const P = (o) => ({ id: 'p' + (++_id), ...o });
const PRODUCTS = [
// ---------- MEN'S ----------
P({ cat:'mens', kind:'polo', name:"Port Authority Dry Zone UV Micro-Mesh Polo", brand:'Port Authority', sku:'K110', price:36,
colors:['silver','maroon','lightblue','black','forest','charcoal','navy','white'],
desc:"Snag-resistant micro-mesh polo with moisture-wicking UV protection. Embroidered Evans logo, left chest." }),
P({ cat:'mens', kind:'polo', name:"Long Sleeve Nailhead Easy Care Shirt", brand:'Port Authority', sku:'W816', price:48,
colors:['black','royal','steel','navy','white'],
desc:"Wrinkle-resistant nailhead weave button-down. A professional staple that holds up on long days." }),
P({ cat:'mens', kind:'jacket', name:"Hybrid Soft Shell Jacket", brand:'Port Authority', sku:'J787', price:78,
colors:['black','charcoal'],
desc:"Wind- and water-resistant soft shell with quilted body panels for cold mornings in the field." }),
P({ cat:'mens', kind:'polo', name:"Eddie Bauer Short Sleeve Performance Fishing Shirt", brand:'Eddie Bauer', sku:'EB602', price:52,
colors:['tan','steel','white'],
desc:"Vented, quick-dry performance shirt with roll-up sleeve tabs. UPF protection built in." }),
P({ cat:'mens', kind:'jacket', name:"Core Soft Shell Vest", brand:'Port Authority', sku:'J325', price:45,
colors:['black','charcoal','navy'],
desc:"Lightweight layering vest with zippered pockets. Embroidery-ready left chest." }),
P({ cat:'mens', kind:'tee', name:"Force Cotton Delmont Short Sleeve Tee", brand:'Carhartt', sku:'CT104616', price:30,
colors:['black','navy','charcoal','stone'],
desc:"Sweat-wicking, fast-drying everyday tee with the Evans logo screen-printed left chest." }),
// ---------- WOMEN'S ----------
P({ cat:'womens', kind:'polo', name:"MERCER+METTLE Stretch Crepe 3/4-Sleeve Blouse", brand:'Mercer+Mettle', sku:'MM2011', price:44,
colors:['black','navy','brown','cream','charcoal'],
desc:"Refined stretch-crepe blouse with a relaxed drape. Office-ready and embroidery-friendly." }),
P({ cat:'womens', kind:'polo', name:"OGIO Ladies Regain Polo", brand:'OGIO', sku:'LOG170', price:58,
colors:['teal','navy','steel','white'],
desc:"Performance knit polo with a tailored fit and four-way stretch. Embroidered Evans logo." }),
P({ cat:'womens', kind:'polo', name:"Women's Long Sleeve Nailhead Easy Care Shirt", brand:'Port Authority', sku:'LW816', price:48,
colors:['black','royal','white'],
desc:"The easy-care nailhead button-down, cut for a women's fit. Wrinkle-resistant all day." }),
P({ cat:'womens', kind:'jacket', name:"Ladies Value Fleece Jacket", brand:'Port Authority', sku:'L217', price:42,
colors:['royal','black','steel','forest','red','navy','white'],
desc:"Soft anti-pill fleece full-zip with on-seam pockets. A warm, affordable layer." }),
P({ cat:'womens', kind:'tee', name:"Tri-Blend Wicking Draft Tee", brand:'Sport-Tek', sku:'LST405', price:28,
colors:['black','navy','charcoal','teal'],
desc:"Heathered tri-blend tee with a soft hand and moisture management. Screen-printed logo." }),
// ---------- TECHNICIANS / WELDERS ----------
P({ cat:'tech', kind:'polo', name:"Bulwark FR Long Sleeve Work Shirt", brand:'Bulwark FR', sku:'SLU2', price:64, fr:true,
colors:['navy','khaki','steel'],
desc:"Flame-resistant button-down rated for arc and flash hazards. Meets NFPA 2112. Two chest pockets." }),
P({ cat:'tech', kind:'tee', name:"Flame-Resistant Force Cotton Tee", brand:'Carhartt FR', sku:'102905', price:42, fr:true,
colors:['navy','charcoal'],
desc:"FR knit tee with FastDry moisture wicking. Comfortable enough to wear all shift under a jacket." }),
P({ cat:'tech', kind:'tee', name:"Hi-Vis Reflective Safety Tee — Class 2", brand:'CornerStone', sku:'CS408', price:28,
colors:['hivis','orange'],
desc:"ANSI/ISEA 107 Class 2 high-visibility tee with reflective taping. Logo heat-pressed left chest." }),
P({ cat:'tech', kind:'jacket', name:"Insulated FR Welding Jacket", brand:'Bulwark FR', sku:'JEW2', price:96, fr:true,
colors:['black'],
desc:"Heavyweight flame-resistant insulated jacket built for welders. Storm flap and adjustable cuffs." }),
P({ cat:'tech', kind:'jacket', name:"FR Cargo Work Pant", brand:'Wrangler FR', sku:'FR3W020', price:58, fr:true,
colors:['khaki','navy'],
desc:"Durable flame-resistant cargo pant with reinforced seams. Built for the shop and the field." }),
P({ cat:'tech', kind:'cap', name:"Structured Logo Work Cap", brand:'Richardson', sku:'112', price:18,
colors:['black','charcoal','navy'],
desc:"Mid-profile trucker cap with embroidered Evans logo and snapback closure. One size." }),
];
const SIZES = ['XS','S','M','L','XL','2XL','3XL'];
const CATEGORIES = [
{ id:'mens', label:"Men's Apparel", short:"Men's", kind:'polo', blurb:'Polos, button-downs, jackets & tees' },
{ id:'womens', label:"Women's Apparel", short:"Women's", kind:'polo', blurb:'Blouses, polos, fleece & tees' },
{ id:'tech', label:"Technicians & Welders",short:"Technicians", kind:'jacket', blurb:'FR-rated, hi-vis & shop gear' },
];
// ---- Current signed-in employee ----
const CURRENT_USER = {
name: 'Marcus Hebert', first: 'Marcus', email: 'm.hebert@evansequip.com',
role: 'Field Technician', categories: ['mens','tech'], // role-based access
pointsTotal: 300, pointsUsed: 36, resetDate: 'Jan 1, 2027', empId: 'EV-1042',
};
// ---- Order history (for account page) ----
const ORDER_HISTORY = [
{ id:'EV-20461', date:'May 22, 2026', items:2, points:84, status:'Delivered' },
{ id:'EV-20388', date:'Apr 03, 2026', items:1, points:36, status:'Delivered' },
{ id:'EV-20120', date:'Feb 14, 2026', items:1, points:48, status:'Delivered' },
];
// ---- Admin data ----
const ADMIN_EMPLOYEES = [
{ name:'Marcus Hebert', email:'m.hebert@evansequip.com', role:'Employee', dept:'Field Tech', used:36, total:300, status:'Active' },
{ name:'Olivia Trahan', email:'o.trahan@evansequip.com', role:'HR Admin', dept:'HR', used:0, total:300, status:'Active' },
{ name:'Brent Guidry', email:'b.guidry@evansequip.com', role:'Employee', dept:'Welding', used:312, total:300, status:'Active' },
{ name:'Dana Comeaux', email:'d.comeaux@evansequip.com', role:'Employee', dept:'Office', used:150, total:300, status:'Active' },
{ name:'Travis Landry', email:'t.landry@evansequip.com', role:'Employee', dept:'Field Tech', used:268, total:300, status:'Active' },
{ name:'Renee Broussard',email:'r.broussard@evansequip.com',role:'Employee',dept:'Office', used:0, total:300, status:'Invited' },
{ name:'Cole Theriot', email:'c.theriot@evansequip.com', role:'Employee', dept:'Welding', used:96, total:300, status:'Active' },
{ name:'Jacob Romero', email:'j.romero@evansequip.com', role:'Employee', dept:'Field Tech', used:340, total:300, status:'Active' },
];
const ADMIN_ORDERS = [
{ id:'EV-20488', emp:'Brent Guidry', date:'Jun 08, 2026', items:3, points:138, over:true },
{ id:'EV-20487', emp:'Travis Landry', date:'Jun 08, 2026', items:1, points:42, over:false },
{ id:'EV-20485', emp:'Jacob Romero', date:'Jun 07, 2026', items:2, points:130, over:true },
{ id:'EV-20482', emp:'Dana Comeaux', date:'Jun 06, 2026', items:1, points:58, over:false },
{ id:'EV-20461', emp:'Marcus Hebert', date:'May 22, 2026', items:2, points:84, over:false },
];
Object.assign(window, {
COLORS, garmentSVG, LOCATIONS, PRODUCTS, SIZES, CATEGORIES,
CURRENT_USER, ORDER_HISTORY, ADMIN_EMPLOYEES, ADMIN_ORDERS,
});