PageSourceSearch

https://mortgage.homeequal.ai/assets/c-DuI_QoVB.js

js homeequal.ai collected 2026-10-05 14:37:31 UTC 21,910 bytes, 10 lines download raw bytes

1import{j as e}from"./c-kIrgbF5a.js";import{r as d,a as V}from"./c-CxWec-l3.js";import{c as _}from"./c-DSjpaNRf.js";import{j as Z}from"./c-DbMxzWZy.js";/* empty css          */import{R as q,f as G,B as Y,g as I,b as j,al as X,P as ee,i as te}from"./app-M4uDje7W.js";import{M as C}from"./c-DH8ZsXTi.js";import{S as re}from"./c-Ckw_UaHk.js";import{V as ae}from"./c-B3_DM-aH.js";import{E as ne}from"./c-BK9ywHlx.js";import{C as oe}from"./c-DlhKbKJA.js";import{P as se}from"./c-PB3kTQ55.js";import{S as ie}from"./c-BYHQsW3J.js";const de="https://ldhfxweemuneghwvqtmg.supabase.co",le="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImxkaGZ4d2VlbXVuZWdod3ZxdG1nIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ3NDEwMjQsImV4cCI6MjA3MDMxNzAyNH0.kKpTzKv1Qg7qsFQnw6ZCq4LjQkd29jJtQTDZHPLl3Xg",R=_(de,le),ce="/api",pe={lo:{label:"Loan Officer",color:"#00E0FF",icon:j},loan_officer:{label:"Loan Officer",color:"#00E0FF",icon:j},processor:{label:"Processor",color:"#B388FF",icon:I},underwriter:{label:"Underwriter",color:"#FFD740",icon:j},closer:{label:"Closer",color:"#00E676",icon:I},admin:{label:"Admin",color:"#FF9100",icon:j},borrower:{label:"Borrower",color:"#448AFF",icon:I},realtor:{label:"Realtor",color:"#00E676",icon:Y},system:{label:"System",color:"#5B6F87",icon:re}},b=m=>pe[m]||{label:m||"Team",color:"#94A3B8",icon:I},z=[{id:"demo-conv-1",loanId:"HE-2024-4201",name:"Johnson Purchase — 845 Ocean Dr",lastMessage:"The appraisal came back at $485K. We're in great shape.",lastMessageTime:new Date(Date.now()-18e5).toISOString(),unread:2,participants:[{id:"lo-1",name:"Marcus Rivera",role:"lo"},{id:"b-1",name:"Sarah Johnson",role:"borrower"},{id:"r-1",name:"You",role:"realtor"}]},{id:"demo-conv-2",loanId:"HE-2024-4189",name:"Patel Refinance — 2100 Bayshore",lastMessage:"Can you send the updated HOA contact info?",lastMessageTime:new Date(Date.now()-72e5).toISOString(),unread:0,participants:[{id:"lo-2",name:"Jennifer Walsh",role:"lo"},{id:"b-2",name:"Raj Patel",role:"borrower"},{id:"r-1",name:"You",role:"realtor"},{id:"p-1",name:"Amy Chen",role:"processor"}]},{id:"demo-conv-3",loanId:"HE-2024-4215",name:"Martinez First-Time — 601 NW 3rd Ave",lastMessage:"Congratulations! Clear-to-close issued. 🎉",lastMessageTime:new Date(Date.now()-864e5).toISOString(),unread:0,participants:[{id:"lo-3",name:"David Kim",role:"lo"},{id:"b-3",name:"Carlos Martinez",role:"borrower"},{id:"r-1",name:"You",role:"realtor"}]}],P={"demo-conv-1":[{id:"m1",content:"Hi Sarah, I just submitted the appraisal order. Should take 3-5 business days.",from:"other",senderId:"lo-1",senderName:"Marcus Rivera",senderRole:"lo",senderAvatar:"MR",timestamp:new Date(Date.now()-864e5).toISOString(),time:"9:15 AM",date:"Yesterday"},{id:"m2",content:"Thanks Marcus! The property is all prepped. I let the listing agent know to expect the appraiser.",from:"me",senderId:"r-1",senderName:"You",senderRole:"realtor",senderAvatar:"RE",timestamp:new Date(Date.now()-85e6).toISOString(),time:"9:38 AM",date:"Yesterday"},{id:"m3",content:"Perfect. Sarah, do you have any questions about the process from here?",from:"other",senderId:"lo-1",senderName:"Marcus Rivera",senderRole:"lo",senderAvatar:"MR",timestamp:new Date(Date.now()-84e6).toISOString(),time:"9:55 AM",date:"Yesterday"},{id:"m4",content:"No, I think I'm good! My realtor has been keeping me updated on everything. 😊",from:"other",senderId:"b-1",senderName:"Sarah Johnson",senderRole:"borrower",senderAvatar:"SJ",timestamp:new Date(Date.now()-82e6).toISOString(),time:"10:28 AM",date:"Yesterday"},{id:"m5",content:"The appraisal came back at $485K. We're in great shape.",from:"other",senderId:"lo-1",senderName:"Marcus Rivera",senderRole:"lo",senderAvatar:"MR",timestamp:new Date(Date.now()-18e5).toISOString(),time:"2:45 PM",date:"Today"},{id:"m6",content:"That's excellent news! Well above the purchase price. Sarah, this means we're on track for an on-time closing.",from:"me",senderId:"r-1",senderName:"You",senderRole:"realtor",senderAvatar:"RE",timestamp:new Date(Date.now()-12e5).toISOString(),time:"2:55 PM",date:"Today"}],"demo-conv-2":[{id:"m10",content:"Raj, we need the updated HOA documentation for the refinance. Can your realtor help coordinate?",from:"other",senderId:"lo-2",senderName:"Jennifer Walsh",senderRole:"lo",senderAvatar:"JW",timestamp:new Date(Date.now()-108e5).toISOString(),time:"11:30 AM",date:"Today"},{id:"m11",content:"Sure, let me reach out to the HOA management office. I'll get the docs over today.",from:"me",senderId:"r-1",senderName:"You",senderRole:"realtor",senderAvatar:"RE",timestamp:new Date(Date.now()-9e6).toISOString(),time:"12:00 PM",date:"Today"},{id:"m12",content:"Can you send the updated HOA contact info?",from:"other",senderId:"p-1",senderName:"Amy Chen",senderRole:"processor",senderAvatar:"AC",timestamp:new Date(Date.now()-72e5).toISOString(),time:"12:30 PM",date:"Today"}
1],"demo-conv-3":[{id:"m20",content:"Carlos, all conditions have been satisfied. We're submitting for final approval now.",from:"other",senderId:"lo-3",senderName:"David Kim",senderRole:"lo",senderAvatar:"DK",timestamp:new Date(Date.now()-1728e5).toISOString(),time:"3:00 PM",date:"2 days ago"},{id:"m21",content:"Amazing! Carlos, I'll start coordinating with the title company for closing day.",from:"me",senderId:"r-1",senderName:"You",senderRole:"realtor",senderAvatar:"RE",timestamp:new Date(Date.now()-17e7).toISOString(),time:"3:47 PM",date:"2 days ago"},{id:"m22",content:"Congratulations! Clear-to-close issued. 🎉",from:"other",senderId:"lo-3",senderName:"David Kim",senderRole:"lo",senderAvatar:"DK",timestamp:new Date(Date.now()-864e5).toISOString(),time:"10:15 AM",date:"Yesterday"},{id:"m23",content:"This is incredible! Thank you both so much for making this happen! 🏠",from:"other",senderId:"b-3",senderName:"Carlos Martinez",senderRole:"borrower",senderAvatar:"CM",timestamp:new Date(Date.now()-85e6).toISOString(),time:"10:38 AM",date:"Yesterday"}]};async function y(m,u={}){const r={"Content-Type":"application/json",...u.headers};if(R)try{const{data:{session:l}}=await R.auth.getSession();l!=null&&l.access_token&&(r.Authorization=`Bearer ${l.access_token}`)}catch{}r["x-portal-role"]="realtor";const c=await fetch(Z(ce,`/api/portal-messaging${m}`),{...u,headers:r});if(!c.ok){const l=await c.json().catch(()=>({}));throw new Error(l.error||`Request failed: ${c.status}`)}return c.json()}const ke=()=>{const[m,u]=d.useState([]),[r,c]=d.useState(null),[l,f]=d.useState([]),[h,O]=d.useState(""),[k,T]=d.useState(!1),[B,S]=d.useState(!0),[M,J]=d.useState(""),[W,L]=d.useState([]),[H,w]=d.useState([]),[x,D]=d.useState(!1),E=d.useRef(null),F=d.useRef(null),v=d.useRef(null);d.useEffect(()=>{let t=!1;return(async()=>{S(!0);try{if(R){const{data:{session:o}}=await R.auth.getSession();if(o!=null&&o.access_token){t||(D(!1),u(z),S(!1));return}}t||(D(!0),u(z),S(!1))}catch{t||(D(!0),u(z),S(!1))}})(),()=>{t=!0}},[]),d.useEffect(()=>{if(!r){f([]),w([]);return}let t=!1;return(async()=>{if(x||r.id.startsWith("demo-")){f(P[r.id]||[]),w(r.participants||[]);return}try{const a=await y(`/conversations/loan/${r.loanId}`);!t&&a.success&&(f(a.messages||[]),c(i=>{var s;return{...i,realConversationId:(s=a.conversation)==null?void 0:s.id}}))}catch(a){console.warn("[RealtorMessages] Failed to load messages:",a.message),f(P[r.id]||[])}try{const a=r.realConversationId||r.id;if(!a.startsWith("demo-")){const i=await y(`/conversations/${a}/participants`);!t&&i.success&&w(i.participants||[])}}catch{w(r.participants||[])}})(),(async()=>{const a=r.realConversationId;if(a&&!a.startsWith("demo-"))try{await y(`/conversations/${a}/read`,{method:"POST",body:"{}"})}catch{}})(),()=>{t=!0}},[r==null?void 0:r.id,r==null?void 0:r.loanId,x]),d.useEffect(()=>{if(v.current&&clearInterval(v.current),!r)return;const t=r.realConversationId;if(!(!t||t.startsWith("demo-")))return v.current=setInterval(async()=>{var n;try{const o=l.length>0?l[l.length-1].timestamp:new Date(0).toISOString(),a=await y(`/conversations/${t}/messages?after=${encodeURIComponent(o)}&limit=20`);a.success&&((n=a.messages)==null?void 0:n.length)>0&&f(s=>{const p=new Set(s.map(A=>A.id)),g=a.messages.filter(A=>!p.has(A.id));return g.length>0?[...s,...g]:s});const i=await y(`/conversations/${t}/typing`);i.success&&L(i.typingUsers||[])}catch{}},4e3),()=>{v.current&&clearInterval(v.current)}},[r==null?void 0:r.realConversationId,l.length]),d.useEffect(()=>{var t;(t=E.current)==null||t.scrollIntoView({behavior:"smooth"})},[l.length]);const N=d.useCallback(async()=>{var i;const t=h.trim();if(!t||k)return;T(!0),O("");const n=`opt-${Date.now()}`,o={id:n,content:t,from:"me",senderName:"You",senderRole:"realtor",senderAvatar:"RE",timestamp:new Date().toISOString(),time:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),date:"Today",pending:!0};f(s=>[...s,o]);const a=r==null?void 0:r.realConversationId;if(a&&!a.startsWith("demo-")&&!x)try{const s=await y(`/conversations/${a}/messages`,{method:"POST",body:JSON.stringify({content:t})});s.success&&s.message&&f(p=>p.map(g=>g.id===n?{...s.message,from:"me"}:g))}catch(s){console.error("[RealtorMessages] Send failed:",s.message),f(p=>p.map(g=>g.id===n?{...g,pending:!1,error:!0}:g))}else setTimeout(()=>{f(s=>s.map(p=>p.id===n?{...p,pending:!1}:p))},300);T(!1),(i=F.current)==null||i.focus()},[h,k,r,x]),K=t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),N())},U=d.useCallback(()=>{const t=r==null?void 0:r.realConversationId;!t||t.startsWith("demo-")||x||y(`/conversations/${t}/typing`,{method:"POST",body:JSON.stringify({isTyping:!0})}).catch(()=>{})},[r==null?void 0:r.realConversationId,x]),$=m.filter(t=>!M||t.name.toLowerCase().includes(M.toLowerCase())),Q=l.reduce((t,n)=>{const o=n.date||"Today";return!t.length||t[t.length-1].date!==o?t.push({date:o,messages:[n]}):t[t.length-1].messages.push(n),t},[]);return B?e.jsx("div",{className:"rp-page",style:{display:"grid",placeItems:"center",minHeight:"80vh"},children:e.jsxs("div",{style:{textAlign:"center"},children:[e.jsx(q,{size:28,style:{animation:"spin 1s linear infinite",color:"var(--rp-accent)"}}),e.jsx("p",{style:{marginTop:12,color:"var(--rp-text-secondary)",fontSize:14},children:"Loading conversations…"})]})}):e.jsxs("div",{className:"rp-page",style:{padding:0,display:"flex",height:"100vh",overflow:"hidden"},children:[e.jsxs("div",{style:{width:340,minWidth:340,borderRight:"1px solid var(--rp-border)",display:"flex",flexDirection:"column",background:"var(--rp-surface)",...r?{display:window.innerWidth<768?"none":"flex"}:{}},children:[e.jsxs("div",{style:{padding:"20px 18px 14px",borderBottom:"1px solid var(--rp-border)"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:14},children:[e.jsxs("h2",{style:{fontSize:18,fontWeight:800,color:"var(--rp-text)",margin:0,letterSpacing:"-0.02em"},children:[e.jsx(C,{size:18,style:{marginRight:8,verticalAlign:-3,color:"var(--rp-accent)"}}),"Messages"]}),x&&e.jsx("span",{style:{fontSize:10,fontWeight:700,color:"var(--rp-gold)",background:"var(--rp-gold-muted)",padding:"3px 8px",borderRadius:6,letterSpacing:"0.04em"},children:"DEMO"})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,background:"var(--rp-surface-raised)",borderRadius:10,padding:"8px 12px",border:"1px solid var(--rp-border)"},children:[e.jsx(G,{size:14,style:{color:"var(--rp-text-muted)",flexShrink:0}}),e.jsx("input",{type:"text",placeholder:"Search conversations…",value:M,onChange:t=>J(t.target.value),style:{flex:1,border:"none",background:"none",outline:"none",color:"var(--rp-text)",fontSize:13,fontFamily:"var(--rp-font)"}})]})]}),e.jsx("div",{style:{flex:1,overflowY:"auto",padding:"6px 0"},children:$.length===0?e.jsxs("div",{style:{textAlign:"center",padding:"40px 20px",color:"var(--rp-text-muted)"},children:[e.jsx(C,{size:32,style:{opacity:.3,marginBottom:10}}),e.jsx("p",{style:{fontSize:13},children:"No conversations yet"}),e.jsx("p",{style:{fontSize:11,marginTop:4,opacity:.6},children:"When a loan officer adds you to a loan thread, it will appear here."})]}):$.map(t=>{const n=(r==null?void 0:r.id)===t.id,o=me(t.lastMessageTime);return e.jsxs("button",{onClick:()=>c(t),style:{width:"100%",textAlign:"left",border:"none",cursor:"pointer",padding:"14px 18px",display:"flex",gap:12,alignItems:"flex-start",background:n?"linear-gradient(90deg, rgba(0, 224, 255, 0.06), transparent)":"transparent",borderLeft:n?"2px solid var(--rp-accent)":"2px solid transparent",transition:"all 0.15s ease",fontFamily:"var(--rp-font)"},onMouseEnter:a=>{n||(a.currentTarget.style.background="var(--rp-surface-hover)")},onMouseLeave:a=>{n||(a.currentTarget.style.background="transparent")},children:[e.jsx("div",{style:{width:40,height:40,borderRadius:10,background:n?"var(--rp-accent-muted)":"var(--rp-surface-raised)",display:"grid",placeItems:"center",flexShrink:0,border:`1px solid ${n?"var(--rp-border-accent)":"var(--rp-border)"}`},children:e.jsx(Y,{size:18,style:{color:n?"var(--rp-accent)":"var(--rp-text-muted)"}})}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",marginBottom:3},children:[e.jsx("span",{style:{fontSize:13,fontWeight:t.unread>0?700:500,color:"var(--rp-text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:180},children:t.name}
1),e.jsx("span",{style:{fontSize:10,color:"var(--rp-text-muted)",flexShrink:0,marginLeft:8},children:o})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[e.jsx("span",{style:{fontSize:11.5,color:t.unread>0?"var(--rp-text-secondary)":"var(--rp-text-muted)",fontWeight:t.unread>0?600:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:t.lastMessage}),t.unread>0&&e.jsx("span",{style:{minWidth:18,height:18,borderRadius:9,background:"var(--rp-accent)",color:"#04070D",fontSize:10,fontWeight:800,display:"grid",placeItems:"center",padding:"0 5px",flexShrink:0},children:t.unread})]}),e.jsx("div",{style:{display:"flex",gap:2,marginTop:6},children:(t.participants||[]).slice(0,4).map((a,i)=>e.jsx("span",{title:`${a.name} (${b(a.role).label})`,style:{width:20,height:20,borderRadius:6,fontSize:8,fontWeight:700,display:"grid",placeItems:"center",background:b(a.role).color+"18",color:b(a.role).color,border:`1px solid ${b(a.role).color}30`},children:a.name.split(" ").map(s=>s[0]).slice(0,2).join("")},a.id||i))})]})]},t.id)})})]}),e.jsx("div",{style:{flex:1,display:"flex",flexDirection:"column",background:"var(--rp-bg)",minWidth:0},children:r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{padding:"14px 20px",borderBottom:"1px solid var(--rp-border)",display:"flex",alignItems:"center",gap:12,background:"var(--rp-surface)"},children:[e.jsx("button",{onClick:()=>c(null),style:{border:"none",background:"none",color:"var(--rp-text-muted)",cursor:"pointer",padding:4,borderRadius:6,display:"grid",placeItems:"center"},children:e.jsx(X,{size:18})}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsx("div",{style:{fontSize:14,fontWeight:700,color:"var(--rp-text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.name}),e.jsxs("div",{style:{fontSize:11,color:"var(--rp-text-muted)",marginTop:2,display:"flex",alignItems:"center",gap:6},children:[e.jsx("span",{style:{fontFamily:"var(--rp-font-mono)",fontSize:10,color:"var(--rp-accent)",background:"var(--rp-accent-muted)",padding:"1px 6px",borderRadius:4},children:r.loanId}),e.jsxs("span",{children:[(r.participants||H||[]).length," participants"]})]})]}),e.jsx("div",{style:{display:"flex",gap:6},children:[ee,ae,ne].map((t,n)=>e.jsx("button",{style:{width:32,height:32,borderRadius:8,border:"1px solid var(--rp-border)",background:"var(--rp-surface-raised)",color:"var(--rp-text-muted)",cursor:"pointer",display:"grid",placeItems:"center"},children:e.jsx(t,{size:14})},n))})]}),e.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"16px 20px",display:"flex",flexDirection:"column",gap:4},children:[Q.map((t,n)=>e.jsxs(V.Fragment,{children:[e.jsx("div",{style:{textAlign:"center",margin:"12px 0",position:"relative"},children:e.jsx("span",{style:{fontSize:10,fontWeight:600,color:"var(--rp-text-muted)",background:"var(--rp-bg)",padding:"3px 12px",borderRadius:8,border:"1px solid var(--rp-border)",letterSpacing:"0.04em",textTransform:"uppercase"},children:t.date})}),t.messages.map(o=>{var s;const a=o.from==="me",i=b(o.senderRole);return e.jsxs("div",{style:{display:"flex",flexDirection:a?"row-reverse":"row",gap:8,marginBottom:6,alignItems:"flex-end",maxWidth:"80%",alignSelf:a?"flex-end":"flex-start",opacity:o.pending?.7:1},children:[!a&&e.jsx("div",{style:{width:30,height:30,borderRadius:8,background:i.color+"18",border:`1px solid ${i.color}30`,display:"grid",placeItems:"center",fontSize:10,fontWeight:700,color:i.color,flexShrink:0},children:o.senderAvatar||((s=o.senderName)==null?void 0:s.split(" ").map(p=>p[0]).slice(0,2).join(""))||"U"}),e.jsxs("div",{children:[!a&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:3,paddingLeft:2},children:[e.jsx("span",{style:{fontSize:11,fontWeight:600,color:"var(--rp-text-secondary)"},children:o.senderName}),e.jsx("span",{style:{fontSize:9,fontWeight:700,color:i.color,background:i.color+"18",padding:"1px 6px",borderRadius:4,letterSpacing:"0.03em",textTransform:"uppercase"},children:i.label})]}),e.jsx("div",{style:{padding:"10px 14px",borderRadius:a?"14px 14px 4px 14px":"14px 14px 14px 4px",background:a?"linear-gradient(135deg, rgba(0, 224, 255, 0.15), rgba(0, 224, 255, 0.08))":"var(--rp-surface-raised)",border:`1px solid ${a?"var(--rp-border-accent)":"var(--rp-border)"}`,color:"var(--rp-text)",fontSize:13,lineHeight:1.5,maxWidth:420,wordBreak:"break-word"},children:o.content}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginTop:3,justifyContent:a?"flex-end":"flex-start",paddingLeft:a?0:2,paddingRight:a?2:0}
1,children:[e.jsx("span",{style:{fontSize:10,color:"var(--rp-text-muted)"},children:o.time}),a&&(o.pending?e.jsx(te,{size:10,style:{color:"var(--rp-text-muted)"}}):o.error?e.jsx("span",{style:{fontSize:10,color:"var(--rp-red)"},children:"Failed"}):e.jsx(oe,{size:10,style:{color:"var(--rp-accent)"}}))]})]})]},o.id)})]},n)),W.length>0&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 0",color:"var(--rp-text-muted)",fontSize:12},children:[e.jsx("div",{style:{display:"flex",gap:3},children:[0,1,2].map(t=>e.jsx("div",{style:{width:5,height:5,borderRadius:"50%",background:"var(--rp-accent)",animation:`bounce 1.4s infinite ${t*.2}s`}},t))}),e.jsxs("span",{children:[W.map(t=>t.name||"Someone").join(", ")," typing…"]})]}),e.jsx("div",{ref:E})]}),e.jsxs("div",{style:{padding:"12px 20px 16px",borderTop:"1px solid var(--rp-border)",background:"var(--rp-surface)"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"flex-end",gap:8,background:"var(--rp-surface-raised)",borderRadius:12,padding:"8px 12px",border:"1px solid var(--rp-border)",transition:"border-color 0.15s ease"},children:[e.jsx("button",{type:"button",style:{border:"none",background:"none",color:"var(--rp-text-muted)",cursor:"pointer",padding:4,borderRadius:6},title:"Attach file",children:e.jsx(se,{size:16})}),e.jsx("textarea",{ref:F,rows:1,placeholder:"Type a message…",value:h,onChange:t=>{O(t.target.value),U()},onKeyDown:K,style:{flex:1,border:"none",background:"none",outline:"none",color:"var(--rp-text)",fontSize:13,fontFamily:"var(--rp-font)",lineHeight:1.5,resize:"none",maxHeight:120,overflowY:"auto"}}),e.jsx("button",{type:"button",onClick:N,disabled:!h.trim()||k,style:{border:"none",width:32,height:32,borderRadius:8,background:h.trim()?"linear-gradient(135deg, #00E0FF, #0891B2)":"var(--rp-surface-hover)",color:h.trim()?"#04070D":"var(--rp-text-muted)",cursor:h.trim()?"pointer":"default",display:"grid",placeItems:"center",transition:"all 0.15s ease",flexShrink:0},children:e.jsx(ie,{size:14})})]}),e.jsx("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:6,paddingLeft:4},children:e.jsx("span",{style:{fontSize:10,color:"var(--rp-text-muted)",opacity:.5},children:"🔒 Messages are encrypted and logged to the loan audit trail"})})]})]}):e.jsx("div",{style:{flex:1,display:"grid",placeItems:"center",textAlign:"center",padding:40},children:e.jsxs("div",{children:[e.jsx("div",{style:{width:64,height:64,borderRadius:16,background:"var(--rp-accent-muted)",display:"grid",placeItems:"center",margin:"0 auto 16px",border:"1px solid var(--rp-border-accent)"},children:e.jsx(C,{size:28,style:{color:"var(--rp-accent)"}})}),e.jsx("h3",{style:{fontSize:17,fontWeight:700,color:"var(--rp-text)",marginBottom:6},children:"Unified Messaging"}),e.jsx("p",{style:{fontSize:13,color:"var(--rp-text-muted)",maxWidth:320,lineHeight:1.5},children:"Communicate directly with loan officers, borrowers, and team members. All messages are encrypted and part of the loan audit trail."}),e.jsx("div",{style:{marginTop:16,display:"flex",gap:6,justifyContent:"center",flexWrap:"wrap"},children:["End-to-End Encrypted","Audit Trail","Multi-Party"].map(t=>e.jsx("span",{style:{fontSize:10,fontWeight:600,color:"var(--rp-accent)",background:"var(--rp-accent-muted)",padding:"4px 10px",borderRadius:6,border:"1px solid var(--rp-border-accent)"},children:t},t))})]})})}),e.jsx("style",{children:`
2        @keyframes bounce {
3          0%, 60%, 100% { transform: translateY(0); }
4          30% { transform: translateY(-4px); }
5        }
6        @keyframes spin {
7          from { transform: rotate(0deg); }
8          to { transform: rotate(360deg); }
9        }
10      `})]})};function me(m){if(!m)return"";const u=Date.now()-new Date(m).getTime(),r=Math.floor(u/6e4);if(r<1)return"Just now";if(r<60)return`${r}m ago`;const c=Math.floor(r/60);if(c<24)return`${c}h ago`;const l=Math.floor(c/24);return l===1?"Yesterday":`${l}d ago`}export{ke as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.