chatgram-widget 1.0.0 → 1.0.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/README.md +5 -9
- package/dist/chatgram-widget.cjs.js +1 -1
- package/dist/chatgram-widget.cjs.js.map +1 -1
- package/dist/chatgram-widget.esm.js +1 -1
- package/dist/chatgram-widget.esm.js.map +1 -1
- package/dist/chatgram-widget.umd.js +1 -1
- package/dist/chatgram-widget.umd.js.map +1 -1
- package/dist/types/core/types.d.ts +0 -3
- package/dist/types/index.d.ts +1 -3
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ npm install chatgram-widget
|
|
|
39
39
|
```html
|
|
40
40
|
<script src="https://unpkg.com/chatgram-widget"></script>
|
|
41
41
|
<script>
|
|
42
|
-
ChatgramWidget.init(
|
|
42
|
+
ChatgramWidget.init();
|
|
43
43
|
</script>
|
|
44
44
|
```
|
|
45
45
|
|
|
@@ -48,7 +48,7 @@ npm install chatgram-widget
|
|
|
48
48
|
```js
|
|
49
49
|
import { init, open } from 'chatgram-widget';
|
|
50
50
|
|
|
51
|
-
init(
|
|
51
|
+
init();
|
|
52
52
|
document.querySelector('#contact-btn').addEventListener('click', open);
|
|
53
53
|
```
|
|
54
54
|
|
|
@@ -60,7 +60,7 @@ import { init, open, destroy } from 'chatgram-widget';
|
|
|
60
60
|
|
|
61
61
|
function App() {
|
|
62
62
|
useEffect(() => {
|
|
63
|
-
init(
|
|
63
|
+
init();
|
|
64
64
|
return () => destroy();
|
|
65
65
|
}, []);
|
|
66
66
|
|
|
@@ -75,7 +75,7 @@ function App() {
|
|
|
75
75
|
import { onMounted, onUnmounted } from 'vue';
|
|
76
76
|
import { init, open, destroy } from 'chatgram-widget';
|
|
77
77
|
|
|
78
|
-
onMounted(() => init(
|
|
78
|
+
onMounted(() => init());
|
|
79
79
|
onUnmounted(() => destroy());
|
|
80
80
|
</script>
|
|
81
81
|
|
|
@@ -90,7 +90,7 @@ onUnmounted(() => destroy());
|
|
|
90
90
|
|
|
91
91
|
| Method | Description |
|
|
92
92
|
|--------|-------------|
|
|
93
|
-
| `init(config)` | Initialize the widget.
|
|
93
|
+
| `init(config)` | Initialize the widget. |
|
|
94
94
|
| `open()` | Open the modal |
|
|
95
95
|
| `close()` | Close the modal |
|
|
96
96
|
| `destroy()` | Remove widget from DOM entirely |
|
|
@@ -108,10 +108,6 @@ onUnmounted(() => destroy());
|
|
|
108
108
|
|
|
109
109
|
```ts
|
|
110
110
|
init({
|
|
111
|
-
// ── Required ──────────────────────────────────
|
|
112
|
-
apiKey: 'your-api-key',
|
|
113
|
-
|
|
114
|
-
// ── Optional ──────────────────────────────────
|
|
115
111
|
domain: 'mysite.com', // Default: auto-detected
|
|
116
112
|
apiBaseUrl: 'https://custom-api.com', // Default: chatgram-server.brandid.app
|
|
117
113
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(t,e,n){super(t),this.name="ChatgramError",this.code=e,this.statusCode=n}}const e={primaryColor:"#EE6055",secondaryColor:"#D94F44",backgroundColor:"#FFFFFF",headerBackgroundColor:"#2C3345",headerTextColor:"#FFFFFF",textColor:"#6B7280",inputBackgroundColor:"#1E2535",inputTextColor:"#FFFFFF",inputPlaceholderColor:"#9CA3AF",borderRadius:"8px",modalBorderRadius:"16px",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif",boxShadow:"0 25px 60px rgba(0, 0, 0, 0.3)"},n={title:"Contact Support",subtitle:"We're here to help you succeed",categoryLabel:"What can we help with?",emailLabel:"Your Email",emailPlaceholder:"email@example.com",nameLabel:"Your Name",namePlaceholder:"John Doe",subjectLabel:"Subject",subjectPlaceholder:"Brief subject of your request",messageLabel:"Message",messagePlaceholder:"Tell us what you think...",submitButtonText:"Submit",submittingText:"Sending...",successTitle:"Message Sent!",successMessage:"We've received your message and will get back to you as soon as possible.",successButtonText:"Close",errorTitle:"Oops!",errorMessage:"Something went wrong. Please try again.",errorButtonText:"Try Again",requiredFieldError:"This field is required",invalidEmailError:"Please enter a valid email address",messageTooLongError:"Message exceeds the maximum length",networkError:"Network error. Please check your internet connection.",timeoutError:"Request timed out. Please try again.",rateLimitError:"Too many submissions. Please wait a moment.",categories:{feedback:"Feedback",bug:"Bug Report",feature:"Feature",support:"Support"}},i=["feedback","bug","feature","support"];function o(t,e){if(!e)return{...t};const n={...t};for(const i of Object.keys(e)){const o=e[i],s=t[i];void 0!==o&&(n[i]=null===o||"object"!=typeof o||Array.isArray(o)||null===s||"object"!=typeof s||Array.isArray(s)?o:{...s,...o})}return n}function s(t){var s,a,l,c,d,h,u,g,p,m,f,b,x,v;if(!t.apiKey||"string"!=typeof t.apiKey)throw new Error("[chatgram-widget] `apiKey` is required. Get yours at https://brandid.app/chatgram");return{apiKey:t.apiKey.trim(),domain:t.domain||("undefined"!=typeof window&&window.location?window.location.hostname:"localhost"),apiBaseUrl:(t.apiBaseUrl||"https://chatgram-server.brandid.app").replace(/\/+$/,""),theme:o(e,t.theme),texts:o(n,t.texts),categories:t.categories&&t.categories.length>0?t.categories:i,defaultCategory:t.defaultCategory||"support",maxMessageLength:r(null!==(s=t.maxMessageLength)&&void 0!==s?s:5e3,100,5e4),showTriggerButton:null===(a=t.showTriggerButton)||void 0===a||a,triggerPosition:t.triggerPosition||"bottom-right",showNameField:null===(l=t.showNameField)||void 0===l||l,showCategories:null===(c=t.showCategories)||void 0===c||c,zIndex:null!==(d=t.zIndex)&&void 0!==d?d:999999,closeOnOverlayClick:null===(h=t.closeOnOverlayClick)||void 0===h||h,closeOnEscape:null===(u=t.closeOnEscape)||void 0===u||u,enableHoneypot:null===(g=t.enableHoneypot)||void 0===g||g,minSubmitDelay:r(null!==(p=t.minSubmitDelay)&&void 0!==p?p:2,0,30),rateLimitMax:r(null!==(m=t.rateLimitMax)&&void 0!==m?m:3,1,100),rateLimitWindow:r(null!==(f=t.rateLimitWindow)&&void 0!==f?f:3e5,1e4,36e5),requestTimeout:r(null!==(b=t.requestTimeout)&&void 0!==b?b:15e3,3e3,6e4),retryAttempts:r(null!==(x=t.retryAttempts)&&void 0!==x?x:2,0,5),autoResetDelay:Math.max(null!==(v=t.autoResetDelay)&&void 0!==v?v:0,0),defaultEmail:t.defaultEmail,defaultName:t.defaultName,onSuccess:t.onSuccess,onError:t.onError,onOpen:t.onOpen,onClose:t.onClose,onSubmit:t.onSubmit}}function r(t,e,n){return Math.min(Math.max(t,e),n)}class a{constructor(){this.listeners=new Map}on(t,e){this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(e)}off(t,e){var n;null===(n=this.listeners.get(t))||void 0===n||n.delete(e)}once(t,e){const n=i=>{this.off(t,n),e(i)};this.on(t,n)}emit(t,e){const n=this.listeners.get(t);if(n)for(const i of n)try{i(e)}catch(e){console.error(`[chatgram-widget] Error in "${t}" handler:`,e)}}removeAllListeners(){this.listeners.clear()}}async function l(e,n,i){const o=new AbortController,s=setTimeout(()=>o.abort(),i);try{const i=`${e}/api/tickets`,r=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(n),signal:o.signal});clearTimeout(s);let a={};try{a=await r.json()}catch(t){}if(!r.ok){const e="string"==typeof a.message?a.message:`Server error (${r.status})`;if(429===r.status)throw new t(e,"RATE_LIMITED",429);if(r.status>=400&&r.status<500)throw new t(e,"VALIDATION_ERROR",r.status);throw new t(e,"SERVER_ERROR",r.status)}return{success:!0,ticketId:a.ticketId||a.id||a._id||void 0,message:a.message||"Ticket created successfully"}}catch(e){if(clearTimeout(s),e instanceof t)throw e;if(e instanceof DOMException&&"AbortError"===e.name)throw new t("Request timed out. Please check your connection and try again.","TIMEOUT");if(e instanceof TypeError)throw new t("Network error. Please check your internet connection.","NETWORK_ERROR");throw new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN")}}function c(t){return new Promise(e=>setTimeout(e,t))}function d(e){return e instanceof t?e:e instanceof Error?new t(e.message,"UNKNOWN"):new t(String(e),"UNKNOWN")}class h{constructor(t,e){this.timestamps=[],this.maxRequests=t,this.windowMs=e}tryConsume(){const t=Date.now();return this.timestamps=this.timestamps.filter(e=>t-e<this.windowMs),!(this.timestamps.length>=this.maxRequests||(this.timestamps.push(t),0))}getRetryAfter(){if(this.timestamps.length<this.maxRequests)return 0;const t=this.timestamps[0],e=this.windowMs-(Date.now()-t);return Math.max(Math.ceil(e/1e3),1)}reset(){this.timestamps=[]}}function u(t){return"string"!=typeof t?"":t.replace(/\0/g,"").trim()}function g(t){return"string"==typeof t&&t.trim().length>0}function p(t){return function(t){return"string"==typeof t&&!/expression\s*\(|url\s*\(|javascript:|data:/i.test(t)}(t)?t:""}function m(t,e,n){const i=document.createElement(t);if(e)for(const[t,n]of Object.entries(e))"className"===t?i.className=n:"textContent"===t?i.textContent=n:"innerHTML"===t?i.innerHTML=n:i.setAttribute(t,n);return i}const f=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");let b=0,x=0,v="",y="",w=0;const E={feedback:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',bug:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>',feature:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 1v2"/><path d="M12 21v2"/><path d="M4.22 4.22l1.42 1.42"/><path d="M18.36 18.36l1.42 1.42"/><path d="M1 12h2"/><path d="M21 12h2"/><path d="M4.22 19.78l1.42-1.42"/><path d="M18.36 5.64l1.42-1.42"/></svg>',support:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>',close:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',email:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></svg>',user:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',subject:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>',send:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>',success:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>',error:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',spinner:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>',trigger:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',warning:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>'};function C(t){return E[t]||E.support}class F{constructor(t,e){this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null,this.isOpen=!1,this.state="idle",this.mountTime=0,this.destroyFocusTrap=null,this.boundEscapeHandler=null,this.emailInput=null,this.nameInput=null,this.subjectInput=null,this.messageInput=null,this.honeypotInput=null,this.charCountText=null,this.charCountFill=null,this.submitBtn=null,this.categoryBtns=[],this.config=s(t),this.events=e,this.selectedCategory=this.config.defaultCategory,this.instanceId=function(t="cg"){return`${t}-${++w}-${Date.now().toString(36)}`}("cg-modal"),this.rateLimiter=new h(this.config.rateLimitMax,this.config.rateLimitWindow)}open(){var t,e,n;this.isOpen||(this.hostEl||this.mount(),this.isOpen=!0,this.mountTime=Date.now(),requestAnimationFrame(()=>{var t;null===(t=this.overlay)||void 0===t||t.classList.add("cg-overlay--visible")}),b++,b>1||(x=window.innerWidth-document.documentElement.clientWidth,y=document.body.style.overflow,v=document.body.style.paddingRight,document.body.style.overflow="hidden",x>0&&(document.body.style.paddingRight=`${x}px`)),this.modalEl&&(this.destroyFocusTrap=function(t){const e=document.activeElement;function n(){return Array.from(t.querySelectorAll(f)).filter(t=>{const e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility})}function i(e){if("Tab"!==e.key)return;const i=n();if(0===i.length)return void e.preventDefault();const o=i[0],s=i[i.length-1];e.shiftKey?document.activeElement!==o&&t.contains(document.activeElement)||(e.preventDefault(),s.focus()):document.activeElement!==s&&t.contains(document.activeElement)||(e.preventDefault(),o.focus())}return t.addEventListener("keydown",i),requestAnimationFrame(()=>{const t=n();t.length>0&&t[0].focus()}),()=>{if(t.removeEventListener("keydown",i),e&&"function"==typeof e.focus)try{e.focus()}catch(t){}}}(this.modalEl)),this.config.closeOnEscape&&(this.boundEscapeHandler=t=>{"Escape"===t.key&&this.close()},document.addEventListener("keydown",this.boundEscapeHandler)),null===(t=this.overlay)||void 0===t||t.setAttribute("aria-hidden","false"),this.events.emit("open"),null===(n=(e=this.config).onOpen)||void 0===n||n.call(e))}close(){var t,e,n;this.isOpen&&this.overlay&&(this.isOpen=!1,this.overlay.classList.remove("cg-overlay--visible"),this.overlay.setAttribute("aria-hidden","true"),b=Math.max(0,b-1),b>0||(document.body.style.overflow=y,document.body.style.paddingRight=v),null===(t=this.destroyFocusTrap)||void 0===t||t.call(this),this.destroyFocusTrap=null,this.boundEscapeHandler&&(document.removeEventListener("keydown",this.boundEscapeHandler),this.boundEscapeHandler=null),this.events.emit("close"),null===(n=(e=this.config).onClose)||void 0===n||n.call(e),setTimeout(()=>{"idle"!==this.state&&this.setState("idle")},300))}destroy(){this.close(),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null)}updateConfig(t){this.config=s(t),this.shadow&&this.applyTheme()}updateTheme(t){t&&(this.config=s({...this.config,theme:{...this.config.theme,...t}}),this.shadow&&this.applyTheme(),this.events.emit("theme-change",t))}getState(){return this.state}isVisible(){return this.isOpen}mount(){this.hostEl=m("div",{id:this.instanceId}),this.hostEl.style.cssText="position:fixed;top:0;left:0;width:0;height:0;overflow:visible;z-index:"+this.config.zIndex,this.shadow=this.hostEl.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent="\n/* ═══ Reset ═══ */\n*, *::before, *::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n/* ═══ Overlay ═══ */\n.cg-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n z-index: var(--cg-z, 999999);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.25s ease, visibility 0.25s ease;\n font-family: var(--cg-font);\n color: var(--cg-text);\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.cg-overlay--visible {\n opacity: 1;\n visibility: visible;\n}\n\n/* ═══ Modal Shell ═══ */\n.cg-modal {\n background: var(--cg-bg, #FFFFFF);\n border-radius: var(--cg-modal-radius, 16px);\n box-shadow: var(--cg-shadow, 0 25px 60px rgba(0,0,0,0.3));\n width: 100%;\n max-width: 520px;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transform: translateY(20px) scale(0.97);\n opacity: 0;\n transition:\n transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.cg-overlay--visible .cg-modal {\n transform: translateY(0) scale(1);\n opacity: 1;\n}\n\n/* ═══ Header ═══ */\n.cg-header {\n background: var(--cg-header-bg, #2C3345);\n color: var(--cg-header-text, #FFFFFF);\n padding: 20px 24px;\n display: flex;\n align-items: center;\n gap: 14px;\n position: relative;\n flex-shrink: 0;\n}\n\n.cg-header__icon {\n width: 40px;\n height: 40px;\n background: rgba(255, 255, 255, 0.12);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n.cg-header__icon svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n.cg-header__info { flex: 1; min-width: 0; }\n\n.cg-header__title {\n font-size: 17px;\n font-weight: 600;\n letter-spacing: -0.01em;\n color: inherit;\n}\n\n.cg-header__subtitle {\n font-size: 13px;\n opacity: 0.75;\n margin-top: 2px;\n color: inherit;\n}\n\n/* ── Close Button ── */\n.cg-close-btn {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 32px;\n height: 32px;\n background: rgba(255, 255, 255, 0.1);\n border: none;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.2s;\n color: var(--cg-header-text, #FFFFFF);\n padding: 0;\n}\n.cg-close-btn:hover { background: rgba(255, 255, 255, 0.2); }\n.cg-close-btn:focus-visible {\n outline: 2px solid rgba(255, 255, 255, 0.6);\n outline-offset: 2px;\n}\n.cg-close-btn svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n/* ═══ Body (scrollable) ═══ */\n.cg-body {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n scrollbar-width: thin;\n scrollbar-color: rgba(0,0,0,0.15) transparent;\n}\n.cg-body::-webkit-scrollbar { width: 6px; }\n.cg-body::-webkit-scrollbar-track { background: transparent; }\n.cg-body::-webkit-scrollbar-thumb {\n background: rgba(0,0,0,0.15);\n border-radius: 3px;\n}\n\n/* ═══ Labels ═══ */\n.cg-label {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-primary, #EE6055);\n margin-bottom: 6px;\n}\n.cg-label--required::after {\n content: ' *';\n color: var(--cg-primary, #EE6055);\n}\n.cg-label--optional::after {\n content: '(Optional)';\n color: var(--cg-text, #6B7280);\n font-weight: 400;\n margin-left: 4px;\n font-size: 12px;\n}\n\n/* ═══ Categories ═══ */\n.cg-categories {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.cg-cat-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 12px;\n border: 1.5px solid #E5E7EB;\n border-radius: var(--cg-radius, 8px);\n background: transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-text, #6B7280);\n cursor: pointer;\n transition: all 0.2s;\n font-family: inherit;\n outline: none;\n}\n.cg-cat-btn:hover {\n border-color: var(--cg-primary, #EE6055);\n color: var(--cg-primary, #EE6055);\n}\n.cg-cat-btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-cat-btn--active {\n background: var(--cg-primary, #EE6055);\n border-color: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n}\n.cg-cat-btn--active svg { stroke: #FFFFFF; }\n\n/* ═══ Form Fields ═══ */\n.cg-field {\n margin-bottom: 16px;\n}\n\n.cg-input-wrap {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.cg-input-wrap__icon {\n position: absolute;\n left: 14px;\n display: flex;\n align-items: center;\n pointer-events: none;\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input-wrap__icon svg {\n stroke: var(--cg-input-placeholder, #9CA3AF);\n}\n\n.cg-input {\n width: 100%;\n padding: 12px 14px 12px 42px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-input::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-input--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Textarea ═══ */\n.cg-textarea {\n width: 100%;\n padding: 14px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n resize: vertical;\n min-height: 120px;\n max-height: 240px;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-textarea::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-textarea:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-textarea--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Character Counter ═══ */\n.cg-counter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n}\n.cg-counter__bar {\n flex: 1;\n height: 3px;\n background: #E5E7EB;\n border-radius: 2px;\n overflow: hidden;\n}\n.cg-counter__fill {\n height: 100%;\n background: var(--cg-primary, #EE6055);\n border-radius: 2px;\n transition: width 0.2s;\n}\n.cg-counter__fill--warn { background: #F59E0B; }\n.cg-counter__fill--danger { background: #EF4444; }\n.cg-counter__text {\n font-size: 12px;\n color: var(--cg-text, #6B7280);\n white-space: nowrap;\n}\n\n/* ═══ Field Errors ═══ */\n.cg-error {\n font-size: 12px;\n color: #EF4444;\n margin-top: 4px;\n min-height: 0;\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n transition: max-height 0.2s, opacity 0.2s, margin 0.2s;\n}\n.cg-error--visible {\n max-height: 40px;\n opacity: 1;\n margin-top: 4px;\n}\n\n/* ═══ Honeypot (hidden from humans) ═══ */\n.cg-hp {\n position: absolute;\n left: -9999px;\n top: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n tab-index: -1;\n}\n\n/* ═══ Submit Button ═══ */\n.cg-submit {\n width: 100%;\n padding: 14px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 15px;\n font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s, transform 0.1s, box-shadow 0.2s;\n margin-top: 8px;\n outline: none;\n}\n.cg-submit svg { stroke: #FFFFFF; }\n.cg-submit:hover:not(:disabled) {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-submit:active:not(:disabled) {\n transform: scale(0.98);\n}\n.cg-submit:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-submit:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n}\n\n/* ═══ Spinner ═══ */\n.cg-spinner {\n display: inline-flex;\n animation: cg-spin 0.8s linear infinite;\n}\n.cg-spinner svg { stroke: #FFFFFF; }\n\n/* ═══ Success & Error State Views ═══ */\n.cg-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 24px;\n min-height: 320px;\n animation: cg-fade-in 0.3s ease;\n}\n\n.cg-state__icon {\n margin-bottom: 20px;\n}\n.cg-state__icon--success svg { stroke: #10B981; }\n.cg-state__icon--error svg { stroke: #EF4444; }\n\n.cg-state__title {\n font-size: 20px;\n font-weight: 700;\n color: #1F2937;\n margin-bottom: 8px;\n}\n\n.cg-state__msg {\n font-size: 14px;\n color: var(--cg-text, #6B7280);\n max-width: 320px;\n line-height: 1.6;\n}\n\n.cg-state__btn {\n margin-top: 24px;\n padding: 10px 28px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n}\n.cg-state__btn:hover {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-state__btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n\n/* ═══ Animations ═══ */\n@keyframes cg-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n@keyframes cg-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* ═══ Responsive ═══ */\n@media (max-width: 480px) {\n .cg-overlay { padding: 0; }\n .cg-modal {\n max-width: 100%;\n max-height: 100%;\n height: 100%;\n border-radius: 0;\n }\n .cg-body { padding: 16px; }\n .cg-categories { gap: 6px; }\n .cg-cat-btn { font-size: 12px; padding: 8px; gap: 5px; }\n .cg-header { padding: 16px 20px; }\n}\n\n/* ═══ Reduced Motion ═══ */\n@media (prefers-reduced-motion: reduce) {\n .cg-overlay,\n .cg-modal,\n .cg-spinner,\n .cg-state,\n .cg-submit,\n .cg-cat-btn,\n .cg-input,\n .cg-textarea,\n .cg-counter__fill,\n .cg-error {\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n }\n}\n\n/* ═══ High Contrast Mode ═══ */\n@media (forced-colors: active) {\n .cg-cat-btn { border: 2px solid ButtonText; }\n .cg-cat-btn--active { background: Highlight; color: HighlightText; }\n .cg-input, .cg-textarea { border: 1px solid ButtonText; }\n .cg-submit { border: 2px solid ButtonText; }\n}\n",this.shadow.appendChild(t),this.overlay=m("div",{className:"cg-overlay",role:"dialog","aria-modal":"true","aria-label":this.config.texts.title,"aria-hidden":"true"}),this.config.closeOnOverlayClick&&this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.close()}),this.modalEl=m("div",{className:"cg-modal"}),this.modalEl.addEventListener("click",t=>t.stopPropagation()),this.modalEl.appendChild(this.buildHeader()),this.bodyContainer=m("div",{className:"cg-body"}),this.buildFormView(),this.modalEl.appendChild(this.bodyContainer),this.overlay.appendChild(this.modalEl),this.shadow.appendChild(this.overlay),this.applyTheme(),document.body.appendChild(this.hostEl)}applyTheme(){var t;const e=this.overlay||(null===(t=this.shadow)||void 0===t?void 0:t.host);if(!e)return;const n=this.config.theme;!function(t,e){for(const[n,i]of Object.entries(e)){const e=p(i);e&&t.style.setProperty(n,e)}}(e,{"--cg-primary":n.primaryColor,"--cg-secondary":n.secondaryColor,"--cg-bg":n.backgroundColor,"--cg-header-bg":n.headerBackgroundColor,"--cg-header-text":n.headerTextColor,"--cg-text":n.textColor,"--cg-input-bg":n.inputBackgroundColor,"--cg-input-text":n.inputTextColor,"--cg-input-placeholder":n.inputPlaceholderColor,"--cg-radius":n.borderRadius,"--cg-modal-radius":n.modalBorderRadius,"--cg-font":n.fontFamily,"--cg-shadow":n.boxShadow,"--cg-z":String(this.config.zIndex)})}buildHeader(){const t=this.config.texts,e=m("div",{className:"cg-header"}),n=m("div",{className:"cg-header__icon",innerHTML:E.feedback}),i=m("div",{className:"cg-header__info"});i.appendChild(m("h2",{className:"cg-header__title",textContent:t.title,id:`${this.instanceId}-title`})),i.appendChild(m("p",{className:"cg-header__subtitle",textContent:t.subtitle}));const o=m("button",{className:"cg-close-btn","aria-label":"Close dialog",type:"button",innerHTML:E.close});return o.addEventListener("click",()=>this.close()),e.append(n,i,o),e}buildFormView(){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="",this.categoryBtns=[];const t=this.config.texts;if(this.config.showCategories&&this.config.categories.length>1){const e=m("div",{className:"cg-label",textContent:t.categoryLabel,id:`${this.instanceId}-cat-label`});this.bodyContainer.appendChild(e);const n=m("div",{className:"cg-categories",role:"radiogroup","aria-labelledby":`${this.instanceId}-cat-label`});for(let e=0;e<this.config.categories.length;e++){const i=this.config.categories[e],o=t.categories[i]||i,s=i===this.selectedCategory,r=m("button",{className:"cg-cat-btn"+(s?" cg-cat-btn--active":""),type:"button",role:"radio","aria-checked":String(s),tabindex:s?"0":"-1"});r.innerHTML=C(i),r.appendChild(document.createTextNode(" "+o)),r.dataset.type=i,r.addEventListener("click",()=>this.selectCategory(i)),r.addEventListener("keydown",t=>{const n=this.categoryBtns.length;if("ArrowRight"===t.key||"ArrowDown"===t.key){t.preventDefault();const i=this.categoryBtns[(e+1)%n];this.selectCategory(i.dataset.type),i.focus()}else if("ArrowLeft"===t.key||"ArrowUp"===t.key){t.preventDefault();const i=this.categoryBtns[(e-1+n)%n];this.selectCategory(i.dataset.type),i.focus()}}),this.categoryBtns.push(r),n.appendChild(r)}this.bodyContainer.appendChild(n)}const e=this.buildField({label:t.emailLabel,placeholder:t.emailPlaceholder,type:"email",icon:E.email,required:!0,id:`${this.instanceId}-email`,autocomplete:"email"});if(this.emailInput=e.querySelector("input"),this.config.defaultEmail&&(this.emailInput.value=this.config.defaultEmail),this.bodyContainer.appendChild(e),this.config.showNameField){const e=this.buildField({label:t.nameLabel,placeholder:t.namePlaceholder,type:"text",icon:E.user,required:!1,id:`${this.instanceId}-name`,autocomplete:"name"});this.nameInput=e.querySelector("input"),this.config.defaultName&&(this.nameInput.value=this.config.defaultName),this.bodyContainer.appendChild(e)}else this.nameInput=null;const n=this.buildField({label:t.subjectLabel,placeholder:t.subjectPlaceholder,type:"text",icon:E.subject,required:!0,id:`${this.instanceId}-subject`,autocomplete:"off"});this.subjectInput=n.querySelector("input"),this.bodyContainer.appendChild(n);const i=m("div",{className:"cg-field"}),o=m("label",{className:"cg-label cg-label--required",textContent:t.messageLabel});o.setAttribute("for",`${this.instanceId}-msg`),i.appendChild(o),this.messageInput=document.createElement("textarea"),this.messageInput.className="cg-textarea",this.messageInput.id=`${this.instanceId}-msg`,this.messageInput.placeholder=t.messagePlaceholder,this.messageInput.setAttribute("maxlength",String(this.config.maxMessageLength)),this.messageInput.setAttribute("aria-required","true"),this.messageInput.setAttribute("aria-describedby",`${this.instanceId}-char-count`),i.appendChild(this.messageInput);const s=m("div",{className:"cg-counter",id:`${this.instanceId}-char-count`}),r=m("div",{className:"cg-counter__bar"});this.charCountFill=m("div",{className:"cg-counter__fill"}),this.charCountFill.style.width="0%",r.appendChild(this.charCountFill),this.charCountText=m("span",{className:"cg-counter__text",textContent:`0 / ${this.config.maxMessageLength}`,"aria-live":"polite"}),s.append(r,this.charCountText),i.appendChild(s);const a=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});if(i.appendChild(a),this.messageInput.addEventListener("input",()=>this.updateCharCount()),i.dataset.fieldName="message",this.bodyContainer.appendChild(i),this.config.enableHoneypot){const t=m("div",{className:"cg-hp","aria-hidden":"true"});this.honeypotInput=document.createElement("input"),this.honeypotInput.type="text",this.honeypotInput.name="website",this.honeypotInput.tabIndex=-1,this.honeypotInput.autocomplete="off",t.appendChild(this.honeypotInput),this.bodyContainer.appendChild(t)}else this.honeypotInput=null;this.submitBtn=document.createElement("button"),this.submitBtn.className="cg-submit",this.submitBtn.type="button",this.submitBtn.setAttribute("aria-label",t.submitButtonText),this.submitBtn.innerHTML=`${E.send} <span>${t.submitButtonText}</span>`,this.submitBtn.addEventListener("click",()=>this.handleSubmit()),this.bodyContainer.appendChild(this.submitBtn)}buildField(t){const e=m("div",{className:"cg-field"});e.dataset.fieldName=t.id;const n=m("label",{className:t.required?"cg-label cg-label--required":"cg-label cg-label--optional",textContent:t.label});n.setAttribute("for",t.id),e.appendChild(n);const i=m("div",{className:"cg-input-wrap"}),o=m("span",{className:"cg-input-wrap__icon",innerHTML:t.icon,"aria-hidden":"true"}),s=document.createElement("input");s.className="cg-input",s.type=t.type,s.id=t.id,s.placeholder=t.placeholder,s.setAttribute("autocomplete",t.autocomplete),t.required&&(s.setAttribute("aria-required","true"),s.required=!0),s.addEventListener("input",()=>{this.clearFieldError(e)}),i.append(o,s),e.appendChild(i);const r=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});return e.appendChild(r),e}selectCategory(t){this.selectedCategory=t;for(const e of this.categoryBtns){const n=e.dataset.type===t;e.classList.toggle("cg-cat-btn--active",n),e.setAttribute("aria-checked",String(n)),e.tabIndex=n?0:-1}}updateCharCount(){if(!this.messageInput||!this.charCountText||!this.charCountFill)return;const t=this.messageInput.value.length,e=this.config.maxMessageLength,n=Math.min(t/e*100,100);this.charCountFill.style.width=`${n}%`,this.charCountText.textContent=`${t} / ${e}`,this.charCountFill.classList.remove("cg-counter__fill--warn","cg-counter__fill--danger"),n>=95?this.charCountFill.classList.add("cg-counter__fill--danger"):n>=80&&this.charCountFill.classList.add("cg-counter__fill--warn");const i=this.messageInput.closest(".cg-field");i&&this.clearFieldError(i)}validate(){const t=this.config.texts;let e=!0;return!!this.emailInput&&(function(t){if("string"!=typeof t)return!1;const e=t.trim();return!(0===e.length||e.length>254)&&!/[\r\n]/.test(e)&&/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/.test(e)}(this.emailInput.value.trim())||(this.showFieldError(this.emailInput,t.invalidEmailError),e&&this.emailInput.focus(),e=!1),!!this.subjectInput&&(g(this.subjectInput.value)||(this.showFieldError(this.subjectInput,t.requiredFieldError),e&&this.subjectInput.focus(),e=!1),!!this.messageInput&&(g(this.messageInput.value)?"string"==typeof(n=this.messageInput.value)&&n.length<=this.config.maxMessageLength||(this.showTextareaError(this.messageInput,t.messageTooLongError),e&&this.messageInput.focus(),e=!1):(this.showTextareaError(this.messageInput,t.requiredFieldError),e&&this.messageInput.focus(),e=!1),e)));var n}showFieldError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-input--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}showTextareaError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-textarea--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}clearFieldError(t){const e=t.querySelector("input, textarea");e&&(e.classList.remove("cg-input--error","cg-textarea--error"),e.removeAttribute("aria-invalid"));const n=t.querySelector(".cg-error");n&&(n.textContent="",n.classList.remove("cg-error--visible"))}setState(t){this.state=t,this.events.emit("state-change",t),"idle"===t&&this.bodyContainer&&this.buildFormView()}showStateView(t,e,n){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="";const i=this.config.texts,o=m("div",{className:"cg-state",role:"status","aria-live":"polite"}),s=m("div",{className:`cg-state__icon cg-state__icon--${t}`,innerHTML:"success"===t?E.success:E.error,"aria-hidden":"true"}),r=m("h3",{className:"cg-state__title",textContent:e}),a=m("p",{className:"cg-state__msg",textContent:n}),l=m("button",{className:"cg-state__btn",type:"button",textContent:"success"===t?i.successButtonText:i.errorButtonText});l.addEventListener("click",()=>{"success"===t?this.close():this.setState("idle")}),o.append(s,r,a,l),this.bodyContainer.appendChild(o),requestAnimationFrame(()=>l.focus())}async handleSubmit(){var e,n,i,o,s,r,a;if("loading"===this.state)return;if(!this.validate())return;if(this.config.enableHoneypot&&(null===(e=this.honeypotInput)||void 0===e?void 0:e.value))return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if((Date.now()-this.mountTime)/1e3<this.config.minSubmitDelay)return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if(!this.rateLimiter.tryConsume()){const e=this.rateLimiter.getRetryAfter(),o=new t(`${this.config.texts.rateLimitError} Try again in ${e}s.`,"RATE_LIMITED");return this.setState("error"),this.showStateView("error",this.config.texts.errorTitle,o.message),null===(i=(n=this.config).onError)||void 0===i||i.call(n,o),void this.events.emit("error",o)}const h={domain:this.config.domain,apiKey:this.config.apiKey,email:u(this.emailInput.value),name:this.nameInput&&u(this.nameInput.value)||void 0,title:u(this.subjectInput.value),type:this.selectedCategory,messageText:u(this.messageInput.value)};if(!this.config.onSubmit||!1!==this.config.onSubmit(h)){this.events.emit("submit",h),this.state="loading",this.events.emit("state-change","loading"),this.submitBtn.disabled=!0,this.submitBtn.innerHTML=`<span class="cg-spinner">${E.spinner}</span> <span>${this.config.texts.submittingText}</span>`;try{const e=await async function(e,n,i){var o;const{timeout:s,retries:r}=i;let a=null;for(let t=0;t<=r;t++){if(t>0){const e=Math.min(1e3*Math.pow(2,t-1),8e3);await c(e)}try{return await l(e,n,s)}catch(e){if(a=d(e),!("NETWORK_ERROR"===a.code||"TIMEOUT"===a.code||"SERVER_ERROR"===a.code&&(null!==(o=a.statusCode)&&void 0!==o?o:0)>=500)||t===r)throw a}}throw a||new t("Unknown error","UNKNOWN")}(this.config.apiBaseUrl,h,{timeout:this.config.requestTimeout,retries:this.config.retryAttempts});this.setState("success"),this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage),null===(s=(o=this.config).onSuccess)||void 0===s||s.call(o,e),this.events.emit("success",e),this.config.autoResetDelay>0&&setTimeout(()=>{"success"===this.state&&this.close()},this.config.autoResetDelay)}catch(e){const n=e instanceof t?e:new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN");this.setState("error");let i=this.config.texts.errorMessage;"TIMEOUT"===n.code?i=this.config.texts.timeoutError:"NETWORK_ERROR"===n.code?i=this.config.texts.networkError:"RATE_LIMITED"===n.code?i=this.config.texts.rateLimitError:"VALIDATION_ERROR"===n.code&&n.message&&(i=n.message),this.showStateView("error",this.config.texts.errorTitle,i),null===(a=(r=this.config).onError)||void 0===a||a.call(r,n),this.events.emit("error",n)}}}}class k{constructor(t,e){this.el=null,this.hostEl=null,this.shadow=null,this.config=t,this.onClick=e}mount(){if(this.el)return;this.hostEl=document.createElement("div"),this.hostEl.style.cssText="position:fixed;bottom:0;left:0;width:0;height:0;overflow:visible;z-index:"+(this.config.zIndex-1),this.shadow=this.hostEl.attachShadow({mode:"open"});const t=this.config.triggerPosition,e=this.config.theme,n=document.createElement("style");n.textContent=`\n .cg-trigger {\n position: fixed;\n bottom: 20px;\n ${"bottom-left"===t?"left: 20px;":"right: 20px;"}\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: ${e.primaryColor};\n color: #FFFFFF;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 14px rgba(0,0,0,0.25);\n transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.25s ease;\n z-index: ${this.config.zIndex-1};\n padding: 0;\n outline: none;\n }\n .cg-trigger:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 20px rgba(0,0,0,0.35);\n }\n .cg-trigger:focus-visible {\n outline: 2px solid ${e.primaryColor};\n outline-offset: 3px;\n }\n .cg-trigger:active {\n transform: scale(0.95);\n }\n .cg-trigger svg {\n stroke: #FFFFFF;\n }\n .cg-trigger--hidden {\n opacity: 0;\n pointer-events: none;\n transform: scale(0.8);\n }\n .cg-trigger__label {\n position: absolute;\n ${"bottom-left"===t?"left: 64px;":"right: 64px;"}\n background: #1F2937;\n color: #FFFFFF;\n font-family: ${e.fontFamily};\n font-size: 13px;\n font-weight: 500;\n padding: 6px 12px;\n border-radius: 6px;\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.2s;\n box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n }\n .cg-trigger:hover .cg-trigger__label {\n opacity: 1;\n }\n `,this.shadow.appendChild(n),this.el=document.createElement("button"),this.el.className="cg-trigger",this.el.setAttribute("aria-label","Need Help? Contact Support"),this.el.setAttribute("type","button"),this.el.innerHTML=E.trigger;const i=document.createElement("span");i.className="cg-trigger__label",i.textContent="Need Help?",this.el.appendChild(i),this.el.addEventListener("click",this.onClick),this.shadow.appendChild(this.el),document.body.appendChild(this.hostEl)}destroy(){this.el&&this.el.removeEventListener("click",this.onClick),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.el=null)}show(){var t;null===(t=this.el)||void 0===t||t.classList.remove("cg-trigger--hidden")}hide(){var t;null===(t=this.el)||void 0===t||t.classList.add("cg-trigger--hidden")}updateTheme(t){this.el&&(this.el.style.background=t)}}let T=null,_=null,I=null,L=null;function M(t){T&&A(),"undefined"!=typeof window&&"undefined"!=typeof document?(L=s(t),I=new a,L.onOpen&&I.on("open",L.onOpen),L.onClose&&I.on("close",L.onClose),L.onSuccess&&I.on("success",L.onSuccess),L.onError&&I.on("error",L.onError),T=new F(t,I),L.showTriggerButton&&(_=new k(L,()=>N()),_.mount())):console.warn("[chatgram-widget] Cannot initialize in a non-browser environment.")}function N(){if(!T)throw new t("Call init() before open(). See: https://brandid.app/chatgram","NOT_INITIALIZED");T.open(),null==_||_.hide()}function S(){T&&(T.close(),null==_||_.show())}function A(){null==T||T.destroy(),T=null,null==_||_.destroy(),_=null,null==I||I.removeAllListeners(),I=null,L=null}function B(e){if(!T)throw new t("Call init() before updateTheme().","NOT_INITIALIZED");T.updateTheme(e),e.primaryColor&&(null==_||_.updateTheme(e.primaryColor))}function O(t,e){null==I||I.on(t,e)}function R(t,e){null==I||I.off(t,e)}function j(t,e){null==I||I.once(t,e)}function z(){var t;return null!==(t=null==T?void 0:T.isVisible())&&void 0!==t&&t}function H(){var t;return null!==(t=null==T?void 0:T.getState())&&void 0!==t?t:"uninitialized"}function $(){return"1.0.0"}var q={init:M,open:N,close:S,destroy:A,updateTheme:B,on:O,off:R,once:j,isOpen:z,getState:H,getVersion:$,ChatgramError:t};exports.ChatgramError=t,exports.close=S,exports.default=q,exports.destroy=A,exports.getState=H,exports.getVersion=$,exports.init=M,exports.isOpen=z,exports.off=R,exports.on=O,exports.once=j,exports.open=N,exports.updateTheme=B;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(t,e,n){super(t),this.name="ChatgramError",this.code=e,this.statusCode=n}}const e={primaryColor:"#EE6055",secondaryColor:"#D94F44",backgroundColor:"#FFFFFF",headerBackgroundColor:"#2C3345",headerTextColor:"#FFFFFF",textColor:"#6B7280",inputBackgroundColor:"#1E2535",inputTextColor:"#FFFFFF",inputPlaceholderColor:"#9CA3AF",borderRadius:"8px",modalBorderRadius:"16px",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif",boxShadow:"0 25px 60px rgba(0, 0, 0, 0.3)"},n={title:"Contact Support",subtitle:"We're here to help you succeed",categoryLabel:"What can we help with?",emailLabel:"Your Email",emailPlaceholder:"email@example.com",nameLabel:"Your Name",namePlaceholder:"John Doe",subjectLabel:"Subject",subjectPlaceholder:"Brief subject of your request",messageLabel:"Message",messagePlaceholder:"Tell us what you think...",submitButtonText:"Submit",submittingText:"Sending...",successTitle:"Message Sent!",successMessage:"We've received your message and will get back to you as soon as possible.",successButtonText:"Close",errorTitle:"Oops!",errorMessage:"Something went wrong. Please try again.",errorButtonText:"Try Again",requiredFieldError:"This field is required",invalidEmailError:"Please enter a valid email address",messageTooLongError:"Message exceeds the maximum length",networkError:"Network error. Please check your internet connection.",timeoutError:"Request timed out. Please try again.",rateLimitError:"Too many submissions. Please wait a moment.",categories:{feedback:"Feedback",bug:"Bug Report",feature:"Feature",support:"Support"}},i=["feedback","bug","feature","support"];function o(t,e){if(!e)return{...t};const n={...t};for(const i of Object.keys(e)){const o=e[i],s=t[i];void 0!==o&&(n[i]=null===o||"object"!=typeof o||Array.isArray(o)||null===s||"object"!=typeof s||Array.isArray(s)?o:{...s,...o})}return n}function s(t){var s,a,l,c,d,h,u,g,p,m,f,b,x,v;return{domain:t.domain||("undefined"!=typeof window&&window.location?window.location.hostname:"localhost"),apiBaseUrl:(t.apiBaseUrl||"https://chatgram-server.brandid.app").replace(/\/+$/,""),theme:o(e,t.theme),texts:o(n,t.texts),categories:t.categories&&t.categories.length>0?t.categories:i,defaultCategory:t.defaultCategory||"support",maxMessageLength:r(null!==(s=t.maxMessageLength)&&void 0!==s?s:5e3,100,5e4),showTriggerButton:null===(a=t.showTriggerButton)||void 0===a||a,triggerPosition:t.triggerPosition||"bottom-right",showNameField:null===(l=t.showNameField)||void 0===l||l,showCategories:null===(c=t.showCategories)||void 0===c||c,zIndex:null!==(d=t.zIndex)&&void 0!==d?d:999999,closeOnOverlayClick:null===(h=t.closeOnOverlayClick)||void 0===h||h,closeOnEscape:null===(u=t.closeOnEscape)||void 0===u||u,enableHoneypot:null===(g=t.enableHoneypot)||void 0===g||g,minSubmitDelay:r(null!==(p=t.minSubmitDelay)&&void 0!==p?p:2,0,30),rateLimitMax:r(null!==(m=t.rateLimitMax)&&void 0!==m?m:3,1,100),rateLimitWindow:r(null!==(f=t.rateLimitWindow)&&void 0!==f?f:3e5,1e4,36e5),requestTimeout:r(null!==(b=t.requestTimeout)&&void 0!==b?b:15e3,3e3,6e4),retryAttempts:r(null!==(x=t.retryAttempts)&&void 0!==x?x:2,0,5),autoResetDelay:Math.max(null!==(v=t.autoResetDelay)&&void 0!==v?v:0,0),defaultEmail:t.defaultEmail,defaultName:t.defaultName,onSuccess:t.onSuccess,onError:t.onError,onOpen:t.onOpen,onClose:t.onClose,onSubmit:t.onSubmit}}function r(t,e,n){return Math.min(Math.max(t,e),n)}class a{constructor(){this.listeners=new Map}on(t,e){this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(e)}off(t,e){var n;null===(n=this.listeners.get(t))||void 0===n||n.delete(e)}once(t,e){const n=i=>{this.off(t,n),e(i)};this.on(t,n)}emit(t,e){const n=this.listeners.get(t);if(n)for(const i of n)try{i(e)}catch(e){console.error(`[chatgram-widget] Error in "${t}" handler:`,e)}}removeAllListeners(){this.listeners.clear()}}async function l(e,n,i){const o=new AbortController,s=setTimeout(()=>o.abort(),i);try{const i=`${e}/api/tickets`,r=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(n),signal:o.signal});clearTimeout(s);let a={};try{a=await r.json()}catch(t){}if(!r.ok){const e="string"==typeof a.message?a.message:`Server error (${r.status})`;if(429===r.status)throw new t(e,"RATE_LIMITED",429);if(r.status>=400&&r.status<500)throw new t(e,"VALIDATION_ERROR",r.status);throw new t(e,"SERVER_ERROR",r.status)}return{success:!0,ticketId:a.ticketId||a.id||a._id||void 0,message:a.message||"Ticket created successfully"}}catch(e){if(clearTimeout(s),e instanceof t)throw e;if(e instanceof DOMException&&"AbortError"===e.name)throw new t("Request timed out. Please check your connection and try again.","TIMEOUT");if(e instanceof TypeError)throw new t("Network error. Please check your internet connection.","NETWORK_ERROR");throw new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN")}}function c(t){return new Promise(e=>setTimeout(e,t))}function d(e){return e instanceof t?e:e instanceof Error?new t(e.message,"UNKNOWN"):new t(String(e),"UNKNOWN")}class h{constructor(t,e){this.timestamps=[],this.maxRequests=t,this.windowMs=e}tryConsume(){const t=Date.now();return this.timestamps=this.timestamps.filter(e=>t-e<this.windowMs),!(this.timestamps.length>=this.maxRequests||(this.timestamps.push(t),0))}getRetryAfter(){if(this.timestamps.length<this.maxRequests)return 0;const t=this.timestamps[0],e=this.windowMs-(Date.now()-t);return Math.max(Math.ceil(e/1e3),1)}reset(){this.timestamps=[]}}function u(t){return"string"!=typeof t?"":t.replace(/\0/g,"").trim()}function g(t){return"string"==typeof t&&t.trim().length>0}function p(t){return function(t){return"string"==typeof t&&!/expression\s*\(|url\s*\(|javascript:|data:/i.test(t)}(t)?t:""}function m(t,e,n){const i=document.createElement(t);if(e)for(const[t,n]of Object.entries(e))"className"===t?i.className=n:"textContent"===t?i.textContent=n:"innerHTML"===t?i.innerHTML=n:i.setAttribute(t,n);return i}const f=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");let b=0,x=0,v="",y="",w=0;const E={feedback:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',bug:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>',feature:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 1v2"/><path d="M12 21v2"/><path d="M4.22 4.22l1.42 1.42"/><path d="M18.36 18.36l1.42 1.42"/><path d="M1 12h2"/><path d="M21 12h2"/><path d="M4.22 19.78l1.42-1.42"/><path d="M18.36 5.64l1.42-1.42"/></svg>',support:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>',close:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',email:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></svg>',user:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',subject:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>',send:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>',success:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>',error:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',spinner:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>',trigger:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',warning:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>'};function C(t){return E[t]||E.support}class F{constructor(t,e){this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null,this.isOpen=!1,this.state="idle",this.mountTime=0,this.destroyFocusTrap=null,this.boundEscapeHandler=null,this.emailInput=null,this.nameInput=null,this.subjectInput=null,this.messageInput=null,this.honeypotInput=null,this.charCountText=null,this.charCountFill=null,this.submitBtn=null,this.categoryBtns=[],this.config=s(t),this.events=e,this.selectedCategory=this.config.defaultCategory,this.instanceId=function(t="cg"){return`${t}-${++w}-${Date.now().toString(36)}`}("cg-modal"),this.rateLimiter=new h(this.config.rateLimitMax,this.config.rateLimitWindow)}open(){var t,e,n;this.isOpen||(this.hostEl||this.mount(),this.isOpen=!0,this.mountTime=Date.now(),requestAnimationFrame(()=>{var t;null===(t=this.overlay)||void 0===t||t.classList.add("cg-overlay--visible")}),b++,b>1||(x=window.innerWidth-document.documentElement.clientWidth,y=document.body.style.overflow,v=document.body.style.paddingRight,document.body.style.overflow="hidden",x>0&&(document.body.style.paddingRight=`${x}px`)),this.modalEl&&(this.destroyFocusTrap=function(t){const e=document.activeElement;function n(){return Array.from(t.querySelectorAll(f)).filter(t=>{const e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility})}function i(e){if("Tab"!==e.key)return;const i=n();if(0===i.length)return void e.preventDefault();const o=i[0],s=i[i.length-1];e.shiftKey?document.activeElement!==o&&t.contains(document.activeElement)||(e.preventDefault(),s.focus()):document.activeElement!==s&&t.contains(document.activeElement)||(e.preventDefault(),o.focus())}return t.addEventListener("keydown",i),requestAnimationFrame(()=>{const t=n();t.length>0&&t[0].focus()}),()=>{if(t.removeEventListener("keydown",i),e&&"function"==typeof e.focus)try{e.focus()}catch(t){}}}(this.modalEl)),this.config.closeOnEscape&&(this.boundEscapeHandler=t=>{"Escape"===t.key&&this.close()},document.addEventListener("keydown",this.boundEscapeHandler)),null===(t=this.overlay)||void 0===t||t.setAttribute("aria-hidden","false"),this.events.emit("open"),null===(n=(e=this.config).onOpen)||void 0===n||n.call(e))}close(){var t,e,n;this.isOpen&&this.overlay&&(this.isOpen=!1,this.overlay.classList.remove("cg-overlay--visible"),this.overlay.setAttribute("aria-hidden","true"),b=Math.max(0,b-1),b>0||(document.body.style.overflow=y,document.body.style.paddingRight=v),null===(t=this.destroyFocusTrap)||void 0===t||t.call(this),this.destroyFocusTrap=null,this.boundEscapeHandler&&(document.removeEventListener("keydown",this.boundEscapeHandler),this.boundEscapeHandler=null),this.events.emit("close"),null===(n=(e=this.config).onClose)||void 0===n||n.call(e),setTimeout(()=>{"idle"!==this.state&&this.setState("idle")},300))}destroy(){this.close(),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null)}updateConfig(t){this.config=s(t),this.shadow&&this.applyTheme()}updateTheme(t){t&&(this.config=s({...this.config,theme:{...this.config.theme,...t}}),this.shadow&&this.applyTheme(),this.events.emit("theme-change",t))}getState(){return this.state}isVisible(){return this.isOpen}mount(){this.hostEl=m("div",{id:this.instanceId}),this.hostEl.style.cssText="position:fixed;top:0;left:0;width:0;height:0;overflow:visible;z-index:"+this.config.zIndex,this.shadow=this.hostEl.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent="\n/* ═══ Reset ═══ */\n*, *::before, *::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n/* ═══ Overlay ═══ */\n.cg-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n z-index: var(--cg-z, 999999);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.25s ease, visibility 0.25s ease;\n font-family: var(--cg-font);\n color: var(--cg-text);\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.cg-overlay--visible {\n opacity: 1;\n visibility: visible;\n}\n\n/* ═══ Modal Shell ═══ */\n.cg-modal {\n background: var(--cg-bg, #FFFFFF);\n border-radius: var(--cg-modal-radius, 16px);\n box-shadow: var(--cg-shadow, 0 25px 60px rgba(0,0,0,0.3));\n width: 100%;\n max-width: 520px;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transform: translateY(20px) scale(0.97);\n opacity: 0;\n transition:\n transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.cg-overlay--visible .cg-modal {\n transform: translateY(0) scale(1);\n opacity: 1;\n}\n\n/* ═══ Header ═══ */\n.cg-header {\n background: var(--cg-header-bg, #2C3345);\n color: var(--cg-header-text, #FFFFFF);\n padding: 20px 24px;\n display: flex;\n align-items: center;\n gap: 14px;\n position: relative;\n flex-shrink: 0;\n}\n\n.cg-header__icon {\n width: 40px;\n height: 40px;\n background: rgba(255, 255, 255, 0.12);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n.cg-header__icon svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n.cg-header__info { flex: 1; min-width: 0; }\n\n.cg-header__title {\n font-size: 17px;\n font-weight: 600;\n letter-spacing: -0.01em;\n color: inherit;\n}\n\n.cg-header__subtitle {\n font-size: 13px;\n opacity: 0.75;\n margin-top: 2px;\n color: inherit;\n}\n\n/* ── Close Button ── */\n.cg-close-btn {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 32px;\n height: 32px;\n background: rgba(255, 255, 255, 0.1);\n border: none;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.2s;\n color: var(--cg-header-text, #FFFFFF);\n padding: 0;\n}\n.cg-close-btn:hover { background: rgba(255, 255, 255, 0.2); }\n.cg-close-btn:focus-visible {\n outline: 2px solid rgba(255, 255, 255, 0.6);\n outline-offset: 2px;\n}\n.cg-close-btn svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n/* ═══ Body (scrollable) ═══ */\n.cg-body {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n scrollbar-width: thin;\n scrollbar-color: rgba(0,0,0,0.15) transparent;\n}\n.cg-body::-webkit-scrollbar { width: 6px; }\n.cg-body::-webkit-scrollbar-track { background: transparent; }\n.cg-body::-webkit-scrollbar-thumb {\n background: rgba(0,0,0,0.15);\n border-radius: 3px;\n}\n\n/* ═══ Labels ═══ */\n.cg-label {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-primary, #EE6055);\n margin-bottom: 6px;\n}\n.cg-label--required::after {\n content: ' *';\n color: var(--cg-primary, #EE6055);\n}\n.cg-label--optional::after {\n content: '(Optional)';\n color: var(--cg-text, #6B7280);\n font-weight: 400;\n margin-left: 4px;\n font-size: 12px;\n}\n\n/* ═══ Categories ═══ */\n.cg-categories {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.cg-cat-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 12px;\n border: 1.5px solid #E5E7EB;\n border-radius: var(--cg-radius, 8px);\n background: transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-text, #6B7280);\n cursor: pointer;\n transition: all 0.2s;\n font-family: inherit;\n outline: none;\n}\n.cg-cat-btn:hover {\n border-color: var(--cg-primary, #EE6055);\n color: var(--cg-primary, #EE6055);\n}\n.cg-cat-btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-cat-btn--active {\n background: var(--cg-primary, #EE6055);\n border-color: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n}\n.cg-cat-btn--active svg { stroke: #FFFFFF; }\n\n/* ═══ Form Fields ═══ */\n.cg-field {\n margin-bottom: 16px;\n}\n\n.cg-input-wrap {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.cg-input-wrap__icon {\n position: absolute;\n left: 14px;\n display: flex;\n align-items: center;\n pointer-events: none;\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input-wrap__icon svg {\n stroke: var(--cg-input-placeholder, #9CA3AF);\n}\n\n.cg-input {\n width: 100%;\n padding: 12px 14px 12px 42px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-input::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-input--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Textarea ═══ */\n.cg-textarea {\n width: 100%;\n padding: 14px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n resize: vertical;\n min-height: 120px;\n max-height: 240px;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-textarea::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-textarea:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-textarea--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Character Counter ═══ */\n.cg-counter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n}\n.cg-counter__bar {\n flex: 1;\n height: 3px;\n background: #E5E7EB;\n border-radius: 2px;\n overflow: hidden;\n}\n.cg-counter__fill {\n height: 100%;\n background: var(--cg-primary, #EE6055);\n border-radius: 2px;\n transition: width 0.2s;\n}\n.cg-counter__fill--warn { background: #F59E0B; }\n.cg-counter__fill--danger { background: #EF4444; }\n.cg-counter__text {\n font-size: 12px;\n color: var(--cg-text, #6B7280);\n white-space: nowrap;\n}\n\n/* ═══ Field Errors ═══ */\n.cg-error {\n font-size: 12px;\n color: #EF4444;\n margin-top: 4px;\n min-height: 0;\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n transition: max-height 0.2s, opacity 0.2s, margin 0.2s;\n}\n.cg-error--visible {\n max-height: 40px;\n opacity: 1;\n margin-top: 4px;\n}\n\n/* ═══ Honeypot (hidden from humans) ═══ */\n.cg-hp {\n position: absolute;\n left: -9999px;\n top: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n tab-index: -1;\n}\n\n/* ═══ Submit Button ═══ */\n.cg-submit {\n width: 100%;\n padding: 14px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 15px;\n font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s, transform 0.1s, box-shadow 0.2s;\n margin-top: 8px;\n outline: none;\n}\n.cg-submit svg { stroke: #FFFFFF; }\n.cg-submit:hover:not(:disabled) {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-submit:active:not(:disabled) {\n transform: scale(0.98);\n}\n.cg-submit:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-submit:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n}\n\n/* ═══ Spinner ═══ */\n.cg-spinner {\n display: inline-flex;\n animation: cg-spin 0.8s linear infinite;\n}\n.cg-spinner svg { stroke: #FFFFFF; }\n\n/* ═══ Success & Error State Views ═══ */\n.cg-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 24px;\n min-height: 320px;\n animation: cg-fade-in 0.3s ease;\n}\n\n.cg-state__icon {\n margin-bottom: 20px;\n}\n.cg-state__icon--success svg { stroke: #10B981; }\n.cg-state__icon--error svg { stroke: #EF4444; }\n\n.cg-state__title {\n font-size: 20px;\n font-weight: 700;\n color: #1F2937;\n margin-bottom: 8px;\n}\n\n.cg-state__msg {\n font-size: 14px;\n color: var(--cg-text, #6B7280);\n max-width: 320px;\n line-height: 1.6;\n}\n\n.cg-state__btn {\n margin-top: 24px;\n padding: 10px 28px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n}\n.cg-state__btn:hover {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-state__btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n\n/* ═══ Animations ═══ */\n@keyframes cg-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n@keyframes cg-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* ═══ Responsive ═══ */\n@media (max-width: 480px) {\n .cg-overlay { padding: 0; }\n .cg-modal {\n max-width: 100%;\n max-height: 100%;\n height: 100%;\n border-radius: 0;\n }\n .cg-body { padding: 16px; }\n .cg-categories { gap: 6px; }\n .cg-cat-btn { font-size: 12px; padding: 8px; gap: 5px; }\n .cg-header { padding: 16px 20px; }\n}\n\n/* ═══ Reduced Motion ═══ */\n@media (prefers-reduced-motion: reduce) {\n .cg-overlay,\n .cg-modal,\n .cg-spinner,\n .cg-state,\n .cg-submit,\n .cg-cat-btn,\n .cg-input,\n .cg-textarea,\n .cg-counter__fill,\n .cg-error {\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n }\n}\n\n/* ═══ High Contrast Mode ═══ */\n@media (forced-colors: active) {\n .cg-cat-btn { border: 2px solid ButtonText; }\n .cg-cat-btn--active { background: Highlight; color: HighlightText; }\n .cg-input, .cg-textarea { border: 1px solid ButtonText; }\n .cg-submit { border: 2px solid ButtonText; }\n}\n",this.shadow.appendChild(t),this.overlay=m("div",{className:"cg-overlay",role:"dialog","aria-modal":"true","aria-label":this.config.texts.title,"aria-hidden":"true"}),this.config.closeOnOverlayClick&&this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.close()}),this.modalEl=m("div",{className:"cg-modal"}),this.modalEl.addEventListener("click",t=>t.stopPropagation()),this.modalEl.appendChild(this.buildHeader()),this.bodyContainer=m("div",{className:"cg-body"}),this.buildFormView(),this.modalEl.appendChild(this.bodyContainer),this.overlay.appendChild(this.modalEl),this.shadow.appendChild(this.overlay),this.applyTheme(),document.body.appendChild(this.hostEl)}applyTheme(){var t;const e=this.overlay||(null===(t=this.shadow)||void 0===t?void 0:t.host);if(!e)return;const n=this.config.theme;!function(t,e){for(const[n,i]of Object.entries(e)){const e=p(i);e&&t.style.setProperty(n,e)}}(e,{"--cg-primary":n.primaryColor,"--cg-secondary":n.secondaryColor,"--cg-bg":n.backgroundColor,"--cg-header-bg":n.headerBackgroundColor,"--cg-header-text":n.headerTextColor,"--cg-text":n.textColor,"--cg-input-bg":n.inputBackgroundColor,"--cg-input-text":n.inputTextColor,"--cg-input-placeholder":n.inputPlaceholderColor,"--cg-radius":n.borderRadius,"--cg-modal-radius":n.modalBorderRadius,"--cg-font":n.fontFamily,"--cg-shadow":n.boxShadow,"--cg-z":String(this.config.zIndex)})}buildHeader(){const t=this.config.texts,e=m("div",{className:"cg-header"}),n=m("div",{className:"cg-header__icon",innerHTML:E.feedback}),i=m("div",{className:"cg-header__info"});i.appendChild(m("h2",{className:"cg-header__title",textContent:t.title,id:`${this.instanceId}-title`})),i.appendChild(m("p",{className:"cg-header__subtitle",textContent:t.subtitle}));const o=m("button",{className:"cg-close-btn","aria-label":"Close dialog",type:"button",innerHTML:E.close});return o.addEventListener("click",()=>this.close()),e.append(n,i,o),e}buildFormView(){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="",this.categoryBtns=[];const t=this.config.texts;if(this.config.showCategories&&this.config.categories.length>1){const e=m("div",{className:"cg-label",textContent:t.categoryLabel,id:`${this.instanceId}-cat-label`});this.bodyContainer.appendChild(e);const n=m("div",{className:"cg-categories",role:"radiogroup","aria-labelledby":`${this.instanceId}-cat-label`});for(let e=0;e<this.config.categories.length;e++){const i=this.config.categories[e],o=t.categories[i]||i,s=i===this.selectedCategory,r=m("button",{className:"cg-cat-btn"+(s?" cg-cat-btn--active":""),type:"button",role:"radio","aria-checked":String(s),tabindex:s?"0":"-1"});r.innerHTML=C(i),r.appendChild(document.createTextNode(" "+o)),r.dataset.type=i,r.addEventListener("click",()=>this.selectCategory(i)),r.addEventListener("keydown",t=>{const n=this.categoryBtns.length;if("ArrowRight"===t.key||"ArrowDown"===t.key){t.preventDefault();const i=this.categoryBtns[(e+1)%n];this.selectCategory(i.dataset.type),i.focus()}else if("ArrowLeft"===t.key||"ArrowUp"===t.key){t.preventDefault();const i=this.categoryBtns[(e-1+n)%n];this.selectCategory(i.dataset.type),i.focus()}}),this.categoryBtns.push(r),n.appendChild(r)}this.bodyContainer.appendChild(n)}const e=this.buildField({label:t.emailLabel,placeholder:t.emailPlaceholder,type:"email",icon:E.email,required:!0,id:`${this.instanceId}-email`,autocomplete:"email"});if(this.emailInput=e.querySelector("input"),this.config.defaultEmail&&(this.emailInput.value=this.config.defaultEmail),this.bodyContainer.appendChild(e),this.config.showNameField){const e=this.buildField({label:t.nameLabel,placeholder:t.namePlaceholder,type:"text",icon:E.user,required:!1,id:`${this.instanceId}-name`,autocomplete:"name"});this.nameInput=e.querySelector("input"),this.config.defaultName&&(this.nameInput.value=this.config.defaultName),this.bodyContainer.appendChild(e)}else this.nameInput=null;const n=this.buildField({label:t.subjectLabel,placeholder:t.subjectPlaceholder,type:"text",icon:E.subject,required:!0,id:`${this.instanceId}-subject`,autocomplete:"off"});this.subjectInput=n.querySelector("input"),this.bodyContainer.appendChild(n);const i=m("div",{className:"cg-field"}),o=m("label",{className:"cg-label cg-label--required",textContent:t.messageLabel});o.setAttribute("for",`${this.instanceId}-msg`),i.appendChild(o),this.messageInput=document.createElement("textarea"),this.messageInput.className="cg-textarea",this.messageInput.id=`${this.instanceId}-msg`,this.messageInput.placeholder=t.messagePlaceholder,this.messageInput.setAttribute("maxlength",String(this.config.maxMessageLength)),this.messageInput.setAttribute("aria-required","true"),this.messageInput.setAttribute("aria-describedby",`${this.instanceId}-char-count`),i.appendChild(this.messageInput);const s=m("div",{className:"cg-counter",id:`${this.instanceId}-char-count`}),r=m("div",{className:"cg-counter__bar"});this.charCountFill=m("div",{className:"cg-counter__fill"}),this.charCountFill.style.width="0%",r.appendChild(this.charCountFill),this.charCountText=m("span",{className:"cg-counter__text",textContent:`0 / ${this.config.maxMessageLength}`,"aria-live":"polite"}),s.append(r,this.charCountText),i.appendChild(s);const a=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});if(i.appendChild(a),this.messageInput.addEventListener("input",()=>this.updateCharCount()),i.dataset.fieldName="message",this.bodyContainer.appendChild(i),this.config.enableHoneypot){const t=m("div",{className:"cg-hp","aria-hidden":"true"});this.honeypotInput=document.createElement("input"),this.honeypotInput.type="text",this.honeypotInput.name="website",this.honeypotInput.tabIndex=-1,this.honeypotInput.autocomplete="off",t.appendChild(this.honeypotInput),this.bodyContainer.appendChild(t)}else this.honeypotInput=null;this.submitBtn=document.createElement("button"),this.submitBtn.className="cg-submit",this.submitBtn.type="button",this.submitBtn.setAttribute("aria-label",t.submitButtonText),this.submitBtn.innerHTML=`${E.send} <span>${t.submitButtonText}</span>`,this.submitBtn.addEventListener("click",()=>this.handleSubmit()),this.bodyContainer.appendChild(this.submitBtn)}buildField(t){const e=m("div",{className:"cg-field"});e.dataset.fieldName=t.id;const n=m("label",{className:t.required?"cg-label cg-label--required":"cg-label cg-label--optional",textContent:t.label});n.setAttribute("for",t.id),e.appendChild(n);const i=m("div",{className:"cg-input-wrap"}),o=m("span",{className:"cg-input-wrap__icon",innerHTML:t.icon,"aria-hidden":"true"}),s=document.createElement("input");s.className="cg-input",s.type=t.type,s.id=t.id,s.placeholder=t.placeholder,s.setAttribute("autocomplete",t.autocomplete),t.required&&(s.setAttribute("aria-required","true"),s.required=!0),s.addEventListener("input",()=>{this.clearFieldError(e)}),i.append(o,s),e.appendChild(i);const r=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});return e.appendChild(r),e}selectCategory(t){this.selectedCategory=t;for(const e of this.categoryBtns){const n=e.dataset.type===t;e.classList.toggle("cg-cat-btn--active",n),e.setAttribute("aria-checked",String(n)),e.tabIndex=n?0:-1}}updateCharCount(){if(!this.messageInput||!this.charCountText||!this.charCountFill)return;const t=this.messageInput.value.length,e=this.config.maxMessageLength,n=Math.min(t/e*100,100);this.charCountFill.style.width=`${n}%`,this.charCountText.textContent=`${t} / ${e}`,this.charCountFill.classList.remove("cg-counter__fill--warn","cg-counter__fill--danger"),n>=95?this.charCountFill.classList.add("cg-counter__fill--danger"):n>=80&&this.charCountFill.classList.add("cg-counter__fill--warn");const i=this.messageInput.closest(".cg-field");i&&this.clearFieldError(i)}validate(){const t=this.config.texts;let e=!0;return!!this.emailInput&&(function(t){if("string"!=typeof t)return!1;const e=t.trim();return!(0===e.length||e.length>254)&&!/[\r\n]/.test(e)&&/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/.test(e)}(this.emailInput.value.trim())||(this.showFieldError(this.emailInput,t.invalidEmailError),e&&this.emailInput.focus(),e=!1),!!this.subjectInput&&(g(this.subjectInput.value)||(this.showFieldError(this.subjectInput,t.requiredFieldError),e&&this.subjectInput.focus(),e=!1),!!this.messageInput&&(g(this.messageInput.value)?"string"==typeof(n=this.messageInput.value)&&n.length<=this.config.maxMessageLength||(this.showTextareaError(this.messageInput,t.messageTooLongError),e&&this.messageInput.focus(),e=!1):(this.showTextareaError(this.messageInput,t.requiredFieldError),e&&this.messageInput.focus(),e=!1),e)));var n}showFieldError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-input--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}showTextareaError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-textarea--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}clearFieldError(t){const e=t.querySelector("input, textarea");e&&(e.classList.remove("cg-input--error","cg-textarea--error"),e.removeAttribute("aria-invalid"));const n=t.querySelector(".cg-error");n&&(n.textContent="",n.classList.remove("cg-error--visible"))}setState(t){this.state=t,this.events.emit("state-change",t),"idle"===t&&this.bodyContainer&&this.buildFormView()}showStateView(t,e,n){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="";const i=this.config.texts,o=m("div",{className:"cg-state",role:"status","aria-live":"polite"}),s=m("div",{className:`cg-state__icon cg-state__icon--${t}`,innerHTML:"success"===t?E.success:E.error,"aria-hidden":"true"}),r=m("h3",{className:"cg-state__title",textContent:e}),a=m("p",{className:"cg-state__msg",textContent:n}),l=m("button",{className:"cg-state__btn",type:"button",textContent:"success"===t?i.successButtonText:i.errorButtonText});l.addEventListener("click",()=>{"success"===t?this.close():this.setState("idle")}),o.append(s,r,a,l),this.bodyContainer.appendChild(o),requestAnimationFrame(()=>l.focus())}async handleSubmit(){var e,n,i,o,s,r,a;if("loading"===this.state)return;if(!this.validate())return;if(this.config.enableHoneypot&&(null===(e=this.honeypotInput)||void 0===e?void 0:e.value))return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if((Date.now()-this.mountTime)/1e3<this.config.minSubmitDelay)return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if(!this.rateLimiter.tryConsume()){const e=this.rateLimiter.getRetryAfter(),o=new t(`${this.config.texts.rateLimitError} Try again in ${e}s.`,"RATE_LIMITED");return this.setState("error"),this.showStateView("error",this.config.texts.errorTitle,o.message),null===(i=(n=this.config).onError)||void 0===i||i.call(n,o),void this.events.emit("error",o)}const h={domain:this.config.domain,email:u(this.emailInput.value),name:this.nameInput&&u(this.nameInput.value)||void 0,title:u(this.subjectInput.value),type:this.selectedCategory,messageText:u(this.messageInput.value)};if(!this.config.onSubmit||!1!==this.config.onSubmit(h)){this.events.emit("submit",h),this.state="loading",this.events.emit("state-change","loading"),this.submitBtn.disabled=!0,this.submitBtn.innerHTML=`<span class="cg-spinner">${E.spinner}</span> <span>${this.config.texts.submittingText}</span>`;try{const e=await async function(e,n,i){var o;const{timeout:s,retries:r}=i;let a=null;for(let t=0;t<=r;t++){if(t>0){const e=Math.min(1e3*Math.pow(2,t-1),8e3);await c(e)}try{return await l(e,n,s)}catch(e){if(a=d(e),!("NETWORK_ERROR"===a.code||"TIMEOUT"===a.code||"SERVER_ERROR"===a.code&&(null!==(o=a.statusCode)&&void 0!==o?o:0)>=500)||t===r)throw a}}throw a||new t("Unknown error","UNKNOWN")}(this.config.apiBaseUrl,h,{timeout:this.config.requestTimeout,retries:this.config.retryAttempts});this.setState("success"),this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage),null===(s=(o=this.config).onSuccess)||void 0===s||s.call(o,e),this.events.emit("success",e),this.config.autoResetDelay>0&&setTimeout(()=>{"success"===this.state&&this.close()},this.config.autoResetDelay)}catch(e){const n=e instanceof t?e:new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN");this.setState("error");let i=this.config.texts.errorMessage;"TIMEOUT"===n.code?i=this.config.texts.timeoutError:"NETWORK_ERROR"===n.code?i=this.config.texts.networkError:"RATE_LIMITED"===n.code?i=this.config.texts.rateLimitError:"VALIDATION_ERROR"===n.code&&n.message&&(i=n.message),this.showStateView("error",this.config.texts.errorTitle,i),null===(a=(r=this.config).onError)||void 0===a||a.call(r,n),this.events.emit("error",n)}}}}class k{constructor(t,e){this.el=null,this.hostEl=null,this.shadow=null,this.config=t,this.onClick=e}mount(){if(this.el)return;this.hostEl=document.createElement("div"),this.hostEl.style.cssText="position:fixed;bottom:0;left:0;width:0;height:0;overflow:visible;z-index:"+(this.config.zIndex-1),this.shadow=this.hostEl.attachShadow({mode:"open"});const t=this.config.triggerPosition,e=this.config.theme,n=document.createElement("style");n.textContent=`\n .cg-trigger {\n position: fixed;\n bottom: 20px;\n ${"bottom-left"===t?"left: 20px;":"right: 20px;"}\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: ${e.primaryColor};\n color: #FFFFFF;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 14px rgba(0,0,0,0.25);\n transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.25s ease;\n z-index: ${this.config.zIndex-1};\n padding: 0;\n outline: none;\n }\n .cg-trigger:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 20px rgba(0,0,0,0.35);\n }\n .cg-trigger:focus-visible {\n outline: 2px solid ${e.primaryColor};\n outline-offset: 3px;\n }\n .cg-trigger:active {\n transform: scale(0.95);\n }\n .cg-trigger svg {\n stroke: #FFFFFF;\n }\n .cg-trigger--hidden {\n opacity: 0;\n pointer-events: none;\n transform: scale(0.8);\n }\n .cg-trigger__label {\n position: absolute;\n ${"bottom-left"===t?"left: 64px;":"right: 64px;"}\n background: #1F2937;\n color: #FFFFFF;\n font-family: ${e.fontFamily};\n font-size: 13px;\n font-weight: 500;\n padding: 6px 12px;\n border-radius: 6px;\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.2s;\n box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n }\n .cg-trigger:hover .cg-trigger__label {\n opacity: 1;\n }\n `,this.shadow.appendChild(n),this.el=document.createElement("button"),this.el.className="cg-trigger",this.el.setAttribute("aria-label","Need Help? Contact Support"),this.el.setAttribute("type","button"),this.el.innerHTML=E.trigger;const i=document.createElement("span");i.className="cg-trigger__label",i.textContent="Need Help?",this.el.appendChild(i),this.el.addEventListener("click",this.onClick),this.shadow.appendChild(this.el),document.body.appendChild(this.hostEl)}destroy(){this.el&&this.el.removeEventListener("click",this.onClick),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.el=null)}show(){var t;null===(t=this.el)||void 0===t||t.classList.remove("cg-trigger--hidden")}hide(){var t;null===(t=this.el)||void 0===t||t.classList.add("cg-trigger--hidden")}updateTheme(t){this.el&&(this.el.style.background=t)}}let T=null,_=null,I=null,L=null;function M(t){T&&A(),"undefined"!=typeof window&&"undefined"!=typeof document?(L=s(t),I=new a,L.onOpen&&I.on("open",L.onOpen),L.onClose&&I.on("close",L.onClose),L.onSuccess&&I.on("success",L.onSuccess),L.onError&&I.on("error",L.onError),T=new F(t,I),L.showTriggerButton&&(_=new k(L,()=>N()),_.mount())):console.warn("[chatgram-widget] Cannot initialize in a non-browser environment.")}function N(){if(!T)throw new t("Call init() before open(). See: https://brandid.app/chatgram","NOT_INITIALIZED");T.open(),null==_||_.hide()}function S(){T&&(T.close(),null==_||_.show())}function A(){null==T||T.destroy(),T=null,null==_||_.destroy(),_=null,null==I||I.removeAllListeners(),I=null,L=null}function B(e){if(!T)throw new t("Call init() before updateTheme().","NOT_INITIALIZED");T.updateTheme(e),e.primaryColor&&(null==_||_.updateTheme(e.primaryColor))}function O(t,e){null==I||I.on(t,e)}function R(t,e){null==I||I.off(t,e)}function j(t,e){null==I||I.once(t,e)}function z(){var t;return null!==(t=null==T?void 0:T.isVisible())&&void 0!==t&&t}function H(){var t;return null!==(t=null==T?void 0:T.getState())&&void 0!==t?t:"uninitialized"}function $(){return"1.0.0"}var q={init:M,open:N,close:S,destroy:A,updateTheme:B,on:O,off:R,once:j,isOpen:z,getState:H,getVersion:$,ChatgramError:t};exports.ChatgramError=t,exports.close=S,exports.default=q,exports.destroy=A,exports.getState=H,exports.getVersion=$,exports.init=M,exports.isOpen=z,exports.off=R,exports.on=O,exports.once=j,exports.open=N,exports.updateTheme=B;
|
|
2
2
|
//# sourceMappingURL=chatgram-widget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatgram-widget.cjs.js","sources":["../src/core/types.ts","../src/core/config.ts","../src/core/events.ts","../src/core/api.ts","../src/core/rate-limiter.ts","../src/utils/sanitize.ts","../src/utils/dom.ts","../src/ui/icons.ts","../src/ui/modal.ts","../src/styles/widget-css.ts","../src/ui/trigger.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":["ChatgramError","Error","constructor","message","code","statusCode","super","this","name","DEFAULT_THEME","primaryColor","secondaryColor","backgroundColor","headerBackgroundColor","headerTextColor","textColor","inputBackgroundColor","inputTextColor","inputPlaceholderColor","borderRadius","modalBorderRadius","fontFamily","boxShadow","DEFAULT_TEXTS","title","subtitle","categoryLabel","emailLabel","emailPlaceholder","nameLabel","namePlaceholder","subjectLabel","subjectPlaceholder","messageLabel","messagePlaceholder","submitButtonText","submittingText","successTitle","successMessage","successButtonText","errorTitle","errorMessage","errorButtonText","requiredFieldError","invalidEmailError","messageTooLongError","networkError","timeoutError","rateLimitError","categories","feedback","bug","feature","support","ALL_CATEGORIES","deepMerge","defaults","overrides","result","key","Object","keys","overrideVal","defaultVal","undefined","Array","isArray","resolveConfig","userConfig","apiKey","trim","domain","window","location","hostname","apiBaseUrl","replace","theme","texts","length","defaultCategory","maxMessageLength","clamp","_a","showTriggerButton","_b","triggerPosition","showNameField","_c","showCategories","_d","zIndex","_e","closeOnOverlayClick","_f","closeOnEscape","_g","enableHoneypot","_h","minSubmitDelay","_j","rateLimitMax","_k","rateLimitWindow","_l","requestTimeout","_m","retryAttempts","_o","autoResetDelay","Math","max","_p","defaultEmail","defaultName","onSuccess","onError","onOpen","onClose","onSubmit","value","min","EventEmitter","listeners","Map","on","event","handler","has","set","Set","get","add","off","delete","once","wrapper","data","emit","handlers","err","console","error","removeAllListeners","clear","async","doRequest","baseUrl","payload","timeout","controller","AbortController","timeoutId","setTimeout","abort","url","response","fetch","method","headers","Accept","body","JSON","stringify","signal","clearTimeout","json","ok","status","success","ticketId","id","_id","DOMException","TypeError","sleep","ms","Promise","resolve","toChatgramError","String","RateLimiter","maxRequests","windowMs","timestamps","tryConsume","now","Date","filter","t","push","getRetryAfter","oldest","retryMs","ceil","reset","sanitizeForPayload","input","isNonEmpty","sanitizeThemeValue","test","isSafeCssValue","el","tag","attrs","children","elem","document","createElement","entries","className","textContent","innerHTML","setAttribute","FOCUSABLE_SELECTOR","join","scrollLockCount","savedScrollbarWidth","savedBodyPaddingRight","savedBodyOverflow","idCounter","ICONS","close","email","user","subject","send","spinner","trigger","warning","getCategoryIcon","type","Modal","config","events","hostEl","shadow","overlay","modalEl","bodyContainer","isOpen","state","mountTime","destroyFocusTrap","boundEscapeHandler","emailInput","nameInput","subjectInput","messageInput","honeypotInput","charCountText","charCountFill","submitBtn","categoryBtns","selectedCategory","instanceId","prefix","toString","uid","rateLimiter","open","mount","requestAnimationFrame","classList","innerWidth","documentElement","clientWidth","style","overflow","paddingRight","container","previouslyFocused","activeElement","getFocusableElements","from","querySelectorAll","getComputedStyle","display","visibility","handleKeyDown","e","focusable","preventDefault","first","last","shiftKey","contains","focus","addEventListener","removeEventListener","createFocusTrap","remove","call","setState","destroy","updateConfig","newConfig","applyTheme","updateTheme","getState","isVisible","cssText","attachShadow","mode","appendChild","role","target","stopPropagation","buildHeader","buildFormView","host","element","vars","prop","safe","setProperty","applyThemeVars","header","iconWrap","textWrap","closeBtn","append","catLabel","catGrid","i","cat","label","isActive","btn","tabindex","createTextNode","dataset","selectCategory","len","next","prev","emailField","buildField","placeholder","icon","required","autocomplete","querySelector","nameField","subjectField","msgField","msgLabel","counter","counterBar","width","msgError","updateCharCount","fieldName","honeypotField","tabIndex","handleSubmit","opts","field","clearFieldError","errorEl","toggle","pct","closest","validate","valid","trimmed","isValidEmail","showFieldError","showTextareaError","textarea","removeAttribute","newState","showStateView","view","titleEl","msgEl","retryAfter","messageText","disabled","options","retries","lastError","attempt","delay","pow","submitTicket","chatgramErr","userMessage","TriggerButton","onClick","pos","tooltip","show","hide","background","modal","resolvedConfig","init","warn","getVersion","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chatgram-widget.cjs.js","sources":["../src/core/types.ts","../src/core/config.ts","../src/core/events.ts","../src/core/api.ts","../src/core/rate-limiter.ts","../src/utils/sanitize.ts","../src/utils/dom.ts","../src/ui/icons.ts","../src/ui/modal.ts","../src/styles/widget-css.ts","../src/ui/trigger.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":["ChatgramError","Error","constructor","message","code","statusCode","super","this","name","DEFAULT_THEME","primaryColor","secondaryColor","backgroundColor","headerBackgroundColor","headerTextColor","textColor","inputBackgroundColor","inputTextColor","inputPlaceholderColor","borderRadius","modalBorderRadius","fontFamily","boxShadow","DEFAULT_TEXTS","title","subtitle","categoryLabel","emailLabel","emailPlaceholder","nameLabel","namePlaceholder","subjectLabel","subjectPlaceholder","messageLabel","messagePlaceholder","submitButtonText","submittingText","successTitle","successMessage","successButtonText","errorTitle","errorMessage","errorButtonText","requiredFieldError","invalidEmailError","messageTooLongError","networkError","timeoutError","rateLimitError","categories","feedback","bug","feature","support","ALL_CATEGORIES","deepMerge","defaults","overrides","result","key","Object","keys","overrideVal","defaultVal","undefined","Array","isArray","resolveConfig","userConfig","domain","window","location","hostname","apiBaseUrl","replace","theme","texts","length","defaultCategory","maxMessageLength","clamp","_a","showTriggerButton","_b","triggerPosition","showNameField","_c","showCategories","_d","zIndex","_e","closeOnOverlayClick","_f","closeOnEscape","_g","enableHoneypot","_h","minSubmitDelay","_j","rateLimitMax","_k","rateLimitWindow","_l","requestTimeout","_m","retryAttempts","_o","autoResetDelay","Math","max","_p","defaultEmail","defaultName","onSuccess","onError","onOpen","onClose","onSubmit","value","min","EventEmitter","listeners","Map","on","event","handler","has","set","Set","get","add","off","delete","once","wrapper","data","emit","handlers","err","console","error","removeAllListeners","clear","async","doRequest","baseUrl","payload","timeout","controller","AbortController","timeoutId","setTimeout","abort","url","response","fetch","method","headers","Accept","body","JSON","stringify","signal","clearTimeout","json","ok","status","success","ticketId","id","_id","DOMException","TypeError","sleep","ms","Promise","resolve","toChatgramError","String","RateLimiter","maxRequests","windowMs","timestamps","tryConsume","now","Date","filter","t","push","getRetryAfter","oldest","retryMs","ceil","reset","sanitizeForPayload","input","trim","isNonEmpty","sanitizeThemeValue","test","isSafeCssValue","el","tag","attrs","children","elem","document","createElement","entries","className","textContent","innerHTML","setAttribute","FOCUSABLE_SELECTOR","join","scrollLockCount","savedScrollbarWidth","savedBodyPaddingRight","savedBodyOverflow","idCounter","ICONS","close","email","user","subject","send","spinner","trigger","warning","getCategoryIcon","type","Modal","config","events","hostEl","shadow","overlay","modalEl","bodyContainer","isOpen","state","mountTime","destroyFocusTrap","boundEscapeHandler","emailInput","nameInput","subjectInput","messageInput","honeypotInput","charCountText","charCountFill","submitBtn","categoryBtns","selectedCategory","instanceId","prefix","toString","uid","rateLimiter","open","mount","requestAnimationFrame","classList","innerWidth","documentElement","clientWidth","style","overflow","paddingRight","container","previouslyFocused","activeElement","getFocusableElements","from","querySelectorAll","getComputedStyle","display","visibility","handleKeyDown","e","focusable","preventDefault","first","last","shiftKey","contains","focus","addEventListener","removeEventListener","createFocusTrap","remove","call","setState","destroy","updateConfig","newConfig","applyTheme","updateTheme","getState","isVisible","cssText","attachShadow","mode","appendChild","role","target","stopPropagation","buildHeader","buildFormView","host","element","vars","prop","safe","setProperty","applyThemeVars","header","iconWrap","textWrap","closeBtn","append","catLabel","catGrid","i","cat","label","isActive","btn","tabindex","createTextNode","dataset","selectCategory","len","next","prev","emailField","buildField","placeholder","icon","required","autocomplete","querySelector","nameField","subjectField","msgField","msgLabel","counter","counterBar","width","msgError","updateCharCount","fieldName","honeypotField","tabIndex","handleSubmit","opts","field","clearFieldError","errorEl","toggle","pct","closest","validate","valid","trimmed","isValidEmail","showFieldError","showTextareaError","textarea","removeAttribute","newState","showStateView","view","titleEl","msgEl","retryAfter","messageText","disabled","options","retries","lastError","attempt","delay","pow","submitTicket","chatgramErr","userMessage","TriggerButton","onClick","pos","tooltip","show","hide","background","modal","resolvedConfig","init","warn","getVersion","index"],"mappings":"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"}
|