gotcha-feedback 1.0.19 → 1.1.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.
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import {createContext,useState,useMemo,useCallback,useRef,useEffect,useContext}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {createPortal}from'react-dom';var we="https://gotcha.cx/api/v1";var ce={ANONYMOUS_ID:"gotcha_anonymous_id"},P={POSITION:"top-right",SIZE:"md",THEME:"light",SHOW_ON_HOVER:true,TOUCH_BEHAVIOR:"always-visible",SUBMIT_TEXT:"Submit",THANK_YOU_MESSAGE:"Thanks for your feedback!"};var Q={MAX_RETRIES:2,BASE_DELAY_MS:500,MAX_DELAY_MS:5e3};function Te(){if(typeof window>"u")return `anon_${crypto.randomUUID()}`;let e=localStorage.getItem(ce.ANONYMOUS_ID);if(e)return e;let a=`anon_${crypto.randomUUID()}`;return localStorage.setItem(ce.ANONYMOUS_ID,a),a}var q={maxRetries:Q.MAX_RETRIES,baseDelayMs:Q.BASE_DELAY_MS,maxDelayMs:Q.MAX_DELAY_MS};async function de(e,a,c=q,o=false){let g=null;for(let b=0;b<=c.maxRetries;b++){try{o&&b>0&&console.log(`[Gotcha] Retry attempt ${b}/${c.maxRetries}`);let t=await fetch(e,a);if(t.status>=400&&t.status<500&&t.status!==429||t.ok)return t;g=new Error(`HTTP ${t.status}`);}catch(t){g=t,o&&console.log(`[Gotcha] Network error: ${g.message}`);}if(b<c.maxRetries){let t=Math.min(c.baseDelayMs*Math.pow(2,b),c.maxDelayMs);await new Promise(i=>setTimeout(i,t));}}throw g}function Ce(e){let{apiKey:a,baseUrl:c=we,debug:o=false}=e,g={"Content-Type":"application/json",Authorization:`Bearer ${a}`};async function b(t,i,l){let r=`${c}${i}`,d=crypto.randomUUID();o&&console.log(`[Gotcha] ${t} ${i}`,l);let s=await de(r,{method:t,headers:{...g,"Idempotency-Key":d},body:l?JSON.stringify(l):void 0},q,o),u=await s.json();if(!s.ok){let p=u.error;throw o&&console.error(`[Gotcha] Error: ${p.code} - ${p.message}`),p}return o&&console.log("[Gotcha] Response:",u),u}return {async submitResponse(t){let i=t.user||{};i.id||(i.id=Te());let l={...t,user:i,context:{url:typeof window<"u"?window.location.href:void 0,userAgent:typeof navigator<"u"?navigator.userAgent:void 0}};return b("POST","/responses",l)},async checkExistingResponse(t,i){let l=`${c}/responses/check?elementId=${encodeURIComponent(t)}&userId=${encodeURIComponent(i)}`;o&&console.log("[Gotcha] GET /responses/check");let r=await de(l,{method:"GET",headers:g},q,o),d=await r.json();if(!r.ok){let s=d.error;throw o&&console.error(`[Gotcha] Error: ${s.code} - ${s.message}`),s}return d.exists?(o&&console.log("[Gotcha] Found existing response:",d.response),d.response):null},async updateResponse(t,i,l){let r=`${c}/responses/${t}${l?`?userId=${encodeURIComponent(l)}`:""}`;o&&console.log(`[Gotcha] PATCH /responses/${t}`,i);let d=await de(r,{method:"PATCH",headers:g,body:JSON.stringify(i)},q,o),s=await d.json();if(!d.ok){let u=s.error;throw o&&console.error(`[Gotcha] Error: ${u.code} - ${u.message}`),u}return o&&console.log("[Gotcha] Response updated:",s),s},getBaseUrl(){return c}}}var Ge=createContext(null);function Xe({apiKey:e,children:a,baseUrl:c,debug:o=false,disabled:g=false,defaultUser:b={}}){let[t,i]=useState(null),l=useMemo(()=>Ce({apiKey:e,baseUrl:c,debug:o}),[e,c,o]),r=useCallback(u=>{i(u);},[]),d=useCallback(()=>{i(null);},[]),s=useMemo(()=>({client:l,disabled:g,defaultUser:b,debug:o,activeModalId:t,openModal:r,closeModal:d}),[l,g,b,o,t,r,d]);return jsx(Ge.Provider,{value:s,children:a})}function B(){let e=useContext(Ge);if(!e)throw new Error("useGotchaContext must be used within a GotchaProvider");return e}function Pe(e){let{client:a,defaultUser:c}=B(),[o,g]=useState(false),[b,t]=useState(false),[i,l]=useState(null),[r,d]=useState(null);return useEffect(()=>{let u=e.user?.id||c?.id;if(!u){d(null);return}let p=false;return (async()=>{t(true);try{let f=await a.checkExistingResponse(e.elementId,u);p||d(f);}catch{p||d(null);}finally{p||t(false);}})(),()=>{p=true;}},[a,e.elementId,e.user?.id,c?.id]),{submit:useCallback(async u=>{g(true),l(null);try{let p=e.user?.id||c?.id,m;return r&&p?m=await a.updateResponse(r.id,{content:u.content,title:u.title,rating:u.rating,vote:u.vote,pollSelected:u.pollSelected},p):m=await a.submitResponse({elementId:e.elementId,mode:e.mode,content:u.content,title:u.title,rating:u.rating,vote:u.vote,pollOptions:e.pollOptions,pollSelected:u.pollSelected,user:{...c,...e.user}}),e.onSuccess?.(m),m}catch(p){let m=p instanceof Error?p.message:"Something went wrong";throw l(m),e.onError?.(p instanceof Error?p:new Error(m)),p}finally{g(false);}},[a,c,e,r]),isLoading:o,isCheckingExisting:b,error:i,existingResponse:r,isEditing:!!r,clearError:()=>l(null)}}function J(...e){return e.filter(Boolean).join(" ")}var A=()=>typeof window>"u"?false:"ontouchstart"in window||navigator.maxTouchPoints>0,Ae=(e,a)=>{let c={sm:{desktop:24,mobile:32},md:{desktop:32,mobile:36},lg:{desktop:40,mobile:40}};return a?c[e].mobile:c[e].desktop};function Je(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function De({size:e,theme:a,customStyles:c,showOnHover:o,touchBehavior:g,onClick:b,isOpen:t,isParentHovered:i=false}){let[l,r]=useState(false),[d,s]=useState(false),[u,p]=useState(Je);useEffect(()=>{r(A());let M=window.matchMedia("(prefers-color-scheme: dark)"),h=I=>p(I.matches?"dark":"light");return M.addEventListener("change",h),()=>M.removeEventListener("change",h)},[]);let m=t?true:!l&&o?i:l&&g==="tap-to-reveal"?d:true,f=()=>{if(l&&g==="tap-to-reveal"&&!d){s(true);return}b();},n=Ae(e,l),v=(a==="auto"?u:a)==="dark",C={width:n,height:n,borderRadius:"50%",border:v?"1px solid rgba(255,255,255,0.15)":"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",background:v?"linear-gradient(180deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0.04) 60%, rgba(0,0,0,0.05) 100%)":"linear-gradient(160deg, rgba(255,255,255,0.7) 0%, rgba(200,210,230,0.4) 40%, rgba(180,192,220,0.5) 100%)",backdropFilter:"blur(16px) saturate(170%)",WebkitBackdropFilter:"blur(16px) saturate(170%)",color:v?"rgba(255,255,255,0.88)":"rgba(0,0,0,0.75)",boxShadow:v?"0 4px 14px rgba(0,0,0,0.45), 0 1px 3px rgba(0,0,0,0.35)":"0 3px 12px rgba(0,0,0,0.12), 0 0 1px rgba(0,0,0,0.2)",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",opacity:m?1:0,transform:m?"scale(1)":"scale(0.6)",pointerEvents:m?"auto":"none",...c?.button};return jsx("button",{type:"button",onClick:f,style:C,className:J("gotcha-button",t&&"gotcha-button--open"),"aria-label":"Give feedback on this feature","aria-expanded":t,"aria-haspopup":"dialog",children:jsx(tt,{size:n*.65})})}var Oe="gotcha-carter-one";function et(){useEffect(()=>{if(document.getElementById(Oe))return;let e=document.createElement("link");e.id=Oe,e.rel="stylesheet",e.href="https://fonts.googleapis.com/css2?family=Carter+One&display=swap",document.head.appendChild(e);},[]);}function tt({size:e}){return et(),jsx("span",{"aria-hidden":"true",style:{fontFamily:"'Carter One', cursive",fontSize:e,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",marginTop:e*.05,marginRight:e*.05,userSelect:"none"},children:"G"})}function L({size:e=16,color:a="currentColor"}){return jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",style:{animation:"gotcha-spin 0.8s linear infinite"},children:[jsx("style",{children:`
1
+ import {createContext,useState,useMemo,useCallback,useRef,useEffect,useContext}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {createPortal}from'react-dom';var Fe="https://gotcha.cx/api/v1";var we={ANONYMOUS_ID:"gotcha_anonymous_id",OFFLINE_QUEUE:"gotcha_offline_queue"},N={POSITION:"top-right",SIZE:"md",THEME:"light",SHOW_ON_HOVER:true,TOUCH_BEHAVIOR:"always-visible",SUBMIT_TEXT:"Submit",THANK_YOU_MESSAGE:"Thanks for your feedback!"};var fe={MAX_RETRIES:2,BASE_DELAY_MS:500,MAX_DELAY_MS:5e3};function Ne(){if(typeof window>"u")return `anon_${crypto.randomUUID()}`;try{let e=localStorage.getItem(we.ANONYMOUS_ID);if(e)return e;let r=`anon_${crypto.randomUUID()}`;return localStorage.setItem(we.ANONYMOUS_ID,r),r}catch{return `anon_${crypto.randomUUID()}`}}var Q={maxRetries:fe.MAX_RETRIES,baseDelayMs:fe.BASE_DELAY_MS,maxDelayMs:fe.MAX_DELAY_MS};async function oe(e,r,s=Q,o=false){let b=null;for(let g=0;g<=s.maxRetries;g++){try{o&&g>0&&console.log(`[Gotcha] Retry attempt ${g}/${s.maxRetries}`);let t=await fetch(e,r);if(t.status>=400&&t.status<500&&t.status!==429||t.ok)return t;b=new Error(`HTTP ${t.status}`);}catch(t){b=t,o&&console.log(`[Gotcha] Network error: ${b.message}`);}if(g<s.maxRetries){let t=Math.min(s.baseDelayMs*Math.pow(2,g),s.maxDelayMs);await new Promise(u=>setTimeout(u,t));}}throw b}function He(e){let{apiKey:r,baseUrl:s=Fe,debug:o=false}=e,b={"Content-Type":"application/json",Authorization:`Bearer ${r}`};async function g(t,u,a){let n=`${s}${u}`,l=crypto.randomUUID();o&&console.log(`[Gotcha] ${t} ${u}`,a);let f=await oe(n,{method:t,headers:{...b,"Idempotency-Key":l},body:a?JSON.stringify(a):void 0},Q,o),i;try{i=await f.json();}catch{throw {code:"PARSE_ERROR",message:"Invalid response from server",status:f.status}}if(!f.ok){let d=i.error;throw o&&console.error(`[Gotcha] Error: ${d.code} - ${d.message}`),d}return o&&console.log("[Gotcha] Response:",i),i}return {async submitResponse(t){let u=t.user||{};u.id||(u.id=Ne());let a={...t,user:u,context:{url:typeof window<"u"?window.location.href:void 0,userAgent:typeof navigator<"u"?navigator.userAgent:void 0},...t.isBug?{isBug:true}:{}};return g("POST","/responses",a)},async checkExistingResponse(t,u){let a=`${s}/responses/check?elementId=${encodeURIComponent(t)}&userId=${encodeURIComponent(u)}`;o&&console.log("[Gotcha] GET /responses/check");let n=await oe(a,{method:"GET",headers:b},Q,o),l=await n.json();if(!n.ok){let f=l.error;throw o&&console.error(`[Gotcha] Error: ${f.code} - ${f.message}`),f}return l.exists?(o&&console.log("[Gotcha] Found existing response:",l.response),l.response):null},async updateResponse(t,u,a){let n=`${s}/responses/${t}${a?`?userId=${encodeURIComponent(a)}`:""}`;o&&console.log(`[Gotcha] PATCH /responses/${t}`,u);let l=await oe(n,{method:"PATCH",headers:b,body:JSON.stringify(u)},Q,o),f=await l.json();if(!l.ok){let i=f.error;throw o&&console.error(`[Gotcha] Error: ${i.code} - ${i.message}`),i}return o&&console.log("[Gotcha] Response updated:",f),f},async getScore(t){let u=`${s}/scores/${encodeURIComponent(t)}`;o&&console.log(`[Gotcha] GET /scores/${t}`);let a=await oe(u,{method:"GET",headers:b},Q,o),n=await a.json();if(!a.ok){let l=n.error;throw o&&console.error(`[Gotcha] Error: ${l.code} - ${l.message}`),l}return o&&console.log("[Gotcha] Score:",n),n},async flagAsBug(t){let u=`${s}/responses/${encodeURIComponent(t)}/bug`;o&&console.log(`[Gotcha] POST /responses/${t}/bug`);let a=await oe(u,{method:"POST",headers:b},Q,o),n=await a.json();if(!a.ok){let l=n.error;throw o&&console.error(`[Gotcha] Error: ${l.code} - ${l.message}`),l}return o&&console.log("[Gotcha] Bug flagged:",n),n},getBaseUrl(){return s}}}var Ve=createContext(null);function pt({apiKey:e,children:r,baseUrl:s,debug:o=false,disabled:b=false,defaultUser:g={}}){let[t,u]=useState(null),a=useMemo(()=>He({apiKey:e,baseUrl:s,debug:o}),[e,s,o]),n=useCallback(i=>{u(i);},[]),l=useCallback(()=>{u(null);},[]),f=useMemo(()=>({client:a,disabled:b,defaultUser:g,debug:o,activeModalId:t,openModal:n,closeModal:l}),[a,b,g,o,t,n,l]);return jsx(Ve.Provider,{value:f,children:r})}function H(){let e=useContext(Ve);if(!e)throw new Error("useGotchaContext must be used within a GotchaProvider");return e}function je(e){let{client:r,defaultUser:s}=H(),[o,b]=useState(false),[g,t]=useState(false),[u,a]=useState(null),[n,l]=useState(null);return useEffect(()=>{let i=e.user?.id||s?.id;if(!i){l(null);return}let d=false;return (async()=>{t(true);try{let p=await r.checkExistingResponse(e.elementId,i);d||l(p);}catch{d||l(null);}finally{d||t(false);}})(),()=>{d=true;}},[r,e.elementId,e.user?.id,s?.id]),{submit:useCallback(async i=>{b(true),a(null);try{let d=e.user?.id||s?.id,y;return n&&d?y=await r.updateResponse(n.id,{content:i.content,title:i.title,rating:i.rating,vote:i.vote,pollSelected:i.pollSelected},d):y=await r.submitResponse({elementId:e.elementId,mode:e.mode,content:i.content,title:i.title,rating:i.rating,vote:i.vote,pollOptions:e.pollOptions,pollSelected:i.pollSelected,isBug:i.isBug,user:{...s,...e.user}}),l({id:y.id,mode:e.mode,content:i.content??null,title:i.title??null,rating:i.rating??null,vote:i.vote??null,pollSelected:i.pollSelected??null,createdAt:y.createdAt}),e.onSuccess?.(y),y}catch(d){let y=d instanceof Error?d.message:"Something went wrong";throw a(y),e.onError?.(d instanceof Error?d:new Error(y)),d}finally{b(false);}},[r,s,e,n]),isLoading:o,isCheckingExisting:g,error:u,existingResponse:n,isEditing:!!n,clearError:()=>a(null)}}function ge(...e){return e.filter(Boolean).join(" ")}var D=()=>typeof window>"u"?false:"ontouchstart"in window||navigator.maxTouchPoints>0,Ke=(e,r)=>{let s={sm:{desktop:24,mobile:32},md:{desktop:32,mobile:36},lg:{desktop:40,mobile:40}};return r?s[e].mobile:s[e].desktop};function mt(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function qe({size:e,theme:r,customStyles:s,showOnHover:o,touchBehavior:b,onClick:g,isOpen:t,isParentHovered:u=false}){let[a,n]=useState(false),[l,f]=useState(false),[i,d]=useState(mt);useEffect(()=>{n(D());let h=window.matchMedia("(prefers-color-scheme: dark)"),M=x=>d(x.matches?"dark":"light");return h.addEventListener("change",M),()=>h.removeEventListener("change",M)},[]);let y=t?true:!a&&o?u:a&&b==="tap-to-reveal"?l:true,p=()=>{if(a&&b==="tap-to-reveal"&&!l){f(true);return}g();},c=Ke(e,a),v=(r==="auto"?i:r)==="dark",S={width:c,height:c,borderRadius:"50%",border:v?"1px solid rgba(255,255,255,0.15)":"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",background:v?"linear-gradient(180deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0.04) 60%, rgba(0,0,0,0.05) 100%)":"linear-gradient(160deg, rgba(255,255,255,0.7) 0%, rgba(200,210,230,0.4) 40%, rgba(180,192,220,0.5) 100%)",backdropFilter:"blur(16px) saturate(170%)",WebkitBackdropFilter:"blur(16px) saturate(170%)",color:v?"rgba(255,255,255,0.88)":"rgba(0,0,0,0.75)",boxShadow:v?"0 4px 14px rgba(0,0,0,0.45), 0 1px 3px rgba(0,0,0,0.35)":"0 3px 12px rgba(0,0,0,0.12), 0 0 1px rgba(0,0,0,0.2)",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",opacity:y?1:0,transform:y?"scale(1)":"scale(0.6)",pointerEvents:y?"auto":"none",...s?.button};return jsx("button",{type:"button",onClick:p,style:S,className:ge("gotcha-button",t&&"gotcha-button--open"),"aria-label":"Give feedback on this feature","aria-expanded":t,"aria-haspopup":"dialog",children:jsx(St,{size:c*.65})})}var Qe="gotcha-carter-one";function yt(){useEffect(()=>{if(document.getElementById(Qe))return;let e=document.createElement("link");e.id=Qe,e.rel="stylesheet",e.href="https://fonts.googleapis.com/css2?family=Carter+One&display=swap",document.head.appendChild(e);},[]);}function St({size:e}){return yt(),jsx("span",{"aria-hidden":"true",style:{fontFamily:"'Carter One', cursive",fontSize:e,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",marginTop:e*.05,marginRight:e*.05,userSelect:"none"},children:"G"})}function _({size:e=16,color:r="currentColor"}){return jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",style:{animation:"gotcha-spin 0.8s linear infinite"},children:[jsx("style",{children:`
2
2
  @keyframes gotcha-spin {
3
3
  from { transform: rotate(0deg); }
4
4
  to { transform: rotate(360deg); }
@@ -8,5 +8,5 @@ import {createContext,useState,useMemo,useCallback,useRef,useEffect,useContext}f
8
8
  50% { stroke-dasharray: 40, 62; stroke-dashoffset: -12; }
9
9
  100% { stroke-dasharray: 1, 62; stroke-dashoffset: -62; }
10
10
  }
11
- `}),jsx("circle",{cx:"12",cy:"12",r:"10",stroke:a,strokeWidth:"2",strokeOpacity:"0.12"}),jsx("circle",{cx:"12",cy:"12",r:"10",stroke:a,strokeWidth:"2",strokeLinecap:"round",style:{animation:"gotcha-dash 1.2s ease-in-out infinite"}})]})}function ze({theme:e,placeholder:a,submitText:c,isLoading:o,onSubmit:g,customStyles:b,initialValues:t,isEditing:i=false,showText:l=true,showRating:r=true}){let[d,s]=useState(t?.content||""),[u,p]=useState(t?.rating??null),[m,f]=useState(false);useEffect(()=>{f(A());},[]),useEffect(()=>{t?.content!==void 0&&s(t.content||""),t?.rating!==void 0&&p(t.rating??null);},[t?.content,t?.rating]);let n=e==="dark",S=l&&r?d.trim().length>0||u!==null:l?d.trim().length>0:r?u!==null:false,v=h=>{h.preventDefault(),S&&g({content:l&&d.trim()?d.trim():void 0,rating:r&&u!==null?u:void 0});},C={width:"100%",padding:m?"12px 14px":"10px 12px",border:`1px solid ${n?"rgba(255,255,255,0.08)":"#e2e8f0"}`,borderRadius:8,backgroundColor:n?"rgba(55,65,81,0.5)":"#fafbfc",color:n?"#f9fafb":"#111827",fontSize:m?16:14,resize:"vertical",minHeight:m?100:80,fontFamily:"inherit",outline:"none",transition:"border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1)",lineHeight:1.5,...b?.input},M={width:"100%",padding:m?"14px 16px":"10px 16px",border:"none",borderRadius:8,backgroundColor:n?"#e2e8f0":"#1e293b",color:n?"#1e293b":"#ffffff",fontSize:m?16:14,fontWeight:500,cursor:o?"not-allowed":"pointer",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",letterSpacing:"0.01em",...b?.submitButton};return jsxs("form",{onSubmit:v,children:[r&&jsx("div",{style:{marginBottom:l?m?16:12:0,...l?{}:{display:"flex",justifyContent:"center",padding:"8px 0"}},children:jsx(nt,{value:u,onChange:p,isDark:n,isTouch:m,large:!l})}),l&&jsx("textarea",{value:d,onChange:h=>s(h.target.value),placeholder:a||"Share your thoughts...",style:C,disabled:o,"aria-label":"Your feedback",onFocus:h=>{h.currentTarget.style.borderColor="#1e293b",h.currentTarget.style.boxShadow="0 0 0 2px rgba(30,41,59,0.15)",h.currentTarget.style.backgroundColor=n?"rgba(55,65,81,0.7)":"#ffffff";},onBlur:h=>{h.currentTarget.style.borderColor=n?"rgba(255,255,255,0.08)":"#e2e8f0",h.currentTarget.style.boxShadow="none",h.currentTarget.style.backgroundColor=n?"rgba(55,65,81,0.5)":"#fafbfc";}}),jsxs("button",{type:"submit",disabled:o||!S,style:{...M,marginTop:12,opacity:o?.8:1,backgroundColor:S?n?"#e2e8f0":"#1e293b":n?"#374151":"#e2e8f0",color:S?n?"#1e293b":"#ffffff":n?"#6b7280":"#94a3b8",display:"flex",alignItems:"center",justifyContent:"center",gap:8},onMouseEnter:h=>{h.currentTarget.disabled||(h.currentTarget.style.backgroundColor=n?"#cbd5e1":"#334155");},onMouseLeave:h=>{h.currentTarget.disabled||(h.currentTarget.style.backgroundColor=n?"#e2e8f0":"#1e293b");},children:[o&&jsx(L,{size:m?18:16,color:n?"#1e293b":"#ffffff"}),o?i?"Updating...":"Submitting...":i?"Update":c]})]})}function nt({value:e,onChange:a,isDark:c,isTouch:o,large:g=false}){let[b,t]=useState(null),i=g?o?36:28:o?28:18,l=g?o?8:5:o?6:3;return jsx("div",{style:{display:"flex",gap:g?o?8:6:o?6:2},role:"group","aria-label":"Rating",children:[1,2,3,4,5].map(r=>{let d=(b??e??0)>=r;return jsx("button",{type:"button",onClick:()=>a(r),onMouseEnter:()=>t(r),onMouseLeave:()=>t(null),"aria-label":`Rate ${r} out of 5`,"aria-pressed":e===r,style:{background:"none",border:"none",cursor:"pointer",padding:l,color:d?"#f59e0b":c?"rgba(255,255,255,0.12)":"#e2e8f0",transition:"color 0.15s cubic-bezier(0.4, 0, 0.2, 1), transform 0.15s cubic-bezier(0.4, 0, 0.2, 1)",transform:b!==null&&b>=r?"scale(1.1)":"scale(1)"},children:jsx("svg",{width:i,height:i,viewBox:"0 0 24 24",fill:"currentColor",children:jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"})})},r)})})}function Ne({theme:e,isLoading:a,onSubmit:c,initialVote:o,isEditing:g=false,labels:b}){let[t,i]=useState(false),[l,r]=useState(o||null),[d,s]=useState(o||null);useEffect(()=>{i(A());},[]),useEffect(()=>{o!==void 0&&(s(o),r(o));},[o]),useEffect(()=>{!a&&!g&&r(null);},[a,g]);let u=n=>{r(n),c({vote:n});},p=e==="dark",m=n=>{let S=d===n;return {flex:1,minWidth:0,overflow:"hidden",padding:t?"14px 18px":"10px 14px",border:`1px solid ${S?n==="up"?p?"rgba(16,185,129,0.3)":"rgba(16,185,129,0.25)":p?"rgba(239,68,68,0.3)":"rgba(239,68,68,0.25)":p?"rgba(255,255,255,0.08)":"#e2e8f0"}`,borderRadius:t?10:8,backgroundColor:S?n==="up"?p?"rgba(16,185,129,0.08)":"rgba(16,185,129,0.06)":p?"rgba(239,68,68,0.08)":"rgba(239,68,68,0.06)":p?"rgba(55,65,81,0.5)":"#fafbfc",color:S?n==="up"?"#10b981":"#ef4444":p?"#d1d5db":"#64748b",fontSize:t?28:24,cursor:a?"not-allowed":"pointer",transition:"background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.2s, box-shadow 0.2s",display:"flex",alignItems:"center",justifyContent:"center",gap:t?10:8}},f=t?24:20;return jsxs("div",{style:{display:"flex",gap:t?12:10},role:"group","aria-label":"Vote",children:[jsx("button",{type:"button",onClick:()=>u("up"),disabled:a,style:m("up"),"aria-label":"Vote up - I like this","aria-pressed":d==="up",onMouseEnter:n=>{a||(n.currentTarget.style.transform="translateY(-1px)",n.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.06)");},onMouseLeave:n=>{n.currentTarget.style.transform="translateY(0)",n.currentTarget.style.boxShadow="none";},children:a&&l==="up"?jsxs(Fragment,{children:[jsx(L,{size:f,color:p?"#f9fafb":"#111827"}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:g?"Updating...":"Sending..."})]}):jsxs(Fragment,{children:[jsx(rt,{size:f}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:b?.up||(d==="up"?"Liked":"Like")})]})}),jsx("button",{type:"button",onClick:()=>u("down"),disabled:a,style:m("down"),"aria-label":"Vote down - I don't like this","aria-pressed":d==="down",onMouseEnter:n=>{a||(n.currentTarget.style.transform="translateY(-1px)",n.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.06)");},onMouseLeave:n=>{n.currentTarget.style.transform="translateY(0)",n.currentTarget.style.boxShadow="none";},children:a&&l==="down"?jsxs(Fragment,{children:[jsx(L,{size:f,color:p?"#f9fafb":"#111827"}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:g?"Updating...":"Sending..."})]}):jsxs(Fragment,{children:[jsx(st,{size:f}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:b?.down||(d==="down"?"Disliked":"Dislike")})]})})]})}function rt({size:e=24}){return jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"})})}function st({size:e=24}){return jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"})})}function $e({theme:e,options:a,allowMultiple:c,isLoading:o,onSubmit:g,initialSelected:b,isEditing:t=false}){let[i,l]=useState(b||[]),[r,d]=useState(false);useEffect(()=>{d(A());},[]),useEffect(()=>{b&&l(b);},[b]);let s=e==="dark",u=f=>{l(c?n=>n.includes(f)?n.filter(S=>S!==f):[...n,f]:n=>n.includes(f)?[]:[f]);},p=()=>{i.length!==0&&g({pollSelected:i});},m=f=>{let n=i.includes(f);return {width:"100%",padding:r?"12px 14px":"9px 12px",border:`1px solid ${n?s?"rgba(226,232,240,0.25)":"rgba(30,41,59,0.25)":s?"rgba(255,255,255,0.08)":"#e2e8f0"}`,borderRadius:r?10:8,backgroundColor:n?s?"rgba(226,232,240,0.08)":"rgba(30,41,59,0.05)":s?"rgba(55,65,81,0.5)":"#fafbfc",color:n?s?"#e2e8f0":"#1e293b":s?"#d1d5db":"#374151",fontSize:r?15:13,fontWeight:500,cursor:o?"not-allowed":"pointer",transition:"background-color 0.2s, border-color 0.2s, color 0.2s",textAlign:"left",letterSpacing:"0.01em",display:"flex",alignItems:"center",gap:8}};return jsxs("div",{children:[jsx("div",{style:{display:"flex",flexDirection:"column",gap:r?8:6},role:"group","aria-label":c?"Select one or more options":"Select an option",children:a.map(f=>{let n=i.includes(f);return jsxs("button",{type:"button",onClick:()=>u(f),disabled:o,style:m(f),"aria-pressed":n,children:[jsx("span",{style:{width:16,height:16,borderRadius:c?4:"50%",border:`2px solid ${n?s?"#e2e8f0":"#1e293b":s?"rgba(255,255,255,0.2)":"#cbd5e1"}`,backgroundColor:n?s?"#e2e8f0":"#1e293b":"transparent",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s"},children:n&&jsx("svg",{width:10,height:10,viewBox:"0 0 12 12",fill:"none",children:jsx("path",{d:"M2 6l3 3 5-5",stroke:"#fff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),f]},f)})}),jsxs("button",{type:"button",onClick:p,disabled:o||i.length===0,style:{width:"100%",marginTop:12,padding:r?"14px 16px":"10px 16px",border:"none",borderRadius:8,backgroundColor:i.length===0?s?"#374151":"#e2e8f0":s?"#e2e8f0":"#1e293b",color:i.length===0?s?"#6b7280":"#94a3b8":s?"#1e293b":"#ffffff",fontSize:r?16:14,fontWeight:500,cursor:o||i.length===0?"not-allowed":"pointer",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",letterSpacing:"0.01em",display:"flex",alignItems:"center",justifyContent:"center",gap:8,opacity:o?.8:1},onMouseEnter:f=>{f.currentTarget.disabled||(f.currentTarget.style.backgroundColor=s?"#cbd5e1":"#334155");},onMouseLeave:f=>{f.currentTarget.disabled||(f.currentTarget.style.backgroundColor=i.length===0?s?"#374151":"#e2e8f0":s?"#e2e8f0":"#1e293b");},children:[o&&jsx(L,{size:r?18:16,color:s?"#1e293b":"#ffffff"}),o?t?"Updating...":"Submitting...":t?"Update":"Submit"]})]})}function xe({mode:e,theme:a,customStyles:c,promptText:o,placeholder:g,submitText:b,thankYouMessage:t,isLoading:i,isSubmitted:l,error:r,existingResponse:d,isEditing:s=false,showText:u=true,showRating:p=true,voteLabels:m,options:f,allowMultiple:n=false,onSubmit:S,onClose:v,anchorRect:C}){let M=useRef(null),h=useRef(null),[I,re]=useState(false),[R,se]=useState(false),[j,U]=useState("light");useEffect(()=>{se(window.innerWidth<640);let x=window.matchMedia("(prefers-color-scheme: dark)");U(x.matches?"dark":"light");let G=T=>U(T.matches?"dark":"light");return x.addEventListener("change",G),()=>x.removeEventListener("change",G)},[]),useEffect(()=>{let x=requestAnimationFrame(()=>re(true));return ()=>cancelAnimationFrame(x)},[]);let _=a==="auto"?j:a,y=_==="dark",H=(C?window.innerHeight-C.bottom:window.innerHeight/2)<280+20;useEffect(()=>{let x=M.current;if(!x)return;h.current?.focus();let G=T=>{if(T.key==="Escape"){v();return}if(T.key==="Tab"){let N=x.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),Y=N[0],D=N[N.length-1];T.shiftKey&&document.activeElement===Y?(T.preventDefault(),D?.focus()):!T.shiftKey&&document.activeElement===D&&(T.preventDefault(),Y?.focus());}};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},[v]);let ie=e==="vote"?"What do you think?":e==="poll"?"Cast your vote":"What do you think of this feature?",$=R?20:16,X=y?"0 1px 2px rgba(0,0,0,0.2), 0 4px 12px rgba(0,0,0,0.3), 0 12px 32px rgba(0,0,0,0.2)":"0 1px 2px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.06), 0 12px 32px rgba(0,0,0,0.06)",z=R?{position:"fixed",left:"50%",top:"50%",width:"calc(100vw - 32px)",maxWidth:320,padding:$,borderRadius:12,backgroundColor:y?"#1f2937":"#ffffff",color:y?"#f9fafb":"#111827",boxShadow:X,border:`1px solid ${y?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`,zIndex:9999,transition:"opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)",opacity:I?1:0,transform:I?"translate(-50%, -50%) scale(1)":"translate(-50%, -50%) scale(0.96)",...c?.modal,textAlign:"left"}:{position:"absolute",left:"50%",width:320,padding:$,borderRadius:10,backgroundColor:y?"#1f2937":"#ffffff",color:y?"#f9fafb":"#111827",boxShadow:X,border:`1px solid ${y?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`,zIndex:9999,...H?{bottom:"100%",marginBottom:8}:{top:"100%",marginTop:8},transition:"opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)",opacity:I?1:0,transform:I?"translateX(-50%) scale(1) translateY(0)":`translateX(-50%) scale(0.96) translateY(${H?"6px":"-6px"})`,...c?.modal,textAlign:"left"};return jsxs("div",{ref:M,role:"dialog","aria-modal":"true","aria-labelledby":"gotcha-modal-title",style:z,className:J("gotcha-modal",y&&"gotcha-modal--dark"),children:[jsx("button",{ref:h,type:"button",onClick:v,"aria-label":"Close feedback form",style:{position:"absolute",top:R?12:8,right:R?12:8,width:R?36:28,height:R?36:28,border:"none",background:"transparent",cursor:"pointer",color:y?"#6b7280":"#9ca3af",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:6,transition:"all 0.15s cubic-bezier(0.4, 0, 0.2, 1)"},onMouseEnter:x=>{x.currentTarget.style.backgroundColor=y?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.04)",x.currentTarget.style.color=y?"#9ca3af":"#6b7280";},onMouseLeave:x=>{x.currentTarget.style.backgroundColor="transparent",x.currentTarget.style.color=y?"#6b7280":"#9ca3af";},children:jsx("svg",{width:R?16:12,height:R?16:12,viewBox:"0 0 14 14",fill:"none",children:jsx("path",{d:"M1 1L13 13M1 13L13 1",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})}),jsx("h2",{id:"gotcha-modal-title",style:{margin:"0 0 16px 0",fontSize:R?16:14,fontWeight:600,paddingRight:R?40:32,letterSpacing:"-0.01em",lineHeight:1.4,textAlign:"left"},children:o||ie}),l&&jsxs("div",{style:{textAlign:"center",padding:"24px 0",color:y?"#10b981":"#059669"},children:[jsx("div",{style:{width:44,height:44,borderRadius:"50%",backgroundColor:y?"rgba(16,185,129,0.1)":"rgba(5,150,105,0.08)",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 12px"},children:jsx("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",children:jsx("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),jsx("p",{style:{margin:0,fontSize:13,fontWeight:500,color:y?"#d1d5db":"#374151"},children:t})]}),r&&!l&&jsx("div",{style:{padding:"8px 10px",marginBottom:12,borderRadius:8,backgroundColor:y?"rgba(127,29,29,0.3)":"#fef2f2",border:`1px solid ${y?"rgba(254,202,202,0.1)":"rgba(220,38,38,0.1)"}`,color:y?"#fecaca":"#dc2626",fontSize:13,lineHeight:1.4},children:r}),!l&&jsxs(Fragment,{children:[e==="feedback"&&jsx(ze,{theme:_,placeholder:g,submitText:b,isLoading:i,onSubmit:S,customStyles:c,initialValues:d?{content:d.content,rating:d.rating}:void 0,isEditing:s,showText:u,showRating:p}),e==="vote"&&jsx(Ne,{theme:_,isLoading:i,onSubmit:S,initialVote:d?.vote||void 0,isEditing:s,labels:m}),e==="poll"&&f&&f.length>0&&jsx($e,{theme:_,options:f,allowMultiple:n,isLoading:i,onSubmit:S,initialSelected:d?.pollSelected||void 0,isEditing:s})]}),jsxs("div",{"aria-live":"polite",className:"sr-only",style:{position:"absolute",left:-9999},children:[l&&"Thank you! Your feedback has been submitted.",r&&`Error: ${r}`]})]})}function ct({elementId:e,user:a,mode:c="feedback",showText:o=true,showRating:g=true,voteLabels:b,options:t,allowMultiple:i=false,showResults:l=true,position:r=P.POSITION,size:d=P.SIZE,theme:s=P.THEME,customStyles:u,visible:p=true,showOnHover:m=P.SHOW_ON_HOVER,touchBehavior:f=P.TOUCH_BEHAVIOR,promptText:n,placeholder:S,submitText:v=P.SUBMIT_TEXT,thankYouMessage:C=P.THANK_YOU_MESSAGE,onSubmit:M,onOpen:h,onClose:I,onError:re}){let{disabled:R,activeModalId:se,openModal:j,closeModal:U}=B(),[_,y]=useState(false),[ve,ae]=useState(false),[H,ie]=useState(null),[$,X]=useState(false),z=useRef(null);useEffect(()=>{X(window.innerWidth<640);},[]);let x=se===e;useEffect(()=>{if(!m)return;let E=z.current;if(!E)return;let F=E.parentElement;if(!F)return;let Ee=()=>ae(true),Re=()=>ae(false);return F.addEventListener("mouseenter",Ee),F.addEventListener("mouseleave",Re),()=>{F.removeEventListener("mouseenter",Ee),F.removeEventListener("mouseleave",Re);}},[m]);let{submit:G,isLoading:T,error:N,existingResponse:Y,isEditing:D}=Pe({elementId:e,mode:c,pollOptions:t,user:a,onSuccess:E=>{y(true),M?.(E),setTimeout(()=>{U(),y(false);},1500);},onError:E=>{console.warn("[Gotcha] Submission failed:",E instanceof Error?E.message:E),re?.(E);}}),We=useCallback(()=>{z.current&&ie(z.current.getBoundingClientRect()),j(e),h?.();},[e,j,h]),le=useCallback(()=>{U(),y(false),I?.();},[U,I]),ke=useCallback(E=>{G(E);},[G]);return R||!p?null:jsxs("div",{ref:z,style:{...{"top-right":{position:"absolute",top:0,right:0,transform:"translate(50%, -50%)"},"top-left":{position:"absolute",top:0,left:0,transform:"translate(-50%, -50%)"},"bottom-right":{position:"absolute",bottom:0,right:0,transform:"translate(50%, 50%)"},"bottom-left":{position:"absolute",bottom:0,left:0,transform:"translate(-50%, 50%)"},inline:{position:"relative",display:"inline-flex"}}[r],zIndex:x?1e4:"auto"},className:"gotcha-container","data-gotcha-element":e,children:[jsx(De,{size:d,theme:s,customStyles:u,showOnHover:m,touchBehavior:f,onClick:We,isOpen:x,isParentHovered:ve}),x&&!$&&jsx(xe,{mode:c,theme:s,customStyles:u,promptText:n,placeholder:S,submitText:v,thankYouMessage:D?"Your feedback has been updated!":C,isLoading:T,isSubmitted:_,error:N,existingResponse:Y,isEditing:D,showText:o,showRating:g,voteLabels:b,options:t,allowMultiple:i,onSubmit:ke,onClose:le,anchorRect:H||void 0}),x&&$&&createPortal(jsx("div",{style:{position:"fixed",inset:0,zIndex:99999,backgroundColor:"rgba(0, 0, 0, 0.3)"},onClick:le,"aria-hidden":"true",children:jsx("div",{onClick:E=>E.stopPropagation(),children:jsx(xe,{mode:c,theme:s,customStyles:u,promptText:n,placeholder:S,submitText:v,thankYouMessage:D?"Your feedback has been updated!":C,isLoading:T,isSubmitted:_,error:N,existingResponse:Y,isEditing:D,showText:o,showRating:g,voteLabels:b,options:t,allowMultiple:i,onSubmit:ke,onClose:le,anchorRect:H||void 0})})}),document.body)]})}function ut(){let{client:e,disabled:a,defaultUser:c,debug:o}=B();return {client:e,disabled:a,defaultUser:c,debug:o,submitFeedback:e.submitResponse.bind(e)}}export{ct as Gotcha,Xe as GotchaProvider,ut as useGotcha};//# sourceMappingURL=index.mjs.map
11
+ `}),jsx("circle",{cx:"12",cy:"12",r:"10",stroke:r,strokeWidth:"2",strokeOpacity:"0.12"}),jsx("circle",{cx:"12",cy:"12",r:"10",stroke:r,strokeWidth:"2",strokeLinecap:"round",style:{animation:"gotcha-dash 1.2s ease-in-out infinite"}})]})}function Je({theme:e,placeholder:r,submitText:s,isLoading:o,onSubmit:b,customStyles:g,initialValues:t,isEditing:u=false,showText:a=true,showRating:n=true,enableBugFlag:l=false,bugFlagLabel:f}){let[i,d]=useState(t?.content||""),[y,p]=useState(t?.rating??null),[c,I]=useState(false),[v,S]=useState(false);useEffect(()=>{S(D());},[]),useEffect(()=>{t?.content!==void 0&&d(t.content||""),t?.rating!==void 0&&p(t.rating??null);},[t?.content,t?.rating]);let h=e==="dark",M=a&&n?i.trim().length>0||y!==null:a?i.trim().length>0:n?y!==null:false,x=m=>{m.preventDefault(),M&&b({content:a&&i.trim()?i.trim():void 0,rating:n&&y!==null?y:void 0,isBug:c||void 0});},R={width:"100%",padding:v?"12px 14px":"10px 12px",border:`1px solid ${h?"rgba(255,255,255,0.08)":"#e2e8f0"}`,borderRadius:8,backgroundColor:h?"rgba(55,65,81,0.5)":"#fafbfc",color:h?"#f9fafb":"#111827",fontSize:v?16:14,resize:"vertical",minHeight:v?100:80,fontFamily:"inherit",outline:"none",transition:"border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1)",lineHeight:1.5,...g?.input},w={width:"100%",padding:v?"14px 16px":"10px 16px",border:"none",borderRadius:8,backgroundColor:h?"#e2e8f0":"#1e293b",color:h?"#1e293b":"#ffffff",fontSize:v?16:14,fontWeight:500,cursor:o?"not-allowed":"pointer",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",letterSpacing:"0.01em",...g?.submitButton};return jsxs("form",{onSubmit:x,children:[n&&jsx("div",{style:{marginBottom:a?v?16:12:0,...a?{}:{display:"flex",justifyContent:"center",padding:"8px 0"}},children:jsx(vt,{value:y,onChange:p,isDark:h,isTouch:v,large:!a})}),a&&jsx("textarea",{value:i,onChange:m=>d(m.target.value),placeholder:r||"Share your thoughts...",style:R,disabled:o,"aria-label":"Your feedback",onFocus:m=>{m.currentTarget.style.borderColor="#1e293b",m.currentTarget.style.boxShadow="0 0 0 2px rgba(30,41,59,0.15)",m.currentTarget.style.backgroundColor=h?"rgba(55,65,81,0.7)":"#ffffff";},onBlur:m=>{m.currentTarget.style.borderColor=h?"rgba(255,255,255,0.08)":"#e2e8f0",m.currentTarget.style.boxShadow="none",m.currentTarget.style.backgroundColor=h?"rgba(55,65,81,0.5)":"#fafbfc";}}),l&&jsxs("button",{type:"button",onClick:()=>I(!c),style:{display:"flex",alignItems:"center",gap:7,width:"100%",marginTop:10,padding:"7px 10px",border:`1px solid ${c?h?"rgba(245,158,11,0.3)":"rgba(217,119,6,0.25)":h?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`,borderRadius:7,backgroundColor:c?h?"rgba(245,158,11,0.08)":"rgba(251,191,36,0.08)":"transparent",cursor:"pointer",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)"},onMouseEnter:m=>{c||(m.currentTarget.style.backgroundColor=h?"rgba(255,255,255,0.03)":"rgba(0,0,0,0.02)");},onMouseLeave:m=>{c||(m.currentTarget.style.backgroundColor="transparent");},children:[jsx("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:c?h?"#fbbf24":"#d97706":h?"#6b7280":"#9ca3af",strokeWidth:1.75,strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transition:"stroke 0.2s"},children:jsx("path",{d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})}),jsx("span",{style:{fontSize:12,fontWeight:c?500:400,color:c?h?"#fbbf24":"#b45309":h?"#6b7280":"#9ca3af",transition:"color 0.2s",letterSpacing:"0.01em"},children:c?"Issue reported":f||"Report an issue"}),jsx("div",{style:{marginLeft:"auto",width:28,height:16,borderRadius:8,backgroundColor:c?h?"#f59e0b":"#d97706":h?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)",position:"relative",transition:"background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:jsx("div",{style:{position:"absolute",top:2,left:c?14:2,width:12,height:12,borderRadius:"50%",backgroundColor:c?"#ffffff":h?"#4b5563":"#d1d5db",transition:"left 0.2s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.2s",boxShadow:"0 1px 2px rgba(0,0,0,0.15)"}})})]}),jsxs("button",{type:"submit",disabled:o||!M,style:{...w,marginTop:12,opacity:o?.8:1,backgroundColor:M?h?"#e2e8f0":"#1e293b":h?"#374151":"#e2e8f0",color:M?h?"#1e293b":"#ffffff":h?"#6b7280":"#94a3b8",display:"flex",alignItems:"center",justifyContent:"center",gap:8},onMouseEnter:m=>{m.currentTarget.disabled||(m.currentTarget.style.backgroundColor=h?"#cbd5e1":"#334155");},onMouseLeave:m=>{m.currentTarget.disabled||(m.currentTarget.style.backgroundColor=h?"#e2e8f0":"#1e293b");},children:[o&&jsx(_,{size:v?18:16,color:h?"#1e293b":"#ffffff"}),o?u?"Updating...":"Submitting...":u?"Update":s]})]})}function vt({value:e,onChange:r,isDark:s,isTouch:o,large:b=false}){let[g,t]=useState(null),u=b?o?36:28:o?28:18,a=b?o?8:5:o?6:3;return jsx("div",{style:{display:"flex",gap:b?o?8:6:o?6:2},role:"group","aria-label":"Rating",children:[1,2,3,4,5].map(n=>{let l=(g??e??0)>=n;return jsx("button",{type:"button",onClick:()=>r(n),onMouseEnter:()=>t(n),onMouseLeave:()=>t(null),"aria-label":`Rate ${n} out of 5`,"aria-pressed":e===n,style:{background:"none",border:"none",cursor:"pointer",padding:a,color:l?"#f59e0b":s?"rgba(255,255,255,0.12)":"#e2e8f0",transition:"color 0.15s cubic-bezier(0.4, 0, 0.2, 1), transform 0.15s cubic-bezier(0.4, 0, 0.2, 1)",transform:g!==null&&g>=n?"scale(1.1)":"scale(1)"},children:jsx("svg",{width:u,height:u,viewBox:"0 0 24 24",fill:"currentColor",children:jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"})})},n)})})}function et({theme:e,isLoading:r,onSubmit:s,initialVote:o,isEditing:b=false,labels:g}){let[t,u]=useState(false),[a,n]=useState(o||null),[l,f]=useState(o||null);useEffect(()=>{u(D());},[]),useEffect(()=>{o!==void 0&&(f(o),n(o));},[o]),useEffect(()=>{!r&&!b&&n(null);},[r,b]);let i=c=>{n(c),s({vote:c});},d=e==="dark",y=c=>{let I=l===c;return {flex:1,minWidth:0,overflow:"hidden",padding:t?"14px 18px":"10px 14px",border:`1px solid ${I?c==="up"?d?"rgba(16,185,129,0.3)":"rgba(16,185,129,0.25)":d?"rgba(239,68,68,0.3)":"rgba(239,68,68,0.25)":d?"rgba(255,255,255,0.08)":"#e2e8f0"}`,borderRadius:t?10:8,backgroundColor:I?c==="up"?d?"rgba(16,185,129,0.08)":"rgba(16,185,129,0.06)":d?"rgba(239,68,68,0.08)":"rgba(239,68,68,0.06)":d?"rgba(55,65,81,0.5)":"#fafbfc",color:I?c==="up"?"#10b981":"#ef4444":d?"#d1d5db":"#64748b",fontSize:t?28:24,cursor:r?"not-allowed":"pointer",transition:"background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.2s, box-shadow 0.2s",display:"flex",alignItems:"center",justifyContent:"center",gap:t?10:8}},p=t?24:20;return jsxs("div",{style:{display:"flex",gap:t?12:10},role:"group","aria-label":"Vote",children:[jsx("button",{type:"button",onClick:()=>i("up"),disabled:r,style:y("up"),"aria-label":"Vote up - I like this","aria-pressed":l==="up",onMouseEnter:c=>{r||(c.currentTarget.style.transform="translateY(-1px)",c.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.06)");},onMouseLeave:c=>{c.currentTarget.style.transform="translateY(0)",c.currentTarget.style.boxShadow="none";},children:r&&a==="up"?jsxs(Fragment,{children:[jsx(_,{size:p,color:d?"#f9fafb":"#111827"}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:b?"Updating...":"Sending..."})]}):jsxs(Fragment,{children:[jsx(kt,{size:p}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:g?.up||(l==="up"?"Liked":"Like")})]})}),jsx("button",{type:"button",onClick:()=>i("down"),disabled:r,style:y("down"),"aria-label":"Vote down - I don't like this","aria-pressed":l==="down",onMouseEnter:c=>{r||(c.currentTarget.style.transform="translateY(-1px)",c.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.06)");},onMouseLeave:c=>{c.currentTarget.style.transform="translateY(0)",c.currentTarget.style.boxShadow="none";},children:r&&a==="down"?jsxs(Fragment,{children:[jsx(_,{size:p,color:d?"#f9fafb":"#111827"}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:b?"Updating...":"Sending..."})]}):jsxs(Fragment,{children:[jsx(wt,{size:p}),jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:g?.down||(l==="down"?"Disliked":"Dislike")})]})})]})}function kt({size:e=24}){return jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"})})}function wt({size:e=24}){return jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsx("path",{d:"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"})})}function nt({theme:e,options:r,allowMultiple:s,isLoading:o,onSubmit:b,initialSelected:g,isEditing:t=false}){let[u,a]=useState(g||[]),[n,l]=useState(false);useEffect(()=>{l(D());},[]),useEffect(()=>{g&&a(g);},[g]);let f=e==="dark",i=p=>{a(s?c=>c.includes(p)?c.filter(I=>I!==p):[...c,p]:c=>c.includes(p)?[]:[p]);},d=()=>{u.length!==0&&b({pollSelected:u});},y=p=>{let c=u.includes(p);return {width:"100%",padding:n?"12px 14px":"9px 12px",border:`1px solid ${c?f?"rgba(226,232,240,0.25)":"rgba(30,41,59,0.25)":f?"rgba(255,255,255,0.08)":"#e2e8f0"}`,borderRadius:n?10:8,backgroundColor:c?f?"rgba(226,232,240,0.08)":"rgba(30,41,59,0.05)":f?"rgba(55,65,81,0.5)":"#fafbfc",color:c?f?"#e2e8f0":"#1e293b":f?"#d1d5db":"#374151",fontSize:n?15:13,fontWeight:500,cursor:o?"not-allowed":"pointer",transition:"background-color 0.2s, border-color 0.2s, color 0.2s",textAlign:"left",letterSpacing:"0.01em",display:"flex",alignItems:"center",gap:8}};return jsxs("div",{children:[jsx("div",{style:{display:"flex",flexDirection:"column",gap:n?8:6},role:"group","aria-label":s?"Select one or more options":"Select an option",children:r.map(p=>{let c=u.includes(p);return jsxs("button",{type:"button",onClick:()=>i(p),disabled:o,style:y(p),"aria-pressed":c,children:[jsx("span",{style:{width:16,height:16,borderRadius:s?4:"50%",border:`2px solid ${c?f?"#e2e8f0":"#1e293b":f?"rgba(255,255,255,0.2)":"#cbd5e1"}`,backgroundColor:c?f?"#e2e8f0":"#1e293b":"transparent",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s"},children:c&&jsx("svg",{width:10,height:10,viewBox:"0 0 12 12",fill:"none",children:jsx("path",{d:"M2 6l3 3 5-5",stroke:"#fff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),p]},p)})}),jsxs("button",{type:"button",onClick:d,disabled:o||u.length===0,style:{width:"100%",marginTop:12,padding:n?"14px 16px":"10px 16px",border:"none",borderRadius:8,backgroundColor:u.length===0?f?"#374151":"#e2e8f0":f?"#e2e8f0":"#1e293b",color:u.length===0?f?"#6b7280":"#94a3b8":f?"#1e293b":"#ffffff",fontSize:n?16:14,fontWeight:500,cursor:o||u.length===0?"not-allowed":"pointer",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",letterSpacing:"0.01em",display:"flex",alignItems:"center",justifyContent:"center",gap:8,opacity:o?.8:1},onMouseEnter:p=>{p.currentTarget.disabled||(p.currentTarget.style.backgroundColor=f?"#cbd5e1":"#334155");},onMouseLeave:p=>{p.currentTarget.disabled||(p.currentTarget.style.backgroundColor=u.length===0?f?"#374151":"#e2e8f0":f?"#e2e8f0":"#1e293b");},children:[o&&jsx(_,{size:n?18:16,color:f?"#1e293b":"#ffffff"}),o?t?"Updating...":"Submitting...":t?"Update":"Submit"]})]})}var Et=["#ef4444","#f05540","#f1663c","#f27738","#f38834","#f59e0b","#d4a30e","#b3a812","#79b841","#45c870","#10b981"];function st({theme:e,submitText:r,isLoading:s,onSubmit:o,customStyles:b,showFollowUp:g=true,followUpPlaceholder:t,lowLabel:u="Not likely",highLabel:a="Very likely",initialValues:n,isEditing:l=false}){let[f,i]=useState(n?.rating??null),[d,y]=useState(n?.content||""),[p,c]=useState(false),[I,v]=useState(null);useEffect(()=>{c(D());},[]),useEffect(()=>{n?.rating!==void 0&&i(n.rating??null),n?.content!==void 0&&y(n.content||"");},[n?.rating,n?.content]);let S=e==="dark",h=f!==null;return jsxs("form",{onSubmit:x=>{x.preventDefault(),h&&o({rating:f??void 0,content:g&&d.trim()?d.trim():void 0});},children:[jsxs("div",{style:{marginBottom:g&&f!==null?p?14:12:0},children:[jsx("div",{style:{display:"flex",gap:p?8:6,justifyContent:"center"},role:"group","aria-label":"NPS Score",children:Array.from({length:11},(x,R)=>{let w=f===R,m=I===R,k=Et[R];return jsx("button",{type:"button",onClick:()=>i(R),onMouseEnter:()=>v(R),onMouseLeave:()=>v(null),"aria-label":`Score ${R} out of 10`,"aria-pressed":w,style:{flex:1,height:p?36:32,borderRadius:8,border:w?`2px solid ${k}`:`1.5px solid ${S?`${k}30`:`${k}25`}`,backgroundColor:w?k:m?S?`${k}30`:`${k}18`:S?`${k}15`:`${k}0c`,color:w?"#fff":m?k:S?`${k}cc`:`${k}bb`,fontSize:p?13:12,fontWeight:w?700:600,fontFamily:"inherit",cursor:"pointer",padding:0,display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.2s cubic-bezier(0.34, 1.56, 0.64, 1)",transform:w?"scale(1.08)":m?"scale(1.04)":"scale(1)",boxShadow:w?`0 2px 8px ${k}40`:"none",flexShrink:0},children:R},R)})}),jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:10,padding:"0 2px"},children:[jsx("span",{style:{fontSize:10,color:S?"rgba(255,255,255,0.3)":"rgba(0,0,0,0.3)",fontWeight:500},children:u}),jsx("span",{style:{fontSize:10,color:S?"rgba(255,255,255,0.3)":"rgba(0,0,0,0.3)",fontWeight:500},children:a})]})]}),g&&f!==null&&jsx("textarea",{value:d,onChange:x=>y(x.target.value),placeholder:t||"What's the main reason for your score?",style:{width:"100%",padding:p?"12px 14px":"10px 12px",border:`1px solid ${S?"rgba(255,255,255,0.08)":"#e2e8f0"}`,borderRadius:8,backgroundColor:S?"rgba(55,65,81,0.5)":"#fafbfc",color:S?"#f9fafb":"#111827",fontSize:p?16:14,resize:"vertical",minHeight:p?80:60,fontFamily:"inherit",outline:"none",transition:"border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1)",lineHeight:1.5,...b?.input},disabled:s,"aria-label":"Follow-up feedback",onFocus:x=>{x.currentTarget.style.borderColor=S?"rgba(255,255,255,0.2)":"#94a3b8",x.currentTarget.style.boxShadow=`0 0 0 2px ${S?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`,x.currentTarget.style.backgroundColor=S?"rgba(55,65,81,0.7)":"#ffffff";},onBlur:x=>{x.currentTarget.style.borderColor=S?"rgba(255,255,255,0.08)":"#e2e8f0",x.currentTarget.style.boxShadow="none",x.currentTarget.style.backgroundColor=S?"rgba(55,65,81,0.5)":"#fafbfc";}}),jsxs("button",{type:"submit",disabled:s||!h,style:{width:"100%",padding:p?"14px 16px":"10px 16px",border:"none",borderRadius:8,backgroundColor:h?S?"#e2e8f0":"#1e293b":S?"#374151":"#e2e8f0",color:h?S?"#1e293b":"#ffffff":S?"#6b7280":"#94a3b8",fontSize:p?16:14,fontWeight:500,cursor:s?"not-allowed":"pointer",transition:"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",letterSpacing:"0.01em",opacity:s?.8:1,display:"flex",alignItems:"center",justifyContent:"center",gap:8,marginTop:12,...b?.submitButton},onMouseEnter:x=>{x.currentTarget.disabled||(x.currentTarget.style.backgroundColor=S?"#cbd5e1":"#334155");},onMouseLeave:x=>{x.currentTarget.disabled||(x.currentTarget.style.backgroundColor=S?"#e2e8f0":"#1e293b");},children:[s&&jsx(_,{size:p?18:16,color:S?"#1e293b":"#ffffff"}),s?l?"Updating...":"Submitting...":l?"Update":r]})]})}function Le({mode:e,theme:r,customStyles:s,promptText:o,placeholder:b,submitText:g,thankYouMessage:t,isLoading:u,isSubmitted:a,error:n,existingResponse:l,isEditing:f=false,showText:i=true,showRating:d=true,voteLabels:y,options:p,allowMultiple:c=false,npsQuestion:I,npsFollowUp:v=true,npsFollowUpPlaceholder:S,npsLowLabel:h,npsHighLabel:M,enableBugFlag:x=false,bugFlagLabel:R,onSubmit:w,onClose:m,anchorRect:k}){let U=useRef(null),q=useRef(null),[W,xe]=useState(false),[A,ve]=useState(false),[ie,Y]=useState("light");useEffect(()=>{ve(window.innerWidth<640);let C=window.matchMedia("(prefers-color-scheme: dark)");Y(C.matches?"dark":"light");let B=O=>Y(O.matches?"dark":"light");return C.addEventListener("change",B),()=>C.removeEventListener("change",B)},[]),useEffect(()=>{let C=requestAnimationFrame(()=>xe(true));return ()=>cancelAnimationFrame(C)},[]);let V=r==="auto"?ie:r,E=V==="dark",Z=(k?window.innerHeight-k.bottom:window.innerHeight/2)<280+20;useEffect(()=>{let C=U.current;if(!C)return;q.current?.focus();let B=O=>{if(O.key==="Escape"){m();return}if(O.key==="Tab"){let K=C.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),ee=K[0],F=K[K.length-1];O.shiftKey&&document.activeElement===ee?(O.preventDefault(),F?.focus()):!O.shiftKey&&document.activeElement===F&&(O.preventDefault(),ee?.focus());}};return document.addEventListener("keydown",B),()=>document.removeEventListener("keydown",B)},[m]);let ce=e==="vote"?"What do you think?":e==="poll"?"Cast your vote":e==="nps"?I||"How likely are you to recommend us?":"What do you think of this feature?",ue=A?20:16,J=e==="nps"?420:320,de=E?"0 1px 2px rgba(0,0,0,0.2), 0 4px 12px rgba(0,0,0,0.3), 0 12px 32px rgba(0,0,0,0.2)":"0 1px 2px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.06), 0 12px 32px rgba(0,0,0,0.06)",j=A?{position:"fixed",left:"50%",top:"50%",width:"calc(100vw - 32px)",maxWidth:J,padding:ue,borderRadius:12,backgroundColor:E?"#1f2937":"#ffffff",color:E?"#f9fafb":"#111827",boxShadow:de,border:`1px solid ${E?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`,zIndex:9999,transition:"opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)",opacity:W?1:0,transform:W?"translate(-50%, -50%) scale(1)":"translate(-50%, -50%) scale(0.96)",...s?.modal,textAlign:"left"}:{position:"absolute",left:"50%",width:J,padding:ue,borderRadius:10,backgroundColor:E?"#1f2937":"#ffffff",color:E?"#f9fafb":"#111827",boxShadow:de,border:`1px solid ${E?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)"}`,zIndex:9999,...Z?{bottom:"100%",marginBottom:8}:{top:"100%",marginTop:8},transition:"opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)",opacity:W?1:0,transform:W?"translateX(-50%) scale(1) translateY(0)":`translateX(-50%) scale(0.96) translateY(${Z?"6px":"-6px"})`,...s?.modal,textAlign:"left"};return jsxs("div",{ref:U,role:"dialog","aria-modal":"true","aria-labelledby":"gotcha-modal-title",style:j,className:ge("gotcha-modal",E&&"gotcha-modal--dark"),children:[jsx("button",{ref:q,type:"button",onClick:m,"aria-label":"Close feedback form",style:{position:"absolute",top:A?12:8,right:A?12:8,width:A?36:28,height:A?36:28,border:"none",background:"transparent",cursor:"pointer",color:E?"#6b7280":"#9ca3af",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:6,transition:"all 0.15s cubic-bezier(0.4, 0, 0.2, 1)"},onMouseEnter:C=>{C.currentTarget.style.backgroundColor=E?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.04)",C.currentTarget.style.color=E?"#9ca3af":"#6b7280";},onMouseLeave:C=>{C.currentTarget.style.backgroundColor="transparent",C.currentTarget.style.color=E?"#6b7280":"#9ca3af";},children:jsx("svg",{width:A?16:12,height:A?16:12,viewBox:"0 0 14 14",fill:"none",children:jsx("path",{d:"M1 1L13 13M1 13L13 1",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})}),jsx("h2",{id:"gotcha-modal-title",style:{margin:"0 0 16px 0",fontSize:A?16:14,fontWeight:600,paddingRight:A?40:32,letterSpacing:"-0.01em",lineHeight:1.4,textAlign:"left"},children:o||ce}),a&&jsxs("div",{style:{textAlign:"center",padding:"24px 0",color:E?"#10b981":"#059669"},children:[jsx("div",{style:{width:44,height:44,borderRadius:"50%",backgroundColor:E?"rgba(16,185,129,0.1)":"rgba(5,150,105,0.08)",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 12px"},children:jsx("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",children:jsx("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),jsx("p",{style:{margin:0,fontSize:13,fontWeight:500,color:E?"#d1d5db":"#374151"},children:t})]}),n&&!a&&jsx("div",{style:{padding:"8px 10px",marginBottom:12,borderRadius:8,backgroundColor:E?"rgba(127,29,29,0.3)":"#fef2f2",border:`1px solid ${E?"rgba(254,202,202,0.1)":"rgba(220,38,38,0.1)"}`,color:E?"#fecaca":"#dc2626",fontSize:13,lineHeight:1.4},children:n}),!a&&jsxs(Fragment,{children:[e==="feedback"&&jsx(Je,{theme:V,placeholder:b,submitText:g,isLoading:u,onSubmit:w,customStyles:s,initialValues:l?{content:l.content,rating:l.rating}:void 0,isEditing:f,showText:i,showRating:d,enableBugFlag:x,bugFlagLabel:R}),e==="vote"&&jsx(et,{theme:V,isLoading:u,onSubmit:w,initialVote:l?.vote||void 0,isEditing:f,labels:y}),e==="nps"&&jsx(st,{theme:V,submitText:g,isLoading:u,onSubmit:w,showFollowUp:v,followUpPlaceholder:S,lowLabel:h,highLabel:M,customStyles:s,initialValues:l?{rating:l.rating,content:l.content}:void 0,isEditing:f}),e==="poll"&&p&&p.length>0&&jsx(nt,{theme:V,options:p,allowMultiple:c,isLoading:u,onSubmit:w,initialSelected:l?.pollSelected||void 0,isEditing:f})]}),jsxs("div",{"aria-live":"polite",className:"sr-only",style:{position:"absolute",left:-9999},children:[a&&"Thank you! Your feedback has been submitted.",n&&`Error: ${n}`]})]})}function Mt({elementId:e,user:r,mode:s="feedback",showText:o=true,showRating:b=true,voteLabels:g,options:t,allowMultiple:u=false,npsQuestion:a,npsFollowUp:n=true,npsFollowUpPlaceholder:l,npsLowLabel:f,npsHighLabel:i,enableBugFlag:d=false,bugFlagLabel:y,onePerUser:p=false,position:c=N.POSITION,size:I=N.SIZE,theme:v=N.THEME,customStyles:S,visible:h=true,showOnHover:M=N.SHOW_ON_HOVER,touchBehavior:x=N.TOUCH_BEHAVIOR,promptText:R,placeholder:w,submitText:m=N.SUBMIT_TEXT,thankYouMessage:k=N.THANK_YOU_MESSAGE,onSubmit:U,onOpen:q,onClose:W,onError:xe}){let{disabled:A,activeModalId:ve,openModal:ie,closeModal:Y,client:V}=H(),[E,le]=useState(false),[Oe,Z]=useState(false),[ce,ue]=useState(null),[J,de]=useState(false),j=useRef(null);useEffect(()=>{de(window.innerWidth<640);},[]);let C=ve===e;useEffect(()=>{if(!M)return;let G=j.current;if(!G)return;let te=G.parentElement;if(!te)return;let $e=()=>Z(true),Be=()=>Z(false);return te.addEventListener("mouseenter",$e),te.addEventListener("mouseleave",Be),()=>{te.removeEventListener("mouseenter",$e),te.removeEventListener("mouseleave",Be);}},[M]);let{submit:B,isLoading:O,error:K,existingResponse:ee,isEditing:F}=je({elementId:e,mode:s,pollOptions:t,user:r,onSuccess:G=>{le(true),U?.(G),setTimeout(()=>{Y(),le(false);},1500);},onError:G=>{console.warn("[Gotcha] Submission failed:",G instanceof Error?G.message:G),xe?.(G);}}),ct=useCallback(()=>{j.current&&ue(j.current.getBoundingClientRect()),ie(e),q?.();},[e,ie,q]),ke=useCallback(()=>{Y(),le(false),W?.();},[Y,W]),De=useCallback(G=>{B(G);},[B]),_e=F?"Update":m;return A||!h?null:jsxs("div",{ref:j,style:{...{"top-right":{position:"absolute",top:0,right:0,transform:"translate(50%, -50%)"},"top-left":{position:"absolute",top:0,left:0,transform:"translate(-50%, -50%)"},"bottom-right":{position:"absolute",bottom:0,right:0,transform:"translate(50%, 50%)"},"bottom-left":{position:"absolute",bottom:0,left:0,transform:"translate(-50%, 50%)"},inline:{position:"relative",display:"inline-flex"}}[c],zIndex:C?1e4:"auto"},className:"gotcha-container","data-gotcha-element":e,children:[jsx(qe,{size:I,theme:v,customStyles:S,showOnHover:M,touchBehavior:x,onClick:ct,isOpen:C,isParentHovered:Oe}),C&&!J&&jsx(Le,{mode:s,theme:v,customStyles:S,promptText:R,placeholder:w,submitText:_e,thankYouMessage:F?"Your feedback has been updated!":k,isLoading:O,isSubmitted:E,error:K,existingResponse:ee,isEditing:F,showText:o,showRating:b,voteLabels:g,options:t,allowMultiple:u,npsQuestion:a,npsFollowUp:n,npsFollowUpPlaceholder:l,npsLowLabel:f,npsHighLabel:i,enableBugFlag:d,bugFlagLabel:y,onSubmit:De,onClose:ke,anchorRect:ce||void 0}),C&&J&&createPortal(jsx("div",{style:{position:"fixed",inset:0,zIndex:99999,backgroundColor:"rgba(0, 0, 0, 0.3)"},onClick:ke,children:jsx("div",{onClick:G=>G.stopPropagation(),children:jsx(Le,{mode:s,theme:v,customStyles:S,promptText:R,placeholder:w,submitText:_e,thankYouMessage:F?"Your feedback has been updated!":k,isLoading:O,isSubmitted:E,error:K,existingResponse:ee,isEditing:F,showText:o,showRating:b,voteLabels:g,options:t,allowMultiple:u,npsQuestion:a,npsFollowUp:n,npsFollowUpPlaceholder:l,npsLowLabel:f,npsHighLabel:i,enableBugFlag:d,bugFlagLabel:y,onSubmit:De,onClose:ke,anchorRect:ce||void 0})})}),document.body)]})}function lt({elementId:e,refreshInterval:r}){let{client:s}=H(),[o,b]=useState(null),[g,t]=useState(true),[u,a]=useState(null);return useEffect(()=>{let n=false,l=async()=>{try{let i=await s.getScore(e);n||(b(i),a(null));}catch(i){n||a(i instanceof Error?i.message:"Failed to load score");}finally{n||t(false);}};l();let f;return r&&r>0&&(f=setInterval(l,r)),()=>{n=true,f&&clearInterval(f);}},[s,e,r]),{score:o,isLoading:g,error:u}}var Lt={sm:{fontSize:11,ratingFontSize:13,starSize:13,gap:5,pillPx:8,pillPy:4,barHeight:3,iconSize:12},md:{fontSize:12.5,ratingFontSize:15,starSize:15,gap:6,pillPx:10,pillPy:5,barHeight:4,iconSize:14},lg:{fontSize:14,ratingFontSize:18,starSize:18,gap:8,pillPx:12,pillPy:6,barHeight:5,iconSize:16}};function At(e,r){return e==="auto"?r:e}function Ut({rating:e,size:r,filledColor:s,emptyColor:o}){let b=`gotcha-star-clip-${Math.random().toString(36).slice(2,8)}`,g=[];for(let t=1;t<=5;t++){let u=Math.min(1,Math.max(0,e-(t-1))),a=`${b}-${t}`;g.push(jsxs("svg",{width:r,height:r,viewBox:"0 0 24 24",style:{display:"block"},children:[jsx("defs",{children:jsx("clipPath",{id:a,children:jsx("rect",{x:"0",y:"0",width:24*u,height:"24"})})}),jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",fill:o}),jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",fill:s,clipPath:`url(#${a})`})]},t));}return jsx("span",{style:{display:"inline-flex",gap:Math.max(1,r*.08),alignItems:"center"},children:g})}function Ot({rate:e,height:r,filledColor:s,trackColor:o}){return jsx("span",{style:{display:"inline-block",width:48,height:r,borderRadius:r,backgroundColor:o,overflow:"hidden",verticalAlign:"middle"},children:jsx("span",{style:{display:"block",width:`${e}%`,height:"100%",borderRadius:r,background:s,transition:"width 0.6s cubic-bezier(0.4, 0, 0.2, 1)"}})})}function Dt({size:e,color:r}){return jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:r,style:{display:"block"},children:jsx("path",{d:"M2 20h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1H2v11zm19.83-7.12c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66a4.8 4.8 0 00-.88-1.12L14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.84C7 18.95 8.05 20 9.34 20h8.11c.7 0 1.36-.37 1.72-.97l2.66-6.15z"})})}function _t({elementId:e,variant:r="stars",showCount:s=true,size:o="md",theme:b="auto",refreshInterval:g,style:t}){let{score:u,isLoading:a}=lt({elementId:e,refreshInterval:g}),[n,l]=useState("light");if(useEffect(()=>{if(typeof window>"u")return;let m=window.matchMedia("(prefers-color-scheme: dark)");l(m.matches?"dark":"light");let k=U=>l(U.matches?"dark":"light");return m.addEventListener("change",k),()=>m.removeEventListener("change",k)},[]),a||!u)return null;let i=At(b,n)==="dark",d=Lt[o],y=i?"#f3f4f6":"#000000",p="#9ca3af",c=i?"#facc15":"#eab308",I=i?"#374151":"#e5e7eb",v=i?"#6ee7b7":"#16a34a",S=i?"#374151":"#e5e7eb",h={display:"inline-flex",alignItems:"center",gap:d.gap,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',lineHeight:1,letterSpacing:"-0.01em",WebkitFontSmoothing:"antialiased",...t},M=(m,k)=>{let U=m===1?k:`${k}s`;return `${m.toLocaleString()} ${U}`};if(r==="votes"){let{voteCount:m,positiveRate:k}=u,U=m.up+m.down;return U===0?null:jsxs("span",{style:h,children:[jsx(Dt,{size:d.iconSize,color:v}),jsxs("span",{style:{fontSize:d.ratingFontSize,fontWeight:600,color:v,fontVariantNumeric:"tabular-nums"},children:[k,"%"]}),jsx(Ot,{rate:k??0,height:d.barHeight,filledColor:v,trackColor:S}),s&&jsx("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400},children:M(U,"vote")})]})}let{averageRating:x,totalResponses:R}=u;if(x===null||R===0)return null;let w=x.toFixed(1);return r==="compact"?jsxs("span",{style:h,children:[jsx("svg",{width:d.starSize,height:d.starSize,viewBox:"0 0 24 24",style:{display:"block",flexShrink:0},children:jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",fill:c})}),jsx("span",{style:{fontSize:d.ratingFontSize,fontWeight:700,color:y,fontVariantNumeric:"tabular-nums"},children:w}),s&&jsxs("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400},children:["(",R.toLocaleString(),")"]})]}):r==="number"?jsxs("span",{style:h,children:[jsx("span",{style:{fontSize:d.ratingFontSize,fontWeight:700,color:y,fontVariantNumeric:"tabular-nums"},children:w}),jsx("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400},children:"/ 5"}),s&&jsxs("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400,marginLeft:2},children:["(",M(R,"response"),")"]})]}):jsxs("span",{style:h,children:[jsx(Ut,{rating:x,size:d.starSize,filledColor:c,emptyColor:I}),jsx("span",{style:{fontSize:d.ratingFontSize,fontWeight:700,color:y,fontVariantNumeric:"tabular-nums"},children:w}),s&&jsxs("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400},children:["(",M(R,"response"),")"]})]})}function $t(){let{client:e,disabled:r,defaultUser:s,debug:o}=H();return {client:e,disabled:r,defaultUser:s,debug:o,submitFeedback:e.submitResponse.bind(e)}}export{Mt as Gotcha,pt as GotchaProvider,_t as GotchaScore,$t as useGotcha};//# sourceMappingURL=index.mjs.map
12
12
  //# sourceMappingURL=index.mjs.map