// Icons.jsx — Lucide line icons (1.75 stroke, round caps) as inline SVG. // Matches the brand's slender single-stroke mark. No emoji, no filled glyphs. const { useState, useEffect, useRef } = React; // Catches any render error so visitors never see a blank page. class ErrorBoundary extends React.Component { constructor(props) { super(props); this.state = { hasError: false }; } static getDerivedStateFromError() { return { hasError: true }; } componentDidCatch(err, info) { if (window.console) console.error('Render error:', err, info); } render() { if (this.state.hasError) { return (

Something went wrong

Sorry, this page hit a snag. Please refresh, or email{' '} info@peacefulheartsdirect.com.

); } return this.props.children; } } const PH_ICON_PATHS = { heart: '', leaf: '', clock: '', calendar: '', message: '', shield: '', activity: '', phone: '', pin: '', mail: '', check: '', chevron: '', arrow: '', menu: '', x: '', user: '', dollar: '', star: '', sparkle: '', pill: '', video: '', refresh: '', }; function Icon({ name, size = 24, stroke = 1.75, color = 'currentColor', style = {} }) { const inner = PH_ICON_PATHS[name] || ''; return ( ${inner}` }} /> ); } Object.assign(window, { Icon, useState, useEffect, useRef, ErrorBoundary });