{"version":3,"file":"ExpertlyVoiceBlock.CIvcKCYV.mjs","names":["useState","useRef","useCallback","useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/YI8JMCeAeLMNMpuWMbb0/tzE9qJUqoMQLf3pHmoB4/Audio_and_Transcript_Tile.js","https:/framerusercontent.com/modules/bAdXMIiEelJqcnfL6pjW/z49jNmkHZ9aXwWZxeWyU/ExpertlyVoiceBlock.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useRef,useEffect,useCallback}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";const playIconOffset={x:2,y:0};const pauseIconOffset={x:0,y:0};const TILE_PADDING=30;const TILE_RADIUS=25;const TILE_GAP=30;/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicHeight 360\n * @framerIntrinsicWidth 440\n */export default function TranscriptTile({content,transcript=[],typography,colors,effects,audio,expandedMaxHeight=280}){const{title=\"Track and Reroute Shipment\",previewIntro=\"I'm calling to check on shipment 84729.\",previewSummary=\"Held at our Newark facility, the apartment number was missing. Now scheduled for Friday.\",callerLabel=\"Caller\",callerAvatar,agentLabel=\"Expertly\",agentAvatar}=content||{};const{titleFont,previewIntroFont,previewSummaryFont,speakerLabelFont,transcriptTextFont,toggleFont}=typography||{};const{accent=\"#8428F8\",tileTop=\"#F8EDFF\",tileBottom=\"#FDFAFF\",bodyText=\"#2b1a3f\",toggleLink=\"#8428F8\"}=colors||{};const{showBorder=false,borderColor=\"#E8E8E8\",shadow=\"0px 10px 20px rgba(0, 0, 0, 0.06)\"}=effects||{};const{file:audioFile,url:audioSrc,background:audioBackground=\"#F8EDFF\",track:audioTrack=\"#f4e2ff\",progress:audioProgress=\"#e2bff9\",icon:audioIcon=\"#8428F8\",autoPlay=false}=audio||{};const[expanded,setExpanded]=useState(false);const resolvedSrc=audioFile||audioSrc;const[playing,setPlaying]=useState(false);const[progressValue,setProgressValue]=useState(0);const[isHovering,setIsHovering]=useState(false);const[isScrubbing,setIsScrubbing]=useState(false);const audioRef=useRef(null);const trackRef=useRef(null);const rafRef=useRef(0);const updateProgress=useCallback(()=>{const audioEl=audioRef.current;if(audioEl&&audioEl.duration){setProgressValue(audioEl.currentTime/audioEl.duration);}rafRef.current=requestAnimationFrame(updateProgress);},[]);const seekToPosition=useCallback(clientX=>{const trackEl=trackRef.current;const audioEl=audioRef.current;if(!trackEl||!audioEl||!audioEl.duration)return;const rect=trackEl.getBoundingClientRect();const ratio=Math.max(0,Math.min(1,(clientX-rect.left)/rect.width));audioEl.currentTime=ratio*audioEl.duration;setProgressValue(ratio);},[]);const handlePointerDown=e=>{setIsScrubbing(true);const audioEl=audioRef.current;if(audioEl)audioEl.muted=true;seekToPosition(e.clientX);const handleMove=moveEvent=>{seekToPosition(moveEvent.clientX);};const handleUp=()=>{setIsScrubbing(false);if(audioEl)audioEl.muted=false;window.removeEventListener(\"pointermove\",handleMove);window.removeEventListener(\"pointerup\",handleUp);window.removeEventListener(\"pointercancel\",handleUp);};window.addEventListener(\"pointermove\",handleMove);window.addEventListener(\"pointerup\",handleUp);window.addEventListener(\"pointercancel\",handleUp);};useEffect(()=>{const audioEl=audioRef.current;if(!audioEl)return;const handleEnded=()=>{setPlaying(false);setProgressValue(0);};audioEl.addEventListener(\"ended\",handleEnded);return()=>{audioEl.removeEventListener(\"ended\",handleEnded);audioEl.pause();cancelAnimationFrame(rafRef.current);};},[]);useEffect(()=>{if(autoPlay&&resolvedSrc)setPlaying(true);},[autoPlay,resolvedSrc]);useEffect(()=>{const audioEl=audioRef.current;if(!audioEl)return;if(playing){audioEl.play().catch(()=>setPlaying(false));rafRef.current=requestAnimationFrame(updateProgress);}else{audioEl.pause();cancelAnimationFrame(rafRef.current);}return()=>cancelAnimationFrame(rafRef.current);},[playing,updateProgress]);const ease=[.22,1,.36,1];const layoutTransition={duration:.4,ease};return /*#__PURE__*/_jsxs(motion.div,{layout:true,transition:layoutTransition,style:{background:`linear-gradient(to bottom, ${tileTop}, ${tileBottom})`,borderRadius:TILE_RADIUS,border:`1px solid ${showBorder?borderColor:\"transparent\"}`,padding:TILE_PADDING,boxShadow:shadow,color:bodyText,width:\"100%\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsxs(motion.div,{layout:\"position\",transition:layoutTransition,style:{display:\"flex\",alignItems:\"center\",gap:12},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:18,height:18,borderRadius:\"50%\",background:accent,flexShrink:0}}),/*#__PURE__*/_jsx(\"span\",{style:{...titleFont},children:title})]}),/*#__PURE__*/_jsx(motion.div,{layout:true,transition:layoutTransition,style:{marginTop:TILE_GAP},children:/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",initial:false,children:expanded?/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.18},style:{maxHeight:expandedMaxHeight,overflowY:\"auto\",paddingRight:6,WebkitMaskImage:\"linear-gradient(to bottom, #000 calc(100% - 28px), transparent)\",maskImage:\"linear-gradient(to bottom, #000 calc(100% - 28px), transparent)\"},children:transcript.map((entry,i)=>{const isCaller=entry.speaker===\"caller\";const avatar=isCaller?callerAvatar:agentAvatar;const label=isCaller?callerLabel:agentLabel;return /*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:i===transcript.length-1?4:28},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10,marginBottom:10},children:[avatar&&/*#__PURE__*/_jsx(\"div\",{style:{width:32,height:32,borderRadius:\"50%\",backgroundImage:`url(${avatar})`,backgroundSize:\"cover\",backgroundPosition:\"center\",flexShrink:0}}),/*#__PURE__*/_jsx(\"div\",{style:{...speakerLabelFont,textTransform:\"uppercase\",color:bodyText,opacity:.65},children:label})]}),/*#__PURE__*/_jsx(\"div\",{style:{...transcriptTextFont,color:bodyText},children:entry.text})]},i);})},\"transcript\"):/*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.18},children:[/*#__PURE__*/_jsx(\"div\",{style:{...previewIntroFont,color:bodyText,marginBottom:18},children:previewIntro}),/*#__PURE__*/_jsx(\"div\",{style:{...previewSummaryFont,color:bodyText},children:previewSummary})]},\"preview\")})}),/*#__PURE__*/_jsx(motion.button,{layout:\"position\",transition:layoutTransition,onClick:()=>setExpanded(e=>!e),style:{...toggleFont,marginTop:TILE_GAP,background:\"transparent\",border:\"none\",padding:0,cursor:\"pointer\",color:toggleLink,display:\"block\",textAlign:\"left\"},children:expanded?\"Hide\":\"See Full Transcript\"}),/*#__PURE__*/_jsx(motion.div,{layout:\"position\",transition:layoutTransition,style:{marginTop:TILE_GAP},children:/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:46,borderRadius:29,background:audioBackground,display:\"flex\",alignItems:\"center\",gap:14,padding:\"6px 17px 6px 6px\",overflow:\"hidden\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsxs(\"button\",{onClick:()=>setPlaying(p=>!p),style:{width:34,height:34,borderRadius:\"50%\",background:\"#ffffff\",border:\"none\",padding:0,cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",position:\"relative\",flexShrink:0,boxShadow:\"0 0 1px rgba(0, 0, 0, 0.18), 0 2px 4px rgba(0, 0, 0, 0.08)\"},children:[/*#__PURE__*/_jsx(\"svg\",{width:\"12\",height:\"14\",viewBox:\"0 0 14 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{position:\"absolute\",opacity:playing?0:1,transform:`${playing?\"scale(0.6)\":\"scale(1)\"} translate(${playIconOffset.x}px, ${playIconOffset.y}px)`,transition:\"opacity 0.2s ease, transform 0.2s ease\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M12.8885 6.12573C14.0885 6.81855 14.0885 8.5506 12.8885 9.24342L2.7 15.1257C1.5 15.8185 7.57104e-08 14.9525 1.36279e-07 13.5669L6.50526e-07 1.80226C7.11095e-07 0.416621 1.5 -0.449404 2.7 0.243416L12.8885 6.12573Z\",fill:audioIcon})}),/*#__PURE__*/_jsxs(\"svg\",{width:\"9\",height:\"12\",viewBox:\"0 0 10 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{position:\"absolute\",opacity:playing?1:0,transform:`${playing?\"scale(1)\":\"scale(0.6)\"} translate(${pauseIconOffset.x}px, ${pauseIconOffset.y}px)`,transition:\"opacity 0.2s ease, transform 0.2s ease\"},children:[/*#__PURE__*/_jsx(\"path\",{d:\"M0 1C0 0.447715 0.447715 0 1 0H2.5C3.05228 0 3.5 0.447715 3.5 1V13C3.5 13.5523 3.05228 14 2.5 14H1C0.447715 14 0 13.5523 0 13V1Z\",fill:audioIcon}),/*#__PURE__*/_jsx(\"path\",{d:\"M6.5 1C6.5 0.447715 6.94772 0 7.5 0H9C9.55228 0 10 0.447715 10 1V13C10 13.5523 9.55228 14 9 14H7.5C6.94772 14 6.5 13.5523 6.5 13V1Z\",fill:audioIcon})]})]}),/*#__PURE__*/_jsxs(\"div\",{ref:trackRef,onPointerDown:handlePointerDown,onMouseEnter:()=>setIsHovering(true),onMouseLeave:()=>setIsHovering(false),style:{flex:1,height:34,display:\"flex\",alignItems:\"center\",cursor:\"pointer\",touchAction:\"none\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:6,borderRadius:4,background:audioTrack,overflow:\"hidden\",position:\"relative\"},children:/*#__PURE__*/_jsx(\"div\",{style:{width:`${progressValue*100}%`,height:6,borderRadius:4,background:audioProgress,position:\"absolute\",top:0,left:0}})}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${progressValue*100}%`,top:\"50%\",transform:\"translate(-50%, -50%)\",width:12,height:12,borderRadius:\"50%\",background:\"#ffffff\",boxShadow:\"0 0 1px rgba(0, 0, 0, 0.25), 0 1px 3px rgba(0, 0, 0, 0.2)\",opacity:isHovering||isScrubbing?1:0,transition:\"opacity 0.15s ease\",pointerEvents:\"none\"}})]}),resolvedSrc&&/*#__PURE__*/_jsx(\"audio\",{ref:audioRef,src:resolvedSrc,preload:\"auto\"})]})})]});}addPropertyControls(TranscriptTile,{content:{type:ControlType.Object,title:\"Content\",controls:{title:{type:ControlType.String,title:\"Title\",defaultValue:\"Track and Reroute Shipment\"},previewIntro:{type:ControlType.String,title:\"Preview Intro\",displayTextArea:true,defaultValue:\"I'm calling to check on shipment 84729.\"},previewSummary:{type:ControlType.String,title:\"Preview Summary\",displayTextArea:true,defaultValue:\"Held at our Newark facility, the apartment number was missing. Now scheduled for Friday.\"},callerLabel:{type:ControlType.String,title:\"Caller Label\",defaultValue:\"Caller\"},callerAvatar:{type:ControlType.Image,title:\"Caller Avatar\"},agentLabel:{type:ControlType.String,title:\"Expertly Label\",defaultValue:\"Expertly\"},agentAvatar:{type:ControlType.Image,title:\"Expertly Avatar\"}}},transcript:{type:ControlType.Array,title:\"Transcript\",control:{type:ControlType.Object,controls:{speaker:{type:ControlType.Enum,title:\"Speaker\",options:[\"caller\",\"agent\"],optionTitles:[\"Caller\",\"Expertly\"],defaultValue:\"caller\"},text:{type:ControlType.String,title:\"Text\",displayTextArea:true,defaultValue:\"\"}}},defaultValue:[{speaker:\"agent\",text:\"Hello, this is Relay Logistics. How can I help you?\"},{speaker:\"caller\",text:\"Hi, I'm calling to check on a shipment of mine. The order number is 84729.\"},{speaker:\"agent\",text:\"Let me pull that up. One moment.\"},{speaker:\"agent\",text:\"I can see your shipment is held at our Newark facility. It looks like the apartment number was missing from the address.\"},{speaker:\"caller\",text:\"Oh, that's right. It's apartment 4B.\"},{speaker:\"agent\",text:\"Got it. I've updated the address and rescheduled delivery for Friday between 9am and 1pm. You'll get a confirmation text shortly.\"},{speaker:\"caller\",text:\"Perfect, thank you.\"}]},typography:{type:ControlType.Object,title:\"Typography\",controls:{titleFont:{type:ControlType.Font,title:\"Title\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:19,fontWeight:700,letterSpacing:\"-0.01em\",lineHeight:\"1.3em\"}},previewIntroFont:{type:ControlType.Font,title:\"Preview Intro\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:17,fontWeight:400,lineHeight:\"1.4em\"}},previewSummaryFont:{type:ControlType.Font,title:\"Preview Summary\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:21,fontWeight:500,lineHeight:\"1.35em\",letterSpacing:\"-0.005em\"}},speakerLabelFont:{type:ControlType.Font,title:\"Speaker Label\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:12,fontWeight:600,letterSpacing:\"0.06em\",lineHeight:\"1.2em\"}},transcriptTextFont:{type:ControlType.Font,title:\"Transcript Text\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,fontWeight:400,lineHeight:\"1.45em\"}},toggleFont:{type:ControlType.Font,title:\"Toggle Link\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,fontWeight:600,lineHeight:\"1.2em\"}}}},colors:{type:ControlType.Object,title:\"Colors\",controls:{accent:{type:ControlType.Color,title:\"Accent Dot\",defaultValue:\"#8428F8\"},tileTop:{type:ControlType.Color,title:\"Tile Gradient Top\",defaultValue:\"#F8EDFF\"},tileBottom:{type:ControlType.Color,title:\"Tile Gradient Bottom\",defaultValue:\"#FDFAFF\"},bodyText:{type:ControlType.Color,title:\"Body Text\",defaultValue:\"#2b1a3f\"},toggleLink:{type:ControlType.Color,title:\"Toggle Link\",defaultValue:\"#8428F8\"}}},effects:{type:ControlType.Object,title:\"Border & Shadow\",controls:{showBorder:{type:ControlType.Boolean,title:\"Show Border\",defaultValue:false},borderColor:{type:ControlType.Color,title:\"Border Color\",defaultValue:\"#E8E8E8\"},shadow:{type:ControlType.BoxShadow,title:\"Shadow\",defaultValue:\"0px 10px 20px 0px rgba(0, 0, 0, 0.06)\"}}},audio:{type:ControlType.Object,title:\"Audio Player\",controls:{file:{type:ControlType.File,title:\"File\",allowedFileTypes:[\"mp3\",\"wav\",\"ogg\",\"aac\",\"m4a\"]},url:{type:ControlType.String,title:\"URL\",placeholder:\"https://your-audio.mp3\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#F8EDFF\"},track:{type:ControlType.Color,title:\"Track\",defaultValue:\"#f4e2ff\"},progress:{type:ControlType.Color,title:\"Progress\",defaultValue:\"#e2bff9\"},icon:{type:ControlType.Color,title:\"Icon\",defaultValue:\"#8428F8\"},autoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:false}}},expandedMaxHeight:{type:ControlType.Number,title:\"Max Transcript Height\",defaultValue:280,min:120,max:600,step:10,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TranscriptTile\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"440\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicHeight\":\"360\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Audio_and_Transcript_Tile.map","// Framer code component: full Expertly Voice section.\n//\n// Owns the entire UI and flow:\n//  - Idle: gradient blob with gentle organic motion, \"Try Expertly Voice Now\"\n//    copy, \"Start Call\" CTA.\n//  - Connecting: brief disabled state while Vapi opens the call.\n//  - Active: blob scales up slightly and its internal wave shader is driven\n//    by the live assistant audio level; button becomes \"End Call\".\n//\n// Uses Vapi's headless web SDK (@vapi-ai/web, v2.5.2 verified on npm) loaded\n// dynamically from esm.sh — no popup, no chip, no third-party UI on the page.\n//\n// All steps log to the console with a [ExpertlyVoice] prefix. If anything\n// fails (SDK load, call start, mic permission) the failure is visible both\n// in the console and as a label on the button.\n//\n// Paste into Framer's code section and drop the component on the page.\n// All copy, colors, and credentials are editable from the Properties panel.\n//\n// ---------- Tunable knobs (search the file) ----------\n//   BLOB_SIZE_PX, END_CALL_GRADIENT — top of file\n//   SCALE_ACTIVE_BOOST, SCALE_AUDIO_KICK, EDGE_WAVE_AUDIO — in FRAGMENT_SRC\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion}from\"framer-motion\";import{useCallback,useEffect,useRef,useState}from\"react\";const VAPI_PUBLIC_KEY=\"850bb952-9c67-4bb4-927f-581883aaa3b0\";const VAPI_ASSISTANT_ID=\"120f6f93-ef71-4ea0-b048-689c9d44bf2c\";const VAPI_SDK_URL=\"https://esm.sh/@vapi-ai/web@2.5.2\";const BLOB_SIZE_PX=180;const START_CALL_GRADIENT=\"linear-gradient(90deg, #8500BA, #009CEB)\";const END_CALL_GRADIENT=\"linear-gradient(90deg, #b1394a, #5a1a2a)\";// ---------- Shaders ----------\nconst VERTEX_SRC=`\n  attribute vec2 aPosition;\n  void main() {\n    gl_Position = vec4(aPosition, 0.0, 1.0);\n  }\n`;const FRAGMENT_SRC=`\n  precision highp float;\n\n  uniform float uTime;\n  uniform float uAudio;\n  uniform float uActive;\n  uniform vec2  uResolution;\n\n  uniform vec3 uColor1;\n  uniform vec3 uColor2;\n  uniform vec3 uColor3;\n  uniform vec3 uColor4;\n\n  // 2D rotation matrix\n  mat2 rot(float a) {\n    float c = cos(a);\n    float s = sin(a);\n    return mat2(c, -s, s, c);\n  }\n\n  // A single rotated wave field. Returns -1..1 ish.\n  // Each color uses its own field, so the four colors occupy different regions\n  // of the canvas at any given moment rather than collapsing into a mid-tone.\n  float waveField(vec2 p, float fx, float fy, float angle, float phase) {\n    vec2 q = rot(angle) * p;\n    return sin(q.x * fx + phase) * 0.5 + sin(q.y * fy + phase * 0.7) * 0.5;\n  }\n\n  // ---------- Tunable parameters ----------\n  // SPEED         — overall time scale of the wave flow\n  // WARP_AMOUNT   — strength of the domain warping (organic swirl)\n  // FREQ_BASE     — base spatial frequency of the wave fields\n  // SHARPNESS     — softmax temperature controlling how distinct the color\n  //                 regions are. Higher = bolder \"ink in water\" contrast,\n  //                 lower = softer blending. 3.5 is a good middle ground.\n  // PURPLE_BIAS   — additive lift on the purple wave inputs before softmax,\n  //                 shifting the equilibrium so purples occupy more area\n  //                 without darkening the actual color values.\n  // AUDIO_BRIGHT  — small additive brightness lift while the agent speaks\n  const float SPEED        = 0.42;\n  const float WARP_AMOUNT  = 0.45;\n  const float FREQ_BASE    = 2.5;\n  const float SHARPNESS    = 3.5;\n  const float PURPLE_BIAS  = 0.30;\n  const float AUDIO_BRIGHT = 0.05;\n\n  // Hard circle mask with ~1.5px antialiased edge.\n  float circleMask(vec2 uv, float radius) {\n    float d = length(uv);\n    float px = 1.5 / min(uResolution.x, uResolution.y);\n    return 1.0 - smoothstep(radius - px, radius + px, d);\n  }\n\n  void main() {\n    vec2 uv = (gl_FragCoord.xy - 0.5 * uResolution) / min(uResolution.x, uResolution.y);\n\n    // Fixed circular boundary at 0.495 of the shorter axis. The radius\n    // never changes here — outer wrapper handles audio-driven scale.\n    float alpha = circleMask(uv, 0.495);\n    if (alpha < 0.001) {\n      gl_FragColor = vec4(0.0);\n      return;\n    }\n\n    // Time is stable across audio peaks; only the call-active state nudges it.\n    float t = uTime * (SPEED + uActive * 0.08);\n\n    // Domain warping: offset the sampling position by a slow secondary wave\n    // field, so the wave fields below curl and drift rather than flowing flat.\n    vec2 warp = vec2(\n      sin(uv.x * 2.0 + t * 0.55) + cos(uv.y * 1.7 + t * 0.42),\n      cos(uv.x * 1.8 - t * 0.31) + sin(uv.y * 2.2 + t * 0.50)\n    ) * WARP_AMOUNT;\n    vec2 p = uv * FREQ_BASE + warp;\n\n    // Four independent wave fields, one per color. Each has its own angle,\n    // frequency, and phase, so they never align — that's what produces the\n    // visible cadence and merging.\n    float w1 = waveField(p, 1.6, 2.1, -0.73, t * 1.00);\n    float w2 = waveField(p, 2.3, 1.4,  0.45, t * 0.85 + 1.7);\n    float w3 = waveField(p, 1.2, 2.8,  1.10, t * 1.15 + 3.2);\n    float w4 = waveField(p, 1.9, 1.7, -0.30, t * 0.95 + 5.1);\n\n    // Softmax distribution over the four wave fields. The dominant wave at\n    // each point gets the lion's share of the weight, which is what produces\n    // the bold \"ink in water\" color regions rather than a flat blend. Because\n    // exp() is monotonically positive, the total is always > 0 and there's\n    // no chance of black gaps anywhere on the surface.\n    //\n    // PURPLE_BIAS is added to the purple wave inputs before exponentiating,\n    // which shifts the equilibrium so the purples occupy more area. The\n    // input colors themselves are untouched, so the colors stay vivid.\n    float e1 = exp((w1 + PURPLE_BIAS) * SHARPNESS);   // uColor1 (purple)\n    float e2 = exp(w2 * SHARPNESS);                   // uColor2 (blue)\n    float e3 = exp((w3 + PURPLE_BIAS) * SHARPNESS);   // uColor3 (magenta)\n    float e4 = exp(w4 * SHARPNESS);                   // uColor4 (deep blue)\n\n    float total = e1 + e2 + e3 + e4;\n    vec3 col = (uColor1 * e1 + uColor2 * e2 + uColor3 * e3 + uColor4 * e4) / total;\n\n    // Very subtle inner highlight for depth.\n    col *= 1.0 + (1.0 - length(uv) / 0.495) * 0.06;\n\n    // Gentle audio brightness lift when the agent is speaking.\n    col += uAudio * AUDIO_BRIGHT;\n\n    gl_FragColor = vec4(col, alpha);\n  }\n`;// ---------- WebGL helpers ----------\nfunction compileShader(gl,type,src){const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,src);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.error(\"[ExpertlyVoice] Shader compile error:\",gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}function createProgram(gl){const vs=compileShader(gl,gl.VERTEX_SHADER,VERTEX_SRC);const fs=compileShader(gl,gl.FRAGMENT_SHADER,FRAGMENT_SRC);if(!vs||!fs)return null;const program=gl.createProgram();if(!program)return null;gl.attachShader(program,vs);gl.attachShader(program,fs);gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.error(\"[ExpertlyVoice] Program link error:\",gl.getProgramInfoLog(program));return null;}return program;}// Parses any CSS color string into [r, g, b] in 0..1 range.\n//\n// We can't rely on hex-only parsing here: Framer's published build pipeline\n// often normalises Color props into \"rgb(...)\" or \"rgba(...)\" strings rather\n// than passing the raw hex the user picked. The editor canvas keeps hex, so\n// a hex-only parser will silently fail in production while looking fine in\n// the editor — which is exactly the symptom that turned the blob black on\n// the live site.\n//\n// Approach: fast path for \"#RGB\"/\"#RRGGBB\", canvas-based fallback for\n// anything else (rgb, rgba, hsl, hsla, named colors). Results are cached so\n// the 60fps render loop doesn't re-parse the same string every frame.\nconst colorCache=new Map;let colorCanvas=null;let colorCtx=null;function parseColor(input){if(!input)return[0,0,0];const cached=colorCache.get(input);if(cached)return cached;let result=[0,0,0];// Fast path: hex strings\nif(input.charCodeAt(0)===35/* '#' */){const h=input.slice(1);if(h.length===3){result=[parseInt(h[0]+h[0],16)/255,parseInt(h[1]+h[1],16)/255,parseInt(h[2]+h[2],16)/255];colorCache.set(input,result);return result;}if(h.length===6||h.length===8){result=[parseInt(h.slice(0,2),16)/255,parseInt(h.slice(2,4),16)/255,parseInt(h.slice(4,6),16)/255];colorCache.set(input,result);return result;}}// Slow path: hand the string to the browser via a 1x1 canvas. Works for\n// rgb(), rgba(), hsl(), hsla(), and CSS named colors.\nif(typeof document!==\"undefined\"){if(!colorCtx){colorCanvas=document.createElement(\"canvas\");colorCanvas.width=1;colorCanvas.height=1;// willReadFrequently quiets the Canvas2D readback warning the browser\n// emits when getImageData runs repeatedly on the same canvas.\ncolorCtx=colorCanvas.getContext(\"2d\",{willReadFrequently:true});}if(colorCtx){colorCtx.clearRect(0,0,1,1);colorCtx.fillStyle=input;colorCtx.fillRect(0,0,1,1);const data=colorCtx.getImageData(0,0,1,1).data;result=[data[0]/255,data[1]/255,data[2]/255];}}colorCache.set(input,result);return result;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function ExpertlyVoiceBlock(props){const{heading,description,headingFont,headingColor,bodyFont,bodyColor,footerFont,footerColor,ctaIdleLabel,ctaConnectingLabel,ctaActiveLabel,ctaLoadingLabel,ctaErrorLabel,dialPrefix,dialNumber,assistantID,publicKey,color1,color2,color3,color4,cardBgTop,cardBgBottom,footerBackground}=props;const[callState,setCallState]=useState(\"idle\");const[sdkReady,setSdkReady]=useState(false);const[loadError,setLoadError]=useState(null);const vapiRef=useRef(null);const canvasRef=useRef(null);// The blob wrapper has its scale updated each frame from the RAF loop so it\n// can respond to live audio level. Using a ref + direct transform write\n// avoids re-rendering on every audio event.\nconst wrapperRef=useRef(null);// Hover overlay (the \"Start Call\" label that fades in on hover) and the\n// smoothed hover value that drives both its opacity and its contribution\n// to the wrapper scale.\nconst overlayRef=useRef(null);const hoverTargetRef=useRef(0);const hoverSmoothRef=useRef(0);// True when the blob is actionable as a \"Start Call\" trigger (idle, no\n// error, SDK ready). Synced from React state via the effect below so the\n// RAF loop can read it without re-creating the loop on every state change.\nconst canStartFromBlobRef=useRef(false);const audioTargetRef=useRef(0);const audioSmoothRef=useRef(0);const activeTargetRef=useRef(0);const activeSmoothRef=useRef(0);// Keep the \"can start a call from the blob\" flag in sync with state. The\n// RAF loop reads this without needing to be re-created on every state change.\nuseEffect(()=>{canStartFromBlobRef.current=callState===\"idle\"&&!loadError&&sdkReady;},[callState,loadError,sdkReady]);// ----- Vapi lifecycle (dynamic import for robust error handling) -----\nuseEffect(()=>{if(typeof window===\"undefined\")return;let cancelled=false;let v=null;(async()=>{try{console.log(\"[ExpertlyVoice] Loading Vapi SDK from\",VAPI_SDK_URL);// @ts-ignore — dynamic URL import resolved at runtime\nconst mod=await import(/* @vite-ignore *//* webpackIgnore: true */VAPI_SDK_URL);if(cancelled)return;const VapiClass=mod.default||mod.Vapi||mod;if(typeof VapiClass!==\"function\"){throw new Error(\"Vapi SDK loaded but default export is not a constructor\");}console.log(\"[ExpertlyVoice] Vapi SDK loaded, instantiating with public key\");v=new VapiClass(publicKey);vapiRef.current=v;v.on(\"call-start\",()=>{console.log(\"[ExpertlyVoice] event: call-start\");setCallState(\"active\");activeTargetRef.current=1;});v.on(\"call-end\",()=>{console.log(\"[ExpertlyVoice] event: call-end\");setCallState(\"idle\");activeTargetRef.current=0;audioTargetRef.current=0;});v.on(\"volume-level\",vol=>{audioTargetRef.current=Math.max(0,Math.min(1,vol));});v.on(\"error\",e=>{console.error(\"[ExpertlyVoice] event: error\",e);setCallState(\"idle\");activeTargetRef.current=0;audioTargetRef.current=0;});v.on(\"speech-start\",()=>console.log(\"[ExpertlyVoice] event: speech-start\"));v.on(\"speech-end\",()=>console.log(\"[ExpertlyVoice] event: speech-end\"));console.log(\"[ExpertlyVoice] Vapi ready\");setSdkReady(true);}catch(err){console.error(\"[ExpertlyVoice] Failed to load or init Vapi SDK:\",err);if(!cancelled)setLoadError(err?.message||String(err));}})();return()=>{cancelled=true;if(v){try{v.stop();}catch{/* no-op if no active call */}}};},[publicKey]);// ----- Shader render loop -----\nuseEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const gl=canvas.getContext(\"webgl\",{premultipliedAlpha:true,antialias:true});if(!gl){console.warn(\"[ExpertlyVoice] WebGL not supported in this browser\");return;}const program=createProgram(gl);if(!program)return;const buffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),gl.STATIC_DRAW);gl.useProgram(program);const aPos=gl.getAttribLocation(program,\"aPosition\");gl.enableVertexAttribArray(aPos);gl.vertexAttribPointer(aPos,2,gl.FLOAT,false,0,0);const uTime=gl.getUniformLocation(program,\"uTime\");const uAudio=gl.getUniformLocation(program,\"uAudio\");const uActive=gl.getUniformLocation(program,\"uActive\");const uRes=gl.getUniformLocation(program,\"uResolution\");const uC1=gl.getUniformLocation(program,\"uColor1\");const uC2=gl.getUniformLocation(program,\"uColor2\");const uC3=gl.getUniformLocation(program,\"uColor3\");const uC4=gl.getUniformLocation(program,\"uColor4\");gl.enable(gl.BLEND);gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);const resize=()=>{const dpr=Math.min(window.devicePixelRatio||1,2);const cssSize=canvas.clientWidth||BLOB_SIZE_PX;const w=Math.floor(cssSize*dpr);const h=Math.floor(cssSize*dpr);if(canvas.width!==w||canvas.height!==h){canvas.width=w;canvas.height=h;gl.viewport(0,0,w,h);}};let raf=0;const start=performance.now();const render=()=>{resize();audioSmoothRef.current+=(audioTargetRef.current-audioSmoothRef.current)*.18;activeSmoothRef.current+=(activeTargetRef.current-activeSmoothRef.current)*.06;hoverSmoothRef.current+=(hoverTargetRef.current-hoverSmoothRef.current)*.15;// Calm audio-reactive scale on the wrapper. Active state contributes a\n// small steady boost while a call is live; audio pulses on top of that;\n// hover adds a subtle bump so the blob feels alive to the cursor.\nif(wrapperRef.current){const scale=1+activeSmoothRef.current*.03+audioSmoothRef.current*.08+hoverSmoothRef.current*.04;wrapperRef.current.style.transform=`scale(${scale})`;}// Overlay \"Start Call\" label fades in on hover when the blob is in a\n// state where clicking it would start a call. During a call, connecting,\n// or in an error state we keep it hidden — the button below is the\n// authoritative control there.\nif(overlayRef.current){overlayRef.current.style.opacity=canStartFromBlobRef.current?String(hoverSmoothRef.current):\"0\";}const t=(performance.now()-start)/1e3;gl.uniform1f(uTime,t);gl.uniform1f(uAudio,audioSmoothRef.current);gl.uniform1f(uActive,activeSmoothRef.current);gl.uniform2f(uRes,canvas.width,canvas.height);const c1=parseColor(color1);const c2=parseColor(color2);const c3=parseColor(color3);const c4=parseColor(color4);gl.uniform3f(uC1,c1[0],c1[1],c1[2]);gl.uniform3f(uC2,c2[0],c2[1],c2[2]);gl.uniform3f(uC3,c3[0],c3[1],c3[2]);gl.uniform3f(uC4,c4[0],c4[1],c4[2]);gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);gl.drawArrays(gl.TRIANGLES,0,6);raf=requestAnimationFrame(render);};raf=requestAnimationFrame(render);return()=>cancelAnimationFrame(raf);},[color1,color2,color3,color4]);// ----- Click handler -----\nconst handleClick=useCallback(async()=>{console.log(\"[ExpertlyVoice] Click. state:\",callState,\"ready:\",sdkReady,\"error:\",loadError);if(loadError){console.warn(\"[ExpertlyVoice] SDK failed to load, cannot start call\");return;}if(!vapiRef.current||!sdkReady){console.warn(\"[ExpertlyVoice] SDK not ready yet\");return;}if(callState===\"idle\"){setCallState(\"connecting\");try{console.log(\"[ExpertlyVoice] Starting call with assistant:\",assistantID);await vapiRef.current.start(assistantID);console.log(\"[ExpertlyVoice] start() resolved\");}catch(e){console.error(\"[ExpertlyVoice] start() threw:\",e);setCallState(\"idle\");}}else{try{console.log(\"[ExpertlyVoice] Stopping call\");vapiRef.current.stop();}catch(e){console.error(\"[ExpertlyVoice] stop() threw:\",e);}setCallState(\"idle\");activeTargetRef.current=0;audioTargetRef.current=0;}},[callState,assistantID,sdkReady,loadError]);const isActive=callState===\"active\";const isConnecting=callState===\"connecting\";const isDisabled=isConnecting||!sdkReady||!!loadError;const buttonLabel=loadError?ctaErrorLabel:!sdkReady?ctaLoadingLabel:isActive?ctaActiveLabel:isConnecting?ctaConnectingLabel:ctaIdleLabel;return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",fontFamily:'-apple-system, system-ui, \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif'},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n        .expertly-voice-card-inner {\n          padding: 50px 30px;\n        }\n        .expertly-voice-card-footer {\n          padding: 30px 30px;\n        }\n        @media (max-width: 640px) {\n          .expertly-voice-card-inner {\n            padding: 30px 20px;\n          }\n          .expertly-voice-card-footer {\n            padding: 30px 20px;\n          }\n        }\n      `}),/*#__PURE__*/_jsxs(\"div\",{style:{background:`linear-gradient(180deg, ${cardBgTop}, ${cardBgBottom})`,borderRadius:24,overflow:\"hidden\"},children:[/*#__PURE__*/_jsxs(\"div\",{className:\"expertly-voice-card-inner\",style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",textAlign:\"center\"},children:[/*#__PURE__*/_jsxs(\"div\",{ref:wrapperRef,onClick:handleClick,onMouseEnter:()=>{hoverTargetRef.current=1;},onMouseLeave:()=>{hoverTargetRef.current=0;},style:{position:\"relative\",width:BLOB_SIZE_PX,height:BLOB_SIZE_PX,cursor:\"pointer\",// willChange hints the browser to GPU-accelerate transform updates\nwillChange:\"transform\",transformOrigin:\"center center\"},children:[/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\"}}),/*#__PURE__*/_jsx(\"div\",{ref:overlayRef,style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",pointerEvents:\"none\",opacity:0,color:\"#ffffff\",fontSize:18,fontWeight:600,letterSpacing:\"0.01em\",textShadow:\"0 1px 6px rgba(0, 0, 0, 0.35)\"},children:ctaIdleLabel})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:28,marginTop:20},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:14},children:[/*#__PURE__*/_jsx(\"h2\",{style:{margin:0,...headingFont,color:headingColor},children:heading}),/*#__PURE__*/_jsx(\"p\",{style:{margin:0,maxWidth:520,// text-wrap: balance distributes words across lines so the\n// last line isn't a runt. Supported in Chrome 114+, Firefox\n// 121+, Safari 17.5+. Falls back to normal wrapping elsewhere.\ntextWrap:\"balance\",...bodyFont,color:bodyColor},children:description})]}),/*#__PURE__*/_jsx(motion.button,{onClick:handleClick,disabled:isDisabled,whileHover:{scale:isDisabled?1:1.03},whileTap:{scale:isDisabled?1:.97},style:{border:0,padding:\"16px 32px\",borderRadius:999,color:\"#ffffff\",fontSize:16,fontWeight:600,cursor:isDisabled?\"default\":\"pointer\",display:\"inline-flex\",alignItems:\"center\",background:loadError?\"linear-gradient(90deg, #6a6a78, #3a3a48)\":isActive?END_CALL_GRADIENT:START_CALL_GRADIENT,boxShadow:isActive?\"0 8px 24px rgba(160, 40, 60, 0.30)\":\"0 8px 24px rgba(80, 40, 180, 0.28)\",opacity:isDisabled?.7:1,transition:\"background 400ms ease, box-shadow 400ms ease, opacity 200ms ease\"},children:/*#__PURE__*/_jsx(\"span\",{children:buttonLabel})})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"expertly-voice-card-footer\",style:{background:footerBackground,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",gap:10,color:footerColor},children:[/*#__PURE__*/_jsx(DialpadIcon,{}),/*#__PURE__*/_jsxs(\"span\",{style:{...footerFont,color:footerColor},children:[dialPrefix,\" \",/*#__PURE__*/_jsx(\"strong\",{children:dialNumber})]})]})]})]});}// ---------- Icons ----------\nfunction DialpadIcon(){return /*#__PURE__*/_jsx(\"svg\",{width:\"14\",height:\"14\",viewBox:\"0 0 14 14\",fill:\"currentColor\",opacity:\"0.55\",\"aria-hidden\":true,children:[0,1,2].map(y=>[0,1,2].map(x=>/*#__PURE__*/_jsx(\"circle\",{cx:x*5+2,cy:y*5+2,r:1.2},`${x}-${y}`)))});}// ---------- Property controls ----------\naddPropertyControls(ExpertlyVoiceBlock,{heading:{type:ControlType.String,title:\"Heading\",defaultValue:\"Try Expertly Voice Now\"},description:{type:ControlType.String,title:\"Description\",defaultValue:\"Tell us what you'd love to automate, ask about our products, or get creative.\"},headingFont:{type:ControlType.Font,title:\"Heading Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:32,variant:\"Bold\",letterSpacing:\"-0.01em\",lineHeight:\"1.15em\"}},headingColor:{type:ControlType.Color,title:\"Heading Color\",defaultValue:\"#0a0a14\"},bodyFont:{type:ControlType.Font,title:\"Body Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:17,variant:\"Regular\",lineHeight:\"1.5em\"}},bodyColor:{type:ControlType.Color,title:\"Body Color\",defaultValue:\"#3a3a4a\"},footerFont:{type:ControlType.Font,title:\"Footer Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:15,variant:\"Regular\"}},footerColor:{type:ControlType.Color,title:\"Footer Color\",defaultValue:\"#3a3a4a\"},ctaIdleLabel:{type:ControlType.String,title:\"Idle Label\",defaultValue:\"Start Call\"},ctaConnectingLabel:{type:ControlType.String,title:\"Connecting Label\",defaultValue:\"Connecting…\"},ctaActiveLabel:{type:ControlType.String,title:\"Active Label\",defaultValue:\"End Call\"},ctaLoadingLabel:{type:ControlType.String,title:\"Loading Label\",defaultValue:\"Loading…\"},ctaErrorLabel:{type:ControlType.String,title:\"Error Label\",defaultValue:\"Unavailable\"},dialPrefix:{type:ControlType.String,title:\"Dial Prefix\",defaultValue:\"Or Dial\"},dialNumber:{type:ControlType.String,title:\"Dial Number\",defaultValue:\"269-EXPERTLY\"},publicKey:{type:ControlType.String,title:\"Vapi Public Key\",defaultValue:VAPI_PUBLIC_KEY},assistantID:{type:ControlType.String,title:\"Assistant ID\",defaultValue:VAPI_ASSISTANT_ID},color1:{type:ControlType.Color,title:\"Color 1\",defaultValue:\"#790FBE\"},color2:{type:ControlType.Color,title:\"Color 2\",defaultValue:\"#0397E9\"},color3:{type:ControlType.Color,title:\"Color 3\",defaultValue:\"#A600FF\"},color4:{type:ControlType.Color,title:\"Color 4\",defaultValue:\"#0044FF\"},cardBgTop:{type:ControlType.Color,title:\"Card BG Top\",defaultValue:\"#F4F2FF\"},cardBgBottom:{type:ControlType.Color,title:\"Card BG Bottom\",defaultValue:\"#FBFAFF\"},footerBackground:{type:ControlType.Color,title:\"Footer BG\",defaultValue:\"#F1F0FF\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ExpertlyVoiceBlock\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ExpertlyVoiceBlock.map"],"mappings":"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"}