pulse-feedback-widget 1.3.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
- import type { PulseWidgetProps } from './types';
2
- export declare function PulseWidget({ projectId, apiKey, apiUrl, position, accentColor, greeting, placeholder, hideOnPaths, collectEmail, collectDiagnostics, userId, metadata, onOpen, onClose: onCloseProp, onSubmit, }: PulseWidgetProps): import("react/jsx-runtime").JSX.Element | null;
1
+ import React from 'react';
2
+ import type { PulseWidgetProps, PulseWidgetHandle } from './types';
3
+ export declare const PulseWidget: React.ForwardRefExoticComponent<PulseWidgetProps & React.RefAttributes<PulseWidgetHandle>>;
3
4
  //# sourceMappingURL=PulseWidget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PulseWidget.d.ts","sourceRoot":"","sources":["../src/PulseWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAahD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,MAAM,EACN,MAAwB,EACxB,QAAyB,EACzB,WAAuB,EACvB,QAAmB,EACnB,WAAoC,EACpC,WAAgB,EAChB,YAAmB,EACnB,kBAA0B,EAC1B,MAAM,EACN,QAAa,EACb,MAAM,EACN,OAAO,EAAE,WAAW,EACpB,QAAQ,GACT,EAAE,gBAAgB,kDA0FlB"}
1
+ {"version":3,"file":"PulseWidget.d.ts","sourceRoot":"","sources":["../src/PulseWidget.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6G,MAAM,OAAO,CAAC;AAClI,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAanE,eAAO,MAAM,WAAW,4FA4HtB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
- import { lazy, useState, useMemo, useRef, useEffect, Suspense } from 'react';
3
+ import { lazy, forwardRef, useState, useMemo, useCallback, useImperativeHandle, useEffect, useRef, Suspense } from 'react';
4
4
  import { getDeviceId } from './lib/device.mjs';
5
5
  import { createHttpClient } from './lib/http.mjs';
6
6
  import { checkUnreadReplies } from './lib/api.mjs';
@@ -9,21 +9,33 @@ import { TriggerButton } from './components/TriggerButton.mjs';
9
9
 
10
10
  const FeedbackPanel = lazy(() => import('./components/FeedbackPanel.mjs').then((m) => ({ default: m.FeedbackPanel })));
11
11
  const DEFAULT_API_URL = 'https://10-pulse.vercel.app';
12
- function PulseWidget({ projectId, apiKey, apiUrl = DEFAULT_API_URL, position = 'bottom-right', accentColor = '#6366F1', greeting = 'Hi! 👋', placeholder = "What's on your mind?", hideOnPaths = [], collectEmail = true, collectDiagnostics = false, userId, metadata = {}, onOpen, onClose: onCloseProp, onSubmit, }) {
12
+ const PulseWidget = forwardRef(function PulseWidget({ apiKey, apiUrl = DEFAULT_API_URL, position = 'bottom-right', offset, hideDefaultLauncher = false, accentColor = '#6366F1', greeting = 'Hi! \u{1F44B}', placeholder = "What's on your mind?", hideOnPaths = [], collectEmail = true, collectDiagnostics = false, userId, metadata = {}, onOpen, onClose: onCloseProp, onSubmit, }, ref) {
13
13
  const [isOpen, setIsOpen] = useState(false);
14
14
  const [hasNotification, setHasNotification] = useState(false);
15
15
  const [hidden, setHidden] = useState(false);
16
16
  // Prop validation
17
- if (!projectId || typeof projectId !== 'string') {
18
- console.error('[Pulse] Invalid projectId: must be a non-empty string');
19
- return null;
20
- }
21
17
  if (!apiKey || typeof apiKey !== 'string') {
22
18
  console.error('[Pulse] Invalid apiKey: must be a non-empty string');
23
19
  return null;
24
20
  }
25
21
  const deviceId = useMemo(() => getDeviceId(), []);
26
22
  const client = useMemo(() => createHttpClient(apiUrl, apiKey, deviceId, userId), [apiUrl, apiKey, deviceId, userId]);
23
+ // Stable open/close callbacks
24
+ const open = useCallback(() => { setIsOpen(true); onOpen?.(); }, [onOpen]);
25
+ const close = useCallback(() => { setIsOpen(false); setHasNotification(false); onCloseProp?.(); }, [onCloseProp]);
26
+ // Imperative handle (React ref API)
27
+ useImperativeHandle(ref, () => ({
28
+ open,
29
+ close,
30
+ isOpen: () => isOpen,
31
+ }), [open, close, isOpen]);
32
+ // Global API (window.Pulse)
33
+ useEffect(() => {
34
+ if (typeof window === 'undefined')
35
+ return;
36
+ window.Pulse = { open, close, isOpen: () => isOpen };
37
+ return () => { delete window.Pulse; };
38
+ }, [open, close, isOpen]);
27
39
  // Diagnostics log collector
28
40
  const logCollectorRef = useRef(null);
29
41
  useEffect(() => {
@@ -57,15 +69,14 @@ function PulseWidget({ projectId, apiKey, apiUrl = DEFAULT_API_URL, position = '
57
69
  }, [client, deviceId]);
58
70
  if (hidden)
59
71
  return null;
60
- return (jsxs(Fragment, { children: [!isOpen && (jsx(TriggerButton, { onClick: () => {
61
- setIsOpen(true);
62
- onOpen?.();
63
- }, position: position, accentColor: accentColor, hasNotification: hasNotification })), isOpen && (jsx(Suspense, { fallback: null, children: jsx(FeedbackPanel, { client: client, accentColor: accentColor, greeting: greeting, placeholder: placeholder, collectEmail: collectEmail, logCollectorRef: logCollectorRef, metadata: metadata, position: position, onClose: () => {
64
- setIsOpen(false);
65
- setHasNotification(false);
66
- onCloseProp?.();
67
- }, onSubmit: onSubmit }) }))] }));
68
- }
72
+ // Panel bottom offset calculation
73
+ // 56 = 48px trigger height + 8px gap
74
+ const triggerBottom = offset?.bottom;
75
+ const panelBottomOffset = triggerBottom !== undefined
76
+ ? (hideDefaultLauncher ? triggerBottom : triggerBottom + 56)
77
+ : (hideDefaultLauncher ? 16 : undefined);
78
+ return (jsxs(Fragment, { children: [!isOpen && !hideDefaultLauncher && (jsx(TriggerButton, { onClick: open, position: position, accentColor: accentColor, hasNotification: hasNotification, offset: offset })), isOpen && (jsx(Suspense, { fallback: null, children: jsx(FeedbackPanel, { client: client, accentColor: accentColor, greeting: greeting, placeholder: placeholder, collectEmail: collectEmail, logCollectorRef: logCollectorRef, metadata: metadata, position: position, offset: offset, panelBottomOffset: panelBottomOffset, onClose: close, onSubmit: onSubmit }) }))] }));
79
+ });
69
80
 
70
81
  export { PulseWidget };
71
82
  //# sourceMappingURL=PulseWidget.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PulseWidget.mjs","sources":["../src/PulseWidget.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAUA;AAIA;AAEM;;;;;;AAuBF;AACA;;;AAGA;AACA;;AAGF;AACA;;AAMA;;;AAGI;;AAEF;AACE;AACA;AACF;AACF;;;;;AAKE;AACA;AACF;;;AAIE;;;AAEA;AACE;AACA;;;AAEF;;AAEF;AAEA;AAAY;AAEZ;;;AAOQ;;;;;AA6BV;;"}
1
+ {"version":3,"file":"PulseWidget.mjs","sources":["../src/PulseWidget.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAUA;AAIA;AAEO;;;;;;AAwBH;AACA;;AAGF;AACA;;;AAOA;;AAGA;;;AAGE;;;;;;AAMA;;;;AAKF;;;AAGI;;AAEF;AACE;AACA;AACF;AACF;;;;;AAKE;AACA;AACF;;;AAIE;;;AAEA;AACE;AACA;;;AAEF;;AAEF;AAEA;AAAY;;;AAIZ;AACA;AACE;AACA;;AAkCJ;;"}
@@ -10,9 +10,15 @@ interface FeedbackPanelProps {
10
10
  logCollectorRef: React.RefObject<LogCollector | null>;
11
11
  metadata: Record<string, unknown>;
12
12
  position: 'bottom-right' | 'bottom-left';
13
+ offset?: {
14
+ bottom?: number;
15
+ left?: number;
16
+ right?: number;
17
+ };
18
+ panelBottomOffset?: number;
13
19
  onClose: () => void;
14
20
  onSubmit?: (threadId: string) => void;
15
21
  }
16
- export declare function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, logCollectorRef, metadata, position, onClose, onSubmit, }: FeedbackPanelProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, logCollectorRef, metadata, position, offset, panelBottomOffset, onClose, onSubmit, }: FeedbackPanelProps): import("react/jsx-runtime").JSX.Element;
17
23
  export {};
18
24
  //# sourceMappingURL=FeedbackPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackPanel.d.ts","sourceRoot":"","sources":["../../src/components/FeedbackPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,cAAc,GAAG,aAAa,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAID,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CAsGpB"}
1
+ {"version":3,"file":"FeedbackPanel.d.ts","sourceRoot":"","sources":["../../src/components/FeedbackPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,cAAc,GAAG,aAAa,CAAC;IACzC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAID,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CA2GpB"}
@@ -5,7 +5,7 @@ import { ThreadList } from './ThreadList.mjs';
5
5
  import { ConversationView } from './ConversationView.mjs';
6
6
  import styles from './FeedbackPanel.module.css.mjs';
7
7
 
8
- function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, logCollectorRef, metadata, position, onClose, onSubmit, }) {
8
+ function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmail, logCollectorRef, metadata, position, offset, panelBottomOffset, onClose, onSubmit, }) {
9
9
  const [tab, setTab] = useState('new');
10
10
  const [selectedThread, setSelectedThread] = useState(null);
11
11
  const [isDark, setIsDark] = useState(false);
@@ -25,6 +25,13 @@ function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmai
25
25
  }, [onClose]);
26
26
  const posClass = position === 'bottom-left' ? styles.bottomLeft : styles.bottomRight;
27
27
  const themeClass = isDark ? styles.panelDark : styles.panelLight;
28
+ const inlinePos = {};
29
+ if (panelBottomOffset !== undefined)
30
+ inlinePos.bottom = panelBottomOffset;
31
+ if (position === 'bottom-right' && offset?.right !== undefined)
32
+ inlinePos.right = offset.right;
33
+ if (position === 'bottom-left' && offset?.left !== undefined)
34
+ inlinePos.left = offset.left;
28
35
  function renderBody() {
29
36
  if (selectedThread) {
30
37
  return (jsx(ConversationView, { client: client, thread: selectedThread, accentColor: accentColor, onBack: () => setSelectedThread(null) }));
@@ -34,7 +41,7 @@ function FeedbackPanel({ client, accentColor, greeting, placeholder, collectEmai
34
41
  }
35
42
  return (jsx(ThreadList, { client: client, onSelectThread: (thread) => setSelectedThread(thread) }));
36
43
  }
37
- return (jsxs(Fragment, { children: [jsx("div", { className: styles.overlay, onClick: onClose }), jsxs("div", { className: `${styles.panel} ${posClass} ${themeClass}`, style: { '--pulse-accent': accentColor }, onClick: (e) => e.stopPropagation(), children: [jsxs("div", { className: styles.header, children: [jsx("p", { className: styles.greeting, children: greeting }), jsx("button", { type: "button", className: styles.closeBtn, onClick: onClose, "aria-label": "Close", children: jsxs("svg", { className: styles.closeIcon, viewBox: "0 0 24 24", children: [jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }) })] }), !selectedThread && (jsxs("div", { className: styles.tabs, children: [jsx("button", { type: "button", className: `${styles.tab} ${tab === 'new' ? styles.tabActive : ''}`, style: tab === 'new' ? { borderBottomColor: accentColor } : undefined, onClick: () => setTab('new'), children: "New" }), jsx("button", { type: "button", className: `${styles.tab} ${tab === 'threads' ? styles.tabActive : ''}`, style: tab === 'threads' ? { borderBottomColor: accentColor } : undefined, onClick: () => setTab('threads'), children: "My Threads" })] })), jsx("div", { className: styles.body, children: renderBody() })] })] }));
44
+ return (jsxs(Fragment, { children: [jsx("div", { className: styles.overlay, onClick: onClose }), jsxs("div", { className: `${styles.panel} ${posClass} ${themeClass}`, style: { '--pulse-accent': accentColor, ...inlinePos }, onClick: (e) => e.stopPropagation(), children: [jsxs("div", { className: styles.header, children: [jsx("p", { className: styles.greeting, children: greeting }), jsx("button", { type: "button", className: styles.closeBtn, onClick: onClose, "aria-label": "Close", children: jsxs("svg", { className: styles.closeIcon, viewBox: "0 0 24 24", children: [jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }) })] }), !selectedThread && (jsxs("div", { className: styles.tabs, children: [jsx("button", { type: "button", className: `${styles.tab} ${tab === 'new' ? styles.tabActive : ''}`, style: tab === 'new' ? { borderBottomColor: accentColor } : undefined, onClick: () => setTab('new'), children: "New" }), jsx("button", { type: "button", className: `${styles.tab} ${tab === 'threads' ? styles.tabActive : ''}`, style: tab === 'threads' ? { borderBottomColor: accentColor } : undefined, onClick: () => setTab('threads'), children: "My Threads" })] })), jsx("div", { className: styles.body, children: renderBody() })] })] }));
38
45
  }
39
46
 
40
47
  export { FeedbackPanel };
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackPanel.mjs","sources":["../../src/components/FeedbackPanel.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"FeedbackPanel.mjs","sources":["../../src/components/FeedbackPanel.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../node_modules/style-inject/dist/style-inject.es.mjs';
2
2
 
3
- var css_248z = ".FeedbackPanel-module_overlay__7EKR-{inset:0;position:fixed;z-index:9999}.FeedbackPanel-module_panel__kSC1b{animation:FeedbackPanel-module_slideUp__HxbOr .2s cubic-bezier(.22,1,.36,1);border-radius:16px;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;max-height:520px;overflow:hidden;position:fixed;width:380px;z-index:10000}.FeedbackPanel-module_panelLight__KDQJ4{--pulse-bg:#fff;--pulse-bg-secondary:#f9fafb;--pulse-bg-hover:#f3f4f6;--pulse-text-primary:#111827;--pulse-text-secondary:#6b7280;--pulse-text-tertiary:#9ca3af;--pulse-border:#e5e7eb;--pulse-border-strong:#d1d5db;background:#fff;box-shadow:0 8px 40px rgba(0,0,0,.12);color:#111827}.FeedbackPanel-module_panelDark__EUh4H{--pulse-bg:#1a1a2e;--pulse-bg-secondary:#16162a;--pulse-bg-hover:#22223a;--pulse-text-primary:#e5e7eb;--pulse-text-secondary:#9ca3af;--pulse-text-tertiary:#6b7280;--pulse-border:#2a2a40;--pulse-border-strong:#3a3a55;background:#1a1a2e;box-shadow:0 8px 40px rgba(0,0,0,.32);color:#e5e7eb}.FeedbackPanel-module_bottomRight__331Vd{bottom:72px;right:16px}.FeedbackPanel-module_bottomLeft__W1rlu{bottom:72px;left:16px}.FeedbackPanel-module_header__yWwBD{align-items:center;border-bottom:1px solid var(--pulse-border,#e5e7eb);display:flex;flex-shrink:0;justify-content:space-between;padding:14px 16px}.FeedbackPanel-module_greeting__DLD1g{color:var(--pulse-text-primary,#111827);font-size:15px;font-weight:600;margin:0}.FeedbackPanel-module_closeBtn__HdntP{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--pulse-text-secondary,#6b7280);cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:background .12s ease;width:28px}.FeedbackPanel-module_closeBtn__HdntP:hover{background:var(--pulse-bg-hover,#f3f4f6)}.FeedbackPanel-module_closeIcon__eM6qt{stroke:currentColor;stroke-width:2;fill:none;height:18px;width:18px}.FeedbackPanel-module_tabs__-Tq3f{border-bottom:1px solid var(--pulse-border,#e5e7eb);display:flex;flex-shrink:0}.FeedbackPanel-module_tab__MgsxB{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--pulse-text-secondary,#6b7280);cursor:pointer;flex:1;font-family:inherit;font-size:13px;font-weight:500;padding:10px;transition:all .12s ease}.FeedbackPanel-module_tabActive__cSus0{border-bottom-color:var(--pulse-accent,#6366f1);color:var(--pulse-text-primary,#111827)}.FeedbackPanel-module_body__hp-M0{flex:1;overflow-y:auto;padding:16px}@keyframes FeedbackPanel-module_slideUp__HxbOr{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:479px){.FeedbackPanel-module_panel__kSC1b{border-radius:16px 16px 16px 16px;bottom:16px!important;left:16px!important;max-height:70vh;right:16px!important;width:calc(100vw - 32px)}}@media (prefers-reduced-motion:reduce){.FeedbackPanel-module_panel__kSC1b{animation:none}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZlZWRiYWNrUGFuZWwubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFRSxPQUFRLENBRFIsY0FBZSxDQUVmLFlBQ0YsQ0FFQSxtQ0FXRSwyRUFBdUQsQ0FOdkQsa0JBQW1CLENBRW5CLFlBQWEsQ0FDYixxQkFBc0IsQ0FDdEIsNEZBQ3FDLENBTnJDLGdCQUFpQixDQUVqQixlQUFnQixDQUxoQixjQUFlLENBRWYsV0FBWSxDQURaLGFBVUYsQ0FFQSx3Q0FJRSxlQUFtQixDQUNuQiw0QkFBNkIsQ0FDN0Isd0JBQXlCLENBQ3pCLDRCQUE2QixDQUM3Qiw4QkFBK0IsQ0FDL0IsNkJBQThCLENBQzlCLHNCQUF1QixDQUN2Qiw2QkFBOEIsQ0FWOUIsZUFBbUIsQ0FFbkIscUNBQTBDLENBRDFDLGFBVUYsQ0FFQSx1Q0FJRSxrQkFBbUIsQ0FDbkIsNEJBQTZCLENBQzdCLHdCQUF5QixDQUN6Qiw0QkFBNkIsQ0FDN0IsOEJBQStCLENBQy9CLDZCQUE4QixDQUM5QixzQkFBdUIsQ0FDdkIsNkJBQThCLENBVjlCLGtCQUFtQixDQUVuQixxQ0FBMEMsQ0FEMUMsYUFVRixDQUVBLHlDQUNFLFdBQVksQ0FDWixVQUNGLENBRUEsd0NBQ0UsV0FBWSxDQUNaLFNBQ0YsQ0FFQSxvQ0FFRSxrQkFBbUIsQ0FHbkIsbURBQXFELENBSnJELFlBQWEsQ0FLYixhQUFjLENBSGQsNkJBQThCLENBQzlCLGlCQUdGLENBRUEsc0NBSUUsdUNBQXlDLENBSHpDLGNBQWUsQ0FDZixlQUFnQixDQUNoQixRQUVGLENBRUEsc0NBUUUsa0JBQW1CLENBSG5CLHNCQUF1QixDQUR2QixXQUFZLENBRFosaUJBQWtCLENBT2xCLHlDQUEyQyxDQUozQyxjQUFlLENBQ2YsWUFBYSxDQUxiLFdBQVksQ0FPWixzQkFBdUIsQ0FHdkIsU0FBVSxDQURWLCtCQUFpQyxDQVZqQyxVQVlGLENBRUEsNENBQ0Usd0NBQ0YsQ0FFQSx1Q0FHRSxtQkFBb0IsQ0FDcEIsY0FBZSxDQUNmLFNBQVUsQ0FIVixXQUFZLENBRFosVUFLRixDQUVBLGtDQUVFLG1EQUFxRCxDQURyRCxZQUFhLENBRWIsYUFDRixDQUVBLGlDQUlFLHNCQUF1QixDQU92QixXQUFvQyxDQUFwQyxtQ0FBb0MsQ0FIcEMseUNBQTJDLENBSDNDLGNBQWUsQ0FKZixNQUFPLENBU1AsbUJBQW9CLENBSnBCLGNBQWUsQ0FDZixlQUFnQixDQUxoQixZQUFhLENBT2Isd0JBR0YsQ0FFQSx1Q0FDRSwrQ0FBaUQsQ0FDakQsdUNBQ0YsQ0FFQSxrQ0FDRSxNQUFPLENBQ1AsZUFBZ0IsQ0FDaEIsWUFDRixDQUVBLCtDQUNFLEdBQ0UsU0FBVSxDQUNWLHlCQUNGLENBQ0EsR0FDRSxTQUFVLENBQ1YsdUJBQ0YsQ0FDRixDQUdBLHlCQUNFLG1DQU1FLGlDQUFrQyxDQUhsQyxxQkFBdUIsQ0FDdkIsbUJBQXFCLENBRnJCLGVBQWdCLENBR2hCLG9CQUFzQixDQUp0Qix3QkFNRixDQUNGLENBRUEsdUNBQ0UsbUNBQ0UsY0FDRixDQUNGIiwiZmlsZSI6IkZlZWRiYWNrUGFuZWwubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogMDtcbiAgei1pbmRleDogOTk5OTtcbn1cblxuLnBhbmVsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMDAwMDtcbiAgd2lkdGg6IDM4MHB4O1xuICBtYXgtaGVpZ2h0OiA1MjBweDtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLFxuICAgICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBhbmltYXRpb246IHNsaWRlVXAgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpO1xufVxuXG4ucGFuZWxMaWdodCB7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGNvbG9yOiAjMTExODI3O1xuICBib3gtc2hhZG93OiAwIDhweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIC0tcHVsc2UtYmc6ICNmZmZmZmY7XG4gIC0tcHVsc2UtYmctc2Vjb25kYXJ5OiAjZjlmYWZiO1xuICAtLXB1bHNlLWJnLWhvdmVyOiAjZjNmNGY2O1xuICAtLXB1bHNlLXRleHQtcHJpbWFyeTogIzExMTgyNztcbiAgLS1wdWxzZS10ZXh0LXNlY29uZGFyeTogIzZiNzI4MDtcbiAgLS1wdWxzZS10ZXh0LXRlcnRpYXJ5OiAjOWNhM2FmO1xuICAtLXB1bHNlLWJvcmRlcjogI2U1ZTdlYjtcbiAgLS1wdWxzZS1ib3JkZXItc3Ryb25nOiAjZDFkNWRiO1xufVxuXG4ucGFuZWxEYXJrIHtcbiAgYmFja2dyb3VuZDogIzFhMWEyZTtcbiAgY29sb3I6ICNlNWU3ZWI7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjMyKTtcbiAgLS1wdWxzZS1iZzogIzFhMWEyZTtcbiAgLS1wdWxzZS1iZy1zZWNvbmRhcnk6ICMxNjE2MmE7XG4gIC0tcHVsc2UtYmctaG92ZXI6ICMyMjIyM2E7XG4gIC0tcHVsc2UtdGV4dC1wcmltYXJ5OiAjZTVlN2ViO1xuICAtLXB1bHNlLXRleHQtc2Vjb25kYXJ5OiAjOWNhM2FmO1xuICAtLXB1bHNlLXRleHQtdGVydGlhcnk6ICM2YjcyODA7XG4gIC0tcHVsc2UtYm9yZGVyOiAjMmEyYTQwO1xuICAtLXB1bHNlLWJvcmRlci1zdHJvbmc6ICMzYTNhNTU7XG59XG5cbi5ib3R0b21SaWdodCB7XG4gIGJvdHRvbTogNzJweDtcbiAgcmlnaHQ6IDE2cHg7XG59XG5cbi5ib3R0b21MZWZ0IHtcbiAgYm90dG9tOiA3MnB4O1xuICBsZWZ0OiAxNnB4O1xufVxuXG4uaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1wdWxzZS1ib3JkZXIsICNlNWU3ZWIpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmdyZWV0aW5nIHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiB2YXIoLS1wdWxzZS10ZXh0LXByaW1hcnksICMxMTE4MjcpO1xufVxuXG4uY2xvc2VCdG4ge1xuICB3aWR0aDogMjhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1wdWxzZS10ZXh0LXNlY29uZGFyeSwgIzZiNzI4MCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMTIwbXMgZWFzZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLmNsb3NlQnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tcHVsc2UtYmctaG92ZXIsICNmM2Y0ZjYpO1xufVxuXG4uY2xvc2VJY29uIHtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7XG4gIHN0cm9rZS13aWR0aDogMjtcbiAgZmlsbDogbm9uZTtcbn1cblxuLnRhYnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcHVsc2UtYm9yZGVyLCAjZTVlN2ViKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50YWIge1xuICBmbGV4OiAxO1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLXB1bHNlLXRleHQtc2Vjb25kYXJ5LCAjNmI3MjgwKTtcbiAgdHJhbnNpdGlvbjogYWxsIDEyMG1zIGVhc2U7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi50YWJBY3RpdmUge1xuICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1wdWxzZS1hY2NlbnQsICM2MzY2ZjEpO1xuICBjb2xvcjogdmFyKC0tcHVsc2UtdGV4dC1wcmltYXJ5LCAjMTExODI3KTtcbn1cblxuLmJvZHkge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwYWRkaW5nOiAxNnB4O1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlVXAge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG4vKiBNb2JpbGU6IGZ1bGwtd2lkdGggYm90dG9tIHNoZWV0ICovXG5AbWVkaWEgKG1heC13aWR0aDogNDc5cHgpIHtcbiAgLnBhbmVsIHtcbiAgICB3aWR0aDogY2FsYygxMDB2dyAtIDMycHgpO1xuICAgIG1heC1oZWlnaHQ6IDcwdmg7XG4gICAgYm90dG9tOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogMTZweCAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDE2cHggMTZweDtcbiAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAucGFuZWwge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxufVxuIl19 */";
3
+ var css_248z = ".FeedbackPanel-module_overlay__7EKR-{inset:0;position:fixed;z-index:9999}.FeedbackPanel-module_panel__kSC1b{animation:FeedbackPanel-module_slideUp__HxbOr .2s cubic-bezier(.22,1,.36,1);border-radius:16px;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;max-height:520px;overflow:hidden;position:fixed;width:380px;z-index:10000}.FeedbackPanel-module_panelLight__KDQJ4{--pulse-bg:#fff;--pulse-bg-secondary:#f9fafb;--pulse-bg-hover:#f3f4f6;--pulse-text-primary:#111827;--pulse-text-secondary:#6b7280;--pulse-text-tertiary:#9ca3af;--pulse-border:#e5e7eb;--pulse-border-strong:#d1d5db;background:#fff;box-shadow:0 8px 40px rgba(0,0,0,.12);color:#111827}.FeedbackPanel-module_panelDark__EUh4H{--pulse-bg:#1a1a2e;--pulse-bg-secondary:#16162a;--pulse-bg-hover:#22223a;--pulse-text-primary:#e5e7eb;--pulse-text-secondary:#9ca3af;--pulse-text-tertiary:#6b7280;--pulse-border:#2a2a40;--pulse-border-strong:#3a3a55;background:#1a1a2e;box-shadow:0 8px 40px rgba(0,0,0,.32);color:#e5e7eb}.FeedbackPanel-module_bottomRight__331Vd{bottom:72px;right:var(--pulse-offset-right,16px)}.FeedbackPanel-module_bottomLeft__W1rlu{bottom:72px;left:var(--pulse-offset-left,16px)}.FeedbackPanel-module_header__yWwBD{align-items:center;border-bottom:1px solid var(--pulse-border,#e5e7eb);display:flex;flex-shrink:0;justify-content:space-between;padding:14px 16px}.FeedbackPanel-module_greeting__DLD1g{color:var(--pulse-text-primary,#111827);font-size:15px;font-weight:600;margin:0}.FeedbackPanel-module_closeBtn__HdntP{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--pulse-text-secondary,#6b7280);cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:background .12s ease;width:28px}.FeedbackPanel-module_closeBtn__HdntP:hover{background:var(--pulse-bg-hover,#f3f4f6)}.FeedbackPanel-module_closeIcon__eM6qt{stroke:currentColor;stroke-width:2;fill:none;height:18px;width:18px}.FeedbackPanel-module_tabs__-Tq3f{border-bottom:1px solid var(--pulse-border,#e5e7eb);display:flex;flex-shrink:0}.FeedbackPanel-module_tab__MgsxB{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--pulse-text-secondary,#6b7280);cursor:pointer;flex:1;font-family:inherit;font-size:13px;font-weight:500;padding:10px;transition:all .12s ease}.FeedbackPanel-module_tabActive__cSus0{border-bottom-color:var(--pulse-accent,#6366f1);color:var(--pulse-text-primary,#111827)}.FeedbackPanel-module_body__hp-M0{flex:1;overflow-y:auto;padding:16px}@keyframes FeedbackPanel-module_slideUp__HxbOr{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:479px){.FeedbackPanel-module_panel__kSC1b{border-radius:16px 16px 16px 16px;bottom:16px!important;left:16px!important;max-height:70vh;right:16px!important;width:calc(100vw - 32px)}}@media (prefers-reduced-motion:reduce){.FeedbackPanel-module_panel__kSC1b{animation:none}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZlZWRiYWNrUGFuZWwubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFRSxPQUFRLENBRFIsY0FBZSxDQUVmLFlBQ0YsQ0FFQSxtQ0FXRSwyRUFBdUQsQ0FOdkQsa0JBQW1CLENBRW5CLFlBQWEsQ0FDYixxQkFBc0IsQ0FDdEIsNEZBQ3FDLENBTnJDLGdCQUFpQixDQUVqQixlQUFnQixDQUxoQixjQUFlLENBRWYsV0FBWSxDQURaLGFBVUYsQ0FFQSx3Q0FJRSxlQUFtQixDQUNuQiw0QkFBNkIsQ0FDN0Isd0JBQXlCLENBQ3pCLDRCQUE2QixDQUM3Qiw4QkFBK0IsQ0FDL0IsNkJBQThCLENBQzlCLHNCQUF1QixDQUN2Qiw2QkFBOEIsQ0FWOUIsZUFBbUIsQ0FFbkIscUNBQTBDLENBRDFDLGFBVUYsQ0FFQSx1Q0FJRSxrQkFBbUIsQ0FDbkIsNEJBQTZCLENBQzdCLHdCQUF5QixDQUN6Qiw0QkFBNkIsQ0FDN0IsOEJBQStCLENBQy9CLDZCQUE4QixDQUM5QixzQkFBdUIsQ0FDdkIsNkJBQThCLENBVjlCLGtCQUFtQixDQUVuQixxQ0FBMEMsQ0FEMUMsYUFVRixDQUVBLHlDQUNFLFdBQVksQ0FDWixvQ0FDRixDQUVBLHdDQUNFLFdBQVksQ0FDWixrQ0FDRixDQUVBLG9DQUVFLGtCQUFtQixDQUduQixtREFBcUQsQ0FKckQsWUFBYSxDQUtiLGFBQWMsQ0FIZCw2QkFBOEIsQ0FDOUIsaUJBR0YsQ0FFQSxzQ0FJRSx1Q0FBeUMsQ0FIekMsY0FBZSxDQUNmLGVBQWdCLENBQ2hCLFFBRUYsQ0FFQSxzQ0FRRSxrQkFBbUIsQ0FIbkIsc0JBQXVCLENBRHZCLFdBQVksQ0FEWixpQkFBa0IsQ0FPbEIseUNBQTJDLENBSjNDLGNBQWUsQ0FDZixZQUFhLENBTGIsV0FBWSxDQU9aLHNCQUF1QixDQUd2QixTQUFVLENBRFYsK0JBQWlDLENBVmpDLFVBWUYsQ0FFQSw0Q0FDRSx3Q0FDRixDQUVBLHVDQUdFLG1CQUFvQixDQUNwQixjQUFlLENBQ2YsU0FBVSxDQUhWLFdBQVksQ0FEWixVQUtGLENBRUEsa0NBRUUsbURBQXFELENBRHJELFlBQWEsQ0FFYixhQUNGLENBRUEsaUNBSUUsc0JBQXVCLENBT3ZCLFdBQW9DLENBQXBDLG1DQUFvQyxDQUhwQyx5Q0FBMkMsQ0FIM0MsY0FBZSxDQUpmLE1BQU8sQ0FTUCxtQkFBb0IsQ0FKcEIsY0FBZSxDQUNmLGVBQWdCLENBTGhCLFlBQWEsQ0FPYix3QkFHRixDQUVBLHVDQUNFLCtDQUFpRCxDQUNqRCx1Q0FDRixDQUVBLGtDQUNFLE1BQU8sQ0FDUCxlQUFnQixDQUNoQixZQUNGLENBRUEsK0NBQ0UsR0FDRSxTQUFVLENBQ1YseUJBQ0YsQ0FDQSxHQUNFLFNBQVUsQ0FDVix1QkFDRixDQUNGLENBR0EseUJBQ0UsbUNBTUUsaUNBQWtDLENBSGxDLHFCQUF1QixDQUN2QixtQkFBcUIsQ0FGckIsZUFBZ0IsQ0FHaEIsb0JBQXNCLENBSnRCLHdCQU1GLENBQ0YsQ0FFQSx1Q0FDRSxtQ0FDRSxjQUNGLENBQ0YiLCJmaWxlIjoiRmVlZGJhY2tQYW5lbC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiA5OTk5O1xufVxuXG4ucGFuZWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDEwMDAwO1xuICB3aWR0aDogMzgwcHg7XG4gIG1heC1oZWlnaHQ6IDUyMHB4O1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sXG4gICAgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGFuaW1hdGlvbjogc2xpZGVVcCAyMDBtcyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSk7XG59XG5cbi5wYW5lbExpZ2h0IHtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgY29sb3I6ICMxMTE4Mjc7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgLS1wdWxzZS1iZzogI2ZmZmZmZjtcbiAgLS1wdWxzZS1iZy1zZWNvbmRhcnk6ICNmOWZhZmI7XG4gIC0tcHVsc2UtYmctaG92ZXI6ICNmM2Y0ZjY7XG4gIC0tcHVsc2UtdGV4dC1wcmltYXJ5OiAjMTExODI3O1xuICAtLXB1bHNlLXRleHQtc2Vjb25kYXJ5OiAjNmI3MjgwO1xuICAtLXB1bHNlLXRleHQtdGVydGlhcnk6ICM5Y2EzYWY7XG4gIC0tcHVsc2UtYm9yZGVyOiAjZTVlN2ViO1xuICAtLXB1bHNlLWJvcmRlci1zdHJvbmc6ICNkMWQ1ZGI7XG59XG5cbi5wYW5lbERhcmsge1xuICBiYWNrZ3JvdW5kOiAjMWExYTJlO1xuICBjb2xvcjogI2U1ZTdlYjtcbiAgYm94LXNoYWRvdzogMCA4cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMzIpO1xuICAtLXB1bHNlLWJnOiAjMWExYTJlO1xuICAtLXB1bHNlLWJnLXNlY29uZGFyeTogIzE2MTYyYTtcbiAgLS1wdWxzZS1iZy1ob3ZlcjogIzIyMjIzYTtcbiAgLS1wdWxzZS10ZXh0LXByaW1hcnk6ICNlNWU3ZWI7XG4gIC0tcHVsc2UtdGV4dC1zZWNvbmRhcnk6ICM5Y2EzYWY7XG4gIC0tcHVsc2UtdGV4dC10ZXJ0aWFyeTogIzZiNzI4MDtcbiAgLS1wdWxzZS1ib3JkZXI6ICMyYTJhNDA7XG4gIC0tcHVsc2UtYm9yZGVyLXN0cm9uZzogIzNhM2E1NTtcbn1cblxuLmJvdHRvbVJpZ2h0IHtcbiAgYm90dG9tOiA3MnB4O1xuICByaWdodDogdmFyKC0tcHVsc2Utb2Zmc2V0LXJpZ2h0LCAxNnB4KTtcbn1cblxuLmJvdHRvbUxlZnQge1xuICBib3R0b206IDcycHg7XG4gIGxlZnQ6IHZhcigtLXB1bHNlLW9mZnNldC1sZWZ0LCAxNnB4KTtcbn1cblxuLmhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMTRweCAxNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcHVsc2UtYm9yZGVyLCAjZTVlN2ViKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5ncmVldGluZyB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogdmFyKC0tcHVsc2UtdGV4dC1wcmltYXJ5LCAjMTExODI3KTtcbn1cblxuLmNsb3NlQnRuIHtcbiAgd2lkdGg6IDI4cHg7XG4gIGhlaWdodDogMjhweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogdmFyKC0tcHVsc2UtdGV4dC1zZWNvbmRhcnksICM2YjcyODApO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDEyMG1zIGVhc2U7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jbG9zZUJ0bjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXB1bHNlLWJnLWhvdmVyLCAjZjNmNGY2KTtcbn1cblxuLmNsb3NlSWNvbiB7XG4gIHdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIHN0cm9rZTogY3VycmVudENvbG9yO1xuICBzdHJva2Utd2lkdGg6IDI7XG4gIGZpbGw6IG5vbmU7XG59XG5cbi50YWJzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXB1bHNlLWJvcmRlciwgI2U1ZTdlYik7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4udGFiIHtcbiAgZmxleDogMTtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1wdWxzZS10ZXh0LXNlY29uZGFyeSwgIzZiNzI4MCk7XG4gIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4udGFiQWN0aXZlIHtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tcHVsc2UtYWNjZW50LCAjNjM2NmYxKTtcbiAgY29sb3I6IHZhcigtLXB1bHNlLXRleHQtcHJpbWFyeSwgIzExMTgyNyk7XG59XG5cbi5ib2R5IHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogMTZweDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZVVwIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuLyogTW9iaWxlOiBmdWxsLXdpZHRoIGJvdHRvbSBzaGVldCAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ3OXB4KSB7XG4gIC5wYW5lbCB7XG4gICAgd2lkdGg6IGNhbGMoMTAwdncgLSAzMnB4KTtcbiAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgIGJvdHRvbTogMTZweCAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IDE2cHggIWltcG9ydGFudDtcbiAgICByaWdodDogMTZweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHggMTZweCAxNnB4IDE2cHg7XG4gIH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLnBhbmVsIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbn1cbiJdfQ== */";
4
4
  var styles = {"overlay":"FeedbackPanel-module_overlay__7EKR-","panel":"FeedbackPanel-module_panel__kSC1b","panelLight":"FeedbackPanel-module_panelLight__KDQJ4","panelDark":"FeedbackPanel-module_panelDark__EUh4H","bottomRight":"FeedbackPanel-module_bottomRight__331Vd","bottomLeft":"FeedbackPanel-module_bottomLeft__W1rlu","header":"FeedbackPanel-module_header__yWwBD","greeting":"FeedbackPanel-module_greeting__DLD1g","closeBtn":"FeedbackPanel-module_closeBtn__HdntP","closeIcon":"FeedbackPanel-module_closeIcon__eM6qt","tabs":"FeedbackPanel-module_tabs__-Tq3f","tab":"FeedbackPanel-module_tab__MgsxB","tabActive":"FeedbackPanel-module_tabActive__cSus0","body":"FeedbackPanel-module_body__hp-M0"};
5
5
  styleInject(css_248z);
6
6
 
@@ -3,7 +3,12 @@ interface TriggerButtonProps {
3
3
  position: 'bottom-right' | 'bottom-left';
4
4
  accentColor: string;
5
5
  hasNotification: boolean;
6
+ offset?: {
7
+ bottom?: number;
8
+ left?: number;
9
+ right?: number;
10
+ };
6
11
  }
7
- export declare function TriggerButton({ onClick, position, accentColor, hasNotification }: TriggerButtonProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function TriggerButton({ onClick, position, accentColor, hasNotification, offset }: TriggerButtonProps): import("react/jsx-runtime").JSX.Element;
8
13
  export {};
9
14
  //# sourceMappingURL=TriggerButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerButton.d.ts","sourceRoot":"","sources":["../../src/components/TriggerButton.tsx"],"names":[],"mappings":"AAGA,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,cAAc,GAAG,aAAa,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,kBAAkB,2CAiBpG"}
1
+ {"version":3,"file":"TriggerButton.d.ts","sourceRoot":"","sources":["../../src/components/TriggerButton.tsx"],"names":[],"mappings":"AAGA,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,cAAc,GAAG,aAAa,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CAsB5G"}
@@ -1,9 +1,16 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import styles from './TriggerButton.module.css.mjs';
3
3
 
4
- function TriggerButton({ onClick, position, accentColor, hasNotification }) {
4
+ function TriggerButton({ onClick, position, accentColor, hasNotification, offset }) {
5
5
  const posClass = position === 'bottom-left' ? styles.bottomLeft : styles.bottomRight;
6
- return (jsxs("button", { className: `${styles.trigger} ${posClass}`, onClick: onClick, style: { backgroundColor: accentColor }, "aria-label": "Open feedback", type: "button", children: [jsx("svg", { className: styles.triggerIcon, viewBox: "0 0 24 24", children: jsx("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }) }), hasNotification && jsx("span", { className: styles.notificationDot })] }));
6
+ const inlinePos = {};
7
+ if (offset?.bottom !== undefined)
8
+ inlinePos.bottom = offset.bottom;
9
+ if (position === 'bottom-right' && offset?.right !== undefined)
10
+ inlinePos.right = offset.right;
11
+ if (position === 'bottom-left' && offset?.left !== undefined)
12
+ inlinePos.left = offset.left;
13
+ return (jsxs("button", { className: `${styles.trigger} ${posClass}`, onClick: onClick, style: { backgroundColor: accentColor, ...inlinePos }, "aria-label": "Open feedback", type: "button", children: [jsx("svg", { className: styles.triggerIcon, viewBox: "0 0 24 24", children: jsx("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }) }), hasNotification && jsx("span", { className: styles.notificationDot })] }));
7
14
  }
8
15
 
9
16
  export { TriggerButton };
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerButton.mjs","sources":["../../src/components/TriggerButton.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;AAUM,SAAU,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAsB,EAAA;AACnG,IAAA,MAAM,QAAQ,GAAG,QAAQ,KAAK,aAAa,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW;IAEpF,QACEA,IAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,EAAG,MAAM,CAAC,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,EAC1C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,EAAA,YAAA,EAC5B,eAAe,EAC1B,IAAI,EAAC,QAAQ,EAAA,QAAA,EAAA,CAEbC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAC,WAAW,EAAA,QAAA,EACrDA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,+DAA+D,EAAA,CAAG,EAAA,CACtE,EACL,eAAe,IAAIA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,eAAe,EAAA,CAAI,CAAA,EAAA,CACxD;AAEb;;;;"}
1
+ {"version":3,"file":"TriggerButton.mjs","sources":["../../src/components/TriggerButton.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;AAWM,SAAU,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAsB,EAAA;AAC3G,IAAA,MAAM,QAAQ,GAAG,QAAQ,KAAK,aAAa,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW;IAEpF,MAAM,SAAS,GAAwB,EAAE;AACzC,IAAA,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;AAAE,QAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;IAClE,IAAI,QAAQ,KAAK,cAAc,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS;AAAE,QAAA,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;IAC9F,IAAI,QAAQ,KAAK,aAAa,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS;AAAE,QAAA,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AAE1F,IAAA,QACEA,IAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,EAAG,MAAM,CAAC,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,EAC1C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,EAAA,YAAA,EAC1C,eAAe,EAC1B,IAAI,EAAC,QAAQ,EAAA,QAAA,EAAA,CAEbC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAC,WAAW,EAAA,QAAA,EACrDA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,+DAA+D,EAAA,CAAG,EAAA,CACtE,EACL,eAAe,IAAIA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,eAAe,EAAA,CAAI,CAAA,EAAA,CACxD;AAEb;;;;"}
@@ -1,6 +1,6 @@
1
1
  import styleInject from '../node_modules/style-inject/dist/style-inject.es.mjs';
2
2
 
3
- var css_248z = ".TriggerButton-module_trigger__02CR-{align-items:center;border:none;border-radius:50%;box-shadow:0 2px 12px rgba(0,0,0,.15);cursor:pointer;display:flex;height:48px;justify-content:center;outline:none;padding:0;position:fixed;transition:transform .12s cubic-bezier(.22,1,.36,1),box-shadow .12s cubic-bezier(.22,1,.36,1);width:48px;z-index:9999}.TriggerButton-module_trigger__02CR-:hover{box-shadow:0 4px 20px rgba(0,0,0,.2);transform:scale(1.08)}.TriggerButton-module_trigger__02CR-:active{transform:scale(.95)}.TriggerButton-module_bottomRight__566sd{bottom:16px;right:16px}.TriggerButton-module_bottomLeft__G7wbE{bottom:16px;left:16px}.TriggerButton-module_triggerIcon__WdZYH{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;color:#fff;height:24px;width:24px}.TriggerButton-module_notificationDot__b1Thf{animation:TriggerButton-module_pulse-dot__TIqUH 2s ease-in-out infinite;background:#ef4444;border:2px solid #fff;border-radius:50%;height:10px;position:absolute;right:-2px;top:-2px;width:10px}@keyframes TriggerButton-module_pulse-dot__TIqUH{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.3)}}@media (max-width:479px){.TriggerButton-module_trigger__02CR-{height:36px;width:36px}.TriggerButton-module_bottomRight__566sd{bottom:var(--pulse-trigger-bottom,72px);right:12px}.TriggerButton-module_bottomLeft__G7wbE{bottom:var(--pulse-trigger-bottom,72px);left:12px}.TriggerButton-module_triggerIcon__WdZYH{height:18px;width:18px}.TriggerButton-module_notificationDot__b1Thf{height:8px;right:-1px;top:-1px;width:8px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyaWdnZXJCdXR0b24ubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FTRSxrQkFBbUIsQ0FIbkIsV0FBWSxDQURaLGlCQUFrQixDQU1sQixxQ0FBMEMsQ0FKMUMsY0FBZSxDQUNmLFlBQWEsQ0FKYixXQUFZLENBTVosc0JBQXVCLENBS3ZCLFlBQWEsQ0FEYixTQUFVLENBYlYsY0FBZSxDQVdmLDZGQUMyRCxDQVYzRCxVQUFXLENBRFgsWUFjRixDQUVBLDJDQUVFLG9DQUF5QyxDQUR6QyxxQkFFRixDQUVBLDRDQUNFLG9CQUNGLENBRUEseUNBQ0UsV0FBWSxDQUNaLFVBQ0YsQ0FFQSx3Q0FDRSxXQUFZLENBQ1osU0FDRixDQUVBLHlDQUlFLFNBQVUsQ0FDVixtQkFBb0IsQ0FDcEIsZ0JBQWlCLENBQ2pCLG9CQUFxQixDQUNyQixxQkFBc0IsQ0FMdEIsVUFBYyxDQURkLFdBQVksQ0FEWixVQVFGLENBRUEsNkNBU0UsdUVBQTRDLENBRjVDLGtCQUFtQixDQUNuQixxQkFBeUIsQ0FGekIsaUJBQWtCLENBRGxCLFdBQVksQ0FKWixpQkFBa0IsQ0FFbEIsVUFBVyxDQURYLFFBQVMsQ0FFVCxVQU1GLENBRUEsaURBQ0UsTUFBZ0MsU0FBVSxDQUEvQixrQkFBaUMsQ0FDNUMsSUFBNkIsVUFBWSxDQUFuQyxvQkFBcUMsQ0FDN0MsQ0FFQSx5QkFDRSxxQ0FFRSxXQUFZLENBRFosVUFFRixDQUVBLHlDQUNFLHVDQUF5QyxDQUN6QyxVQUNGLENBRUEsd0NBQ0UsdUNBQXlDLENBQ3pDLFNBQ0YsQ0FFQSx5Q0FFRSxXQUFZLENBRFosVUFFRixDQUVBLDZDQUVFLFVBQVcsQ0FFWCxVQUFXLENBRFgsUUFBUyxDQUZULFNBSUYsQ0FDRiIsImZpbGUiOiJUcmlnZ2VyQnV0dG9uLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudHJpZ2dlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTtcbiAgd2lkdGg6IDQ4cHg7XG4gIGhlaWdodDogNDhweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDEyMG1zIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSxcbiAgICAgICAgICAgICAgYm94LXNoYWRvdyAxMjBtcyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSk7XG4gIHBhZGRpbmc6IDA7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbi50cmlnZ2VyOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA4KTtcbiAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi50cmlnZ2VyOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG59XG5cbi5ib3R0b21SaWdodCB7XG4gIGJvdHRvbTogMTZweDtcbiAgcmlnaHQ6IDE2cHg7XG59XG5cbi5ib3R0b21MZWZ0IHtcbiAgYm90dG9tOiAxNnB4O1xuICBsZWZ0OiAxNnB4O1xufVxuXG4udHJpZ2dlckljb24ge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgZmlsbDogbm9uZTtcbiAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7XG4gIHN0cm9rZS13aWR0aDogMS41O1xuICBzdHJva2UtbGluZWNhcDogcm91bmQ7XG4gIHN0cm9rZS1saW5lam9pbjogcm91bmQ7XG59XG5cbi5ub3RpZmljYXRpb25Eb3Qge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTJweDtcbiAgcmlnaHQ6IC0ycHg7XG4gIHdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogI0VGNDQ0NDtcbiAgYm9yZGVyOiAycHggc29saWQgI2ZmZmZmZjtcbiAgYW5pbWF0aW9uOiBwdWxzZS1kb3QgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgcHVsc2UtZG90IHtcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBvcGFjaXR5OiAxOyB9XG4gIDUwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4zKTsgb3BhY2l0eTogMC44OyB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0NzlweCkge1xuICAudHJpZ2dlciB7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICB9XG5cbiAgLmJvdHRvbVJpZ2h0IHtcbiAgICBib3R0b206IHZhcigtLXB1bHNlLXRyaWdnZXItYm90dG9tLCA3MnB4KTtcbiAgICByaWdodDogMTJweDtcbiAgfVxuXG4gIC5ib3R0b21MZWZ0IHtcbiAgICBib3R0b206IHZhcigtLXB1bHNlLXRyaWdnZXItYm90dG9tLCA3MnB4KTtcbiAgICBsZWZ0OiAxMnB4O1xuICB9XG5cbiAgLnRyaWdnZXJJY29uIHtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gIH1cblxuICAubm90aWZpY2F0aW9uRG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIHRvcDogLTFweDtcbiAgICByaWdodDogLTFweDtcbiAgfVxufVxuIl19 */";
3
+ var css_248z = ".TriggerButton-module_trigger__02CR-{align-items:center;border:none;border-radius:50%;box-shadow:0 2px 12px rgba(0,0,0,.15);cursor:pointer;display:flex;height:48px;justify-content:center;outline:none;padding:0;position:fixed;transition:transform .12s cubic-bezier(.22,1,.36,1),box-shadow .12s cubic-bezier(.22,1,.36,1);width:48px;z-index:9999}.TriggerButton-module_trigger__02CR-:hover{box-shadow:0 4px 20px rgba(0,0,0,.2);transform:scale(1.08)}.TriggerButton-module_trigger__02CR-:active{transform:scale(.95)}.TriggerButton-module_bottomRight__566sd{bottom:var(--pulse-offset-bottom,16px);right:var(--pulse-offset-right,16px)}.TriggerButton-module_bottomLeft__G7wbE{bottom:var(--pulse-offset-bottom,16px);left:var(--pulse-offset-left,16px)}.TriggerButton-module_triggerIcon__WdZYH{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;color:#fff;height:24px;width:24px}.TriggerButton-module_notificationDot__b1Thf{animation:TriggerButton-module_pulse-dot__TIqUH 2s ease-in-out infinite;background:#ef4444;border:2px solid #fff;border-radius:50%;height:10px;position:absolute;right:-2px;top:-2px;width:10px}@keyframes TriggerButton-module_pulse-dot__TIqUH{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.3)}}@media (max-width:479px){.TriggerButton-module_trigger__02CR-{height:36px;width:36px}.TriggerButton-module_bottomRight__566sd{bottom:var(--pulse-trigger-bottom,var(--pulse-offset-bottom,72px));right:var(--pulse-offset-right,12px)}.TriggerButton-module_bottomLeft__G7wbE{bottom:var(--pulse-trigger-bottom,var(--pulse-offset-bottom,72px));left:var(--pulse-offset-left,12px)}.TriggerButton-module_triggerIcon__WdZYH{height:18px;width:18px}.TriggerButton-module_notificationDot__b1Thf{height:8px;right:-1px;top:-1px;width:8px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyaWdnZXJCdXR0b24ubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FTRSxrQkFBbUIsQ0FIbkIsV0FBWSxDQURaLGlCQUFrQixDQU1sQixxQ0FBMEMsQ0FKMUMsY0FBZSxDQUNmLFlBQWEsQ0FKYixXQUFZLENBTVosc0JBQXVCLENBS3ZCLFlBQWEsQ0FEYixTQUFVLENBYlYsY0FBZSxDQVdmLDZGQUMyRCxDQVYzRCxVQUFXLENBRFgsWUFjRixDQUVBLDJDQUVFLG9DQUF5QyxDQUR6QyxxQkFFRixDQUVBLDRDQUNFLG9CQUNGLENBRUEseUNBQ0Usc0NBQXdDLENBQ3hDLG9DQUNGLENBRUEsd0NBQ0Usc0NBQXdDLENBQ3hDLGtDQUNGLENBRUEseUNBSUUsU0FBVSxDQUNWLG1CQUFvQixDQUNwQixnQkFBaUIsQ0FDakIsb0JBQXFCLENBQ3JCLHFCQUFzQixDQUx0QixVQUFjLENBRGQsV0FBWSxDQURaLFVBUUYsQ0FFQSw2Q0FTRSx1RUFBNEMsQ0FGNUMsa0JBQW1CLENBQ25CLHFCQUF5QixDQUZ6QixpQkFBa0IsQ0FEbEIsV0FBWSxDQUpaLGlCQUFrQixDQUVsQixVQUFXLENBRFgsUUFBUyxDQUVULFVBTUYsQ0FFQSxpREFDRSxNQUFnQyxTQUFVLENBQS9CLGtCQUFpQyxDQUM1QyxJQUE2QixVQUFZLENBQW5DLG9CQUFxQyxDQUM3QyxDQUVBLHlCQUNFLHFDQUVFLFdBQVksQ0FEWixVQUVGLENBRUEseUNBQ0Usa0VBQXFFLENBQ3JFLG9DQUNGLENBRUEsd0NBQ0Usa0VBQXFFLENBQ3JFLGtDQUNGLENBRUEseUNBRUUsV0FBWSxDQURaLFVBRUYsQ0FFQSw2Q0FFRSxVQUFXLENBRVgsVUFBVyxDQURYLFFBQVMsQ0FGVCxTQUlGLENBQ0YiLCJmaWxlIjoiVHJpZ2dlckJ1dHRvbi5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRyaWdnZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxMjBtcyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSksXG4gICAgICAgICAgICAgIGJveC1zaGFkb3cgMTIwbXMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpO1xuICBwYWRkaW5nOiAwO1xuICBvdXRsaW5lOiBub25lO1xufVxuXG4udHJpZ2dlcjpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wOCk7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4udHJpZ2dlcjphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG4uYm90dG9tUmlnaHQge1xuICBib3R0b206IHZhcigtLXB1bHNlLW9mZnNldC1ib3R0b20sIDE2cHgpO1xuICByaWdodDogdmFyKC0tcHVsc2Utb2Zmc2V0LXJpZ2h0LCAxNnB4KTtcbn1cblxuLmJvdHRvbUxlZnQge1xuICBib3R0b206IHZhcigtLXB1bHNlLW9mZnNldC1ib3R0b20sIDE2cHgpO1xuICBsZWZ0OiB2YXIoLS1wdWxzZS1vZmZzZXQtbGVmdCwgMTZweCk7XG59XG5cbi50cmlnZ2VySWNvbiB7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBmaWxsOiBub25lO1xuICBzdHJva2U6IGN1cnJlbnRDb2xvcjtcbiAgc3Ryb2tlLXdpZHRoOiAxLjU7XG4gIHN0cm9rZS1saW5lY2FwOiByb3VuZDtcbiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbn1cblxuLm5vdGlmaWNhdGlvbkRvdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMnB4O1xuICByaWdodDogLTJweDtcbiAgd2lkdGg6IDEwcHg7XG4gIGhlaWdodDogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiAjRUY0NDQ0O1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmZmZmO1xuICBhbmltYXRpb246IHB1bHNlLWRvdCAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZS1kb3Qge1xuICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IG9wYWNpdHk6IDE7IH1cbiAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjMpOyBvcGFjaXR5OiAwLjg7IH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ3OXB4KSB7XG4gIC50cmlnZ2VyIHtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gIH1cblxuICAuYm90dG9tUmlnaHQge1xuICAgIGJvdHRvbTogdmFyKC0tcHVsc2UtdHJpZ2dlci1ib3R0b20sIHZhcigtLXB1bHNlLW9mZnNldC1ib3R0b20sIDcycHgpKTtcbiAgICByaWdodDogdmFyKC0tcHVsc2Utb2Zmc2V0LXJpZ2h0LCAxMnB4KTtcbiAgfVxuXG4gIC5ib3R0b21MZWZ0IHtcbiAgICBib3R0b206IHZhcigtLXB1bHNlLXRyaWdnZXItYm90dG9tLCB2YXIoLS1wdWxzZS1vZmZzZXQtYm90dG9tLCA3MnB4KSk7XG4gICAgbGVmdDogdmFyKC0tcHVsc2Utb2Zmc2V0LWxlZnQsIDEycHgpO1xuICB9XG5cbiAgLnRyaWdnZXJJY29uIHtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gIH1cblxuICAubm90aWZpY2F0aW9uRG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIHRvcDogLTFweDtcbiAgICByaWdodDogLTFweDtcbiAgfVxufVxuIl19 */";
4
4
  var styles = {"trigger":"TriggerButton-module_trigger__02CR-","bottomRight":"TriggerButton-module_bottomRight__566sd","bottomLeft":"TriggerButton-module_bottomLeft__G7wbE","triggerIcon":"TriggerButton-module_triggerIcon__WdZYH","notificationDot":"TriggerButton-module_notificationDot__b1Thf"};
5
5
  styleInject(css_248z);
6
6
 
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { PulseWidget } from './PulseWidget';
2
- export type { PulseWidgetProps, FeedbackType, ThreadStatus, DiagnosticsSnapshot } from './types';
2
+ export type { PulseWidgetProps, PulseWidgetHandle, FeedbackType, ThreadStatus, DiagnosticsSnapshot } from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
package/dist/types.d.ts CHANGED
@@ -59,10 +59,15 @@ export interface DiagnosticsSnapshot {
59
59
  }>;
60
60
  }
61
61
  export interface PulseWidgetProps {
62
- projectId: string;
63
62
  apiKey: string;
64
63
  apiUrl?: string;
65
64
  position?: 'bottom-right' | 'bottom-left';
65
+ offset?: {
66
+ bottom?: number;
67
+ left?: number;
68
+ right?: number;
69
+ };
70
+ hideDefaultLauncher?: boolean;
66
71
  accentColor?: string;
67
72
  greeting?: string;
68
73
  placeholder?: string;
@@ -75,6 +80,16 @@ export interface PulseWidgetProps {
75
80
  onClose?: () => void;
76
81
  onSubmit?: (threadId: string) => void;
77
82
  }
83
+ export interface PulseWidgetHandle {
84
+ open: () => void;
85
+ close: () => void;
86
+ isOpen: () => boolean;
87
+ }
88
+ declare global {
89
+ interface Window {
90
+ Pulse?: PulseWidgetHandle;
91
+ }
92
+ }
78
93
  export declare const FEEDBACK_TYPES: {
79
94
  value: FeedbackType;
80
95
  emoji: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AAqEA;AACO,MAAM,cAAc,GAA2E;AACpG,IAAA,EAAE,KAAK,EAAE,KAAK,EAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAO,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,SAAS,EAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAG,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;AACtE,IAAA,EAAE,KAAK,EAAE,QAAQ,EAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAI,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,OAAO,EAAK,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAK,KAAK,EAAE,SAAS,EAAE;;;;;"}
1
+ {"version":3,"file":"types.mjs","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AAkFA;AACO,MAAM,cAAc,GAA2E;AACpG,IAAA,EAAE,KAAK,EAAE,KAAK,EAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAO,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,SAAS,EAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAG,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;AACtE,IAAA,EAAE,KAAK,EAAE,QAAQ,EAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAI,KAAK,EAAE,SAAS,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,OAAO,EAAK,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAK,KAAK,EAAE,SAAS,EAAE;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulse-feedback-widget",
3
- "version": "1.3.2",
3
+ "version": "2.0.0",
4
4
  "description": "Drop-in feedback widget for React apps. Collect bugs, features, questions, and praise from users.",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",