gotcha-feedback 1.1.0 → 1.1.1

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.js CHANGED
@@ -1,12 +1,151 @@
1
- 'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('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=react.createContext(null);function pt({apiKey:e,children:r,baseUrl:s,debug:o=false,disabled:b=false,defaultUser:g={}}){let[t,u]=react.useState(null),a=react.useMemo(()=>He({apiKey:e,baseUrl:s,debug:o}),[e,s,o]),n=react.useCallback(i=>{u(i);},[]),l=react.useCallback(()=>{u(null);},[]),f=react.useMemo(()=>({client:a,disabled:b,defaultUser:g,debug:o,activeModalId:t,openModal:n,closeModal:l}),[a,b,g,o,t,n,l]);return jsxRuntime.jsx(Ve.Provider,{value:f,children:r})}function H(){let e=react.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]=react.useState(false),[g,t]=react.useState(false),[u,a]=react.useState(null),[n,l]=react.useState(null);return react.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:react.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]=react.useState(false),[l,f]=react.useState(false),[i,d]=react.useState(mt);react.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 jsxRuntime.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:jsxRuntime.jsx(St,{size:c*.65})})}var Qe="gotcha-carter-one";function yt(){react.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(),jsxRuntime.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 jsxRuntime.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",style:{animation:"gotcha-spin 0.8s linear infinite"},children:[jsxRuntime.jsx("style",{children:`
2
- @keyframes gotcha-spin {
3
- from { transform: rotate(0deg); }
4
- to { transform: rotate(360deg); }
5
- }
6
- @keyframes gotcha-dash {
7
- 0% { stroke-dasharray: 1, 62; stroke-dashoffset: 0; }
8
- 50% { stroke-dasharray: 40, 62; stroke-dashoffset: -12; }
9
- 100% { stroke-dasharray: 1, 62; stroke-dashoffset: -62; }
10
- }
11
- `}),jsxRuntime.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:r,strokeWidth:"2",strokeOpacity:"0.12"}),jsxRuntime.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]=react.useState(t?.content||""),[y,p]=react.useState(t?.rating??null),[c,I]=react.useState(false),[v,S]=react.useState(false);react.useEffect(()=>{S(D());},[]),react.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 jsxRuntime.jsxs("form",{onSubmit:x,children:[n&&jsxRuntime.jsx("div",{style:{marginBottom:a?v?16:12:0,...a?{}:{display:"flex",justifyContent:"center",padding:"8px 0"}},children:jsxRuntime.jsx(vt,{value:y,onChange:p,isDark:h,isTouch:v,large:!a})}),a&&jsxRuntime.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&&jsxRuntime.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:[jsxRuntime.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:jsxRuntime.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"})}),jsxRuntime.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"}),jsxRuntime.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:jsxRuntime.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)"}})})]}),jsxRuntime.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&&jsxRuntime.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]=react.useState(null),u=b?o?36:28:o?28:18,a=b?o?8:5:o?6:3;return jsxRuntime.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 jsxRuntime.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:jsxRuntime.jsx("svg",{width:u,height:u,viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.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]=react.useState(false),[a,n]=react.useState(o||null),[l,f]=react.useState(o||null);react.useEffect(()=>{u(D());},[]),react.useEffect(()=>{o!==void 0&&(f(o),n(o));},[o]),react.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 jsxRuntime.jsxs("div",{style:{display:"flex",gap:t?12:10},role:"group","aria-label":"Vote",children:[jsxRuntime.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"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(_,{size:p,color:d?"#f9fafb":"#111827"}),jsxRuntime.jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:b?"Updating...":"Sending..."})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(kt,{size:p}),jsxRuntime.jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:g?.up||(l==="up"?"Liked":"Like")})]})}),jsxRuntime.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"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(_,{size:p,color:d?"#f9fafb":"#111827"}),jsxRuntime.jsx("span",{style:{fontSize:t?15:13,fontWeight:500,letterSpacing:"0.01em"},children:b?"Updating...":"Sending..."})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(wt,{size:p}),jsxRuntime.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 jsxRuntime.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.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 jsxRuntime.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.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]=react.useState(g||[]),[n,l]=react.useState(false);react.useEffect(()=>{l(D());},[]),react.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 jsxRuntime.jsxs("div",{children:[jsxRuntime.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 jsxRuntime.jsxs("button",{type:"button",onClick:()=>i(p),disabled:o,style:y(p),"aria-pressed":c,children:[jsxRuntime.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&&jsxRuntime.jsx("svg",{width:10,height:10,viewBox:"0 0 12 12",fill:"none",children:jsxRuntime.jsx("path",{d:"M2 6l3 3 5-5",stroke:"#fff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),p]},p)})}),jsxRuntime.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&&jsxRuntime.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]=react.useState(n?.rating??null),[d,y]=react.useState(n?.content||""),[p,c]=react.useState(false),[I,v]=react.useState(null);react.useEffect(()=>{c(D());},[]),react.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 jsxRuntime.jsxs("form",{onSubmit:x=>{x.preventDefault(),h&&o({rating:f??void 0,content:g&&d.trim()?d.trim():void 0});},children:[jsxRuntime.jsxs("div",{style:{marginBottom:g&&f!==null?p?14:12:0},children:[jsxRuntime.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 jsxRuntime.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)})}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:10,padding:"0 2px"},children:[jsxRuntime.jsx("span",{style:{fontSize:10,color:S?"rgba(255,255,255,0.3)":"rgba(0,0,0,0.3)",fontWeight:500},children:u}),jsxRuntime.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&&jsxRuntime.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";}}),jsxRuntime.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&&jsxRuntime.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=react.useRef(null),q=react.useRef(null),[W,xe]=react.useState(false),[A,ve]=react.useState(false),[ie,Y]=react.useState("light");react.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)},[]),react.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;react.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 jsxRuntime.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:[jsxRuntime.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:jsxRuntime.jsx("svg",{width:A?16:12,height:A?16:12,viewBox:"0 0 14 14",fill:"none",children:jsxRuntime.jsx("path",{d:"M1 1L13 13M1 13L13 1",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})}),jsxRuntime.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&&jsxRuntime.jsxs("div",{style:{textAlign:"center",padding:"24px 0",color:E?"#10b981":"#059669"},children:[jsxRuntime.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:jsxRuntime.jsx("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",children:jsxRuntime.jsx("path",{d:"M20 6L9 17L4 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:13,fontWeight:500,color:E?"#d1d5db":"#374151"},children:t})]}),n&&!a&&jsxRuntime.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&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[e==="feedback"&&jsxRuntime.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"&&jsxRuntime.jsx(et,{theme:V,isLoading:u,onSubmit:w,initialVote:l?.vote||void 0,isEditing:f,labels:y}),e==="nps"&&jsxRuntime.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&&jsxRuntime.jsx(nt,{theme:V,options:p,allowMultiple:c,isLoading:u,onSubmit:w,initialSelected:l?.pollSelected||void 0,isEditing:f})]}),jsxRuntime.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]=react.useState(false),[Oe,Z]=react.useState(false),[ce,ue]=react.useState(null),[J,de]=react.useState(false),j=react.useRef(null);react.useEffect(()=>{de(window.innerWidth<640);},[]);let C=ve===e;react.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=react.useCallback(()=>{j.current&&ue(j.current.getBoundingClientRect()),ie(e),q?.();},[e,ie,q]),ke=react.useCallback(()=>{Y(),le(false),W?.();},[Y,W]),De=react.useCallback(G=>{B(G);},[B]),_e=F?"Update":m;return A||!h?null:jsxRuntime.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:[jsxRuntime.jsx(qe,{size:I,theme:v,customStyles:S,showOnHover:M,touchBehavior:x,onClick:ct,isOpen:C,isParentHovered:Oe}),C&&!J&&jsxRuntime.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&&reactDom.createPortal(jsxRuntime.jsx("div",{style:{position:"fixed",inset:0,zIndex:99999,backgroundColor:"rgba(0, 0, 0, 0.3)"},onClick:ke,children:jsxRuntime.jsx("div",{onClick:G=>G.stopPropagation(),children:jsxRuntime.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]=react.useState(null),[g,t]=react.useState(true),[u,a]=react.useState(null);return react.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(jsxRuntime.jsxs("svg",{width:r,height:r,viewBox:"0 0 24 24",style:{display:"block"},children:[jsxRuntime.jsx("defs",{children:jsxRuntime.jsx("clipPath",{id:a,children:jsxRuntime.jsx("rect",{x:"0",y:"0",width:24*u,height:"24"})})}),jsxRuntime.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}),jsxRuntime.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 jsxRuntime.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 jsxRuntime.jsx("span",{style:{display:"inline-block",width:48,height:r,borderRadius:r,backgroundColor:o,overflow:"hidden",verticalAlign:"middle"},children:jsxRuntime.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 jsxRuntime.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:r,style:{display:"block"},children:jsxRuntime.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]=react.useState("light");if(react.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:jsxRuntime.jsxs("span",{style:h,children:[jsxRuntime.jsx(Dt,{size:d.iconSize,color:v}),jsxRuntime.jsxs("span",{style:{fontSize:d.ratingFontSize,fontWeight:600,color:v,fontVariantNumeric:"tabular-nums"},children:[k,"%"]}),jsxRuntime.jsx(Ot,{rate:k??0,height:d.barHeight,filledColor:v,trackColor:S}),s&&jsxRuntime.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"?jsxRuntime.jsxs("span",{style:h,children:[jsxRuntime.jsx("svg",{width:d.starSize,height:d.starSize,viewBox:"0 0 24 24",style:{display:"block",flexShrink:0},children:jsxRuntime.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})}),jsxRuntime.jsx("span",{style:{fontSize:d.ratingFontSize,fontWeight:700,color:y,fontVariantNumeric:"tabular-nums"},children:w}),s&&jsxRuntime.jsxs("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400},children:["(",R.toLocaleString(),")"]})]}):r==="number"?jsxRuntime.jsxs("span",{style:h,children:[jsxRuntime.jsx("span",{style:{fontSize:d.ratingFontSize,fontWeight:700,color:y,fontVariantNumeric:"tabular-nums"},children:w}),jsxRuntime.jsx("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400},children:"/ 5"}),s&&jsxRuntime.jsxs("span",{style:{fontSize:d.fontSize,color:p,fontWeight:400,marginLeft:2},children:["(",M(R,"response"),")"]})]}):jsxRuntime.jsxs("span",{style:h,children:[jsxRuntime.jsx(Ut,{rating:x,size:d.starSize,filledColor:c,emptyColor:I}),jsxRuntime.jsx("span",{style:{fontSize:d.ratingFontSize,fontWeight:700,color:y,fontVariantNumeric:"tabular-nums"},children:w}),s&&jsxRuntime.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)}}exports.Gotcha=Mt;exports.GotchaProvider=pt;exports.GotchaScore=_t;exports.useGotcha=$t;//# sourceMappingURL=index.js.map
1
+ 'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('react-dom');var Qe="https://gotcha.cx/api/v1";var Re={ANONYMOUS_ID:"gotcha_anonymous_id",OFFLINE_QUEUE:"gotcha_offline_queue"},Y={POSITION:"top-right",SIZE:"md",THEME:"light",SHOW_ON_HOVER:true,TOUCH_BEHAVIOR:"always-visible",SUBMIT_TEXT:"Submit",THANK_YOU_MESSAGE:"Gotcha!"},be={MAX_RETRIES:2,BASE_DELAY_MS:500,MAX_DELAY_MS:5e3};function Xe(){if(typeof window>"u")return `anon_${crypto.randomUUID()}`;try{let e=localStorage.getItem(Re.ANONYMOUS_ID);if(e)return e;let r=`anon_${crypto.randomUUID()}`;return localStorage.setItem(Re.ANONYMOUS_ID,r),r}catch{return `anon_${crypto.randomUUID()}`}}var q={maxRetries:be.MAX_RETRIES,baseDelayMs:be.BASE_DELAY_MS,maxDelayMs:be.MAX_DELAY_MS};async function se(e,r,t=q,o=false){let s=null;for(let h=0;h<=t.maxRetries;h++){try{o&&h>0&&console.log(`[Gotcha] Retry attempt ${h}/${t.maxRetries}`);let n=await fetch(e,r);if(n.status>=400&&n.status<500&&n.status!==429||n.ok)return n;s=new Error(`HTTP ${n.status}`);}catch(n){s=n,o&&console.log(`[Gotcha] Network error: ${s.message}`);}if(h<t.maxRetries){let n=Math.min(t.baseDelayMs*Math.pow(2,h),t.maxDelayMs);await new Promise(g=>setTimeout(g,n));}}throw s}function Je(e){let{apiKey:r,baseUrl:t=Qe,debug:o=false}=e,s={"Content-Type":"application/json",Authorization:`Bearer ${r}`};async function h(n,g,d){let a=`${t}${g}`,u=crypto.randomUUID();o&&console.log(`[Gotcha] ${n} ${g}`,d);let b=await se(a,{method:n,headers:{...s,"Idempotency-Key":u},body:d?JSON.stringify(d):void 0},q,o),l;try{l=await b.json();}catch{throw {code:"PARSE_ERROR",message:"Invalid response from server",status:b.status}}if(!b.ok){let i=l.error;throw o&&console.error(`[Gotcha] Error: ${i.code} - ${i.message}`),i}return o&&console.log("[Gotcha] Response:",l),l}return {async submitResponse(n){let g=n.user||{};g.id||(g.id=Xe());let d={...n,user:g,context:{url:typeof window<"u"?window.location.href:void 0,userAgent:typeof navigator<"u"?navigator.userAgent:void 0},...n.isBug?{isBug:true}:{}};return h("POST","/responses",d)},async checkExistingResponse(n,g){let d=`${t}/responses/check?elementId=${encodeURIComponent(n)}&userId=${encodeURIComponent(g)}`;o&&console.log("[Gotcha] GET /responses/check");let a=await se(d,{method:"GET",headers:s},q,o),u=await a.json();if(!a.ok){let b=u.error;throw o&&console.error(`[Gotcha] Error: ${b.code} - ${b.message}`),b}return u.exists?(o&&console.log("[Gotcha] Found existing response:",u.response),u.response):null},async updateResponse(n,g,d){let a=`${t}/responses/${n}${d?`?userId=${encodeURIComponent(d)}`:""}`;o&&console.log(`[Gotcha] PATCH /responses/${n}`,g);let u=await se(a,{method:"PATCH",headers:s,body:JSON.stringify(g)},q,o),b=await u.json();if(!u.ok){let l=b.error;throw o&&console.error(`[Gotcha] Error: ${l.code} - ${l.message}`),l}return o&&console.log("[Gotcha] Response updated:",b),b},async getScore(n){let g=`${t}/scores/${encodeURIComponent(n)}`;o&&console.log(`[Gotcha] GET /scores/${n}`);let d=await se(g,{method:"GET",headers:s},q,o),a=await d.json();if(!d.ok){let u=a.error;throw o&&console.error(`[Gotcha] Error: ${u.code} - ${u.message}`),u}return o&&console.log("[Gotcha] Score:",a),a},async flagAsBug(n){let g=`${t}/responses/${encodeURIComponent(n)}/bug`;o&&console.log(`[Gotcha] POST /responses/${n}/bug`);let d=await se(g,{method:"POST",headers:s},q,o),a=await d.json();if(!d.ok){let u=a.error;throw o&&console.error(`[Gotcha] Error: ${u.code} - ${u.message}`),u}return o&&console.log("[Gotcha] Bug flagged:",a),a},getBaseUrl(){return t}}}var Ro=new Set(["__proto__","constructor","prototype"]);function X(e,r){let t={...e};for(let o of Object.keys(r)){if(Ro.has(o))continue;let s=r[o];s!=null&&typeof s=="object"&&!Array.isArray(s)?t[o]=X(e[o]??{},s):s!==void 0&&(t[o]=s);}return t}var qe=["#ef4444","#f05540","#f1663c","#f27738","#f38834","#f59e0b","#d4a30e","#b3a812","#79b841","#45c870","#10b981"],Be={colors:{primary:"#1e293b",primaryHover:"#334155",primaryText:"#ffffff",background:"#ffffff",backgroundGradient:"linear-gradient(180deg, #ffffff 0%, #f8fafc 100%)",surface:"#fafbfc",surfaceHover:"#ffffff",text:"#111827",textSecondary:"#374151",textDisabled:"#94a3b8",border:"#e2e8f0",borderFocus:"#1e293b",success:"#059669",successSurface:"rgba(5,150,105,0.08)",error:"#dc2626",errorSurface:"#fef2f2",errorBorder:"rgba(220,38,38,0.1)",warning:"#d97706",warningActive:"#b45309",warningSurface:"rgba(251,191,36,0.08)",warningBorder:"rgba(217,119,6,0.25)",starFilled:"#f59e0b",starEmpty:"#e2e8f0",voteUp:"#10b981",voteUpSurface:"rgba(16,185,129,0.06)",voteUpBorder:"rgba(16,185,129,0.25)",voteDown:"#ef4444",voteDownSurface:"rgba(239,68,68,0.06)",voteDownBorder:"rgba(239,68,68,0.25)",npsColors:qe,buttonBackground:"#1e293b",buttonBackgroundHover:"#334155",buttonBackgroundDisabled:"#e2e8f0",buttonColor:"#ffffff",buttonColorDisabled:"#94a3b8",buttonBorder:"none",buttonShadow:"none",backdropColor:"rgba(0,0,0,0.4)",closeButton:"#9ca3af",closeButtonHover:"#6b7280",closeButtonBg:"rgba(0,0,0,0.04)",glassBackground:"linear-gradient(160deg, rgba(255,255,255,0.7) 0%, rgba(200,210,230,0.4) 40%, rgba(180,192,220,0.5) 100%)",glassBorder:"none",glassColor:"rgba(0,0,0,0.75)",glassShadow:"0 3px 12px rgba(0,0,0,0.12), 0 0 1px rgba(0,0,0,0.2)",glassHoverShadow:"0 6px 20px rgba(0,0,0,0.18), 0 0 1px rgba(0,0,0,0.25)",inputBackground:"#fafbfc",inputBackgroundFocus:"#ffffff",inputBorder:"#e2e8f0",inputBorderFocus:"#1e293b",inputFocusRing:"rgba(30,41,59,0.15)",pollBorder:"#e2e8f0",pollSelectedBorder:"rgba(30,41,59,0.25)",pollBackground:"#fafbfc",pollSelectedBackground:"rgba(30,41,59,0.05)",pollColor:"#374151",pollSelectedColor:"#1e293b",pollCheckBorder:"#cbd5e1",pollCheckSelectedBorder:"#1e293b",pollCheckSelectedBg:"#1e293b"},typography:{fontFamily:"'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",fontSize:{xs:11,sm:13,md:14,lg:16},fontWeight:{normal:400,medium:500,semibold:600,bold:700}},borders:{radius:{sm:8,md:10,lg:14,full:"50%"},width:1},shadows:{sm:"0 1px 2px rgba(0,0,0,0.04)",md:"0 4px 12px rgba(0,0,0,0.06)",lg:"0 12px 32px rgba(0,0,0,0.06)",modal:"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), 0 24px 48px rgba(0,0,0,0.04)",button:"0 2px 8px rgba(0,0,0,0.06)"},animation:{duration:{fast:"0.15s",normal:"0.25s",slow:"0.4s"},easing:{default:"cubic-bezier(0.4, 0, 0.2, 1)",spring:"cubic-bezier(0.34, 1.56, 0.64, 1)"}}},Ae={colors:{primary:"#e2e8f0",primaryHover:"#cbd5e1",primaryText:"#1e293b",background:"#1a1f2e",backgroundGradient:"linear-gradient(180deg, #1a1f2e 0%, #151925 100%)",surface:"rgba(55,65,81,0.5)",surfaceHover:"rgba(55,65,81,0.7)",text:"#f9fafb",textSecondary:"#d1d5db",textDisabled:"#6b7280",border:"rgba(255,255,255,0.08)",borderFocus:"rgba(255,255,255,0.2)",success:"#10b981",successSurface:"rgba(16,185,129,0.1)",error:"#fecaca",errorSurface:"rgba(127,29,29,0.3)",errorBorder:"rgba(254,202,202,0.1)",warning:"#fbbf24",warningActive:"#fbbf24",warningSurface:"rgba(245,158,11,0.08)",warningBorder:"rgba(245,158,11,0.3)",starFilled:"#f59e0b",starEmpty:"rgba(255,255,255,0.12)",voteUp:"#10b981",voteUpSurface:"rgba(16,185,129,0.08)",voteUpBorder:"rgba(16,185,129,0.3)",voteDown:"#ef4444",voteDownSurface:"rgba(239,68,68,0.08)",voteDownBorder:"rgba(239,68,68,0.3)",npsColors:qe,buttonBackground:"#e2e8f0",buttonBackgroundHover:"#cbd5e1",buttonBackgroundDisabled:"#374151",buttonColor:"#1e293b",buttonColorDisabled:"#6b7280",buttonBorder:"none",buttonShadow:"none",backdropColor:"rgba(0,0,0,0.5)",closeButton:"#6b7280",closeButtonHover:"#9ca3af",closeButtonBg:"rgba(255,255,255,0.06)",glassBackground:"linear-gradient(180deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0.04) 60%, rgba(0,0,0,0.05) 100%)",glassBorder:"1px solid rgba(255,255,255,0.15)",glassColor:"rgba(255,255,255,0.88)",glassShadow:"0 4px 14px rgba(0,0,0,0.45), 0 1px 3px rgba(0,0,0,0.35)",glassHoverShadow:"0 8px 24px rgba(0,0,0,0.55), 0 1px 3px rgba(0,0,0,0.4)",inputBackground:"rgba(55,65,81,0.5)",inputBackgroundFocus:"rgba(55,65,81,0.7)",inputBorder:"rgba(255,255,255,0.08)",inputBorderFocus:"rgba(255,255,255,0.2)",inputFocusRing:"rgba(255,255,255,0.06)",pollBorder:"rgba(255,255,255,0.08)",pollSelectedBorder:"rgba(226,232,240,0.25)",pollBackground:"rgba(55,65,81,0.5)",pollSelectedBackground:"rgba(226,232,240,0.08)",pollColor:"#d1d5db",pollSelectedColor:"#e2e8f0",pollCheckBorder:"rgba(255,255,255,0.2)",pollCheckSelectedBorder:"#e2e8f0",pollCheckSelectedBg:"#e2e8f0"},typography:{fontFamily:"'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",fontSize:{xs:11,sm:13,md:14,lg:16},fontWeight:{normal:400,medium:500,semibold:600,bold:700}},borders:{radius:{sm:8,md:10,lg:14,full:"50%"},width:1},shadows:{sm:"0 1px 2px rgba(0,0,0,0.2)",md:"0 4px 12px rgba(0,0,0,0.3)",lg:"0 12px 32px rgba(0,0,0,0.2)",modal:"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 24px 48px rgba(0,0,0,0.15)",button:"0 2px 8px rgba(0,0,0,0.15)"},animation:{duration:{fast:"0.15s",normal:"0.25s",slow:"0.4s"},easing:{default:"cubic-bezier(0.4, 0, 0.2, 1)",spring:"cubic-bezier(0.34, 1.56, 0.64, 1)"}}};function Bo(e,r){return X(e==="dark"?Ae:Be,r)}function K(e,r,t){let s=(e==="auto"||e==="custom"?r:e)==="dark"?X({},Ae):X({},Be);return t&&(s=X(s,t)),s}var Ze="gotcha-styles",eo="gotcha-dm-sans",oo="gotcha-carter-one",Ao=`
2
+ @font-face {
3
+ font-family: 'Carter One';
4
+ font-style: normal;
5
+ font-weight: 400;
6
+ font-display: block;
7
+ src: url(data:font/woff2;base64,d09GMgABAAAAAAK4AA4AAAAABOwAAAJlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhQbXhwaBmAANBEICoFUgW8BNgIkAwgLBgAEIAWCUgcgGwoEUVQMHgC+OLCNaQVfBAoIrXGAIhjLIIM0CxavPfqMrzmLh6/9fufu20XEQyQzNNPOUEmimUZJpKLdIu3RKOU3O1hXc5D3YTdAbu+mRHU5AAIwC231R25qGGbpnwecyr34QQKM3gHMKMzOM4ogDSwQSreJE9bjISamQdCMwAAgeI0+S7qoy5j8TCDK8Ff4Fwm5+ecJhCwh9EgmsJiTo6S+/WkCPCU8DpCqr+hWKM/FBMRyfLPqV2LSlzBEIhqLxeGhIADg+rwoHxx58Oipm4301FUpgID4K8fAChoJFSYwAhNYKyDLAjudDimd9wA18hGDDvNkBE6AByBJiLpXVM2jgyht94hWK9yPQD+5lb948fAQKnfCK1PjBQWRayfW+hltCzAs9B8eX54Xd5g7vrzpiTswCeXB/VG5PNObmFr711KPrLKC6/mxys5avigCA+uFj8HGq+ErmaRDt/31k1XtfRtcI0pNluOCFEOOmVEOTg5eYn77Hq9Y0SJxu+bSBW5skqWS0VLXOvNJxgyRhVECycL7u2cb2pmOGdolPK+ORsLma1IHQCAY6I5NjWKsNzQVPeDnvzc7Pth+aTYMKHpqoEcCwSM4A6sVYPt/AIoeTckToLx4hELyieAj16Z4TKDbKYzIJOAW2JNhIptMhjyRlbXedjaymDv75i5jb1xkyVYiV4okyfIhmnG0EGNDIyMkVgmkUIJcmbJkQmLEi5Ehjz7iJF06pJeel1ETYiCBP/+OePouYuTKlyAX4iVTAl8JkhRIFyN3UpqAdTHa1nfVAy3Kk3LL2Ejf0Gch0McAqJNIAwAA) format('woff2');
8
+ }`.trim();function to(){if(typeof document>"u"||document.getElementById(oo))return;let e=document.createElement("style");e.id=oo,e.textContent=Ao,document.head.appendChild(e);}to();function ie(e){return e.replace(/[{}<>;@\\]/g,"")}function Go(e){let r={default:ie(e.animation.easing.default),spring:ie(e.animation.easing.spring)},t={normal:ie(e.animation.duration.normal)},o=ie(e.typography.fontFamily),s=ie(e.colors.textDisabled);return `
9
+ /* \u2500\u2500 Gotcha Keyframe Animations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
10
+
11
+ @keyframes gotcha-modal-in {
12
+ from { opacity: 0; transform: translateX(-50%) scale(0.92) translateY(-6px); }
13
+ to { opacity: 1; transform: translateX(-50%) scale(1) translateY(0); }
14
+ }
15
+
16
+ @keyframes gotcha-modal-in-above {
17
+ from { opacity: 0; transform: translateX(-50%) scale(0.92) translateY(6px); }
18
+ to { opacity: 1; transform: translateX(-50%) scale(1) translateY(0); }
19
+ }
20
+
21
+ @keyframes gotcha-modal-in-center {
22
+ from { opacity: 0; transform: translate(-50%, -50%) scale(0.92); }
23
+ to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
24
+ }
25
+
26
+ @keyframes gotcha-success-pop {
27
+ 0% { transform: scale(0); opacity: 0; }
28
+ 50% { transform: scale(1.15); }
29
+ 100% { transform: scale(1); opacity: 1; }
30
+ }
31
+
32
+ @keyframes gotcha-success-text {
33
+ from { opacity: 0; transform: translateY(6px); }
34
+ to { opacity: 1; transform: translateY(0); }
35
+ }
36
+
37
+ @keyframes gotcha-check-draw {
38
+ from { stroke-dashoffset: 24; }
39
+ to { stroke-dashoffset: 0; }
40
+ }
41
+
42
+ @keyframes gotcha-glow-pulse {
43
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(16,185,129,0.3); }
44
+ 50% { box-shadow: 0 0 0 8px rgba(16,185,129,0); }
45
+ }
46
+
47
+ @keyframes gotcha-star-pulse {
48
+ 0% { transform: scale(1); }
49
+ 40% { transform: scale(1.3); }
50
+ 100% { transform: scale(1); }
51
+ }
52
+
53
+ @keyframes gotcha-shimmer {
54
+ 0% { background-position: -200% 0; }
55
+ 100% { background-position: 200% 0; }
56
+ }
57
+
58
+ @keyframes gotcha-fade-up {
59
+ from { opacity: 0; transform: translateY(8px); }
60
+ to { opacity: 1; transform: translateY(0); }
61
+ }
62
+
63
+ @keyframes gotcha-overlay-in {
64
+ from { opacity: 0; }
65
+ to { opacity: 1; }
66
+ }
67
+
68
+ @keyframes gotcha-expand-in {
69
+ from { opacity: 0; max-height: 0; margin-top: 0; }
70
+ to { opacity: 1; max-height: 200px; margin-top: 12px; }
71
+ }
72
+
73
+ @keyframes gotcha-bubble-pop {
74
+ 0% { transform: scale(0); opacity: 0; filter: blur(4px); }
75
+ 40% { opacity: 1; filter: blur(0px); }
76
+ 65% { transform: scale(1.08); }
77
+ 82% { transform: scale(0.97); }
78
+ 100% { transform: scale(1); opacity: 1; filter: blur(0px); }
79
+ }
80
+
81
+ @keyframes gotcha-letter-in {
82
+ 0% { opacity: 0; transform: scale(0.6) translateY(2px); filter: blur(3px); }
83
+ 100% { opacity: 1; transform: scale(1) translateY(0); filter: blur(0px); }
84
+ }
85
+
86
+ @keyframes gotcha-arrive-glow {
87
+ 0%, 100% { box-shadow: 0 3px 12px rgba(0,0,0,0.12), 0 0 1px rgba(0,0,0,0.2); }
88
+ 50% { box-shadow: 0 4px 16px rgba(0,0,0,0.18), 0 0 1px rgba(0,0,0,0.25); }
89
+ }
90
+
91
+ @keyframes gotcha-spin {
92
+ from { transform: rotate(0deg); }
93
+ to { transform: rotate(360deg); }
94
+ }
95
+
96
+ @keyframes gotcha-dash {
97
+ 0% { stroke-dasharray: 1, 62; stroke-dashoffset: 0; }
98
+ 50% { stroke-dasharray: 40, 62; stroke-dashoffset: -12; }
99
+ 100% { stroke-dasharray: 1, 62; stroke-dashoffset: -62; }
100
+ }
101
+
102
+ /* \u2500\u2500 Base Styles \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
103
+
104
+ [data-gotcha] {
105
+ font-family: ${o};
106
+ -webkit-font-smoothing: antialiased;
107
+ -moz-osx-font-smoothing: grayscale;
108
+ }
109
+
110
+ [data-gotcha] *, [data-gotcha] *::before, [data-gotcha] *::after {
111
+ box-sizing: border-box;
112
+ }
113
+
114
+ .gotcha-root textarea::placeholder {
115
+ color: ${s};
116
+ }
117
+
118
+ /* \u2500\u2500 Animation Utilities \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
119
+
120
+ .gotcha-fade-up {
121
+ animation: gotcha-fade-up ${t.normal} ${r.default} both;
122
+ }
123
+
124
+ .gotcha-modal-enter {
125
+ animation: gotcha-modal-in 0.3s ${r.spring} both;
126
+ }
127
+
128
+ .gotcha-modal-enter-above {
129
+ animation: gotcha-modal-in-above 0.3s ${r.spring} both;
130
+ }
131
+
132
+ .gotcha-modal-enter-center {
133
+ animation: gotcha-modal-in-center 0.3s ${r.spring} both;
134
+ }
135
+
136
+ .gotcha-overlay-enter {
137
+ animation: gotcha-overlay-in 0.2s ${r.default} both;
138
+ }
139
+
140
+ /* \u2500\u2500 Reduced Motion \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
141
+
142
+ @media (prefers-reduced-motion: reduce) {
143
+ [data-gotcha] *, [data-gotcha] *::before, [data-gotcha] *::after {
144
+ animation-duration: 0.01ms !important;
145
+ animation-iteration-count: 1 !important;
146
+ transition-duration: 0.01ms !important;
147
+ }
148
+ }
149
+ `.trim()}function ye(e){if(typeof document>"u")return;if(to(),!document.getElementById(eo)){let t=document.createElement("link");t.rel="preconnect",t.href="https://fonts.googleapis.com",document.head.appendChild(t);let o=document.createElement("link");o.rel="preconnect",o.href="https://fonts.gstatic.com",o.crossOrigin="anonymous",document.head.appendChild(o);let s=document.createElement("link");s.id=eo,s.rel="stylesheet",s.href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap",document.head.appendChild(s);}let r=document.getElementById(Ze);r||(r=document.createElement("style"),r.id=Ze,document.head.appendChild(r)),r.textContent=Go(e);}var no=react.createContext(null),Fo={};function Do({apiKey:e,children:r,baseUrl:t,debug:o=false,disabled:s=false,defaultUser:h,themeConfig:n}){let[g,d]=react.useState(null),a=react.useMemo(()=>Je({apiKey:e,baseUrl:t,debug:o}),[e,t,o]),u=react.useMemo(()=>h??Fo,[JSON.stringify(h)]);react.useEffect(()=>{let c=K("light","light",n);ye(c);},[n]);let b=react.useCallback(c=>{d(c);},[]),l=react.useCallback(()=>{d(null);},[]),i=react.useMemo(()=>({client:a,disabled:s,defaultUser:u,debug:o,activeModalId:g,openModal:b,closeModal:l,themeConfig:n}),[a,s,u,o,g,b,l,n]);return jsxRuntime.jsx(no.Provider,{value:i,children:r})}function I(){let e=react.useContext(no);if(!e)throw new Error("useGotchaContext must be used within a GotchaProvider");return e}function ao(e){let{client:r,defaultUser:t}=I(),[o,s]=react.useState(false),[h,n]=react.useState(false),[g,d]=react.useState(null),[a,u]=react.useState(null);return react.useEffect(()=>{let l=e.user?.id||t?.id;if(!l){u(null);return}let i=false;return (async()=>{n(true);try{let p=await r.checkExistingResponse(e.elementId,l);i||u(p);}catch{i||u(null);}finally{i||n(false);}})(),()=>{i=true;}},[r,e.elementId,e.user?.id,t?.id]),{submit:react.useCallback(async l=>{s(true),d(null);try{let i=e.user?.id||t?.id,c;return a&&i?c=await r.updateResponse(a.id,{content:l.content,title:l.title,rating:l.rating,vote:l.vote,pollSelected:l.pollSelected},i):c=await r.submitResponse({elementId:e.elementId,mode:e.mode,content:l.content,title:l.title,rating:l.rating,vote:l.vote,pollOptions:e.pollOptions,pollSelected:l.pollSelected,isBug:l.isBug,user:{...t,...e.user}}),u({id:c.id,mode:e.mode,content:l.content??null,title:l.title??null,rating:l.rating??null,vote:l.vote??null,pollSelected:l.pollSelected??null,createdAt:c.createdAt}),e.onSuccess?.(c),c}catch(i){let c=i instanceof Error?i.message:"Something went wrong";throw d(c),e.onError?.(i instanceof Error?i:new Error(c)),i}finally{s(false);}},[r,t,e,a]),isLoading:o,isCheckingExisting:h,error:g,existingResponse:a,isEditing:!!a,clearError:()=>d(null)}}function xe(...e){return e.filter(Boolean).join(" ")}var $=()=>typeof window>"u"?false:"ontouchstart"in window||navigator.maxTouchPoints>0,so=(e,r)=>{let t={sm:{desktop:24,mobile:28},md:{desktop:32,mobile:34},lg:{desktop:40,mobile:40}};return r?t[e].mobile:t[e].desktop};function Ho(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function io({size:e,theme:r,customStyles:t,showOnHover:o,touchBehavior:s,onClick:h,isOpen:n,isParentHovered:g=false,animated:d=true}){let[a,u]=react.useState(false),[b,l]=react.useState(false),[i,c]=react.useState(Ho),[p,y]=react.useState(false),[E,x]=react.useState(false),[T,R]=react.useState(false),{themeConfig:P}=I();react.useEffect(()=>{if(u($()),typeof window>"u")return;let U=window.matchMedia("(prefers-color-scheme: dark)"),W=A=>c(A.matches?"dark":"light");return U.addEventListener("change",W),()=>U.removeEventListener("change",W)},[]);let S=n?true:!a&&o?g:a&&s==="tap-to-reveal"?b:true;react.useEffect(()=>{if(S&&!T){let U=setTimeout(()=>R(true),600);return ()=>clearTimeout(U)}},[S,T]);let w=()=>{if(a&&s==="tap-to-reveal"&&!b){l(true);return}h();},m=so(e,a),v=react.useMemo(()=>K(r,i,P),[r,i,P]),k=()=>S?E?"scale(0.95)":p?"scale(1.08)":"scale(1)":"scale(0.6)",F={width:m,height:m,borderRadius:"50%",border:v.colors.glassBorder,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",background:v.colors.glassBackground,backdropFilter:"blur(20px) saturate(180%)",WebkitBackdropFilter:"blur(20px) saturate(180%)",color:v.colors.glassColor,boxShadow:p?v.colors.glassHoverShadow:v.colors.glassShadow,transition:T?`all 0.3s ${v.animation.easing.spring}`:"none",opacity:S?1:0,transform:k(),filter:E?"brightness(0.95)":"brightness(1)",pointerEvents:S?"auto":"none",...d&&S&&!T?{animation:"gotcha-bubble-pop 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275) both, gotcha-arrive-glow 1200ms ease-in-out 600ms both"}:{},...t?.button};return jsxRuntime.jsx("button",{type:"button",onClick:w,onMouseEnter:()=>y(true),onMouseLeave:()=>{y(false),x(false);},onMouseDown:()=>x(true),onMouseUp:()=>x(false),onTouchStart:()=>x(true),onTouchEnd:()=>x(false),style:F,className:xe("gotcha-button",n&&"gotcha-button--open"),"aria-label":"Give feedback on this feature","aria-expanded":n,"aria-haspopup":"dialog",children:jsxRuntime.jsx(_o,{size:m*.65,animated:d})})}function _o({size:e,animated:r=true}){let[t,o]=react.useState(false);return react.useEffect(()=>{o(true);},[]),jsxRuntime.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",opacity:r?0:t?1:0,...r&&t?{animation:"gotcha-letter-in 350ms cubic-bezier(0.25, 0.46, 0.45, 0.94) 200ms both"}:{}},children:"G"})}function H({size:e=16,color:r="currentColor"}){return jsxRuntime.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",style:{animation:"gotcha-spin 0.8s linear infinite"},children:[jsxRuntime.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:r,strokeWidth:"2",strokeOpacity:"0.12"}),jsxRuntime.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 co({resolvedTheme:e,placeholder:r,submitText:t,isLoading:o,onSubmit:s,customStyles:h,initialValues:n,isEditing:g=false,showText:d=true,showRating:a=true,enableBugFlag:u=false,bugFlagLabel:b}){let[l,i]=react.useState(n?.content||""),[c,p]=react.useState(n?.rating??null),[y,E]=react.useState(false),[x,T]=react.useState(false);react.useEffect(()=>{T($());},[]),react.useEffect(()=>{n?.content!==void 0&&i(n.content||""),n?.rating!==void 0&&p(n.rating??null);},[n?.content,n?.rating]);let R=d&&a?l.trim().length>0||c!==null:d?l.trim().length>0:a?c!==null:false,P=m=>{m.preventDefault(),R&&s({content:d&&l.trim()?l.trim():void 0,rating:a&&c!==null?c:void 0,isBug:y||void 0});},S={width:"100%",padding:x?"12px 14px":"10px 12px",border:`1px solid ${e.colors.inputBorder}`,borderRadius:e.borders.radius.md,backgroundColor:e.colors.inputBackground,color:e.colors.text,fontSize:x?e.typography.fontSize.lg:e.typography.fontSize.md,resize:"vertical",minHeight:x?100:80,fontFamily:e.typography.fontFamily,outline:"none",transition:`border-color ${e.animation.duration.fast} ${e.animation.easing.default}, box-shadow ${e.animation.duration.fast} ${e.animation.easing.default}`,lineHeight:1.5,boxShadow:"inset 0 1px 2px rgba(0,0,0,0.04)",...h?.input},w={width:"100%",padding:x?"14px 16px":"10px 16px",border:e.colors.buttonBorder,borderRadius:e.borders.radius.md,backgroundColor:e.colors.buttonBackground,color:e.colors.buttonColor,fontSize:x?e.typography.fontSize.lg:e.typography.fontSize.md,fontWeight:e.typography.fontWeight.medium,fontFamily:e.typography.fontFamily,cursor:o?"not-allowed":"pointer",transition:`all ${e.animation.duration.fast} ${e.animation.easing.default}`,letterSpacing:"0.01em",...h?.submitButton};return jsxRuntime.jsxs("form",{onSubmit:P,children:[a&&jsxRuntime.jsx("div",{style:{marginBottom:d?x?16:12:0,...d?{}:{display:"flex",justifyContent:"center",padding:"8px 0"}},children:jsxRuntime.jsx(Yo,{value:c,onChange:p,theme:e,isTouch:x,large:!d})}),d&&jsxRuntime.jsx("textarea",{value:l,onChange:m=>i(m.target.value),placeholder:r||"Share your thoughts...",style:S,disabled:o,"aria-label":"Your feedback",onFocus:m=>{m.currentTarget.style.borderColor=e.colors.inputBorderFocus,m.currentTarget.style.boxShadow=`0 0 0 3px ${e.colors.inputFocusRing}`,m.currentTarget.style.backgroundColor=e.colors.inputBackgroundFocus;},onBlur:m=>{m.currentTarget.style.borderColor=e.colors.inputBorder,m.currentTarget.style.boxShadow="inset 0 1px 2px rgba(0,0,0,0.04)",m.currentTarget.style.backgroundColor=e.colors.inputBackground;}}),u&&jsxRuntime.jsxs("button",{type:"button",role:"switch","aria-checked":y,onClick:()=>E(!y),style:{display:"flex",alignItems:"center",gap:7,width:"100%",marginTop:10,padding:"7px 10px",border:`1px solid ${y?e.colors.warningBorder:e.colors.border}`,borderRadius:7,backgroundColor:y?e.colors.warningSurface:"transparent",cursor:"pointer",transition:`all ${e.animation.duration.fast} ${e.animation.easing.default}`,fontFamily:e.typography.fontFamily,...h?.bugFlag},onMouseEnter:m=>{y||(m.currentTarget.style.backgroundColor=e.colors.surfaceHover===e.colors.inputBackgroundFocus?"rgba(0,0,0,0.02)":e.colors.surfaceHover);},onMouseLeave:m=>{y||(m.currentTarget.style.backgroundColor="transparent");},children:[jsxRuntime.jsx("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:y?e.colors.warningActive:e.colors.textDisabled,strokeWidth:1.75,strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transition:`stroke ${e.animation.duration.fast}`},children:jsxRuntime.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"})}),jsxRuntime.jsx("span",{style:{fontSize:12,fontWeight:y?e.typography.fontWeight.medium:e.typography.fontWeight.normal,color:y?e.colors.warningActive:e.colors.textDisabled,transition:`color ${e.animation.duration.fast}`,letterSpacing:"0.01em"},children:y?"Issue reported":b||"Report an issue"}),jsxRuntime.jsx("div",{style:{marginLeft:"auto",width:28,height:16,borderRadius:8,backgroundColor:y?e.colors.warning:e.colors.border,position:"relative",transition:`background-color ${e.animation.duration.fast} ${e.animation.easing.default}`,flexShrink:0},children:jsxRuntime.jsx("div",{style:{position:"absolute",top:2,left:y?14:2,width:12,height:12,borderRadius:"50%",backgroundColor:y?"#ffffff":e.colors.textDisabled,transition:`left ${e.animation.duration.fast} ${e.animation.easing.default}, background-color ${e.animation.duration.fast}`,boxShadow:"0 1px 2px rgba(0,0,0,0.15)"}})})]}),jsxRuntime.jsxs("button",{type:"submit",disabled:o||!R,style:{...w,marginTop:12,opacity:o?.8:1,backgroundColor:R?e.colors.buttonBackground:e.colors.buttonBackgroundDisabled,color:R?e.colors.buttonColor:e.colors.buttonColorDisabled,display:"flex",alignItems:"center",justifyContent:"center",gap:8,...o?{backgroundImage:"linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.1) 50%, transparent 100%)",backgroundSize:"200% 100%",animation:"gotcha-shimmer 1.5s ease infinite"}:{}},onMouseEnter:m=>{m.currentTarget.disabled||(m.currentTarget.style.backgroundColor=e.colors.buttonBackgroundHover,m.currentTarget.style.transform="translateY(-1px)",m.currentTarget.style.boxShadow=e.shadows.button);},onMouseLeave:m=>{m.currentTarget.disabled||(m.currentTarget.style.backgroundColor=e.colors.buttonBackground,m.currentTarget.style.transform="translateY(0)",m.currentTarget.style.boxShadow="none");},children:[o&&jsxRuntime.jsx(H,{size:x?18:16,color:e.colors.buttonColor}),o?g?"Updating...":"Submitting...":g?"Update":t]})]})}function Yo({value:e,onChange:r,theme:t,isTouch:o,large:s=false}){let[h,n]=react.useState(null),[g,d]=react.useState(null),a=react.useRef(),u=s?o?36:28:o?28:18,b=s?o?8:5:o?8:3;react.useEffect(()=>()=>{clearTimeout(a.current);},[]);let l=i=>{d(i),r(i),clearTimeout(a.current),a.current=setTimeout(()=>d(null),300);};return jsxRuntime.jsx("div",{style:{display:"flex",gap:s?o?8:6:o?6:2},role:"group","aria-label":"Rating",children:[1,2,3,4,5].map(i=>{let c=(h??e??0)>=i;return jsxRuntime.jsx("button",{type:"button",onClick:()=>l(i),onMouseEnter:()=>n(i),onMouseLeave:()=>n(null),"aria-label":`Rate ${i} out of 5`,"aria-pressed":e===i,style:{background:"none",border:"none",cursor:"pointer",padding:b,color:c?t.colors.starFilled:t.colors.starEmpty,transition:`color 0.15s ${t.animation.easing.default}`,transform:g===i?"scale(1)":h!==null&&h>=i?"scale(1.1)":"scale(1)",animation:g===i?`gotcha-star-pulse 0.3s ${t.animation.easing.spring}`:"none",filter:c?`drop-shadow(0 0 3px ${t.colors.starFilled}40)`:"none",transitionDelay:`${(i-1)*30}ms`},children:jsxRuntime.jsx("svg",{width:u,height:u,viewBox:"0 0 24 24",fill:"currentColor",children:jsxRuntime.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"})})},i)})})}function uo({resolvedTheme:e,isLoading:r,onSubmit:t,initialVote:o,isEditing:s=false,labels:h}){let[n,g]=react.useState(false),[d,a]=react.useState(o||null),[u,b]=react.useState(o||null);react.useEffect(()=>{g($());},[]),react.useEffect(()=>{o!==void 0&&(b(o),a(o));},[o]),react.useEffect(()=>{!r&&!s&&a(null);},[r,s]);let l=p=>{a(p),t({vote:p});},i=p=>{let y=u===p,E=p==="up"?e.colors.voteUp:e.colors.voteDown,x=p==="up"?e.colors.voteUpSurface:e.colors.voteDownSurface,T=p==="up"?e.colors.voteUpBorder:e.colors.voteDownBorder;return {flex:1,minWidth:0,overflow:"hidden",padding:n?"14px 18px":"10px 14px",border:y?`2px solid ${T}`:`1px solid ${e.colors.border}`,borderRadius:e.borders.radius.lg-2,background:y?`linear-gradient(135deg, ${x}, ${x})`:e.colors.surface,color:y?E:e.colors.textSecondary,fontSize:n?28:24,fontFamily:e.typography.fontFamily,cursor:r?"not-allowed":"pointer",transition:`all 0.2s ${e.animation.easing.default}`,display:"flex",alignItems:"center",justifyContent:"center",gap:n?10:8}},c=n?24:20;return jsxRuntime.jsxs("div",{style:{display:"flex",gap:n?12:10},role:"group","aria-label":"Vote",children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>l("up"),disabled:r,style:i("up"),"aria-label":"Vote up - I like this","aria-pressed":u==="up",onMouseEnter:p=>{r||(p.currentTarget.style.transform="translateY(-2px) scale(1.02)",p.currentTarget.style.boxShadow=e.shadows.button);},onMouseLeave:p=>{p.currentTarget.style.transform="translateY(0) scale(1)",p.currentTarget.style.boxShadow="none";},children:r&&d==="up"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{size:c,color:e.colors.text}),jsxRuntime.jsx("span",{style:{fontSize:n?15:13,fontWeight:e.typography.fontWeight.medium,letterSpacing:"0.01em"},children:s?"Updating...":"Sending..."})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Ko,{size:c}),jsxRuntime.jsx("span",{style:{fontSize:n?15:13,fontWeight:e.typography.fontWeight.medium,letterSpacing:"0.01em"},children:h?.up||(u==="up"?"Liked":"Like")})]})}),jsxRuntime.jsx("button",{type:"button",onClick:()=>l("down"),disabled:r,style:i("down"),"aria-label":"Vote down - I don't like this","aria-pressed":u==="down",onMouseEnter:p=>{r||(p.currentTarget.style.transform="translateY(-2px) scale(1.02)",p.currentTarget.style.boxShadow=e.shadows.button);},onMouseLeave:p=>{p.currentTarget.style.transform="translateY(0) scale(1)",p.currentTarget.style.boxShadow="none";},children:r&&d==="down"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{size:c,color:e.colors.text}),jsxRuntime.jsx("span",{style:{fontSize:n?15:13,fontWeight:e.typography.fontWeight.medium,letterSpacing:"0.01em"},children:s?"Updating...":"Sending..."})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Vo,{size:c}),jsxRuntime.jsx("span",{style:{fontSize:n?15:13,fontWeight:e.typography.fontWeight.medium,letterSpacing:"0.01em"},children:h?.down||(u==="down"?"Disliked":"Dislike")})]})})]})}function Ko({size:e=24}){return jsxRuntime.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.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 Vo({size:e=24}){return jsxRuntime.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntime.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 fo({resolvedTheme:e,options:r,allowMultiple:t,isLoading:o,onSubmit:s,initialSelected:h,isEditing:n=false}){let[g,d]=react.useState(h||[]),[a,u]=react.useState(false);react.useEffect(()=>{u($());},[]),react.useEffect(()=>{h&&d(h);},[h]);let b=c=>{d(t?p=>p.includes(c)?p.filter(y=>y!==c):[...p,c]:p=>p.includes(c)?[]:[c]);},l=()=>{g.length!==0&&s({pollSelected:g});},i=(c,p)=>{let y=g.includes(c);return {width:"100%",padding:a?"12px 14px":"9px 12px",border:`1px solid ${y?e.colors.pollSelectedBorder:e.colors.pollBorder}`,borderRadius:e.borders.radius.lg-2,backgroundColor:y?e.colors.pollSelectedBackground:e.colors.pollBackground,color:y?e.colors.pollSelectedColor:e.colors.pollColor,fontSize:a?15:e.typography.fontSize.sm,fontWeight:y?e.typography.fontWeight.semibold:e.typography.fontWeight.medium,fontFamily:e.typography.fontFamily,cursor:o?"not-allowed":"pointer",transition:`all 0.2s ${e.animation.easing.default}`,textAlign:"left",letterSpacing:"0.01em",display:"flex",alignItems:"center",gap:8,animation:`gotcha-fade-up ${e.animation.duration.normal} ${e.animation.easing.default} both`,animationDelay:`${p*.05}s`}};return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:a?8:6},role:"group","aria-label":t?"Select one or more options":"Select an option",children:r.map((c,p)=>{let y=g.includes(c);return jsxRuntime.jsxs("button",{type:"button",onClick:()=>b(c),disabled:o,style:i(c,p),"aria-pressed":y,onMouseEnter:E=>{o||(E.currentTarget.style.transform="translateX(2px)");},onMouseLeave:E=>{E.currentTarget.style.transform="translateX(0)";},children:[jsxRuntime.jsx("span",{style:{width:16,height:16,borderRadius:t?4:"50%",border:`2px solid ${y?e.colors.pollCheckSelectedBorder:e.colors.pollCheckBorder}`,backgroundColor:y?e.colors.pollCheckSelectedBg:"transparent",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:`all ${e.animation.duration.fast}`},children:y&&jsxRuntime.jsx("svg",{width:10,height:10,viewBox:"0 0 12 12",fill:"none",children:jsxRuntime.jsx("path",{d:"M2 6l3 3 5-5",stroke:"#fff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),c]},c)})}),jsxRuntime.jsxs("button",{type:"button",onClick:l,disabled:o||g.length===0,style:{width:"100%",marginTop:12,padding:a?"14px 16px":"10px 16px",border:e.colors.buttonBorder,borderRadius:e.borders.radius.md,backgroundColor:g.length===0?e.colors.buttonBackgroundDisabled:e.colors.buttonBackground,color:g.length===0?e.colors.buttonColorDisabled:e.colors.buttonColor,fontSize:a?e.typography.fontSize.lg:e.typography.fontSize.md,fontWeight:e.typography.fontWeight.medium,fontFamily:e.typography.fontFamily,cursor:o||g.length===0?"not-allowed":"pointer",transition:`all ${e.animation.duration.fast} ${e.animation.easing.default}`,letterSpacing:"0.01em",display:"flex",alignItems:"center",justifyContent:"center",gap:8,opacity:o?.8:1,...o?{backgroundImage:"linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.1) 50%, transparent 100%)",backgroundSize:"200% 100%",animation:"gotcha-shimmer 1.5s ease infinite"}:{}},onMouseEnter:c=>{c.currentTarget.disabled||(c.currentTarget.style.backgroundColor=e.colors.buttonBackgroundHover,c.currentTarget.style.transform="translateY(-1px)",c.currentTarget.style.boxShadow=e.shadows.button);},onMouseLeave:c=>{c.currentTarget.disabled||(c.currentTarget.style.backgroundColor=g.length===0?e.colors.buttonBackgroundDisabled:e.colors.buttonBackground,c.currentTarget.style.transform="translateY(0)",c.currentTarget.style.boxShadow="none");},children:[o&&jsxRuntime.jsx(H,{size:a?18:16,color:e.colors.buttonColor}),o?n?"Updating...":"Submitting...":n?"Update":"Submit"]})]})}function ho({resolvedTheme:e,submitText:r,isLoading:t,onSubmit:o,customStyles:s,showFollowUp:h=true,followUpPlaceholder:n,lowLabel:g="Not likely",highLabel:d="Very likely",initialValues:a,isEditing:u=false}){let[b,l]=react.useState(a?.rating??null),[i,c]=react.useState(a?.content||""),[p,y]=react.useState(false),[E,x]=react.useState(null);react.useEffect(()=>{y($());},[]),react.useEffect(()=>{a?.rating!==void 0&&l(a.rating??null),a?.content!==void 0&&c(a.content||"");},[a?.rating,a?.content]);let T=b!==null,R=e.colors.npsColors;return jsxRuntime.jsxs("form",{onSubmit:S=>{S.preventDefault(),T&&o({rating:b??void 0,content:h&&i.trim()?i.trim():void 0});},children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:{display:"flex",gap:p?4:6,justifyContent:"center"},role:"group","aria-label":"NPS Score",children:Array.from({length:11},(S,w)=>{let m=b===w,v=E===w,k=R[w];return jsxRuntime.jsx("button",{type:"button",onClick:()=>l(w),onMouseEnter:()=>x(w),onMouseLeave:()=>x(null),"aria-label":`Score ${w} out of 10`,"aria-pressed":m,style:{flex:1,minWidth:0,height:p?34:32,borderRadius:e.borders.radius.sm,border:m?`2px solid ${k}`:`1.5px solid ${k}25`,backgroundColor:m?k:v?`${k}25`:`${k}0c`,color:m?"#fff":v?k:`${k}bb`,fontSize:12,fontWeight:m?e.typography.fontWeight.bold:e.typography.fontWeight.semibold,fontFamily:e.typography.fontFamily,fontVariantNumeric:"tabular-nums",cursor:"pointer",padding:0,display:"flex",alignItems:"center",justifyContent:"center",transition:`all 0.2s ${e.animation.easing.spring}`,transform:m?"scale(1.08)":v?"scale(1.04)":"scale(1)",boxShadow:m?`0 0 12px ${k}40`:"none",...s?.npsButton,...m?s?.npsButtonSelected:{}},children:w},w)})}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:6,padding:"0 2px",...s?.npsLabels},children:[jsxRuntime.jsx("span",{style:{fontSize:e.typography.fontSize.xs,color:e.colors.textDisabled,fontWeight:e.typography.fontWeight.medium,letterSpacing:"0.02em"},children:g}),jsxRuntime.jsx("span",{style:{fontSize:e.typography.fontSize.xs,color:e.colors.textDisabled,fontWeight:e.typography.fontWeight.medium,letterSpacing:"0.02em"},children:d})]})]}),h&&b!==null&&jsxRuntime.jsx("textarea",{value:i,onChange:S=>c(S.target.value),placeholder:n||"What's the main reason for your score?",style:{width:"100%",padding:p?"12px 14px":"10px 12px",border:`1px solid ${e.colors.inputBorder}`,borderRadius:e.borders.radius.md,backgroundColor:e.colors.inputBackground,color:e.colors.text,fontSize:p?e.typography.fontSize.lg:e.typography.fontSize.md,resize:"vertical",minHeight:p?80:60,fontFamily:e.typography.fontFamily,outline:"none",transition:`border-color ${e.animation.duration.fast} ${e.animation.easing.default}, box-shadow ${e.animation.duration.fast} ${e.animation.easing.default}`,lineHeight:1.5,animation:`gotcha-expand-in 0.3s ${e.animation.easing.default} both`,overflow:"hidden",...s?.input},disabled:t,"aria-label":"Follow-up feedback",onFocus:S=>{S.currentTarget.style.borderColor=e.colors.inputBorderFocus,S.currentTarget.style.boxShadow=`0 0 0 3px ${e.colors.inputFocusRing}`,S.currentTarget.style.backgroundColor=e.colors.inputBackgroundFocus;},onBlur:S=>{S.currentTarget.style.borderColor=e.colors.inputBorder,S.currentTarget.style.boxShadow="none",S.currentTarget.style.backgroundColor=e.colors.inputBackground;}}),jsxRuntime.jsxs("button",{type:"submit",disabled:t||!T,style:{width:"100%",padding:p?"14px 16px":"10px 16px",border:e.colors.buttonBorder,borderRadius:e.borders.radius.md,backgroundColor:T?e.colors.buttonBackground:e.colors.buttonBackgroundDisabled,color:T?e.colors.buttonColor:e.colors.buttonColorDisabled,fontSize:p?e.typography.fontSize.lg:e.typography.fontSize.md,fontWeight:e.typography.fontWeight.medium,fontFamily:e.typography.fontFamily,cursor:t?"not-allowed":"pointer",transition:`all ${e.animation.duration.fast} ${e.animation.easing.default}`,letterSpacing:"0.01em",opacity:t?.8:1,display:"flex",alignItems:"center",justifyContent:"center",gap:8,marginTop:12,...t?{backgroundImage:"linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.1) 50%, transparent 100%)",backgroundSize:"200% 100%",animation:"gotcha-shimmer 1.5s ease infinite"}:{},...s?.submitButton},onMouseEnter:S=>{S.currentTarget.disabled||(S.currentTarget.style.backgroundColor=e.colors.buttonBackgroundHover,S.currentTarget.style.transform="translateY(-1px)",S.currentTarget.style.boxShadow=e.shadows.button);},onMouseLeave:S=>{S.currentTarget.disabled||(S.currentTarget.style.backgroundColor=T?e.colors.buttonBackground:e.colors.buttonBackgroundDisabled,S.currentTarget.style.transform="translateY(0)",S.currentTarget.style.boxShadow="none");},children:[t&&jsxRuntime.jsx(H,{size:p?18:16,color:e.colors.buttonColor}),t?u?"Updating...":"Submitting...":u?"Update":r]})]})}function Oe({mode:e,theme:r,customStyles:t,promptText:o,placeholder:s,submitText:h,thankYouMessage:n,isLoading:g,isSubmitted:d,error:a,existingResponse:u,isEditing:b=false,showText:l=true,showRating:i=true,voteLabels:c,options:p,allowMultiple:y=false,npsQuestion:E,npsFollowUp:x=true,npsFollowUpPlaceholder:T,npsLowLabel:R,npsHighLabel:P,enableBugFlag:S=false,bugFlagLabel:w,onSubmit:m,onClose:v,anchorRect:k}){let F=react.useRef(null),U=react.useRef(null),W=react.useRef(v);W.current=v;let[A,we]=react.useState(false),[pe,fe]=react.useState("light"),{themeConfig:oe}=I();react.useEffect(()=>{we(window.innerWidth<640);let B=window.matchMedia("(prefers-color-scheme: dark)");fe(B.matches?"dark":"light");let j=D=>fe(D.matches?"dark":"light");return B.addEventListener("change",j),()=>B.removeEventListener("change",j)},[]);let f=react.useMemo(()=>K(r,pe,oe),[r,pe,oe]);react.useEffect(()=>{ye(f);},[f]);let me=typeof window>"u"||!k?false:window.innerHeight-k.bottom<300;react.useEffect(()=>{let B=F.current;if(!B)return;U.current?.focus();let j=D=>{if(D.key==="Escape"){W.current();return}if(D.key==="Tab"){let Q=B.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),O=Q[0],ne=Q[Q.length-1];D.shiftKey&&document.activeElement===O?(D.preventDefault(),ne?.focus()):!D.shiftKey&&document.activeElement===ne&&(D.preventDefault(),O?.focus());}};return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[]);let te=e==="vote"?"What do you think?":e==="poll"?"Cast your vote":e==="nps"?E||"How likely are you to recommend us?":"What do you think of this feature?",he=A?24:20,re=e==="nps"?420:340,Ce=A?"gotcha-modal-enter-center":me?"gotcha-modal-enter-above":"gotcha-modal-enter",Ee=A?{position:"fixed",left:"50%",top:"50%",width:"calc(100vw - 32px)",maxWidth:re,padding:he,borderRadius:f.borders.radius.lg+2,background:f.colors.backgroundGradient,color:f.colors.text,boxShadow:f.shadows.modal,border:`${f.borders.width}px solid ${f.colors.border}`,zIndex:9999,fontFamily:f.typography.fontFamily,...t?.modal,textAlign:"left"}:{position:"absolute",left:"50%",width:re,padding:he,borderRadius:f.borders.radius.lg,background:f.colors.backgroundGradient,color:f.colors.text,boxShadow:f.shadows.modal,border:`${f.borders.width}px solid ${f.colors.border}`,zIndex:9999,fontFamily:f.typography.fontFamily,...me?{bottom:"100%",marginBottom:8}:{top:"100%",marginTop:8},...t?.modal,textAlign:"left"},N=B=>({animation:`gotcha-fade-up ${f.animation.duration.normal} ${f.animation.easing.default} both`,animationDelay:`${B*.05}s`}),V=n==="Gotcha!"||n==="Thanks for your feedback!";return jsxRuntime.jsxs("div",{ref:F,role:"dialog","aria-modal":"true","aria-label":d?"Feedback submitted":void 0,"aria-labelledby":d?void 0:"gotcha-modal-title","data-gotcha":true,style:Ee,className:xe("gotcha-modal",Ce),children:[jsxRuntime.jsx("button",{ref:U,type:"button",onClick:v,"aria-label":"Close feedback form",style:{position:"absolute",top:A?10:6,right:A?10:6,width:A?40:36,height:A?40:36,border:"none",background:"transparent",cursor:"pointer",color:f.colors.closeButton,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:f.borders.radius.sm,transition:`all ${f.animation.duration.fast} ${f.animation.easing.default}`,...t?.closeButton},onMouseEnter:B=>{B.currentTarget.style.backgroundColor=f.colors.closeButtonBg,B.currentTarget.style.color=f.colors.closeButtonHover;},onMouseLeave:B=>{B.currentTarget.style.backgroundColor="transparent",B.currentTarget.style.color=f.colors.closeButton;},children:jsxRuntime.jsx("svg",{width:A?16:14,height:A?16:14,viewBox:"0 0 14 14",fill:"none",children:jsxRuntime.jsx("path",{d:"M1 1L13 13M1 13L13 1",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})}),!d&&jsxRuntime.jsx("h2",{id:"gotcha-modal-title",style:{margin:"0 0 16px 0",fontSize:A?f.typography.fontSize.lg:f.typography.fontSize.md,fontWeight:f.typography.fontWeight.semibold,paddingRight:A?44:38,letterSpacing:"-0.02em",lineHeight:1.4,textAlign:"left",fontFamily:f.typography.fontFamily,...N(0),...t?.title},children:o||te}),d&&jsxRuntime.jsxs("div",{style:{textAlign:"center",padding:"28px 0 20px"},children:[jsxRuntime.jsx("div",{style:{width:52,height:52,borderRadius:"50%",backgroundColor:f.colors.successSurface,display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 16px",animation:`gotcha-success-pop 0.4s ${f.animation.easing.spring} both, gotcha-glow-pulse 0.8s ease 0.4s`,...t?.successIcon},children:jsxRuntime.jsx("svg",{width:"26",height:"26",viewBox:"0 0 24 24",fill:"none",children:jsxRuntime.jsx("path",{d:"M20 6L9 17L4 12",stroke:f.colors.success,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:24,strokeDashoffset:0,animation:"gotcha-check-draw 0.4s ease 0.2s both"}})})}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:V?22:f.typography.fontSize.md,fontWeight:V?f.typography.fontWeight.bold:f.typography.fontWeight.medium,color:f.colors.text,fontFamily:V?"'Carter One', cursive":f.typography.fontFamily,animation:"gotcha-success-text 0.3s ease 0.3s both",...t?.successMessage},children:V?"Gotcha!":n}),V&&jsxRuntime.jsx("p",{style:{margin:"6px 0 0",fontSize:f.typography.fontSize.sm,fontWeight:f.typography.fontWeight.normal,color:f.colors.textSecondary,animation:"gotcha-success-text 0.3s ease 0.45s both"},children:"Thanks for your feedback!"})]}),a&&!d&&jsxRuntime.jsxs("div",{style:{padding:"8px 10px",marginBottom:12,borderRadius:f.borders.radius.sm,backgroundColor:f.colors.errorSurface,border:`1px solid ${f.colors.errorBorder}`,color:f.colors.error,fontSize:f.typography.fontSize.sm,lineHeight:1.4,display:"flex",alignItems:"center",gap:8,...N(1),...t?.errorMessage},children:[jsxRuntime.jsx("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:jsxRuntime.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",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})}),a]}),!d&&jsxRuntime.jsxs("div",{style:N(1),children:[e==="feedback"&&jsxRuntime.jsx(co,{resolvedTheme:f,placeholder:s,submitText:h,isLoading:g,onSubmit:m,customStyles:t,initialValues:u?{content:u.content,rating:u.rating}:void 0,isEditing:b,showText:l,showRating:i,enableBugFlag:S,bugFlagLabel:w}),e==="vote"&&jsxRuntime.jsx(uo,{resolvedTheme:f,isLoading:g,onSubmit:m,initialVote:u?.vote||void 0,isEditing:b,labels:c}),e==="nps"&&jsxRuntime.jsx(ho,{resolvedTheme:f,submitText:h,isLoading:g,onSubmit:m,showFollowUp:x,followUpPlaceholder:T,lowLabel:R,highLabel:P,customStyles:t,initialValues:u?{rating:u.rating,content:u.content}:void 0,isEditing:b}),e==="poll"&&p&&p.length>0&&jsxRuntime.jsx(fo,{resolvedTheme:f,options:p,allowMultiple:y,isLoading:g,onSubmit:m,initialSelected:u?.pollSelected||void 0,isEditing:b})]}),jsxRuntime.jsxs("div",{"aria-live":"polite",className:"sr-only",style:{position:"absolute",left:-9999},children:[d&&"Thank you! Your feedback has been submitted.",a&&`Error: ${a}`]})]})}function Xo({elementId:e,user:r,mode:t="feedback",showText:o=true,showRating:s=true,voteLabels:h,options:n,allowMultiple:g=false,npsQuestion:d,npsFollowUp:a=true,npsFollowUpPlaceholder:u,npsLowLabel:b,npsHighLabel:l,enableBugFlag:i=false,bugFlagLabel:c,onePerUser:p=false,animated:y=true,position:E=Y.POSITION,size:x=Y.SIZE,theme:T=Y.THEME,customStyles:R,visible:P=true,showOnHover:S=Y.SHOW_ON_HOVER,touchBehavior:w=Y.TOUCH_BEHAVIOR,promptText:m,placeholder:v,submitText:k=Y.SUBMIT_TEXT,thankYouMessage:F=Y.THANK_YOU_MESSAGE,onSubmit:U,onOpen:W,onClose:A,onError:we}){let{disabled:pe,activeModalId:fe,openModal:oe,closeModal:f}=I(),[me,te]=react.useState(false),[he,re]=react.useState(false),[Ce,Ee]=react.useState(null),[N,V]=react.useState(false),[B,j]=react.useState(false),D=react.useRef(null),Q=react.useRef();react.useEffect(()=>(j(true),V(window.innerWidth<640),()=>{clearTimeout(Q.current);}),[]);let O=fe===e;react.useEffect(()=>{if(!O||!N)return;let G=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=G;}},[O,N]),react.useEffect(()=>{if(!S)return;let G=D.current;if(!G)return;let ae=G.parentElement;if(!ae)return;let Ve=()=>re(true),je=()=>re(false);return ae.addEventListener("mouseenter",Ve),ae.addEventListener("mouseleave",je),()=>{ae.removeEventListener("mouseenter",Ve),ae.removeEventListener("mouseleave",je);}},[S]);let{submit:ne,isLoading:xo,error:vo,existingResponse:ko,isEditing:Ne}=ao({elementId:e,mode:t,pollOptions:n,user:r,onSuccess:G=>{te(true),U?.(G),Q.current=setTimeout(()=>{f(),te(false);},3e3);},onError:G=>{console.warn("[Gotcha] Submission failed:",G instanceof Error?G.message:G),we?.(G);}}),To=react.useCallback(()=>{D.current&&Ee(D.current.getBoundingClientRect()),oe(e),W?.();},[e,oe,W]),Ye=react.useCallback(()=>{clearTimeout(Q.current),f(),te(false),A?.();},[f,A]),wo=react.useCallback(G=>{ne(G);},[ne]),Co=Ne?"Update":k;if(pe||!P)return null;let Eo={"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"}},Ke={mode:t,theme:T,customStyles:R,promptText:m,placeholder:v,submitText:Co,thankYouMessage:F,isLoading:xo,isSubmitted:me,error:vo,existingResponse:ko,isEditing:Ne,showText:o,showRating:s,voteLabels:h,options:n,allowMultiple:g,npsQuestion:d,npsFollowUp:a,npsFollowUpPlaceholder:u,npsLowLabel:b,npsHighLabel:l,enableBugFlag:i,bugFlagLabel:c,onSubmit:wo,onClose:Ye,anchorRect:Ce||void 0};return jsxRuntime.jsxs("div",{ref:D,style:{...Eo[E],zIndex:O?1e4:"auto"},className:"gotcha-container","data-gotcha-element":e,children:[jsxRuntime.jsx(io,{size:x,theme:T,customStyles:R,showOnHover:S,touchBehavior:w,onClick:To,isOpen:O,isParentHovered:he,animated:y}),O&&!N&&jsxRuntime.jsx(Oe,{...Ke}),O&&N&&B&&reactDom.createPortal(jsxRuntime.jsx("div",{role:"presentation",style:{position:"fixed",inset:0,zIndex:99999,backgroundColor:"rgba(0,0,0,0.4)",backdropFilter:"blur(8px)",WebkitBackdropFilter:"blur(8px)"},className:"gotcha-overlay-enter",onClick:Ye,children:jsxRuntime.jsx("div",{onClick:G=>G.stopPropagation(),children:jsxRuntime.jsx(Oe,{...Ke})})}),document.body)]})}function So({elementId:e,refreshInterval:r}){let{client:t}=I(),[o,s]=react.useState(null),[h,n]=react.useState(true),[g,d]=react.useState(null);return react.useEffect(()=>{let a=false,u=async()=>{try{let l=await t.getScore(e);a||(s(l),d(null));}catch(l){a||d(l instanceof Error?l.message:"Failed to load score");}finally{a||n(false);}};u();let b;return r&&r>0&&(b=setInterval(u,r)),()=>{a=true,b&&clearInterval(b);}},[t,e,r]),{score:o,isLoading:h,error:g}}var tt={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 rt({rating:e,size:r,filledColor:t,emptyColor:o}){let s=`gotcha-star-clip-${Math.random().toString(36).slice(2,8)}`,h=[];for(let n=1;n<=5;n++){let g=Math.min(1,Math.max(0,e-(n-1))),d=`${s}-${n}`;h.push(jsxRuntime.jsxs("svg",{width:r,height:r,viewBox:"0 0 24 24",style:{display:"block"},children:[jsxRuntime.jsx("defs",{children:jsxRuntime.jsx("clipPath",{id:d,children:jsxRuntime.jsx("rect",{x:"0",y:"0",width:24*g,height:"24"})})}),jsxRuntime.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}),jsxRuntime.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:t,clipPath:`url(#${d})`})]},n));}return jsxRuntime.jsx("span",{style:{display:"inline-flex",gap:Math.max(1,r*.08),alignItems:"center"},children:h})}function nt({rate:e,height:r,filledColor:t,trackColor:o}){return jsxRuntime.jsx("span",{style:{display:"inline-block",width:48,height:r,borderRadius:r,backgroundColor:o,overflow:"hidden",verticalAlign:"middle"},children:jsxRuntime.jsx("span",{style:{display:"block",width:`${e}%`,height:"100%",borderRadius:r,background:t,transition:"width 0.6s cubic-bezier(0.4, 0, 0.2, 1)"}})})}function at({size:e,color:r}){return jsxRuntime.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:r,style:{display:"block"},children:jsxRuntime.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 st({elementId:e,variant:r="stars",showCount:t=true,size:o="md",theme:s="auto",refreshInterval:h,style:n}){let{score:g,isLoading:d}=So({elementId:e,refreshInterval:h}),[a,u]=react.useState("light");react.useEffect(()=>{if(typeof window>"u")return;let v=window.matchMedia("(prefers-color-scheme: dark)");u(v.matches?"dark":"light");let k=F=>u(F.matches?"dark":"light");return v.addEventListener("change",k),()=>v.removeEventListener("change",k)},[]);let{themeConfig:b}=I(),l=react.useMemo(()=>K(s,a,b),[s,a,b]);if(d||!g)return null;let i=tt[o],c=l.colors.text,p=l.colors.textDisabled,y=l.colors.starFilled,E=l.colors.starEmpty,x=l.colors.voteUp,T=l.colors.starEmpty,R={display:"inline-flex",alignItems:"center",gap:i.gap,fontFamily:l.typography.fontFamily,lineHeight:1,letterSpacing:"-0.01em",WebkitFontSmoothing:"antialiased",...n},P=(v,k)=>{let F=v===1?k:`${k}s`;return `${v.toLocaleString()} ${F}`};if(r==="votes"){let{voteCount:v,positiveRate:k}=g,F=v.up+v.down;return F===0?null:jsxRuntime.jsxs("span",{style:R,children:[jsxRuntime.jsx(at,{size:i.iconSize,color:x}),jsxRuntime.jsxs("span",{style:{fontSize:i.ratingFontSize,fontWeight:600,color:x,fontVariantNumeric:"tabular-nums"},children:[k,"%"]}),jsxRuntime.jsx(nt,{rate:k??0,height:i.barHeight,filledColor:x,trackColor:T}),t&&jsxRuntime.jsx("span",{style:{fontSize:i.fontSize,color:p,fontWeight:400},children:P(F,"vote")})]})}let{averageRating:S,totalResponses:w}=g;if(S===null||w===0)return null;let m=S.toFixed(1);return r==="compact"?jsxRuntime.jsxs("span",{style:R,children:[jsxRuntime.jsx("svg",{width:i.starSize,height:i.starSize,viewBox:"0 0 24 24",style:{display:"block",flexShrink:0},children:jsxRuntime.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:y})}),jsxRuntime.jsx("span",{style:{fontSize:i.ratingFontSize,fontWeight:700,color:c,fontVariantNumeric:"tabular-nums"},children:m}),t&&jsxRuntime.jsxs("span",{style:{fontSize:i.fontSize,color:p,fontWeight:400},children:["(",w.toLocaleString(),")"]})]}):r==="number"?jsxRuntime.jsxs("span",{style:R,children:[jsxRuntime.jsx("span",{style:{fontSize:i.ratingFontSize,fontWeight:700,color:c,fontVariantNumeric:"tabular-nums"},children:m}),jsxRuntime.jsx("span",{style:{fontSize:i.fontSize,color:p,fontWeight:400},children:"/ 5"}),t&&jsxRuntime.jsxs("span",{style:{fontSize:i.fontSize,color:p,fontWeight:400,marginLeft:2},children:["(",P(w,"response"),")"]})]}):jsxRuntime.jsxs("span",{style:R,children:[jsxRuntime.jsx(rt,{rating:S,size:i.starSize,filledColor:y,emptyColor:E}),jsxRuntime.jsx("span",{style:{fontSize:i.ratingFontSize,fontWeight:700,color:c,fontVariantNumeric:"tabular-nums"},children:m}),t&&jsxRuntime.jsxs("span",{style:{fontSize:i.fontSize,color:p,fontWeight:400},children:["(",P(w,"response"),")"]})]})}function it(){let{client:e,disabled:r,defaultUser:t,debug:o}=I();return {client:e,disabled:r,defaultUser:t,debug:o,submitFeedback:e.submitResponse.bind(e)}}
150
+ exports.Gotcha=Xo;exports.GotchaProvider=Do;exports.GotchaScore=st;exports.createTheme=Bo;exports.useGotcha=it;//# sourceMappingURL=index.js.map
12
151
  //# sourceMappingURL=index.js.map