class Component extends DCLogic {
constructor() {
super();
this.state = { selectedItem: null };
}
renderVals() {
const rawServices = [
['🚶', 'Dog Walking', 'Leash walks based on your dog\'s pace — from a quick bathroom break to a full exercise walk.', ['15 min', '30 min', '45 min', '60 min'], 'Our dog walking service provides your pup with the physical exercise and mental stimulation they crave. We adjust our pace to match your dog, ensuring they get the perfect workout whether they are a high-energy breed or a senior dog needing a leisurely stroll.'],
['🍽️', 'Feeding Visits', 'Meal prep, fresh water, bathroom break, and a comfort check before we leave.', ['Meal prep', 'Medication', 'Photo update'], 'We ensure your dog\'s dietary routine is strictly followed. This includes preparing meals exactly to your specifications, washing bowls, refreshing water, and giving them time for a bathroom break afterward.'],
['⏱️', 'Hourly Dog Sitting', 'Dedicated supervision for meetings, appointments, events, or moving days.', ['Flexible hours', 'Companionship'], 'Need to step out for a few hours? We\'ll stay by your dog\'s side. This is perfect for dogs with separation anxiety, or when you have workmen in the house and need someone to supervise your pet.'],
['🎾', 'Playtime Visits', 'Fetch, tug, puzzle toys, and enrichment matched to your dog\'s energy.', ['Fetch', 'Enrichment', 'Backyard play'], 'Burn off that extra energy! We bring interactive toys and engage your dog in fetch, tug-of-war, or mentally stimulating puzzle games in your backyard or living room.'],
['🚪', 'Bathroom Breaks', 'Quick daytime relief — ideal for puppies, seniors, and workday gaps.', ['Puppies', 'Seniors', 'Quick visit'], 'A short and sweet visit just to let them out. Ideal for young puppies who are still potty training, or senior dogs who can\'t hold it as long as they used to.'],
['🌙', 'Overnight Dog Care', 'Evening and morning routines, feeding, walks, and overnight supervision.', ['Evening + AM', 'Medication'], 'We stay in your home overnight, providing your dog with a reassuring presence. We handle the evening feeding and walk, snuggle time before bed, and the morning routine.'],
['🧳', 'Vacation Dog Care', 'Overnights, feeding, walks, and home checks customized to your travel plans.', ['Home checks', 'Mail pickup'], 'Leave home with total peace of mind. We handle multiple visits per day, feeding, walks, and we also bring in the mail, water plants, and alternate lights to give your home a lived-in look.'],
['🐶', 'Puppy Care', 'Frequent meals, bathroom breaks, crate breaks, and playtime for growing pups.', ['Frequent visits', 'Crate breaks'], 'Puppies need consistency! We support your potty-training and crate-training efforts with frequent, gentle visits focused on positive reinforcement and safe socialization.'],
['🦴', 'Senior Dog Care', 'Gentle, slower-paced visits built around comfort, mobility, and medication.', ['Gentle walks', 'Mobility support'], 'Older dogs need a little extra patience and love. We provide slow, gentle walks, assistance with mobility, and strict adherence to medication schedules.'],
['💊', 'Medication Support', 'Routine, non-emergency medication with clear written instructions.', ['Oral', 'Topical', 'Supplements'], 'We are experienced in administering oral medications, topical treatments, and supplements. We ensure your dog receives their meds safely and exactly on time.'],
['🚗', 'Pet Transportation', 'Local rides for vet visits, grooming, training, daycare, and boarding.', ['Vet visits', 'Grooming'], 'We provide safe, reliable rides for your dog in a climate-controlled vehicle. We can handle vet appointments, grooming drop-offs, or trips to doggy daycare.'],
['💍', 'Wedding & Event Care', 'Supervision, transportation, and handling so your dog can join the big day.', ['On-site handling', 'Transportation'], 'Include your best friend in your special day without the stress! We handle transportation, on-site supervision, bathroom breaks, and we\'ll ensure they are camera-ready for photos.'],
];
const rawPackages = [
['Quick Stop', 'A short bathroom break, feeding, medication, or wellness check.', 'Perfect for a midday check-in. We handle a quick potty break, refresh water, and give them a quick dose of affection before you get home.'],
['Walk and Wag', 'A scheduled walk with water, bathroom activity, and photos.', 'Our most popular option. A full walk tailored to your dog’s energy level, complete with fresh water and a photo update.'],
['Stay and Play', 'Companionship, exercise, and enrichment in one longer visit.', 'For dogs that need extra attention. A longer visit dedicated to active playtime, cuddling, and ensuring they are thoroughly tuckered out.'],
['Workday Support', 'Recurring daytime walks, feeding, or bathroom breaks.', 'Set it and forget it. A recurring schedule of visits designed to break up your dog’s long day while you are at the office.'],
['Puppy Support', 'Multiple visits for feeding, crate time, and play.', 'A customized schedule of frequent, short visits to help your new puppy establish a solid routine and avoid accidents.'],
['Senior Comfort', 'Gentle care for mobility, feeding, and companionship.', 'A specialized care package for older pets focusing on gentle mobility, comfort checks, and any necessary medical support.'],
['Overnight Comfort', 'Evening/morning routines with overnight supervision.', 'Complete peace of mind. We take over the night shift in your home so your dog can sleep in their own bed.'],
['Vacation Peace-of-Mind', 'Overnights, walks, feeding, and daily updates.', 'Comprehensive care while you are away, combining multiple daily visits or overnight stays with basic house-sitting duties.'],
];
const services = rawServices.map(([icon, title, desc, tags, extended]) => ({
icon, title, desc, tags, extended,
openModal: () => this.setState({ selectedItem: { icon, title, extended } })
}));
const packages = rawPackages.map(([title, desc, extended]) => ({
icon: '📦', title, desc, extended,
openModal: () => this.setState({ selectedItem: { icon: '📦', title, extended } })
}));
return {
services,
packages,
selectedItem: this.state.selectedItem,
isModalOpen: !!this.state.selectedItem,
closeModal: () => this.setState({ selectedItem: null })
};
}
}