@reechdesk/react 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/HelpdeskProvider.tsx","../src/components/ChatWidget.tsx","../src/components/TicketStatus.tsx","../src/components/KBSearch.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useEffect } from 'react';\nimport PusherJS from 'pusher-js';\n\nexport interface HelpdeskUser {\n id: string;\n name: string;\n email: string;\n}\n\nexport interface EntityBranding {\n entityName: string;\n logoUrl: string | null;\n primaryColor: string;\n greeting: string;\n position: 'bottom-right' | 'bottom-left';\n borderRadius: number;\n poweredBy: boolean;\n soundEnabled: boolean;\n}\n\nexport interface HelpdeskContextValue {\n entityId: string;\n apiUrl: string;\n user?: HelpdeskUser;\n sessionId: string | null;\n setSessionId: (id: string | null) => void;\n pusher: PusherJS | null;\n branding: EntityBranding;\n}\n\nconst HelpdeskContext = createContext<HelpdeskContextValue | null>(null);\n\nexport function useHelpdesk() {\n const ctx = useContext(HelpdeskContext);\n if (!ctx) throw new Error('useHelpdesk must be used within HelpdeskProvider');\n return ctx;\n}\n\nconst DEFAULT_API_URL = 'https://api.reechdesk.com';\n\ninterface HelpdeskProviderProps {\n entityId: string;\n apiUrl?: string;\n user?: HelpdeskUser;\n pusherKey?: string;\n children: React.ReactNode;\n}\n\nconst DEFAULT_BRANDING: EntityBranding = {\n entityName: 'Support',\n logoUrl: null,\n primaryColor: '#f26522',\n greeting: 'Hi! How can we help you today?',\n position: 'bottom-right',\n borderRadius: 12,\n poweredBy: true,\n soundEnabled: true,\n};\n\nexport function HelpdeskProvider({\n entityId,\n apiUrl,\n user,\n pusherKey,\n children,\n}: HelpdeskProviderProps) {\n const [sessionId, setSessionId] = useState<string | null>(null);\n\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n if (params.get('chat') === 'resume' && params.get('id')) {\n setSessionId(params.get('id'));\n }\n }, []);\n const [pusher, setPusher] = useState<PusherJS | null>(null);\n const [resolvedApiUrl] = useState(apiUrl || DEFAULT_API_URL);\n const [branding, setBranding] = useState<EntityBranding>(DEFAULT_BRANDING);\n\n useEffect(() => {\n if (!resolvedApiUrl) return;\n\n fetch(`${resolvedApiUrl}/api/chat/pusher-config?entityId=${entityId}`)\n .then((r) => r.json())\n .then((data) => {\n if (data.pusherKey && !pusherKey) {\n const client = new PusherJS(data.pusherKey, { cluster: 'us2' });\n setPusher(client);\n }\n if (data.entityName) {\n setBranding({\n entityName: data.entityName,\n logoUrl: data.logoUrl || null,\n primaryColor: data.primaryColor || '#f26522',\n greeting: data.greeting || 'Hi! How can we help you today?',\n position: data.position || 'bottom-right',\n borderRadius: data.borderRadius ?? 12,\n poweredBy: data.poweredBy ?? true,\n soundEnabled: data.soundEnabled ?? true,\n });\n }\n })\n .catch(() => {});\n }, [pusherKey, resolvedApiUrl, entityId]);\n\n useEffect(() => {\n if (pusherKey) {\n const client = new PusherJS(pusherKey, { cluster: 'us2' });\n setPusher(client);\n return () => client.disconnect();\n }\n }, [pusherKey]);\n\n return (\n <HelpdeskContext.Provider\n value={{ entityId, apiUrl: resolvedApiUrl, user, sessionId, setSessionId, pusher, branding }}\n >\n {children}\n </HelpdeskContext.Provider>\n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useHelpdesk } from './HelpdeskProvider';\n\ninterface Attachment {\n id: string;\n fileName: string;\n fileUrl: string;\n fileSize: number;\n mimeType: string;\n}\n\ninterface Message {\n id: string;\n senderType: string;\n body: string;\n createdAt: string;\n senderId?: string;\n senderName?: string;\n senderAvatar?: string;\n attachments?: Attachment[];\n}\n\ninterface AgentPresence {\n userId: string;\n name: string;\n email: string;\n avatarUrl: string | null;\n role: string;\n visibility: 'PUBLIC' | 'PRIVATE' | 'BOTH';\n}\n\ninterface ChatWidgetProps {\n position?: 'bottom-right' | 'bottom-left';\n primaryColor?: string;\n greeting?: string;\n entityName?: string;\n logoUrl?: string | null;\n borderRadius?: number;\n inputBorderRadius?: number;\n poweredBy?: boolean;\n soundEnabled?: boolean;\n}\n\nfunction ChatIcon({ size = 24 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n\nfunction CloseIcon({ size = 20 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\nfunction UserIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"#9c948a\">\n <path d=\"M12 12c2.7 0 5-2.3 5-5s-2.3-5-5-5-5 2.3-5 5 2.3 5 5 5zm0 2c-3.3 0-10 1.7-10 5v2h20v-2c0-3.3-6.7-5-10-5z\" />\n </svg>\n );\n}\n\nfunction MailIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"#9c948a\">\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z\" />\n </svg>\n );\n}\n\nfunction SendIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\" />\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\" />\n </svg>\n );\n}\n\nfunction PaperclipIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#9c948a\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n );\n}\n\nfunction ReechdeskLogo() {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"4\" fill=\"#f26522\" />\n <path d=\"M8 8h8v2H8zM8 12h6v2H8z\" fill=\"#fff\" />\n </svg>\n );\n}\n\nconst REECHDESK_LOGO = 'data:image/svg+xml,' + encodeURIComponent('<svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"4\" fill=\"#f26522\"/><path d=\"M8 8h8v2H8zM8 12h6v2H8z\" fill=\"#fff\"/></svg>');\n\nexport function ChatWidget({\n position,\n primaryColor,\n greeting,\n entityName,\n logoUrl,\n borderRadius,\n inputBorderRadius = 4,\n poweredBy,\n soundEnabled,\n}: ChatWidgetProps) {\n const { entityId, apiUrl, user, sessionId, setSessionId, pusher, branding } = useHelpdesk();\n\n const color = primaryColor || branding.primaryColor;\n const name = entityName || branding.entityName;\n const logo = logoUrl || branding.logoUrl || REECHDESK_LOGO;\n const pos = position || branding.position;\n const rad = borderRadius ?? branding.borderRadius;\n const greet = greeting || branding.greeting;\n const showPoweredBy = poweredBy ?? branding.poweredBy;\n const showSound = soundEnabled ?? branding.soundEnabled;\n\n const [open, setOpen] = useState(false);\n const [messages, setMessages] = useState<Message[]>([]);\n const [input, setInput] = useState('');\n const [visitorName, setVisitorName] = useState(user?.name || '');\n const [visitorEmail, setVisitorEmail] = useState(user?.email || '');\n const [started, setStarted] = useState(false);\n const [sending, setSending] = useState(false);\n const [pendingFiles, setPendingFiles] = useState<Array<{ fileName: string; fileUrl: string; fileSize: number; mimeType: string }>>([]);\n const [agents, setAgents] = useState<AgentPresence[]>([]);\n const [agentsOnline, setAgentsOnline] = useState(false);\n const messagesEnd = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const nameInputRef = useRef<HTMLInputElement>(null);\n\n const visitorIdRef = useRef<string>('');\n useEffect(() => {\n let stored = sessionStorage.getItem('rd_visitor_id');\n if (!stored) {\n stored = `v-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n sessionStorage.setItem('rd_visitor_id', stored);\n }\n visitorIdRef.current = stored;\n }, []);\n\n function playChime() {\n if (!showSound || typeof window === 'undefined') return;\n try {\n const AudioContextClass = window.AudioContext || (window as unknown as Record<string, typeof AudioContext>).webkitAudioContext;\n if (!AudioContextClass) return;\n const ctx = new AudioContextClass();\n const osc = ctx.createOscillator();\n const gain = ctx.createGain();\n osc.connect(gain);\n gain.connect(ctx.destination);\n osc.type = 'sine';\n osc.frequency.setValueAtTime(880, ctx.currentTime);\n osc.frequency.setValueAtTime(1100, ctx.currentTime + 0.08);\n gain.gain.setValueAtTime(0.3, ctx.currentTime);\n gain.gain.exponentialRampToValueAtTime(0.01, ctx.currentTime + 0.3);\n osc.start(ctx.currentTime);\n osc.stop(ctx.currentTime + 0.3);\n } catch {\n // AudioContext not available\n }\n }\n\n useEffect(() => {\n if (!apiUrl || !entityId) return;\n\n const vid = visitorIdRef.current;\n if (!vid) return;\n\n const ping = () => {\n fetch(`${apiUrl}/api/chat/presence`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ entityId, visitorId: vid, visitorName: visitorName || 'Anonymous Visitor' }),\n }).catch(() => {});\n };\n\n ping();\n const interval = setInterval(ping, 15000);\n\n const handleBeforeUnload = () => {\n try {\n const blob = new Blob(\n [JSON.stringify({ entityId, visitorId: vid })],\n { type: 'application/json' }\n );\n navigator.sendBeacon(`${apiUrl}/api/chat/presence`, blob);\n } catch {\n // ignore\n }\n };\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n clearInterval(interval);\n window.removeEventListener('beforeunload', handleBeforeUnload);\n ping();\n };\n }, [apiUrl, entityId, visitorName]);\n\n // Fetch agent presence when widget opens\n useEffect(() => {\n if (!apiUrl || !entityId || !open) return;\n\n const fetchAgentPresence = () => {\n fetch(`${apiUrl}/api/chat/agent-presence?entityId=${entityId}`)\n .then((r) => r.json())\n .then((data) => {\n if (Array.isArray(data)) {\n setAgents(data);\n setAgentsOnline(data.length > 0);\n }\n })\n .catch(() => {});\n };\n\n fetchAgentPresence();\n const interval = setInterval(fetchAgentPresence, 20000);\n\n return () => clearInterval(interval);\n }, [apiUrl, entityId, open]);\n\n // Resume chat from email link - load existing messages\n useEffect(() => {\n if (!sessionId || started || !apiUrl) return;\n\n fetch(`${apiUrl}/api/chat/sessions/${sessionId}`)\n .then((r) => r.json())\n .then((msgs) => {\n if (Array.isArray(msgs) && msgs.length > 0) {\n setMessages(msgs.map((m: Message) => ({\n id: m.id,\n senderType: m.senderType,\n body: m.body,\n createdAt: m.createdAt,\n senderId: m.senderId,\n senderName: m.senderName,\n senderAvatar: m.senderAvatar,\n attachments: m.attachments,\n })));\n setStarted(true);\n setOpen(true);\n }\n })\n .catch(() => {});\n }, [sessionId, started, apiUrl]);\n\n useEffect(() => {\n messagesEnd.current?.scrollIntoView({ behavior: 'smooth' });\n }, [messages]);\n\n useEffect(() => {\n if (open && !started) {\n setTimeout(() => nameInputRef.current?.focus(), 100);\n }\n }, [open, started]);\n\n useEffect(() => {\n if (sessionId && pusher) {\n const channel = pusher.subscribe(`chat.${sessionId}`);\n channel.bind('chat:message', (msg: Message) => {\n setMessages((prev) => [...prev, msg]);\n if (msg.senderType !== 'visitor') {\n playChime();\n }\n });\n return () => {\n pusher.unsubscribe(`chat.${sessionId}`);\n };\n }\n }, [sessionId, pusher]);\n\n const startChat = async () => {\n if (!visitorName || !visitorEmail) return;\n try {\n const res = await fetch(`${apiUrl}/api/chat/sessions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n entityId,\n visitorId: user?.id || `anon-${Date.now()}`,\n visitorName,\n visitorEmail,\n }),\n });\n const data = await res.json();\n setSessionId(data.sessionId);\n setStarted(true);\n const personalizedGreeting = greet\n .replace('{name}', visitorName)\n .replace('{Name}', visitorName.charAt(0).toUpperCase() + visitorName.slice(1));\n setMessages([{\n id: 'greeting',\n senderType: 'bot',\n body: personalizedGreeting,\n createdAt: new Date().toISOString(),\n }]);\n } catch (err) {\n console.error('Failed to start chat', err);\n }\n };\n\n const sendMessage = async () => {\n if ((!input.trim() && pendingFiles.length === 0) || !sessionId) return;\n setSending(true);\n const msgBody = input;\n setInput('');\n const filesToSend = [...pendingFiles];\n setPendingFiles([]);\n\n setMessages((prev) => [...prev, {\n id: `temp-${Date.now()}`,\n senderType: 'visitor',\n body: msgBody,\n createdAt: new Date().toISOString(),\n attachments: filesToSend.map((f, i) => ({ ...f, id: `temp-att-${i}` })),\n }]);\n\n try {\n await fetch(`${apiUrl}/api/chat/sessions/${sessionId}`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n body: msgBody || '(attachment)',\n senderType: 'visitor',\n senderId: user?.id,\n attachments: filesToSend,\n }),\n });\n // If no agents online, show offline acknowledgment\n if (!agentsOnline) {\n setTimeout(() => {\n setMessages((prev) => [...prev, {\n id: `offline-ack-${Date.now()}`,\n senderType: 'bot',\n body: `Thanks ${visitorName}! Our team is currently offline. We've received your message and will get back to you at ${visitorEmail} as soon as someone is available.`,\n createdAt: new Date().toISOString(),\n }]);\n }, 800);\n }\n } catch (err) {\n console.error('Failed to send message', err);\n } finally {\n setSending(false);\n }\n };\n\n const handleFileSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (!files) return;\n\n for (const file of Array.from(files)) {\n if (file.size > 5 * 1024 * 1024) {\n alert(`${file.name} exceeds 5MB limit`);\n continue;\n }\n const reader = new FileReader();\n const dataUrl = await new Promise<string>((resolve) => {\n reader.onload = () => resolve(reader.result as string);\n reader.readAsDataURL(file);\n });\n setPendingFiles((prev) => [...prev, {\n fileName: file.name,\n fileUrl: dataUrl,\n fileSize: file.size,\n mimeType: file.type,\n }]);\n }\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handlePaste = async (e: React.ClipboardEvent) => {\n const items = Array.from(e.clipboardData.items);\n for (const item of items) {\n if (item.kind === 'file') {\n e.preventDefault();\n const file = item.getAsFile();\n if (!file) continue;\n if (file.size > 5 * 1024 * 1024) {\n alert(`${file.name || 'File'} exceeds 5MB limit`);\n continue;\n }\n const reader = new FileReader();\n const dataUrl = await new Promise<string>((resolve) => {\n reader.onload = () => resolve(reader.result as string);\n reader.readAsDataURL(file);\n });\n setPendingFiles((prev) => [...prev, {\n fileName: file.name || `pasted-${Date.now()}`,\n fileUrl: dataUrl,\n fileSize: file.size,\n mimeType: file.type,\n }]);\n }\n }\n };\n\n const positionStyle: React.CSSProperties = pos === 'bottom-left'\n ? { left: '20px', bottom: '20px' }\n : { right: '20px', bottom: '20px' };\n\n const chatPositionStyle: React.CSSProperties = pos === 'bottom-left'\n ? { left: '20px', bottom: '80px' }\n : { right: '20px', bottom: '80px' };\n\n return (\n <>\n {/* Floating Button */}\n <button\n onClick={() => setOpen(!open)}\n style={{\n ...positionStyle,\n position: 'fixed',\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n backgroundColor: color,\n color: '#fff',\n border: 'none',\n cursor: 'pointer',\n boxShadow: `0 4px 16px ${color}44`,\n zIndex: 9999,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'transform 0.2s, box-shadow 0.2s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'scale(1.08)';\n e.currentTarget.style.boxShadow = `0 6px 24px ${color}66`;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'scale(1)';\n e.currentTarget.style.boxShadow = `0 4px 16px ${color}44`;\n }}\n aria-label=\"Open chat\"\n >\n {open ? (\n <CloseIcon size={22} />\n ) : (\n <img src={logo} alt={name} style={{ width: '28px', height: '28px', borderRadius: '6px', objectFit: 'cover' }} />\n )}\n </button>\n\n {/* Chat Window */}\n {open && (\n <div\n style={{\n ...chatPositionStyle,\n position: 'fixed',\n width: 'min(380px, calc(100vw - 32px))',\n height: 'min(520px, calc(100vh - 100px))',\n backgroundColor: '#fff',\n borderRadius: `${rad}px`,\n boxShadow: '0 12px 48px rgba(0,0,0,0.18), 0 2px 8px rgba(0,0,0,0.08)',\n zIndex: 10000,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n fontFamily: '-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"Segoe UI\", Roboto, sans-serif',\n }}\n >\n {/* Header */}\n <div style={{\n background: `linear-gradient(135deg, ${color} 0%, ${color}dd 100%)`,\n padding: '18px 20px 16px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n position: 'relative',\n }}>\n <div style={{ minWidth: 0, flex: 1 }}>\n <div style={{\n color: '#fff',\n fontSize: '15px',\n fontWeight: 700,\n lineHeight: 1.2,\n letterSpacing: '-0.01em',\n }}>\n {name}\n </div>\n <div style={{\n color: 'rgba(255,255,255,0.85)',\n fontSize: '12px',\n marginTop: '3px',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}>\n {!started ? (\n 'Start a conversation'\n ) : agentsOnline ? (\n <>\n <span style={{\n width: '7px',\n height: '7px',\n borderRadius: '50%',\n backgroundColor: '#4ade80',\n boxShadow: '0 0 6px rgba(74, 222, 128, 0.6)',\n }} />\n <span>\n {agents.length} agent{agents.length > 1 ? 's' : ''} online\n </span>\n {/* Show agent avatars */}\n <span style={{ display: 'flex', marginLeft: '4px' }}>\n {agents.slice(0, 3).map((agent, i) => (\n <span\n key={agent.userId}\n style={{\n width: '20px',\n height: '20px',\n borderRadius: '50%',\n backgroundColor: agent.avatarUrl ? 'transparent' : 'rgba(255,255,255,0.3)',\n border: '1.5px solid rgba(255,255,255,0.8)',\n marginLeft: i > 0 ? '-6px' : '0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '8px',\n fontWeight: 600,\n color: '#fff',\n overflow: 'hidden',\n }}\n >\n {agent.avatarUrl ? (\n <img src={agent.avatarUrl} alt=\"\" style={{ width: '100%', height: '100%', objectFit: 'cover' }} />\n ) : (\n agent.name.charAt(0).toUpperCase()\n )}\n </span>\n ))}\n {agents.length > 3 && (\n <span style={{\n width: '20px',\n height: '20px',\n borderRadius: '50%',\n backgroundColor: 'rgba(255,255,255,0.2)',\n border: '1.5px solid rgba(255,255,255,0.6)',\n marginLeft: '-6px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '7px',\n fontWeight: 600,\n color: '#fff',\n }}>\n +{agents.length - 3}\n </span>\n )}\n </span>\n </>\n ) : (\n <span style={{ color: 'rgba(255,255,255,0.65)' }}>\n Leave a message - we'll respond via email\n </span>\n )}\n </div>\n </div>\n <button\n onClick={() => setOpen(false)}\n style={{\n background: 'rgba(255,255,255,0.15)',\n border: 'none',\n borderRadius: '50%',\n width: '32px',\n height: '32px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n color: '#fff',\n flexShrink: 0,\n transition: 'background 0.15s',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.background = 'rgba(255,255,255,0.28)'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = 'rgba(255,255,255,0.15)'; }}\n aria-label=\"Close chat\"\n >\n <CloseIcon size={16} />\n </button>\n </div>\n\n {/* Body */}\n <div style={{ flex: 1, overflowY: 'auto', backgroundColor: '#faf9f7' }}>\n {!started ? (\n /* Pre-chat form */\n <div style={{ padding: '24px 20px 16px' }}>\n {/* Agent avatars preview when online */}\n {agentsOnline && agents.length > 0 && (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n marginBottom: '16px',\n padding: '10px 12px',\n backgroundColor: '#f0fdf4',\n borderRadius: '8px',\n border: '1px solid #bbf7d0',\n }}>\n <div style={{ display: 'flex' }}>\n {agents.slice(0, 4).map((agent, i) => (\n <span\n key={agent.userId}\n style={{\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n backgroundColor: agent.avatarUrl ? 'transparent' : '#16a34a',\n border: '2px solid #fff',\n marginLeft: i > 0 ? '-8px' : '0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '10px',\n fontWeight: 600,\n color: '#fff',\n overflow: 'hidden',\n }}\n >\n {agent.avatarUrl ? (\n <img src={agent.avatarUrl} alt=\"\" style={{ width: '100%', height: '100%', objectFit: 'cover' }} />\n ) : (\n agent.name.charAt(0).toUpperCase()\n )}\n </span>\n ))}\n </div>\n <div>\n <p style={{ margin: 0, fontSize: '12px', fontWeight: 600, color: '#16a34a' }}>\n Our team is online\n </p>\n <p style={{ margin: 0, fontSize: '11px', color: '#15803d' }}>\n {agents.length} agent{agents.length > 1 ? 's' : ''} ready to help\n </p>\n </div>\n </div>\n )}\n\n <p style={{\n margin: '0 0 6px',\n color: '#1a1410',\n fontSize: '14px',\n fontWeight: 600,\n }}>\n Start a conversation\n </p>\n <p style={{\n margin: '0 0 16px',\n color: '#9c948a',\n fontSize: '12px',\n lineHeight: 1.4,\n }}>\n Tell us a bit about yourself and we'll connect you with the right person.\n </p>\n\n {/* Name field */}\n <div style={{ position: 'relative', marginBottom: '10px' }}>\n <div style={{\n position: 'absolute',\n left: '12px',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'flex',\n alignItems: 'center',\n pointerEvents: 'none',\n }}>\n <UserIcon />\n </div>\n <input\n ref={nameInputRef}\n type=\"text\"\n placeholder=\"Your name\"\n value={visitorName}\n onChange={(e) => setVisitorName(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && document.querySelector<HTMLInputElement>('[data-chat-email]')?.focus()}\n style={{\n width: '100%',\n padding: '11px 12px 11px 38px',\n border: '1px solid #e0dcd8',\n borderRadius: `${inputBorderRadius}px`,\n fontSize: '14px',\n boxSizing: 'border-box',\n outline: 'none',\n backgroundColor: '#fff',\n color: '#1a1410',\n transition: 'border-color 0.15s',\n }}\n onFocus={(e) => { e.currentTarget.style.borderColor = color; }}\n onBlur={(e) => { e.currentTarget.style.borderColor = '#e0dcd8'; }}\n />\n </div>\n\n {/* Email field */}\n <div style={{ position: 'relative', marginBottom: '6px' }}>\n <div style={{\n position: 'absolute',\n left: '12px',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'flex',\n alignItems: 'center',\n pointerEvents: 'none',\n }}>\n <MailIcon />\n </div>\n <input\n data-chat-email\n type=\"email\"\n placeholder=\"Email address\"\n value={visitorEmail}\n onChange={(e) => setVisitorEmail(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && startChat()}\n style={{\n width: '100%',\n padding: '11px 12px 11px 38px',\n border: '1px solid #e0dcd8',\n borderRadius: `${inputBorderRadius}px`,\n fontSize: '14px',\n boxSizing: 'border-box',\n outline: 'none',\n backgroundColor: '#fff',\n color: '#1a1410',\n transition: 'border-color 0.15s',\n }}\n onFocus={(e) => { e.currentTarget.style.borderColor = color; }}\n onBlur={(e) => { e.currentTarget.style.borderColor = '#e0dcd8'; }}\n />\n </div>\n\n <p style={{\n margin: '0 0 16px',\n color: '#b0a89e',\n fontSize: '11px',\n lineHeight: 1.4,\n }}>\n We'll use this to follow up if you leave.\n </p>\n\n <button\n onClick={startChat}\n disabled={!visitorName || !visitorEmail}\n style={{\n width: '100%',\n padding: '12px',\n backgroundColor: color,\n color: '#fff',\n border: 'none',\n borderRadius: `${inputBorderRadius}px`,\n cursor: visitorName && visitorEmail ? 'pointer' : 'not-allowed',\n fontWeight: 600,\n fontSize: '14px',\n opacity: visitorName && visitorEmail ? 1 : 0.5,\n transition: 'opacity 0.15s',\n letterSpacing: '0.01em',\n }}\n >\n Start Chat\n </button>\n </div>\n ) : (\n /* Messages */\n <div style={{ padding: '16px 16px 8px' }}>\n {messages.map((msg) => (\n <div\n key={msg.id}\n style={{\n marginBottom: '10px',\n display: 'flex',\n justifyContent: msg.senderType === 'visitor' ? 'flex-end' : 'flex-start',\n }}\n >\n {msg.senderType !== 'visitor' && (\n <div style={{\n width: '28px',\n height: '28px',\n borderRadius: '50%',\n backgroundColor: msg.senderAvatar ? 'transparent' : color,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: '8px',\n flexShrink: 0,\n marginTop: '2px',\n overflow: 'hidden',\n }}>\n {msg.senderAvatar ? (\n <img src={msg.senderAvatar} alt=\"\" style={{ width: '100%', height: '100%', objectFit: 'cover' }} />\n ) : (\n <ChatIcon size={13} />\n )}\n </div>\n )}\n <div style={{\n maxWidth: '72%',\n padding: '10px 14px',\n borderRadius: msg.senderType === 'visitor'\n ? `${rad}px ${rad}px ${Math.max(rad - 8, 2)}px ${rad}px`\n : `${rad}px ${rad}px ${rad}px ${Math.max(rad - 8, 2)}px`,\n backgroundColor: msg.senderType === 'visitor' ? color : '#fff',\n color: msg.senderType === 'visitor' ? '#fff' : '#1a1410',\n fontSize: '13px',\n lineHeight: 1.5,\n boxShadow: msg.senderType === 'visitor' ? 'none' : '0 1px 3px rgba(0,0,0,0.06)',\n border: msg.senderType === 'visitor' ? 'none' : '1px solid #eee',\n }}>\n {msg.body}\n {msg.attachments && msg.attachments.length > 0 && (\n <div style={{ marginTop: '6px' }}>\n {msg.attachments.map((att) => (\n <div key={att.id} style={{ fontSize: '11px', opacity: 0.8, marginTop: '2px' }}>\n <a href={att.fileUrl} target=\"_blank\" rel=\"noopener noreferrer\"\n style={{ color: msg.senderType === 'visitor' ? '#fff' : color, textDecoration: 'underline' }}>\n {att.fileName}\n </a>\n </div>\n ))}\n </div>\n )}\n <div style={{\n fontSize: '10px',\n marginTop: '4px',\n opacity: 0.5,\n textAlign: msg.senderType === 'visitor' ? 'right' : 'left',\n }}>\n {new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\n </div>\n </div>\n </div>\n ))}\n <div ref={messagesEnd} />\n </div>\n )}\n </div>\n\n {/* Input area */}\n {started && (\n <div style={{\n padding: '12px 16px',\n borderTop: '1px solid #eee',\n backgroundColor: '#fff',\n }}>\n {pendingFiles.length > 0 && (\n <div style={{ marginBottom: '8px', display: 'flex', flexWrap: 'wrap', gap: '4px' }}>\n {pendingFiles.map((f, i) => (\n <span key={i} style={{\n fontSize: '11px',\n padding: '3px 8px',\n borderRadius: `${inputBorderRadius}px`,\n backgroundColor: '#f5f3f0',\n color: '#6b625a',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}>\n {f.fileName}\n <button onClick={() => setPendingFiles((prev) => prev.filter((_, idx) => idx !== i))}\n style={{ background: 'none', border: 'none', cursor: 'pointer', color: '#9c948a', padding: 0, fontSize: '12px' }}>\n &times;\n </button>\n </span>\n ))}\n </div>\n )}\n <div style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n onChange={handleFileSelect}\n style={{ display: 'none' }}\n accept=\"image/*,.pdf,.doc,.docx,.txt,.csv,.xlsx,.xls,.zip\"\n />\n <button\n onClick={() => fileInputRef.current?.click()}\n style={{\n padding: '8px',\n backgroundColor: 'transparent',\n border: 'none',\n borderRadius: `${inputBorderRadius}px`,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n title=\"Attach file\"\n >\n <PaperclipIcon />\n </button>\n <input\n type=\"text\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && sendMessage()}\n onPaste={handlePaste}\n placeholder=\"Type a message...\"\n disabled={sending}\n style={{\n flex: 1,\n padding: '9px 12px',\n border: '1px solid #e0dcd8',\n borderRadius: `${inputBorderRadius}px`,\n fontSize: '13px',\n outline: 'none',\n backgroundColor: '#faf9f7',\n color: '#1a1410',\n transition: 'border-color 0.15s',\n }}\n onFocus={(e) => { e.currentTarget.style.borderColor = color; }}\n onBlur={(e) => { e.currentTarget.style.borderColor = '#e0dcd8'; }}\n />\n <button\n onClick={sendMessage}\n disabled={sending || (!input.trim() && pendingFiles.length === 0)}\n style={{\n width: '36px',\n height: '36px',\n backgroundColor: color,\n color: '#fff',\n border: 'none',\n borderRadius: `${inputBorderRadius}px`,\n cursor: sending || (!input.trim() && pendingFiles.length === 0) ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n opacity: sending || (!input.trim() && pendingFiles.length === 0) ? 0.5 : 1,\n transition: 'opacity 0.15s',\n }}\n >\n <SendIcon />\n </button>\n </div>\n </div>\n )}\n\n {/* Powered by footer */}\n {showPoweredBy && (\n <div style={{\n padding: '6px 16px',\n borderTop: '1px solid #f0eeeb',\n backgroundColor: '#faf9f7',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '5px',\n }}>\n <ReechdeskLogo />\n <span style={{\n fontSize: '10px',\n color: '#b0a89e',\n letterSpacing: '0.02em',\n }}>\n Powered by Reechdesk\n </span>\n </div>\n )}\n </div>\n )}\n </>\n );\n}","import React, { useState, useEffect } from 'react';\nimport { useHelpdesk } from './HelpdeskProvider';\n\ninterface TicketStatusProps {\n ticketNumber?: string;\n}\n\ninterface TicketInfo {\n ticketNumber: string;\n subject: string;\n status: string;\n updatedAt: string;\n assignedTo?: string;\n}\n\nconst STATUS_COLORS: Record<string, string> = {\n OPEN: '#f26522',\n IN_PROGRESS: '#2563eb',\n PENDING: '#d97706',\n ESCALATED: '#9333ea',\n RESOLVED: '#16a34a',\n CLOSED: '#9c948a',\n};\n\nexport function TicketStatus({ ticketNumber: initialTicket }: TicketStatusProps) {\n const { apiUrl, entityId, branding } = useHelpdesk();\n const color = branding.primaryColor;\n const [ticketNumber, setTicketNumber] = useState(initialTicket || '');\n const [ticket, setTicket] = useState<TicketInfo | null>(null);\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n\n const fetchTicket = async () => {\n if (!ticketNumber) return;\n setLoading(true);\n setError('');\n try {\n const res = await fetch(\n `${apiUrl}/api/tickets?search=${ticketNumber}&entityId=${entityId}&limit=1`\n );\n const data = await res.json();\n if (data.data?.length > 0) {\n const t = data.data[0];\n setTicket({\n ticketNumber: t.ticketNumber,\n subject: t.subject,\n status: t.status,\n updatedAt: t.updatedAt,\n assignedTo: t.assignedTo?.name,\n });\n } else {\n setError('Ticket not found');\n setTicket(null);\n }\n } catch {\n setError('Failed to fetch ticket');\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (initialTicket) {\n setTicketNumber(initialTicket);\n }\n }, [initialTicket]);\n\n return (\n <div style={{\n padding: '16px',\n border: '1px solid #e0dcd8',\n borderRadius: '4px',\n backgroundColor: '#fff',\n fontFamily: '-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif',\n }}>\n {!ticket && (\n <div style={{ display: 'flex', gap: '8px', marginBottom: '12px' }}>\n <input\n type=\"text\"\n value={ticketNumber}\n onChange={(e) => setTicketNumber(e.target.value)}\n placeholder=\"Enter ticket number (e.g. TKT-00001)\"\n style={{\n flex: 1, padding: '8px 12px', border: '1px solid #e0dcd8',\n borderRadius: '4px', fontSize: '14px',\n }}\n />\n <button\n onClick={fetchTicket}\n disabled={loading || !ticketNumber}\n style={{\n padding: '8px 16px', backgroundColor: color,\n color: '#fff', border: 'none', borderRadius: '4px',\n cursor: 'pointer', fontWeight: 600, fontSize: '14px',\n }}\n >\n {loading ? '...' : 'Check'}\n </button>\n </div>\n )}\n\n {error && <p style={{ color: '#dc2626', fontSize: '14px' }}>{error}</p>}\n\n {ticket && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px', marginBottom: '8px' }}>\n <span style={{ fontFamily: 'monospace', color: '#6b625a', fontSize: '13px' }}>\n {ticket.ticketNumber}\n </span>\n <span style={{\n padding: '2px 8px',\n borderRadius: '100px',\n fontSize: '12px',\n fontWeight: 600,\n backgroundColor: (STATUS_COLORS[ticket.status] || '#9c948a') + '20',\n color: STATUS_COLORS[ticket.status] || '#9c948a',\n }}>\n {ticket.status.replace('_', ' ')}\n </span>\n </div>\n <p style={{ fontSize: '14px', color: '#1a1410', margin: '0 0 4px' }}>{ticket.subject}</p>\n <p style={{ fontSize: '12px', color: '#9c948a', margin: 0 }}>\n Last updated: {new Date(ticket.updatedAt).toLocaleDateString()}\n {ticket.assignedTo && ` • Assigned to: ${ticket.assignedTo}`}\n </p>\n </div>\n )}\n </div>\n );\n}\n","import React, { useState, useCallback } from 'react';\nimport { useHelpdesk } from './HelpdeskProvider';\n\ninterface KBSearchProps {\n placeholder?: string;\n maxResults?: number;\n}\n\ninterface Article {\n id: string;\n title: string;\n slug: string;\n excerpt: string | null;\n category: { name: string; slug: string };\n}\n\nexport function KBSearch({\n placeholder = 'Search help articles...',\n maxResults = 5,\n}: KBSearchProps) {\n const { apiUrl, entityId } = useHelpdesk();\n const [query, setQuery] = useState('');\n const [results, setResults] = useState<Article[]>([]);\n const [loading, setLoading] = useState(false);\n const [open, setOpen] = useState(false);\n\n const search = useCallback(async (q: string) => {\n if (q.length < 2) {\n setResults([]);\n setOpen(false);\n return;\n }\n setLoading(true);\n try {\n const res = await fetch(\n `${apiUrl}/api/kb/search?q=${encodeURIComponent(q)}&entityId=${entityId}`\n );\n const data = await res.json();\n setResults((Array.isArray(data) ? data : []).slice(0, maxResults));\n setOpen(true);\n } catch {\n // ignore\n } finally {\n setLoading(false);\n }\n }, [apiUrl, entityId, maxResults]);\n\n return (\n <div style={{ position: 'relative' }}>\n <input\n type=\"text\"\n value={query}\n onChange={(e) => {\n setQuery(e.target.value);\n search(e.target.value);\n }}\n onFocus={() => query.length >= 2 && setOpen(true)}\n placeholder={placeholder}\n style={{\n width: '100%', padding: '8px 12px', border: '1px solid #e0dcd8',\n borderRadius: '4px', fontSize: '14px', boxSizing: 'border-box',\n }}\n />\n {open && results.length > 0 && (\n <div style={{\n position: 'absolute', top: '100%', left: 0, right: 0,\n backgroundColor: '#fff', border: '1px solid #e0dcd8',\n borderRadius: '4px', boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n zIndex: 100, maxHeight: '300px', overflowY: 'auto',\n }}>\n {results.map((article) => (\n <a\n key={article.id}\n href={`${apiUrl}/knowledge-base/${article.slug}`}\n style={{\n display: 'block', padding: '10px 12px', textDecoration: 'none',\n borderBottom: '1px solid #f0f0f0',\n }}\n >\n <div style={{ fontSize: '13px', fontWeight: 600, color: '#1a1410' }}>\n {article.title}\n </div>\n <div style={{ fontSize: '12px', color: '#9c948a', marginTop: '2px' }}>\n {article.category.name}\n </div>\n {article.excerpt && (\n <div style={{ fontSize: '12px', color: '#6b625a', marginTop: '2px' }}>\n {article.excerpt.slice(0, 80)}...\n </div>\n )}\n </a>\n ))}\n </div>\n )}\n {open && query.length >= 2 && results.length === 0 && !loading && (\n <div style={{\n position: 'absolute', top: '100%', left: 0, right: 0,\n backgroundColor: '#fff', border: '1px solid #e0dcd8',\n borderRadius: '4px', padding: '12px', textAlign: 'center',\n color: '#9c948a', fontSize: '13px', zIndex: 100,\n }}>\n No articles found\n </div>\n )}\n </div>\n );\n}\n"],"names":["createContext","useContext","useState","useEffect","_jsx","_jsxs","useRef","_Fragment","useCallback"],"mappings":"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"}