function AiAssistant() { const [isOpen, setIsOpen] = React.useState(false); const [lang, setLang] = React.useState(window.__LANG__ || 'el'); const [messages, setMessages] = React.useState([ { id: 1, sender: 'bot', text: (window.__LANG__ || 'el') === 'el' ? 'Γεια σου! Είμαι ο ψηφιακός βοηθός του ellaride. Επίλεξε μία από τις παρακάτω ερωτήσεις για άμεση απάντηση:' : 'Hello! I am the ellaride Assistant. Tap any of the questions below for an instant answer:' } ]); const [isTyping, setIsTyping] = React.useState(false); React.useEffect(() => { const handleLang = (e) => setLang(e.detail.lang); window.addEventListener('langchange', handleLang); return () => window.removeEventListener('langchange', handleLang); }, []); const FAQ_RESPONSES = { el: [ { id: 'post', icon: '', q: 'Πώς δημοσιεύω διαδρομή;', a: 'Η δημοσίευση διαδρομής διαρκεί μόλις 30": Ορίζεις αφετηρία, προορισμό, ώρα και ελεύθερες θέσεις. Το Open Fare™ υπολογίζει αυτόματα την τιμή/θέση βάσει καυσίμων και διοδίων. Ο οδηγός κρατάει το 100% της τιμής (0% προμήθεια).' }, { id: 'openfare', icon: '', q: 'Τι είναι το Open Fare™;', a: 'Το Open Fare™ είναι ο διαφανής αλγόριθμος υπολογισμού κόστους. Βλέπεις ακριβώς την ανάλυση καυσίμων & διοδίων πριν κάνεις κράτηση. Χωρίς κρυφές χρεώσεις ή surge pricing.' }, { id: 'commission', icon: '', q: 'Υπάρχει προμήθεια για τον οδηγό;', a: 'Όχι! Για τους οδηγούς η προμήθεια είναι 0%. Το 100% του ποσού της θέσης πηγαίνει απευθείας στον οδηγό μέσω ασφαλούς συστήματος Escrow.' }, { id: 'auth', icon: '', q: 'Πώς γίνεται η ταυτοποίηση;', a: 'Όλοι οι χρήστες (οδηγοί & επιβάτες) περνούν από υποχρεωτικό έλεγχο ελληνικής ταυτότητας/διαβατηρίου. Κάθε προφίλ διαθέτει δημόσιο Score Συνέπειας.' }, { id: 'pets', icon: '', q: 'Μπορώ να ταξιδέψω με κατοικίδιο;', a: 'Ναι! Στην αναζήτηση μπορείς να φιλτράρεις δρομολόγια με την ένδειξη «Pet-friendly» και να συνεννοηθείς με τον οδηγό μέσω του in-app chat.' }, { id: 'women', icon: '', q: 'Υπάρχει επιλογή «Μόνο για Γυναίκες»;', a: 'Ναι! Η εφαρμογή παρέχει τη δυνατότητα επιλογής διαδρομών με σήμανση «Μόνο για Γυναίκες» για επιπλέον άνεση και σιγουριά.' }, { id: 'routes', icon: '', q: 'Ποιες διαδρομές καλύπτονται;', a: 'Ξεκινάμε με την πρώτη μεγάλη υπεραστική γραμμή Αθήνα – Θεσσαλονίκη. Σύντομα θα προστεθούν Πάτρα, Ιωάννινα και Λάρισα!' }, { id: 'support', icon: '', q: 'Επικοινωνία με την Υποστήριξη', a: 'Μπορείς να επισκεφθείς το Κέντρο Υποστήριξης στο /support ή να μας στείλεις email στο info@ellaride.gr για άμεση εξυπηρέτηση.' } ], en: [ { id: 'post', icon: '', q: 'How do I post a ride?', a: 'Posting a ride takes only 30 seconds: set origin, destination, time, and available seats. Open Fare™ automatically calculates seat cost based on fuel and tolls. Drivers keep 100% of the seat price (0% commission).' }, { id: 'openfare', icon: '', q: 'What is Open Fare™?', a: 'Open Fare™ is our transparent cost calculation algorithm. You see the exact breakdown of fuel and tolls before booking. Zero hidden fees, zero surge pricing.' }, { id: 'commission', icon: '', q: 'Is there driver commission?', a: 'No! Drivers pay 0% commission. 100% of the seat price goes directly to the driver via our secure Escrow payout system.' }, { id: 'auth', icon: '', q: 'How does identity verification work?', a: 'All users (drivers & passengers) undergo mandatory ID/passport verification. Profiles feature a public Reliability Score based on real trips.' }, { id: 'pets', icon: '', q: 'Can I travel with a pet?', a: 'Yes! Filter routes with the "Pet-friendly" tag and confirm details with your driver via in-app messaging.' }, { id: 'women', icon: '', q: 'Is there a Women-Only option?', a: 'Yes! The app offers a "Women Only" filter for extra peace of mind during travel.' }, { id: 'routes', icon: '', q: 'Which routes are available?', a: 'We launch with the main intercity corridor Athens – Thessaloniki. Routes to Patras, Ioannina, and Larissa are launching soon!' }, { id: 'support', icon: '', q: 'Contact Support', a: 'Visit our Help Center at /support or send us an email at info@ellaride.gr for direct support.' } ] }; const handleSelectQuestion = (item) => { if (isTyping) return; const userMsg = { id: Date.now(), sender: 'user', text: item.q }; setMessages(prev => [...prev, userMsg]); setIsTyping(true); setTimeout(() => { const botMsg = { id: Date.now() + 1, sender: 'bot', text: item.a }; setMessages(prev => [...prev, botMsg]); setIsTyping(false); }, 380); }; const questionsList = FAQ_RESPONSES[lang] || FAQ_RESPONSES.el; return (
{/* Floating Trigger Button */} {!isOpen && ( )} {/* Chat Window Panel */} {isOpen && (
{/* Header */}
er

ellaride Assistant

{lang === 'el' ? 'Άμεση βοήθεια με ένα tap' : 'Instant tap answers'}
{/* Messages Feed */}
{messages.map((m) => (
{m.text}
))} {isTyping && (
{lang === 'el' ? 'Προετοιμασία απάντησης...' : 'Preparing answer...'}
)}
{/* Ready Tap Questions Selection (Sleek UI, Custom SVG Icons, No Emojis) */}
{lang === 'el' ? 'ΕΠΙΛΕΞΕ ΕΡΩΤΗΣΗ:' : 'TAP A QUESTION:'} 8 θέματα
{questionsList.map((item) => ( ))}
{/* Footer Notice */}
Επιλογή ερωτήσεων μόνο με ένα tap · Χωρίς πληκτρολόγηση
)}
); } window.AiAssistant = AiAssistant;