'use client' import { useEffect, useCallback } from 'react' interface TransakWidgetProps { widgetUrl: string onClose: () => void onComplete?: (orderId: string) => void } export default function TransakWidget({ widgetUrl, onClose, onComplete }: TransakWidgetProps) { const handleMessage = useCallback( (event: MessageEvent) => { // Transak sends postMessage events from its iframe const data = event.data if (!data || typeof data !== 'object') return switch (data.event_id || data.eventName) { case 'TRANSAK_ORDER_SUCCESSFUL': { const orderId = data.data?.id || data.data?.orderId || 'unknown' onComplete?.(orderId) onClose() break } case 'TRANSAK_ORDER_FAILED': { // Brief display then close — the parent can show a status message onClose() break } case 'TRANSAK_WIDGET_CLOSE': { onClose() break } } }, [onClose, onComplete] ) useEffect(() => { window.addEventListener('message', handleMessage) return () => window.removeEventListener('message', handleMessage) }, [handleMessage]) return (