@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.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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"}
@@ -0,0 +1,2 @@
1
+ var Pamela=function(e){"use strict";class t{constructor(){this.listeners=new Map}on(e,t){const a=this.listeners.get(e)??[];a.push(t),this.listeners.set(e,a)}off(e,t){const a=this.listeners.get(e);if(!a)return;const n=a.indexOf(t);-1!==n&&a.splice(n,1),0===a.length&&this.listeners.delete(e)}emit(e,...t){const a=this.listeners.get(e);a&&a.forEach(e=>{try{e(...t)}catch(e){}})}removeAllListeners(e){e?this.listeners.delete(e):this.listeners.clear()}}class a extends Error{constructor(e,t){super(e),this.name="PamelaError",this.code=t?.code,this.statusCode=t?.statusCode}}function n(e){return"in_progress"===e?"in-progress":e}class s{constructor(e){this.apiKey=e.apiKey,this.baseUrl=(e.baseUrl||"https://api.thisispamela.com").replace(/\/$/,"")}async request(e,t,n){const s=`${this.baseUrl}${t}`,r={"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},l=await fetch(s,{method:e,headers:r,body:n?JSON.stringify(n):void 0}),i=await l.json().catch(()=>({}));if(!l.ok){const e=i,t=null!=e.detail?"string"==typeof e.detail?e.detail:e.detail?.message??"Request failed":e.message??"Request failed",n=i.detail?.error_code??i.error_code;throw new a(t,{code:n,statusCode:l.status})}return i}async createCall(e){const t={to:e.to,task:e.task,voice:e.voice??"auto",agent_name:e.agentName,caller_name:e.callerName,max_duration_seconds:e.maxDuration,metadata:e.metadata,webhooks:e.webhooks},a=function(e){return{id:e.id,status:n(e.status),to:"",task:"",createdAt:e.created_at}}(await this.request("POST","/api/b2b/v1/calls",t));return a.to=e.to,a.task=e.task,a}async getCall(e){return function(e){const t=e.transcript?.map(e=>({role:e.role,content:e.content,timestamp:e.timestamp??0}));return{id:e.id,status:n(e.status),to:e.to,task:"",duration:e.duration_seconds,transcript:t,summary:e.summary,createdAt:e.created_at,completedAt:e.completed_at}}(await this.request("GET",`/api/b2b/v1/calls/${e}`))}async cancelCall(e){await this.request("POST",`/api/b2b/v1/calls/${e}/cancel`)}async pollCallStatus(e,t={}){const a=t.intervalMs??2e3,n=t.timeoutMs??3e5,s=Date.now()+n,r=async()=>{const t=await this.getCall(e);return["completed","failed","cancelled"].includes(t.status)||Date.now()>=s?t:(await new Promise(e=>setTimeout(e,a)),r())};return r()}}let r=null;function l(e){"undefined"!=typeof document&&(r&&document.contains(r)||(r=document.createElement("style"),r.setAttribute("data-pamela-widget","tokens"),r.textContent="\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-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.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-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.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",(document.head||document.documentElement).appendChild(r)))}function i(e){return"dark"===e?"pamela-theme-dark":""}const o='<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>',d="pamela-float-input";class m{constructor(e){this.root=null,this.wrapper=null,this.panel=null,this.expanded=!1,this.currentCall=null,this.options=e}render(e){l(this.options.theme);const t=i(this.options.theme),a=document.createElement("div");a.className=`pamela-widget-root ${t}`.trim(),a.setAttribute("data-pamela-float","true");const n=`pamela-float-${this.options.position.replace("-","_")}`,s=document.createElement("div");s.className=`pamela-float-wrapper ${n}`,s.style.cssText=this.getWrapperStyles();const r=document.createElement("button");r.type="button",r.className="pamela-float-button",r.setAttribute("aria-label","Open Pamela call"),r.innerHTML='<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>',r.style.cssText=this.getButtonStyles();const m=document.createElement("div");m.className="pamela-float-panel",m.setAttribute("hidden","true"),m.style.cssText=this.getPanelStyles();const c=document.createElement("input");c.type="tel",c.placeholder="Phone number",c.className=d,c.setAttribute("aria-label","Phone number"),c.style.cssText=this.getInputStyles();const p=document.createElement("textarea");p.placeholder="What should Pamela do?",p.rows=2,p.className=d,p.setAttribute("aria-label","Task"),p.style.cssText=this.getInputStyles();const u=document.createElement("div");u.setAttribute("aria-live","polite"),u.style.cssText="font-size: 0.75rem; color: var(--pamela-text-muted); margin-top: 0.25rem; min-height: 1rem;";const h=document.createElement("button");h.type="button",h.className="pamela-float-cta",h.style.cssText=this.getCtaStyles();const b=document.createElement("span");return b.style.cssText="display:inline-flex;align-items:center;gap:0.35rem;",b.innerHTML=o,b.appendChild(document.createTextNode(" Call Now")),h.appendChild(b),m.appendChild(c),m.appendChild(p),m.appendChild(u),m.appendChild(h),r.addEventListener("click",()=>this.toggle()),h.addEventListener("click",()=>this.handleSubmit(c,p,u)),s.appendChild(r),s.appendChild(m),a.appendChild(s),e.appendChild(a),this.root=a,this.wrapper=s,this.panel=m,a}getWrapperStyles(){const e="position:fixed;z-index:999999;display:flex;flex-direction:column;align-items:flex-end;gap:0.5rem;",t="24px",a=this.options.position;return"bottom-right"===a?`${e} bottom:${t};right:${t};`:"bottom-left"===a?`${e} bottom:${t};left:${t};`:"top-right"===a?`${e} top:${t};right:${t};`:`${e} top:${t};left:${t};`}getButtonStyles(){return["width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;","background:var(--pamela-accent-gradient);box-shadow:var(--pamela-shadow), var(--pamela-glow);","display:flex;align-items:center;justify-content:center;transition:transform 0.2s, box-shadow 0.2s;"].join(" ")}getPanelStyles(){return["background:var(--pamela-surface-liquid);border:1px solid var(--pamela-surface-border);","border-radius:var(--pamela-radius-lg);box-shadow:var(--pamela-shadow);padding:1rem;","min-width:280px;max-width:320px;display:flex;flex-direction:column;gap:0.75rem;","backdrop-filter:blur(var(--pamela-blur));-webkit-backdrop-filter:blur(var(--pamela-blur));"].join(" ")}getInputStyles(){return["width:100%;padding:0.5rem 0.75rem;border-radius:var(--pamela-radius-md);","border:1px solid var(--pamela-surface-border);background:var(--pamela-surface-strong);","color:var(--pamela-text);font-family:var(--pamela-font);font-size:0.875rem;","transition:border-color 0.15s, box-shadow 0.15s;"].join(" ")}getCtaStyles(){return["width:100%;padding:0.6rem 1rem;border-radius:var(--pamela-radius-md);border:var(--pamela-cta-border);","background:var(--pamela-cta-bg);color:var(--pamela-text);font-weight:600;font-family:var(--pamela-font);","cursor:pointer;box-shadow:var(--pamela-shadow);transition:opacity 0.2s, transform 0.15s;"].join(" ")}toggle(){this.expanded=!this.expanded,this.panel&&(this.panel.hidden=!this.expanded),this.expanded?this.options.onExpand?.():this.options.onCollapse?.()}normalizePhone(e){const t=e.replace(/[^\d+]/g,"");return t.startsWith("+")?t:10===t.length?"+1"+t:(11===t.length&&t.startsWith("1"),"+"+t)}handleSubmit(e,t,a){const n=this.normalizePhone(e.value.trim()),s=t.value.trim();n&&s?/^\+[1-9]\d{6,14}$/.test(n)?(a.textContent="",this.options.onCreateCall(n,s)):a.textContent="Please use a valid phone number (e.g. +1 555 123 4567).":a.textContent="Please enter phone number and task."}setCallStatus(e){if(this.currentCall=e,!this.panel)return;const t=this.panel.querySelector('[aria-live="polite"]');t&&(e?"completed"===e.status?t.textContent="Call completed."+(e.summary?" "+e.summary.slice(0,80)+"…":""):"failed"===e.status||"cancelled"===e.status?t.textContent=`Call ${e.status}.`:t.textContent=`Call ${e.status}…`:t.textContent="")}destroy(){this.root?.remove(),this.root=null,this.wrapper=null,this.panel=null}}const c="data-pamela-call",p="data-pamela-inline-init";class u{constructor(e){this.observer=null,this.styleInjected=!1,this.options=e}attach(e=document){this.styleInjected||(!function(){if("undefined"==typeof document)return;const e="pamela-inline-styles";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e,t.setAttribute("data-pamela-widget","inline"),t.textContent=[".pamela-inline-btn{display:inline-flex;align-items:center;gap:0.35rem;padding:0.4rem 0.75rem;","border-radius:var(--pamela-radius-md, 0.75rem);border:1px solid var(--pamela-surface-border, rgba(231,171,132,0.24));","background:var(--pamela-cta-bg, linear-gradient(120deg, rgba(255,255,255,0.7), rgba(250,147,28,0.32)));","color:var(--pamela-text, #1C1917);font-family:var(--pamela-font);font-size:0.875rem;font-weight:600;","cursor:pointer;box-shadow:0 2px 8px rgba(28,25,17,0.08);transition:opacity 0.2s, transform 0.15s;}",".pamela-inline-btn:hover{opacity:0.95;transform:translateY(-1px);}",".pamela-inline-btn:disabled{opacity:0.6;cursor:not-allowed;transform:none;}"].join(""),(document.head||document.documentElement).appendChild(t)}(),this.styleInjected=!0);const t=e instanceof Document?e.body:e;if(!t)return;t.querySelectorAll(`[${c}]:not([${p}])`).forEach(e=>this.attachToElement(e))}attachToElement(e){if("true"===e.getAttribute(p))return;const t=(e.getAttribute("data-to")??"").trim(),a=(e.getAttribute("data-task")??"").trim(),n=(e.getAttribute("data-voice")??"").trim()||void 0,s=e.getAttribute("data-label")??"Call with Pamela";if(!t||!a)return;e.setAttribute(p,"true");const r=document.createElement("button");r.type="button",r.className="pamela-inline-btn",r.textContent=s,r.setAttribute("aria-label",`Call ${t} with Pamela: ${a}`),r.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const s=function(e){const t=e.replace(/[^\d+]/g,"");return t.startsWith("+")?t:10===t.length?"+1"+t:(11===t.length&&t.startsWith("1"),"+"+t)}(t);this.options.onCallClick({to:s,task:a,voice:n})}),"BUTTON"===e.tagName||"A"===e.tagName?e.replaceWith(r):e.appendChild(r)}observe(e=document){const t=e instanceof Document?e.body:e;t&&!this.observer&&(this.observer=new MutationObserver(e=>{for(const t of e)if("childList"===t.type)for(const e of t.addedNodes)e instanceof HTMLElement&&(e.hasAttribute?.(c)&&this.attachToElement(e),e.querySelectorAll?.(`[${c}]:not([${p}])`).forEach(e=>this.attachToElement(e)))}),this.observer.observe(t,{childList:!0,subtree:!0}))}destroy(){this.observer?.disconnect(),this.observer=null}}class h{constructor(e){this.root=null,this.overlay=null,this.panel=null,this.orbEl=null,this.statusEl=null,this.transcriptEl=null,this.summaryEl=null,this.expanded=!1,this.boundKeydown=null,this.options=e}render(e){l(this.options.theme);const t=i(this.options.theme),a=document.createElement("div");a.className=`pamela-widget-root ${t}`.trim(),a.setAttribute("data-pamela-modal","true");const n=document.createElement("div");n.style.cssText=this.getOverlayStyles(),n.setAttribute("hidden","true");const s=document.createElement("div");s.style.cssText=this.getPanelStyles();const r=document.createElement("div");r.style.cssText="display:flex;justify-content:center;margin-bottom:0.75rem;";const d=document.createElement("div");d.className="pamela-modal-orb",d.style.cssText=this.getOrbStyles(),d.setAttribute("hidden","true"),r.appendChild(d);const m=document.createElement("div");m.style.cssText="display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem;";const c=document.createElement("div");c.textContent="Call with Pamela",c.style.cssText="font-weight:600;color:var(--pamela-text);";const p=document.createElement("button");p.type="button",p.setAttribute("aria-label","Close"),p.style.cssText=this.getCloseStyles(),p.innerHTML='<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>',p.addEventListener("click",()=>this.close()),m.appendChild(c),m.appendChild(p);const u=document.createElement("input");u.type="tel",u.placeholder="Phone number",u.style.cssText=this.getInputStyles(),u.setAttribute("aria-label","Phone number");const h=document.createElement("textarea");h.placeholder="What should Pamela do?",h.rows=3,h.style.cssText=this.getInputStyles(),h.setAttribute("aria-label","Task");const b=document.createElement("select");b.style.cssText=this.getSelectStyles(),b.setAttribute("aria-label","Voice"),["auto","female","male"].forEach(e=>{const t=document.createElement("option");t.value=e,t.textContent=`Voice: ${e}`,this.options.defaults?.voice&&this.options.defaults.voice===e&&(t.selected=!0),b.appendChild(t)});const g=document.createElement("div");g.setAttribute("aria-live","polite"),g.style.cssText="font-size:0.8rem;color:var(--pamela-text-muted);min-height:1rem;";const y=document.createElement("button");y.type="button",y.style.cssText=this.getCtaStyles();const f=document.createElement("span");f.style.cssText="display:inline-flex;align-items:center;gap:0.35rem;",f.innerHTML=o,f.appendChild(document.createTextNode(" Call Now")),y.appendChild(f),y.addEventListener("click",()=>this.handleSubmit(u,h,b,g));const v=document.createElement("div");v.style.cssText=this.getTranscriptWrapperStyles();const x=document.createElement("div");x.textContent="Transcript",x.style.cssText="font-size:0.8rem;color:var(--pamela-text-secondary);margin-bottom:0.25rem;";const C=document.createElement("div");C.style.cssText=this.getTranscriptStyles(),v.appendChild(x),v.appendChild(C);const w=document.createElement("div");return w.style.cssText="font-size:0.85rem;color:var(--pamela-text);margin-top:0.5rem;",s.appendChild(r),s.appendChild(m),s.appendChild(u),s.appendChild(h),s.appendChild(b),s.appendChild(g),s.appendChild(y),s.appendChild(v),s.appendChild(w),n.appendChild(s),a.appendChild(n),e.appendChild(a),n.addEventListener("click",e=>{e.target===n&&this.close()}),this.boundKeydown=e=>{this.expanded&&"Escape"===e.key&&this.close()},document.addEventListener("keydown",this.boundKeydown),this.root=a,this.overlay=n,this.panel=s,this.orbEl=d,this.statusEl=g,this.transcriptEl=C,this.summaryEl=w,a}open(){this.overlay&&(this.overlay.removeAttribute("hidden"),this.expanded=!0)}close(){this.overlay&&(this.overlay.setAttribute("hidden","true"),this.expanded=!1,this.options.onClose?.())}setCallStatus(e){if(!this.statusEl)return;if(!e)return this.statusEl.textContent="",this.orbEl&&this.orbEl.setAttribute("hidden","true"),this.transcriptEl&&(this.transcriptEl.innerHTML=""),void(this.summaryEl&&(this.summaryEl.textContent=""));const t=["queued","ringing","in-progress"].includes(e.status);this.orbEl&&(t?(this.orbEl.removeAttribute("hidden"),this.orbEl.style.animation="in-progress"===e.status?"pamela-pulse-active 1s ease-in-out infinite":"pamela-pulse 2s ease-in-out infinite"):this.orbEl.setAttribute("hidden","true")),"completed"===e.status?this.statusEl.textContent="Call completed.":"failed"===e.status||"cancelled"===e.status?this.statusEl.textContent=`Call ${e.status}.`:this.statusEl.textContent=`Call ${e.status}...`,this.transcriptEl&&e.transcript&&(this.transcriptEl.innerHTML="",e.transcript.forEach(e=>{this.transcriptEl?.appendChild(this.renderTranscriptEntry(e))})),this.summaryEl&&e.summary&&(this.summaryEl.textContent=`Summary: ${e.summary}`)}destroy(){this.boundKeydown&&(document.removeEventListener("keydown",this.boundKeydown),this.boundKeydown=null),this.root?.remove(),this.root=null,this.overlay=null,this.panel=null,this.orbEl=null,this.statusEl=null,this.transcriptEl=null,this.summaryEl=null}renderTranscriptEntry(e){const t=document.createElement("div");return t.style.cssText=this.getTranscriptBubbleStyles(e.role),t.textContent=e.content,t}normalizePhone(e){const t=e.replace(/[^\d+]/g,"");return t.startsWith("+")?t:10===t.length?"+1"+t:(11===t.length&&t.startsWith("1"),"+"+t)}handleSubmit(e,t,a,n){const s=this.normalizePhone(e.value.trim()),r=t.value.trim(),l=a.value||void 0;s&&r?/^\+[1-9]\d{6,14}$/.test(s)?(n.textContent="",this.options.onCreateCall(s,r,l)):n.textContent="Please use a valid phone number (e.g. +1 555 123 4567).":n.textContent="Please enter phone number and task."}getOverlayStyles(){return["position:fixed;inset:0;z-index:999998;background:rgba(0,0,0,0.4);","display:flex;align-items:center;justify-content:center;padding:1.5rem;"].join(" ")}getPanelStyles(){return["width:min(520px, 95vw);background:var(--pamela-surface-liquid);","border:1px solid var(--pamela-surface-border);border-radius:var(--pamela-radius-xl);","box-shadow:var(--pamela-shadow), var(--pamela-glow);padding:1.25rem;","backdrop-filter:blur(var(--pamela-blur));-webkit-backdrop-filter:blur(var(--pamela-blur));","display:flex;flex-direction:column;gap:0.75rem;"].join(" ")}getInputStyles(){return["width:100%;padding:0.6rem 0.75rem;border-radius:var(--pamela-radius-md);","border:1px solid var(--pamela-surface-border);background:var(--pamela-surface-strong);","color:var(--pamela-text);font-family:var(--pamela-font);font-size:0.9rem;","transition:border-color 0.15s, box-shadow 0.15s;"].join(" ")}getSelectStyles(){return["width:100%;padding:0.5rem 0.75rem;border-radius:var(--pamela-radius-md);","border:1px solid var(--pamela-surface-border);background:var(--pamela-surface-strong);","color:var(--pamela-text);font-family:var(--pamela-font);font-size:0.85rem;"].join(" ")}getCtaStyles(){return["width:100%;padding:0.65rem 1rem;border-radius:var(--pamela-radius-md);border:var(--pamela-cta-border);","background:var(--pamela-cta-bg);color:var(--pamela-text);font-weight:600;font-family:var(--pamela-font);","cursor:pointer;box-shadow:var(--pamela-shadow);transition:opacity 0.2s, transform 0.15s;"].join(" ")}getCloseStyles(){return["width:32px;height:32px;border-radius:50%;border:1px solid var(--pamela-surface-border);","background:var(--pamela-surface-strong);color:var(--pamela-text);cursor:pointer;","display:flex;align-items:center;justify-content:center;"].join(" ")}getTranscriptWrapperStyles(){return["margin-top:0.5rem;padding:0.75rem;border-radius:var(--pamela-radius-md);","border:1px solid var(--pamela-surface-border);background:var(--pamela-surface);"].join(" ")}getTranscriptStyles(){return"display:flex;flex-direction:column;gap:0.5rem;max-height:180px;overflow:auto;"}getTranscriptBubbleStyles(e){const t=["padding:0.5rem 0.75rem;border-radius:var(--pamela-radius-md);font-size:0.85rem;","color:var(--pamela-text);"].join(" ");return"agent"===e?t+" background:rgba(255,255,255,0.2);":t+" background:rgba(250,147,28,0.2);"}getOrbStyles(){return["width:64px;height:64px;border-radius:50%;","background:var(--pamela-accent-gradient);","box-shadow:0 0 40px rgba(250,147,28,0.4), 0 0 60px rgba(253,139,116,0.3);","animation:pamela-pulse 2s ease-in-out infinite;"].join(" ")}}class b{constructor(){this.api=null,this.options=null,this.events=new t,this.floatingButton=null,this.inlineButton=null,this.modal=null,this.container=null,this.theme="light"}static init(e){b.instance&&b.instance.destroy();const t=new b;return t.init(e),b.instance=t,t}init(e){if(!e.apiKey)throw new a("apiKey is required");this.options=e,this.theme="auto"===e.theme?function(){if("undefined"==typeof document)return"light";const e=document.documentElement.getAttribute("data-pamela-theme");return"light"===e||"dark"===e?e:document.documentElement.classList.contains("dark")||document.body?.classList.contains("dark")||document.body?.classList.contains("dark-mode")||window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"}():e.theme??"light",this.api=new s({apiKey:e.apiKey,baseUrl:e.baseUrl}),l(this.theme),this.container=document.body,("floating"===e.mode||!e.mode&&e.apiKey)&&(this.floatingButton=new m({position:e.position??"bottom-right",theme:this.theme,defaults:e.defaults,onCreateCall:(e,t)=>this.handleCreateCall(e,t),onExpand:()=>this.events.emit("modal:open"),onCollapse:()=>this.events.emit("modal:close")}),this.floatingButton.render(this.container));("modal"===e.mode||"inline"===e.mode)&&(this.modal=new h({theme:this.theme,defaults:e.defaults,onCreateCall:(e,t,a)=>this.handleCreateCall(e,t,a),onClose:()=>this.events.emit("modal:close")}),this.modal.render(this.container)),e.styles&&Object.keys(e.styles).length>0&&function(e){if("undefined"==typeof document||!e||"object"!=typeof e)return;document.querySelectorAll(".pamela-widget-root").forEach(t=>{if(!(t instanceof HTMLElement))return;const a=t;e["--pamela-accent"]&&a.style.setProperty("--pamela-accent",e["--pamela-accent"]),e["--pamela-accent-2"]&&a.style.setProperty("--pamela-accent-2",e["--pamela-accent-2"]),e["--pamela-radius"]&&(a.style.setProperty("--pamela-radius-sm",e["--pamela-radius"]),a.style.setProperty("--pamela-radius-md",e["--pamela-radius"]),a.style.setProperty("--pamela-radius-lg",e["--pamela-radius"]),a.style.setProperty("--pamela-border-radius",e["--pamela-radius"])),e["--pamela-font"]&&a.style.setProperty("--pamela-font",e["--pamela-font"]),e["--pamela-primary"]&&a.style.setProperty("--pamela-primary",e["--pamela-primary"]),e["--pamela-background"]&&(a.style.setProperty("--pamela-bg",e["--pamela-background"]),a.style.setProperty("--pamela-background",e["--pamela-background"])),e["--pamela-text"]&&a.style.setProperty("--pamela-text",e["--pamela-text"]),e["--pamela-border-radius"]&&a.style.setProperty("--pamela-border-radius",e["--pamela-border-radius"])})}(e.styles),"inline"===e.mode&&(this.inlineButton=new u({theme:this.theme,onCallClick:e=>{this.show(),this.handleCreateCall(e.to,e.task,e.voice)}}),"undefined"!=typeof document&&"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{this.inlineButton?.attach(),this.inlineButton?.observe()}):(this.inlineButton.attach(),this.inlineButton.observe()))}async handleCreateCall(e,t,a){const n=this.options?.defaults??{};try{const s=await this.call({to:e,task:t,voice:a??n.voice,agentName:n.agentName,callerName:n.callerName,maxDuration:n.maxDuration});this.events.emit("call:start",s),this.floatingButton?.setCallStatus(s),this.modal?.setCallStatus(s);const r=await this.api.pollCallStatus(s.id);this.events.emit("call:update",r),this.events.emit("call:complete",r),this.floatingButton?.setCallStatus(r),this.modal?.setCallStatus(r)}catch(e){this.events.emit("call:error",e),this.floatingButton?.setCallStatus(null),this.modal?.setCallStatus(null)}}call(e){if(!this.api)throw new a("Pamela not initialized. Call Pamela.init() first.");return this.api.createCall(e)}getCall(e){if(!this.api)throw new a("Pamela not initialized. Call Pamela.init() first.");return this.api.getCall(e)}cancel(e){if(!this.api)throw new a("Pamela not initialized. Call Pamela.init() first.");return this.api.cancelCall(e)}on(e,t){this.events.on(e,t)}off(e,t){this.events.off(e,t)}show(){this.events.emit("modal:open"),this.modal?.open()}hide(){this.events.emit("modal:close"),this.modal?.close()}destroy(){this.floatingButton?.destroy(),this.inlineButton?.destroy(),this.modal?.destroy(),this.floatingButton=null,this.inlineButton=null,this.modal=null,this.api=null,this.options=null,this.events.removeAllListeners(),b.instance===this&&(b.instance=null)}static getInstance(){return b.instance}}return b.instance=null,"undefined"!=typeof globalThis&&(globalThis.Pamela=b),e.Pamela=b,e.PamelaError=a,e.default=b,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
2
+ //# sourceMappingURL=widget.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Pamela","exports","EventEmitter","constructor","this","listeners","Map","on","event","callback","list","get","push","set","off","idx","indexOf","splice","length","delete","emit","args","forEach","fn","_","removeAllListeners","clear","PamelaError","Error","message","options","super","name","code","statusCode","normalizeStatus","s","PamelaApiClient","apiKey","baseUrl","replace","request","method","path","body","url","headers","Authorization","response","fetch","JSON","stringify","undefined","data","json","catch","ok","d","detail","error_code","status","createCall","to","task","voice","agent_name","agentName","caller_name","callerName","max_duration_seconds","maxDuration","metadata","webhooks","call","raw","id","createdAt","created_at","mapResponseToCall","getCall","callId","transcript","map","t","role","content","timestamp","duration","duration_seconds","summary","completedAt","completed_at","mapStatusToCall","cancelCall","pollCallStatus","intervalMs","timeoutMs","deadline","Date","now","poll","async","includes","Promise","r","setTimeout","styleEl","injectStyles","theme","document","contains","createElement","setAttribute","textContent","LIGHT_TOKENS","head","documentElement","appendChild","getThemeClass","ICON_CALL","INPUT_CLASS","FloatingButton","root","wrapper","panel","expanded","currentCall","render","container","themeClass","className","trim","positionClass","position","style","cssText","getWrapperStyles","button","type","innerHTML","getButtonStyles","getPanelStyles","phoneInput","placeholder","getInputStyles","taskInput","rows","statusEl","cta","getCtaStyles","ctaSpan","createTextNode","addEventListener","toggle","handleSubmit","base","inset","pos","join","hidden","onExpand","onCollapse","normalizePhone","value","digits","startsWith","test","onCreateCall","setCallStatus","querySelector","slice","destroy","remove","DATA_CALL","ATTR_INIT","InlineButton","observer","styleInjected","attach","getElementById","el","injectInlineStyles","scope","Document","querySelectorAll","attachToElement","getAttribute","label","e","preventDefault","stopPropagation","resolvedTo","onCallClick","tagName","replaceWith","observe","MutationObserver","mutations","m","node","addedNodes","HTMLElement","hasAttribute","childList","subtree","disconnect","Modal","overlay","orbEl","transcriptEl","summaryEl","boundKeydown","getOverlayStyles","orbWrapper","orb","getOrbStyles","header","title","closeBtn","getCloseStyles","close","voiceSelect","getSelectStyles","v","opt","defaults","selected","transcriptWrapper","getTranscriptWrapperStyles","transcriptTitle","getTranscriptStyles","target","key","open","removeAttribute","onClose","isActive","animation","entry","renderTranscriptEntry","removeEventListener","bubble","getTranscriptBubbleStyles","api","events","floatingButton","inlineButton","modal","init","instance","explicit","classList","window","matchMedia","matches","detectTheme","mode","handleCreateCall","styles","Object","keys","overrides","setProperty","applyStyleOverrides","params","show","readyState","opts","updated","err","cancel","hide","getInstance","globalThis","default","defineProperty"],"sources":["dist/widget.js"],"mappings":"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","ignoreList":[]}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@thisispamela/widget",
3
+ "version": "1.1.0",
4
+ "description": "Embeddable Pamela Voice AI widget for any website",
5
+ "type": "module",
6
+ "main": "dist/widget.js",
7
+ "module": "dist/widget.esm.js",
8
+ "types": "dist/widget.d.ts",
9
+ "files": [
10
+ "dist",
11
+ "README.md"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "scripts": {
17
+ "build": "rollup -c",
18
+ "build:min": "npm run build && terser dist/widget.js -o dist/widget.min.js -c -m --source-map \"url=widget.min.js.map\"",
19
+ "prepublishOnly": "npm run build"
20
+ },
21
+ "unpkg": "dist/widget.min.js",
22
+ "jsdelivr": "dist/widget.min.js",
23
+ "keywords": [
24
+ "pamela",
25
+ "voice",
26
+ "ai",
27
+ "phone",
28
+ "widget",
29
+ "embed"
30
+ ],
31
+ "author": "Pamela",
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "@thisispamela/sdk": "file:../javascript"
35
+ },
36
+ "devDependencies": {
37
+ "@rollup/plugin-commonjs": "^25.0.0",
38
+ "@rollup/plugin-node-resolve": "^15.0.0",
39
+ "@rollup/plugin-typescript": "^11.0.0",
40
+ "rollup": "^4.0.0",
41
+ "rollup-plugin-dts": "^6.0.0",
42
+ "rollup-plugin-filesize": "^10.0.0",
43
+ "terser": "^5.0.0",
44
+ "tslib": "^2.8.1",
45
+ "typescript": "^5.0.0"
46
+ }
47
+ }