// Shared hauler directory. Used by home "featured", browse grid, and
// the detail page (via URL hash `#<id>`).

// ─────────────────────────────────────────────────────────────
// HAULERS — pre-launch empty state.
// Add real hauler objects to this array as you onboard them.
// Mock data preserved in MOCK_HAULERS below for reference.
// ─────────────────────────────────────────────────────────────
const HAULERS = [
  {
    id: 'bins-4-less',
    name: 'Bins 4 Less',
    short: 'B4L',
    loc: 'La Puente, CA',
    // 50-mile dispatch radius from ZIP 91744 — covers most of LA County + Inland Empire.
    areas: ['La Puente', 'City of Industry', 'West Covina', 'Baldwin Park', 'El Monte',
      'Rowland Heights', 'Whittier', 'Pomona', 'Hacienda Heights', 'Covina',
      'Glendora', 'San Dimas', 'Diamond Bar', 'Walnut'],
    // Container Connect-native reviews — 0 until customers leave reviews on our platform.
    rating: 0, reviews: 0,
    // Google Business Profile reviews — populated manually from the live Google
    // Maps listing. Refresh quarterly. When googleReviewCount > 0, the UI shows
    // these stars/count instead of the "New partner" empty state.
    // TODO: replace placeholders below with real numbers from the live listing.
    googleRating: 5.0,
    googleReviewCount: 281,
    googleMapsUrl: 'https://maps.app.goo.gl/vnL2zcZsiXfc7fMq7',
    // Topic chips Google extracts from reviews. Manually curated — skipped
    // brand-name and generic chips ('dumpster rental'), kept the five that
    // actually differentiate this hauler. Refresh quarterly with reviews.
    googleTopics: [
      { label: 'Affordability',       count: 12 },
      { label: 'Flexible scheduling', count: 5 },
      { label: 'Helpful employees',   count: 4 },
      { label: 'Easy drop off',       count: 3 },
      { label: 'Clean bins',          count: 2 },
    ],
    // Sample reviews — picked for diversity (home cleanout, construction,
    // CX/team, repeat contractor, commercial last-minute). Refresh quarterly.
    // Full names used with hauler's permission.
    googleReviews: [
      { author: 'Mike Walsh', rating: 5, date: 'a month ago',
        text: 'So glad we used Bins 4 Less when we did our "get rid of junk." They were super friendly and easy to talk with. Everything they described was spot on. Bin was clean and the size/price was perfect. Highly recommend Bins 4 Less.' },
      { author: 'Anthony Thurston', rating: 5, date: 'a month ago',
        text: 'Great price. Great service. It showed up on time. They picked it up on time. I can\'t find a single thing to say that isn\'t positive. Construction projects are stressful — this not being stressful was a relief. I highly recommend them.' },
      { author: 'Angelina Shin', rating: 5, date: '3 months ago',
        text: 'Angelica was a rockstar! She and her team were extremely professional and communicated at the highest level. The value, customer service, and overall experience were outstanding.' },
      { author: 'William Miralles II', rating: 5, date: '4 months ago',
        text: 'I\'ve used Bins 4 Less many times for various construction/remodel projects and have been satisfied every time. They have a wide selection of bin sizes as well as reasonable pricing. Service is great as well.' },
      { author: 'Melinda Oschmann', rating: 5, date: '2 months ago',
        text: 'I called Bins 4 Less as a late solution, and they were very easy to work with — a lower price and very quick turnaround. We needed 2 lowboys back to back. I recommend them.' },
    ],
    priceFrom: 320, // Real starting rate from Ashley's 2026 Dump Tracker (3yd, 0-5 mi, light material).
    verified: true, top: true,
    established: 2012,
    grad: 'linear-gradient(135deg, #2a5840 0%, #1a3a2a 100%)',
    badge: '#2a5840',
    // Real company logo — drop the file at this path. PNG with transparent
    // background works best (SVG also fine). Falls back to the gradient
    // + "B4L" initials tile if the file is missing.
    logoUrl: '/images/Haulers/bins-4-less.png',
    description: 'Family-owned small business specializing in temporary dumpster rentals and waste hauling for contractors, residential, and commercial clients. Operating in LA County since 2012.',
    // Pricing per size — base price for light materials (Household Trash,
    // Yard Debris, Metal, etc.) at 0–5 mile delivery. Heavy materials add
    // $20 via materialFees below; further distances add ~$4/mile after the
    // first 5 free miles via freeMiles + pricePerMileOver. Source: Ashley's
    // 2026 Dump Tracker (April 2026).
    sizes: [
      // Roll-off dumpsters — general waste, mixed loads, household trash,
      // yard debris, C&D debris, roofing (30/40 only).
      // ── Inventory priority ──
      // Optional `priority` field surfaces a small operational badge on
      // the result card + the Company page size grid. Values must be
      // tied to a real customer benefit (faster delivery / more units),
      // never just hauler interest. Cap at 2 prioritized sizes per hauler.
      // Allowed values: 'available_today' | 'fast_delivery' | 'most_available'.
      { size: '3 YD³',  price: 320, description: 'Compact · office or apartment cleanouts' },
      { size: '10 YD³', price: 520, description: 'Small cleanouts, garages, single rooms' },
      { size: '15 YD³', price: 620, description: 'Mid-size remodels, larger garages',
        priority: 'available_today' },
      { size: '20 YD³', price: 720, description: 'Full remodels, large projects' },
      { size: '30 YD³', price: 820, description: 'Full-home cleanouts, additions',
        priority: 'fast_delivery' },
      { size: '40 YD³', price: 920, description: 'Commercial, new construction' },
      // Lowboys — separate product line for heavy materials only. Same
      // yardage label as dumpsters where they overlap (e.g. 10yd) — distinct
      // by the "Lowboy" suffix. Ashley flat-prices lowboys regardless of
      // material; ranges below are 0–5 mi, +$20/band like dumpsters.
      { size: '6 YD³ Lowboy',  price: 520, description: 'Concrete, dirt, asphalt, brick only' },
      { size: '10 YD³ Lowboy', price: 620, description: 'Concrete, dirt, asphalt, brick only' },
      { size: '12 YD³ Lowboy', price: 720, description: 'Concrete, dirt, asphalt, brick only' },
    ],
    tags: ['Family-owned', 'Same-day delivery', 'Residential', 'Commercial', 'Contractors'],
    // Contact info for Make.com lead routing — NOT shown publicly
    routingEmail: 'admin@bins4less.com',
    routingPhone: '+16269649453',
    contactName: 'Ashley Rodriguez',
    contactRole: 'Operations Manager',
    fleetSize: 121,
    dispatchZip: '91744',
    deliveryRadiusMiles: 50,

    // ── Pricing & logistics (used by quote results page) ──
    // Pre-computed coordinates for ZIP 91744 (La Puente, CA) — saves
    // a geocoding call. Update if dispatch changes.
    lat: 34.0394,
    lng: -117.9489,
    // Distance pricing — linear approximation of Ashley's banded price sheet.
    // Real bands: $0 surcharge 0-5mi, +$20 each band up to 20mi, then ~$40/band
    // after. Linear fit ($4/mi after 5 free miles) tracks her table within ~$15
    // across the typical 5-50 mile range.
    freeMiles: 5,
    pricePerMileOver: 4,
    // Surcharges by project/material type — Ashley charges $0 for light loads
    // (Household Trash, Yard Debris, General Trash) and +$20 for heavy /
    // specialty (Mixed Load, C&D Debris, Wood, Roofing). Keys map to wizard
    // project options via PROJECT_TO_MATERIAL in components/Quote.jsx.
    materialFees: {
      home: 0,           // → Household Trash, no surcharge
      construction: 20,  // → C&D Debris, +$20
      roofing: 20,       // → Roofing, +$20 (offered in 30/40yd dumpsters; smaller sizes priced as Mixed Load)
      yard: 0,           // → Yard Debris, no surcharge
      commercial: 0,
      other: 20,         // → Mixed Load (catch-all), +$20
    },
    // Overweight fee — charged per ton over the included weight limit on every
    // size. Shown to customers on the result card so there are no surprises.
    overweightFee: 145,
    // Standard rental period. Ashley's quote: "if it's not restricted, it's 7 days."
    rentalDays: 7,
    // On/off switch — flip to false to pause new leads without removing the listing.
    available: true,
    // Typical response window (hours) — shown to customer on quote results page.
    responseTimeHours: 1,

    // ── Inventory & availability (Phase 1: manually managed) ──
    // Once we have multiple haulers + real volume, this moves to a self-serve
    // dashboard. Until then Logan updates these fields when the hauler texts.
    //
    // Lead-time context shown as a quiet line on each result card so customers
    // know what to expect before they pick.
    inventoryNote: '7-day rental · 24–48 hour delivery typical',
    // Dates the hauler is fully booked / can't deliver, as 'YYYY-MM-DD'.
    // Customer requesting any of these dates → hauler excluded from results.
    blackoutDates: [],
    // Earliest date the hauler can put a container on the ground. null = today.
    // If the customer's requested date is BEFORE this, hauler still appears
    // but with an "Earliest available: X" note so customer can choose to wait.
    nextAvailableDate: null,
  },
];

const MOCK_HAULERS = [
  {
    id: 'ironside',
    name: 'Ironside Haul Co.',
    short: 'Ironside',
    loc: 'Oakland, CA',
    areas: ['Oakland', 'Berkeley', 'Emeryville', 'Alameda', 'Piedmont'],
    rating: 4.9, reviews: 312,
    priceFrom: 295,
    verified: true, top: true,
    established: 1998,
    grad: 'linear-gradient(135deg, #2a5840 0%, #1a3a2a 100%)',
    badge: '#2a5840',
    description: 'Family-run since 1998. 10yd, 20yd, and 30yd roll-offs with same-day delivery across the East Bay.',
    sizes: [
      { size: '10 YD³', price: 295, description: 'Small cleanouts, single rooms' },
      { size: '20 YD³', price: 395, description: 'Kitchen/bath remodels, garages' },
      { size: '30 YD³', price: 495, description: 'Full-home cleanout, roofing' },
      { size: '40 YD³', price: 595, description: 'New construction, large demo' },
    ],
    tags: ['Same-day delivery', 'Residential', 'Construction', 'Concrete OK'],
  },
  {
    id: 'redline',
    name: 'Redline Roll-Off',
    short: 'Redline',
    loc: 'San Jose, CA',
    areas: ['San Jose', 'Santa Clara', 'Milpitas', 'Cupertino', 'Sunnyvale'],
    rating: 4.7, reviews: 184,
    priceFrom: 325,
    verified: true,
    established: 2009,
    grad: 'linear-gradient(135deg, #a04a2a 0%, #5a2618 100%)',
    badge: '#a04a2a',
    description: 'South Bay specialists. Heavy construction debris, concrete, and mixed commercial loads.',
    sizes: [
      { size: '15 YD³', price: 325, description: 'Mid-size cleanouts' },
      { size: '20 YD³', price: 395, description: 'Remodels, small demo' },
      { size: '30 YD³', price: 525, description: 'Large construction' },
    ],
    tags: ['Commercial', 'Concrete OK', 'Heavy debris', 'Demolition'],
  },
  {
    id: 'northgate',
    name: 'Northgate Waste',
    short: 'Northgate',
    loc: 'Berkeley, CA',
    areas: ['Berkeley', 'Albany', 'El Cerrito', 'Richmond', 'Kensington'],
    rating: 4.8, reviews: 241,
    priceFrom: 280,
    verified: true,
    established: 2003,
    grad: 'linear-gradient(135deg, #1f4438 0%, #0f2a20 100%)',
    badge: '#1f4438',
    description: 'Residential cleanouts and small remodels. Quickest quote turnaround in the East Bay.',
    sizes: [
      { size: '10 YD³', price: 280, description: 'Yard waste, attic cleanouts' },
      { size: '15 YD³', price: 335, description: 'Room remodels' },
      { size: '20 YD³', price: 395, description: 'Full garage cleanouts' },
    ],
    tags: ['Residential', 'Yard waste', 'Fast turnaround', 'Eco-friendly'],
  },
  {
    id: 'coastline',
    name: 'Coastline Disposal',
    short: 'Coastline',
    loc: 'Alameda, CA',
    areas: ['Alameda', 'Oakland', 'San Leandro', 'Hayward'],
    rating: 4.6, reviews: 98,
    priceFrom: 310,
    verified: true,
    established: 2014,
    grad: 'linear-gradient(135deg, #2d5a6e 0%, #152a35 100%)',
    badge: '#2d5a6e',
    description: 'Waterfront and dock jobs. Specializes in heavy fill, demolition debris, and marine cleanouts.',
    sizes: [
      { size: '20 YD³', price: 310, description: 'Standard demo' },
      { size: '30 YD³', price: 425, description: 'Heavy fill' },
      { size: '40 YD³', price: 525, description: 'Marine / industrial' },
    ],
    tags: ['Heavy fill', 'Marine', 'Industrial', 'Demolition'],
  },
  {
    id: 'oakvale',
    name: 'Oakvale Containers',
    short: 'Oakvale',
    loc: 'Hayward, CA',
    areas: ['Hayward', 'Union City', 'Fremont', 'Castro Valley'],
    rating: 4.5, reviews: 156,
    priceFrom: 265,
    verified: false,
    established: 2016,
    grad: 'linear-gradient(135deg, #8a6a2e 0%, #3a2e15 100%)',
    badge: '#8a6a2e',
    description: 'Budget-friendly cleanouts. Best rates for short 1–3 day rentals in the South Bay.',
    sizes: [
      { size: '10 YD³', price: 265, description: 'Quick cleanouts' },
      { size: '20 YD³', price: 355, description: 'Weekend projects' },
    ],
    tags: ['Budget', 'Short-term', 'Residential'],
  },
  {
    id: 'summit',
    name: 'Summit Roll-Off',
    short: 'Summit',
    loc: 'Fremont, CA',
    areas: ['Fremont', 'Newark', 'Milpitas', 'Union City', 'San Jose'],
    rating: 4.9, reviews: 402,
    priceFrom: 345,
    verified: true, top: true,
    established: 1994,
    grad: 'linear-gradient(135deg, #1a3d42 0%, #0a2025 100%)',
    badge: '#1a3d42',
    description: 'Premium service, flagship-tier operators. Used by the region’s top contractors for 30+ years.',
    sizes: [
      { size: '10 YD³', price: 345, description: 'Premium residential' },
      { size: '20 YD³', price: 445, description: 'Full-service remodel' },
      { size: '30 YD³', price: 545, description: 'Major construction' },
      { size: '40 YD³', price: 645, description: 'Commercial flagship' },
    ],
    tags: ['Premium', 'Contractor-grade', 'Same-day', 'Concrete OK', '30+ years'],
  },
  {
    id: 'baybridge',
    name: 'BayBridge Hauling',
    short: 'BayBridge',
    loc: 'San Francisco, CA',
    areas: ['San Francisco', 'Daly City', 'South SF', 'Brisbane'],
    rating: 4.7, reviews: 227,
    priceFrom: 365,
    verified: true,
    established: 2011,
    grad: 'linear-gradient(135deg, #3a4a7a 0%, #1a2240 100%)',
    badge: '#3a4a7a',
    description: 'SF specialists. Navigates tight city streets, permits, and HOA requirements with ease.',
    sizes: [
      { size: '10 YD³', price: 365, description: 'Compact for city streets' },
      { size: '15 YD³', price: 425, description: 'Apartment cleanouts' },
      { size: '20 YD³', price: 525, description: 'Full condo remodel' },
    ],
    tags: ['Urban', 'Permits included', 'HOA-friendly', 'Residential'],
  },
  {
    id: 'metroline',
    name: 'Metroline Waste',
    short: 'Metroline',
    loc: 'Richmond, CA',
    areas: ['Richmond', 'San Pablo', 'El Sobrante', 'Pinole'],
    rating: 4.6, reviews: 134,
    priceFrom: 275,
    verified: true,
    established: 2007,
    grad: 'linear-gradient(135deg, #6a3a2a 0%, #2a1815 100%)',
    badge: '#6a3a2a',
    description: 'Full-service waste management. Mixed loads, recycling separation, and LEED reporting.',
    sizes: [
      { size: '15 YD³', price: 275, description: 'Standard mixed' },
      { size: '20 YD³', price: 345, description: 'Recycling separation' },
      { size: '30 YD³', price: 445, description: 'Commercial / LEED' },
    ],
    tags: ['LEED reports', 'Recycling', 'Commercial', 'Eco-friendly'],
  },
];

// Container sizes catalog (for home page).
// "from" prices reflect real baseline rates (currently keyed off Bins 4 Less'
// 2026 Dump Tracker — light material, 0–5 mile delivery, 7-day rental).
// Will become a true marketplace median once 3+ haulers are onboarded.
const DUMPSTER_SIZES = [
  {
    yd: '3',
    label: 'Yard',
    tagline: 'Compact front-load',
    projects: ['Office trash', 'Small apartment', 'Coffee shop'],
    capacity: '~1 pickup load',
    from: 320,
  },
  {
    yd: '6',
    label: 'Yard',
    tagline: 'Lowboy · heavy materials',
    projects: ['Concrete', 'Dirt', 'Asphalt'],
    capacity: '~2 pickup loads',
    from: 520,
  },
  {
    yd: '10',
    label: 'Yard',
    tagline: 'Small cleanouts',
    projects: ['Small bathroom', 'Single room', 'Yard waste'],
    capacity: '~3 pickup loads',
    from: 520,
  },
  {
    yd: '12',
    label: 'Yard',
    tagline: 'Lowboy · heavy materials',
    projects: ['Concrete', 'Dirt', 'Asphalt'],
    capacity: '~3.5 pickup loads',
    from: 720,
  },
  {
    yd: '15',
    label: 'Yard',
    tagline: 'Mid-size jobs',
    projects: ['Kitchen remodel', 'Garage cleanout', 'Small roof'],
    capacity: '~4 pickup loads',
    from: 620,
  },
  {
    yd: '20',
    label: 'Yard',
    tagline: 'Most popular',
    projects: ['Full remodel', 'Large roof', 'Deck removal'],
    capacity: '~6 pickup loads',
    from: 720,
    popular: true,
  },
  {
    yd: '40',
    label: 'Yard',
    tagline: 'Large projects',
    projects: ['Full-home cleanout', 'New construction', 'Major demo'],
    capacity: '~12 pickup loads',
    from: 920,
  },
];

const REVIEWS = {
  ironside: [
    { author: 'Marcus D.', when: 'Apr 2026', rating: 5, body: 'Drop-off within 4 hours of booking. Driver called ahead and repositioned the container exactly where I asked. Will book again.' },
    { author: 'Sarah K.', when: 'Mar 2026', rating: 5, body: 'Third job I’ve done with Ironside. Consistent pricing, no surprise fees, pickup on the day promised. This is what the category should feel like.' },
    { author: 'Raj P.', when: 'Feb 2026', rating: 4, body: 'Good service overall. Delivery was an hour past the window but they called to let me know. Clean container, solid crew.' },
    { author: 'Jenna M.', when: 'Jan 2026', rating: 5, body: 'Booked on a Tuesday night, container arrived Wednesday morning. Unreal turnaround. Recommended.' },
  ],
  _default: [
    { author: 'Carlos V.', when: 'Mar 2026', rating: 5, body: 'Fair price, professional crew, exactly what they said they’d deliver.' },
    { author: 'Amelia T.', when: 'Feb 2026', rating: 5, body: 'Third booking this year. They know what they’re doing and the quote process takes minutes.' },
    { author: 'Devon R.', when: 'Feb 2026', rating: 4, body: 'Solid experience. Container came on time and pickup was easy to reschedule when I needed another day.' },
  ],
};

// City landing pages — directory of all live SEO-optimized city pages.
// Used by:
//   - Home page "Service areas" section (HomeServiceAreas)
//   - Future sitemap.xml generation
//   - Footer service-areas dropdown (eventually)
// Add new entries when you ship more city pages under /dumpster-rental/[slug].
const CITY_PAGES = [
  {
    slug: 'la-puente-ca',
    name: 'La Puente',
    state: 'CA',
    summary: 'Same-day roll-off delivery across La Puente and the eastern San Gabriel Valley.',
    url: '/dumpster-rental/la-puente-ca',
    primaryHaulerId: 'bins-4-less',
  },
];

Object.assign(window, { HAULERS, DUMPSTER_SIZES, REVIEWS, CITY_PAGES });
