@thisispamela/widget 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.esm.js","sources":["../src/events.ts","../src/api.ts","../src/ui/styles.ts","../src/ui/icons.ts","../src/utils/phone.ts","../src/utils/styles.ts","../src/ui/FloatingButton.ts","../src/ui/InlineButton.ts","../src/ui/Modal.ts","../src/pamela.ts","../src/index.ts"],"sourcesContent":["/**\n * Simple event emitter for widget callbacks\n */\n\ntype Listener = (...args: unknown[]) => void;\n\nexport class EventEmitter {\n private listeners: Map<string, Listener[]> = new Map();\n\n on(event: string, callback: Listener): void {\n const list = this.listeners.get(event) ?? [];\n list.push(callback);\n this.listeners.set(event, list);\n }\n\n off(event: string, callback: Listener): void {\n const list = this.listeners.get(event);\n if (!list) return;\n const idx = list.indexOf(callback);\n if (idx !== -1) list.splice(idx, 1);\n if (list.length === 0) this.listeners.delete(event);\n }\n\n emit(event: string, ...args: unknown[]): void {\n const list = this.listeners.get(event);\n if (!list) return;\n list.forEach((fn) => {\n try {\n fn(...args);\n } catch (_) {\n // Swallow to avoid breaking other listeners\n }\n });\n }\n\n removeAllListeners(event?: string): void {\n if (event) {\n this.listeners.delete(event);\n } else {\n this.listeners.clear();\n }\n }\n}\n","/**\n * Lightweight fetch-based API client for the widget.\n * Imports shared types from @thisispamela/sdk for alignment.\n */\n\nimport type {\n PamelaCall,\n PamelaCallOptions,\n ApiCallResponse,\n ApiCallStatusResponse,\n TranscriptEntry,\n} from './types';\n\nexport class PamelaError extends Error {\n code?: string;\n errorCode?: number;\n statusCode?: number;\n details?: Record<string, unknown>;\n\n constructor(\n message: string,\n options?: {\n code?: string;\n errorCode?: number;\n statusCode?: number;\n details?: Record<string, unknown>;\n }\n ) {\n super(message);\n this.name = 'PamelaError';\n this.code = options?.code;\n this.errorCode = options?.errorCode;\n this.statusCode = options?.statusCode;\n this.details = options?.details;\n }\n}\n\nfunction mapResponseToCall(raw: ApiCallResponse): PamelaCall {\n return {\n id: raw.id,\n status: raw.status as PamelaCall['status'],\n to: '',\n task: '',\n createdAt: raw.created_at,\n };\n}\n\nfunction mapStatusToCall(raw: ApiCallStatusResponse): PamelaCall {\n const transcript: TranscriptEntry[] | undefined = raw.transcript?.map((t) => ({\n role: t.role as 'agent' | 'recipient',\n content: t.content,\n timestamp: t.timestamp ?? 0,\n }));\n\n return {\n id: raw.id,\n status: raw.status as PamelaCall['status'],\n to: raw.to,\n task: '',\n duration: raw.duration_seconds,\n transcript,\n summary: raw.summary,\n createdAt: raw.created_at,\n completedAt: raw.completed_at,\n };\n}\n\nexport interface ApiClientOptions {\n authToken: string;\n baseUrl?: string;\n}\n\nexport class PamelaApiClient {\n private authToken: string;\n private baseUrl: string;\n\n constructor(options: ApiClientOptions) {\n this.authToken = options.authToken;\n this.baseUrl = (options.baseUrl || 'https://api.thisispamela.com').replace(/\\/$/, '');\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: object\n ): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.authToken}`,\n };\n\n const response = await fetch(url, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n const data = await response.json().catch(() => ({}));\n\n if (!response.ok) {\n const d = data as { detail?: string | { message?: string }; message?: string };\n const message =\n d.detail != null\n ? typeof d.detail === 'string'\n ? d.detail\n : d.detail?.message ?? 'Request failed'\n : d.message ?? 'Request failed';\n const detail = (data as { detail?: { error_code?: string | number }; error_code?: string | number }).detail;\n const code = typeof detail === 'object' ? detail?.error_code : undefined;\n const errCode = (data as { detail?: { error_code?: number }; error_code?: number }).detail?.error_code\n ?? (data as { error_code?: number }).error_code;\n throw new PamelaError(message, {\n code: code != null ? String(code) : undefined,\n errorCode: typeof errCode === 'number' ? errCode : undefined,\n statusCode: response.status,\n });\n }\n\n return data as T;\n }\n\n async createCall(options: PamelaCallOptions): Promise<PamelaCall> {\n const body = {\n to: options.to,\n task: options.task,\n voice: options.voice ?? 'auto',\n agent_name: options.agentName,\n caller_name: options.callerName,\n max_duration_seconds: options.maxDuration,\n metadata: options.metadata,\n webhooks: options.webhooks,\n };\n const raw = await this.request<ApiCallResponse>('POST', '/api/b2b/v1/calls', body);\n const call = mapResponseToCall(raw);\n call.to = options.to;\n call.task = options.task;\n return call;\n }\n\n async getCall(callId: string): Promise<PamelaCall> {\n const raw = await this.request<ApiCallStatusResponse>('GET', `/api/b2b/v1/calls/${callId}`);\n return mapStatusToCall(raw);\n }\n\n async cancelCall(callId: string): Promise<void> {\n await this.request<{ success: boolean }>('POST', `/api/b2b/v1/calls/${callId}/cancel`);\n }\n\n /**\n * Poll call status until terminal state or timeout.\n */\n async pollCallStatus(\n callId: string,\n options: { intervalMs?: number; timeoutMs?: number } = {}\n ): Promise<PamelaCall> {\n const intervalMs = options.intervalMs ?? 2000;\n const timeoutMs = options.timeoutMs ?? 5 * 60 * 1000;\n const deadline = Date.now() + timeoutMs;\n\n const poll = async (): Promise<PamelaCall> => {\n const call = await this.getCall(callId);\n const terminal = ['completed', 'failed', 'cancelled'].includes(call.status);\n if (terminal) return call;\n if (Date.now() >= deadline) return call;\n await new Promise((r) => setTimeout(r, intervalMs));\n return poll();\n };\n\n return poll();\n }\n}\n","/**\n * Design tokens aligned with WEBSITE_DESIGN_SCHEMA.md (light + dark).\n * Plan aliases: --pamela-primary, --pamela-background, --pamela-border-radius for host overrides.\n */\n\nconst LIGHT_TOKENS = `\n:root, .pamela-widget-root {\n --pamela-accent: #F27A1A;\n --pamela-accent-2: #F06C4F;\n --pamela-accent-3: #F3A84C;\n --pamela-accent-gradient: linear-gradient(90deg, var(--pamela-accent), var(--pamela-accent-2));\n --pamela-primary: var(--pamela-accent);\n --pamela-bg: #ffffff;\n --pamela-background: var(--pamela-bg);\n --pamela-surface: rgba(255, 255, 255, 0.78);\n --pamela-surface-border: rgba(231, 171, 132, 0.24);\n --pamela-surface-strong: rgba(255, 255, 255, 0.88);\n --pamela-surface-liquid: linear-gradient(135deg, rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.38));\n --pamela-transcript-agent-bg: rgba(255, 255, 255, 0.2);\n --pamela-transcript-recipient-bg: rgba(250, 147, 28, 0.2);\n --pamela-text: #1C1917;\n --pamela-text-secondary: rgba(28, 25, 17, 0.78);\n --pamela-text-muted: rgba(28, 25, 17, 0.55);\n --pamela-shadow: 0 12px 26px rgba(28, 25, 17, 0.1);\n --pamela-shadow-hover: 0 24px 44px rgba(28, 25, 17, 0.18);\n --pamela-glow: 0 0 32px rgba(250, 147, 28, 0.2);\n --pamela-cta-bg: linear-gradient(120deg, rgba(255, 255, 255, 0.7), rgba(250, 147, 28, 0.32));\n --pamela-cta-border: 1px solid rgba(250, 147, 28, 0.4);\n --pamela-blur: 24px;\n --pamela-radius-sm: 0.5rem;\n --pamela-radius-md: 0.75rem;\n --pamela-radius-lg: 1rem;\n --pamela-radius-xl: 1.5rem;\n --pamela-border-radius: var(--pamela-radius-md);\n --pamela-focus-ring: 0 0 0 3px rgba(250, 147, 28, 0.28);\n --pamela-font: 'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n`;\n\nconst DARK_TOKENS = `\n.pamela-dark .pamela-widget-root,\n.pamela-widget-root.pamela-theme-dark,\n[data-pamela-theme=\"dark\"] .pamela-widget-root {\n --pamela-bg: #171513;\n --pamela-background: var(--pamela-bg);\n --pamela-surface: rgba(255, 255, 255, 0.08);\n --pamela-surface-border: rgba(255, 255, 255, 0.18);\n --pamela-surface-strong: rgba(255, 255, 255, 0.22);\n --pamela-surface-liquid: linear-gradient(150deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.05));\n --pamela-transcript-agent-bg: rgba(255, 255, 255, 0.12);\n --pamela-transcript-recipient-bg: rgba(250, 147, 28, 0.18);\n --pamela-text: rgba(255, 255, 255, 0.95);\n --pamela-text-secondary: rgba(255, 255, 255, 0.72);\n --pamela-text-muted: rgba(255, 255, 255, 0.5);\n --pamela-shadow: 0 16px 32px rgba(0, 0, 0, 0.5);\n --pamela-shadow-hover: 0 26px 44px rgba(0, 0, 0, 0.7);\n --pamela-glow: 0 0 30px rgba(250, 147, 28, 0.24);\n --pamela-cta-bg: linear-gradient(120deg, rgba(255, 255, 255, 0.22), rgba(250, 147, 28, 0.34));\n --pamela-cta-border: 1px solid rgba(250, 147, 28, 0.5);\n --pamela-focus-ring: 0 0 0 3px rgba(250, 147, 28, 0.35);\n}\n`;\n\nconst WIDGET_BASE = `\n.pamela-widget-root {\n font-family: var(--pamela-font);\n box-sizing: border-box;\n}\n.pamela-widget-root *,\n.pamela-widget-root *::before,\n.pamela-widget-root *::after {\n box-sizing: border-box;\n}\n@keyframes pamela-pulse {\n 0%, 100% { transform: scale(1); opacity: 0.9; }\n 50% { transform: scale(1.05); opacity: 1; }\n}\n@keyframes pamela-pulse-active {\n 0%, 100% { transform: scale(1); }\n 50% { transform: scale(1.12); }\n}\n`;\n\nlet styleEl: HTMLStyleElement | null = null;\n\nexport function injectStyles(theme: 'light' | 'dark'): void {\n if (typeof document === 'undefined') return;\n if (styleEl && document.contains(styleEl)) return;\n\n styleEl = document.createElement('style');\n styleEl.setAttribute('data-pamela-widget', 'tokens');\n styleEl.textContent = LIGHT_TOKENS + DARK_TOKENS + WIDGET_BASE;\n (document.head || document.documentElement).appendChild(styleEl);\n}\n\nexport function getThemeClass(theme: 'light' | 'dark'): string {\n return theme === 'dark' ? 'pamela-theme-dark' : '';\n}\n\n/** Style overrides from PamelaStyleOverrides (init options.styles) */\nexport type StyleOverrides = import('../types').PamelaStyleOverrides;\n\n/**\n * Apply custom CSS variable overrides to widget roots.\n * Call after injectStyles; host can pass options.styles from init.\n */\nexport function applyStyleOverrides(overrides: Partial<StyleOverrides>): void {\n if (typeof document === 'undefined' || !overrides || typeof overrides !== 'object') return;\n const roots = document.querySelectorAll('.pamela-widget-root');\n roots.forEach((root) => {\n if (!(root instanceof HTMLElement)) return;\n const r = root as HTMLElement;\n if (overrides['--pamela-accent']) r.style.setProperty('--pamela-accent', overrides['--pamela-accent']);\n if (overrides['--pamela-accent-2']) r.style.setProperty('--pamela-accent-2', overrides['--pamela-accent-2']);\n if (overrides['--pamela-radius']) {\n r.style.setProperty('--pamela-radius-sm', overrides['--pamela-radius']);\n r.style.setProperty('--pamela-radius-md', overrides['--pamela-radius']);\n r.style.setProperty('--pamela-radius-lg', overrides['--pamela-radius']);\n r.style.setProperty('--pamela-border-radius', overrides['--pamela-radius']);\n }\n if (overrides['--pamela-font']) r.style.setProperty('--pamela-font', overrides['--pamela-font']);\n if (overrides['--pamela-primary']) r.style.setProperty('--pamela-primary', overrides['--pamela-primary']);\n if (overrides['--pamela-background']) {\n r.style.setProperty('--pamela-bg', overrides['--pamela-background']);\n r.style.setProperty('--pamela-background', overrides['--pamela-background']);\n }\n if (overrides['--pamela-text']) r.style.setProperty('--pamela-text', overrides['--pamela-text']);\n if (overrides['--pamela-border-radius']) r.style.setProperty('--pamela-border-radius', overrides['--pamela-border-radius']);\n });\n}\n","/**\n * Inline SVG icons for the widget (no external assets)\n */\n\nexport const ICON_LOGO =\n '<svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"16\" cy=\"16\" r=\"14\" fill=\"url(#pamela-g)\" stroke=\"rgba(255,255,255,0.4)\" stroke-width=\"1.5\"/><path d=\"M12 11v10l8-5-8-5z\" fill=\"white\"/><defs><linearGradient id=\"pamela-g\" x1=\"8\" y1=\"8\" x2=\"24\" y2=\"24\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#F27A1A\"/><stop offset=\"1\" stop-color=\"#F06C4F\"/></linearGradient></defs></svg>';\n\nexport const ICON_PHONE =\n '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\"/></svg>';\n\nexport const ICON_CLOSE =\n '<svg 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>';\n\nexport const ICON_CALL =\n '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\"/></svg>';\n","/**\n * Phone helpers for the widget (lightweight, no external deps).\n */\nexport function normalizePhone(value: string): string {\n const digits = value.replace(/[^\\d+]/g, \"\");\n if (!digits) return \"\";\n if (digits.startsWith(\"+\")) return digits;\n if (digits.length === 10) return `+1${digits}`;\n if (digits.length === 11 && digits.startsWith(\"1\")) return `+${digits}`;\n return `+${digits}`;\n}\n\nexport function isValidE164(value: string): boolean {\n return /^\\+[1-9]\\d{6,14}$/.test(value);\n}\n","type PanelStyleOptions = {\n width?: string;\n minWidth?: string;\n maxWidth?: string;\n padding?: string;\n borderRadiusVar?: string;\n gap?: string;\n};\n\ntype InputStyleOptions = {\n padding?: string;\n fontSize?: string;\n};\n\ntype CtaStyleOptions = {\n padding?: string;\n};\n\nexport function buildPanelStyles(options: PanelStyleOptions = {}): string {\n const {\n width,\n minWidth,\n maxWidth,\n padding = \"1rem\",\n borderRadiusVar = \"var(--pamela-radius-lg)\",\n gap = \"0.75rem\",\n } = options;\n\n const base = [\n \"background:var(--pamela-surface-liquid);border:1px solid var(--pamela-surface-border);\",\n `border-radius:${borderRadiusVar};box-shadow:var(--pamela-shadow);padding:${padding};`,\n \"backdrop-filter:blur(var(--pamela-blur));-webkit-backdrop-filter:blur(var(--pamela-blur));\",\n `display:flex;flex-direction:column;gap:${gap};`,\n ];\n\n if (width) base.unshift(`width:${width};`);\n if (minWidth) base.unshift(`min-width:${minWidth};`);\n if (maxWidth) base.unshift(`max-width:${maxWidth};`);\n\n return base.join(\" \");\n}\n\nexport function buildInputStyles(options: InputStyleOptions = {}): string {\n const { padding = \"0.5rem 0.75rem\", fontSize = \"0.875rem\" } = options;\n return [\n `width:100%;padding:${padding};border-radius:var(--pamela-radius-md);`,\n \"border:1px solid var(--pamela-surface-border);background:var(--pamela-surface-strong);\",\n `color:var(--pamela-text);font-family:var(--pamela-font);font-size:${fontSize};`,\n \"transition:border-color 0.15s, box-shadow 0.15s;\",\n ].join(\" \");\n}\n\nexport function buildCtaStyles(options: CtaStyleOptions = {}): string {\n const { padding = \"0.6rem 1rem\" } = options;\n return [\n `width:100%;padding:${padding};border-radius:var(--pamela-radius-md);border:var(--pamela-cta-border);`,\n \"background:var(--pamela-cta-bg);color:var(--pamela-text);font-weight:600;font-family:var(--pamela-font);\",\n \"cursor:pointer;box-shadow:var(--pamela-shadow);transition:opacity 0.2s, transform 0.15s;\",\n ].join(\" \");\n}\n","/**\n * Floating call button that expands to a mini form (phone + task + Call Now)\n */\n\nimport { injectStyles, getThemeClass } from './styles';\nimport { ICON_LOGO, ICON_CALL } from './icons';\nimport type { PamelaCall } from '../types';\nimport { normalizePhone, isValidE164 } from '../utils/phone';\nimport { buildCtaStyles, buildInputStyles, buildPanelStyles } from '../utils/styles';\n\nconst ROOT_CLASS = 'pamela-widget-root';\nconst WRAPPER_CLASS = 'pamela-float-wrapper';\nconst BUTTON_CLASS = 'pamela-float-button';\nconst PANEL_CLASS = 'pamela-float-panel';\nconst INPUT_CLASS = 'pamela-float-input';\nconst CTA_CLASS = 'pamela-float-cta';\n\nexport interface FloatingButtonOptions {\n position: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n theme: 'light' | 'dark';\n defaults?: { voice?: string; agentName?: string; callerName?: string };\n onCreateCall: (to: string, task: string) => void;\n onExpand?: () => void;\n onCollapse?: () => void;\n}\n\nexport class FloatingButton {\n private options: FloatingButtonOptions;\n private root: HTMLElement | null = null;\n private wrapper: HTMLElement | null = null;\n private panel: HTMLElement | null = null;\n private expanded = false;\n private currentCall: PamelaCall | null = null;\n\n constructor(options: FloatingButtonOptions) {\n this.options = options;\n }\n\n render(container: HTMLElement): HTMLElement {\n injectStyles(this.options.theme);\n const themeClass = getThemeClass(this.options.theme);\n\n const root = document.createElement('div');\n root.className = `${ROOT_CLASS} ${themeClass}`.trim();\n root.setAttribute('data-pamela-float', 'true');\n\n const positionClass = `pamela-float-${this.options.position.replace('-', '_')}`;\n const wrapper = document.createElement('div');\n wrapper.className = `${WRAPPER_CLASS} ${positionClass}`;\n wrapper.style.cssText = this.getWrapperStyles();\n\n const button = document.createElement('button');\n button.type = 'button';\n button.className = BUTTON_CLASS;\n button.setAttribute('aria-label', 'Open Pamela call');\n button.innerHTML = ICON_LOGO;\n button.style.cssText = this.getButtonStyles();\n\n const panel = document.createElement('div');\n panel.className = PANEL_CLASS;\n panel.setAttribute('hidden', 'true');\n panel.style.cssText = buildPanelStyles({\n minWidth: '280px',\n maxWidth: '320px',\n padding: '1rem',\n borderRadiusVar: 'var(--pamela-radius-lg)',\n });\n\n const phoneInput = document.createElement('input');\n phoneInput.type = 'tel';\n phoneInput.placeholder = 'Phone number';\n phoneInput.className = INPUT_CLASS;\n phoneInput.setAttribute('aria-label', 'Phone number');\n phoneInput.style.cssText = buildInputStyles();\n\n const taskInput = document.createElement('textarea');\n taskInput.placeholder = 'What should Pamela do?';\n taskInput.rows = 2;\n taskInput.className = INPUT_CLASS;\n taskInput.setAttribute('aria-label', 'Task');\n taskInput.style.cssText = buildInputStyles();\n\n const statusEl = document.createElement('div');\n statusEl.setAttribute('aria-live', 'polite');\n statusEl.style.cssText =\n 'font-size: 0.75rem; color: var(--pamela-text-muted); margin-top: 0.25rem; min-height: 1rem;';\n\n const cta = document.createElement('button');\n cta.type = 'button';\n cta.className = CTA_CLASS;\n cta.style.cssText = buildCtaStyles();\n const ctaSpan = document.createElement('span');\n ctaSpan.style.cssText = 'display:inline-flex;align-items:center;gap:0.35rem;';\n ctaSpan.innerHTML = ICON_CALL;\n ctaSpan.appendChild(document.createTextNode(' Call Now'));\n cta.appendChild(ctaSpan);\n\n panel.appendChild(phoneInput);\n panel.appendChild(taskInput);\n panel.appendChild(statusEl);\n panel.appendChild(cta);\n\n button.addEventListener('click', () => this.toggle());\n cta.addEventListener('click', () => this.handleSubmit(phoneInput, taskInput, statusEl));\n\n wrapper.appendChild(button);\n wrapper.appendChild(panel);\n root.appendChild(wrapper);\n container.appendChild(root);\n\n this.root = root;\n this.wrapper = wrapper;\n this.panel = panel;\n return root;\n }\n\n private getWrapperStyles(): string {\n const base = 'position:fixed;z-index:999999;display:flex;flex-direction:column;align-items:flex-end;gap:0.5rem;';\n const inset = '24px';\n const pos = this.options.position;\n if (pos === 'bottom-right') return `${base} bottom:${inset};right:${inset};`;\n if (pos === 'bottom-left') return `${base} bottom:${inset};left:${inset};`;\n if (pos === 'top-right') return `${base} top:${inset};right:${inset};`;\n return `${base} top:${inset};left:${inset};`;\n }\n\n private getButtonStyles(): string {\n return [\n 'width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;',\n 'background:var(--pamela-accent-gradient);box-shadow:var(--pamela-shadow), var(--pamela-glow);',\n 'display:flex;align-items:center;justify-content:center;transition:transform 0.2s, box-shadow 0.2s;',\n ].join(' ');\n }\n\n\n private toggle(): void {\n this.expanded = !this.expanded;\n if (this.panel) {\n this.panel.hidden = !this.expanded;\n }\n if (this.expanded) this.options.onExpand?.();\n else this.options.onCollapse?.();\n }\n\n private handleSubmit(\n phoneInput: HTMLInputElement,\n taskInput: HTMLTextAreaElement,\n statusEl: HTMLElement\n ): void {\n const to = normalizePhone(phoneInput.value.trim());\n const task = taskInput.value.trim();\n if (!to || !task) {\n statusEl.textContent = 'Please enter phone number and task.';\n return;\n }\n if (!isValidE164(to)) {\n statusEl.textContent = 'Please use a valid phone number (e.g. +1 555 123 4567).';\n return;\n }\n statusEl.textContent = '';\n this.options.onCreateCall(to, task);\n }\n\n setCallStatus(call: PamelaCall | null): void {\n this.currentCall = call;\n if (!this.panel) return;\n const statusEl = this.panel.querySelector('[aria-live=\"polite\"]') as HTMLElement | null;\n if (!statusEl) return;\n if (!call) {\n statusEl.textContent = '';\n return;\n }\n if (call.status === 'completed') {\n statusEl.textContent = 'Call completed.' + (call.summary ? ' ' + call.summary.slice(0, 80) + '…' : '');\n } else if (call.status === 'failed' || call.status === 'cancelled') {\n statusEl.textContent = `Call ${call.status}.`;\n } else {\n statusEl.textContent = `Call ${call.status}…`;\n }\n }\n\n destroy(): void {\n this.root?.remove();\n this.root = null;\n this.wrapper = null;\n this.panel = null;\n }\n}\n","/**\n * Inline button mode: attach call buttons to elements with data-pamela-call\n * Auto-initializes on DOM ready and watches for dynamically added elements.\n */\n\nimport { normalizePhone } from '../utils/phone';\n\nconst DATA_CALL = 'data-pamela-call';\nconst DATA_TO = 'data-to';\nconst DATA_TASK = 'data-task';\nconst DATA_VOICE = 'data-voice';\nconst DATA_LABEL = 'data-label';\nconst ATTR_INIT = 'data-pamela-inline-init';\n\nconst DEFAULT_LABEL = 'Call with Pamela';\n\nexport interface InlineButtonOptions {\n theme: 'light' | 'dark';\n onCallClick: (params: { to: string; task: string; voice?: string }) => void;\n}\n\nfunction getStyles(): string {\n return [\n '.pamela-inline-btn{display:inline-flex;align-items:center;gap:0.35rem;padding:0.4rem 0.75rem;',\n 'border-radius:var(--pamela-radius-md, 0.75rem);border:1px solid var(--pamela-surface-border, rgba(231,171,132,0.24));',\n 'background:var(--pamela-cta-bg, linear-gradient(120deg, rgba(255,255,255,0.7), rgba(250,147,28,0.32)));',\n 'color:var(--pamela-text, #1C1917);font-family:var(--pamela-font);font-size:0.875rem;font-weight:600;',\n 'cursor:pointer;box-shadow:0 2px 8px rgba(28,25,17,0.08);transition:opacity 0.2s, transform 0.15s;}',\n '.pamela-inline-btn:hover{opacity:0.95;transform:translateY(-1px);}',\n '.pamela-inline-btn:disabled{opacity:0.6;cursor:not-allowed;transform:none;}',\n ].join('');\n}\n\nfunction injectInlineStyles(): void {\n if (typeof document === 'undefined') return;\n const id = 'pamela-inline-styles';\n if (document.getElementById(id)) return;\n const el = document.createElement('style');\n el.id = id;\n el.setAttribute('data-pamela-widget', 'inline');\n el.textContent = getStyles();\n (document.head || document.documentElement).appendChild(el);\n}\n\nexport class InlineButton {\n private options: InlineButtonOptions;\n private observer: MutationObserver | null = null;\n private styleInjected = false;\n\n constructor(options: InlineButtonOptions) {\n this.options = options;\n }\n\n /**\n * Scan the document for [data-pamela-call] and attach buttons.\n */\n attach(root: Document | HTMLElement = document): void {\n if (!this.styleInjected) {\n injectInlineStyles();\n this.styleInjected = true;\n }\n const scope = root instanceof Document ? root.body : root;\n if (!scope) return;\n const elements = scope.querySelectorAll(`[${DATA_CALL}]:not([${ATTR_INIT}])`);\n elements.forEach((el) => this.attachToElement(el as HTMLElement));\n }\n\n private attachToElement(el: HTMLElement): void {\n if (el.getAttribute(ATTR_INIT) === 'true') return;\n const to = (el.getAttribute(DATA_TO) ?? '').trim();\n const task = (el.getAttribute(DATA_TASK) ?? '').trim();\n const voice = (el.getAttribute(DATA_VOICE) ?? '').trim() || undefined;\n const label = el.getAttribute(DATA_LABEL) ?? DEFAULT_LABEL;\n if (!to || !task) return;\n\n el.setAttribute(ATTR_INIT, 'true');\n\n const button = document.createElement('button');\n button.type = 'button';\n button.className = 'pamela-inline-btn';\n button.textContent = label;\n button.setAttribute('aria-label', `Call ${to} with Pamela: ${task}`);\n\n button.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const resolvedTo = normalizePhone(to);\n this.options.onCallClick({ to: resolvedTo, task, voice });\n });\n\n if (el.tagName === 'BUTTON' || el.tagName === 'A') {\n el.replaceWith(button);\n } else {\n el.appendChild(button);\n }\n }\n\n /**\n * Start watching for dynamically added [data-pamela-call] elements.\n */\n observe(root: Document | HTMLElement = document): void {\n const scope = root instanceof Document ? root.body : root;\n if (!scope || this.observer) return;\n\n this.observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n if (m.type !== 'childList') continue;\n for (const node of m.addedNodes) {\n if (node instanceof HTMLElement) {\n if (node.hasAttribute?.(DATA_CALL)) this.attachToElement(node);\n node.querySelectorAll?.(\n `[${DATA_CALL}]:not([${ATTR_INIT}])`\n ).forEach((el) => this.attachToElement(el as HTMLElement));\n }\n }\n }\n });\n\n this.observer.observe(scope, { childList: true, subtree: true });\n }\n\n destroy(): void {\n this.observer?.disconnect();\n this.observer = null;\n }\n}\n","/**\n * Full-featured call modal with status + transcript display.\n */\n\nimport { injectStyles, getThemeClass } from './styles';\nimport { ICON_CLOSE, ICON_CALL } from './icons';\nimport type { PamelaCall, TranscriptEntry } from '../types';\nimport { normalizePhone, isValidE164 } from '../utils/phone';\nimport { buildCtaStyles, buildInputStyles, buildPanelStyles } from '../utils/styles';\n\nconst ROOT_CLASS = 'pamela-widget-root';\n\nexport interface ModalOptions {\n theme: 'light' | 'dark';\n defaults?: { voice?: string; agentName?: string; callerName?: string };\n onCreateCall: (to: string, task: string, voice?: string) => void;\n onClose?: () => void;\n}\n\nexport class Modal {\n private options: ModalOptions;\n private root: HTMLElement | null = null;\n private overlay: HTMLElement | null = null;\n private panel: HTMLElement | null = null;\n private orbEl: HTMLElement | null = null;\n private statusEl: HTMLElement | null = null;\n private transcriptEl: HTMLElement | null = null;\n private summaryEl: HTMLElement | null = null;\n private expanded = false;\n private boundKeydown: ((e: KeyboardEvent) => void) | null = null;\n\n constructor(options: ModalOptions) {\n this.options = options;\n }\n\n render(container: HTMLElement): HTMLElement {\n injectStyles(this.options.theme);\n const themeClass = getThemeClass(this.options.theme);\n\n const root = document.createElement('div');\n root.className = `${ROOT_CLASS} ${themeClass}`.trim();\n root.setAttribute('data-pamela-modal', 'true');\n\n const overlay = document.createElement('div');\n overlay.style.cssText = this.getOverlayStyles();\n overlay.setAttribute('hidden', 'true');\n\n const panel = document.createElement('div');\n panel.style.cssText = buildPanelStyles({\n width: 'min(520px, 95vw)',\n padding: '1.25rem',\n borderRadiusVar: 'var(--pamela-radius-xl)',\n });\n\n // VoiceOrb for status visualization\n const orbWrapper = document.createElement('div');\n orbWrapper.style.cssText = 'display:flex;justify-content:center;margin-bottom:0.75rem;';\n const orb = document.createElement('div');\n orb.className = 'pamela-modal-orb';\n orb.style.cssText = this.getOrbStyles();\n orb.setAttribute('hidden', 'true');\n orbWrapper.appendChild(orb);\n\n const header = document.createElement('div');\n header.style.cssText = 'display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem;';\n const title = document.createElement('div');\n title.textContent = 'Call with Pamela';\n title.style.cssText = 'font-weight:600;color:var(--pamela-text);';\n const closeBtn = document.createElement('button');\n closeBtn.type = 'button';\n closeBtn.setAttribute('aria-label', 'Close');\n closeBtn.style.cssText = this.getCloseStyles();\n closeBtn.innerHTML = ICON_CLOSE;\n closeBtn.addEventListener('click', () => this.close());\n header.appendChild(title);\n header.appendChild(closeBtn);\n\n const phoneInput = document.createElement('input');\n phoneInput.type = 'tel';\n phoneInput.placeholder = 'Phone number';\n phoneInput.style.cssText = buildInputStyles({\n padding: '0.6rem 0.75rem',\n fontSize: '0.9rem',\n });\n phoneInput.setAttribute('aria-label', 'Phone number');\n\n const taskInput = document.createElement('textarea');\n taskInput.placeholder = 'What should Pamela do?';\n taskInput.rows = 3;\n taskInput.style.cssText = buildInputStyles({\n padding: '0.6rem 0.75rem',\n fontSize: '0.9rem',\n });\n taskInput.setAttribute('aria-label', 'Task');\n\n const voiceSelect = document.createElement('select');\n voiceSelect.style.cssText = this.getSelectStyles();\n voiceSelect.setAttribute('aria-label', 'Voice');\n ['auto', 'female', 'male'].forEach((v) => {\n const opt = document.createElement('option');\n opt.value = v;\n opt.textContent = `Voice: ${v}`;\n if (this.options.defaults?.voice && this.options.defaults.voice === v) {\n opt.selected = true;\n }\n voiceSelect.appendChild(opt);\n });\n\n const status = document.createElement('div');\n status.setAttribute('aria-live', 'polite');\n status.style.cssText = 'font-size:0.8rem;color:var(--pamela-text-muted);min-height:1rem;';\n\n const cta = document.createElement('button');\n cta.type = 'button';\n cta.style.cssText = buildCtaStyles({ padding: '0.65rem 1rem' });\n const ctaSpan = document.createElement('span');\n ctaSpan.style.cssText = 'display:inline-flex;align-items:center;gap:0.35rem;';\n ctaSpan.innerHTML = ICON_CALL;\n ctaSpan.appendChild(document.createTextNode(' Call Now'));\n cta.appendChild(ctaSpan);\n cta.addEventListener('click', () => this.handleSubmit(phoneInput, taskInput, voiceSelect, status));\n\n const transcriptWrapper = document.createElement('div');\n transcriptWrapper.style.cssText = this.getTranscriptWrapperStyles();\n const transcriptTitle = document.createElement('div');\n transcriptTitle.textContent = 'Transcript';\n transcriptTitle.style.cssText = 'font-size:0.8rem;color:var(--pamela-text-secondary);margin-bottom:0.25rem;';\n const transcript = document.createElement('div');\n transcript.style.cssText = this.getTranscriptStyles();\n transcriptWrapper.appendChild(transcriptTitle);\n transcriptWrapper.appendChild(transcript);\n\n const summary = document.createElement('div');\n summary.style.cssText = 'font-size:0.85rem;color:var(--pamela-text);margin-top:0.5rem;';\n\n panel.appendChild(orbWrapper);\n panel.appendChild(header);\n panel.appendChild(phoneInput);\n panel.appendChild(taskInput);\n panel.appendChild(voiceSelect);\n panel.appendChild(status);\n panel.appendChild(cta);\n panel.appendChild(transcriptWrapper);\n panel.appendChild(summary);\n\n overlay.appendChild(panel);\n root.appendChild(overlay);\n container.appendChild(root);\n\n overlay.addEventListener('click', (e) => {\n if (e.target === overlay) this.close();\n });\n this.boundKeydown = (e: KeyboardEvent) => {\n if (this.expanded && e.key === 'Escape') this.close();\n };\n document.addEventListener('keydown', this.boundKeydown);\n\n this.root = root;\n this.overlay = overlay;\n this.panel = panel;\n this.orbEl = orb;\n this.statusEl = status;\n this.transcriptEl = transcript;\n this.summaryEl = summary;\n return root;\n }\n\n open(): void {\n if (!this.overlay) return;\n this.overlay.removeAttribute('hidden');\n this.expanded = true;\n }\n\n close(): void {\n if (!this.overlay) return;\n this.overlay.setAttribute('hidden', 'true');\n this.expanded = false;\n this.options.onClose?.();\n }\n\n setCallStatus(call: PamelaCall | null): void {\n if (!this.statusEl) return;\n if (!call) {\n this.statusEl.textContent = '';\n if (this.orbEl) this.orbEl.setAttribute('hidden', 'true');\n if (this.transcriptEl) this.transcriptEl.innerHTML = '';\n if (this.summaryEl) this.summaryEl.textContent = '';\n return;\n }\n // Show orb during active call states\n const isActive = ['queued', 'ringing', 'in_progress'].includes(call.status);\n if (this.orbEl) {\n if (isActive) {\n this.orbEl.removeAttribute('hidden');\n this.orbEl.style.animation = call.status === 'in_progress' ? 'pamela-pulse-active 1s ease-in-out infinite' : 'pamela-pulse 2s ease-in-out infinite';\n } else {\n this.orbEl.setAttribute('hidden', 'true');\n }\n }\n if (call.status === 'completed') {\n this.statusEl.textContent = 'Call completed.';\n } else if (call.status === 'failed' || call.status === 'cancelled') {\n this.statusEl.textContent = `Call ${call.status}.`;\n } else {\n this.statusEl.textContent = `Call ${call.status}...`;\n }\n if (this.transcriptEl && call.transcript) {\n this.transcriptEl.innerHTML = '';\n call.transcript.forEach((entry) => {\n this.transcriptEl?.appendChild(this.renderTranscriptEntry(entry));\n });\n }\n if (this.summaryEl && call.summary) {\n this.summaryEl.textContent = `Summary: ${call.summary}`;\n }\n }\n\n destroy(): void {\n if (this.boundKeydown) {\n document.removeEventListener('keydown', this.boundKeydown);\n this.boundKeydown = null;\n }\n this.root?.remove();\n this.root = null;\n this.overlay = null;\n this.panel = null;\n this.orbEl = null;\n this.statusEl = null;\n this.transcriptEl = null;\n this.summaryEl = null;\n }\n\n private renderTranscriptEntry(entry: TranscriptEntry): HTMLElement {\n const bubble = document.createElement('div');\n bubble.style.cssText = this.getTranscriptBubbleStyles(entry.role);\n bubble.textContent = entry.content;\n return bubble;\n }\n\n private handleSubmit(\n phoneInput: HTMLInputElement,\n taskInput: HTMLTextAreaElement,\n voiceSelect: HTMLSelectElement,\n statusEl: HTMLElement\n ): void {\n const to = normalizePhone(phoneInput.value.trim());\n const task = taskInput.value.trim();\n const voice = voiceSelect.value || undefined;\n if (!to || !task) {\n statusEl.textContent = 'Please enter phone number and task.';\n return;\n }\n if (!isValidE164(to)) {\n statusEl.textContent = 'Please use a valid phone number (e.g. +1 555 123 4567).';\n return;\n }\n statusEl.textContent = '';\n this.options.onCreateCall(to, task, voice);\n }\n\n private getOverlayStyles(): string {\n return [\n 'position:fixed;inset:0;z-index:999998;background:rgba(0,0,0,0.4);',\n 'display:flex;align-items:center;justify-content:center;padding:1.5rem;',\n ].join(' ');\n }\n\n private getSelectStyles(): string {\n return [\n 'width:100%;padding:0.5rem 0.75rem;border-radius:var(--pamela-radius-md);',\n 'border:1px solid var(--pamela-surface-border);background:var(--pamela-surface-strong);',\n 'color:var(--pamela-text);font-family:var(--pamela-font);font-size:0.85rem;',\n ].join(' ');\n }\n\n private getCloseStyles(): string {\n return [\n 'width:32px;height:32px;border-radius:50%;border:1px solid var(--pamela-surface-border);',\n 'background:var(--pamela-surface-strong);color:var(--pamela-text);cursor:pointer;',\n 'display:flex;align-items:center;justify-content:center;',\n ].join(' ');\n }\n\n private getTranscriptWrapperStyles(): string {\n return [\n 'margin-top:0.5rem;padding:0.75rem;border-radius:var(--pamela-radius-md);',\n 'border:1px solid var(--pamela-surface-border);background:var(--pamela-surface);',\n ].join(' ');\n }\n\n private getTranscriptStyles(): string {\n return 'display:flex;flex-direction:column;gap:0.5rem;max-height:180px;overflow:auto;';\n }\n\n private getTranscriptBubbleStyles(role: 'agent' | 'recipient'): string {\n const base = [\n 'padding:0.5rem 0.75rem;border-radius:var(--pamela-radius-md);font-size:0.85rem;',\n 'color:var(--pamela-text);',\n ].join(' ');\n if (role === 'agent') {\n return base + ' background:var(--pamela-transcript-agent-bg);';\n }\n return base + ' background:var(--pamela-transcript-recipient-bg);';\n }\n\n private getOrbStyles(): string {\n return [\n 'width:64px;height:64px;border-radius:50%;',\n 'background:var(--pamela-accent-gradient);',\n 'box-shadow:0 0 40px rgba(250,147,28,0.4), 0 0 60px rgba(253,139,116,0.3);',\n 'animation:pamela-pulse 2s ease-in-out infinite;',\n ].join(' ');\n }\n}\n","/**\n * Main Pamela widget class: init, call, events, UI modes\n */\n\nimport { EventEmitter } from './events';\nimport { PamelaApiClient, PamelaError } from './api';\nimport { FloatingButton } from './ui/FloatingButton';\nimport { InlineButton } from './ui/InlineButton';\nimport { Modal } from './ui/Modal';\nimport { injectStyles, getThemeClass, applyStyleOverrides } from './ui/styles';\nimport type {\n PamelaInitOptions,\n PamelaCallOptions,\n PamelaCall,\n} from './types';\n\nfunction detectTheme(): 'light' | 'dark' {\n if (typeof document === 'undefined') return 'light';\n const explicit = document.documentElement.getAttribute('data-pamela-theme');\n if (explicit === 'light' || explicit === 'dark') return explicit;\n const hasDark =\n document.documentElement.classList.contains('dark') ||\n document.body?.classList.contains('dark') ||\n document.body?.classList.contains('dark-mode');\n if (hasDark) return 'dark';\n if (window.matchMedia?.('(prefers-color-scheme: dark)').matches) return 'dark';\n return 'light';\n}\n\nexport class Pamela {\n private static instance: Pamela | null = null;\n\n private api: PamelaApiClient | null = null;\n private options: PamelaInitOptions | null = null;\n private events = new EventEmitter();\n private floatingButton: FloatingButton | null = null;\n private inlineButton: InlineButton | null = null;\n private modal: Modal | null = null;\n private container: HTMLElement | null = null;\n private theme: 'light' | 'dark' = 'light';\n\n static init(options: PamelaInitOptions): Pamela {\n if (Pamela.instance) {\n Pamela.instance.destroy();\n }\n const instance = new Pamela();\n instance.init(options);\n Pamela.instance = instance;\n return instance;\n }\n\n private init(options: PamelaInitOptions): void {\n const authToken = options.accessToken || options.apiKey;\n if (!authToken) {\n throw new PamelaError('apiKey or accessToken is required');\n }\n this.options = options;\n this.theme = options.theme === 'auto' ? detectTheme() : options.theme ?? 'light';\n this.api = new PamelaApiClient({\n authToken,\n baseUrl: options.baseUrl,\n });\n\n injectStyles(this.theme);\n this.container = document.body;\n\n if (options.mode === 'floating' || (!options.mode && authToken)) {\n this.floatingButton = new FloatingButton({\n position: options.position ?? 'bottom-right',\n theme: this.theme,\n defaults: options.defaults,\n onCreateCall: (to, task) => this.handleCreateCall(to, task),\n onExpand: () => this.events.emit('modal:open'),\n onCollapse: () => this.events.emit('modal:close'),\n });\n this.floatingButton.render(this.container);\n }\n\n const wantsModal = options.mode === 'modal' || options.mode === 'inline';\n if (wantsModal) {\n this.modal = new Modal({\n theme: this.theme,\n defaults: options.defaults,\n onCreateCall: (to, task, voice) => this.handleCreateCall(to, task, voice),\n onClose: () => this.events.emit('modal:close'),\n });\n this.modal.render(this.container);\n }\n\n if (options.styles && Object.keys(options.styles).length > 0) {\n applyStyleOverrides(options.styles);\n }\n\n if (options.mode === 'inline') {\n this.inlineButton = new InlineButton({\n theme: this.theme,\n onCallClick: (params) => {\n this.show();\n this.handleCreateCall(params.to, params.task, params.voice);\n },\n });\n if (typeof document !== 'undefined' && document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n this.inlineButton?.attach();\n this.inlineButton?.observe();\n });\n } else {\n this.inlineButton.attach();\n this.inlineButton.observe();\n }\n }\n }\n\n private async handleCreateCall(to: string, task: string, voice?: string): Promise<void> {\n const opts = this.options?.defaults ?? {};\n try {\n const call = await this.call({\n to,\n task,\n voice: voice ?? opts.voice,\n agentName: opts.agentName,\n callerName: opts.callerName,\n maxDuration: opts.maxDuration,\n });\n this.events.emit('call:start', call);\n this.floatingButton?.setCallStatus(call);\n this.modal?.setCallStatus(call);\n const updated = await this.api!.pollCallStatus(call.id);\n this.events.emit('call:update', updated);\n this.events.emit('call:complete', updated);\n this.floatingButton?.setCallStatus(updated);\n this.modal?.setCallStatus(updated);\n } catch (err) {\n this.events.emit('call:error', err);\n this.floatingButton?.setCallStatus(null);\n this.modal?.setCallStatus(null);\n }\n }\n\n call(options: PamelaCallOptions): Promise<PamelaCall> {\n if (!this.api) throw new PamelaError('Pamela not initialized. Call Pamela.init() first.');\n return this.api.createCall(options);\n }\n\n getCall(callId: string): Promise<PamelaCall> {\n if (!this.api) throw new PamelaError('Pamela not initialized. Call Pamela.init() first.');\n return this.api.getCall(callId);\n }\n\n cancel(callId: string): Promise<void> {\n if (!this.api) throw new PamelaError('Pamela not initialized. Call Pamela.init() first.');\n return this.api.cancelCall(callId);\n }\n\n on(event: string, callback: (...args: unknown[]) => void): void {\n this.events.on(event, callback);\n }\n\n off(event: string, callback: (...args: unknown[]) => void): void {\n this.events.off(event, callback);\n }\n\n show(): void {\n this.events.emit('modal:open');\n this.modal?.open();\n }\n\n hide(): void {\n this.events.emit('modal:close');\n this.modal?.close();\n }\n\n destroy(): void {\n this.floatingButton?.destroy();\n this.inlineButton?.destroy();\n this.modal?.destroy();\n this.floatingButton = null;\n this.inlineButton = null;\n this.modal = null;\n this.api = null;\n this.options = null;\n this.events.removeAllListeners();\n if (Pamela.instance === this) {\n Pamela.instance = null;\n }\n }\n\n static getInstance(): Pamela | null {\n return Pamela.instance;\n }\n}\n","/**\n * @thisispamela/widget - Embeddable Pamela Voice AI widget\n *\n * Usage (script tag):\n * <script src=\"https://cdn.thisispamela.com/widget.js\"></script>\n * <script>\n * Pamela.init({ apiKey: 'pk_live_xxx', mode: 'floating' });\n * </script>\n *\n * Usage (ESM):\n * import Pamela from '@thisispamela/widget';\n * Pamela.init({ apiKey: 'pk_live_xxx' });\n */\n\nimport { Pamela } from './pamela';\nimport { PamelaError } from './api';\nimport type { PamelaInitOptions, PamelaCallOptions, PamelaCall, PamelaStyleOverrides, TranscriptEntry } from './types';\n\n// Expose Pamela on global for script-tag usage (Pamela.init())\nif (typeof globalThis !== 'undefined') {\n (globalThis as Record<string, unknown>).Pamela = Pamela;\n}\n\nexport { Pamela, PamelaError };\nexport type { PamelaInitOptions, PamelaCallOptions, PamelaCall, PamelaStyleOverrides, TranscriptEntry };\n\nexport default Pamela;\n"],"names":["ROOT_CLASS"],"mappings":"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"}