'use client'; import { useMemo, useState } from 'react'; import { AlertCircle } from 'lucide-react'; import { parseLink, type ParsedLink } from '@/lib/xray/links'; import { ToolFrame } from './tool-frame'; type Result = { ok: true; data: ParsedLink } | { ok: false; error: string } | null; export function ShareLinkInspector() { const [input, setInput] = useState(''); const result: Result = useMemo(() => { const value = input.trim(); if (!value) return null; try { return { ok: true, data: parseLink(value) }; } catch (e) { return { ok: false, error: (e as Error).message }; } }, [input]); return ( setInput('') : undefined} >