@product7/feedback-sdk 1.3.3 → 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/feedback-sdk.js +2441 -3240
- package/dist/feedback-sdk.js.map +1 -1
- package/dist/feedback-sdk.min.js +1 -1
- package/dist/feedback-sdk.min.js.map +1 -1
- package/package.json +1 -1
- package/src/api/services/MessengerService.js +76 -0
- package/src/core/BaseAPIService.js +4 -0
- package/src/index.js +2 -3
- package/src/styles/base.js +27 -52
- package/src/styles/changelog.js +152 -269
- package/src/styles/components.js +489 -0
- package/src/styles/design-tokens.js +104 -0
- package/src/styles/feedback.js +59 -369
- package/src/styles/messenger-core.js +390 -0
- package/src/styles/messenger-features.js +347 -0
- package/src/styles/messenger-help.js +298 -0
- package/src/styles/messenger-themes.js +500 -0
- package/src/styles/messenger-views.js +618 -0
- package/src/styles/messenger.js +558 -0
- package/src/styles/styles.js +24 -2
- package/src/styles/surveys.js +354 -0
- package/src/widgets/BaseWidget.js +25 -58
- package/src/widgets/ButtonWidget.js +3 -18
- package/src/widgets/ChangelogWidget.js +7 -48
- package/src/widgets/InlineWidget.js +16 -13
- package/src/widgets/MessengerWidget.js +37 -51
- package/src/widgets/SurveyWidget.js +42 -146
- package/src/widgets/TabWidget.js +2 -22
- package/src/widgets/messenger/MessengerState.js +49 -46
- package/src/widgets/messenger/components/MessengerLauncher.js +10 -5
- package/src/widgets/messenger/components/MessengerPanel.js +5 -27
- package/src/widgets/messenger/components/NavigationTabs.js +5 -14
- package/src/widgets/messenger/views/ChangelogView.js +13 -14
- package/src/widgets/messenger/views/ChatView.js +43 -36
- package/src/widgets/messenger/views/ConversationsView.js +16 -21
- package/src/widgets/messenger/views/HelpView.js +10 -10
- package/src/widgets/messenger/views/HomeView.js +11 -16
- package/src/widgets/messenger/views/PreChatFormView.js +18 -30
- package/src/styles/messengerStyles.js +0 -2328
package/dist/feedback-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-sdk.js","sources":["../src/api/mock-data/index.js","../src/api/utils/helpers.js","../src/api/services/ChangelogService.js","../src/api/services/FeedbackService.js","../src/api/services/HelpService.js","../src/api/services/MessengerService.js","../src/utils/errors.js","../src/api/services/SurveyService.js","../src/core/BaseAPIService.js","../src/core/APIService.js","../src/core/EventBus.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/ChangelogWidget.js","../src/widgets/InlineWidget.js","../src/widgets/messenger/MessengerState.js","../src/widgets/messenger/components/MessengerLauncher.js","../src/widgets/messenger/components/NavigationTabs.js","../src/widgets/messenger/components/MessengerPanel.js","../src/widgets/messenger/views/ChangelogView.js","../src/widgets/messenger/views/ChatView.js","../src/widgets/messenger/views/ConversationsView.js","../src/widgets/messenger/views/HelpView.js","../src/widgets/messenger/views/HomeView.js","../src/widgets/messenger/views/PreChatFormView.js","../src/core/WebSocketService.js","../src/widgets/MessengerWidget.js","../src/widgets/SurveyWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/FeedbackSDK.js","../src/styles/messengerStyles.js","../src/styles/base.js","../src/styles/changelog.js","../src/styles/feedback.js","../src/styles/styles.js","../src/index.js"],"sourcesContent":["export const MOCK_CHANGELOGS = [\n\t{\n\t\tid: 'changelog_1',\n\t\ttitle:\n\t\t\t'Feature prioritization, multiple roadmaps, and feature request analytics.',\n\t\texcerpt:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tdescription:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiNEQkVBRkUiLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzE1NUVFRiIgc3Ryb2tlLXdpZHRoPSIyIi8+PHJlY3QgeD0iMzAiIHk9IjQwIiB3aWR0aD0iODAiIGhlaWdodD0iOCIgcng9IjQiIGZpbGw9IiNFNUU3RUIiLz48cmVjdCB4PSIzMCIgeT0iNjAiIHdpZHRoPSIxNDAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHRleHQgeD0iNDAiIHk9Ijg1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMUYyOTM3Ij4yMDA8L3RleHQ+PHRleHQgeD0iNDAiIHk9Ijk1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjgiIGZpbGw9IiM2QjcyODAiPlBvc3RzPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI0MCIgcng9IjQiIGZpbGw9IiNGM0Y0RjYiLz48cmVjdCB4PSIyNzAiIHk9IjYwIiB3aWR0aD0iODAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHBhdGggZD0iTTMwIDEzMEgzNzBNMzAgMTUwSDM3ME0zMCAxNzBIMzcwTTMwIDE5MEgzNzAiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxIi8+PHBhdGggZD0iTTUwIDE2MEwxMDAgMTQwTDE1MCAxNTBMMjAwIDEzMEwyNTAgMTM1TDMwMCAxMjBMMzUwIDEyNSIgc3Ryb2tlPSIjMTU1RUVGIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz48L3N2Zz4=',\n\t\tslug: 'feature-prioritization-roadmaps-analytics',\n\t\tpublished_at: '2025-03-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'New Feature', color: '#10B981' },\n\t\t\t{ name: 'Analytics', color: '#6366F1' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_2',\n\t\ttitle: 'Dark mode support and UI improvements',\n\t\texcerpt:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tdescription:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiMxRjI5MzciLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0iIzM3NDE1MSIgc3Ryb2tlPSIjNEI1NTYzIiBzdHJva2Utd2lkdGg9IjEiLz48Y2lyY2xlIGN4PSIyMDAiIGN5PSIxMjUiIHI9IjQwIiBmaWxsPSIjRkJCRjI0Ii8+PHBhdGggZD0iTTIyMCAxMjVDMjIwIDEzNiAyMTEgMTQ1IDIwMCAxNDVDMTg5IDE0NSAxODAgMTM2IDE4MCAxMjVDMTgwIDExNCAxODkgMTA1IDIwMCAxMDVDMjExIDEwNSAyMjAgMTE0IDIyMCAxMjVaIiBmaWxsPSIjMUYyOTM3Ii8+PC9zdmc+',\n\t\tslug: 'dark-mode-ui-improvements',\n\t\tpublished_at: '2025-03-01T10:00:00Z',\n\t\tlabels: [{ name: 'Enhancement', color: '#8B5CF6' }],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_3',\n\t\ttitle: 'Performance improvements and bug fixes',\n\t\texcerpt:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tdescription:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tslug: 'performance-improvements-bug-fixes',\n\t\tpublished_at: '2025-02-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'Bug Fix', color: '#EF4444' },\n\t\t\t{ name: 'Performance', color: '#F59E0B' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n];\n\nexport const MOCK_CONVERSATIONS = [\n\t{\n\t\tid: 'conv_1',\n\t\tsubject: 'Question about pricing',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 1,\n\t\tassigned_user: {\n\t\t\tid: 'user_1',\n\t\t\tname: 'Sarah',\n\t\t\tavatar: null,\n\t\t},\n\t},\n\t{\n\t\tid: 'conv_2',\n\t\tsubject: 'Feature request',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(\n\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000\n\t\t).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 0,\n\t\tassigned_user: {\n\t\t\tid: 'user_2',\n\t\t\tname: 'Tom',\n\t\t\tavatar: null,\n\t\t},\n\t},\n];\n\nexport const MOCK_MESSAGES = {\n\tconv_1: [\n\t\t{\n\t\t\tid: 'msg_1',\n\t\t\tcontent: \"Hi there! 👋 I'm Sarah. How can I help you today?\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Sarah',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 50 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_2',\n\t\t\tcontent: 'Hi! I have a question about your enterprise pricing.',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n\tconv_2: [\n\t\t{\n\t\t\tid: 'msg_3',\n\t\t\tcontent: \"Hello! I'm Tom from the product team.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_4',\n\t\t\tcontent: 'I would love to see a dark mode feature!',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(\n\t\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000 - 30 * 60 * 1000\n\t\t\t).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_5',\n\t\t\tcontent:\n\t\t\t\t\"Great suggestion! That feature will be available next week. I'll let you know when it's ready.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n};\n\nexport const MOCK_HELP_COLLECTIONS = [\n\t{\n\t\tid: 'collection_1',\n\t\ttitle: 'Product Overview',\n\t\tdescription: 'See how your AI-first customer service solution works.',\n\t\tarticleCount: 24,\n\t\ticon: 'ph-book-open',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_2',\n\t\ttitle: 'Getting Started',\n\t\tdescription: 'Everything you need to know to get started with Product7.',\n\t\tarticleCount: 30,\n\t\ticon: 'ph-rocket',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_3',\n\t\ttitle: 'AI Agent',\n\t\tdescription:\n\t\t\t'Resolving customer questions instantly and accurately—from live chat to email.',\n\t\tarticleCount: 82,\n\t\ticon: 'ph-robot',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_4',\n\t\ttitle: 'Channels',\n\t\tdescription:\n\t\t\t'Enabling the channels you use to communicate with customers, all from the Inbox.',\n\t\tarticleCount: 45,\n\t\ticon: 'ph-chat-circle',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_5',\n\t\ttitle: 'Billing & Payments',\n\t\tdescription: 'Manage your subscription, invoices, and payment methods.',\n\t\tarticleCount: 12,\n\t\ticon: 'ph-credit-card',\n\t\turl: '#',\n\t},\n];\n\nexport const MOCK_SURVEYS = [\n\t{\n\t\tid: 'mock_nps_survey',\n\t\ttype: 'nps',\n\t\ttitle: 'How likely are you to recommend us?',\n\t\tdescription: 'Your feedback helps us improve',\n\t\tlow_label: 'Not likely',\n\t\thigh_label: 'Very likely',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_csat_survey',\n\t\ttype: 'csat',\n\t\ttitle: 'How satisfied are you?',\n\t\tdescription: 'Rate your experience with our product',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_ces_survey',\n\t\ttype: 'ces',\n\t\ttitle: 'How easy was it?',\n\t\tdescription: 'Rate the ease of completing your task',\n\t\tlow_label: 'Very difficult',\n\t\thigh_label: 'Very easy',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n];\n","export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport function getDeviceInfo() {\n\tif (typeof navigator === 'undefined') {\n\t\treturn { device: null, browser: null, os: null };\n\t}\n\n\tconst ua = navigator.userAgent;\n\n\tlet device = 'desktop';\n\tif (/Mobi|Android/i.test(ua)) {\n\t\tdevice = /Tablet|iPad/i.test(ua) ? 'tablet' : 'mobile';\n\t}\n\n\tlet browser = 'unknown';\n\tif (ua.includes('Firefox')) browser = 'firefox';\n\telse if (ua.includes('Edg')) browser = 'edge';\n\telse if (ua.includes('Chrome')) browser = 'chrome';\n\telse if (ua.includes('Safari')) browser = 'safari';\n\telse if (ua.includes('Opera') || ua.includes('OPR')) browser = 'opera';\n\n\tlet os = 'unknown';\n\tif (ua.includes('Windows')) os = 'windows';\n\telse if (ua.includes('Mac')) os = 'macos';\n\telse if (ua.includes('Linux')) os = 'linux';\n\telse if (ua.includes('Android')) os = 'android';\n\telse if (ua.includes('iPhone') || ua.includes('iPad')) os = 'ios';\n\n\treturn { device, browser, os };\n}\n","import { MOCK_CHANGELOGS } from '../mock-data';\nimport { delay } from '../utils/helpers.js';\n\nexport class ChangelogService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn { success: true, data: MOCK_CHANGELOGS };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/changelogs',\n\t\t\t\toptions\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n}\n","import { delay } from '../utils/helpers.js';\n\nexport class FeedbackService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(500);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_post_' + Date.now(),\n\t\t\t\t\ttitle: feedbackData.title,\n\t\t\t\t\tcontent: feedbackData.content,\n\t\t\t\t},\n\t\t\t\tmessage: 'Feedback submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\tboard:\n\t\t\t\tfeedbackData.board_id || feedbackData.board || feedbackData.boardId,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst response = await this.api._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn response;\n\t\t});\n\t}\n}\n","import { MOCK_HELP_COLLECTIONS } from '../mock-data';\nimport { delay } from '../utils/helpers.js';\n\nexport class HelpService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getHelpCollections(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { status: true, data: MOCK_HELP_COLLECTIONS };\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/collections',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync searchHelpArticles(query, options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst filtered = MOCK_HELP_COLLECTIONS.filter(\n\t\t\t\t(c) =>\n\t\t\t\t\tc.title.toLowerCase().includes(query.toLowerCase()) ||\n\t\t\t\t\tc.description.toLowerCase().includes(query.toLowerCase())\n\t\t\t);\n\t\t\treturn { status: true, data: filtered };\n\t\t}\n\n\t\tconst params = { q: query, ...options };\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/search',\n\t\t\tparams\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n}\n","import { MOCK_CONVERSATIONS, MOCK_MESSAGES } from '../mock-data';\nimport { delay } from '../utils/helpers.js';\n\nexport class MessengerService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getMessengerSettings() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tgreeting_message: 'Hi there! How can we help you today?',\n\t\t\t\t\tteam_name: 'Support Team',\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/settings', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync checkAgentsOnline() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tagents_online: true,\n\t\t\t\t\tonline_count: 2,\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/agents/online', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversations(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: MOCK_CONVERSATIONS,\n\t\t\t\tmeta: { total: MOCK_CONVERSATIONS.length, page: 1, limit: 20 },\n\t\t\t};\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/messenger/conversations',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversation(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst conv = MOCK_CONVERSATIONS.find((c) => c.id === conversationId);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { ...conv, messages: MOCK_MESSAGES[conversationId] || [] },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/messenger/conversations/${conversationId}`,\n\t\t\t{\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n\n\tasync startConversation(data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\tconst newConv = {\n\t\t\t\tid: 'conv_' + Date.now(),\n\t\t\t\tsubject: data.subject || 'New conversation',\n\t\t\t\tstatus: 'open',\n\t\t\t\tlast_message_at: new Date().toISOString(),\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: data.message,\n\t\t\t\t\t\tsender_type: 'customer',\n\t\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tMOCK_CONVERSATIONS.unshift(newConv);\n\t\t\tMOCK_MESSAGES[newConv.id] = newConv.messages;\n\t\t\treturn { status: true, data: newConv };\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/conversations', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmessage: data.message,\n\t\t\t\tsubject: data.subject || '',\n\t\t\t}),\n\t\t});\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst newMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: data.content,\n\t\t\t\tsender_type: 'customer',\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t};\n\t\t\tif (!MOCK_MESSAGES[conversationId]) {\n\t\t\t\tMOCK_MESSAGES[conversationId] = [];\n\t\t\t}\n\t\t\tMOCK_MESSAGES[conversationId].push(newMessage);\n\t\t\treturn { status: true, data: newMessage };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/messenger/conversations/${conversationId}/messages`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ content: data.content }),\n\t\t\t}\n\t\t);\n\t}\n\n\tasync getUnreadCount() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tconst count = MOCK_CONVERSATIONS.reduce(\n\t\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t\t0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { unread_count: count, unread_conversations: count > 0 ? 1 : 0 },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/unread', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/messenger/conversations/${conversationId}/read`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n}\n","export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[FeedbackSDK Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[FeedbackSDK Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../../utils/errors.js';\nimport { MOCK_SURVEYS } from '../mock-data';\nimport { delay, getDeviceInfo } from '../utils/helpers.js';\n\nexport class SurveyService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { success: true, data: MOCK_SURVEYS };\n\t\t}\n\n\t\tconst params = {\n\t\t\turl:\n\t\t\t\tcontext.url ||\n\t\t\t\t(typeof window !== 'undefined' ? window.location.href : ''),\n\t\t\t...getDeviceInfo(),\n\t\t\t...(context.userProperties && {\n\t\t\t\tuser_properties: context.userProperties,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/surveys/active',\n\t\t\t\tparams\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_response_' + Date.now(),\n\t\t\t\t\tsurvey_id: surveyId,\n\t\t\t\t\t...responseData,\n\t\t\t\t},\n\t\t\t\tmessage: 'Survey response submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\trating: responseData.rating,\n\t\t\tfeedback: responseData.feedback || '',\n\t\t\tanswers: responseData.answers || {},\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/responses`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(100);\n\t\t\treturn { success: true, message: 'Survey dismissed successfully' };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/dismiss`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nexport class BaseAPIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.userContext = config.userContext || null;\n\t\tthis.mock = config.mock || false;\n\t\tthis.env = config.env || 'production';\n\t\tthis.baseURL = this._getBaseURL(config);\n\n\t\tthis._loadStoredSession();\n\t}\n\n\t_getBaseURL(config) {\n\t\tif (config.apiUrl) return config.apiUrl;\n\n\t\tconst ENV_URLS = {\n\t\t\tproduction: {\n\t\t\t\tbase: 'https://api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.api.product7.io/api/v1`,\n\t\t\t},\n\t\t\tstaging: {\n\t\t\t\tbase: 'https://staging.api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.staging.api.product7.io/api/v1`,\n\t\t\t},\n\t\t};\n\n\t\tconst envConfig = ENV_URLS[this.env] || ENV_URLS.production;\n\t\treturn this.workspace\n\t\t\t? envConfig.withWorkspace(this.workspace)\n\t\t\t: envConfig.base;\n\t}\n\n\tasync init(userContext = null) {\n\t\tif (userContext) {\n\t\t\tthis.userContext = userContext;\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.workspace || !this.userContext) {\n\t\t\tthrow new APIError(\n\t\t\t\t400,\n\t\t\t\t`Missing ${!this.workspace ? 'workspace' : 'user context'} for initialization`\n\t\t\t);\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\treturn this._initMockSession();\n\t\t}\n\n\t\treturn this._initRealSession();\n\t}\n\n\tasync _initMockSession() {\n\t\tthis.sessionToken = 'mock_session_' + Date.now();\n\t\tthis.sessionExpiry = new Date(Date.now() + 3600 * 1000);\n\t\tthis._storeSession();\n\t\treturn {\n\t\t\tsessionToken: this.sessionToken,\n\t\t\tconfig: {\n\t\t\t\tprimaryColor: '#21244A',\n\t\t\t\tbackgroundColor: '#ffffff',\n\t\t\t\ttextColor: '#1F2937',\n\t\t\t\tboardId: 'feature-requests',\n\t\t\t\tsize: 'medium',\n\t\t\t\tdisplayMode: 'modal',\n\t\t\t},\n\t\t\texpiresIn: 3600,\n\t\t};\n\t}\n\n\tasync _initRealSession() {\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t\tuser: this.userContext,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t});\n\n\t\t\tthis.sessionToken = response.session_token;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + response.expires_in * 1000);\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: response.config || {},\n\t\t\t\texpiresIn: response.expires_in,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tasync _ensureSession() {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\t}\n\n\tasync _handleAuthRetry(method, ...args) {\n\t\ttry {\n\t\t\treturn await method.apply(this, args);\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn await method.apply(this, args);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.userContext = userContext;\n\t\tthis._storeData('feedbackSDK_userContext', userContext);\n\t}\n\n\tgetUserContext() {\n\t\treturn this.userContext;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis._removeData('feedbackSDK_session');\n\t\tthis._removeData('feedbackSDK_userContext');\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tthis._storeData('feedbackSDK_session', sessionData);\n\t\t} catch (error) {\n\t\t\t// Silent fail\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t_storeData(key, value) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem(key, JSON.stringify(value));\n\t\t}\n\t}\n\n\t_removeData(key) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem(key);\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) throw error;\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n\n\t_buildQueryParams(params) {\n\t\tconst queryParams = new URLSearchParams();\n\t\tObject.entries(params).forEach(([key, value]) => {\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tqueryParams.append(\n\t\t\t\t\tkey,\n\t\t\t\t\ttypeof value === 'object' ? JSON.stringify(value) : value\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\treturn queryParams.toString();\n\t}\n\n\t_getEndpointWithParams(endpoint, params) {\n\t\tconst queryString = this._buildQueryParams(params);\n\t\treturn `${endpoint}${queryString ? '?' + queryString : ''}`;\n\t}\n}\n","import { ChangelogService } from '../api/services/ChangelogService.js';\nimport { FeedbackService } from '../api/services/FeedbackService.js';\nimport { HelpService } from '../api/services/HelpService.js';\nimport { MessengerService } from '../api/services/MessengerService.js';\nimport { SurveyService } from '../api/services/SurveyService.js';\nimport { BaseAPIService } from './BaseAPIService.js';\n\nexport class APIService extends BaseAPIService {\n\tconstructor(config = {}) {\n\t\tsuper(config);\n\n\t\tthis.feedback = new FeedbackService(this);\n\t\tthis.survey = new SurveyService(this);\n\t\tthis.messenger = new MessengerService(this);\n\t\tthis.help = new HelpService(this);\n\t\tthis.changelog = new ChangelogService(this);\n\t}\n\n\tasync submitFeedback(data) {\n\t\treturn this.feedback.submitFeedback(data);\n\t}\n\n\tasync getActiveSurveys(context) {\n\t\treturn this.survey.getActiveSurveys(context);\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\treturn this.survey.submitSurveyResponse(surveyId, responseData);\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\treturn this.survey.dismissSurvey(surveyId);\n\t}\n\n\tasync getMessengerSettings() {\n\t\treturn this.messenger.getMessengerSettings();\n\t}\n\n\tasync checkAgentsOnline() {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tagents_online: true,\n\t\t\t\t\tonline_count: 2,\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t\tavailable_agents: [\n\t\t\t\t\t\t{ full_name: 'Sarah', picture: '' },\n\t\t\t\t\t\t{ full_name: 'Tom', picture: '' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this._makeRequest('/widget/messenger/agents/online', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversations(options) {\n\t\treturn this.messenger.getConversations(options);\n\t}\n\n\tasync getConversation(conversationId) {\n\t\treturn this.messenger.getConversation(conversationId);\n\t}\n\n\tasync getMessages(conversationId, options) {\n\t\treturn this.messenger.getMessages(conversationId, options);\n\t}\n\n\tasync startConversation(data) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tconsole.log('[APIService] startConversation: session invalid, calling init...');\n\t\t\ttry {\n\t\t\t\tawait this.init();\n\t\t\t\tconsole.log('[APIService] startConversation: init result, token:', this.sessionToken ? 'set' : 'null');\n\t\t\t} catch (initError) {\n\t\t\t\tconsole.error('[APIService] startConversation: init failed:', initError.message);\n\t\t\t\tthrow initError;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.error('[APIService] startConversation: no session token after init');\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tconsole.log('[APIService] startConversation: sending to', `${this.baseURL}/widget/messenger/conversations`, 'mock:', this.mock);\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\tconst newConv = {\n\t\t\t\tid: 'conv_' + Date.now(),\n\t\t\t\tsubject: data.subject || 'New conversation',\n\t\t\t\tstatus: 'open',\n\t\t\t\tlast_message_at: new Date().toISOString(),\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: data.message,\n\t\t\t\t\t\tsender_type: 'customer',\n\t\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tMOCK_CONVERSATIONS.unshift(newConv);\n\t\t\tMOCK_MESSAGES[newConv.id] = newConv.messages;\n\t\t\treturn { status: true, data: newConv };\n\t\t}\n\n\t\treturn this._makeRequest('/widget/messenger/conversations', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmessage: data.message,\n\t\t\t\tsubject: data.subject || '',\n\t\t\t}),\n\t\t});\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 200));\n\t\t\tconst newMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: data.content,\n\t\t\t\tattachments: data.attachments || [],\n\t\t\t\tsender_type: 'customer',\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t};\n\t\t\tif (!MOCK_MESSAGES[conversationId]) {\n\t\t\t\tMOCK_MESSAGES[conversationId] = [];\n\t\t\t}\n\t\t\tMOCK_MESSAGES[conversationId].push(newMessage);\n\t\t\treturn { status: true, data: newMessage };\n\t\t}\n\n\t\tconst payload = { content: data.content };\n\t\tif (data.attachments && data.attachments.length > 0) {\n\t\t\tpayload.attachments = data.attachments;\n\t\t}\n\n\t\treturn this._makeRequest(`/widget/messenger/conversations/${conversationId}/messages`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify(payload),\n\t\t});\n\t}\n\n\t/**\n\t * Upload a file to CDN via widget endpoint\n\t * @param {string} base64Data - Base64 encoded file data (with or without data URI prefix)\n\t * @param {string} filename - Original filename\n\t * @returns {Promise<Object>} Response with url\n\t */\n\tasync uploadFile(base64Data, filename) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\treturn { status: true, url: `https://mock-cdn.example.com/${filename}` };\n\t\t}\n\n\t\treturn this._makeRequest('/widget/messenger/upload', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({ file: base64Data, filename }),\n\t\t});\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\treturn this.messenger.sendTypingIndicator(conversationId, isTyping);\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\treturn this.messenger.markConversationAsRead(conversationId);\n\t}\n\n\tasync getUnreadCount() {\n\t\treturn this.messenger.getUnreadCount();\n\t}\n\n\tasync submitRating(conversationId, data) {\n\t\treturn this.messenger.submitRating(conversationId, data);\n\t}\n\n\tasync identifyContact(data) {\n\t\treturn this.messenger.identifyContact(data);\n\t}\n\n\tasync getHelpCollections(options) {\n\t\treturn this.help.getHelpCollections(options);\n\t}\n\n\tasync searchHelpArticles(query, options) {\n\t\treturn this.help.searchHelpArticles(query, options);\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\n\t\t\t// Invalidate mock tokens when not in mock mode (and vice versa)\n\t\t\tconst isMockToken = sessionData.token && sessionData.token.startsWith('mock_');\n\t\t\tif (isMockToken !== this.mock) {\n\t\t\t\tlocalStorage.removeItem('feedbackSDK_session');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n}\n","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[FeedbackSDK] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tstatic STORAGE_KEY = 'feedback_submitted';\n\tstatic DEFAULT_COOLDOWN_DAYS = 30; // Don't show for 30 days after submission\n\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\tboardId: this.sdk.config.boardId,\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor || '#21244A',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\ttextColor: options.textColor || '#1F2937',\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\tsuppressAfterSubmission: true, // Don't show widget again after submission\n\t\t\tsuppressionDays: BaseWidget.DEFAULT_COOLDOWN_DAYS,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisLoading: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\t// Check if feedback was recently submitted and should be suppressed\n\t\tif (this.options.suppressAfterSubmission && this._hasRecentlySubmitted()) {\n\t\t\tthis.sdk.eventBus.emit('widget:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\treason: 'recently_submitted',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\n\t\tif (this.options.displayMode === 'modal') {\n\t\t\tthis._showLoadingModal();\n\t\t\t// Simulate loading delay then show form\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._hideLoadingModal();\n\t\t\t\tthis._renderPanel();\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tif (this.panelElement) {\n\t\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t\t}\n\t\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, 600);\n\t\t} else {\n\t\t\tthis._renderPanel();\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (this.panelElement) {\n\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t}\n\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_showLoadingModal() {\n\t\tthis.state.isLoading = true;\n\n\t\t// Create backdrop\n\t\tthis.backdropElement = document.createElement('div');\n\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t// Create loading modal\n\t\tthis.loadingElement = document.createElement('div');\n\t\tthis.loadingElement.className = `feedback-loading-modal theme-${this.options.theme}`;\n\t\tthis.loadingElement.innerHTML = `\n\t\t\t<div class=\"feedback-loading-spinner\"></div>\n\t\t`;\n\t\tdocument.body.appendChild(this.loadingElement);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.backdropElement.classList.add('show');\n\t\t\tthis.loadingElement.classList.add('show');\n\t\t});\n\t}\n\n\t_hideLoadingModal() {\n\t\tthis.state.isLoading = false;\n\t\tif (this.loadingElement) {\n\t\t\tthis.loadingElement.remove();\n\t\t\tthis.loadingElement = null;\n\t\t}\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\t\tthis.panelElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t\tthis._resetForm();\n\t\t}, 300);\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardId,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\t// Track that feedback was submitted\n\t\t\tthis._trackSubmission();\n\n\t\t\tthis._showSuccessMessage();\n\t\t\tthis.closePanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t/**\n\t * Track that feedback was submitted to localStorage\n\t */\n\t_trackSubmission() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst data = {\n\t\t\t\tsubmittedAt: Date.now(),\n\t\t\t\tboardId: this.options.boardId,\n\t\t\t};\n\t\t\tlocalStorage.setItem(storageKey, JSON.stringify(data));\n\t\t} catch (e) {\n\t\t\t// localStorage may not be available\n\t\t\tconsole.warn('Failed to track feedback submission:', e);\n\t\t}\n\t}\n\n\t/**\n\t * Check if feedback was recently submitted (within cooldown period)\n\t * Uses backend tracking (preferred) with localStorage as fallback\n\t * @returns {boolean} true if feedback was submitted within the cooldown period\n\t */\n\t_hasRecentlySubmitted() {\n\t\tconst cooldownMs = this.options.suppressionDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\t// Check backend tracking first (from init response)\n\t\tif (this.sdk.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.sdk.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to localStorage\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\tconst submittedAt = data.submittedAt;\n\n\t\t\treturn now - submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\t// localStorage may not be available or data is corrupted\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Clear the submission tracking (allow showing the widget again)\n\t */\n\tclearSubmissionTracking() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear submission tracking:', e);\n\t\t}\n\t}\n\n\t/**\n\t * Check if the widget should be shown based on submission history\n\t * @returns {boolean} true if the widget should be shown\n\t */\n\tshouldShow() {\n\t\tif (!this.options.suppressAfterSubmission) return true;\n\t\treturn !this._hasRecentlySubmitted();\n\t}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop && !this.backdropElement) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tconst modeClass =\n\t\t\tthis.options.displayMode === 'modal'\n\t\t\t\t? 'feedback-modal'\n\t\t\t\t: 'feedback-panel';\n\t\tconst sizeClass = `size-${this.options.size}`;\n\t\tthis.panelElement = document.createElement('div');\n\t\tthis.panelElement.className = `${modeClass} ${sizeClass}`;\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--primary-color',\n\t\t\tthis.options.primaryColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--bg-color',\n\t\t\tthis.options.backgroundColor\n\t\t);\n\t\tthis.panelElement.style.setProperty('--text-color', this.options.textColor);\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"feedback-panel-close\" type=\"button\" aria-label=\"Close\">×</button>\n </div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"feedback-form-group\">\n <label for=\"feedback-title-${this.id}\">Title (optional)</label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <label for=\"feedback-content-${this.id}\">Message *</label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.feedback-panel-close')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.feedback-btn-submit');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t\t? 'Sending...'\n\t\t\t\t\t: 'Send Feedback';\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-success-notification';\n\t\tnotification.innerHTML = `\n <div class=\"feedback-success-content\">\n <div class=\"feedback-success-icon\">✓</div>\n <span>Feedback submitted successfully!</span>\n <button class=\"feedback-success-close\" aria-label=\"Close\">×</button>\n </div>\n `;\n\n\t\tdocument.body.appendChild(notification);\n\n\t\tconst closeBtn = notification.querySelector('.feedback-success-close');\n\t\tconst closeNotification = () => {\n\t\t\tif (notification.parentNode) {\n\t\t\t\tnotification.style.opacity = '0';\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (notification.parentNode) {\n\t\t\t\t\t\tnotification.parentNode.removeChild(notification);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t};\n\n\t\tcloseBtn.addEventListener('click', closeNotification);\n\n\t\tsetTimeout(closeNotification, 4000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.className = this.panelElement.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class ButtonWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'button' });\n\t\tthis.isMinimized = false;\n\t}\n\n\t_render() {\n\t\tconst button = document.createElement('div');\n\t\tbutton.className = `feedback-widget feedback-widget-button theme-${this.options.theme} position-${this.options.position}`;\n\t\tbutton.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\">\n <svg class=\"feedback-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" fill=\"currentColor\">\n <path d=\"M216,80H184V48a16,16,0,0,0-16-16H40A16,16,0,0,0,24,48V176a8,8,0,0,0,13,6.22L72,154V184a16,16,0,0,0,16,16h93.59L219,230.22a8,8,0,0,0,5,1.78,8,8,0,0,0,8-8V96A16,16,0,0,0,216,80ZM66.55,137.78,40,159.25V48H168v88H71.58A8,8,0,0,0,66.55,137.78ZM216,207.25l-26.55-21.47a8,8,0,0,0-5-1.78H88V152h80a16,16,0,0,0,16-16V96h32Z\"/>\n </svg>\n <span class=\"feedback-text\">Feedback</span>\n \n <div class=\"feedback-minimize-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M213.66,53.66,163.31,104H192a8,8,0,0,1,0,16H144a8,8,0,0,1-8-8V64a8,8,0,0,1,16,0V92.69l50.34-50.35a8,8,0,0,1,11.32,11.32ZM112,136H64a8,8,0,0,0,0,16H92.69L42.34,202.34a8,8,0,0,0,11.32,11.32L104,163.31V192a8,8,0,0,0,16,0V144A8,8,0,0,0,112,136Z\"/>\n </svg>\n </div>\n \n <div class=\"feedback-expand-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M112,40V64.69L61.66,14.34A8,8,0,0,0,50.34,25.66L100.69,76H72a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V36A8,8,0,0,0,112,40Zm131.06,70.61a8,8,0,0,0-8.72,1.73L184,162.69V136a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8h48a8,8,0,0,0,0-16H195.31l50.35-50.34A8,8,0,0,0,243.06,110.61Z\"/>\n </svg>\n </div>\n </button>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(button.style, this.options.customStyles);\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t_attachEvents() {\n\t\tconst button = this.element.querySelector('.feedback-trigger-btn');\n\t\tconst minimizeIcon = this.element.querySelector('.feedback-minimize-icon');\n\t\tconst expandIcon = this.element.querySelector('.feedback-expand-icon');\n\n\t\t// Add click handlers directly to the icons\n\t\tminimizeIcon.addEventListener('click', (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tthis.minimize();\n\t\t});\n\n\t\texpandIcon.addEventListener('click', (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tthis.restore();\n\t\t});\n\n\t\t// Main button click handler\n\t\tbutton.addEventListener('click', (e) => {\n\t\t\t// Check if the click originated from an icon\n\t\t\tif (\n\t\t\t\te.target.closest('.feedback-minimize-icon') ||\n\t\t\t\te.target.closest('.feedback-expand-icon')\n\t\t\t) {\n\t\t\t\treturn; // Let the icon handlers deal with it\n\t\t\t}\n\n\t\t\tif (!this.isMinimized) {\n\t\t\t\tthis.openPanel();\n\t\t\t}\n\t\t});\n\n\t\tbutton.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting && !this.isMinimized) {\n\t\t\t\tbutton.style.transform = 'translateY(-2px)';\n\t\t\t}\n\t\t});\n\n\t\tbutton.addEventListener('mouseleave', () => {\n\t\t\tif (!this.isMinimized) {\n\t\t\t\tbutton.style.transform = 'translateY(0)';\n\t\t\t}\n\t\t});\n\t}\n\n\tminimize() {\n\t\tthis.isMinimized = true;\n\t\tthis.element.classList.add('minimized');\n\t}\n\n\trestore() {\n\t\tthis.isMinimized = false;\n\t\tthis.element.classList.remove('minimized');\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\t}\n\n\tupdateText(text) {\n\t\tconst textEl = this.element?.querySelector('.feedback-text');\n\t\tif (textEl) {\n\t\t\ttextEl.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class ChangelogWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'changelog' });\n\t\tthis.changelogs = [];\n\t\tthis.isLoading = false;\n\t\tthis.modalElement = null;\n\t\tthis.sidebarElement = null;\n\t\tthis.currentIndex = 0;\n\t}\n\n\t_render() {\n\t\tconst trigger = document.createElement('div');\n\t\ttrigger.className = `feedback-widget changelog-widget theme-${this.options.theme} position-${this.options.position}`;\n\t\ttrigger.innerHTML = `\n\t\t\t<button class=\"changelog-trigger-btn\" type=\"button\" aria-label=\"View Updates\">\n\t\t\t\t<svg class=\"changelog-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t\t\t<path d=\"M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L16.6 14L18.2 21L12 17.3L5.8 21Z\"/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"changelog-text\">${this.options.triggerText || \"What's New\"}</span>\n\t\t\t\t<span class=\"changelog-confetti-emoji\">🎉</span>\n\t\t\t\t${this.options.showBadge ? '<span class=\"changelog-badge\"></span>' : ''}\n\t\t\t</button>\n\t\t`;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(trigger.style, this.options.customStyles);\n\t\t}\n\n\t\treturn trigger;\n\t}\n\n\t_attachEvents() {\n\t\tconst button = this.element.querySelector('.changelog-trigger-btn');\n\n\t\tbutton.addEventListener('click', () => {\n\t\t\tthis.openSidebar();\n\t\t});\n\n\t\tbutton.addEventListener('mouseenter', () => {\n\t\t\tbutton.style.transform = 'translateY(-2px)';\n\t\t});\n\n\t\tbutton.addEventListener('mouseleave', () => {\n\t\t\tbutton.style.transform = 'translateY(0)';\n\t\t});\n\t}\n\n\t// ==================== POPUP MODAL ====================\n\n\tasync openModal() {\n\t\tif (this.modalElement) return;\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createModal();\n\n\t\t// Load changelogs if not already loaded\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis.currentIndex = 0;\n\t\tthis._renderCurrentChangelog();\n\n\t\t// Prevent body scroll\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.modalElement) {\n\t\t\t\tthis.modalElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\tcloseModal() {\n\t\t// Restore body scroll\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.modalElement && this.modalElement.parentNode) {\n\t\t\t\tthis.modalElement.parentNode.removeChild(this.modalElement);\n\t\t\t\tthis.modalElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createModal() {\n\t\t// Create backdrop\n\t\tthis.backdropElement = document.createElement('div');\n\t\tthis.backdropElement.className = 'changelog-modal-backdrop';\n\t\tdocument.body.appendChild(this.backdropElement);\n\t\tthis.backdropElement.addEventListener('click', () => this.closeModal());\n\n\t\t// Create modal\n\t\tthis.modalElement = document.createElement('div');\n\t\tthis.modalElement.className = `changelog-modal theme-${this.options.theme}`;\n\t\tthis.modalElement.innerHTML = `\n\t\t\t<div class=\"changelog-modal-container\">\n\t\t\t\t<button class=\"changelog-modal-close\" type=\"button\" aria-label=\"Close\">×</button>\n\t\t\t\t<div class=\"changelog-modal-content\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"changelog-loading-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.modalElement);\n\n\t\t// Prevent clicks inside modal from closing it\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-container')\n\t\t\t.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t// Attach close button event\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-close')\n\t\t\t.addEventListener('click', () => this.closeModal());\n\n\t\t// Handle escape key\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closeModal();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\t// ==================== LIST MODAL ====================\n\n\tasync openSidebar() {\n\t\tif (this.listModalElement) return;\n\n\t\t// Close popup modal if open\n\t\tif (this.modalElement) {\n\t\t\tthis.closeModal();\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 350));\n\t\t}\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createListModal();\n\n\t\t// Load changelogs if not already loaded\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis._renderChangelogList();\n\n\t\t// Prevent body scroll\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.listModalElement) {\n\t\t\t\tthis.listModalElement.classList.add('open');\n\t\t\t\t// Trigger confetti animation\n\t\t\t\tthis._showConfetti();\n\t\t\t}\n\t\t\tif (this.listModalBackdropElement) {\n\t\t\t\tthis.listModalBackdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\t_showConfetti() {\n\t\tconst colors = [\n\t\t\t'#FF6B6B',\n\t\t\t'#4ECDC4',\n\t\t\t'#FFE66D',\n\t\t\t'#95E1D3',\n\t\t\t'#F38181',\n\t\t\t'#AA96DA',\n\t\t\t'#FCBAD3',\n\t\t\t'#A8D8EA',\n\t\t];\n\t\tconst confettiCount = 50;\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'changelog-confetti-container';\n\t\tdocument.body.appendChild(container);\n\n\t\tfor (let i = 0; i < confettiCount; i++) {\n\t\t\tconst confetti = document.createElement('div');\n\t\t\tconfetti.className = 'changelog-confetti';\n\t\t\tconfetti.style.left = Math.random() * 100 + '%';\n\t\t\tconfetti.style.backgroundColor =\n\t\t\t\tcolors[Math.floor(Math.random() * colors.length)];\n\t\t\tconfetti.style.animationDelay = Math.random() * 0.5 + 's';\n\t\t\tconfetti.style.animationDuration = Math.random() * 1 + 1.5 + 's';\n\n\t\t\t// Random shapes\n\t\t\tconst shapes = ['circle', 'square', 'rectangle'];\n\t\t\tconst shape = shapes[Math.floor(Math.random() * shapes.length)];\n\t\t\tif (shape === 'circle') {\n\t\t\t\tconfetti.style.borderRadius = '50%';\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t} else if (shape === 'rectangle') {\n\t\t\t\tconfetti.style.width = Math.random() * 4 + 3 + 'px';\n\t\t\t\tconfetti.style.height = Math.random() * 10 + 8 + 'px';\n\t\t\t} else {\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t}\n\n\t\t\tcontainer.appendChild(confetti);\n\t\t}\n\n\t\t// Remove confetti after animation\n\t\tsetTimeout(() => {\n\t\t\tif (container.parentNode) {\n\t\t\t\tcontainer.parentNode.removeChild(container);\n\t\t\t}\n\t\t}, 2500);\n\t}\n\n\tcloseSidebar() {\n\t\t// Restore body scroll\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.listModalElement) {\n\t\t\tthis.listModalElement.classList.remove('open');\n\t\t}\n\t\tif (this.listModalBackdropElement) {\n\t\t\tthis.listModalBackdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.listModalElement && this.listModalElement.parentNode) {\n\t\t\t\tthis.listModalElement.parentNode.removeChild(this.listModalElement);\n\t\t\t\tthis.listModalElement = null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.listModalBackdropElement &&\n\t\t\t\tthis.listModalBackdropElement.parentNode\n\t\t\t) {\n\t\t\t\tthis.listModalBackdropElement.parentNode.removeChild(\n\t\t\t\t\tthis.listModalBackdropElement\n\t\t\t\t);\n\t\t\t\tthis.listModalBackdropElement = null;\n\t\t\t}\n\t\t\tif (this._listModalEscapeHandler) {\n\t\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createListModal() {\n\t\t// Create backdrop\n\t\tthis.listModalBackdropElement = document.createElement('div');\n\t\tthis.listModalBackdropElement.className = 'changelog-list-modal-backdrop';\n\t\tdocument.body.appendChild(this.listModalBackdropElement);\n\t\tthis.listModalBackdropElement.addEventListener('click', () =>\n\t\t\tthis.closeSidebar()\n\t\t);\n\n\t\t// Create list modal\n\t\tthis.listModalElement = document.createElement('div');\n\t\tthis.listModalElement.className = `changelog-list-modal theme-${this.options.theme}`;\n\t\tthis.listModalElement.innerHTML = `\n\t\t\t<div class=\"changelog-list-modal-container\">\n\t\t\t\t<div class=\"changelog-list-modal-header\">\n\t\t\t\t\t<h2>${this.options.title || \"What's New\"} 🎉</h2>\n\t\t\t\t\t<button class=\"changelog-list-modal-close\" type=\"button\" aria-label=\"Close\">×</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-list-modal-body\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"changelog-loading-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.listModalElement);\n\n\t\t// Prevent clicks inside modal from closing it\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-container')\n\t\t\t.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t// Attach close button event\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-close')\n\t\t\t.addEventListener('click', () => this.closeSidebar());\n\n\t\t// Handle escape key\n\t\tthis._listModalEscapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closeSidebar();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._listModalEscapeHandler);\n\t}\n\n\t_renderChangelogList() {\n\t\tconst body = this.listModalElement.querySelector(\n\t\t\t'.changelog-list-modal-body'\n\t\t);\n\n\t\tif (this.isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tbody.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tbody.innerHTML = `\n\t\t\t<div class=\"changelog-list\">\n\t\t\t\t${this.changelogs.map((changelog, index) => this._renderChangelogListItem(changelog, index)).join('')}\n\t\t\t</div>\n\t\t`;\n\n\t\t// Attach click events to items\n\t\tbody.querySelectorAll('.changelog-list-item').forEach((item, index) => {\n\t\t\titem.addEventListener('click', () => {\n\t\t\t\tconst changelog = this.changelogs[index];\n\t\t\t\tthis._handleViewUpdate(changelog);\n\t\t\t});\n\t\t});\n\t}\n\n\t_renderChangelogListItem(changelog, index) {\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst date = changelog.published_at\n\t\t\t? this._formatDate(changelog.published_at)\n\t\t\t: '';\n\n\t\treturn `\n\t\t\t<div class=\"changelog-list-item\" data-index=\"${index}\">\n\t\t\t\t<div class=\"changelog-list-item-main\">\n\t\t\t\t\t${\n\t\t\t\t\t\thasImage\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<div class=\"changelog-list-item-image\">\n\t\t\t\t\t\t\t<img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<div class=\"changelog-list-item-content\">\n\t\t\t\t\t\t${date ? `<span class=\"changelog-list-item-date\">${date}</span>` : ''}\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\tchangelog.labels && changelog.labels.length > 0\n\t\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t\t<div class=\"changelog-list-item-labels\">\n\t\t\t\t\t\t\t\t${changelog.labels\n\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t(label) => `\n\t\t\t\t\t\t\t\t\t<span class=\"changelog-label\" style=\"background-color: ${label.color || '#E5E7EB'}; color: ${this._getContrastColor(label.color || '#E5E7EB')}\">${label.name}</span>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<h3 class=\"changelog-list-item-title\">${changelog.title}</h3>\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\tchangelog.excerpt || changelog.description\n\t\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t\t<p class=\"changelog-list-item-description\">${changelog.excerpt || changelog.description}</p>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync _loadChangelogs() {\n\t\tthis.isLoading = true;\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs();\n\t\t\tthis.changelogs = result.data || [];\n\t\t\tthis.sdk.eventBus.emit('changelog:loaded', {\n\t\t\t\tchangelogs: this.changelogs,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.changelogs = [];\n\t\t\tthis.sdk.eventBus.emit('changelog:error', { error });\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\t_renderCurrentChangelog() {\n\t\tconst content = this.modalElement.querySelector('.changelog-modal-content');\n\n\t\tif (this.isLoading) {\n\t\t\treturn; // Keep showing loading spinner\n\t\t}\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tcontent.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tconst changelog = this.changelogs[this.currentIndex];\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst hasMultiple = this.changelogs.length > 1;\n\n\t\tcontent.innerHTML = `\n\t\t\t<div class=\"changelog-popup-item\">\n\t\t\t\t${\n\t\t\t\t\thasImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"changelog-popup-image\">\n\t\t\t\t\t\t<img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"changelog-popup-body\">\n\t\t\t\t\t<h2 class=\"changelog-popup-title\">${changelog.title}</h2>\n\t\t\t\t\t${\n\t\t\t\t\t\tchangelog.excerpt || changelog.description\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<p class=\"changelog-popup-description\">${changelog.excerpt || changelog.description}</p>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<button class=\"changelog-popup-btn\" type=\"button\">\n\t\t\t\t\t\t${this.options.viewButtonText || 'View Update'}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-popup-footer\">\n\t\t\t\t\t${\n\t\t\t\t\t\thasMultiple\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<div class=\"changelog-popup-dots\">\n\t\t\t\t\t\t\t${this.changelogs\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(_, i) => `\n\t\t\t\t\t\t\t\t<span class=\"changelog-dot ${i === this.currentIndex ? 'active' : ''}\" data-index=\"${i}\"></span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<button class=\"changelog-view-all-btn\" type=\"button\">\n\t\t\t\t\t\tView all updates\n\t\t\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n\t\t\t\t\t\t\t<path d=\"M5 12h14M12 5l7 7-7 7\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\t// Attach view button event\n\t\tcontent\n\t\t\t.querySelector('.changelog-popup-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis._handleViewUpdate(changelog);\n\t\t\t});\n\n\t\t// Attach view all button event\n\t\tcontent\n\t\t\t.querySelector('.changelog-view-all-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.closeModal();\n\t\t\t\tsetTimeout(() => this.openSidebar(), 350);\n\t\t\t});\n\n\t\t// Attach dot navigation events\n\t\tif (hasMultiple) {\n\t\t\tcontent.querySelectorAll('.changelog-dot').forEach((dot) => {\n\t\t\t\tdot.addEventListener('click', (e) => {\n\t\t\t\t\tconst index = parseInt(e.target.dataset.index, 10);\n\t\t\t\t\tthis.currentIndex = index;\n\t\t\t\t\tthis._renderCurrentChangelog();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleViewUpdate(changelog) {\n\t\tthis.sdk.eventBus.emit('changelog:view', { changelog });\n\n\t\t// If there's a URL, open it\n\t\tif (changelog.url || changelog.slug) {\n\t\t\tconst url =\n\t\t\t\tchangelog.url ||\n\t\t\t\t`${this.options.changelogBaseUrl || ''}/${changelog.slug}`;\n\t\t\tif (this.options.openInNewTab !== false) {\n\t\t\t\twindow.open(url, '_blank', 'noopener,noreferrer');\n\t\t\t} else {\n\t\t\t\twindow.location.href = url;\n\t\t\t}\n\t\t}\n\n\t\t// Custom callback if provided\n\t\tif (typeof this.options.onViewUpdate === 'function') {\n\t\t\tthis.options.onViewUpdate(changelog);\n\t\t}\n\t}\n\n\t_formatDate(dateString) {\n\t\tconst date = new Date(dateString);\n\t\tconst options = { year: 'numeric', month: 'short', day: 'numeric' };\n\t\treturn date.toLocaleDateString('en-US', options);\n\t}\n\n\t_getContrastColor(hexColor) {\n\t\t// Remove # if present\n\t\tconst hex = hexColor.replace('#', '');\n\t\tconst r = parseInt(hex.substr(0, 2), 16);\n\t\tconst g = parseInt(hex.substr(2, 2), 16);\n\t\tconst b = parseInt(hex.substr(4, 2), 16);\n\t\t// Calculate luminance\n\t\tconst luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n\t\treturn luminance > 0.5 ? '#1F2937' : '#FFFFFF';\n\t}\n\n\thideBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) {\n\t\t\tbadge.style.display = 'none';\n\t\t}\n\t}\n\n\tshowBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) {\n\t\t\tbadge.style.display = 'block';\n\t\t}\n\t}\n\n\tnextChangelog() {\n\t\tif (this.currentIndex < this.changelogs.length - 1) {\n\t\t\tthis.currentIndex++;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tprevChangelog() {\n\t\tif (this.currentIndex > 0) {\n\t\t\tthis.currentIndex--;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tasync refresh() {\n\t\tthis.changelogs = [];\n\t\tawait this._loadChangelogs();\n\t\tif (this.modalElement) {\n\t\t\tthis.currentIndex = 0;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t\tif (this.listModalElement) {\n\t\t\tthis._renderChangelogList();\n\t\t}\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\t}\n\n\tdestroy() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t}\n\t\tif (this._listModalEscapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t}\n\t\tthis.closeModal();\n\t\tthis.closeSidebar();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = `feedback-widget feedback-widget-inline theme-${this.options.theme}`;\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"feedback-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <textarea \n name=\"content\" \n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n Send Feedback\n </button>\n <div class=\"feedback-error\" style=\"display: none;\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"feedback-success-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"feedback-btn feedback-btn-reset\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.feedback-btn-reset');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.style.display = 'block';\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.feedback-btn-submit');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}\n","/**\n * MessengerState - State management for the Messenger widget\n */\nexport class MessengerState {\n\tconstructor(options = {}) {\n\t\tthis.currentView = 'home'; // 'home', 'messages', 'chat', 'help', 'changelog'\n\t\tthis.isOpen = false;\n\t\tthis.unreadCount = 0;\n\t\tthis.activeConversationId = null;\n\n\t\t// Conversations\n\t\tthis.conversations = [];\n\t\tthis.messages = {}; // { conversationId: [messages] }\n\n\t\t// Help articles\n\t\tthis.helpArticles = [];\n\t\tthis.helpSearchQuery = '';\n\n\t\t// Changelog\n\t\tthis.homeChangelogItems = [];\n\t\tthis.changelogItems = [];\n\n\t\t// Team info\n\t\tthis.teamName = options.teamName || 'Support';\n\t\tthis.teamAvatars = options.teamAvatars || [];\n\t\tthis.welcomeMessage = options.welcomeMessage || 'How can we help?';\n\n\t\t// User info\n\t\tthis.userContext = options.userContext || null;\n\n\t\t// Feature flags\n\t\tthis.enableHelp = options.enableHelp !== false;\n\t\tthis.enableChangelog = options.enableChangelog !== false;\n\n\t\t// Agent availability\n\t\tthis.agentsOnline = false;\n\t\tthis.onlineCount = 0;\n\t\tthis.responseTime = 'Usually replies within a few minutes';\n\n\t\t// Typing indicators\n\t\tthis.typingUsers = {}; // { conversationId: { userName, timestamp } }\n\n\t\t// Loading states\n\t\tthis.isLoading = false;\n\t\tthis.isLoadingMessages = false;\n\n\t\t// Listeners\n\t\tthis._listeners = new Set();\n\t}\n\n\t/**\n\t * Subscribe to state changes\n\t */\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t/**\n\t * Notify all listeners of state change\n\t */\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\n\t/**\n\t * Set current view\n\t */\n\tsetView(view) {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = view;\n\t\tthis._notify('viewChange', { previousView, currentView: view });\n\t}\n\n\t/**\n\t * Toggle panel open/closed\n\t */\n\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\t/**\n\t * Set active conversation for chat view\n\t */\n\tsetActiveConversation(conversationId) {\n\t\tconst previousConversationId = this.activeConversationId;\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', { conversationId, previousConversationId });\n\t}\n\n\t/**\n\t * Update conversations list\n\t */\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\t/**\n\t * Add a new conversation\n\t */\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\t/**\n\t * Update messages for a conversation\n\t */\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\n\t/**\n\t * Add a message to a conversation\n\t */\n\taddMessage(conversationId, message) {\n\t\tif (!this.messages[conversationId]) {\n\t\t\tthis.messages[conversationId] = [];\n\t\t}\n\t\tthis.messages[conversationId].push(message);\n\n\t\t// Update conversation preview\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv) {\n\t\t\tconv.lastMessage = message.content;\n\t\t\tconv.lastMessageTime = message.timestamp;\n\t\t\tif (!message.isOwn) {\n\t\t\t\tconv.unread = (conv.unread || 0) + 1;\n\t\t\t\tthis._updateUnreadCount();\n\t\t\t}\n\t\t}\n\n\t\tthis._notify('messageAdded', { conversationId, message });\n\t}\n\n\t/**\n\t * Update a conversation by id\n\t */\n\tupdateConversation(conversationId, updates) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (!conv) {\n\t\t\treturn null;\n\t\t}\n\n\t\tObject.assign(conv, updates);\n\t\tthis._notify('conversationUpdated', { conversationId, conversation: conv });\n\t\treturn conv;\n\t}\n\n\t/**\n\t * Mark conversation as read\n\t */\n\tmarkAsRead(conversationId) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv && conv.unread > 0) {\n\t\t\tconv.unread = 0;\n\t\t\tthis._updateUnreadCount();\n\t\t\tthis._notify('conversationRead', { conversationId });\n\t\t}\n\t}\n\n\t/**\n\t * Update unread count\n\t */\n\t_updateUnreadCount() {\n\t\tthis.unreadCount = this.conversations.reduce(\n\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t0\n\t\t);\n\t\tthis._notify('unreadCountChange', { count: this.unreadCount });\n\t}\n\n\t/**\n\t * Set help articles\n\t */\n\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\t/**\n\t * Set help search query\n\t */\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\t/**\n\t * Set home changelog items\n\t */\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\t/**\n\t * Set changelog items\n\t */\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\t/**\n\t * Get current conversation\n\t */\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\t/**\n\t * Get messages for active conversation\n\t */\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\n\t/**\n\t * Update team avatars from backend agent data.\n\t * Converts available_agents ({full_name, picture}) into avatar strings\n\t * the views already support (URL strings or initial strings).\n\t */\n\tsetTeamAvatarsFromAgents(agents) {\n\t\tif (!agents || agents.length === 0) return;\n\n\t\tthis.teamAvatars = agents.map((agent) => {\n\t\t\tif (agent.picture) return agent.picture;\n\t\t\treturn agent.full_name || '?';\n\t\t});\n\t\tthis._notify('teamAvatarsUpdate', { teamAvatars: this.teamAvatars });\n\t}\n\n\t/**\n\t * Get filtered help articles\n\t */\n\tgetFilteredHelpArticles() {\n\t\tif (!this.helpSearchQuery) {\n\t\t\treturn this.helpArticles;\n\t\t}\n\t\tconst query = this.helpSearchQuery.toLowerCase();\n\t\treturn this.helpArticles.filter(\n\t\t\t(article) =>\n\t\t\t\tarticle.title.toLowerCase().includes(query) ||\n\t\t\t\t(article.description &&\n\t\t\t\t\tarticle.description.toLowerCase().includes(query))\n\t\t);\n\t}\n\n\t/**\n\t * Reset state\n\t */\n\treset() {\n\t\tthis.currentView = 'home';\n\t\tthis.activeConversationId = null;\n\t\tthis.helpSearchQuery = '';\n\t\tthis._notify('reset', {});\n\t}\n}\n","export class MessengerLauncher {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\tprimaryColor: options.primaryColor || '#155eff',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-launcher messenger-launcher-${this.options.position}`;\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._updateIcon();\n\t\t\t}\n\t\t\tif (type === 'unreadCountChange') {\n\t\t\t\tthis._updateBadge();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst badgeHtml =\n\t\t\tthis.state.unreadCount > 0\n\t\t\t\t? `<span class=\"messenger-launcher-badge\">${this.state.unreadCount > 9 ? '9+' : this.state.unreadCount}</span>`\n\t\t\t\t: '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<button class=\"messenger-launcher-btn\" aria-label=\"Open messenger\" style=\"background: ${this.options.primaryColor};\">\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-chat\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#ffffff\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M144,140a12,12,0,1,1-12-12A12,12,0,0,1,144,140Zm44-12a12,12,0,1,0,12,12A12,12,0,0,0,188,128Zm51.34,83.47a16,16,0,0,1-19.87,19.87l-24.71-7.27A80,80,0,0,1,86.43,183.42a79,79,0,0,1-25.19-7.35l-24.71,7.27a16,16,0,0,1-19.87-19.87l7.27-24.71A80,80,0,1,1,169.58,72.59a80,80,0,0,1,62.49,114.17ZM81.3,166.3a79.94,79.94,0,0,1,70.38-93.87A64,64,0,0,0,39.55,134.19a8,8,0,0,1,.63,6L32,168l27.76-8.17a8,8,0,0,1,6,.63A63.45,63.45,0,0,0,81.3,166.3Zm135.15,15.89a64,64,0,1,0-26.26,26.26,8,8,0,0,1,6-.63L224,216l-8.17-27.76A8,8,0,0,1,216.45,182.19Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-close\" style=\"display: none;\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#ffffff\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t\t${badgeHtml}\n\t\t\t</button>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-launcher-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(!this.state.isOpen);\n\t\t\t});\n\t}\n\n\t_updateIcon() {\n\t\tconst chatIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-chat'\n\t\t);\n\t\tconst closeIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-close'\n\t\t);\n\n\t\tif (this.state.isOpen) {\n\t\t\tchatIcon.style.display = 'none';\n\t\t\tcloseIcon.style.display = 'flex';\n\t\t\tthis.element.classList.add('messenger-launcher-open');\n\t\t} else {\n\t\t\tchatIcon.style.display = 'flex';\n\t\t\tcloseIcon.style.display = 'none';\n\t\t\tthis.element.classList.remove('messenger-launcher-open');\n\t\t}\n\t}\n\n\t_updateBadge() {\n\t\tconst existingBadge = this.element.querySelector(\n\t\t\t'.messenger-launcher-badge'\n\t\t);\n\t\tif (existingBadge) {\n\t\t\texistingBadge.remove();\n\t\t}\n\n\t\tif (this.state.unreadCount > 0 && !this.state.isOpen) {\n\t\t\tconst badge = document.createElement('span');\n\t\t\tbadge.className = 'messenger-launcher-badge';\n\t\t\tbadge.textContent =\n\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\tthis.element.querySelector('.messenger-launcher-btn').appendChild(badge);\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * NavigationTabs - Bottom navigation for messenger\n */\nexport class NavigationTabs {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-nav';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange' || type === 'unreadCountChange') {\n\t\t\t\tthis._updateActiveTab();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getTabs() {\n\t\tconst tabs = [\n\t\t\t{ id: 'home', label: 'Home', icon: this._getHomeIcon() },\n\t\t\t{\n\t\t\t\tid: 'messages',\n\t\t\t\tlabel: 'Messages',\n\t\t\t\ticon: this._getMessagesIcon(),\n\t\t\t\tbadge: this.state.unreadCount,\n\t\t\t},\n\t\t];\n\n\t\tif (this.state.enableHelp) {\n\t\t\ttabs.push({ id: 'help', label: 'Help', icon: this._getHelpIcon() });\n\t\t}\n\n\t\tif (this.state.enableChangelog) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'changelog',\n\t\t\t\tlabel: 'Changelog',\n\t\t\t\ticon: this._getChangelogIcon(),\n\t\t\t});\n\t\t}\n\n\t\treturn tabs;\n\t}\n\n\t_updateContent() {\n\t\tconst tabs = this._getTabs();\n\t\tconst tabsHtml = tabs\n\t\t\t.map((tab) => {\n\t\t\t\tconst isActive = this.state.currentView === tab.id;\n\t\t\t\tconst badgeHtml =\n\t\t\t\t\ttab.badge && tab.badge > 0\n\t\t\t\t\t\t? `<span class=\"messenger-nav-badge\">${tab.badge > 9 ? '9+' : tab.badge}</span>`\n\t\t\t\t\t\t: '';\n\n\t\t\t\treturn `\n\t\t\t\t<button class=\"messenger-nav-tab ${isActive ? 'active' : ''}\" data-tab=\"${tab.id}\">\n\t\t\t\t\t<span class=\"messenger-nav-icon\">${tab.icon}</span>\n\t\t\t\t\t<span class=\"messenger-nav-label\">${tab.label}</span>\n\t\t\t\t\t${badgeHtml}\n\t\t\t\t</button>\n\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tthis.element.innerHTML = tabsHtml;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element.addEventListener('click', (e) => {\n\t\t\tconst tab = e.target.closest('.messenger-nav-tab');\n\t\t\tif (tab) {\n\t\t\t\tconst tabId = tab.dataset.tab;\n\t\t\t\tthis.state.setView(tabId);\n\t\t\t}\n\t\t});\n\t}\n\n\t_updateActiveTab() {\n\t\tconst tabs = this.element.querySelectorAll('.messenger-nav-tab');\n\t\ttabs.forEach((tab) => {\n\t\t\tconst isActive = tab.dataset.tab === this.state.currentView;\n\t\t\ttab.classList.toggle('active', isActive);\n\n\t\t\t// Update badge if messages tab\n\t\t\tif (tab.dataset.tab === 'messages') {\n\t\t\t\tconst existingBadge = tab.querySelector('.messenger-nav-badge');\n\t\t\t\tif (existingBadge) existingBadge.remove();\n\n\t\t\t\tif (this.state.unreadCount > 0) {\n\t\t\t\t\tconst badge = document.createElement('span');\n\t\t\t\t\tbadge.className = 'messenger-nav-badge';\n\t\t\t\t\tbadge.textContent =\n\t\t\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\t\t\ttab.appendChild(badge);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t_getHomeIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M216,115.54V208a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V160a8,8,0,0,0-8-8H112a8,8,0,0,0-8,8v48a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V115.54a8,8,0,0,1,2.62-5.92l80-75.54a8,8,0,0,1,10.77,0l80,75.54A8,8,0,0,1,216,115.54Z\" opacity=\"0.2\"></path>\n\t\t<path d=\"M218.83,103.77l-80-75.48a1.14,1.14,0,0,1-.11-.11,16,16,0,0,0-21.53,0l-.11.11L37.17,103.77A16,16,0,0,0,32,115.55V208a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V160h32v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V115.55A16,16,0,0,0,218.83,103.77ZM208,208H160V160a16,16,0,0,0-16-16H112a16,16,0,0,0-16,16v48H48V115.55l.11-.1L128,40l79.9,75.43.11.1Z\"></path>\n\t</svg>`;\n\t}\n\n\t_getMessagesIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M224,64V192a8,8,0,0,1-8,8H82.5a8,8,0,0,0-5.15,1.88l-32.2,28.23A8,8,0,0,1,32,224V64a8,8,0,0,1,8-8H216A8,8,0,0,1,224,64Z\" opacity=\"0.2\"></path>\n\t\t<path d=\"M216,48H40A16,16,0,0,0,24,64V224a15.85,15.85,0,0,0,9.24,14.5A16.13,16.13,0,0,0,40,240a15.89,15.89,0,0,0,10.25-3.78.69.69,0,0,0,.13-.11L82.5,208H216a16,16,0,0,0,16-16V64A16,16,0,0,0,216,48ZM40,224h0ZM216,192H82.5a16,16,0,0,0-10.3,3.75l-.12.11L40,224V64H216Z\"></path>\n\t</svg>`;\n\t}\n\n\t_getHelpIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\" opacity=\"0.2\"></path>\n\t\t<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z\"></path>\n\t</svg>`;\n\t}\n\n\t_getChangelogIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M200,144a32,32,0,0,1-63.5,4.5L85.83,121.25a32.07,32.07,0,0,1-41.54-34l-24.15-21a8,8,0,0,1,10.25-12.29L54.55,75a32,32,0,0,1,59.16,2.5l50.63,27.25a31.88,31.88,0,0,1,35.66,7l26.46-23A8,8,0,1,1,236.71,101l-26.46,23A32,32,0,0,1,200,144Z\" opacity=\"0.2\"></path>\n\t\t<path d=\"M228.54,86.66l-26.46,23.07A40,40,0,0,0,168,72.13L120.89,46.5a40,40,0,0,0-75.44-4l-22-19.2a8,8,0,0,0-10.5,12L35.44,54.77a40,40,0,0,0,50,61.07l47.1,25.64a40,40,0,0,0,75.41,4.07l26.46-23.07a8,8,0,0,0-10.5-12ZM56,96A24,24,0,1,1,77.25,82.75,24,24,0,0,1,56,96Zm144,64a24,24,0,1,1,24-24A24,24,0,0,1,200,160Z\"></path>\n\t</svg>`;\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * MessengerPanel - Main panel container for messenger\n */\nimport { NavigationTabs } from './NavigationTabs.js';\n\nexport class MessengerPanel {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || 'dark',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis.navigationTabs = null;\n\t\tthis.currentViewComponent = null;\n\t\tthis.viewRegistry = {};\n\t\tthis._unsubscribe = null;\n\t}\n\n\t/**\n\t * Register view components\n\t */\n\tregisterView(name, ViewClass) {\n\t\tthis.viewRegistry[name] = ViewClass;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-panel messenger-panel-${this.options.position} theme-${this.options.theme}`;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-panel-content\">\n\t\t\t\t<div class=\"messenger-panel-views\"></div>\n\t\t\t\t<div class=\"messenger-panel-nav\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\t// Render navigation tabs\n\t\tthis.navigationTabs = new NavigationTabs(this.state, this.options);\n\t\tconst navContainer = this.element.querySelector('.messenger-panel-nav');\n\t\tnavContainer.appendChild(this.navigationTabs.render());\n\n\t\t// Render initial view\n\t\tthis._renderCurrentView();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange') {\n\t\t\t\tthis._renderCurrentView();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_renderCurrentView() {\n\t\tconst viewsContainer = this.element.querySelector('.messenger-panel-views');\n\n\t\t// Destroy current view if exists\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\n\t\t// Clear container\n\t\tviewsContainer.innerHTML = '';\n\n\t\t// Get view class\n\t\tconst ViewClass = this.viewRegistry[this.state.currentView];\n\t\tif (ViewClass) {\n\t\t\tthis.currentViewComponent = new ViewClass(this.state, this.options);\n\t\t\tviewsContainer.appendChild(this.currentViewComponent.render());\n\t\t} else {\n\t\t\tviewsContainer.innerHTML = `<div class=\"messenger-view-placeholder\">View not found: ${this.state.currentView}</div>`;\n\t\t}\n\t}\n\n\t/**\n\t * Show the panel with animation\n\t */\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t\t// Trigger animation\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.element.classList.add('open');\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Hide the panel with animation\n\t */\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.classList.remove('open');\n\t\t\t// Wait for animation to complete\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.element) {\n\t\t\t\t\tthis.element.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t}\n\t}\n\n\t/**\n\t * Set panel header content (used by views)\n\t */\n\tsetHeader(headerContent) {\n\t\tconst header = this.element.querySelector('.messenger-panel-header');\n\t\tif (header) {\n\t\t\theader.innerHTML = headerContent;\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.navigationTabs) {\n\t\t\tthis.navigationTabs.destroy();\n\t\t}\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ChangelogView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-changelog-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'changelogUpdate') {\n\t\t\t\tthis._updateChangelogList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderTeamAvatars();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-changelog-header\">\n\t\t\t\t<h2>Changelog</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-subheader\">\n\t\t\t\t<span class=\"messenger-changelog-latest\">Latest</span>\n\t\t\t\t<div class=\"messenger-changelog-team\">\n\t\t\t\t\t<span>From ${this.state.teamName}</span>\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-body\">\n\t\t\t\t<div class=\"messenger-changelog-list\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateChangelogList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateChangelogList() {\n\t\tconst changelogContainer = this.element.querySelector(\n\t\t\t'.messenger-changelog-list'\n\t\t);\n\t\tconst changelogItems = this.state.changelogItems;\n\n\t\tif (changelogItems.length === 0) {\n\t\t\tchangelogContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tchangelogContainer.innerHTML = changelogItems\n\t\t\t.map((item) => this._renderChangelogCard(item))\n\t\t\t.join('');\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_renderChangelogCard(item) {\n\t\tconst tagsHtml =\n\t\t\titem.tags && item.tags.length > 0\n\t\t\t\t? `<div class=\"messenger-changelog-tags\">\n\t\t\t\t${item.tags.map((tag) => `<span class=\"messenger-changelog-tag\">${tag}</span>`).join('')}\n\t\t\t</div>`\n\t\t\t\t: '';\n\n\t\tconst dateStr = this._formatDate(item.publishedAt || item.date);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-changelog-content\">\n\t\t\t\t\t${tagsHtml}\n\t\t\t\t\t<h3 class=\"messenger-changelog-title\">${item.title}</h3>\n\t\t\t\t\t${item.description ? `<p class=\"messenger-changelog-description\">${this._truncateText(item.description, 100)}</p>` : ''}\n\t\t\t\t\t<div class=\"messenger-changelog-meta\">\n\t\t\t\t\t\t<span class=\"messenger-changelog-date\">${dateStr}</span>\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"#000000\" viewBox=\"0 0 256 256\" class=\"messenger-changelog-arrow\">\n\t\t\t\t\t\t\t<path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-tiny\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759'];\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-tiny\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${2 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-tiny\" style=\"background: ${colors[i % colors.length]}; z-index: ${2 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">${avatarItems}</div>`;\n\t}\n\n\t_renderEmptyState() {\n\t\treturn `\n\t\t\t<div class=\"messenger-changelog-empty\">\n\t\t\t\t<div class=\"messenger-changelog-empty-icon\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M228.54,86.66l-26.46,23.07A40,40,0,0,0,168,72.13L120.89,46.5a40,40,0,0,0-75.44-4l-22-19.2a8,8,0,0,0-10.5,12L35.44,54.77a40,40,0,0,0,50,61.07l47.1,25.64a40,40,0,0,0,75.41,4.07l26.46-23.07a8,8,0,0,0-10.5-12ZM56,96A24,24,0,1,1,77.25,82.75,24,24,0,0,1,56,96Zm144,64a24,24,0,1,1,24-24A24,24,0,0,1,200,160Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<h3>No changelog yet</h3>\n\t\t\t\t<p>Check back later for updates</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t\tyear: 'numeric',\n\t\t});\n\t}\n\n\t_truncateText(text, maxLength) {\n\t\tif (!text) return '';\n\t\tif (text.length <= maxLength) return text;\n\t\treturn text.substring(0, maxLength).trim() + '...';\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_attachChangelogEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst changelogId = card.dataset.changelogId;\n\t\t\t\t\tconst changelogItem = this.state.changelogItems.find(\n\t\t\t\t\t\t(n) => n.id === changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (changelogItem && changelogItem.url) {\n\t\t\t\t\t\twindow.open(changelogItem.url, '_blank');\n\t\t\t\t\t} else if (this.options.onChangelogClick) {\n\t\t\t\t\t\tthis.options.onChangelogClick(changelogItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ChatView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t\tthis._typingTimeout = null;\n\t\tthis._isTyping = false;\n\t\tthis._typingIndicator = null;\n\t\tthis._isConversationClosed = false;\n\t\tthis._showEmailOverlayFlag = false;\n\t\tthis._pendingAttachments = []; // { file, preview, type }\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-chat-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (\n\t\t\t\ttype === 'messageAdded' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t\tthis._appendMessage(data.message);\n\t\t\t\tthis._scrollToBottom();\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStarted' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._showTypingIndicator(data.userName);\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStopped' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t} else if (\n\t\t\t\ttype === 'conversationUpdated' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t} else if (type === 'messagesUpdate' && data.conversationId === this.state.activeConversationId) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversation = this.state.getActiveConversation();\n\t\tconst messages = this.state.getActiveMessages();\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\t\tconst isClosed = !isNewConversation && conversation?.status === 'closed';\n\t\tthis._isConversationClosed = isClosed;\n\n\t\tconst messagesHtml =\n\t\t\tmessages.length === 0\n\t\t\t\t? this._renderEmptyState(isNewConversation)\n\t\t\t\t: messages.map((msg) => this._renderMessage(msg)).join('');\n\n\t\tconst avatarHtml = this._renderConversationAvatar(conversation);\n\t\tconst title = isNewConversation\n\t\t\t? 'New conversation'\n\t\t\t: conversation?.title || 'Chat with team';\n\t\tconst placeholder = isNewConversation\n\t\t\t? 'Start typing your message...'\n\t\t\t: isClosed\n\t\t\t\t? 'Conversation closed'\n\t\t\t\t: 'Write a message...';\n\n\t\tconst existingName = this.state.userContext?.name || '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-chat-header\">\n\t\t\t\t<button class=\"messenger-back-btn\" aria-label=\"Back\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"messenger-chat-header-info\">\n\t\t\t\t\t${avatarHtml}\n\t\t\t\t\t<span class=\"messenger-chat-title\">${title}</span>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-chat-messages\">\n\t\t\t\t${messagesHtml}\n\t\t\t\t${isClosed ? `\n\t\t\t\t<div class=\"messenger-closed-banner\">\n\t\t\t\t\t<i class=\"ph ph-check-circle\" style=\"font-size: 18px;\"></i>\n\t\t\t\t\t<span>This conversation has been resolved</span>\n\t\t\t\t</div>\n\t\t\t\t` : ''}\n\t\t\t\t<div class=\"messenger-typing-indicator\" style=\"display: none;\">\n\t\t\t\t\t<div class=\"messenger-typing-dots\">\n\t\t\t\t\t\t<span></span><span></span><span></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"messenger-typing-text\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t${isClosed ? '' : `\n\t\t\t<div class=\"messenger-compose-attachments-preview\"></div>\n\n\t\t\t<div class=\"messenger-chat-compose\">\n\t\t\t\t<button class=\"messenger-compose-attach\" aria-label=\"Attach file\">\n\t\t\t\t\t<i class=\"ph ph-paperclip\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"messenger-compose-input-wrapper\">\n\t\t\t\t\t<textarea class=\"messenger-compose-input\" placeholder=\"${placeholder}\" rows=\"1\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"messenger-compose-send\" aria-label=\"Send\" disabled>\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14L118.42,148.9l47.24-47.25a8,8,0,0,0-11.31-11.31L107.1,137.58,24,98.22l.14,0L216,40Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<input type=\"file\" class=\"messenger-compose-file-input\" style=\"display:none;\" multiple accept=\"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt,.zip\" />\n\t\t\t</div>\n\t\t\t`}\n\n\t\t\t<div class=\"messenger-email-overlay\" style=\"display: none;\">\n\t\t\t\t<div class=\"messenger-email-card\">\n\t\t\t\t\t<h4>What is your email address?</h4>\n\t\t\t\t\t<p>Enter your email to know when we reply:</p>\n\t\t\t\t\t<input type=\"text\" class=\"messenger-email-name\" placeholder=\"Name (optional)\" value=\"${this._escapeHtml(existingName)}\" autocomplete=\"name\" />\n\t\t\t\t\t<input type=\"email\" class=\"messenger-email-input\" placeholder=\"Enter your email address...\" autocomplete=\"email\" />\n\t\t\t\t\t<div class=\"messenger-email-actions\">\n\t\t\t\t\t\t<button class=\"messenger-email-submit\" disabled>Set my email</button>\n\t\t\t\t\t\t<button class=\"messenger-email-skip\">Skip</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._typingIndicator = this.element.querySelector(\n\t\t\t'.messenger-typing-indicator'\n\t\t);\n\t\tthis._attachEvents();\n\t\tthis._scrollToBottom();\n\t\tthis._renderAttachmentPreviews();\n\n\t\t// Show email overlay after first message sent without email\n\t\tif (this._showEmailOverlayFlag) {\n\t\t\tthis._showEmailOverlay();\n\t\t}\n\t}\n\n\t_renderEmptyState(isNewConversation = false) {\n\t\tconst avatarHtml = this._renderTeamAvatars();\n\t\tconst responseTime =\n\t\t\tthis.state.responseTime || 'We typically reply within a few minutes';\n\t\tconst isOnline = this.state.agentsOnline;\n\n\t\treturn `\n\t\t\t<div class=\"messenger-chat-empty\">\n\t\t\t\t<div class=\"messenger-chat-empty-avatars\">${avatarHtml}</div>\n\t\t\t\t<h3>${isNewConversation ? 'Start a new conversation' : 'Start the conversation'}</h3>\n\t\t\t\t<p>Send us a message and we'll get back to you as soon as possible.</p>\n\t\t\t\t<div class=\"messenger-chat-availability\">\n\t\t\t\t\t<span class=\"messenger-availability-dot ${isOnline ? 'messenger-availability-online' : 'messenger-availability-away'}\"></span>\n\t\t\t\t\t<span>${isOnline ? \"We're online now\" : responseTime}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageAttachments(attachments) {\n\t\tif (!attachments || attachments.length === 0) return '';\n\t\treturn attachments.map((att) => {\n\t\t\tif (att.type === 'image') {\n\t\t\t\treturn `<img class=\"messenger-message-image\" src=\"${this._escapeHtml(att.url)}\" alt=\"${this._escapeHtml(att.name || 'image')}\" data-url=\"${this._escapeHtml(att.url)}\" />`;\n\t\t\t}\n\t\t\treturn `<a class=\"messenger-message-file\" href=\"${this._escapeHtml(att.url)}\" data-url=\"${this._escapeHtml(att.url)}\" data-name=\"${this._escapeHtml(att.name || 'file')}\">\n\t\t\t\t<i class=\"ph ph-file\" style=\"font-size:16px;\"></i>\n\t\t\t\t<span>${this._escapeHtml(att.name || 'file')}</span>\n\t\t\t\t<i class=\"ph ph-download-simple messenger-file-download-icon\" style=\"font-size:14px;\"></i>\n\t\t\t</a>`;\n\t\t}).join('');\n\t}\n\n\t_renderMessage(message) {\n\t\tconst isOwn = message.isOwn;\n\t\tconst messageClass = isOwn\n\t\t\t? 'messenger-message-own'\n\t\t\t: 'messenger-message-received';\n\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\t\tconst attachmentsHtml = this._renderMessageAttachments(message.attachments);\n\n\t\tconst contentHtml = message.content ? `<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>` : '';\n\n\t\tconst bubbleHtml = contentHtml ? `<div class=\"messenger-message-bubble\">${contentHtml}</div>` : '';\n\n\t\tif (isOwn) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarHtml = this._renderSenderAvatar(message.sender);\n\t\treturn `\n\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t<div class=\"messenger-message-avatar\">${avatarHtml}</div>\n\t\t\t\t<div class=\"messenger-message-wrapper\">\n\t\t\t\t\t<div class=\"messenger-message-sender\">${message.sender?.name || 'Support'}</div>\n\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSenderAvatar(sender) {\n\t\tif (sender?.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${sender.avatarUrl}\" alt=\"${sender.name}\" />`;\n\t\t}\n\t\tconst initial = (sender?.name || 'S').charAt(0).toUpperCase();\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">${initial}</div>`;\n\t}\n\n\t_renderConversationAvatar(conversation) {\n\t\tif (!conversation?.participants?.length) {\n\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">S</div>`;\n\t\t}\n\t\tconst p = conversation.participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${p.avatarUrl}\" alt=\"${p.name}\" />`;\n\t\t}\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${3 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar\" style=\"background: ${colors[i % colors.length]}; z-index: ${3 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatMessageTime(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\treturn date.toLocaleTimeString('en-US', {\n\t\t\thour: 'numeric',\n\t\t\tminute: '2-digit',\n\t\t\thour12: true,\n\t\t});\n\t}\n\n\t_formatMessageContent(content) {\n\t\tif (!content) return '';\n\t\treturn content\n\t\t\t.replace(/&/g, '&')\n\t\t\t.replace(/</g, '<')\n\t\t\t.replace(/>/g, '>')\n\t\t\t.replace(/\\n/g, '<br>');\n\t}\n\n\t_appendMessage(message) {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tconst emptyState = messagesContainer.querySelector('.messenger-chat-empty');\n\t\tif (emptyState) {\n\t\t\temptyState.remove();\n\t\t}\n\n\t\tconst messageHtml = this._renderMessage(message);\n\t\tconst tempDiv = document.createElement('div');\n\t\ttempDiv.innerHTML = messageHtml;\n\t\tmessagesContainer.appendChild(tempDiv.firstElementChild);\n\t}\n\n\t_scrollToBottom() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessagesContainer.scrollTop = messagesContainer.scrollHeight;\n\t\t\t}, 50);\n\t\t}\n\t}\n\n\t_updateSendButtonState() {\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.messenger-compose-send');\n\t\tif (input && sendBtn) {\n\t\t\tsendBtn.disabled = !input.value.trim() && this._pendingAttachments.length === 0;\n\t\t}\n\t}\n\n\t_renderAttachmentPreviews() {\n\t\tconst container = this.element.querySelector('.messenger-compose-attachments-preview');\n\t\tif (!container) return;\n\n\t\tif (this._pendingAttachments.length === 0) {\n\t\t\tcontainer.innerHTML = '';\n\t\t\tcontainer.style.display = 'none';\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.display = 'flex';\n\t\tcontainer.innerHTML = this._pendingAttachments.map((att, i) => {\n\t\t\tconst isImage = att.type.startsWith('image');\n\t\t\tconst thumb = isImage\n\t\t\t\t? `<img class=\"messenger-attachment-thumb\" src=\"${att.preview}\" alt=\"${this._escapeHtml(att.file.name)}\" />`\n\t\t\t\t: `<div class=\"messenger-attachment-thumb messenger-attachment-file-icon\"><i class=\"ph ph-file\" style=\"font-size:20px;\"></i></div>`;\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-attachment-preview\" data-index=\"${i}\">\n\t\t\t\t\t${thumb}\n\t\t\t\t\t<button class=\"messenger-attachment-remove\" data-index=\"${i}\" aria-label=\"Remove\">×</button>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}).join('');\n\n\t\t// Attach remove button events\n\t\tcontainer.querySelectorAll('.messenger-attachment-remove').forEach((btn) => {\n\t\t\tbtn.addEventListener('click', (e) => {\n\t\t\t\tconst idx = parseInt(e.currentTarget.dataset.index, 10);\n\t\t\t\tthis._pendingAttachments.splice(idx, 1);\n\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\tthis._updateSendButtonState();\n\t\t\t});\n\t\t});\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-back-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Compose input (not rendered when conversation is closed)\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.messenger-compose-send');\n\n\t\tif (input && sendBtn) {\n\t\t\tinput.addEventListener('input', () => {\n\t\t\t\t// Auto-resize textarea\n\t\t\t\tinput.style.height = 'auto';\n\t\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\n\t\t\t\t// Enable/disable send button\n\t\t\t\tthis._updateSendButtonState();\n\n\t\t\t\t// Send typing indicator\n\t\t\t\tif (input.value.trim()) {\n\t\t\t\t\tthis._startTyping();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener('keydown', (e) => {\n\t\t\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._sendMessage();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsendBtn.addEventListener('click', () => {\n\t\t\t\tthis._sendMessage();\n\t\t\t});\n\t\t}\n\n\t\t// Attach button + file input\n\t\tconst attachBtn = this.element.querySelector('.messenger-compose-attach');\n\t\tconst fileInput = this.element.querySelector('.messenger-compose-file-input');\n\n\t\tif (attachBtn && fileInput) {\n\t\t\tattachBtn.addEventListener('click', () => {\n\t\t\t\tfileInput.click();\n\t\t\t});\n\n\t\t\tfileInput.addEventListener('change', (e) => {\n\t\t\t\tconst files = e.target.files;\n\t\t\t\tif (!files) return;\n\t\t\t\tArray.from(files).forEach((file) => {\n\t\t\t\t\tconst reader = new FileReader();\n\t\t\t\t\treader.onload = (ev) => {\n\t\t\t\t\t\tthis._pendingAttachments.push({\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tpreview: ev.target.result,\n\t\t\t\t\t\t\ttype: file.type,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\t\t\tthis._updateSendButtonState();\n\t\t\t\t\t};\n\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t});\n\t\t\t\tfileInput.value = '';\n\t\t\t});\n\t\t}\n\n\t\t// Email overlay events\n\t\tconst emailInput = this.element.querySelector('.messenger-email-input');\n\t\tconst emailSubmit = this.element.querySelector('.messenger-email-submit');\n\t\tconst emailSkip = this.element.querySelector('.messenger-email-skip');\n\n\t\tif (emailInput) {\n\t\t\temailInput.addEventListener('input', () => {\n\t\t\t\tconst isValid = this._isValidEmail(emailInput.value.trim());\n\t\t\t\temailSubmit.disabled = !isValid;\n\t\t\t});\n\n\t\t\temailInput.addEventListener('keydown', (e) => {\n\t\t\t\tif (e.key === 'Enter' && !emailSubmit.disabled) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._handleEmailSubmit();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (emailSubmit) {\n\t\t\temailSubmit.addEventListener('click', () => {\n\t\t\t\tthis._handleEmailSubmit();\n\t\t\t});\n\t\t}\n\n\t\tif (emailSkip) {\n\t\t\temailSkip.addEventListener('click', () => {\n\t\t\t\tthis._hideEmailOverlay();\n\t\t\t});\n\t\t}\n\n\t\t// Delegated events for attachment clicks\n\t\tconst messagesContainer = this.element.querySelector('.messenger-chat-messages');\n\t\tif (messagesContainer) {\n\t\t\tmessagesContainer.addEventListener('click', (e) => {\n\t\t\t\t// File click -> download\n\t\t\t\tconst fileLink = e.target.closest('.messenger-message-file');\n\t\t\t\tif (fileLink) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst url = fileLink.dataset.url;\n\t\t\t\t\tconst name = fileLink.dataset.name;\n\t\t\t\t\tthis._downloadFile(url, name);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Image click -> open in new tab\n\t\t\t\tconst img = e.target.closest('.messenger-message-image');\n\t\t\t\tif (img) {\n\t\t\t\t\tconst url = img.dataset.url || img.src;\n\t\t\t\t\twindow.open(url, '_blank');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tasync _downloadFile(url, name) {\n\t\ttry {\n\t\t\tconst response = await fetch(url);\n\t\t\tconst blob = await response.blob();\n\t\t\tconst blobUrl = URL.createObjectURL(blob);\n\t\t\tconst a = document.createElement('a');\n\t\t\ta.href = blobUrl;\n\t\t\ta.download = name || 'download';\n\t\t\ta.style.display = 'none';\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.click();\n\t\t\tdocument.body.removeChild(a);\n\t\t\tURL.revokeObjectURL(blobUrl);\n\t\t} catch {\n\t\t\t// Fallback: open in new tab\n\t\t\twindow.open(url, '_blank');\n\t\t}\n\t}\n\n\t_escapeHtml(text) {\n\t\tif (!text) return '';\n\t\treturn text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n\t}\n\n\t_isValidEmail(email) {\n\t\treturn /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n\t}\n\n\t_showEmailOverlay() {\n\t\tconst overlay = this.element.querySelector('.messenger-email-overlay');\n\t\tif (overlay) {\n\t\t\toverlay.style.display = 'flex';\n\t\t\tconst emailInput = overlay.querySelector('.messenger-email-input');\n\t\t\tif (emailInput) {\n\t\t\t\tsetTimeout(() => emailInput.focus(), 100);\n\t\t\t}\n\t\t}\n\t}\n\n\t_startPendingConversation() {\n\t\tif (this._pendingMessage && this.options.onStartConversation) {\n\t\t\tthis.options.onStartConversation(this._pendingMessage, this._pendingAttachmentsForSend || []);\n\t\t\tthis._pendingMessage = null;\n\t\t\tthis._pendingAttachmentsForSend = null;\n\t\t}\n\t}\n\n\t_hideEmailOverlay() {\n\t\tthis._showEmailOverlayFlag = false;\n\t\tconst overlay = this.element.querySelector('.messenger-email-overlay');\n\t\tif (overlay) {\n\t\t\toverlay.style.display = 'none';\n\t\t}\n\t}\n\n\tasync _handleEmailSubmit() {\n\t\tconst nameInput = this.element.querySelector('.messenger-email-name');\n\t\tconst emailInput = this.element.querySelector('.messenger-email-input');\n\t\tconst submitBtn = this.element.querySelector('.messenger-email-submit');\n\n\t\tconst name = nameInput?.value.trim() || '';\n\t\tconst email = emailInput?.value.trim();\n\n\t\tif (!email || !this._isValidEmail(email)) return;\n\n\t\tsubmitBtn.disabled = true;\n\t\tsubmitBtn.textContent = 'Saving...';\n\n\t\ttry {\n\t\t\tif (this.options.onIdentifyContact) {\n\t\t\t\tawait this.options.onIdentifyContact({ name, email });\n\t\t\t}\n\n\t\t\tif (!this.state.userContext) {\n\t\t\t\tthis.state.userContext = {};\n\t\t\t}\n\t\t\tthis.state.userContext.name = name;\n\t\t\tthis.state.userContext.email = email;\n\n\t\t\tthis._hideEmailOverlay();\n\t\t\tthis._startPendingConversation();\n\t\t} catch (error) {\n\t\t\tconsole.error('[ChatView] Failed to save email:', error);\n\t\t\tsubmitBtn.disabled = false;\n\t\t\tsubmitBtn.textContent = 'Set my email';\n\t\t}\n\t}\n\n\tasync _sendMessage() {\n\t\tif (this._isConversationClosed) return;\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst content = input.value.trim();\n\t\tconst hasAttachments = this._pendingAttachments.length > 0;\n\n\t\tif (!content && !hasAttachments) return;\n\n\t\tthis._stopTyping();\n\n\t\t// Collect attachments to upload\n\t\tconst attachmentsToSend = [...this._pendingAttachments];\n\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\t\tconst needsContactInfo = !this.state.userContext?.email;\n\n\t\tif (isNewConversation) {\n\t\t\t// Show user's message in chat immediately\n\t\t\tconst localMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: content,\n\t\t\t\tisOwn: true,\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\tattachments: attachmentsToSend.map((a) => ({\n\t\t\t\t\turl: a.preview,\n\t\t\t\t\ttype: a.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: a.file.name,\n\t\t\t\t})),\n\t\t\t};\n\t\t\tthis._appendMessage(localMessage);\n\t\t\tthis._scrollToBottom();\n\n\t\t\tif (needsContactInfo) {\n\t\t\t\tthis._pendingMessage = content;\n\t\t\t\tthis._pendingAttachmentsForSend = attachmentsToSend;\n\t\t\t\tthis._showEmailOverlayFlag = true;\n\t\t\t\tsetTimeout(() => this._showEmailOverlay(), 300);\n\t\t\t} else {\n\t\t\t\tif (this.options.onStartConversation) {\n\t\t\t\t\tthis.options.onStartConversation(content, attachmentsToSend);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst message = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: content,\n\t\t\t\tisOwn: true,\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\tattachments: attachmentsToSend.map((a) => ({\n\t\t\t\t\turl: a.preview,\n\t\t\t\t\ttype: a.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: a.file.name,\n\t\t\t\t})),\n\t\t\t};\n\n\t\t\tthis.state.addMessage(this.state.activeConversationId, message);\n\n\t\t\tif (this.options.onSendMessage) {\n\t\t\t\tthis.options.onSendMessage(this.state.activeConversationId, message, attachmentsToSend);\n\t\t\t}\n\t\t}\n\n\t\t// Clear input and attachments\n\t\tinput.value = '';\n\t\tinput.style.height = 'auto';\n\t\tthis._pendingAttachments = [];\n\t\tthis._renderAttachmentPreviews();\n\t\tthis._updateSendButtonState();\n\t}\n\n\t_startTyping() {\n\t\tif (this._isConversationClosed) return;\n\t\tif (!this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = true;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, true);\n\t\t\t}\n\t\t}\n\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._typingTimeout = setTimeout(() => {\n\t\t\tthis._stopTyping();\n\t\t}, 3000);\n\t}\n\n\t_stopTyping() {\n\t\tif (this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = false;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, false);\n\t\t\t}\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t\tthis._typingTimeout = null;\n\t\t}\n\t}\n\n\t_showTypingIndicator(userName) {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'flex';\n\t\t\tconst textEl = this._typingIndicator.querySelector(\n\t\t\t\t'.messenger-typing-text'\n\t\t\t);\n\t\t\tif (textEl) {\n\t\t\t\ttextEl.textContent = `${userName || 'Support'} is typing...`;\n\t\t\t}\n\t\t\tthis._scrollToBottom();\n\t\t}\n\t}\n\n\t_hideTypingIndicator() {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._stopTyping();\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class ConversationsView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-conversations-view';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'conversationAdded' ||\n\t\t\t\ttype === 'conversationRead' ||\n\t\t\t\ttype === 'conversationUpdated'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-conversations-empty\">\n\t\t\t\t\t<div class=\"messenger-conversations-empty-icon\">\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t\t<path d=\"M216,48H40A16,16,0,0,0,24,64V224a15.85,15.85,0,0,0,9.24,14.5A16.13,16.13,0,0,0,40,240a15.89,15.89,0,0,0,10.25-3.78.69.69,0,0,0,.13-.11L82.5,208H216a16,16,0,0,0,16-16V64A16,16,0,0,0,216,48ZM40,224h0ZM216,192H82.5a16,16,0,0,0-10.3,3.75l-.12.11L40,224V64H216Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No conversations yet</h3>\n\t\t\t\t\t<p>Start a new conversation with our team</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t} else {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-conversations-list\">\n\t\t\t\t\t${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-conversations-header\">\n\t\t\t\t<h2>Messages</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-body\">\n\t\t\t\t${conversationsHtml}\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-footer\">\n\t\t\t\t<button class=\"messenger-new-message-btn\">\n\t\t\t\t\t<div class=\"messenger-new-message-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<span>Send us a message</span>\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderConversationItem(conversation) {\n\t\tconst unreadClass = conversation.unread > 0 ? 'unread' : '';\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst avatarsHtml = this._renderConversationAvatars(\n\t\t\tconversation.participants\n\t\t);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-conversation-item ${unreadClass}\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"messenger-conversation-avatars\">\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-conversation-content\">\n\t\t\t\t\t<div class=\"messenger-conversation-header\">\n\t\t\t\t\t\t<span class=\"messenger-conversation-title\">${conversation.title || 'Chat with team'}</span>\n\t\t\t\t\t\t<span class=\"messenger-conversation-time\">${timeAgo}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-conversation-preview\">\n\t\t\t\t\t\t${conversation.unread > 0 ? '<span class=\"messenger-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t<span class=\"messenger-conversation-message\">${this._truncateMessage(conversation.lastMessage)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderConversationAvatars(participants) {\n\t\tif (!participants || participants.length === 0) {\n\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-medium\" style=\"background: #5856d6;\">S</div>`;\n\t\t}\n\n\t\tconst p = participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-medium\" src=\"${p.avatarUrl}\" alt=\"${p.name}\" />`;\n\t\t}\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-medium\" style=\"background: ${this._getAvatarColor(0)};\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack messenger-avatar-stack-small\">\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${2 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: ${this._getAvatarColor(i)}; z-index: ${2 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack messenger-avatar-stack-small\">${avatarItems}</div>`;\n\t}\n\n\t_getAvatarColor(index) {\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\treturn colors[index % colors.length];\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_truncateMessage(message) {\n\t\tif (!message) return 'No messages yet';\n\t\tconst maxLength = 50;\n\t\tif (message.length <= maxLength) return message;\n\t\treturn message.substring(0, maxLength) + '...';\n\t}\n\n\t_attachEvents() {\n\t\tconst closeBtn = this.element.querySelector('.messenger-close-btn');\n\t\tif (closeBtn) {\n\t\t\tcloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-conversation-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst convId = item.dataset.conversationId;\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\n\t\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst newMsgBtn = this.element.querySelector('.messenger-new-message-btn');\n\t\tif (newMsgBtn) {\n\t\t\tnewMsgBtn.addEventListener('click', () => {\n\t\t\t\tthis._startNewConversation();\n\t\t\t});\n\t\t}\n\t}\n\n\t_startNewConversation() {\n\t\t// If there's an open conversation, route to it instead of creating new\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.state.setActiveConversation(openConversation.id);\n\t\t\tthis.state.markAsRead(openConversation.id);\n\t\t\tthis.state.setView('chat');\n\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\tthis.options.onSelectConversation(openConversation.id);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.state.setActiveConversation(null);\n\t\t\tif (this.options.onStartNewConversation) {\n\t\t\t\tthis.options.onStartNewConversation();\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class HelpView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-help-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'helpArticlesUpdate' || type === 'helpSearchChange') {\n\t\t\t\tthis._updateCollectionsList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst searchQuery = this.state.helpSearchQuery || '';\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst collectionCount = collections.length;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-help-header\">\n\t\t\t\t<h2>Help</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-search\">\n\t\t\t\t<div class=\"messenger-help-search-wrapper\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"messenger-help-search-input\"\n\t\t\t\t\t\tplaceholder=\"Search for help\"\n\t\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t\t/>\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"#000000\" viewBox=\"0 0 256 256\" class=\"messenger-help-search-icon\">\n\t\t\t\t\t\t<path d=\"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-body\">\n\t\t\t\t<div class=\"messenger-help-collections-header\">\n\t\t\t\t\t${collectionCount} collections\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-help-collections\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateCollectionsList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateCollectionsList() {\n\t\tconst collectionsContainer = this.element.querySelector(\n\t\t\t'.messenger-help-collections'\n\t\t);\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst searchQuery = (this.state.helpSearchQuery || '').toLowerCase();\n\n\t\tconst filteredCollections = searchQuery\n\t\t\t? collections.filter(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\tc.title.toLowerCase().includes(searchQuery) ||\n\t\t\t\t\t\t(c.description && c.description.toLowerCase().includes(searchQuery))\n\t\t\t\t)\n\t\t\t: collections;\n\n\t\tconst headerEl = this.element.querySelector(\n\t\t\t'.messenger-help-collections-header'\n\t\t);\n\t\tif (headerEl) {\n\t\t\theaderEl.textContent = `${filteredCollections.length} collections`;\n\t\t}\n\n\t\tif (filteredCollections.length === 0) {\n\t\t\tcollectionsContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tcollectionsContainer.innerHTML = filteredCollections\n\t\t\t.map((collection) => this._renderCollectionItem(collection))\n\t\t\t.join('');\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_renderCollectionItem(collection) {\n\t\tconst articleCount = collection.articleCount || 0;\n\t\treturn `\n\t\t\t<div class=\"messenger-help-collection\" data-collection-id=\"${collection.id}\">\n\t\t\t\t<div class=\"messenger-help-collection-content\">\n\t\t\t\t\t<h3 class=\"messenger-help-collection-title\">${collection.title}</h3>\n\t\t\t\t\t<p class=\"messenger-help-collection-desc\">${collection.description || ''}</p>\n\t\t\t\t\t<span class=\"messenger-help-collection-count\">${articleCount} articles</span>\n\t\t\t\t</div>\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\" class=\"messenger-help-collection-arrow\">\n\t\t\t\t\t<path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderEmptyState() {\n\t\tconst isSearching = this.state.helpSearchQuery;\n\n\t\tif (isSearching) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-help-empty\">\n\t\t\t\t\t<div class=\"messenger-help-empty-icon\">\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t\t<path d=\"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No results found</h3>\n\t\t\t\t\t<p>Try a different search term</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"messenger-help-empty\">\n\t\t\t\t<div class=\"messenger-help-empty-icon\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<h3>Help collections</h3>\n\t\t\t\t<p>No collections available yet</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\tconst searchInput = this.element.querySelector(\n\t\t\t'.messenger-help-search-input'\n\t\t);\n\t\tlet searchTimeout;\n\t\tsearchInput.addEventListener('input', (e) => {\n\t\t\tclearTimeout(searchTimeout);\n\t\t\tsearchTimeout = setTimeout(() => {\n\t\t\t\tthis.state.setHelpSearchQuery(e.target.value);\n\t\t\t}, 300);\n\t\t});\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_attachCollectionEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-help-collection')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst collectionId = item.dataset.collectionId;\n\t\t\t\t\tconst collection = this.state.helpArticles.find(\n\t\t\t\t\t\t(c) => c.id === collectionId\n\t\t\t\t\t);\n\t\t\t\t\tif (collection && collection.url) {\n\t\t\t\t\t\twindow.open(collection.url, '_blank');\n\t\t\t\t\t} else if (this.options.onArticleClick) {\n\t\t\t\t\t\tthis.options.onArticleClick(collection);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","export class HomeView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-home-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'homeChangelogUpdate' ||\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'availabilityUpdate'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\t\tconst recentChangelogHtml = this._renderRecentChangelog();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-home-header\">\n\t\t\t\t<div class=\"messenger-home-header-top\">\n\t\t\t\t\t<div class=\"messenger-home-logo\">\n\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-home-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-home-welcome\">\n\t\t\t\t\t<span class=\"messenger-home-greeting\">Hello there.</span>\n\t\t\t\t\t<span class=\"messenger-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t\t${this._renderAvailabilityStatus()}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-home-body\">\n\t\t\t\t${this._renderMessageButton()}\n\n\t\t\t\t${this._renderFeaturedCard()}\n\n\t\t\t\t${recentChangelogHtml}\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${3 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar\" style=\"background: ${this._getAvatarColor(i)}; z-index: ${3 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_getAvatarColor(index) {\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\treturn colors[index % colors.length];\n\t}\n\n\t_renderAvailabilityStatus() {\n\t\tconst isOnline = this.state.agentsOnline;\n\t\tconst responseTime =\n\t\t\tthis.state.responseTime || 'We typically reply within a few minutes';\n\n\t\tif (isOnline) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-home-availability\">\n\t\t\t\t\t<span class=\"messenger-availability-dot messenger-availability-online\"></span>\n\t\t\t\t\t<span class=\"messenger-availability-text\">We're online now</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-availability\">\n\t\t\t\t<span class=\"messenger-availability-dot messenger-availability-away\"></span>\n\t\t\t\t<span class=\"messenger-availability-text\">${responseTime}</span>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageButton() {\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tconst preview = openConversation.lastMessage\n\t\t\t\t? (openConversation.lastMessage.length > 40\n\t\t\t\t\t? openConversation.lastMessage.substring(0, 40) + '...'\n\t\t\t\t\t: openConversation.lastMessage)\n\t\t\t\t: 'Continue your conversation';\n\n\t\t\treturn `\n\t\t\t\t<button class=\"messenger-home-message-btn messenger-home-continue-btn\" data-conversation-id=\"${openConversation.id}\">\n\t\t\t\t\t<div class=\"messenger-home-continue-info\">\n\t\t\t\t\t\t<span class=\"messenger-home-continue-label\">Continue conversation</span>\n\t\t\t\t\t\t<span class=\"messenger-home-continue-preview\">${preview}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<i class=\"ph ph-arrow-right\" style=\"font-size: 16px;\"></i>\n\t\t\t\t</button>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<button class=\"messenger-home-message-btn\">\n\t\t\t\t<span>Send us a message</span>\n\t\t\t\t<i class=\"ph ph-arrow-right\" style=\"font-size: 16px;\"></i>\n\t\t\t</button>\n\t\t`;\n\t}\n\n\t_renderFeaturedCard() {\n\t\tif (!this.options.featuredContent) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst { title, description, imageUrl, action } =\n\t\t\tthis.options.featuredContent;\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-featured\">\n\t\t\t\t${imageUrl ? `<img src=\"${imageUrl}\" alt=\"${title}\" class=\"messenger-home-featured-image\" onerror=\"this.style.display='none';\" />` : ''}\n\t\t\t\t<div class=\"messenger-home-featured-content\">\n\t\t\t\t\t<h3>${title}</h3>\n\t\t\t\t\t<p>${description}</p>\n\t\t\t\t</div>\n\t\t\t\t${action ? `<button class=\"messenger-home-featured-btn\" data-action=\"${action.type}\" data-value=\"${action.value}\">${action.label}</button>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderRecentChangelog() {\n\t\tconst changelogItems = this.state.homeChangelogItems;\n\t\tif (changelogItems.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst changelogHtml = changelogItems\n\t\t\t.map(\n\t\t\t\t(item) => `\n\t\t\t<div class=\"messenger-home-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-home-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t\t${item.coverText ? `<span class=\"messenger-home-changelog-cover-text\">${item.coverText}</span>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-home-changelog-card-content\">\n\t\t\t\t\t<h4 class=\"messenger-home-changelog-card-title\">${item.title}</h4>\n\t\t\t\t\t<p class=\"messenger-home-changelog-card-desc\">${item.description || ''}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-changelog-section\">\n\t\t\t\t${changelogHtml}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\tconst now = new Date();\n\t\tconst diffDays = Math.floor((now - date) / (1000 * 60 * 60 * 24));\n\n\t\tif (diffDays === 0) return 'Today';\n\t\tif (diffDays === 1) return 'Yesterday';\n\t\tif (diffDays < 7) return `${diffDays}d ago`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Send message / continue conversation button\n\t\tconst msgBtn = this.element.querySelector('.messenger-home-message-btn');\n\t\tif (msgBtn) {\n\t\t\tmsgBtn.addEventListener('click', () => {\n\t\t\t\tconst convId = msgBtn.dataset.conversationId;\n\t\t\t\tif (convId) {\n\t\t\t\t\t// Continue existing open conversation\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\t\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// No open conversation — start new\n\t\t\t\t\tthis.state.setActiveConversation(null);\n\t\t\t\t\tthis.state.setView('chat');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-home-changelog-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst seeAllBtn = this.element.querySelector(\n\t\t\t'.messenger-home-changelog-all'\n\t\t);\n\t\tif (seeAllBtn) {\n\t\t\tseeAllBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('changelog');\n\t\t\t});\n\t\t}\n\n\t\tconst featuredBtn = this.element.querySelector(\n\t\t\t'.messenger-home-featured-btn'\n\t\t);\n\t\tif (featuredBtn) {\n\t\t\tfeaturedBtn.addEventListener('click', () => {\n\t\t\t\tconst action = featuredBtn.dataset.action;\n\t\t\t\tconst value = featuredBtn.dataset.value;\n\t\t\t\tif (action === 'url') {\n\t\t\t\t\twindow.open(value, '_blank');\n\t\t\t\t} else if (action === 'view') {\n\t\t\t\t\tthis.state.setView(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * PreChatFormView - Collects user info after the first message\n */\nexport class PreChatFormView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._isSubmitting = false;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-prechat-view';\n\n\t\tthis._updateContent();\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\t// Pre-fill from userContext if available\n\t\tconst existingName = this.state.userContext?.name || '';\n\t\tconst existingEmail = this.state.userContext?.email || '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-prechat-overlay\">\n\t\t\t\t<div class=\"messenger-prechat-card\">\n\t\t\t\t\t<h4>Get notified when we reply</h4>\n\t\t\t\t\t<form class=\"messenger-prechat-form\" novalidate>\n\t\t\t\t\t\t<div class=\"messenger-prechat-fields\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tid=\"messenger-prechat-name\"\n\t\t\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\t\t\tplaceholder=\"Name (optional)\"\n\t\t\t\t\t\t\t\tvalue=\"${this._escapeHtml(existingName)}\"\n\t\t\t\t\t\t\t\tautocomplete=\"name\"\n\t\t\t\t\t\t\t\tclass=\"messenger-prechat-input\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t\t\t\tid=\"messenger-prechat-email\"\n\t\t\t\t\t\t\t\tname=\"email\"\n\t\t\t\t\t\t\t\tplaceholder=\"Email address\"\n\t\t\t\t\t\t\t\tvalue=\"${this._escapeHtml(existingEmail)}\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\t\t\t\tclass=\"messenger-prechat-input\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"messenger-prechat-error\" id=\"messenger-email-error\"></span>\n\t\t\t\t\t\t<div class=\"messenger-prechat-actions\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"messenger-prechat-skip\">Skip</button>\n\t\t\t\t\t\t\t<button type=\"submit\" class=\"messenger-prechat-submit\" disabled>\n\t\t\t\t\t\t\t\t<span class=\"messenger-prechat-submit-text\">Continue</span>\n\t\t\t\t\t\t\t\t<span class=\"messenger-prechat-submit-loading\" style=\"display: none;\">\n\t\t\t\t\t\t\t\t\t<i class=\"ph ph-spinner\" style=\"font-size: 16px;\"></i>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${3 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar\" style=\"background: ${colors[i % colors.length]}; z-index: ${3 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_escapeHtml(text) {\n\t\tif (!text) return '';\n\t\treturn text\n\t\t\t.replace(/&/g, '&')\n\t\t\t.replace(/</g, '<')\n\t\t\t.replace(/>/g, '>')\n\t\t\t.replace(/\"/g, '"');\n\t}\n\n\t_attachEvents() {\n\t\t// Form validation\n\t\tconst form = this.element.querySelector('.messenger-prechat-form');\n\t\tconst emailInput = this.element.querySelector('#messenger-prechat-email');\n\t\tconst submitBtn = this.element.querySelector('.messenger-prechat-submit');\n\t\tconst skipBtn = this.element.querySelector('.messenger-prechat-skip');\n\n\t\tconst validateForm = () => {\n\t\t\tconst email = emailInput.value.trim();\n\t\t\tconst isEmailValid = this._isValidEmail(email);\n\t\t\tsubmitBtn.disabled = !isEmailValid;\n\t\t\treturn isEmailValid;\n\t\t};\n\n\t\temailInput.addEventListener('input', () => {\n\t\t\tthis._clearError('messenger-email-error');\n\t\t\tvalidateForm();\n\t\t});\n\n\t\temailInput.addEventListener('blur', () => {\n\t\t\tconst email = emailInput.value.trim();\n\t\t\tif (email && !this._isValidEmail(email)) {\n\t\t\t\tthis._showError('messenger-email-error', 'Please enter a valid email');\n\t\t\t}\n\t\t});\n\n\t\t// Skip button - go back to chat without collecting info\n\t\tskipBtn.addEventListener('click', () => {\n\t\t\tthis.state.setView('chat');\n\t\t});\n\n\t\t// Form submission\n\t\tform.addEventListener('submit', async (e) => {\n\t\t\te.preventDefault();\n\t\t\tif (this._isSubmitting) return;\n\t\t\tif (!validateForm()) {\n\t\t\t\tthis._showError('messenger-email-error', 'Please enter a valid email');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait this._handleSubmit();\n\t\t});\n\n\t\t// Set initial button state\n\t\tvalidateForm();\n\n\t\t// Focus email input\n\t\tsetTimeout(() => emailInput.focus(), 100);\n\t}\n\n\t_isValidEmail(email) {\n\t\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\t\treturn emailRegex.test(email);\n\t}\n\n\t_showError(elementId, message) {\n\t\tconst errorEl = this.element.querySelector(`#${elementId}`);\n\t\tif (errorEl) {\n\t\t\terrorEl.textContent = message;\n\t\t\terrorEl.style.display = 'block';\n\t\t}\n\t}\n\n\t_clearError(elementId) {\n\t\tconst errorEl = this.element.querySelector(`#${elementId}`);\n\t\tif (errorEl) {\n\t\t\terrorEl.textContent = '';\n\t\t\terrorEl.style.display = 'none';\n\t\t}\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst nameInput = this.element.querySelector('#messenger-prechat-name');\n\t\tconst emailInput = this.element.querySelector('#messenger-prechat-email');\n\t\tconst submitBtn = this.element.querySelector('.messenger-prechat-submit');\n\t\tconst submitText = submitBtn.querySelector('.messenger-prechat-submit-text');\n\t\tconst submitLoading = submitBtn.querySelector('.messenger-prechat-submit-loading');\n\n\t\tconst name = nameInput.value.trim();\n\t\tconst email = emailInput.value.trim();\n\n\t\t// Show loading state\n\t\tthis._isSubmitting = true;\n\t\tsubmitBtn.disabled = true;\n\t\tsubmitText.style.display = 'none';\n\t\tsubmitLoading.style.display = 'inline-flex';\n\n\t\ttry {\n\t\t\t// First, identify the contact with collected info\n\t\t\tif (this.options.onIdentifyContact) {\n\t\t\t\tawait this.options.onIdentifyContact({ name, email });\n\t\t\t}\n\n\t\t\t// Update state with user info\n\t\t\tif (!this.state.userContext) {\n\t\t\t\tthis.state.userContext = {};\n\t\t\t}\n\t\t\tthis.state.userContext.name = name;\n\t\t\tthis.state.userContext.email = email;\n\n\t\t\tthis._isSubmitting = false;\n\n\t\t\t// Go to chat after collecting contact info\n\t\t\tthis.state.setView('chat');\n\t\t} catch (error) {\n\t\t\tconsole.error('[PreChatFormView] Error submitting form:', error);\n\t\t\tthis._showError('messenger-email-error', 'Something went wrong. Please try again.');\n\n\t\t\t// Reset button state\n\t\t\tthis._isSubmitting = false;\n\t\t\tsubmitBtn.disabled = false;\n\t\t\tsubmitText.style.display = 'inline';\n\t\t\tsubmitLoading.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * WebSocketService - Real-time communication for messenger widget\n */\n\nexport class WebSocketService {\n\tconstructor(config = {}) {\n\t\tthis.baseURL = config.baseURL || '';\n\t\tthis.workspace = config.workspace || '';\n\t\tthis.sessionToken = config.sessionToken || null;\n\t\tthis.mock = config.mock || false;\n\n\t\tthis.ws = null;\n\t\tthis.reconnectAttempts = 0;\n\t\tthis.maxReconnectAttempts = 5;\n\t\tthis.reconnectDelay = 1000;\n\t\tthis.pingInterval = null;\n\t\tthis.isConnected = false;\n\n\t\t// Event listeners\n\t\tthis._listeners = new Map();\n\n\t\t// Bind methods\n\t\tthis._onOpen = this._onOpen.bind(this);\n\t\tthis._onMessage = this._onMessage.bind(this);\n\t\tthis._onClose = this._onClose.bind(this);\n\t\tthis._onError = this._onError.bind(this);\n\t}\n\n\t/**\n\t * Connect to WebSocket server\n\t */\n\tconnect(sessionToken = null) {\n\t\tif (sessionToken) {\n\t\t\tthis.sessionToken = sessionToken;\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.warn('[WebSocket] No session token provided');\n\t\t\treturn;\n\t\t}\n\n\t\t// Mock mode - simulate connection\n\t\tif (this.mock) {\n\t\t\tthis.isConnected = true;\n\t\t\tthis._emit('connected', {});\n\t\t\tthis._startMockResponses();\n\t\t\treturn;\n\t\t}\n\n\t\t// Build WebSocket URL\n\t\tconst wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n\t\tlet wsURL = this.baseURL.replace(/^https?:/, wsProtocol);\n\t\twsURL = wsURL.replace('/api/v1', '');\n\t\twsURL = `${wsURL}/api/v1/widget/messenger/ws?token=${encodeURIComponent(this.sessionToken)}`;\n\n\t\ttry {\n\t\t\tthis.ws = new WebSocket(wsURL);\n\t\t\tthis.ws.onopen = this._onOpen;\n\t\t\tthis.ws.onmessage = this._onMessage;\n\t\t\tthis.ws.onclose = this._onClose;\n\t\t\tthis.ws.onerror = this._onError;\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Connection error:', error);\n\t\t\tthis._scheduleReconnect();\n\t\t}\n\t}\n\n\t/**\n\t * Disconnect from WebSocket server\n\t */\n\tdisconnect() {\n\t\tthis.isConnected = false;\n\t\tthis.reconnectAttempts = this.maxReconnectAttempts; // Prevent reconnection\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tif (this.ws) {\n\t\t\tthis.ws.close();\n\t\t\tthis.ws = null;\n\t\t}\n\n\t\tif (this._mockInterval) {\n\t\t\tclearInterval(this._mockInterval);\n\t\t\tthis._mockInterval = null;\n\t\t}\n\t}\n\n\t/**\n\t * Subscribe to events\n\t * @param {string} event - Event name\n\t * @param {Function} callback - Event handler\n\t * @returns {Function} Unsubscribe function\n\t */\n\ton(event, callback) {\n\t\tif (!this._listeners.has(event)) {\n\t\t\tthis._listeners.set(event, new Set());\n\t\t}\n\t\tthis._listeners.get(event).add(callback);\n\t\treturn () => this._listeners.get(event).delete(callback);\n\t}\n\n\t/**\n\t * Remove event listener\n\t */\n\toff(event, callback) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).delete(callback);\n\t\t}\n\t}\n\n\t/**\n\t * Send message through WebSocket\n\t */\n\tsend(type, payload = {}) {\n\t\tif (!this.isConnected) {\n\t\t\tconsole.warn('[WebSocket] Not connected, cannot send message');\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\t// Mock mode - just log\n\t\t\tconsole.log('[WebSocket Mock] Sending:', type, payload);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.ws && this.ws.readyState === WebSocket.OPEN) {\n\t\t\tthis.ws.send(JSON.stringify({ type, payload }));\n\t\t}\n\t}\n\n\t// Private methods\n\n\t_onOpen() {\n\t\tconsole.log('[WebSocket] Connected');\n\t\tthis.isConnected = true;\n\t\tthis.reconnectAttempts = 0;\n\t\tthis._emit('connected', {});\n\n\t\t// Start ping interval to keep connection alive\n\t\tthis.pingInterval = setInterval(() => {\n\t\t\tthis.send('ping', {});\n\t\t}, 30000);\n\t}\n\n\t_onMessage(event) {\n\t\ttry {\n\t\t\tconst data = JSON.parse(event.data);\n\t\t\tconst { type, payload } = data;\n\n\t\t\t// Handle different event types\n\t\t\tswitch (type) {\n\t\t\t\tcase 'message:new':\n\t\t\t\t\tthis._emit('message', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:started':\n\t\t\t\t\tthis._emit('typing_started', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:stopped':\n\t\t\t\t\tthis._emit('typing_stopped', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:updated':\n\t\t\t\t\tthis._emit('conversation_updated', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:closed':\n\t\t\t\t\tthis._emit('conversation_closed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'availability:changed':\n\t\t\t\t\tthis._emit('availability_changed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'pong':\n\t\t\t\t\t// Ping response, ignore\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.log('[WebSocket] Unknown event:', type, payload);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Failed to parse message:', error);\n\t\t}\n\t}\n\n\t_onClose(event) {\n\t\tconsole.log('[WebSocket] Disconnected:', event.code, event.reason);\n\t\tthis.isConnected = false;\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tthis._emit('disconnected', { code: event.code, reason: event.reason });\n\t\tthis._scheduleReconnect();\n\t}\n\n\t_onError(error) {\n\t\tconsole.error('[WebSocket] Error:', error);\n\t\tthis._emit('error', { error });\n\t}\n\n\t_scheduleReconnect() {\n\t\tif (this.reconnectAttempts >= this.maxReconnectAttempts) {\n\t\t\tconsole.log('[WebSocket] Max reconnect attempts reached');\n\t\t\tthis._emit('reconnect_failed', {});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reconnectAttempts++;\n\t\tconst delay = this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);\n\t\tconsole.log(\n\t\t\t`[WebSocket] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`\n\t\t);\n\n\t\tsetTimeout(() => {\n\t\t\tthis.connect();\n\t\t}, delay);\n\t}\n\n\t_emit(event, data) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(`[WebSocket] Error in ${event} handler:`, error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Mock support for development\n\t_startMockResponses() {\n\t\t// Simulate agent typing and responses\n\t\tthis._mockInterval = setInterval(() => {\n\t\t\t// Randomly emit typing or message events for demo\n\t\t\tconst random = Math.random();\n\t\t\tif (random < 0.1) {\n\t\t\t\tthis._emit('typing_started', {\n\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\tuser_name: 'Sarah',\n\t\t\t\t\tis_agent: true,\n\t\t\t\t});\n\n\t\t\t\t// Stop typing after 2 seconds\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._emit('typing_stopped', {\n\t\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\t});\n\t\t\t\t}, 2000);\n\t\t\t}\n\t\t}, 10000);\n\t}\n\n\t/**\n\t * Simulate receiving a message (for mock mode)\n\t */\n\tsimulateMessage(conversationId, message) {\n\t\tif (this.mock) {\n\t\t\tthis._emit('message', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t\tmessage: {\n\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\tcontent: message.content,\n\t\t\t\t\tsender_type: message.sender_type || 'agent',\n\t\t\t\t\tsender_name: message.sender_name || 'Support',\n\t\t\t\t\tsender_avatar: message.sender_avatar || null,\n\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n}\n","\nimport { BaseWidget } from './BaseWidget.js';\nimport { MessengerState } from './messenger/MessengerState.js';\nimport { MessengerLauncher } from './messenger/components/MessengerLauncher.js';\nimport { MessengerPanel } from './messenger/components/MessengerPanel.js';\nimport { ChangelogView } from './messenger/views/ChangelogView.js';\nimport { ChatView } from './messenger/views/ChatView.js';\nimport { ConversationsView } from './messenger/views/ConversationsView.js';\nimport { HelpView } from './messenger/views/HelpView.js';\nimport { HomeView } from './messenger/views/HomeView.js';\nimport { PreChatFormView } from './messenger/views/PreChatFormView.js';\nimport { WebSocketService } from '../core/WebSocketService.js';\n\nexport class MessengerWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'messenger' });\n\n\t\tthis.messengerOptions = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || 'light',\n\t\t\tteamName: options.teamName || 'Support',\n\t\t\tteamAvatars: options.teamAvatars || [],\n\t\t\twelcomeMessage: options.welcomeMessage || 'How can we help?',\n\t\t\tenableHelp: options.enableHelp !== false,\n\t\t\tenableChangelog: options.enableChangelog !== false,\n\t\t\tlogoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',\n\t\t\tfeaturedContent: options.featuredContent || null,\n\t\t\tprimaryColor: options.primaryColor || '#1c1c1e',\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonArticleClick: options.onArticleClick || null,\n\t\t\tonChangelogClick: options.onChangelogClick || null,\n\t\t};\n\n\t\tthis.messengerState = new MessengerState({\n\t\t\tteamName: this.messengerOptions.teamName,\n\t\t\tteamAvatars: this.messengerOptions.teamAvatars,\n\t\t\twelcomeMessage: this.messengerOptions.welcomeMessage,\n\t\t\tenableHelp: this.messengerOptions.enableHelp,\n\t\t\tenableChangelog: this.messengerOptions.enableChangelog,\n\t\t\tuserContext: this.sdk?.apiService?.getUserContext() || null,\n\t\t});\n\n\t\tthis.launcher = null;\n\t\tthis.panel = null;\n\t\tthis.wsService = null;\n\t\tthis._wsUnsubscribers = [];\n\n\t\tthis._handleOpenChange = this._handleOpenChange.bind(this);\n\t\tthis._handleWebSocketMessage = this._handleWebSocketMessage.bind(this);\n\t\tthis._handleTypingStarted = this._handleTypingStarted.bind(this);\n\t\tthis._handleTypingStopped = this._handleTypingStopped.bind(this);\n\t\tthis._handleConversationClosed = this._handleConversationClosed.bind(this);\n\t}\n\n\t_render() {\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = `messenger-widget theme-${this.messengerOptions.theme}`;\n\t\tcontainer.style.zIndex = '999999';\n\n\t\tthis.launcher = new MessengerLauncher(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t});\n\t\tcontainer.appendChild(this.launcher.render());\n\n\t\tthis.panel = new MessengerPanel(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\ttheme: this.messengerOptions.theme,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t\tlogoUrl: this.messengerOptions.logoUrl,\n\t\t\tfeaturedContent: this.messengerOptions.featuredContent,\n\t\t\tonSendMessage:\n\t\t\t\tthis.messengerOptions.onSendMessage ||\n\t\t\t\tthis._handleSendMessage.bind(this),\n\t\t\tonStartConversation: this._handleStartConversation.bind(this),\n\t\t\tonTyping: this.sendTypingIndicator.bind(this),\n\t\t\tonSelectConversation: this._handleSelectConversation.bind(this),\n\t\t\tonStartNewConversation: this._handleNewConversationClick.bind(this),\n\t\t\tonIdentifyContact: this._handleIdentifyContact.bind(this),\n\t\t\tonArticleClick: this.messengerOptions.onArticleClick,\n\t\t\tonChangelogClick: this.messengerOptions.onChangelogClick,\n\t\t});\n\n\t\tthis.panel.registerView('home', HomeView);\n\t\tthis.panel.registerView('messages', ConversationsView);\n\t\tthis.panel.registerView('chat', ChatView);\n\t\tthis.panel.registerView('prechat', PreChatFormView);\n\t\tthis.panel.registerView('help', HelpView);\n\t\tthis.panel.registerView('changelog', ChangelogView);\n\n\t\tcontainer.appendChild(this.panel.render());\n\t\tthis.panel.hide();\n\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\tthis._stateUnsubscribe = this.messengerState.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._handleOpenChange(data.isOpen);\n\t\t\t}\n\t\t\tif (type === 'conversationChange') {\n\t\t\t\tthis._handleActiveConversationChange(\n\t\t\t\t\tdata.conversationId,\n\t\t\t\t\tdata.previousConversationId\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\t_handleOpenChange(isOpen) {\n\t\tif (isOpen) {\n\t\t\tthis.panel.show();\n\t\t\tthis.sdk.eventBus.emit('messenger:opened', { widget: this });\n\t\t} else {\n\t\t\tthis.panel.hide();\n\t\t\tthis.messengerState.reset();\n\t\t\tthis.sdk.eventBus.emit('messenger:closed', { widget: this });\n\t\t}\n\t}\n\n\t_handleActiveConversationChange(conversationId, previousConversationId) {\n\t\tif (previousConversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:unsubscribe', {\n\t\t\t\tconversation_id: previousConversationId,\n\t\t\t});\n\t\t}\n\t\tif (conversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t});\n\t\t}\n\t}\n\nasync _handleStartConversation(messageContent, pendingAttachments) {\n\ttry {\n\t\tconst userContext = this.messengerState.userContext;\n\t\tconst isAuthenticated = userContext?.email && userContext?.name;\n\n\t\t// If user is authenticated, silently identify them first\n\t\tif (isAuthenticated) {\n\t\t\ttry {\n\t\t\t\tawait this.apiService.identifyContact({\n\t\t\t\t\tname: userContext.name,\n\t\t\t\t\temail: userContext.email,\n\t\t\t\t});\n\t\t\t\tconsole.log('[MessengerWidget] User auto-identified for conversation');\n\t\t\t} catch (error) {\n\t\t\t\t// If identification fails with a non-critical error, continue anyway\n\t\t\t\tif (error?.code !== 'ALREADY_IDENTIFIED') {\n\t\t\t\t\tconsole.warn('[MessengerWidget] Auto-identification failed:', error);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Unauthenticated user - show pre-chat form\n\t\t\tthis.messengerState.pendingMessage = {\n\t\t\t\tcontent: messageContent,\n\t\t\t\tattachments: pendingAttachments,\n\t\t\t};\n\t\t\tthis.messengerState.setView('prechat');\n\t\t\treturn null;\n\t\t}\n\n\t\t// Check for existing open conversation\n\t\tconst openConversation = this.messengerState.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.messengerState.setActiveConversation(openConversation.id);\n\t\t\tawait this._handleSendMessage(\n\t\t\t\topenConversation.id,\n\t\t\t\t{ content: messageContent },\n\t\t\t\tpendingAttachments\n\t\t\t);\n\t\t\treturn openConversation;\n\t\t}\n\n\t\treturn await this.startNewConversation(\n\t\t\tmessageContent,\n\t\t\t'',\n\t\t\tpendingAttachments\n\t\t);\n\t} catch (error) {\n\t\tconsole.error('[MessengerWidget] Failed to start conversation:', error);\n\t\treturn null;\n\t}\n}\n\n\tasync _handleSelectConversation(conversationId) {\n\t\ttry {\n\t\t\tawait this.fetchMessages(conversationId);\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch messages:', error);\n\t\t}\n\t}\n\n\t_handleNewConversationClick() {\n\t\tconst openConversation = this.messengerState.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.messengerState.setActiveConversation(openConversation.id);\n\t\t\tthis.messengerState.setView('chat');\n\t\t\tthis._handleSelectConversation(openConversation.id);\n\t\t} else {\n\t\t\tthis.messengerState.setActiveConversation(null);\n\t\t\tthis.messengerState.setView('chat');\n\t\t}\n\t}\n\n\tasync _handleIdentifyContact(contactData) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.identifyContact({\n\t\t\t\tname: contactData.name,\n\t\t\t\temail: contactData.email,\n\t\t\t});\n\n\t\t\tif (response.status) {\n\t\t\t\tconsole.log('[MessengerWidget] Contact identified:', contactData.email);\n\n\t\t\t\tif (!this.messengerState.userContext) {\n\t\t\t\t\tthis.messengerState.userContext = {};\n\t\t\t\t}\n\t\t\t\tthis.messengerState.userContext.name = contactData.name;\n\t\t\t\tthis.messengerState.userContext.email = contactData.email;\n\n\t\t\t\tconst pendingMessage = this.messengerState.pendingMessage;\n\t\t\t\tif (pendingMessage) {\n\t\t\t\t\tthis.messengerState.pendingMessage = null;\n\n\t\t\t\t\tawait this.startNewConversation(\n\t\t\t\t\t\tpendingMessage.content,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tpendingMessage.attachments\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.messengerState.setView('chat');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to identify contact:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync _handleUploadFile(base64Data, filename) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.uploadFile(base64Data, filename);\n\t\t\tif (response.status && response.url) {\n\t\t\t\treturn response.url;\n\t\t\t}\n\t\t\tthrow new Error('Upload failed');\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to upload file:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync _uploadPendingAttachments(pendingAttachments) {\n\t\tif (!pendingAttachments || pendingAttachments.length === 0) return [];\n\n\t\tconst uploaded = [];\n\t\tfor (const att of pendingAttachments) {\n\t\t\ttry {\n\t\t\t\tconst cdnUrl = await this._handleUploadFile(att.preview, att.file.name);\n\t\t\t\tuploaded.push({\n\t\t\t\t\turl: cdnUrl,\n\t\t\t\t\ttype: att.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: att.file.name,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'[MessengerWidget] Skipping failed attachment upload:',\n\t\t\t\t\tatt.file.name,\n\t\t\t\t\terr\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn uploaded;\n\t}\n\n\tasync _handleSendMessage(conversationId, message, pendingAttachments) {\n\t\tthis.sdk.eventBus.emit('messenger:messageSent', {\n\t\t\twidget: this,\n\t\t\tconversationId,\n\t\t\tmessage,\n\t\t});\n\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconst response = await this.apiService.sendMessage(conversationId, {\n\t\t\t\tcontent: message.content,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconsole.log('[MessengerWidget] Message sent:', response.data.id);\n\t\t\t}\n\n\t\t\tif (this.apiService?.mock) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst mockResponse = {\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: \"Thanks for your message! We'll get back to you soon.\",\n\t\t\t\t\t\tisOwn: false,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname: 'Support Team',\n\t\t\t\t\t\t\tavatarUrl: null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tthis.messengerState.addMessage(conversationId, mockResponse);\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to send message:', error);\n\t\t}\n\t}\n\n\t_handleWebSocketMessage(data) {\n\t\tconst { conversation_id, message } = data;\n\n\t\tlet attachments = [];\n\t\tif (message.attachments) {\n\t\t\ttry {\n\t\t\t\tattachments =\n\t\t\t\t\ttypeof message.attachments === 'string'\n\t\t\t\t\t\t? JSON.parse(message.attachments)\n\t\t\t\t\t\t: message.attachments;\n\t\t\t} catch (e) {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\n\t\tconst localMessage = {\n\t\t\tid: message.id,\n\t\t\tcontent: message.content,\n\t\t\tisOwn: message.sender_type === 'customer',\n\t\t\ttimestamp: message.created_at,\n\t\t\tattachments: attachments.length > 0 ? attachments : undefined,\n\t\t\tsender: {\n\t\t\t\tname: message.sender_name || 'Support',\n\t\t\t\tavatarUrl: message.sender_avatar || null,\n\t\t\t},\n\t\t};\n\n\t\tthis.messengerState.addMessage(conversation_id, localMessage);\n\n\t\tif (\n\t\t\t!this.messengerState.isOpen ||\n\t\t\tthis.messengerState.activeConversationId !== conversation_id\n\t\t) {\n\t\t\tthis._updateUnreadCount();\n\t\t}\n\t}\n\n\t_handleTypingStarted(data) {\n\t\tif (data.is_agent) {\n\t\t\tthis.messengerState._notify('typingStarted', {\n\t\t\t\tconversationId: data.conversation_id,\n\t\t\t\tuserName: data.user_name,\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleTypingStopped(data) {\n\t\tthis.messengerState._notify('typingStopped', {\n\t\t\tconversationId: data.conversation_id,\n\t\t});\n\t}\n\n\t_handleConversationClosed(data) {\n\t\tconst conversationId =\n\t\t\tdata?.conversation_id || data?.id || data?.conversation?.id;\n\t\tif (!conversationId) return;\n\n\t\tthis.messengerState.updateConversation(conversationId, { status: 'closed' });\n\t}\n\n\tasync _updateUnreadCount() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getUnreadCount();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.messengerState.unreadCount = response.data.unread_count || 0;\n\t\t\t\tthis.messengerState._notify('unreadCountChange', {\n\t\t\t\t\tcount: this.messengerState.unreadCount,\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to get unread count:', error);\n\t\t}\n\t}\n\n\t_initWebSocket() {\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis.wsService = new WebSocketService({\n\t\t\tbaseURL: this.apiService.baseURL,\n\t\t\tworkspace: this.apiService.workspace,\n\t\t\tsessionToken: this.apiService.sessionToken,\n\t\t\tmock: this.apiService.mock,\n\t\t});\n\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('message', this._handleWebSocketMessage)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_started', this._handleTypingStarted)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_stopped', this._handleTypingStopped)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('conversation_closed', this._handleConversationClosed)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('connected', () => {\n\t\t\t\tconsole.log('[MessengerWidget] WebSocket connected');\n\t\t\t\tif (this.messengerState.activeConversationId) {\n\t\t\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\t\t\tconversation_id: this.messengerState.activeConversationId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('disconnected', () => {\n\t\t\t\tconsole.log('[MessengerWidget] WebSocket disconnected');\n\t\t\t})\n\t\t);\n\n\t\tthis.wsService.connect();\n\t}\n\n\topen() {\n\t\tthis.messengerState.setOpen(true);\n\t}\n\n\tclose() {\n\t\tthis.messengerState.setOpen(false);\n\t}\n\n\ttoggle() {\n\t\tthis.messengerState.setOpen(!this.messengerState.isOpen);\n\t}\n\n\tnavigateTo(view) {\n\t\tthis.messengerState.setView(view);\n\t\tif (!this.messengerState.isOpen) {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.messengerState.setConversations(conversations);\n\t}\n\n\taddMessage(conversationId, message) {\n\t\tthis.messengerState.addMessage(conversationId, message);\n\t}\n\n\tsetHelpArticles(articles) {\n\t\tthis.messengerState.setHelpArticles(articles);\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.messengerState.setHomeChangelogItems(items);\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.messengerState.setChangelogItems(items);\n\t}\n\n\tsetUnreadCount(count) {\n\t\tthis.messengerState.unreadCount = count;\n\t\tthis.messengerState._notify('unreadCountChange', { count });\n\t}\n\n\tgetState() {\n\t\treturn {\n\t\t\tisOpen: this.messengerState.isOpen,\n\t\t\tcurrentView: this.messengerState.currentView,\n\t\t\tunreadCount: this.messengerState.unreadCount,\n\t\t\tconversations: this.messengerState.conversations,\n\t\t};\n\t}\n\n\tasync loadInitialData() {\n\t\ttry {\n\t\t\tconst conversations = await this._fetchConversations();\n\t\t\tthis.messengerState.setConversations(conversations);\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to load conversations:', error);\n\t\t}\n\n\t\tif (this.messengerOptions.enableHelp) {\n\t\t\ttry {\n\t\t\t\tconst articles = await this._fetchHelpArticles();\n\t\t\t\tthis.messengerState.setHelpArticles(articles);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load help articles:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.messengerOptions.enableChangelog) {\n\t\t\ttry {\n\t\t\t\tconst { homeItems, changelogItems } = await this._fetchChangelog();\n\t\t\t\tthis.messengerState.setHomeChangelogItems(homeItems);\n\t\t\t\tthis.messengerState.setChangelogItems(changelogItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load changelog:', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync _fetchConversations() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversations();\n\t\t\tif (response.status && response.data) {\n\t\t\t\treturn response.data.map((conv) => ({\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle:\n\t\t\t\t\t\tconv.subject ||\n\t\t\t\t\t\t`Chat with ${conv.assigned_user?.name || 'Support'}`,\n\t\t\t\t\tparticipants: conv.assigned_user\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: conv.assigned_user.name,\n\t\t\t\t\t\t\t\t\tavatarUrl: conv.assigned_user.avatar,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: conv.preview || conv.snippet || '',\n\t\t\t\t\tlastMessageTime: conv.last_message_at,\n\t\t\t\t\tunread: conv.unread || 0,\n\t\t\t\t\tstatus: conv.status,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch conversations:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync _fetchHelpArticles() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getHelpCollections();\n\t\t\tif (response.status && response.data) {\n\t\t\t\treturn response.data.map((collection) => ({\n\t\t\t\t\tid: collection.id,\n\t\t\t\t\ttitle: collection.title || collection.name,\n\t\t\t\t\tdescription: collection.description || '',\n\t\t\t\t\tarticleCount:\n\t\t\t\t\t\tcollection.article_count || collection.articleCount || 0,\n\t\t\t\t\ticon: collection.icon || 'ph-book-open',\n\t\t\t\t\turl: collection.url || `#/help/${collection.slug || collection.id}`,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch help articles:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync fetchMessages(conversationId) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversation(conversationId);\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst messages = (response.data.messages || []).map((msg) => {\n\t\t\t\t\tlet attachments;\n\t\t\t\t\tif (msg.attachments) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tattachments =\n\t\t\t\t\t\t\t\ttypeof msg.attachments === 'string'\n\t\t\t\t\t\t\t\t\t? JSON.parse(msg.attachments)\n\t\t\t\t\t\t\t\t\t: msg.attachments;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: msg.id,\n\t\t\t\t\t\tcontent: msg.content,\n\t\t\t\t\t\tisOwn: msg.sender_type === 'customer',\n\t\t\t\t\t\ttimestamp: msg.created_at,\n\t\t\t\t\t\tattachments:\n\t\t\t\t\t\t\tattachments && attachments.length > 0 ? attachments : undefined,\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname:\n\t\t\t\t\t\t\t\tmsg.sender_name ||\n\t\t\t\t\t\t\t\t(msg.sender_type === 'customer' ? 'You' : 'Support'),\n\t\t\t\t\t\t\tavatarUrl: msg.sender_avatar || null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tthis.messengerState.setMessages(conversationId, messages);\n\n\t\t\t\tawait this.apiService.markConversationAsRead(conversationId);\n\t\t\t\tthis.messengerState.markAsRead(conversationId);\n\n\t\t\t\treturn messages;\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch messages:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync startNewConversation(message, subject = '', pendingAttachments = []) {\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconsole.log('[MessengerWidget] Starting conversation...', {\n\t\t\t\tmessage,\n\t\t\t\tattachmentCount: uploadedAttachments.length,\n\t\t\t\thasSession: this.apiService.isSessionValid(),\n\t\t\t\tsessionToken: this.apiService.sessionToken\n\t\t\t\t\t? this.apiService.sessionToken.substring(0, 10) + '...'\n\t\t\t\t\t: null,\n\t\t\t\tbaseURL: this.apiService.baseURL,\n\t\t\t\tmock: this.apiService.mock,\n\t\t\t});\n\n\t\t\tconst response = await this.apiService.startConversation({\n\t\t\t\tmessage,\n\t\t\t\tsubject,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tconsole.log('[MessengerWidget] Conversation response:', response);\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst conv = response.data;\n\t\t\t\tconst newConversation = {\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle: conv.subject || 'New conversation',\n\t\t\t\t\tparticipants: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: message,\n\t\t\t\t\tlastMessageTime: conv.created_at || new Date().toISOString(),\n\t\t\t\t\tunread: 0,\n\t\t\t\t\tstatus: 'open',\n\t\t\t\t};\n\n\t\t\t\tthis.messengerState.addConversation(newConversation);\n\n\t\t\t\tthis.messengerState.setMessages(conv.id, [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: message,\n\t\t\t\t\t\tisOwn: true,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t]);\n\n\t\t\t\tthis.messengerState.setActiveConversation(conv.id);\n\t\t\t\tthis.messengerState.setView('chat');\n\n\t\t\t\treturn conv;\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to start conversation:', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\ttry {\n\t\t\tawait this.apiService.sendTypingIndicator(conversationId, isTyping);\n\t\t} catch (error) {\n\t\t\t// Silent fail\n\t\t}\n\t}\n\n\tasync checkAgentAvailability() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.checkAgentsOnline();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.messengerState.agentsOnline = response.data.agents_online;\n\t\t\t\tthis.messengerState.onlineCount = response.data.online_count || 0;\n\t\t\t\tthis.messengerState.responseTime = response.data.response_time || '';\n\n\t\t\t\tif (response.data.available_agents) {\n\t\t\t\t\tthis.messengerState.setTeamAvatarsFromAgents(\n\t\t\t\t\t\tresponse.data.available_agents\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.messengerState._notify('availabilityUpdate', response.data);\n\t\t\t\treturn response.data;\n\t\t\t}\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to check availability:', error);\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t}\n\t}\n\n\tasync _fetchChangelog() {\n\t\tif (this.apiService?.mock) {\n\t\t\treturn {\n\t\t\t\thomeItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_5',\n\t\t\t\t\t\ttitle: 'New integrations available',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Connect with more tools you love and streamline your workflow.',\n\t\t\t\t\t\ttags: ['Integration'],\n\t\t\t\t\t\tcoverImage: 'https://feedback-sdk.product7.io/700x400__5_.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 14 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_2',\n\t\t\t\t\t\ttitle: 'A new era of Insights has arrived',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'We announced Fin Insights, a groundbreaking, AI-powered product that gives you complete visibility into every customer conversation.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Intercom_Messenger__1_.jpg',\n\t\t\t\t\t\tcoverText: 'Watch our major product launch on-demand',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 5 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_1',\n\t\t\t\t\t\ttitle: 'The 2025 Customer Service Transformation Report',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Learn how AI has transformed customer service from the ground up—rewriting its economics and reshaping expectations.',\n\t\t\t\t\t\ttags: ['Report'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Main_Report_Email_Header.png',\n\t\t\t\t\t\tcoverText: 'Customer service trends as we know them are dead.',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 2 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchangelogItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_4',\n\t\t\t\t\t\ttitle: 'Enhanced conversation analytics',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Get deeper insights into your customer conversations with our new analytics dashboard.',\n\t\t\t\t\t\ttags: ['Analytics'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-Frame%202087334450.jpg',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 10 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_3',\n\t\t\t\t\t\ttitle: 'Escalation guidance for complex issues',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'New AI-powered escalation guidance helps your team handle complex customer issues more effectively.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-image-escalation-guidance-event@2x.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 7 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\tconst response = await this.apiService.getChangelogs({ limit: 20 });\n\t\tconst changelogs = response.data || [];\n\n\t\tconst mappedItems = changelogs.map((item) => ({\n\t\t\tid: item.id,\n\t\t\ttitle: item.title,\n\t\t\tdescription: item.excerpt || item.description || '',\n\t\t\ttags: item.labels ? item.labels.map((label) => label.name) : [],\n\t\t\tcoverImage: item.cover_image || null,\n\t\t\tcoverText: null,\n\t\t\tpublishedAt: item.published_at,\n\t\t\turl: item.slug ? `/changelog/${item.slug}` : '#',\n\t\t}));\n\n\t\treturn {\n\t\t\thomeItems: mappedItems.slice(0, 3),\n\t\t\tchangelogItems: mappedItems,\n\t\t};\n\t}\n\nasync onMount() {\n\tthis.loadInitialData();\n\n\tif (this.apiService?.sessionToken) {\n\t\tthis._initWebSocket();\n\t}\n\n\tthis.checkAgentAvailability();\n\n\tthis._availabilityInterval = setInterval(() => {\n\t\tthis.checkAgentAvailability();\n\t}, 60000);\n}\n\n\tonDestroy() {\n\t\tif (this._stateUnsubscribe) {\n\t\t\tthis._stateUnsubscribe();\n\t\t}\n\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis._wsUnsubscribers.forEach((unsub) => unsub());\n\t\tthis._wsUnsubscribers = [];\n\n\t\tif (this._availabilityInterval) {\n\t\t\tclearInterval(this._availabilityInterval);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.launcher) {\n\t\t\tthis.launcher.destroy();\n\t\t}\n\t\tif (this.panel) {\n\t\t\tthis.panel.destroy();\n\t\t}\n\t\tthis.onDestroy();\n\t\tsuper.destroy();\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class SurveyWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'survey' });\n\n\t\tthis.surveyOptions = {\n\t\t\tsurveyId: options.surveyId || null, // Backend survey ID for API calls\n\t\t\tsurveyType: options.surveyType || 'nps', // 'nps', 'csat', 'ces', 'custom'\n\t\t\tposition: options.position || 'bottom-right', // 'bottom-right', 'bottom-left', 'center', 'bottom'\n\t\t\ttitle: options.title || null,\n\t\t\tdescription: options.description || null,\n\t\t\tlowLabel: options.lowLabel || null,\n\t\t\thighLabel: options.highLabel || null,\n\t\t\tcustomQuestions: options.customQuestions || [],\n\t\t\ttheme: options.theme || 'light',\n\t\t\tonSubmit: options.onSubmit || null,\n\t\t\tonDismiss: options.onDismiss || null,\n\t\t};\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\t_render() {\n\t\t// Survey widget doesn't render a trigger button, it's shown programmatically\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'feedback-survey-container';\n\t\tcontainer.style.display = 'none';\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Events are attached when survey is shown\n\t}\n\n\tshow() {\n\t\tthis._renderSurvey();\n\t\tthis.surveyState.isVisible = true;\n\t\tthis.sdk.eventBus.emit('survey:shown', {\n\t\t\twidget: this,\n\t\t\ttype: this.surveyOptions.surveyType,\n\t\t});\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tthis._closeSurvey();\n\t\treturn this;\n\t}\n\n\t_renderSurvey() {\n\t\t// Remove any existing survey\n\t\tthis._closeSurvey();\n\n\t\tconst config = this._getSurveyConfig();\n\t\tconst positionStyles = this._getPositionStyles();\n\t\tconst themeStyles =\n\t\t\tthis.surveyOptions.theme === 'dark'\n\t\t\t\t? 'background: #1a1a1a; color: #fff;'\n\t\t\t\t: 'background: #fff; color: #1d1d1f;';\n\n\t\t// Create backdrop for center position\n\t\tif (this.surveyOptions.position === 'center') {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-survey-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () =>\n\t\t\t\tthis._handleDismiss()\n\t\t\t);\n\t\t}\n\n\t\tthis.surveyElement = document.createElement('div');\n\t\tthis.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position} theme-${this.surveyOptions.theme}`;\n\t\tthis.surveyElement.style.cssText = `position: fixed; ${positionStyles} z-index: 10000; ${themeStyles} border-radius: 16px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); padding: 24px; min-width: 320px; max-width: 400px; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;`;\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\" style=\"position: absolute; top: 12px; right: 12px; background: none; border: none; font-size: 20px; cursor: pointer; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'}; line-height: 1;\">×</button>\n\t\t\t<h3 class=\"feedback-survey-title\" style=\"margin: 0 0 8px 0; font-size: 18px; font-weight: 600; padding-right: 24px;\">${config.title}</h3>\n\t\t\t<p class=\"feedback-survey-description\" style=\"color: ${this.surveyOptions.theme === 'dark' ? '#aaa' : '#86868b'}; margin: 0 0 20px 0; font-size: 14px;\">${config.description}</p>\n\t\t\t<div class=\"feedback-survey-content\">${config.html}</div>\n\t\t\t<div class=\"feedback-survey-feedback\" style=\"margin-top: 16px;\">\n\t\t\t\t<textarea class=\"feedback-survey-textarea\" placeholder=\"Any additional feedback? (optional)\" style=\"width: 100%; padding: 12px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#333' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; resize: none; height: 80px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; font-family: inherit; box-sizing: border-box;\"></textarea>\n\t\t\t</div>\n\t\t\t<button class=\"feedback-survey-submit\" style=\"width: 100%; margin-top: 12px; padding: 12px; background: #007aff; color: white; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; font-family: inherit;\">Submit</button>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.surveyElement);\n\t\tthis._attachSurveyEvents();\n\n\t\t// Animate in\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.surveyElement.style.opacity = '1';\n\t\t\tthis.surveyElement.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(1)'\n\t\t\t\t\t: 'translateY(0)';\n\t\t});\n\t}\n\n\t_getSurveyConfig() {\n\t\tconst configs = {\n\t\t\tnps: {\n\t\t\t\ttitle:\n\t\t\t\t\tthis.surveyOptions.title || 'How likely are you to recommend us?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'On a scale of 0-10, how likely are you to recommend our product to a friend or colleague?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-nps\" style=\"display: flex; justify-content: space-between; gap: 4px;\">\n\t\t\t\t\t\t${[...Array(11).keys()]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(n) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-nps-btn\" data-score=\"${n}\" style=\"width: 28px; height: 36px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 6px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 12px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${n}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"display: flex; justify-content: space-between; margin-top: 8px; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'};\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Not likely'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very likely'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcsat: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How satisfied are you?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How would you rate your overall satisfaction with our product?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-csat\" style=\"display: flex; justify-content: center; gap: 16px;\">\n\t\t\t\t\t\t${['😞', '😕', '😐', '🙂', '😄']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(emoji, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-csat-btn\" data-score=\"${i + 1}\" style=\"background: none; border: none; cursor: pointer; font-size: 36px; transition: transform 0.15s; padding: 8px;\">${emoji}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"display: flex; justify-content: space-between; margin-top: 8px; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'};\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Very dissatisfied'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very satisfied'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tces: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How easy was it?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How easy was it to accomplish your task today?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-ces\" style=\"display: flex; justify-content: space-between; gap: 8px;\">\n\t\t\t\t\t\t${['Very Difficult', 'Difficult', 'Neutral', 'Easy', 'Very Easy']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-ces-btn\" data-score=\"${i + 1}\" style=\"flex: 1; padding: 12px 8px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${label}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t\ttitle: this.surveyOptions.title || 'Quick Feedback',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'Help us improve by answering a few questions.',\n\t\t\t\thtml: this._renderCustomQuestions(),\n\t\t\t},\n\t\t};\n\n\t\treturn configs[this.surveyOptions.surveyType] || configs.nps;\n\t}\n\n\t_renderCustomQuestions() {\n\t\tif (\n\t\t\t!this.surveyOptions.customQuestions ||\n\t\t\tthis.surveyOptions.customQuestions.length === 0\n\t\t) {\n\t\t\t// Default custom questions\n\t\t\treturn `\n\t\t\t\t<div style=\"margin-bottom: 16px;\">\n\t\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">What feature do you use most?</label>\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"feature\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'};\">\n\t\t\t\t\t\t<option value=\"\">Select a feature</option>\n\t\t\t\t\t\t<option value=\"feedback\">Feedback Collection</option>\n\t\t\t\t\t\t<option value=\"surveys\">Surveys</option>\n\t\t\t\t\t\t<option value=\"analytics\">Analytics</option>\n\t\t\t\t\t\t<option value=\"integrations\">Integrations</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">How often do you use it?</label>\n\t\t\t\t\t<div class=\"feedback-survey-frequency\" style=\"display: flex; gap: 8px;\">\n\t\t\t\t\t\t${['Daily', 'Weekly', 'Monthly', 'Rarely']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(freq) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-freq-btn\" data-freq=\"${freq}\" style=\"flex: 1; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 12px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${freq}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.surveyOptions.customQuestions\n\t\t\t.map(\n\t\t\t\t(q, index) => `\n\t\t\t<div style=\"margin-bottom: 16px;\">\n\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">${q.label}</label>\n\t\t\t\t${this._renderQuestionInput(q, index)}\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\t}\n\n\t_renderQuestionInput(question, index) {\n\t\tswitch (question.type) {\n\t\t\tcase 'select':\n\t\t\t\treturn `\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"${question.id || index}\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'};\">\n\t\t\t\t\t\t<option value=\"\">${question.placeholder || 'Select an option'}</option>\n\t\t\t\t\t\t${question.options.map((opt) => `<option value=\"${opt.value}\">${opt.label}</option>`).join('')}\n\t\t\t\t\t</select>\n\t\t\t\t`;\n\t\t\tcase 'text':\n\t\t\t\treturn `\n\t\t\t\t\t<input type=\"text\" class=\"feedback-survey-input\" data-question=\"${question.id || index}\" placeholder=\"${question.placeholder || ''}\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; box-sizing: border-box;\">\n\t\t\t\t`;\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_getPositionStyles() {\n\t\tconst positions = {\n\t\t\t'bottom-right':\n\t\t\t\t'bottom: 24px; right: 24px; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t\t'bottom-left':\n\t\t\t\t'bottom: 24px; left: 24px; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t\tcenter:\n\t\t\t\t'top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.95); opacity: 0; transition: all 0.3s ease;',\n\t\t\tbottom:\n\t\t\t\t'bottom: 0; left: 0; right: 0; border-radius: 16px 16px 0 0; max-width: none; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t};\n\t\treturn positions[this.surveyOptions.position] || positions['bottom-right'];\n\t}\n\n\t_attachSurveyEvents() {\n\t\tif (!this.surveyElement) return;\n\n\t\t// Close button\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tcloseBtn.addEventListener('click', () => this._handleDismiss());\n\n\t\t// Submit button\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.addEventListener('click', () => this._handleSubmit());\n\n\t\t// Feedback textarea\n\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-textarea'\n\t\t);\n\t\ttextarea.addEventListener('input', (e) => {\n\t\t\tthis.surveyState.feedback = e.target.value;\n\t\t});\n\n\t\t// Survey type specific events\n\t\tthis._attachTypeSpecificEvents();\n\n\t\t// Escape key\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis._handleDismiss();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\t_attachTypeSpecificEvents() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\tif (type === 'nps') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectNPS(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'csat') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCSAT(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tbtn.style.transform = 'scale(1.1)';\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.transform = 'scale(1)';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'ces') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCES(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'custom') {\n\t\t\t// Frequency buttons\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectFrequency(btn.dataset.freq)\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t// Select inputs\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-select')\n\t\t\t\t.forEach((select) => {\n\t\t\t\t\tselect.addEventListener('change', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[select.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t// Text inputs\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-input')\n\t\t\t\t.forEach((input) => {\n\t\t\t\t\tinput.addEventListener('input', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[input.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_selectNPS(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectCSAT(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tbtn.style.transform = btnScore === score ? 'scale(1.2)' : 'scale(1)';\n\t\t\t});\n\t}\n\n\t_selectCES(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectFrequency(freq) {\n\t\tthis.surveyState.customAnswers.frequency = freq;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tif (btn.dataset.freq === freq) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\t// Validate\n\t\tif (\n\t\t\t(type === 'nps' || type === 'csat' || type === 'ces') &&\n\t\t\tthis.surveyState.score === null\n\t\t) {\n\t\t\tthis._showError('Please select a rating');\n\t\t\treturn;\n\t\t}\n\n\t\tconst responseData = {\n\t\t\trating: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tanswers: this.surveyState.customAnswers,\n\t\t};\n\n\t\tconst response = {\n\t\t\ttype: type,\n\t\t\tscore: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tcustomAnswers: this.surveyState.customAnswers,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\t// Call onSubmit callback if provided\n\t\tif (this.surveyOptions.onSubmit) {\n\t\t\tthis.surveyOptions.onSubmit(response);\n\t\t}\n\n\t\t// Submit to API\n\t\ttry {\n\t\t\tconst surveyId =\n\t\t\t\tthis.surveyOptions.surveyId || `local_${type}_${Date.now()}`;\n\t\t\tawait this.apiService.submitSurveyResponse(surveyId, responseData);\n\t\t} catch (error) {\n\t\t\tconsole.error('[SurveyWidget] Failed to submit survey:', error);\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('survey:submitted', { widget: this, response });\n\n\t\tthis._closeSurvey();\n\t\tthis._showSuccessNotification();\n\t}\n\n\tasync _handleDismiss() {\n\t\t// Call dismiss API if survey has a backend ID\n\t\tif (this.surveyOptions.surveyId) {\n\t\t\ttry {\n\t\t\t\tawait this.apiService.dismissSurvey(this.surveyOptions.surveyId);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[SurveyWidget] Failed to dismiss survey:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.surveyOptions.onDismiss) {\n\t\t\tthis.surveyOptions.onDismiss();\n\t\t}\n\t\tthis.sdk.eventBus.emit('survey:dismissed', { widget: this });\n\t\tthis._closeSurvey();\n\t}\n\n\t_showError(message) {\n\t\t// Simple error display - could be enhanced\n\t\tconst existing = this.surveyElement.querySelector('.feedback-survey-error');\n\t\tif (existing) existing.remove();\n\n\t\tconst error = document.createElement('div');\n\t\terror.className = 'feedback-survey-error';\n\t\terror.style.cssText =\n\t\t\t'color: #ef4444; font-size: 13px; margin-top: 8px; text-align: center;';\n\t\terror.textContent = message;\n\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.parentNode.insertBefore(error, submitBtn);\n\n\t\tsetTimeout(() => error.remove(), 3000);\n\t}\n\n\t_showSuccessNotification() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-survey-success';\n\t\tnotification.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\ttop: 24px;\n\t\t\tright: 24px;\n\t\t\tbackground: #10b981;\n\t\t\tcolor: white;\n\t\t\tpadding: 16px 24px;\n\t\t\tborder-radius: 12px;\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: 500;\n\t\t\tz-index: 10001;\n\t\t\tbox-shadow: 0 10px 40px rgba(0,0,0,0.2);\n\t\t\tfont-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n\t\t`;\n\t\tnotification.innerHTML = `\n\t\t\t<div style=\"display: flex; align-items: center; gap: 8px;\">\n\t\t\t\t<span style=\"font-size: 18px;\">✓</span>\n\t\t\t\t<span>Thank you for your feedback!</span>\n\t\t\t</div>\n\t\t`;\n\t\tdocument.body.appendChild(notification);\n\n\t\tsetTimeout(() => {\n\t\t\tnotification.style.opacity = '0';\n\t\t\tnotification.style.transition = 'opacity 0.3s ease';\n\t\t\tsetTimeout(() => notification.remove(), 300);\n\t\t}, 3000);\n\t}\n\n\t_closeSurvey() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\t// Capture references to avoid race conditions with setTimeout\n\t\tconst surveyEl = this.surveyElement;\n\t\tconst backdropEl = this.backdropElement;\n\n\t\tif (surveyEl) {\n\t\t\tsurveyEl.style.opacity = '0';\n\t\t\tsurveyEl.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(0.95)'\n\t\t\t\t\t: 'translateY(20px)';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (surveyEl && surveyEl.parentNode) {\n\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.surveyElement = null;\n\t\t}\n\n\t\tif (backdropEl) {\n\t\t\tbackdropEl.style.opacity = '0';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (backdropEl && backdropEl.parentNode) {\n\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.backdropElement = null;\n\t\t}\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\tdestroy() {\n\t\tthis._closeSurvey();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab theme-${this.options.theme} position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\n\t\ttab.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting) {\n\t\t\t\ttab.style.transform = this._getHoverTransform();\n\t\t\t}\n\t\t});\n\n\t\ttab.addEventListener('mouseleave', () => {\n\t\t\ttab.style.transform = 'none';\n\t\t});\n\t}\n\n\t_getHoverTransform() {\n\t\tconst position = this.options.position;\n\t\tif (position.includes('right')) {\n\t\t\treturn 'translateX(-5px)';\n\t\t} else if (position.includes('left')) {\n\t\t\treturn 'translateX(5px)';\n\t\t}\n\t\treturn 'none';\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { ChangelogWidget } from './ChangelogWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { MessengerWidget } from './MessengerWidget.js';\nimport { SurveyWidget } from './SurveyWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t\t['survey', SurveyWidget],\n\t\t['messenger', MessengerWidget],\n\t\t['changelog', ChangelogWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class FeedbackSDK {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tsiteId: this.config.siteId,\n\t\t\tsessionToken: this.config.sessionToken,\n\t\t\tuserContext: this.config.userContext,\n\t\t\tmock: this.config.mock,\n\t\t\tdebug: this.config.debug,\n\t\t\tenv: this.config.env,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init(this.config.userContext);\n\n\t\t\tif (initData.config) {\n\t\t\t\tthis.config = deepMerge(initData.config, this.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before creating widgets. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...options,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(type, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', { widget, type });\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getActiveSurveys(context);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to fetch active surveys: ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tasync showSurveyById(surveyId, options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst surveys = await this.getActiveSurveys();\n\t\tconst surveyConfig = surveys.find((s) => s.id === surveyId);\n\n\t\tif (!surveyConfig) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Survey with ID '${surveyId}' not found or not active`\n\t\t\t);\n\t\t}\n\n\t\treturn this.showSurvey({\n\t\t\tsurveyId: surveyConfig.id,\n\t\t\tsurveyType: surveyConfig.type,\n\t\t\ttitle: surveyConfig.title,\n\t\t\tdescription: surveyConfig.description,\n\t\t\tlowLabel: surveyConfig.low_label,\n\t\t\thighLabel: surveyConfig.high_label,\n\t\t\tcustomQuestions: surveyConfig.questions,\n\t\t\t...options,\n\t\t});\n\t}\n\n\tshowSurvey(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst surveyWidget = this.createWidget('survey', {\n\t\t\tsurveyId: options.surveyId,\n\t\t\tsurveyType: options.surveyType || options.type || 'nps',\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || this.config.theme || 'light',\n\t\t\ttitle: options.title,\n\t\t\tdescription: options.description,\n\t\t\tlowLabel: options.lowLabel,\n\t\t\thighLabel: options.highLabel,\n\t\t\tcustomQuestions: options.customQuestions,\n\t\t\tonSubmit: options.onSubmit,\n\t\t\tonDismiss: options.onDismiss,\n\t\t});\n\n\t\tsurveyWidget.mount();\n\t\tsurveyWidget.show();\n\n\t\treturn surveyWidget;\n\t}\n\n\tshowChangelog(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing changelog. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst changelogWidget = this.createWidget('changelog', {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || this.config.theme || 'light',\n\t\t\ttitle: options.title || \"What's New\",\n\t\t\ttriggerText: options.triggerText || \"What's New\",\n\t\t\tshowBadge: options.showBadge !== false,\n\t\t\tviewButtonText: options.viewButtonText || 'View Update',\n\t\t\tchangelogBaseUrl: options.changelogBaseUrl,\n\t\t\topenInNewTab: options.openInNewTab,\n\t\t\tonViewUpdate: options.onViewUpdate,\n\t\t});\n\n\t\tchangelogWidget.mount();\n\t\tchangelogWidget.show();\n\n\t\treturn changelogWidget;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching changelogs. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs(options);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to fetch changelogs: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.config.userContext = userContext;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setUserContext(userContext);\n\t\t}\n\t\tthis.eventBus.emit('user:updated', { userContext });\n\t}\n\n\tgetUserContext() {\n\t\treturn (\n\t\t\tthis.config.userContext ||\n\t\t\t(this.apiService ? this.apiService.getUserContext() : null)\n\t\t);\n\t}\n\n\tasync reinitialize(newUserContext = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\n\t\tif (newUserContext) {\n\t\t\tthis.setUserContext(newUserContext);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.removeAllListeners();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t}\n\n\thasFeedbackBeenSubmitted(cooldownDays = 30) {\n\t\tconst cooldownMs = cooldownDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\tif (this.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\treturn now - data.submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclearFeedbackSubmissionTracking() {\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t\tthis.eventBus.emit('feedback:trackingCleared');\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear feedback tracking:', e);\n\t\t}\n\t}\n\n\t_detectEnvironment() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn 'production';\n\t\t}\n\n\t\tconst hostname = window.location.hostname.toLowerCase();\n\n\t\tif (\n\t\t\thostname.includes('staging') ||\n\t\t\thostname.includes('localhost') ||\n\t\t\thostname.includes('127.0.0.1') ||\n\t\t\thostname.includes('.local')\n\t\t) {\n\t\t\treturn 'staging';\n\t\t}\n\n\t\treturn 'production';\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tuserContext: null,\n\t\t\tposition: 'bottom-right',\n\t\t\ttheme: 'light',\n\t\t\tboardId: 'general',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t\tmock: false,\n\t\t\tenv: this._detectEnvironment(),\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(\n\t\t\tdeepMerge(defaultConfig, existingConfig),\n\t\t\tnewConfig\n\t\t);\n\n\t\tif (!newConfig.env && !existingConfig.env) {\n\t\t\tmergedConfig.env = this._detectEnvironment();\n\t\t}\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.userContext) {\n\t\t\tthis._validateUserContext(mergedConfig.userContext);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateUserContext(userContext) {\n\t\tif (!userContext.user_id && !userContext.email) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t'User context must include at least user_id or email'\n\t\t\t);\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (userContext[key] && typeof userContext[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`User context field '${key}' must be of type '${expectedType}'`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new FeedbackSDK(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new FeedbackSDK(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractUserContextFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany:\n\t\t\t\tauthData.company || authData.organization\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t};\n\t}\n}\n","export const MESSENGER_STYLES = `\n/* ========================================\n Messenger Widget - Intercom-style Dark Theme\n ======================================== */\n\n.messenger-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.messenger-widget *,\n.messenger-widget *::before,\n.messenger-widget *::after {\n box-sizing: border-box;\n}\n\n/* ========================================\n Launcher Button\n ======================================== */\n\n.messenger-launcher {\n position: fixed;\n z-index: 999999;\n}\n\n.messenger-launcher-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.messenger-launcher-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.messenger-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: 50%;\n border: none;\n background: #1c1c1e;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n}\n\n.messenger-launcher-btn:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.4);\n}\n\n.messenger-launcher-btn:active {\n transform: scale(0.95);\n}\n\n.messenger-launcher-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s ease, transform 0.2s ease;\n}\n\n.messenger-launcher-open .messenger-launcher-icon-chat {\n opacity: 0;\n transform: rotate(-90deg);\n}\n\n.messenger-launcher-open .messenger-launcher-icon-close {\n opacity: 1;\n transform: rotate(0deg);\n}\n\n.messenger-launcher-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n background: #ef4444;\n color: white;\n font-size: 11px;\n font-weight: 600;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2px solid white;\n}\n\n/* ========================================\n Panel Container\n ======================================== */\n\n.messenger-panel {\n position: fixed;\n z-index: 999998;\n width: 400px;\n height: 680px;\n max-height: calc(100vh - 100px);\n display: none;\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.messenger-panel.open {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.messenger-panel-bottom-right {\n bottom: 90px;\n right: 20px;\n}\n\n.messenger-panel-bottom-left {\n bottom: 90px;\n left: 20px;\n}\n\n.messenger-panel-content {\n background: #1c1c1e;\n height: 100%;\n border-radius: 16px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);\n}\n\n/* Light theme */\n.messenger-panel.theme-light .messenger-panel-content {\n background: #ffffff;\n}\n\n/* ========================================\n Views Container\n ======================================== */\n\n.messenger-panel-views {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.messenger-view {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* ========================================\n Common Components\n ======================================== */\n\n/* Close Button */\n.messenger-close-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.6);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.messenger-close-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.theme-light .messenger-close-btn {\n color: #86868b;\n}\n\n.theme-light .messenger-close-btn:hover {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n/* Back Button */\n.messenger-back-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.6);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.messenger-back-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n/* Avatar Stack */\n.messenger-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.messenger-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 2px solid #1c1c1e;\n background: #5856d6;\n color: white;\n font-size: 13px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: -8px;\n object-fit: cover;\n}\n\n.messenger-avatar:first-child {\n margin-left: 0;\n}\n\n.messenger-avatar-small {\n width: 28px;\n height: 28px;\n font-size: 11px;\n}\n\n.messenger-avatar-medium {\n width: 40px;\n height: 40px;\n font-size: 15px;\n font-weight: 600;\n}\n\n.messenger-avatar-tiny {\n width: 20px;\n height: 20px;\n font-size: 9px;\n border-width: 1.5px;\n margin-left: -6px;\n}\n\n.messenger-avatar-tiny:first-child {\n margin-left: 0;\n}\n\n.theme-light .messenger-avatar {\n border-color: #ffffff;\n}\n\n/* ========================================\n Home View\n ======================================== */\n\n.messenger-home-view {\n background: linear-gradient(180deg, #2c2c2e 0%, #1c1c1e 40%);\n}\n\n.messenger-home-header {\n padding: 20px;\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.2) 0%, transparent 100%);\n}\n\n.messenger-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.messenger-home-logo {\n width: 32px;\n height: 32px;\n}\n\n.messenger-home-logo img {\n width: 100%;\n height: 100%;\n border-radius: 8px;\n object-fit: cover;\n}\n\n.messenger-home-logo-default {\n width: 32px;\n height: 32px;\n background: linear-gradient(135deg, #5856d6, #007aff);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n}\n\n.messenger-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: 12px;\n}\n\n.messenger-home-welcome {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.messenger-home-greeting {\n font-size: 15px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-home-question {\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-body {\n flex: 1;\n padding: 20px;\n overflow-y: auto;\n}\n\n.messenger-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n margin-bottom: 20px;\n}\n\n.messenger-home-message-btn:hover {\n background: #3c3c3e;\n transform: translateX(4px);\n}\n\n.messenger-home-message-btn svg {\n opacity: 0.6;\n}\n\n/* Continue conversation variant */\n.messenger-home-continue-btn {\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n position: relative;\n}\n\n.messenger-home-continue-btn > i {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-home-continue-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n text-align: left;\n}\n\n.messenger-home-continue-label {\n font-size: 14px;\n font-weight: 600;\n}\n\n.messenger-home-continue-preview {\n font-size: 12px;\n opacity: 0.6;\n font-weight: 400;\n}\n\n/* Featured Card */\n.messenger-home-featured {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 20px;\n}\n\n.messenger-home-featured-image {\n width: 100%;\n height: 120px;\n object-fit: cover;\n}\n\n.messenger-home-featured-content {\n padding: 16px;\n}\n\n.messenger-home-featured-content h3 {\n margin: 0 0 8px;\n font-size: 16px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-featured-content p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n/* Changelog Section in Home */\n.messenger-home-changelog-section {\n margin-top: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-home-changelog-card {\n background: #2c2c2e;\n border-radius: 16px;\n overflow: hidden;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-home-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n border-radius: 12px;\n margin: 12px 12px 0 12px;\n padding-bottom: 12px;\n width: calc(100% - 24px);\n}\n\n.messenger-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 12px;\n}\n\n.messenger-home-changelog-cover-text {\n position: absolute;\n bottom: 12px;\n left: 12px;\n right: 12px;\n color: #ffffff;\n font-size: 14px;\n font-weight: 600;\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-content {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-home-changelog-card-title {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-desc {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* ========================================\n Conversations View\n ======================================== */\n\n.messenger-conversations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-conversations-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 4px 12px 12px 12px;\n}\n\n.messenger-conversations-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-conversations-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-conversations-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-conversation-item {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 10px 16px;\n border-radius: 12px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.messenger-conversation-item:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-conversation-avatars {\n flex-shrink: 0;\n padding-top: 2px;\n}\n\n.messenger-conversation-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-conversation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 4px;\n gap: 12px;\n}\n\n.messenger-conversation-title {\n font-size: 15px;\n font-weight: 400;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-conversation-time {\n font-size: 13px;\n color: rgba(255, 255, 255, 0.5);\n flex-shrink: 0;\n}\n\n.messenger-conversation-preview {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.messenger-unread-dot {\n width: 8px;\n height: 8px;\n background: #ef4444;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.messenger-conversation-message {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.4;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-title {\n font-weight: 400;\n color: #ffffff;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-message {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.messenger-conversations-footer {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-new-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-new-message-btn:hover {\n background: #3c3c3e;\n}\n\n.messenger-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n.messenger-new-message-btn svg {\n opacity: 0.6;\n}\n\n/* ========================================\n Chat View\n ======================================== */\n\n.messenger-chat-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-chat-header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.messenger-chat-title {\n font-size: 16px;\n font-weight: 500;\n color: white;\n}\n\n.messenger-chat-view {\n position: relative;\n overflow: visible;\n}\n\n.messenger-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-chat-empty {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-chat-empty-avatars {\n margin-bottom: 16px;\n}\n\n.messenger-chat-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-chat-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n max-width: 240px;\n}\n\n/* Messages */\n.messenger-message {\n display: flex;\n gap: 8px;\n max-width: 85%;\n}\n\n.messenger-message-own {\n align-self: flex-end;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.messenger-message-received {\n align-self: flex-start;\n}\n\n.messenger-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-message-sender {\n font-size: 12px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 4px;\n margin-left: 12px;\n}\n\n.messenger-message-bubble {\n padding: 12px 16px;\n border-radius: 18px;\n word-wrap: break-word;\n}\n\n.messenger-message-own .messenger-message-bubble {\n background: rgb(29, 78, 216);\n color: white;\n border-bottom-right-radius: 4px;\n}\n\n.messenger-message-received .messenger-message-bubble {\n background: #2c2c2e;\n color: white;\n border-bottom-left-radius: 4px;\n}\n\n.messenger-message-content {\n font-size: 15px;\n line-height: 1.4;\n}\n\n.messenger-message-time {\n font-size: 11px;\n color: rgba(255, 255, 255, 0.4);\n margin-top: 4px;\n padding: 0 4px;\n}\n\n.messenger-message-avatar {\n flex-shrink: 0;\n margin-top: auto;\n}\n\n/* Conversation Closed Banner */\n.messenger-closed-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px 16px;\n margin: 16px;\n background: rgba(52, 199, 89, 0.12);\n color: #34c759;\n border-radius: 12px;\n font-size: 13px;\n font-weight: 500;\n}\n\n/* Compose Area */\n.messenger-chat-compose {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-compose-input-wrapper {\n flex: 1;\n background: #2c2c2e;\n border-radius: 10px;\n padding: 8px 16px;\n}\n\n.messenger-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 15px;\n line-height: 1.4;\n resize: none;\n max-height: 120px;\n font-family: inherit;\n}\n\n.messenger-compose-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-compose-send {\n width: 40px;\n height: 40px;\n background: #007aff;\n border: none;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.messenger-compose-send:hover:not(:disabled) {\n background: #0066d6;\n transform: scale(1.05);\n}\n\n.messenger-compose-send:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.3);\n cursor: not-allowed;\n}\n\n/* Attach Button */\n.messenger-compose-attach {\n width: 40px;\n height: 40px;\n background: transparent;\n border: none;\n border-radius: 50%;\n color: rgba(255, 255, 255, 0.5);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.messenger-compose-attach:hover:not(:disabled) {\n color: rgba(255, 255, 255, 0.85);\n background: rgba(255, 255, 255, 0.08);\n}\n\n.messenger-compose-attach:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n/* Attachment Preview Strip */\n.messenger-compose-attachments-preview {\n display: none;\n flex-wrap: wrap;\n gap: 8px;\n padding: 8px 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-attachment-preview {\n position: relative;\n width: 56px;\n height: 56px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid rgba(255, 255, 255, 0.15);\n}\n\n.messenger-attachment-thumb {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.messenger-attachment-file-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n background: #2c2c2e;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-attachment-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 18px;\n height: 18px;\n background: rgba(0, 0, 0, 0.7);\n border: none;\n border-radius: 50%;\n color: white;\n font-size: 12px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: background 0.15s ease;\n}\n\n.messenger-attachment-remove:hover {\n background: rgba(255, 59, 48, 0.85);\n}\n\n/* Message Attachments (inline images & file links) */\n.messenger-message-image {\n max-width: 220px;\n max-height: 200px;\n width: auto;\n height: auto;\n border-radius: 8px;\n margin-top: 4px;\n cursor: pointer;\n object-fit: contain;\n display: block;\n}\n\n.messenger-message-file {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n margin-top: 4px;\n padding: 8px 12px;\n border-radius: 8px;\n background: #2c2c2e;\n color: #60a5fa;\n text-decoration: none;\n font-size: 13px;\n transition: background 0.15s ease;\n max-width: 100%;\n word-break: break-all;\n cursor: pointer;\n}\n\n.messenger-message-file:hover {\n background: #3c3c3e;\n}\n\n.messenger-file-download-icon {\n margin-left: auto;\n opacity: 0.5;\n flex-shrink: 0;\n}\n\n.messenger-message-file:hover .messenger-file-download-icon {\n opacity: 1;\n}\n\n/* Light theme overrides for attachments */\n.theme-light .messenger-compose-attach {\n color: #9ca3af;\n}\n\n.theme-light .messenger-compose-attach:hover:not(:disabled) {\n color: #374151;\n background: #f3f4f6;\n}\n\n.theme-light .messenger-compose-attachments-preview {\n background: #ffffff;\n border-top-color: #e5e7eb;\n}\n\n.theme-light .messenger-attachment-preview {\n border-color: #e5e7eb;\n}\n\n.theme-light .messenger-attachment-file-icon {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n.theme-light .messenger-message-file {\n background: #f3f4f6;\n color: #2563eb;\n}\n\n.theme-light .messenger-message-file:hover {\n background: #e5e7eb;\n}\n\n/* ========================================\n Help View\n ======================================== */\n\n.messenger-help-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n position: relative;\n}\n\n.messenger-help-header h2 {\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-header .messenger-close-btn {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-help-search {\n padding: 0 16px 16px;\n}\n\n.messenger-help-search-wrapper {\n display: flex;\n align-items: center;\n background: #2c2c2e;\n border-radius: 12px;\n padding: 14px 16px;\n position: relative;\n}\n\n.messenger-help-search-icon {\n position: absolute;\n right: 16px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-search-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 16px;\n font-family: inherit;\n padding-right: 32px;\n}\n\n.messenger-help-search-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-help-collections-header {\n font-size: 17px;\n font-weight: 600;\n color: white;\n padding: 12px 16px 8px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collections {\n padding: 0;\n}\n\n.messenger-help-collection {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collection:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-help-collection-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-help-collection-title {\n margin: 0 0 2px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-collection-desc {\n margin: 0 0 2px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.3;\n}\n\n.messenger-help-collection-count {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-collection-arrow {\n color: rgba(255, 255, 255, 0.3);\n flex-shrink: 0;\n margin-left: 12px;\n}\n\n.messenger-help-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-help-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-help-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* ========================================\n Changelog View\n ======================================== */\n\n.messenger-changelog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-latest {\n font-size: 12px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.5);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.messenger-changelog-team {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.messenger-changelog-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n.messenger-changelog-card {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 12px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-changelog-cover {\n height: 120px;\n overflow: hidden;\n}\n\n.messenger-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.messenger-changelog-content {\n padding: 16px;\n}\n\n.messenger-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.messenger-changelog-tag {\n font-size: 11px;\n font-weight: 600;\n color: white;\n background: rgba(88, 86, 214, 0.3);\n padding: 4px 10px;\n border-radius: 12px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.messenger-changelog-title {\n margin: 0 0 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n line-height: 1.3;\n}\n\n.messenger-changelog-description {\n margin: 0 0 12px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n}\n\n.messenger-changelog-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.messenger-changelog-date {\n font-size: 12px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-changelog-arrow {\n color: rgba(255, 255, 255, 0.3);\n}\n\n.messenger-changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-changelog-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-changelog-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* ========================================\n Navigation Tabs\n ======================================== */\n\n.messenger-panel-nav {\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-nav {\n display: flex;\n padding: 4px 8px;\n gap: 4px;\n}\n\n.messenger-nav-tab {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 8px 4px;\n background: none;\n border: none;\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.messenger-nav-tab:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-nav-icon {\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-home-icon {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-nav-home-icon > i:first-child {\n position: relative;\n}\n\n.messenger-nav-home-icon > i:last-child {\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n transition: color 0.2s ease, filter 0.2s ease;\n}\n\n.messenger-nav-tab:hover .messenger-nav-home-icon > i:last-child {\n color: #ffd700;\n filter: drop-shadow(0 0 4px #ffd700);\n}\n\n.messenger-nav-label {\n font-size: 11px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-tab.active .messenger-nav-icon {\n color: white;\n}\n\n.messenger-nav-tab.active .messenger-nav-label {\n color: white;\n font-weight: 400;\n}\n\n.messenger-nav-badge {\n position: absolute;\n top: 4px;\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: #ef4444;\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n\n/* ========================================\n Light Theme Overrides\n ======================================== */\n\n/* Panel */\n.theme-light .messenger-panel-content {\n background: #ffffff;\n}\n\n/* Home View */\n.theme-light .messenger-home-view {\n background: linear-gradient(180deg, #f5f5f7 0%, #ffffff 40%);\n}\n\n.theme-light .messenger-home-header {\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.1) 0%, transparent 100%);\n}\n\n.theme-light .messenger-home-greeting {\n color: #86868b;\n}\n\n.theme-light .messenger-home-question {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-message-btn svg,\n.theme-light .messenger-home-message-btn i {\n color: #86868b;\n}\n\n.theme-light .messenger-home-featured {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-home-featured-content h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-featured-content p {\n color: #86868b;\n}\n\n.theme-light .messenger-home-changelog-card {\n background: #f5f5f7;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card-content {\n border-top-color: #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-changelog-card-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-changelog-card-desc {\n color: #6e6e73;\n}\n\n/* Close/Back buttons */\n.theme-light .messenger-close-btn,\n.theme-light .messenger-back-btn {\n color: #86868b;\n}\n\n.theme-light .messenger-close-btn:hover,\n.theme-light .messenger-back-btn:hover {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n/* Avatar */\n.theme-light .messenger-avatar {\n border-color: #ffffff;\n}\n\n/* Conversations View */\n.theme-light .messenger-conversations-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-header,\n.theme-light .messenger-help-header,\n.theme-light .messenger-changelog-header,\n.theme-light .messenger-chat-header {\n background: #ffffff;\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-conversations-header h2,\n.theme-light .messenger-help-header h2,\n.theme-light .messenger-changelog-header h2 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-footer {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-empty-icon,\n.theme-light .messenger-chat-empty-avatars,\n.theme-light .messenger-help-empty-icon,\n.theme-light .messenger-changelog-empty-icon {\n color: #c7c7cc;\n}\n\n.theme-light .messenger-conversations-empty h3,\n.theme-light .messenger-chat-empty h3,\n.theme-light .messenger-help-empty h3,\n.theme-light .messenger-changelog-empty h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-empty p,\n.theme-light .messenger-chat-empty p,\n.theme-light .messenger-help-empty p,\n.theme-light .messenger-changelog-empty p {\n color: #86868b;\n}\n\n.theme-light .messenger-conversation-item:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-conversation-title {\n color: #1d1d1f !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-title {\n color: #1d1d1f !important;\n font-weight: 400;\n}\n\n.theme-light .messenger-conversation-time {\n color: #86868b !important;\n}\n\n.theme-light .messenger-conversation-message {\n color: #6e6e73 !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-message {\n color: #3a3a3c !important;\n}\n\n.theme-light .messenger-chat-title,\n.theme-light .messenger-help-article-title,\n.theme-light .messenger-changelog-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-article-desc,\n.theme-light .messenger-changelog-description {\n color: #86868b;\n}\n\n.theme-light .messenger-conversations-footer {\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-new-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-new-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-new-message-btn svg,\n.theme-light .messenger-new-message-btn i {\n color: #86868b;\n}\n\n/* Chat View */\n.theme-light .messenger-chat-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-header {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-chat-messages {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-empty h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-chat-empty p {\n color: #86868b;\n}\n\n.theme-light .messenger-message-sender {\n color: #86868b;\n}\n\n.theme-light .messenger-message-received .messenger-message-bubble {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-message-own .messenger-message-bubble {\n background: rgb(29, 78, 216);\n color: #ffffff;\n}\n\n.theme-light .messenger-message-time {\n color: #86868b;\n}\n\n.theme-light .messenger-closed-banner {\n background: rgba(52, 199, 89, 0.1);\n color: #22883a;\n}\n\n.theme-light .messenger-chat-compose {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-compose-input-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-compose-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-compose-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-compose-send:disabled {\n background: #e5e5e7;\n color: #c7c7cc;\n}\n\n/* Help View */\n.theme-light .messenger-help-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-help-search-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-help-search-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-search-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collections-header {\n color: #1d1d1f;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection {\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-help-collection-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-collection-desc {\n color: #6e6e73;\n}\n\n.theme-light .messenger-help-collection-count {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collection-arrow {\n color: #c7c7cc;\n}\n\n/* Changelog View */\n.theme-light .messenger-changelog-subheader {\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-changelog-latest {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-team {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-card {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-changelog-tag {\n background: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n.theme-light .messenger-changelog-date {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-arrow {\n color: #c7c7cc;\n}\n\n/* Navigation */\n.theme-light .messenger-panel-nav {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-nav-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-label {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-tab:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.theme-light .messenger-nav-tab.active .messenger-nav-icon,\n.theme-light .messenger-nav-tab.active .messenger-nav-label {\n color: #007aff;\n}\n\n/* ========================================\n Responsive Design\n ======================================== */\n\n@media (max-width: 480px) {\n .messenger-panel {\n width: 100%;\n height: 100%;\n max-height: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n border-radius: 0;\n }\n\n .messenger-panel-content {\n border-radius: 0;\n }\n\n .messenger-launcher {\n bottom: 16px;\n right: 16px;\n }\n\n .messenger-launcher-bottom-left {\n left: 16px;\n }\n}\n\n/* ========================================\n Availability Status\n ======================================== */\n\n.messenger-home-availability,\n.messenger-chat-availability {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.theme-light .messenger-home-availability,\n.theme-light .messenger-chat-availability {\n color: #6b7280;\n}\n\n.messenger-availability-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.messenger-availability-online {\n background: #22c55e;\n box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.2);\n}\n\n.messenger-availability-away {\n background: #9ca3af;\n}\n\n.messenger-availability-text {\n opacity: 0.9;\n}\n\n/* ========================================\n Typing Indicator\n ======================================== */\n\n.messenger-typing-indicator {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n margin: 4px 0;\n}\n\n.messenger-typing-dots {\n display: flex;\n align-items: center;\n gap: 4px;\n background: #374151;\n padding: 8px 12px;\n border-radius: 16px;\n}\n\n.theme-light .messenger-typing-dots {\n background: #e5e7eb;\n}\n\n.messenger-typing-dots span {\n width: 6px;\n height: 6px;\n background: #9ca3af;\n border-radius: 50%;\n animation: messenger-typing-bounce 1.4s infinite ease-in-out;\n}\n\n.messenger-typing-dots span:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.messenger-typing-dots span:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n.messenger-typing-dots span:nth-child(3) {\n animation-delay: 0s;\n}\n\n.messenger-typing-text {\n font-size: 12px;\n color: #9ca3af;\n}\n\n@keyframes messenger-typing-bounce {\n 0%, 80%, 100% {\n transform: scale(0.8);\n opacity: 0.5;\n }\n 40% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n/* ========================================\n Pre-Chat Form View (Transparent Overlay)\n ======================================== */\n\n.messenger-prechat-view {\n background: transparent;\n position: relative;\n}\n\n.messenger-prechat-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(2px);\n display: flex;\n align-items: flex-end;\n padding: 16px;\n animation: messenger-fade-in 0.2s ease;\n}\n\n.messenger-prechat-card {\n background: #1c1c1e;\n border-radius: 16px;\n padding: 20px;\n width: 100%;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);\n animation: messenger-slide-up 0.25s ease;\n}\n\n.messenger-prechat-card h4 {\n margin: 0 0 14px;\n font-size: 15px;\n font-weight: 600;\n color: white;\n text-align: center;\n}\n\n.messenger-prechat-form {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.messenger-prechat-fields {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.messenger-prechat-input {\n width: 100%;\n padding: 11px 14px;\n background: #2c2c2e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 10px;\n color: white;\n font-size: 14px;\n font-family: inherit;\n outline: none;\n transition: border-color 0.2s ease;\n}\n\n.messenger-prechat-input:focus {\n border-color: #007aff;\n}\n\n.messenger-prechat-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-prechat-error {\n font-size: 12px;\n color: #ef4444;\n display: none;\n text-align: center;\n}\n\n.messenger-prechat-actions {\n display: flex;\n gap: 10px;\n margin-top: 4px;\n}\n\n.messenger-prechat-skip {\n flex: 1;\n padding: 11px 14px;\n background: transparent;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 20px;\n color: rgba(255, 255, 255, 0.7);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-prechat-skip:hover {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.3);\n}\n\n.messenger-prechat-submit {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 11px 14px;\n background: #007aff;\n border: none;\n border-radius: 20px;\n color: white;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-prechat-submit:hover:not(:disabled) {\n background: #0066d6;\n}\n\n.messenger-prechat-submit:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.4);\n cursor: not-allowed;\n}\n\n.messenger-prechat-submit-loading {\n display: inline-flex;\n align-items: center;\n animation: messenger-spin 1s linear infinite;\n}\n\n@keyframes messenger-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* Light Theme - Pre-Chat Form */\n.theme-light .messenger-prechat-overlay {\n background: rgba(255, 255, 255, 0.6);\n}\n\n.theme-light .messenger-prechat-card {\n background: #ffffff;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n}\n\n.theme-light .messenger-prechat-card h4 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-prechat-input {\n background: #f5f5f7;\n border-color: #e5e5e7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-prechat-input:focus {\n border-color: #007aff;\n background: #ffffff;\n}\n\n.theme-light .messenger-prechat-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-prechat-skip {\n border-color: #e5e5e7;\n color: #6e6e73;\n}\n\n.theme-light .messenger-prechat-skip:hover {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-prechat-submit:disabled {\n background: #e5e5e7;\n color: #c7c7cc;\n}\n\n/* ========================================\n Animations\n ======================================== */\n\n@keyframes messenger-slide-up {\n from {\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes messenger-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .messenger-launcher-btn,\n .messenger-panel,\n .messenger-nav-tab,\n .messenger-conversation-item,\n .messenger-help-article,\n .messenger-changelog-card {\n transition: none;\n }\n}\n\n/* ========================================\n Email Collection Overlay (Bottom Sheet)\n ======================================== */\n\n.messenger-email-overlay {\n position: absolute;\n bottom: -56px;\n left: 0;\n right: 0;\n top: 0;\n display: flex;\n align-items: flex-end;\n z-index: 20;\n background: rgba(0, 0, 0, 0.08);\n pointer-events: auto;\n}\n\n.messenger-email-card {\n width: 100%;\n background: #ffffff;\n border-radius: 0;\n padding: 16px 16px 72px;\n box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.08);\n animation: messenger-slide-up 0.25s ease;\n}\n\n.messenger-email-card h4 {\n margin: 0 0 2px;\n font-size: 13px;\n font-weight: 600;\n color: #1d1d1f;\n text-align: center;\n}\n\n.messenger-email-card p {\n margin: 0 0 10px;\n font-size: 11px;\n color: #6b7280;\n text-align: center;\n}\n\n.messenger-email-name,\n.messenger-email-input {\n width: 100%;\n padding: 8px 10px;\n background: #f3f4f6;\n border: 1px solid transparent;\n border-radius: 8px;\n color: #1d1d1f;\n font-size: 12px;\n font-family: inherit;\n outline: none;\n margin-bottom: 6px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n\n.messenger-email-name:focus,\n.messenger-email-input:focus {\n border-color: #007aff;\n box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.12);\n background: #ffffff;\n}\n\n.messenger-email-name::placeholder,\n.messenger-email-input::placeholder {\n color: #9ca3af;\n}\n\n.messenger-email-actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n.messenger-email-submit {\n flex: 1.2;\n padding: 7px 12px;\n background: #007aff;\n border: none;\n border-radius: 8px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-email-submit:hover:not(:disabled) {\n background: #0066d6;\n}\n\n.messenger-email-submit:disabled {\n background: #d1d5db;\n color: #9ca3af;\n cursor: not-allowed;\n}\n\n.messenger-email-skip {\n flex: 0.8;\n padding: 7px 12px;\n background: #ffffff;\n border: 1px solid #e5e5e7;\n border-radius: 8px;\n color: #4b5563;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-email-skip:hover {\n background: #f9fafb;\n border-color: #d1d5db;\n}\n\n/* Dark Theme - Email Overlay */\n.theme-dark .messenger-email-overlay {\n background: rgba(0, 0, 0, 0.3);\n}\n\n.theme-dark .messenger-email-card {\n background: #1c1c1e;\n}\n\n.theme-dark .messenger-email-card h4 {\n color: white;\n}\n\n.theme-dark .messenger-email-card p {\n color: rgba(255, 255, 255, 0.6);\n}\n\n.theme-dark .messenger-email-name,\n.theme-dark .messenger-email-input {\n background: #2c2c2e;\n border-color: transparent;\n color: white;\n}\n\n.theme-dark .messenger-email-name:focus,\n.theme-dark .messenger-email-input:focus {\n border-color: #007aff;\n box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.25);\n background: #1c1c1e;\n}\n\n.theme-dark .messenger-email-name::placeholder,\n.theme-dark .messenger-email-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.theme-dark .messenger-email-submit:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.theme-dark .messenger-email-skip {\n background: transparent;\n border-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n}\n\n.theme-dark .messenger-email-skip:hover {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.25);\n}\n`;\n","export const baseStyles = `\n.feedback-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.4;\n z-index: 999999;\n box-sizing: border-box;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after {\n box-sizing: border-box;\n}\n\n/* Animations */\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes confettiFall {\n 0% {\n opacity: 1;\n transform: translateY(0) rotate(0deg) scale(1);\n }\n 10% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translateY(100vh) rotate(720deg) scale(0.5);\n }\n}\n\n@keyframes changelogSpin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Accessibility */\n@media (prefers-reduced-motion: reduce) {\n * {\n transition: none !important;\n animation: none !important;\n }\n}\n\n/* Print */\n@media print {\n .feedback-widget,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification,\n .changelog-widget,\n .changelog-modal,\n .changelog-modal-backdrop,\n .changelog-list-modal,\n .changelog-list-modal-backdrop {\n display: none !important;\n }\n}\n`;\n","export const changelogStyles = `\n.changelog-widget {\n position: fixed;\n z-index: 999999;\n}\n\n.changelog-widget.position-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.changelog-widget.position-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.changelog-widget.position-top-right {\n top: 20px;\n right: 20px;\n}\n\n.changelog-widget.position-top-left {\n top: 20px;\n left: 20px;\n}\n\n.changelog-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n height: 48px;\n overflow: visible;\n border-radius: 9999px;\n border: none;\n padding: 12px 20px;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.3s ease;\n color: white;\n background: #155EEF;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n width: fit-content;\n}\n\n.changelog-trigger-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);\n}\n\n.changelog-trigger-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.changelog-icon {\n flex-shrink: 0;\n}\n\n.changelog-confetti-emoji {\n font-size: 14px;\n margin-left: 2px;\n}\n\n.changelog-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 12px;\n height: 12px;\n background: #EF4444;\n border-radius: 50%;\n border: 2px solid white;\n}\n\n.changelog-confetti-container {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 1000001;\n overflow: hidden;\n}\n\n.changelog-confetti {\n position: absolute;\n top: -20px;\n opacity: 0;\n animation: confettiFall 2s ease-out forwards;\n}\n\n.changelog-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 999998;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.changelog-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.changelog-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999999;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n pointer-events: none;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.changelog-modal.open {\n pointer-events: auto;\n}\n\n.changelog-modal-container {\n position: relative;\n width: 100%;\n max-width: 580px;\n max-height: 90vh;\n background: #DBEAFE;\n border-radius: 24px;\n overflow: hidden;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n transform: scale(0.9) translateY(20px);\n opacity: 0;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.changelog-modal.open .changelog-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-modal.theme-dark .changelog-modal-container {\n background: #1E3A5F;\n}\n\n.changelog-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: rgba(255, 255, 255, 0.9);\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6B7280;\n padding: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n transition: all 0.2s ease;\n line-height: 1;\n z-index: 10;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.changelog-modal-close:hover {\n background: white;\n color: #111827;\n transform: scale(1.05);\n}\n\n.changelog-modal.theme-dark .changelog-modal-close {\n background: rgba(55, 65, 81, 0.9);\n color: #D1D5DB;\n}\n\n.changelog-modal.theme-dark .changelog-modal-close:hover {\n background: #374151;\n color: white;\n}\n\n.changelog-modal-content {\n overflow-y: auto;\n max-height: 90vh;\n}\n\n.changelog-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px 20px;\n}\n\n.changelog-loading-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid #E5E7EB;\n border-top-color: #155EEF;\n border-radius: 50%;\n animation: changelogSpin 0.8s linear infinite;\n}\n\n.changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px 20px;\n text-align: center;\n color: #9CA3AF;\n}\n\n.changelog-empty svg {\n margin-bottom: 16px;\n stroke: #D1D5DB;\n}\n\n.changelog-empty p {\n margin: 0;\n font-size: 15px;\n}\n\n.changelog-popup-item {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-popup-image {\n width: 100%;\n padding: 24px 24px 0;\n}\n\n.changelog-popup-image img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n border-radius: 12px;\n border: 2px solid #155EEF;\n box-shadow: 0 4px 20px rgba(21, 94, 239, 0.2);\n}\n\n.changelog-popup-body {\n padding: 24px 32px 32px;\n text-align: center;\n}\n\n.changelog-popup-title {\n margin: 0 0 16px;\n font-size: 18px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n\n.changelog-modal.theme-dark .changelog-popup-title {\n color: white;\n}\n\n.changelog-popup-description {\n margin: 0 0 24px;\n font-size: 17px;\n line-height: 1.6;\n color: #4B5563;\n}\n\n.changelog-modal.theme-dark .changelog-popup-description {\n color: #D1D5DB;\n}\n\n.changelog-popup-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 14px 32px;\n font-size: 16px;\n font-weight: 600;\n color: white;\n background: #155EEF;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.changelog-popup-btn:hover {\n background: #1249CA;\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(21, 94, 239, 0.3);\n}\n\n.changelog-popup-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.changelog-popup-footer {\n padding: 0 32px 24px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.changelog-popup-dots {\n display: flex;\n gap: 8px;\n}\n\n.changelog-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: rgba(21, 94, 239, 0.3);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.changelog-dot:hover {\n background: rgba(21, 94, 239, 0.5);\n}\n\n.changelog-dot.active {\n background: #155EEF;\n transform: scale(1.2);\n}\n\n.changelog-view-all-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n color: #155EEF;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n padding: 8px 12px;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.changelog-view-all-btn:hover {\n background: rgba(21, 94, 239, 0.1);\n}\n\n.changelog-view-all-btn svg {\n transition: transform 0.2s ease;\n}\n\n.changelog-view-all-btn:hover svg {\n transform: translateX(3px);\n}\n\n.changelog-modal.theme-dark .changelog-view-all-btn {\n color: #60A5FA;\n}\n\n.changelog-modal.theme-dark .changelog-view-all-btn:hover {\n background: rgba(96, 165, 250, 0.1);\n}\n\n.changelog-list-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 999998;\n}\n\n.changelog-list-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.changelog-list-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999999;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n pointer-events: none;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.changelog-list-modal.open {\n pointer-events: auto;\n}\n\n.changelog-list-modal-container {\n position: relative;\n width: 100%;\n max-width: 460px;\n max-height: 85vh;\n background: white;\n border-radius: 20px;\n overflow: hidden;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n transform: scale(0.9) translateY(20px);\n opacity: 0;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-modal.open .changelog-list-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-modal-container {\n background: #1F2937;\n color: white;\n}\n\n.changelog-list-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 20px;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n background: white;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-modal-header {\n border-bottom-color: #374151;\n background: #1F2937;\n}\n\n.changelog-list-modal-header h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-modal-header h2 {\n color: white;\n}\n\n.changelog-list-modal-close {\n background: none;\n border: none;\n font-size: 22px;\n cursor: pointer;\n color: #6B7280;\n padding: 4px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: all 0.2s ease;\n line-height: 1;\n}\n\n.changelog-list-modal-close:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-modal-close {\n color: #9CA3AF;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-modal-close:hover {\n background: #374151;\n color: white;\n}\n\n.changelog-list-modal-body {\n flex: 1;\n overflow-y: auto;\n}\n\n.changelog-list {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n cursor: pointer;\n transition: background-color 0.2s ease;\n position: relative;\n}\n\n.changelog-list-item:hover {\n background: #F9FAFB;\n}\n\n.changelog-list-item:last-child {\n border-bottom: none;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-item {\n border-bottom-color: #374151;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-item:hover {\n background: #374151;\n}\n\n.changelog-list-item-image {\n width: 100%;\n margin-bottom: 8px;\n border-radius: 6px;\n overflow: hidden;\n border: 1px solid #E5E7EB;\n}\n\n.changelog-list-item-image img {\n width: 100%;\n height: 100px;\n display: block;\n object-fit: cover;\n}\n\n.changelog-list-item-main {\n flex: 1;\n min-width: 0;\n}\n\n.changelog-list-item-content {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.changelog-list-item-date {\n font-size: 11px;\n color: #6B7280;\n font-weight: 500;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-item-date {\n color: #9CA3AF;\n}\n\n.changelog-list-item-labels {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 1px;\n}\n\n.changelog-list-item-title {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-item-title {\n color: white;\n}\n\n.changelog-list-item-description {\n margin: 0;\n font-size: 12px;\n line-height: 1.4;\n color: #6B7280;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-item-description {\n color: #9CA3AF;\n}\n\n.changelog-list-item-arrow {\n flex-shrink: 0;\n margin-left: 12px;\n color: #9CA3AF;\n transition: all 0.2s ease;\n}\n\n.changelog-list-item:hover .changelog-list-item-arrow {\n color: #155EEF;\n transform: translateX(3px);\n}\n\n.changelog-list-modal.theme-dark .changelog-list-item-arrow {\n color: #6B7280;\n}\n\n.changelog-list-modal.theme-dark .changelog-list-item:hover .changelog-list-item-arrow {\n color: #60A5FA;\n}\n\n/* ==================== MOBILE RESPONSIVE ==================== */\n@media (max-width: 768px) {\n .changelog-widget {\n bottom: 16px;\n right: 16px;\n }\n\n .changelog-widget.position-bottom-left {\n left: 16px;\n }\n\n .changelog-modal {\n padding: 16px;\n }\n\n .changelog-modal-container {\n max-width: 100%;\n border-radius: 20px;\n }\n\n .changelog-popup-image {\n padding: 20px 20px 0;\n }\n\n .changelog-popup-body {\n padding: 20px 24px 24px;\n }\n\n .changelog-popup-title {\n font-size: 22px;\n }\n\n .changelog-popup-description {\n font-size: 15px;\n }\n\n .changelog-popup-btn {\n padding: 12px 28px;\n font-size: 15px;\n width: 100%;\n }\n\n .changelog-popup-footer {\n padding: 0 24px 20px;\n }\n\n .changelog-list-modal {\n padding: 16px;\n }\n\n .changelog-list-modal-container {\n max-width: 100%;\n max-height: 90vh;\n border-radius: 16px;\n }\n\n .changelog-list-item {\n padding: 10px 14px;\n }\n\n .changelog-list-item-image img {\n height: 80px;\n }\n\n .changelog-list-item-title {\n font-size: 13px;\n }\n\n .changelog-list-item-description {\n font-size: 11px;\n }\n}\n`;\n","export const feedbackStyles = `\n.feedback-widget-button {\n position: fixed;\n z-index: 999999;\n}\n\n.feedback-widget-button.position-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.feedback-widget-button.position-top-right {\n top: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-top-left {\n top: 20px;\n left: 20px;\n}\n\n.feedback-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n height: 48px;\n overflow: visible;\n border-radius: 9999px;\n border: none;\n padding: 12px 20px;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.3s ease;\n color: white;\n background: #155EEF;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n width: fit-content;\n}\n\n.feedback-trigger-btn:hover:not(:disabled) {\n transform: translateY(-2px);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);\n}\n\n.feedback-trigger-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.feedback-trigger-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-icon {\n flex-shrink: 0;\n}\n\n.feedback-minimize-icon,\n.feedback-expand-icon {\n position: absolute;\n top: -6px;\n right: -6px;\n width: 24px;\n height: 24px;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border-radius: 50%;\n opacity: 0;\n transition: opacity 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n cursor: pointer;\n}\n\n.feedback-minimize-icon svg,\n.feedback-expand-icon svg {\n width: 16px;\n height: 16px;\n display: block;\n fill: #155EEF;\n}\n\n.feedback-widget-button:not(.minimized) .feedback-trigger-btn:hover .feedback-minimize-icon {\n opacity: 1;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn {\n padding: 12px;\n width: 48px;\n height: 48px;\n justify-content: center;\n}\n\n.feedback-widget-button.minimized .feedback-text {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-minimize-icon {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn:hover .feedback-expand-icon {\n opacity: 1;\n}\n\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 420px;\n max-height: 500px;\n z-index: 1000000;\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n font-family: inherit;\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n}\n\n.feedback-panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 999999;\n animation: fadeIn 0.3s ease;\n}\n\n.feedback-panel-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-panel-content {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-radius: 16px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), \n 0 10px 10px -5px rgba(0, 0, 0, 0.04),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.feedback-panel.theme-dark .feedback-panel-content {\n background: #1F2937;\n color: white;\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 24px;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header {\n border-bottom-color: #374151;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header h3 {\n color: white;\n}\n\n.feedback-panel-close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6B7280;\n padding: 4px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.feedback-panel-close:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.feedback-panel-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close {\n color: #9CA3AF;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close:hover {\n background: #374151;\n color: white;\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.feedback-form-group:last-child {\n margin-bottom: 0;\n}\n\n.feedback-form-group label {\n font-size: 14px;\n font-weight: 500;\n line-height: 1.25;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-form-group label {\n color: #D1D5DB;\n}\n\n.feedback-form-group input {\n height: 44px;\n width: 100%;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group input::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group input:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);\n}\n\n.feedback-form-group input:focus-visible {\n outline: none;\n}\n\n.feedback-form-group textarea {\n min-height: 200px;\n width: 100%;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group textarea::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group textarea:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);\n}\n\n.feedback-form-group textarea:focus-visible {\n outline: none;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input,\n.feedback-panel.theme-dark .feedback-form-group textarea {\n background: #374151;\n border-color: #4B5563;\n color: white;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input::placeholder,\n.feedback-panel.theme-dark .feedback-form-group textarea::placeholder {\n color: #6B7280;\n}\n\n.feedback-btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 8px;\n border: none;\n height: 44px;\n padding: 10px 18px;\n font-size: 15px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.feedback-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.feedback-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-btn-submit {\n background: #155EEF;\n color: white;\n width: 100%;\n}\n\n.feedback-btn-submit:hover:not(:disabled) {\n background: #4338ca;\n}\n\n.feedback-btn-submit:active:not(:disabled) {\n background: #3730a3;\n}\n\n.feedback-btn-cancel {\n background: transparent;\n color: #6B7280;\n border: 1px solid #D1D5DB;\n}\n\n.feedback-btn-cancel:hover:not(:disabled) {\n background: #F9FAFB;\n border-color: #9CA3AF;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel {\n color: #D1D5DB;\n border-color: #4B5563;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel:hover:not(:disabled) {\n background: #374151;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: auto;\n padding-top: 24px;\n}\n\n.feedback-error {\n color: #DC2626;\n font-size: 14px;\n font-weight: 400;\n margin-top: 8px;\n padding: 12px;\n background: #FEE2E2;\n border: 1px solid #FECACA;\n border-radius: 8px;\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n.feedback-panel.theme-dark .feedback-error {\n background: #7F1D1D;\n border-color: #991B1B;\n color: #FCA5A5;\n}\n\n/* ==================== SUCCESS NOTIFICATION ==================== */\n.feedback-success-notification {\n position: fixed;\n top: 24px;\n right: 24px;\n z-index: 1000002;\n background: white;\n border: 1px solid #D1FAE5;\n border-radius: 12px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 320px;\n}\n\n.feedback-success-content {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n gap: 12px;\n}\n\n.feedback-success-icon {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: #10B981;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.feedback-success-content span {\n color: #065F46;\n font-weight: 500;\n font-size: 14px;\n flex: 1;\n}\n\n.feedback-success-close {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.feedback-success-close:hover {\n background: #F3F4F6;\n color: #374151;\n}\n\n.feedback-success-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n@media (max-width: 768px) {\n .feedback-widget-button {\n bottom: 16px;\n right: 16px;\n }\n \n .feedback-widget-button.position-bottom-left {\n left: 16px;\n }\n \n .feedback-minimize-icon,\n .feedback-expand-icon {\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n }\n \n .feedback-minimize-icon svg,\n .feedback-expand-icon svg {\n width: 14px;\n height: 14px;\n }\n\n .feedback-panel {\n width: 100%;\n top: auto;\n bottom: 0;\n right: 0;\n left: 0;\n height: 85vh;\n max-height: 85vh;\n transform: translateY(100%);\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel.open {\n transform: translateY(0);\n }\n \n .feedback-panel-content {\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel-header {\n padding: 20px;\n position: relative;\n }\n \n .feedback-panel-header::before {\n content: '';\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n width: 40px;\n height: 4px;\n background: #D1D5DB;\n border-radius: 2px;\n }\n \n .feedback-panel.theme-dark .feedback-panel-header::before {\n background: #4B5563;\n }\n \n .feedback-panel-body {\n padding: 20px;\n }\n \n .feedback-form-group textarea {\n min-height: 150px;\n }\n\n .feedback-success-notification {\n top: 16px;\n right: 16px;\n left: 16px;\n min-width: auto;\n }\n}\n`;\n","import { baseStyles } from './base.js';\nimport { changelogStyles } from './changelog.js';\nimport { feedbackStyles } from './feedback.js';\n\nexport const CSS_STYLES = baseStyles + feedbackStyles + changelogStyles;\n\nexport { baseStyles, changelogStyles, feedbackStyles };\n","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { FeedbackSDK } from './core/FeedbackSDK.js';\nimport { MESSENGER_STYLES } from './styles/messengerStyles.js';\nimport { CSS_STYLES } from './styles/styles.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { ChangelogWidget } from './widgets/ChangelogWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { MessengerWidget } from './widgets/MessengerWidget.js';\nimport { SurveyWidget } from './widgets/SurveyWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\nfunction injectStyles() {\n\tif (\n\t\ttypeof document !== 'undefined' &&\n\t\t!document.querySelector('#feedback-sdk-styles')\n\t) {\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'feedback-sdk-styles';\n\t\tstyle.textContent = CSS_STYLES + MESSENGER_STYLES;\n\t\tdocument.head.appendChild(style);\n\t}\n}\n\nfunction autoInit() {\n\tif (typeof window !== 'undefined' && window.FeedbackSDKConfig) {\n\t\tinjectStyles();\n\n\t\tconst config = { ...window.FeedbackSDKConfig };\n\t\tconst sdk = new FeedbackSDK(config);\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then((initData) => {\n\t\t\t\twindow.FeedbackSDK.instance = sdk;\n\n\t\t\t\tif (window.FeedbackSDKConfig.autoCreate) {\n\t\t\t\t\tconst widgets = Array.isArray(window.FeedbackSDKConfig.autoCreate)\n\t\t\t\t\t\t? window.FeedbackSDKConfig.autoCreate\n\t\t\t\t\t\t: [window.FeedbackSDKConfig.autoCreate];\n\n\t\t\t\t\twidgets.forEach((widgetConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst widget = sdk.createWidget(\n\t\t\t\t\t\t\t\twidgetConfig.type || 'button',\n\t\t\t\t\t\t\t\twidgetConfig\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\twidget.mount(widgetConfig.container);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[FeedbackSDK] Failed to create widget:', error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKReady', {\n\t\t\t\t\t\tdetail: { sdk, config, initData },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('[FeedbackSDK] Auto-initialization failed:', error);\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKError', {\n\t\t\t\t\t\tdetail: { error, config, phase: 'initialization' },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\nfunction handleDOMReady() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.readyState === 'loading') {\n\t\t\tdocument.addEventListener('DOMContentLoaded', autoInit);\n\t\t} else {\n\t\t\tsetTimeout(autoInit, 0);\n\t\t}\n\t}\n}\n\nconst FeedbackSDKExport = {\n\tFeedbackSDK,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tTabWidget,\n\tInlineWidget,\n\tSurveyWidget,\n\tMessengerWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n\tcreate: (config) => {\n\t\tinjectStyles();\n\t\treturn new FeedbackSDK(config);\n\t},\n\tversion: '1.0.0',\n\tinstance: null,\n\n\tisReady: () => Boolean(FeedbackSDKExport.instance),\n\tgetInstance: () => FeedbackSDKExport.instance,\n\n\tsetUserContext: (userContext) => {\n\t\tif (FeedbackSDKExport.instance) {\n\t\t\tFeedbackSDKExport.instance.setUserContext(userContext);\n\t\t} else {\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.FeedbackSDKUserContext = userContext;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitWithUser: async (config, userContext) => {\n\t\tinjectStyles();\n\t\tconst fullConfig = { ...config, userContext };\n\t\tconst sdk = new FeedbackSDK(fullConfig);\n\t\tawait sdk.init();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.FeedbackSDK.instance = sdk;\n\t\t}\n\n\t\treturn sdk;\n\t},\n\n\tonReady: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\tif (FeedbackSDKExport.isReady()) {\n\t\t\t\tcallback(FeedbackSDKExport.instance);\n\t\t\t} else {\n\t\t\t\twindow.addEventListener(\n\t\t\t\t\t'FeedbackSDKReady',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tcallback(event.detail.sdk, event.detail);\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\tonError: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener('FeedbackSDKError', (event) => {\n\t\t\t\tcallback(event.detail.error, event.detail);\n\t\t\t});\n\t\t}\n\t},\n\n\textractUserContext: FeedbackSDK.extractUserContextFromAuth,\n};\n\nif (typeof window !== 'undefined') {\n\twindow.FeedbackSDK = FeedbackSDKExport;\n\thandleDOMReady();\n}\n\nexport default FeedbackSDKExport;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tConfigError,\n\tEventBus,\n\tFeedbackSDK,\n\thelpers,\n\tInlineWidget,\n\tMessengerWidget,\n\tSDKError,\n\tSurveyWidget,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};\n"],"names":["MOCK_CONVERSATIONS","MOCK_MESSAGES","delay","APIError"],"mappings":"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gB,GAAG;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCvxEM,MAAM,UAAU,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CC1EM,MAAM,eAAe,GAAG;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCzrBM,MAAM,cAAc,GAAG;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCzjBM,MAAM,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,eAAe;;CCkBvE,SAAS,YAAY,GAAG;CACxB,CAAC;CACD,EAAE,OAAO,QAAQ,KAAK,WAAW;CACjC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB;CAChD,GAAG;CACH,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;CAC/C,EAAE,KAAK,CAAC,EAAE,GAAG,qBAAqB;CAClC,EAAE,KAAK,CAAC,WAAW,GAAG,UAAU,GAAG,gBAAgB;CACnD,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;CAClC,CAAC;CACD;;CAEA,SAAS,QAAQ,GAAG;CACpB,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE;CAChE,EAAE,YAAY,EAAE;;CAEhB,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,iBAAiB,EAAE;CAChD,E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"}
|
|
1
|
+
{"version":3,"file":"feedback-sdk.js","sources":["../src/api/mock-data/index.js","../src/api/utils/helpers.js","../src/api/services/ChangelogService.js","../src/api/services/FeedbackService.js","../src/api/services/HelpService.js","../src/api/services/MessengerService.js","../src/utils/errors.js","../src/api/services/SurveyService.js","../src/core/BaseAPIService.js","../src/core/APIService.js","../src/core/EventBus.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/ChangelogWidget.js","../src/widgets/InlineWidget.js","../src/widgets/messenger/MessengerState.js","../src/widgets/messenger/components/MessengerLauncher.js","../src/widgets/messenger/components/NavigationTabs.js","../src/widgets/messenger/components/MessengerPanel.js","../src/widgets/messenger/views/ChangelogView.js","../src/widgets/messenger/views/ChatView.js","../src/widgets/messenger/views/ConversationsView.js","../src/widgets/messenger/views/HelpView.js","../src/widgets/messenger/views/HomeView.js","../src/widgets/messenger/views/PreChatFormView.js","../src/core/WebSocketService.js","../src/widgets/MessengerWidget.js","../src/widgets/SurveyWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/FeedbackSDK.js","../src/styles/base.js","../src/styles/changelog.js","../src/styles/feedback.js","../src/styles/messenger-core.js","../src/styles/messenger-views.js","../src/styles/messenger-help.js","../src/styles/messenger-features.js","../src/styles/messenger-themes.js","../src/styles/styles.js","../src/index.js"],"sourcesContent":["export const MOCK_CHANGELOGS = [\n\t{\n\t\tid: 'changelog_1',\n\t\ttitle:\n\t\t\t'Feature prioritization, multiple roadmaps, and feature request analytics.',\n\t\texcerpt:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tdescription:\n\t\t\t'We are super excited to bring you the long-waited feature prioritization together with many quality updates!',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiNEQkVBRkUiLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzE1NUVFRiIgc3Ryb2tlLXdpZHRoPSIyIi8+PHJlY3QgeD0iMzAiIHk9IjQwIiB3aWR0aD0iODAiIGhlaWdodD0iOCIgcng9IjQiIGZpbGw9IiNFNUU3RUIiLz48cmVjdCB4PSIzMCIgeT0iNjAiIHdpZHRoPSIxNDAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHRleHQgeD0iNDAiIHk9Ijg1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMUYyOTM3Ij4yMDA8L3RleHQ+PHRleHQgeD0iNDAiIHk9Ijk1IiBmb250LWZhbWlseT0ic3lzdGVtLXVpIiBmb250LXNpemU9IjgiIGZpbGw9IiM2QjcyODAiPlBvc3RzPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI0MCIgcng9IjQiIGZpbGw9IiNGM0Y0RjYiLz48cmVjdCB4PSIyNzAiIHk9IjYwIiB3aWR0aD0iODAiIGhlaWdodD0iNDAiIHJ4PSI0IiBmaWxsPSIjRjNGNEY2Ii8+PHBhdGggZD0iTTMwIDEzMEgzNzBNMzAgMTUwSDM3ME0zMCAxNzBIMzcwTTMwIDE5MEgzNzAiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxIi8+PHBhdGggZD0iTTUwIDE2MEwxMDAgMTQwTDE1MCAxNTBMMjAwIDEzMEwyNTAgMTM1TDMwMCAxMjBMMzUwIDEyNSIgc3Ryb2tlPSIjMTU1RUVGIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz48L3N2Zz4=',\n\t\tslug: 'feature-prioritization-roadmaps-analytics',\n\t\tpublished_at: '2025-03-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'New Feature', color: '#10B981' },\n\t\t\t{ name: 'Analytics', color: '#6366F1' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_2',\n\t\ttitle: 'Dark mode support and UI improvements',\n\t\texcerpt:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tdescription:\n\t\t\t'You asked for it, we delivered! Dark mode is now available across all pages.',\n\t\tcover_image:\n\t\t\t'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI1MCIgdmlld0JveD0iMCAwIDQwMCAyNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNTAiIGZpbGw9IiMxRjI5MzciLz48cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjEwIiByeD0iOCIgZmlsbD0iIzM3NDE1MSIgc3Ryb2tlPSIjNEI1NTYzIiBzdHJva2Utd2lkdGg9IjEiLz48Y2lyY2xlIGN4PSIyMDAiIGN5PSIxMjUiIHI9IjQwIiBmaWxsPSIjRkJCRjI0Ii8+PHBhdGggZD0iTTIyMCAxMjVDMjIwIDEzNiAyMTEgMTQ1IDIwMCAxNDVDMTg5IDE0NSAxODAgMTM2IDE4MCAxMjVDMTgwIDExNCAxODkgMTA1IDIwMCAxMDVDMjExIDEwNSAyMjAgMTE0IDIyMCAxMjVaIiBmaWxsPSIjMUYyOTM3Ii8+PC9zdmc+',\n\t\tslug: 'dark-mode-ui-improvements',\n\t\tpublished_at: '2025-03-01T10:00:00Z',\n\t\tlabels: [{ name: 'Enhancement', color: '#8B5CF6' }],\n\t\tstatus: 'published',\n\t},\n\t{\n\t\tid: 'changelog_3',\n\t\ttitle: 'Performance improvements and bug fixes',\n\t\texcerpt:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tdescription:\n\t\t\t'This release includes major performance improvements and several bug fixes.',\n\t\tslug: 'performance-improvements-bug-fixes',\n\t\tpublished_at: '2025-02-15T10:00:00Z',\n\t\tlabels: [\n\t\t\t{ name: 'Bug Fix', color: '#EF4444' },\n\t\t\t{ name: 'Performance', color: '#F59E0B' },\n\t\t],\n\t\tstatus: 'published',\n\t},\n];\n\nexport const MOCK_CONVERSATIONS = [\n\t{\n\t\tid: 'conv_1',\n\t\tsubject: 'Question about pricing',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 1,\n\t\tassigned_user: {\n\t\t\tid: 'user_1',\n\t\t\tname: 'Sarah',\n\t\t\tavatar: null,\n\t\t},\n\t},\n\t{\n\t\tid: 'conv_2',\n\t\tsubject: 'Feature request',\n\t\tstatus: 'open',\n\t\tlast_message_at: new Date(\n\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000\n\t\t).toISOString(),\n\t\tcreated_at: new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).toISOString(),\n\t\tunread: 0,\n\t\tassigned_user: {\n\t\t\tid: 'user_2',\n\t\t\tname: 'Tom',\n\t\t\tavatar: null,\n\t\t},\n\t},\n];\n\nexport const MOCK_MESSAGES = {\n\tconv_1: [\n\t\t{\n\t\t\tid: 'msg_1',\n\t\t\tcontent: \"Hi there! 👋 I'm Sarah. How can I help you today?\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Sarah',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 50 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_2',\n\t\t\tcontent: 'Hi! I have a question about your enterprise pricing.',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n\tconv_2: [\n\t\t{\n\t\t\tid: 'msg_3',\n\t\t\tcontent: \"Hello! I'm Tom from the product team.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_4',\n\t\t\tcontent: 'I would love to see a dark mode feature!',\n\t\t\tsender_type: 'customer',\n\t\t\tcreated_at: new Date(\n\t\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000 - 30 * 60 * 1000\n\t\t\t).toISOString(),\n\t\t},\n\t\t{\n\t\t\tid: 'msg_5',\n\t\t\tcontent:\n\t\t\t\t\"Great suggestion! That feature will be available next week. I'll let you know when it's ready.\",\n\t\t\tsender_type: 'agent',\n\t\t\tsender_name: 'Tom',\n\t\t\tsender_avatar: null,\n\t\t\tcreated_at: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000).toISOString(),\n\t\t},\n\t],\n};\n\nexport const MOCK_HELP_COLLECTIONS = [\n\t{\n\t\tid: 'collection_1',\n\t\ttitle: 'Product Overview',\n\t\tdescription: 'See how your AI-first customer service solution works.',\n\t\tarticleCount: 24,\n\t\ticon: 'ph-book-open',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_2',\n\t\ttitle: 'Getting Started',\n\t\tdescription: 'Everything you need to know to get started with Product7.',\n\t\tarticleCount: 30,\n\t\ticon: 'ph-rocket',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_3',\n\t\ttitle: 'AI Agent',\n\t\tdescription:\n\t\t\t'Resolving customer questions instantly and accurately—from live chat to email.',\n\t\tarticleCount: 82,\n\t\ticon: 'ph-robot',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_4',\n\t\ttitle: 'Channels',\n\t\tdescription:\n\t\t\t'Enabling the channels you use to communicate with customers, all from the Inbox.',\n\t\tarticleCount: 45,\n\t\ticon: 'ph-chat-circle',\n\t\turl: '#',\n\t},\n\t{\n\t\tid: 'collection_5',\n\t\ttitle: 'Billing & Payments',\n\t\tdescription: 'Manage your subscription, invoices, and payment methods.',\n\t\tarticleCount: 12,\n\t\ticon: 'ph-credit-card',\n\t\turl: '#',\n\t},\n];\n\nexport const MOCK_SURVEYS = [\n\t{\n\t\tid: 'mock_nps_survey',\n\t\ttype: 'nps',\n\t\ttitle: 'How likely are you to recommend us?',\n\t\tdescription: 'Your feedback helps us improve',\n\t\tlow_label: 'Not likely',\n\t\thigh_label: 'Very likely',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_csat_survey',\n\t\ttype: 'csat',\n\t\ttitle: 'How satisfied are you?',\n\t\tdescription: 'Rate your experience with our product',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_ces_survey',\n\t\ttype: 'ces',\n\t\ttitle: 'How easy was it?',\n\t\tdescription: 'Rate the ease of completing your task',\n\t\tlow_label: 'Very difficult',\n\t\thigh_label: 'Very easy',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n];\n","export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport function getDeviceInfo() {\n\tif (typeof navigator === 'undefined') {\n\t\treturn { device: null, browser: null, os: null };\n\t}\n\n\tconst ua = navigator.userAgent;\n\n\tlet device = 'desktop';\n\tif (/Mobi|Android/i.test(ua)) {\n\t\tdevice = /Tablet|iPad/i.test(ua) ? 'tablet' : 'mobile';\n\t}\n\n\tlet browser = 'unknown';\n\tif (ua.includes('Firefox')) browser = 'firefox';\n\telse if (ua.includes('Edg')) browser = 'edge';\n\telse if (ua.includes('Chrome')) browser = 'chrome';\n\telse if (ua.includes('Safari')) browser = 'safari';\n\telse if (ua.includes('Opera') || ua.includes('OPR')) browser = 'opera';\n\n\tlet os = 'unknown';\n\tif (ua.includes('Windows')) os = 'windows';\n\telse if (ua.includes('Mac')) os = 'macos';\n\telse if (ua.includes('Linux')) os = 'linux';\n\telse if (ua.includes('Android')) os = 'android';\n\telse if (ua.includes('iPhone') || ua.includes('iPad')) os = 'ios';\n\n\treturn { device, browser, os };\n}\n","import { MOCK_CHANGELOGS } from '../mock-data';\nimport { delay } from '../utils/helpers.js';\n\nexport class ChangelogService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn { success: true, data: MOCK_CHANGELOGS };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/changelogs',\n\t\t\t\toptions\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n}\n","import { delay } from '../utils/helpers.js';\n\nexport class FeedbackService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(500);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_post_' + Date.now(),\n\t\t\t\t\ttitle: feedbackData.title,\n\t\t\t\t\tcontent: feedbackData.content,\n\t\t\t\t},\n\t\t\t\tmessage: 'Feedback submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\tboard:\n\t\t\t\tfeedbackData.board_id || feedbackData.board || feedbackData.boardId,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst response = await this.api._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn response;\n\t\t});\n\t}\n}\n","import { MOCK_HELP_COLLECTIONS } from '../mock-data';\nimport { delay } from '../utils/helpers.js';\n\nexport class HelpService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getHelpCollections(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { status: true, data: MOCK_HELP_COLLECTIONS };\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/collections',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync searchHelpArticles(query, options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst filtered = MOCK_HELP_COLLECTIONS.filter(\n\t\t\t\t(c) =>\n\t\t\t\t\tc.title.toLowerCase().includes(query.toLowerCase()) ||\n\t\t\t\t\tc.description.toLowerCase().includes(query.toLowerCase())\n\t\t\t);\n\t\t\treturn { status: true, data: filtered };\n\t\t}\n\n\t\tconst params = { q: query, ...options };\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/help/search',\n\t\t\tparams\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n}\n","import { MOCK_CONVERSATIONS, MOCK_MESSAGES } from '../mock-data';\nimport { delay } from '../utils/helpers.js';\n\nexport class MessengerService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getMessengerSettings() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tgreeting_message: 'Hi there! How can we help you today?',\n\t\t\t\t\tteam_name: 'Support Team',\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/settings', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync checkAgentsOnline() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tagents_online: true,\n\t\t\t\t\tonline_count: 2,\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/agents/online', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversations(options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: MOCK_CONVERSATIONS,\n\t\t\t\tmeta: { total: MOCK_CONVERSATIONS.length, page: 1, limit: 20 },\n\t\t\t};\n\t\t}\n\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t'/widget/messenger/conversations',\n\t\t\toptions\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversation(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst conv = MOCK_CONVERSATIONS.find((c) => c.id === conversationId);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { ...conv, messages: MOCK_MESSAGES[conversationId] || [] },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/messenger/conversations/${conversationId}`,\n\t\t\t{\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n\n\tasync startConversation(data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\tconst newConv = {\n\t\t\t\tid: 'conv_' + Date.now(),\n\t\t\t\tsubject: data.subject || 'New conversation',\n\t\t\t\tstatus: 'open',\n\t\t\t\tlast_message_at: new Date().toISOString(),\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: data.message,\n\t\t\t\t\t\tsender_type: 'customer',\n\t\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tMOCK_CONVERSATIONS.unshift(newConv);\n\t\t\tMOCK_MESSAGES[newConv.id] = newConv.messages;\n\t\t\treturn { status: true, data: newConv };\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/conversations', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmessage: data.message,\n\t\t\t\tsubject: data.subject || '',\n\t\t\t}),\n\t\t});\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\tconst newMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: data.content,\n\t\t\t\tsender_type: 'customer',\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t};\n\t\t\tif (!MOCK_MESSAGES[conversationId]) {\n\t\t\t\tMOCK_MESSAGES[conversationId] = [];\n\t\t\t}\n\t\t\tMOCK_MESSAGES[conversationId].push(newMessage);\n\t\t\treturn { status: true, data: newMessage };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/messenger/conversations/${conversationId}/messages`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ content: data.content }),\n\t\t\t}\n\t\t);\n\t}\n\n\tasync getUnreadCount() {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tconst count = MOCK_CONVERSATIONS.reduce(\n\t\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t\t0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: { unread_count: count, unread_conversations: count > 0 ? 1 : 0 },\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/unread', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/messenger/conversations/${conversationId}/read`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t}\n\t\t);\n\t}\n\n\tasync getMessages(conversationId, options = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: MOCK_MESSAGES[conversationId] || [],\n\t\t\t\tmeta: { total: 0, page: 1, limit: 50 },\n\t\t\t};\n\t\t}\n\n\t\tconst params = { ...options };\n\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t`/widget/messenger/conversations/${conversationId}/messages`,\n\t\t\tparams\n\t\t);\n\t\treturn this.api._makeRequest(endpoint, {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t});\n\t}\n\n\tasync identifyContact(data) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tcontact_id: 'mock_contact_' + Date.now(),\n\t\t\t\t\temail: data.email,\n\t\t\t\t\tname: data.name || '',\n\t\t\t\t\tis_new: true,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this.api._makeRequest('/widget/messenger/identify', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\temail: data.email,\n\t\t\t\tname: data.name || '',\n\t\t\t\tphone: data.phone || '',\n\t\t\t\tcompany: data.company || '',\n\t\t\t\tavatar_url: data.avatar_url || '',\n\t\t\t\tmetadata: data.metadata || {},\n\t\t\t}),\n\t\t});\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\treturn { status: true };\n\t\t}\n\n\t\treturn this.api._makeRequest(\n\t\t\t`/widget/messenger/conversations/${conversationId}/typing`,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ is_typing: isTyping }),\n\t\t\t}\n\t\t);\n\t}\n}\n","export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[FeedbackSDK Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[FeedbackSDK Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../../utils/errors.js';\nimport { MOCK_SURVEYS } from '../mock-data';\nimport { delay, getDeviceInfo } from '../utils/helpers.js';\n\nexport class SurveyService {\n\tconstructor(baseAPI) {\n\t\tthis.api = baseAPI;\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(200);\n\t\t\treturn { success: true, data: MOCK_SURVEYS };\n\t\t}\n\n\t\tconst params = {\n\t\t\turl:\n\t\t\t\tcontext.url ||\n\t\t\t\t(typeof window !== 'undefined' ? window.location.href : ''),\n\t\t\t...getDeviceInfo(),\n\t\t\t...(context.userProperties && {\n\t\t\t\tuser_properties: context.userProperties,\n\t\t\t}),\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\tconst endpoint = this.api._getEndpointWithParams(\n\t\t\t\t'/widget/surveys/active',\n\t\t\t\tparams\n\t\t\t);\n\t\t\treturn await this.api._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t});\n\t\t});\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(300);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_response_' + Date.now(),\n\t\t\t\t\tsurvey_id: surveyId,\n\t\t\t\t\t...responseData,\n\t\t\t\t},\n\t\t\t\tmessage: 'Survey response submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\trating: responseData.rating,\n\t\t\tfeedback: responseData.feedback || '',\n\t\t\tanswers: responseData.answers || {},\n\t\t};\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/responses`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\tAuthorization: `Bearer ${this.api.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\tif (!surveyId) throw new APIError(400, 'Survey ID is required');\n\n\t\tawait this.api._ensureSession();\n\n\t\tif (this.api.mock) {\n\t\t\tawait delay(100);\n\t\t\treturn { success: true, message: 'Survey dismissed successfully' };\n\t\t}\n\n\t\treturn this.api._handleAuthRetry(async () => {\n\t\t\treturn await this.api._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/dismiss`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { Authorization: `Bearer ${this.api.sessionToken}` },\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nexport class BaseAPIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.userContext = config.userContext || null;\n\t\tthis.mock = config.mock || false;\n\t\tthis.env = config.env || 'production';\n\t\tthis.baseURL = this._getBaseURL(config);\n\n\t\tthis._loadStoredSession();\n\t}\n\n\t_getBaseURL(config) {\n\t\tif (config.apiUrl) return config.apiUrl;\n\n\t\tconst ENV_URLS = {\n\t\t\tproduction: {\n\t\t\t\tbase: 'https://api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.api.product7.io/api/v1`,\n\t\t\t},\n\t\t\tstaging: {\n\t\t\t\tbase: 'https://staging.api.product7.io/api/v1',\n\t\t\t\twithWorkspace: (ws) => `https://${ws}.staging.api.product7.io/api/v1`,\n\t\t\t},\n\t\t\tlocalstack: {\n\t\t\t\tbase: 'http://localhost:1323/api/v1',\n\t\t\t\twithWorkspace: (ws) => `http://${ws}.localhost:1323/api/v1`,\n\t\t\t},\n\t\t};\n\n\t\tconst envConfig = ENV_URLS[this.env] || ENV_URLS.production;\n\t\treturn this.workspace\n\t\t\t? envConfig.withWorkspace(this.workspace)\n\t\t\t: envConfig.base;\n\t}\n\n\tasync init(userContext = null) {\n\t\tif (userContext) {\n\t\t\tthis.userContext = userContext;\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.workspace || !this.userContext) {\n\t\t\tthrow new APIError(\n\t\t\t\t400,\n\t\t\t\t`Missing ${!this.workspace ? 'workspace' : 'user context'} for initialization`\n\t\t\t);\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\treturn this._initMockSession();\n\t\t}\n\n\t\treturn this._initRealSession();\n\t}\n\n\tasync _initMockSession() {\n\t\tthis.sessionToken = 'mock_session_' + Date.now();\n\t\tthis.sessionExpiry = new Date(Date.now() + 3600 * 1000);\n\t\tthis._storeSession();\n\t\treturn {\n\t\t\tsessionToken: this.sessionToken,\n\t\t\tconfig: {\n\t\t\t\tprimaryColor: '#21244A',\n\t\t\t\tbackgroundColor: '#ffffff',\n\t\t\t\ttextColor: '#1F2937',\n\t\t\t\tboardId: 'feature-requests',\n\t\t\t\tsize: 'medium',\n\t\t\t\tdisplayMode: 'modal',\n\t\t\t},\n\t\t\texpiresIn: 3600,\n\t\t};\n\t}\n\n\tasync _initRealSession() {\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t\tuser: this.userContext,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t});\n\n\t\t\tthis.sessionToken = response.session_token;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + response.expires_in * 1000);\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: response.config || {},\n\t\t\t\texpiresIn: response.expires_in,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tasync _ensureSession() {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\t}\n\n\tasync _handleAuthRetry(method, ...args) {\n\t\ttry {\n\t\t\treturn await method.apply(this, args);\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn await method.apply(this, args);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.userContext = userContext;\n\t\tthis._storeData('feedbackSDK_userContext', userContext);\n\t}\n\n\tgetUserContext() {\n\t\treturn this.userContext;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis._removeData('feedbackSDK_session');\n\t\tthis._removeData('feedbackSDK_userContext');\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tthis._storeData('feedbackSDK_session', sessionData);\n\t\t} catch (error) {\n\t\t\t// Silent fail\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t_storeData(key, value) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem(key, JSON.stringify(value));\n\t\t}\n\t}\n\n\t_removeData(key) {\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem(key);\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) throw error;\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n\n\t_buildQueryParams(params) {\n\t\tconst queryParams = new URLSearchParams();\n\t\tObject.entries(params).forEach(([key, value]) => {\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tqueryParams.append(\n\t\t\t\t\tkey,\n\t\t\t\t\ttypeof value === 'object' ? JSON.stringify(value) : value\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\treturn queryParams.toString();\n\t}\n\n\t_getEndpointWithParams(endpoint, params) {\n\t\tconst queryString = this._buildQueryParams(params);\n\t\treturn `${endpoint}${queryString ? '?' + queryString : ''}`;\n\t}\n}\n","import { ChangelogService } from '../api/services/ChangelogService.js';\nimport { FeedbackService } from '../api/services/FeedbackService.js';\nimport { HelpService } from '../api/services/HelpService.js';\nimport { MessengerService } from '../api/services/MessengerService.js';\nimport { SurveyService } from '../api/services/SurveyService.js';\nimport { BaseAPIService } from './BaseAPIService.js';\n\nexport class APIService extends BaseAPIService {\n\tconstructor(config = {}) {\n\t\tsuper(config);\n\n\t\tthis.feedback = new FeedbackService(this);\n\t\tthis.survey = new SurveyService(this);\n\t\tthis.messenger = new MessengerService(this);\n\t\tthis.help = new HelpService(this);\n\t\tthis.changelog = new ChangelogService(this);\n\t}\n\n\tasync submitFeedback(data) {\n\t\treturn this.feedback.submitFeedback(data);\n\t}\n\n\tasync getActiveSurveys(context) {\n\t\treturn this.survey.getActiveSurveys(context);\n\t}\n\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\treturn this.survey.submitSurveyResponse(surveyId, responseData);\n\t}\n\n\tasync dismissSurvey(surveyId) {\n\t\treturn this.survey.dismissSurvey(surveyId);\n\t}\n\n\tasync getMessengerSettings() {\n\t\treturn this.messenger.getMessengerSettings();\n\t}\n\n\tasync checkAgentsOnline() {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\treturn {\n\t\t\t\tstatus: true,\n\t\t\t\tdata: {\n\t\t\t\t\tagents_online: true,\n\t\t\t\t\tonline_count: 2,\n\t\t\t\t\tresponse_time: 'Usually replies within a few minutes',\n\t\t\t\t\tavailable_agents: [\n\t\t\t\t\t\t{ full_name: 'Sarah', picture: '' },\n\t\t\t\t\t\t{ full_name: 'Tom', picture: '' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn this._makeRequest('/widget/messenger/agents/online', {\n\t\t\tmethod: 'GET',\n\t\t\theaders: { Authorization: `Bearer ${this.sessionToken}` },\n\t\t});\n\t}\n\n\tasync getConversations(options) {\n\t\treturn this.messenger.getConversations(options);\n\t}\n\n\tasync getConversation(conversationId) {\n\t\treturn this.messenger.getConversation(conversationId);\n\t}\n\n\tasync getMessages(conversationId, options) {\n\t\treturn this.messenger.getMessages(conversationId, options);\n\t}\n\n\tasync startConversation(data) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tconsole.log('[APIService] startConversation: session invalid, calling init...');\n\t\t\ttry {\n\t\t\t\tawait this.init();\n\t\t\t\tconsole.log('[APIService] startConversation: init result, token:', this.sessionToken ? 'set' : 'null');\n\t\t\t} catch (initError) {\n\t\t\t\tconsole.error('[APIService] startConversation: init failed:', initError.message);\n\t\t\t\tthrow initError;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.error('[APIService] startConversation: no session token after init');\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tconsole.log('[APIService] startConversation: sending to', `${this.baseURL}/widget/messenger/conversations`, 'mock:', this.mock);\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\tconst newConv = {\n\t\t\t\tid: 'conv_' + Date.now(),\n\t\t\t\tsubject: data.subject || 'New conversation',\n\t\t\t\tstatus: 'open',\n\t\t\t\tlast_message_at: new Date().toISOString(),\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: data.message,\n\t\t\t\t\t\tsender_type: 'customer',\n\t\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tMOCK_CONVERSATIONS.unshift(newConv);\n\t\t\tMOCK_MESSAGES[newConv.id] = newConv.messages;\n\t\t\treturn { status: true, data: newConv };\n\t\t}\n\n\t\treturn this._makeRequest('/widget/messenger/conversations', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmessage: data.message,\n\t\t\t\tsubject: data.subject || '',\n\t\t\t}),\n\t\t});\n\t}\n\n\tasync sendMessage(conversationId, data) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 200));\n\t\t\tconst newMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: data.content,\n\t\t\t\tattachments: data.attachments || [],\n\t\t\t\tsender_type: 'customer',\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t};\n\t\t\tif (!MOCK_MESSAGES[conversationId]) {\n\t\t\t\tMOCK_MESSAGES[conversationId] = [];\n\t\t\t}\n\t\t\tMOCK_MESSAGES[conversationId].push(newMessage);\n\t\t\treturn { status: true, data: newMessage };\n\t\t}\n\n\t\tconst payload = { content: data.content };\n\t\tif (data.attachments && data.attachments.length > 0) {\n\t\t\tpayload.attachments = data.attachments;\n\t\t}\n\n\t\treturn this._makeRequest(`/widget/messenger/conversations/${conversationId}/messages`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify(payload),\n\t\t});\n\t}\n\n\t/**\n\t * Upload a file to CDN via widget endpoint\n\t * @param {string} base64Data - Base64 encoded file data (with or without data URI prefix)\n\t * @param {string} filename - Original filename\n\t * @returns {Promise<Object>} Response with url\n\t */\n\tasync uploadFile(base64Data, filename) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\treturn { status: true, url: `https://mock-cdn.example.com/${filename}` };\n\t\t}\n\n\t\treturn this._makeRequest('/widget/messenger/upload', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t},\n\t\t\tbody: JSON.stringify({ file: base64Data, filename }),\n\t\t});\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\treturn this.messenger.sendTypingIndicator(conversationId, isTyping);\n\t}\n\n\tasync markConversationAsRead(conversationId) {\n\t\treturn this.messenger.markConversationAsRead(conversationId);\n\t}\n\n\tasync getUnreadCount() {\n\t\treturn this.messenger.getUnreadCount();\n\t}\n\n\tasync submitRating(conversationId, data) {\n\t\treturn this.messenger.submitRating(conversationId, data);\n\t}\n\n\tasync identifyContact(data) {\n\t\treturn this.messenger.identifyContact(data);\n\t}\n\n\tasync getHelpCollections(options) {\n\t\treturn this.help.getHelpCollections(options);\n\t}\n\n\tasync searchHelpArticles(query, options) {\n\t\treturn this.help.searchHelpArticles(query, options);\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\n\t\t\t// Invalidate mock tokens when not in mock mode (and vice versa)\n\t\t\tconst isMockToken = sessionData.token && sessionData.token.startsWith('mock_');\n\t\t\tif (isMockToken !== this.mock) {\n\t\t\t\tlocalStorage.removeItem('feedbackSDK_session');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n}\n","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[FeedbackSDK] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tstatic STORAGE_KEY = 'feedback_submitted';\n\tstatic DEFAULT_COOLDOWN_DAYS = 30;\n\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\tboardId: this.sdk.config.boardId,\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\ttextColor: options.textColor || '#1F2937',\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\tsuppressAfterSubmission: true,\n\t\t\tsuppressionDays: BaseWidget.DEFAULT_COOLDOWN_DAYS,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisLoading: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\tif (this.options.suppressAfterSubmission && this._hasRecentlySubmitted()) {\n\t\t\tthis.sdk.eventBus.emit('widget:suppressed', {\n\t\t\t\twidget: this,\n\t\t\t\treason: 'recently_submitted',\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\n\t\tif (this.options.displayMode === 'modal') {\n\t\t\tthis._showLoadingModal();\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._hideLoadingModal();\n\t\t\t\tthis._renderPanel();\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tif (this.panelElement) {\n\t\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t\t}\n\t\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, 600);\n\t\t} else {\n\t\t\tthis._renderPanel();\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (this.panelElement) {\n\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t}\n\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_showLoadingModal() {\n\t\tthis.state.isLoading = true;\n\n\t\tthis.backdropElement = document.createElement('div');\n\t\tthis.backdropElement.className = 'sdk-modal-backdrop';\n\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\tthis.loadingElement = document.createElement('div');\n\t\tthis.loadingElement.className = 'feedback-loading-modal';\n\t\tthis.loadingElement.innerHTML = `\n\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t`;\n\t\tdocument.body.appendChild(this.loadingElement);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.backdropElement.classList.add('show');\n\t\t\tthis.loadingElement.classList.add('show');\n\t\t});\n\t}\n\n\t_hideLoadingModal() {\n\t\tthis.state.isLoading = false;\n\t\tif (this.loadingElement) {\n\t\t\tthis.loadingElement.remove();\n\t\t\tthis.loadingElement = null;\n\t\t}\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\t\tthis.panelElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t\tthis._resetForm();\n\t\t}, 300);\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardId,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\tthis._trackSubmission();\n\n\t\t\tthis._showSuccessMessage();\n\t\t\tthis.closePanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t_trackSubmission() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst data = {\n\t\t\t\tsubmittedAt: Date.now(),\n\t\t\t\tboardId: this.options.boardId,\n\t\t\t};\n\t\t\tlocalStorage.setItem(storageKey, JSON.stringify(data));\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to track feedback submission:', e);\n\t\t}\n\t}\n\n\t_hasRecentlySubmitted() {\n\t\tconst cooldownMs = this.options.suppressionDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\tif (this.sdk.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.sdk.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\tconst submittedAt = data.submittedAt;\n\n\t\t\treturn now - submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclearSubmissionTracking() {\n\t\ttry {\n\t\t\tconst workspace = this.sdk.config.workspace;\n\t\t\tconst storageKey = `${BaseWidget.STORAGE_KEY}_${workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear submission tracking:', e);\n\t\t}\n\t}\n\n\tshouldShow() {\n\t\tif (!this.options.suppressAfterSubmission) return true;\n\t\treturn !this._hasRecentlySubmitted();\n\t}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop && !this.backdropElement) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'sdk-modal-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tconst modeClass =\n\t\t\tthis.options.displayMode === 'modal'\n\t\t\t\t? 'feedback-modal'\n\t\t\t\t: 'feedback-panel';\n\t\tconst sizeClass = `size-${this.options.size}`;\n\t\tthis.panelElement = document.createElement('div');\n\t\tthis.panelElement.className = `${modeClass} ${sizeClass}`;\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--primary-color',\n\t\t\tthis.options.primaryColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--bg-color',\n\t\t\tthis.options.backgroundColor\n\t\t);\n\t\tthis.panelElement.style.setProperty('--text-color', this.options.textColor);\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"sdk-close-btn\" type=\"button\" aria-label=\"Close\">×</button>\n </div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"sdk-form-group\">\n <label class=\"sdk-label\" for=\"feedback-title-${this.id}\">Title (optional)</label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n class=\"sdk-input\"\n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"sdk-form-group\">\n <label class=\"sdk-label\" for=\"feedback-content-${this.id}\">Message *</label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n class=\"sdk-textarea\"\n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"sdk-btn-primary sdk-btn-block\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.sdk-close-btn')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.sdk-btn-primary');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t\t? 'Sending...'\n\t\t\t\t\t: 'Send Feedback';\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'sdk-notification sdk-notification-success';\n\t\tnotification.innerHTML = `\n <div class=\"sdk-notification-content\">\n <div class=\"sdk-notification-icon\">✓</div>\n <span class=\"sdk-notification-text\">Feedback submitted successfully!</span>\n <button class=\"sdk-close-btn\" aria-label=\"Close\">×</button>\n </div>\n `;\n\n\t\tdocument.body.appendChild(notification);\n\n\t\tconst closeBtn = notification.querySelector('.sdk-close-btn');\n\t\tconst closeNotification = () => {\n\t\t\tif (notification.parentNode) {\n\t\t\t\tnotification.style.opacity = '0';\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (notification.parentNode) {\n\t\t\t\t\t\tnotification.parentNode.removeChild(notification);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t};\n\n\t\tcloseBtn.addEventListener('click', closeNotification);\n\n\t\tsetTimeout(closeNotification, 4000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\t// No longer needed - single theme\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class ButtonWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'button' });\n\t\tthis.isMinimized = false;\n\t}\n\n\t_render() {\n\t\tconst button = document.createElement('div');\n\t\tbutton.className = `feedback-widget-button position-${this.options.position}`;\n\t\tbutton.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\">\n <svg class=\"feedback-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" fill=\"currentColor\">\n <path d=\"M216,80H184V48a16,16,0,0,0-16-16H40A16,16,0,0,0,24,48V176a8,8,0,0,0,13,6.22L72,154V184a16,16,0,0,0,16,16h93.59L219,230.22a8,8,0,0,0,5,1.78,8,8,0,0,0,8-8V96A16,16,0,0,0,216,80ZM66.55,137.78,40,159.25V48H168v88H71.58A8,8,0,0,0,66.55,137.78ZM216,207.25l-26.55-21.47a8,8,0,0,0-5-1.78H88V152h80a16,16,0,0,0,16-16V96h32Z\"/>\n </svg>\n <span class=\"feedback-text\">Feedback</span>\n \n <div class=\"feedback-minimize-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M213.66,53.66,163.31,104H192a8,8,0,0,1,0,16H144a8,8,0,0,1-8-8V64a8,8,0,0,1,16,0V92.69l50.34-50.35a8,8,0,0,1,11.32,11.32ZM112,136H64a8,8,0,0,0,0,16H92.69L42.34,202.34a8,8,0,0,0,11.32,11.32L104,163.31V192a8,8,0,0,0,16,0V144A8,8,0,0,0,112,136Z\"/>\n </svg>\n </div>\n \n <div class=\"feedback-expand-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M112,40V64.69L61.66,14.34A8,8,0,0,0,50.34,25.66L100.69,76H72a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V36A8,8,0,0,0,112,40Zm131.06,70.61a8,8,0,0,0-8.72,1.73L184,162.69V136a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8h48a8,8,0,0,0,0-16H195.31l50.35-50.34A8,8,0,0,0,243.06,110.61Z\"/>\n </svg>\n </div>\n </button>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(button.style, this.options.customStyles);\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t_attachEvents() {\n\t\tconst button = this.element.querySelector('.feedback-trigger-btn');\n\t\tconst minimizeIcon = this.element.querySelector('.feedback-minimize-icon');\n\t\tconst expandIcon = this.element.querySelector('.feedback-expand-icon');\n\n\t\tminimizeIcon.addEventListener('click', (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tthis.minimize();\n\t\t});\n\n\t\texpandIcon.addEventListener('click', (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tthis.restore();\n\t\t});\n\n\t\tbutton.addEventListener('click', (e) => {\n\t\t\tif (\n\t\t\t\te.target.closest('.feedback-minimize-icon') ||\n\t\t\t\te.target.closest('.feedback-expand-icon')\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.isMinimized) {\n\t\t\t\tthis.openPanel();\n\t\t\t}\n\t\t});\n\t}\n\n\tminimize() {\n\t\tthis.isMinimized = true;\n\t\tthis.element.classList.add('minimized');\n\t}\n\n\trestore() {\n\t\tthis.isMinimized = false;\n\t\tthis.element.classList.remove('minimized');\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\t}\n\n\tupdateText(text) {\n\t\tconst textEl = this.element?.querySelector('.feedback-text');\n\t\tif (textEl) {\n\t\t\ttextEl.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class ChangelogWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'changelog' });\n\t\tthis.changelogs = [];\n\t\tthis.isLoading = false;\n\t\tthis.modalElement = null;\n\t\tthis.sidebarElement = null;\n\t\tthis.currentIndex = 0;\n\t}\n\n\t_render() {\n\t\tconst trigger = document.createElement('div');\n\t\ttrigger.className = `changelog-widget position-${this.options.position}`;\n\t\ttrigger.innerHTML = `\n\t\t\t<button class=\"changelog-trigger-btn\" type=\"button\" aria-label=\"View Updates\">\n\t\t\t\t<svg class=\"changelog-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t\t\t<path d=\"M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L16.6 14L18.2 21L12 17.3L5.8 21Z\"/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"changelog-text\">${this.options.triggerText || \"What's New\"}</span>\n\t\t\t\t<span class=\"changelog-confetti-emoji\">🎉</span>\n\t\t\t\t${this.options.showBadge ? '<span class=\"changelog-badge\"></span>' : ''}\n\t\t\t</button>\n\t\t`;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(trigger.style, this.options.customStyles);\n\t\t}\n\n\t\treturn trigger;\n\t}\n\n\t_attachEvents() {\n\t\tconst button = this.element.querySelector('.changelog-trigger-btn');\n\t\tbutton.addEventListener('click', () => {\n\t\t\tthis.openSidebar();\n\t\t});\n\t}\n\n\tasync openModal() {\n\t\tif (this.modalElement) return;\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createModal();\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis.currentIndex = 0;\n\t\tthis._renderCurrentChangelog();\n\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.modalElement) {\n\t\t\t\tthis.modalElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\tcloseModal() {\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.modalElement && this.modalElement.parentNode) {\n\t\t\t\tthis.modalElement.parentNode.removeChild(this.modalElement);\n\t\t\t\tthis.modalElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createModal() {\n\t\tthis.backdropElement = document.createElement('div');\n\t\tthis.backdropElement.className = 'changelog-modal-backdrop';\n\t\tdocument.body.appendChild(this.backdropElement);\n\t\tthis.backdropElement.addEventListener('click', () => this.closeModal());\n\n\t\tthis.modalElement = document.createElement('div');\n\t\tthis.modalElement.className = 'changelog-modal';\n\t\tthis.modalElement.innerHTML = `\n\t\t\t<div class=\"changelog-modal-container\">\n\t\t\t\t<button class=\"changelog-modal-close\" type=\"button\" aria-label=\"Close\">×</button>\n\t\t\t\t<div class=\"changelog-modal-content\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.modalElement);\n\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-container')\n\t\t\t.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\tthis.modalElement\n\t\t\t.querySelector('.changelog-modal-close')\n\t\t\t.addEventListener('click', () => this.closeModal());\n\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closeModal();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\tasync openSidebar() {\n\t\tif (this.listModalElement) return;\n\n\t\tif (this.modalElement) {\n\t\t\tthis.closeModal();\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 350));\n\t\t}\n\n\t\tthis.state.isOpen = true;\n\t\tthis._createListModal();\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tawait this._loadChangelogs();\n\t\t}\n\n\t\tthis._renderChangelogList();\n\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.listModalElement) {\n\t\t\t\tthis.listModalElement.classList.add('open');\n\t\t\t\tthis._showConfetti();\n\t\t\t}\n\t\t\tif (this.listModalBackdropElement) {\n\t\t\t\tthis.listModalBackdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\t_showConfetti() {\n\t\tconst colors = [\n\t\t\t'#FF6B6B',\n\t\t\t'#4ECDC4',\n\t\t\t'#FFE66D',\n\t\t\t'#95E1D3',\n\t\t\t'#F38181',\n\t\t\t'#AA96DA',\n\t\t\t'#FCBAD3',\n\t\t\t'#A8D8EA',\n\t\t];\n\t\tconst confettiCount = 50;\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'changelog-confetti-container';\n\t\tdocument.body.appendChild(container);\n\n\t\tfor (let i = 0; i < confettiCount; i++) {\n\t\t\tconst confetti = document.createElement('div');\n\t\t\tconfetti.className = 'changelog-confetti';\n\t\t\tconfetti.style.left = Math.random() * 100 + '%';\n\t\t\tconfetti.style.backgroundColor =\n\t\t\t\tcolors[Math.floor(Math.random() * colors.length)];\n\t\t\tconfetti.style.animationDelay = Math.random() * 0.5 + 's';\n\t\t\tconfetti.style.animationDuration = Math.random() * 1 + 1.5 + 's';\n\n\t\t\tconst shapes = ['circle', 'square', 'rectangle'];\n\t\t\tconst shape = shapes[Math.floor(Math.random() * shapes.length)];\n\t\t\tif (shape === 'circle') {\n\t\t\t\tconfetti.style.borderRadius = '50%';\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t} else if (shape === 'rectangle') {\n\t\t\t\tconfetti.style.width = Math.random() * 4 + 3 + 'px';\n\t\t\t\tconfetti.style.height = Math.random() * 10 + 8 + 'px';\n\t\t\t} else {\n\t\t\t\tconfetti.style.width = Math.random() * 8 + 4 + 'px';\n\t\t\t\tconfetti.style.height = confetti.style.width;\n\t\t\t}\n\n\t\t\tcontainer.appendChild(confetti);\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (container.parentNode) {\n\t\t\t\tcontainer.parentNode.removeChild(container);\n\t\t\t}\n\t\t}, 2500);\n\t}\n\n\tcloseSidebar() {\n\t\tdocument.body.style.overflow = '';\n\n\t\tif (this.listModalElement) {\n\t\t\tthis.listModalElement.classList.remove('open');\n\t\t}\n\t\tif (this.listModalBackdropElement) {\n\t\t\tthis.listModalBackdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.listModalElement && this.listModalElement.parentNode) {\n\t\t\t\tthis.listModalElement.parentNode.removeChild(this.listModalElement);\n\t\t\t\tthis.listModalElement = null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tthis.listModalBackdropElement &&\n\t\t\t\tthis.listModalBackdropElement.parentNode\n\t\t\t) {\n\t\t\t\tthis.listModalBackdropElement.parentNode.removeChild(\n\t\t\t\t\tthis.listModalBackdropElement\n\t\t\t\t);\n\t\t\t\tthis.listModalBackdropElement = null;\n\t\t\t}\n\t\t\tif (this._listModalEscapeHandler) {\n\t\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\t_createListModal() {\n\t\tthis.listModalBackdropElement = document.createElement('div');\n\t\tthis.listModalBackdropElement.className = 'changelog-list-modal-backdrop';\n\t\tdocument.body.appendChild(this.listModalBackdropElement);\n\t\tthis.listModalBackdropElement.addEventListener('click', () =>\n\t\t\tthis.closeSidebar()\n\t\t);\n\n\t\tthis.listModalElement = document.createElement('div');\n\t\tthis.listModalElement.className = 'changelog-list-modal';\n\t\tthis.listModalElement.innerHTML = `\n\t\t\t<div class=\"changelog-list-modal-container\">\n\t\t\t\t<div class=\"changelog-list-modal-header\">\n\t\t\t\t\t<h2>${this.options.title || \"What's New\"} 🎉</h2>\n\t\t\t\t\t<button class=\"changelog-list-modal-close\" type=\"button\" aria-label=\"Close\">×</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-list-modal-body\">\n\t\t\t\t\t<div class=\"changelog-loading\">\n\t\t\t\t\t\t<div class=\"sdk-spinner\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.listModalElement);\n\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-container')\n\t\t\t.addEventListener('click', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\tthis.listModalElement\n\t\t\t.querySelector('.changelog-list-modal-close')\n\t\t\t.addEventListener('click', () => this.closeSidebar());\n\n\t\tthis._listModalEscapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closeSidebar();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._listModalEscapeHandler);\n\t}\n\n\t_renderChangelogList() {\n\t\tconst body = this.listModalElement.querySelector(\n\t\t\t'.changelog-list-modal-body'\n\t\t);\n\n\t\tif (this.isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tbody.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tbody.innerHTML = `\n\t\t\t<div class=\"changelog-list\">\n\t\t\t\t${this.changelogs.map((changelog, index) => this._renderChangelogListItem(changelog, index)).join('')}\n\t\t\t</div>\n\t\t`;\n\n\t\tbody.querySelectorAll('.changelog-list-item').forEach((item, index) => {\n\t\t\titem.addEventListener('click', () => {\n\t\t\t\tconst changelog = this.changelogs[index];\n\t\t\t\tthis._handleViewUpdate(changelog);\n\t\t\t});\n\t\t});\n\t}\n\n\t_renderChangelogListItem(changelog, index) {\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst date = changelog.published_at\n\t\t\t? this._formatDate(changelog.published_at)\n\t\t\t: '';\n\n\t\treturn `\n\t\t\t<div class=\"changelog-list-item\" data-index=\"${index}\">\n\t\t\t\t<div class=\"changelog-list-item-main\">\n\t\t\t\t\t${\n\t\t\t\t\t\thasImage\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<div class=\"changelog-list-item-image\">\n\t\t\t\t\t\t\t<img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<div class=\"changelog-list-item-content\">\n\t\t\t\t\t\t${date ? `<span class=\"changelog-list-item-date\">${date}</span>` : ''}\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\tchangelog.labels && changelog.labels.length > 0\n\t\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t\t<div class=\"changelog-list-item-labels\">\n\t\t\t\t\t\t\t\t${changelog.labels\n\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t(label) => `\n\t\t\t\t\t\t\t\t\t<span class=\"changelog-label\" style=\"background-color: ${label.color || '#E5E7EB'}; color: ${this._getContrastColor(label.color || '#E5E7EB')}\">${label.name}</span>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<h3 class=\"changelog-list-item-title\">${changelog.title}</h3>\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\tchangelog.excerpt || changelog.description\n\t\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t\t<p class=\"changelog-list-item-description\">${changelog.excerpt || changelog.description}</p>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync _loadChangelogs() {\n\t\tthis.isLoading = true;\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs();\n\t\t\tthis.changelogs = result.data || [];\n\t\t\tthis.sdk.eventBus.emit('changelog:loaded', {\n\t\t\t\tchangelogs: this.changelogs,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.changelogs = [];\n\t\t\tthis.sdk.eventBus.emit('changelog:error', { error });\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\t_renderCurrentChangelog() {\n\t\tconst content = this.modalElement.querySelector('.changelog-modal-content');\n\n\t\tif (this.isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.changelogs.length === 0) {\n\t\t\tcontent.innerHTML = `\n\t\t\t\t<div class=\"changelog-empty\">\n\t\t\t\t\t<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n\t\t\t\t\t\t<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/>\n\t\t\t\t\t\t<polyline points=\"14,2 14,8 20,8\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<p>No updates yet</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\treturn;\n\t\t}\n\n\t\tconst changelog = this.changelogs[this.currentIndex];\n\t\tconst hasImage = changelog.cover_image || changelog.image;\n\t\tconst imageUrl = changelog.cover_image || changelog.image;\n\t\tconst hasMultiple = this.changelogs.length > 1;\n\n\t\tcontent.innerHTML = `\n\t\t\t<div class=\"changelog-popup-item\">\n\t\t\t\t${\n\t\t\t\t\thasImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"changelog-popup-image\">\n\t\t\t\t\t\t<img src=\"${imageUrl}\" alt=\"${changelog.title}\" loading=\"lazy\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"changelog-popup-body\">\n\t\t\t\t\t<h2 class=\"changelog-popup-title\">${changelog.title}</h2>\n\t\t\t\t\t${\n\t\t\t\t\t\tchangelog.excerpt || changelog.description\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<p class=\"changelog-popup-description\">${changelog.excerpt || changelog.description}</p>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<button class=\"changelog-popup-btn\" type=\"button\">\n\t\t\t\t\t\t${this.options.viewButtonText || 'View Update'}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"changelog-popup-footer\">\n\t\t\t\t\t${\n\t\t\t\t\t\thasMultiple\n\t\t\t\t\t\t\t? `\n\t\t\t\t\t\t<div class=\"changelog-popup-dots\">\n\t\t\t\t\t\t\t${this.changelogs\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(_, i) => `\n\t\t\t\t\t\t\t\t<span class=\"changelog-dot ${i === this.currentIndex ? 'active' : ''}\" data-index=\"${i}\"></span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\t<button class=\"changelog-view-all-btn\" type=\"button\">\n\t\t\t\t\t\tView all updates\n\t\t\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n\t\t\t\t\t\t\t<path d=\"M5 12h14M12 5l7 7-7 7\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tcontent\n\t\t\t.querySelector('.changelog-popup-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis._handleViewUpdate(changelog);\n\t\t\t});\n\n\t\tcontent\n\t\t\t.querySelector('.changelog-view-all-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.closeModal();\n\t\t\t\tsetTimeout(() => this.openSidebar(), 350);\n\t\t\t});\n\n\t\tif (hasMultiple) {\n\t\t\tcontent.querySelectorAll('.changelog-dot').forEach((dot) => {\n\t\t\t\tdot.addEventListener('click', (e) => {\n\t\t\t\t\tconst index = parseInt(e.target.dataset.index, 10);\n\t\t\t\t\tthis.currentIndex = index;\n\t\t\t\t\tthis._renderCurrentChangelog();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleViewUpdate(changelog) {\n\t\tthis.sdk.eventBus.emit('changelog:view', { changelog });\n\n\t\tif (changelog.url || changelog.slug) {\n\t\t\tconst url =\n\t\t\t\tchangelog.url ||\n\t\t\t\t`${this.options.changelogBaseUrl || ''}/${changelog.slug}`;\n\t\t\tif (this.options.openInNewTab !== false) {\n\t\t\t\twindow.open(url, '_blank', 'noopener,noreferrer');\n\t\t\t} else {\n\t\t\t\twindow.location.href = url;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof this.options.onViewUpdate === 'function') {\n\t\t\tthis.options.onViewUpdate(changelog);\n\t\t}\n\t}\n\n\t_formatDate(dateString) {\n\t\tconst date = new Date(dateString);\n\t\tconst options = { year: 'numeric', month: 'short', day: 'numeric' };\n\t\treturn date.toLocaleDateString('en-US', options);\n\t}\n\n\t_getContrastColor(hexColor) {\n\t\tconst hex = hexColor.replace('#', '');\n\t\tconst r = parseInt(hex.substr(0, 2), 16);\n\t\tconst g = parseInt(hex.substr(2, 2), 16);\n\t\tconst b = parseInt(hex.substr(4, 2), 16);\n\t\tconst luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n\t\treturn luminance > 0.5 ? '#1F2937' : '#FFFFFF';\n\t}\n\n\thideBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) {\n\t\t\tbadge.style.display = 'none';\n\t\t}\n\t}\n\n\tshowBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) {\n\t\t\tbadge.style.display = 'block';\n\t\t}\n\t}\n\n\tnextChangelog() {\n\t\tif (this.currentIndex < this.changelogs.length - 1) {\n\t\t\tthis.currentIndex++;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tprevChangelog() {\n\t\tif (this.currentIndex > 0) {\n\t\t\tthis.currentIndex--;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t}\n\n\tasync refresh() {\n\t\tthis.changelogs = [];\n\t\tawait this._loadChangelogs();\n\t\tif (this.modalElement) {\n\t\t\tthis.currentIndex = 0;\n\t\t\tthis._renderCurrentChangelog();\n\t\t}\n\t\tif (this.listModalElement) {\n\t\t\tthis._renderChangelogList();\n\t\t}\n\t}\n\n\tmount(container) {\n\t\tsuper.mount(container);\n\t}\n\n\tdestroy() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t}\n\t\tif (this._listModalEscapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._listModalEscapeHandler);\n\t\t}\n\t\tthis.closeModal();\n\t\tthis.closeSidebar();\n\t\tsuper.destroy();\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = 'feedback-widget feedback-widget-inline';\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"sdk-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n class=\"sdk-input\"\n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"sdk-form-group\">\n <textarea \n name=\"content\" \n class=\"sdk-textarea\"\n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"sdk-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n class=\"sdk-input\"\n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"sdk-btn-primary sdk-btn-block\">\n Send Feedback\n </button>\n <div class=\"feedback-error\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"sdk-notification-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"sdk-btn-primary\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.sdk-btn-primary');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.classList.add('show');\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.classList.remove('show');\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.sdk-btn-primary');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}","/**\n * MessengerState - State management for the Messenger widget\n */\nexport class MessengerState {\nconstructor(options = {}) {\n\tthis.currentView = 'home';\n\tthis.isOpen = false;\n\tthis.unreadCount = 0;\n\tthis.activeConversationId = null;\n\n\t// Conversations\n\tthis.conversations = [];\n\tthis.messages = {};\n\n\t// Help articles\n\tthis.helpArticles = [];\n\tthis.helpSearchQuery = '';\n\n\t// Changelog\n\tthis.homeChangelogItems = [];\n\tthis.changelogItems = [];\n\n\t// Team info\n\tthis.teamName = options.teamName || 'Support';\n\tthis.teamAvatars = options.teamAvatars || [];\n\tthis.welcomeMessage = options.welcomeMessage || 'How can we help?';\n\n\t// User info\n\tthis.userContext = options.userContext || null;\n\t\n\t// ADD THESE TWO PROPERTIES\n\tthis.isIdentified = false; // Track if user has been identified\n\tthis.pendingMessage = null; // { content, attachments } - for pre-chat flow\n\n\t// Feature flags\n\tthis.enableHelp = options.enableHelp !== false;\n\tthis.enableChangelog = options.enableChangelog !== false;\n\n\t// Agent availability\n\tthis.agentsOnline = false;\n\tthis.onlineCount = 0;\n\tthis.responseTime = 'Usually replies within a few minutes';\n\n\t// Typing indicators\n\tthis.typingUsers = {};\n\n\t// Loading states\n\tthis.isLoading = false;\n\tthis.isLoadingMessages = false;\n\n\t// Listeners\n\tthis._listeners = new Set();\n}\n\t/**\n\t * Subscribe to state changes\n\t */\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t/**\n\t * Notify all listeners of state change\n\t */\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\n\t/**\n\t * Set current view\n\t */\n\tsetView(view) {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = view;\n\t\tthis._notify('viewChange', { previousView, currentView: view });\n\t}\n\n\t/**\n\t * Toggle panel open/closed\n\t */\n\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\t/**\n\t * Set active conversation for chat view\n\t */\n\tsetActiveConversation(conversationId) {\n\t\tconst previousConversationId = this.activeConversationId;\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', { conversationId, previousConversationId });\n\t}\n\n\t/**\n\t * Update conversations list\n\t */\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\t/**\n\t * Add a new conversation\n\t */\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\t/**\n\t * Update messages for a conversation\n\t */\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\n\t/**\n\t * Add a message to a conversation\n\t */\n\taddMessage(conversationId, message) {\n\t\tif (!this.messages[conversationId]) {\n\t\t\tthis.messages[conversationId] = [];\n\t\t}\n\t\tthis.messages[conversationId].push(message);\n\n\t\t// Update conversation preview\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv) {\n\t\t\tconv.lastMessage = message.content;\n\t\t\tconv.lastMessageTime = message.timestamp;\n\t\t\tif (!message.isOwn) {\n\t\t\t\tconv.unread = (conv.unread || 0) + 1;\n\t\t\t\tthis._updateUnreadCount();\n\t\t\t}\n\t\t}\n\n\t\tthis._notify('messageAdded', { conversationId, message });\n\t}\n\n\t/**\n\t * Update a conversation by id\n\t */\n\tupdateConversation(conversationId, updates) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (!conv) {\n\t\t\treturn null;\n\t\t}\n\n\t\tObject.assign(conv, updates);\n\t\tthis._notify('conversationUpdated', { conversationId, conversation: conv });\n\t\treturn conv;\n\t}\n\n\t/**\n\t * Mark conversation as read\n\t */\n\tmarkAsRead(conversationId) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv && conv.unread > 0) {\n\t\t\tconv.unread = 0;\n\t\t\tthis._updateUnreadCount();\n\t\t\tthis._notify('conversationRead', { conversationId });\n\t\t}\n\t}\n\n\t/**\n\t * Update unread count\n\t */\n\t_updateUnreadCount() {\n\t\tthis.unreadCount = this.conversations.reduce(\n\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t0\n\t\t);\n\t\tthis._notify('unreadCountChange', { count: this.unreadCount });\n\t}\n\n\t/**\n\t * Set help articles\n\t */\n\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\t/**\n\t * Set help search query\n\t */\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\t/**\n\t * Set home changelog items\n\t */\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\t/**\n\t * Set changelog items\n\t */\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\t/**\n\t * Get current conversation\n\t */\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\t/**\n\t * Get messages for active conversation\n\t */\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\n\t/**\n\t * Update team avatars from backend agent data.\n\t * Converts available_agents ({full_name, picture}) into avatar strings\n\t * the views already support (URL strings or initial strings).\n\t */\n\tsetTeamAvatarsFromAgents(agents) {\n\t\tif (!agents || agents.length === 0) return;\n\n\t\tthis.teamAvatars = agents.map((agent) => {\n\t\t\tif (agent.picture) return agent.picture;\n\t\t\treturn agent.full_name || '?';\n\t\t});\n\t\tthis._notify('teamAvatarsUpdate', { teamAvatars: this.teamAvatars });\n\t}\n\n\t/**\n\t * Get filtered help articles\n\t */\n\tgetFilteredHelpArticles() {\n\t\tif (!this.helpSearchQuery) {\n\t\t\treturn this.helpArticles;\n\t\t}\n\t\tconst query = this.helpSearchQuery.toLowerCase();\n\t\treturn this.helpArticles.filter(\n\t\t\t(article) =>\n\t\t\t\tarticle.title.toLowerCase().includes(query) ||\n\t\t\t\t(article.description &&\n\t\t\t\t\tarticle.description.toLowerCase().includes(query))\n\t\t);\n\t}\n\n\t/**\n\t * Reset state\n\t */\n\treset() {\n\t\tthis.currentView = 'home';\n\t\tthis.activeConversationId = null;\n\t\tthis.helpSearchQuery = '';\n\t\tthis._notify('reset', {});\n\t}\n}\n","export class MessengerLauncher {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-launcher messenger-launcher-${this.options.position}`;\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._updateIcon();\n\t\t\t}\n\t\t\tif (type === 'unreadCountChange') {\n\t\t\t\tthis._updateBadge();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst badgeHtml =\n\t\t\tthis.state.unreadCount > 0\n\t\t\t\t? `<span class=\"messenger-launcher-badge\">${this.state.unreadCount > 9 ? '9+' : this.state.unreadCount}</span>`\n\t\t\t\t: '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<button class=\"messenger-launcher-btn\" aria-label=\"Open messenger\">\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-chat\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M144,140a12,12,0,1,1-12-12A12,12,0,0,1,144,140Zm44-12a12,12,0,1,0,12,12A12,12,0,0,0,188,128Zm51.34,83.47a16,16,0,0,1-19.87,19.87l-24.71-7.27A80,80,0,0,1,86.43,183.42a79,79,0,0,1-25.19-7.35l-24.71,7.27a16,16,0,0,1-19.87-19.87l7.27-24.71A80,80,0,1,1,169.58,72.59a80,80,0,0,1,62.49,114.17ZM81.3,166.3a79.94,79.94,0,0,1,70.38-93.87A64,64,0,0,0,39.55,134.19a8,8,0,0,1,.63,6L32,168l27.76-8.17a8,8,0,0,1,6,.63A63.45,63.45,0,0,0,81.3,166.3Zm135.15,15.89a64,64,0,1,0-26.26,26.26,8,8,0,0,1,6-.63L224,216l-8.17-27.76A8,8,0,0,1,216.45,182.19Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-close\" style=\"display: none;\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t\t${badgeHtml}\n\t\t\t</button>\n\t\t`;\n\n\t\t// Set custom primary color if provided\n\t\tif (this.options.primaryColor) {\n\t\t\tthis.element.querySelector('.messenger-launcher-btn').style.setProperty('background', this.options.primaryColor);\n\t\t}\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-launcher-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(!this.state.isOpen);\n\t\t\t});\n\t}\n\n\t_updateIcon() {\n\t\tconst chatIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-chat'\n\t\t);\n\t\tconst closeIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-close'\n\t\t);\n\n\t\tif (this.state.isOpen) {\n\t\t\tchatIcon.style.display = 'none';\n\t\t\tcloseIcon.style.display = 'flex';\n\t\t\tthis.element.classList.add('messenger-launcher-open');\n\t\t} else {\n\t\t\tchatIcon.style.display = 'flex';\n\t\t\tcloseIcon.style.display = 'none';\n\t\t\tthis.element.classList.remove('messenger-launcher-open');\n\t\t}\n\t}\n\n\t_updateBadge() {\n\t\tconst existingBadge = this.element.querySelector(\n\t\t\t'.messenger-launcher-badge'\n\t\t);\n\t\tif (existingBadge) {\n\t\t\texistingBadge.remove();\n\t\t}\n\n\t\tif (this.state.unreadCount > 0 && !this.state.isOpen) {\n\t\t\tconst badge = document.createElement('span');\n\t\t\tbadge.className = 'messenger-launcher-badge';\n\t\t\tbadge.textContent =\n\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\tthis.element.querySelector('.messenger-launcher-btn').appendChild(badge);\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","export class NavigationTabs {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-nav';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange' || type === 'unreadCountChange') {\n\t\t\t\tthis._updateActiveTab();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getTabs() {\n\t\tconst tabs = [\n\t\t\t{ id: 'home', label: 'Home', icon: this._getHomeIcon() },\n\t\t\t{\n\t\t\t\tid: 'messages',\n\t\t\t\tlabel: 'Messages',\n\t\t\t\ticon: this._getMessagesIcon(),\n\t\t\t\tbadge: this.state.unreadCount,\n\t\t\t},\n\t\t];\n\n\t\tif (this.state.enableHelp) {\n\t\t\ttabs.push({ id: 'help', label: 'Help', icon: this._getHelpIcon() });\n\t\t}\n\n\t\tif (this.state.enableChangelog) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'changelog',\n\t\t\t\tlabel: 'Changelog',\n\t\t\t\ticon: this._getChangelogIcon(),\n\t\t\t});\n\t\t}\n\n\t\treturn tabs;\n\t}\n\n\t_updateContent() {\n\t\tconst tabs = this._getTabs();\n\t\tconst tabsHtml = tabs\n\t\t\t.map((tab) => {\n\t\t\t\tconst isActive = this.state.currentView === tab.id;\n\t\t\t\tconst badgeHtml =\n\t\t\t\t\ttab.badge && tab.badge > 0\n\t\t\t\t\t\t? `<span class=\"messenger-nav-badge\">${tab.badge > 9 ? '9+' : tab.badge}</span>`\n\t\t\t\t\t\t: '';\n\n\t\t\t\treturn `\n\t\t\t\t<button class=\"messenger-nav-tab ${isActive ? 'active' : ''}\" data-tab=\"${tab.id}\">\n\t\t\t\t\t<span class=\"messenger-nav-icon\">${tab.icon}</span>\n\t\t\t\t\t<span class=\"messenger-nav-label\">${tab.label}</span>\n\t\t\t\t\t${badgeHtml}\n\t\t\t\t</button>\n\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tthis.element.innerHTML = tabsHtml;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element.addEventListener('click', (e) => {\n\t\t\tconst tab = e.target.closest('.messenger-nav-tab');\n\t\t\tif (tab) {\n\t\t\t\tconst tabId = tab.dataset.tab;\n\t\t\t\tthis.state.setView(tabId);\n\t\t\t}\n\t\t});\n\t}\n\n\t_updateActiveTab() {\n\t\tconst tabs = this.element.querySelectorAll('.messenger-nav-tab');\n\t\ttabs.forEach((tab) => {\n\t\t\tconst isActive = tab.dataset.tab === this.state.currentView;\n\t\t\ttab.classList.toggle('active', isActive);\n\n\t\t\tif (tab.dataset.tab === 'messages') {\n\t\t\t\tconst existingBadge = tab.querySelector('.messenger-nav-badge');\n\t\t\t\tif (existingBadge) existingBadge.remove();\n\n\t\t\t\tif (this.state.unreadCount > 0) {\n\t\t\t\t\tconst badge = document.createElement('span');\n\t\t\t\t\tbadge.className = 'messenger-nav-badge';\n\t\t\t\t\tbadge.textContent =\n\t\t\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\t\t\ttab.appendChild(badge);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t_getHomeIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M218.83,103.77l-80-75.48a1.14,1.14,0,0,1-.11-.11,16,16,0,0,0-21.53,0l-.11.11L37.17,103.77A16,16,0,0,0,32,115.55V208a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V160h32v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V115.55A16,16,0,0,0,218.83,103.77ZM208,208H160V160a16,16,0,0,0-16-16H112a16,16,0,0,0-16,16v48H48V115.55l.11-.1L128,40l79.9,75.43.11.1Z\"></path>\n\t</svg>`;\n\t}\n\n\t_getMessagesIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M216,48H40A16,16,0,0,0,24,64V224a15.85,15.85,0,0,0,9.24,14.5A16.13,16.13,0,0,0,40,240a15.89,15.89,0,0,0,10.25-3.78.69.69,0,0,0,.13-.11L82.5,208H216a16,16,0,0,0,16-16V64A16,16,0,0,0,216,48ZM40,224h0ZM216,192H82.5a16,16,0,0,0-10.3,3.75l-.12.11L40,224V64H216Z\"></path>\n\t</svg>`;\n\t}\n\n\t_getHelpIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z\"></path>\n\t</svg>`;\n\t}\n\n\t_getChangelogIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t<path d=\"M228.54,86.66l-26.46,23.07A40,40,0,0,0,168,72.13L120.89,46.5a40,40,0,0,0-75.44-4l-22-19.2a8,8,0,0,0-10.5,12L35.44,54.77a40,40,0,0,0,50,61.07l47.1,25.64a40,40,0,0,0,75.41,4.07l26.46-23.07a8,8,0,0,0-10.5-12ZM56,96A24,24,0,1,1,77.25,82.75,24,24,0,0,1,56,96Zm144,64a24,24,0,1,1,24-24A24,24,0,0,1,200,160Z\"></path>\n\t</svg>`;\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","import { NavigationTabs } from './NavigationTabs.js';\n\nexport class MessengerPanel {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis.navigationTabs = null;\n\t\tthis.currentViewComponent = null;\n\t\tthis.viewRegistry = {};\n\t\tthis._unsubscribe = null;\n\t}\n\n\tregisterView(name, ViewClass) {\n\t\tthis.viewRegistry[name] = ViewClass;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-panel messenger-panel-${this.options.position}`;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-panel-content\">\n\t\t\t\t<div class=\"messenger-panel-views\"></div>\n\t\t\t\t<div class=\"messenger-panel-nav\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis.navigationTabs = new NavigationTabs(this.state, this.options);\n\t\tconst navContainer = this.element.querySelector('.messenger-panel-nav');\n\t\tnavContainer.appendChild(this.navigationTabs.render());\n\n\t\tthis._renderCurrentView();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange') {\n\t\t\t\tthis._renderCurrentView();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_renderCurrentView() {\n\t\tconst viewsContainer = this.element.querySelector('.messenger-panel-views');\n\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\n\t\tviewsContainer.innerHTML = '';\n\n\t\tconst ViewClass = this.viewRegistry[this.state.currentView];\n\t\tif (ViewClass) {\n\t\t\tthis.currentViewComponent = new ViewClass(this.state, this.options);\n\t\t\tviewsContainer.appendChild(this.currentViewComponent.render());\n\t\t} else {\n\t\t\tviewsContainer.innerHTML = `<div class=\"messenger-empty-state\">\n\t\t\t\t<p>View not found: ${this.state.currentView}</p>\n\t\t\t</div>`;\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.element.classList.add('open');\n\t\t\t});\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.classList.remove('open');\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.element) {\n\t\t\t\t\tthis.element.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t}\n\t}\n\n\tsetHeader(headerContent) {\n\t\tconst header = this.element.querySelector('.messenger-panel-header');\n\t\tif (header) {\n\t\t\theader.innerHTML = headerContent;\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.navigationTabs) {\n\t\t\tthis.navigationTabs.destroy();\n\t\t}\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","export class ChangelogView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-changelog-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'changelogUpdate') {\n\t\t\t\tthis._updateChangelogList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderTeamAvatars();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-changelog-header\">\n\t\t\t\t<h2>Changelog</h2>\n\t\t\t\t<button class=\"sdk-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-subheader\">\n\t\t\t\t<span class=\"messenger-changelog-latest\">Latest</span>\n\t\t\t\t<div class=\"messenger-changelog-team\">\n\t\t\t\t\t<span>From ${this.state.teamName}</span>\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-body\">\n\t\t\t\t<div class=\"messenger-changelog-list\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateChangelogList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateChangelogList() {\n\t\tconst changelogContainer = this.element.querySelector(\n\t\t\t'.messenger-changelog-list'\n\t\t);\n\t\tconst changelogItems = this.state.changelogItems;\n\n\t\tif (changelogItems.length === 0) {\n\t\t\tchangelogContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tchangelogContainer.innerHTML = changelogItems\n\t\t\t.map((item) => this._renderChangelogCard(item))\n\t\t\t.join('');\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_renderChangelogCard(item) {\n\t\tconst tagsHtml =\n\t\t\titem.tags && item.tags.length > 0\n\t\t\t\t? `<div class=\"messenger-changelog-tags\">\n\t\t\t\t${item.tags.map((tag) => `<span class=\"sdk-badge sdk-badge-primary messenger-changelog-tag\">${tag}</span>`).join('')}\n\t\t\t</div>`\n\t\t\t\t: '';\n\n\t\tconst dateStr = this._formatDate(item.publishedAt || item.date);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-changelog-content\">\n\t\t\t\t\t${tagsHtml}\n\t\t\t\t\t<h3 class=\"messenger-changelog-title\">${item.title}</h3>\n\t\t\t\t\t${item.description ? `<p class=\"messenger-changelog-description\">${this._truncateText(item.description, 100)}</p>` : ''}\n\t\t\t\t\t<div class=\"messenger-changelog-meta\">\n\t\t\t\t\t\t<span class=\"messenger-changelog-date\">${dateStr}</span>\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 256 256\" class=\"messenger-changelog-arrow\">\n\t\t\t\t\t\t\t<path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\">S</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">${avatarItems}</div>`;\n\t}\n\n\t_renderEmptyState() {\n\t\treturn `\n\t\t\t<div class=\"messenger-empty-state\">\n\t\t\t\t<div class=\"messenger-empty-state-icon\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M228.54,86.66l-26.46,23.07A40,40,0,0,0,168,72.13L120.89,46.5a40,40,0,0,0-75.44-4l-22-19.2a8,8,0,0,0-10.5,12L35.44,54.77a40,40,0,0,0,50,61.07l47.1,25.64a40,40,0,0,0,75.41,4.07l26.46-23.07a8,8,0,0,0-10.5-12ZM56,96A24,24,0,1,1,77.25,82.75,24,24,0,0,1,56,96Zm144,64a24,24,0,1,1,24-24A24,24,0,0,1,200,160Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<h3>No changelog yet</h3>\n\t\t\t\t<p>Check back later for updates</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t\tyear: 'numeric',\n\t\t});\n\t}\n\n\t_truncateText(text, maxLength) {\n\t\tif (!text) return '';\n\t\tif (text.length <= maxLength) return text;\n\t\treturn text.substring(0, maxLength).trim() + '...';\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.sdk-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_attachChangelogEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst changelogId = card.dataset.changelogId;\n\t\t\t\t\tconst changelogItem = this.state.changelogItems.find(\n\t\t\t\t\t\t(n) => n.id === changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (changelogItem && changelogItem.url) {\n\t\t\t\t\t\twindow.open(changelogItem.url, '_blank');\n\t\t\t\t\t} else if (this.options.onChangelogClick) {\n\t\t\t\t\t\tthis.options.onChangelogClick(changelogItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","export class ChatView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t\tthis._typingTimeout = null;\n\t\tthis._isTyping = false;\n\t\tthis._typingIndicator = null;\n\t\tthis._isConversationClosed = false;\n\t\tthis._showEmailOverlayFlag = false;\n\t\tthis._pendingAttachments = []; \n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-chat-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (\n\t\t\t\ttype === 'messageAdded' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t\tthis._appendMessage(data.message);\n\t\t\t\tthis._scrollToBottom();\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStarted' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._showTypingIndicator(data.userName);\n\t\t\t} else if (\n\t\t\t\ttype === 'typingStopped' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._hideTypingIndicator();\n\t\t\t} else if (\n\t\t\t\ttype === 'conversationUpdated' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t} else if (type === 'messagesUpdate' && data.conversationId === this.state.activeConversationId) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversation = this.state.getActiveConversation();\n\t\tconst messages = this.state.getActiveMessages();\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\t\tconst isClosed = !isNewConversation && conversation?.status === 'closed';\n\t\tthis._isConversationClosed = isClosed;\n\n\t\tconst messagesHtml =\n\t\t\tmessages.length === 0\n\t\t\t\t? this._renderEmptyState(isNewConversation)\n\t\t\t\t: messages.map((msg) => this._renderMessage(msg)).join('');\n\n\t\tconst avatarHtml = this._renderConversationAvatar(conversation);\n\t\tconst title = isNewConversation\n\t\t\t? 'New conversation'\n\t\t\t: conversation?.title || 'Chat with team';\n\t\tconst placeholder = isNewConversation\n\t\t\t? 'Start typing your message...'\n\t\t\t: isClosed\n\t\t\t\t? 'Conversation closed'\n\t\t\t\t: 'Write a message...';\n\n\t\tconst existingName = this.state.userContext?.name || '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-chat-header\">\n\t\t\t\t<button class=\"sdk-btn-icon messenger-back-btn\" aria-label=\"Back\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"messenger-chat-header-info\">\n\t\t\t\t\t${avatarHtml}\n\t\t\t\t\t<span class=\"messenger-chat-title\">${title}</span>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"sdk-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-chat-messages\">\n\t\t\t\t${messagesHtml}\n\t\t\t\t${isClosed ? `\n\t\t\t\t<div class=\"messenger-closed-banner\">\n\t\t\t\t\t<i class=\"ph ph-check-circle\"></i>\n\t\t\t\t\t<span>This conversation has been resolved</span>\n\t\t\t\t</div>\n\t\t\t\t` : ''}\n\t\t\t\t<div class=\"messenger-typing-indicator\">\n\t\t\t\t\t<div class=\"messenger-typing-dots\">\n\t\t\t\t\t\t<span></span><span></span><span></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"messenger-typing-text\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t${isClosed ? '' : `\n\t\t\t<div class=\"messenger-compose-attachments-preview\"></div>\n\n\t\t\t<div class=\"messenger-chat-compose\">\n\t\t\t\t<button class=\"sdk-btn-icon messenger-compose-attach\" aria-label=\"Attach file\">\n\t\t\t\t\t<i class=\"ph ph-paperclip\"></i>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"messenger-compose-input-wrapper\">\n\t\t\t\t\t<textarea class=\"messenger-compose-input\" placeholder=\"${placeholder}\" rows=\"1\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"messenger-compose-send\" aria-label=\"Send\" disabled>\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14L118.42,148.9l47.24-47.25a8,8,0,0,0-11.31-11.31L107.1,137.58,24,98.22l.14,0L216,40Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<input type=\"file\" class=\"messenger-compose-file-input\" multiple accept=\"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt,.zip\" />\n\t\t\t</div>\n\t\t\t`}\n\n\t\t\t<div class=\"messenger-email-overlay\">\n\t\t\t\t<div class=\"sdk-card messenger-email-card\">\n\t\t\t\t\t<div class=\"sdk-card-header\">\n\t\t\t\t\t\t<h4>What is your email address?</h4>\n\t\t\t\t\t\t<p>Enter your email to know when we reply:</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"sdk-card-body\">\n\t\t\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t\t\t<input type=\"text\" class=\"sdk-input messenger-email-name\" placeholder=\"Name (optional)\" value=\"${this._escapeHtml(existingName)}\" autocomplete=\"name\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t\t\t<input type=\"email\" class=\"sdk-input messenger-email-input\" placeholder=\"Enter your email address...\" autocomplete=\"email\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"sdk-card-footer messenger-email-actions\">\n\t\t\t\t\t\t<button class=\"sdk-btn sdk-btn-primary sdk-btn-block messenger-email-submit\" disabled>Set my email</button>\n\t\t\t\t\t\t<button class=\"sdk-btn sdk-btn-secondary sdk-btn-block messenger-email-skip\">Skip</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._typingIndicator = this.element.querySelector(\n\t\t\t'.messenger-typing-indicator'\n\t\t);\n\t\tthis._attachEvents();\n\t\tthis._scrollToBottom();\n\t\tthis._renderAttachmentPreviews();\n\n\t\t// Show email overlay after first message sent without email\n\t\tif (this._showEmailOverlayFlag) {\n\t\t\tthis._showEmailOverlay();\n\t\t}\n\t}\n\n\t_renderEmptyState(isNewConversation = false) {\n\t\tconst avatarHtml = this._renderTeamAvatars();\n\t\tconst responseTime =\n\t\t\tthis.state.responseTime || 'We typically reply within a few minutes';\n\t\tconst isOnline = this.state.agentsOnline;\n\n\t\treturn `\n\t\t\t<div class=\"messenger-chat-empty\">\n\t\t\t\t<div class=\"messenger-chat-empty-avatars\">${avatarHtml}</div>\n\t\t\t\t<h3>${isNewConversation ? 'Start a new conversation' : 'Start the conversation'}</h3>\n\t\t\t\t<p>Send us a message and we'll get back to you as soon as possible.</p>\n\t\t\t\t<div class=\"messenger-chat-availability\">\n\t\t\t\t\t<span class=\"messenger-availability-dot ${isOnline ? 'messenger-availability-online' : 'messenger-availability-away'}\"></span>\n\t\t\t\t\t<span>${isOnline ? \"We're online now\" : responseTime}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageAttachments(attachments) {\n\t\tif (!attachments || attachments.length === 0) return '';\n\t\treturn attachments.map((att) => {\n\t\t\tif (att.type === 'image') {\n\t\t\t\treturn `<img class=\"messenger-message-image\" src=\"${this._escapeHtml(att.url)}\" alt=\"${this._escapeHtml(att.name || 'image')}\" data-url=\"${this._escapeHtml(att.url)}\" />`;\n\t\t\t}\n\t\t\treturn `<a class=\"messenger-message-file\" href=\"${this._escapeHtml(att.url)}\" data-url=\"${this._escapeHtml(att.url)}\" data-name=\"${this._escapeHtml(att.name || 'file')}\">\n\t\t\t\t<i class=\"ph ph-file\"></i>\n\t\t\t\t<span>${this._escapeHtml(att.name || 'file')}</span>\n\t\t\t\t<i class=\"ph ph-download-simple messenger-file-download-icon\"></i>\n\t\t\t</a>`;\n\t\t}).join('');\n\t}\n\n\t_renderMessage(message) {\n\t\tconst isOwn = message.isOwn;\n\t\tconst messageClass = isOwn\n\t\t\t? 'messenger-message-own'\n\t\t\t: 'messenger-message-received';\n\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\t\tconst attachmentsHtml = this._renderMessageAttachments(message.attachments);\n\n\t\tconst contentHtml = message.content ? `<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>` : '';\n\n\t\tconst bubbleHtml = contentHtml ? `<div class=\"messenger-message-bubble\">${contentHtml}</div>` : '';\n\n\t\tif (isOwn) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarHtml = this._renderSenderAvatar(message.sender);\n\t\treturn `\n\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t<div class=\"messenger-message-avatar\">${avatarHtml}</div>\n\t\t\t\t<div class=\"messenger-message-wrapper\">\n\t\t\t\t\t<div class=\"messenger-message-sender\">${message.sender?.name || 'Support'}</div>\n\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSenderAvatar(sender) {\n\t\tif (sender?.avatarUrl) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${sender.avatarUrl}\" alt=\"${sender.name}\" /></div>`;\n\t\t}\n\t\tconst initial = (sender?.name || 'S').charAt(0).toUpperCase();\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\">${initial}</div>`;\n\t}\n\n\t_renderConversationAvatar(conversation) {\n\t\tif (!conversation?.participants?.length) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\">S</div>`;\n\t\t}\n\t\tconst p = conversation.participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${p.avatarUrl}\" alt=\"${p.name}\" /></div>`;\n\t\t}\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-md\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-md\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatMessageTime(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\treturn date.toLocaleTimeString('en-US', {\n\t\t\thour: 'numeric',\n\t\t\tminute: '2-digit',\n\t\t\thour12: true,\n\t\t});\n\t}\n\n\t_formatMessageContent(content) {\n\t\tif (!content) return '';\n\t\treturn content\n\t\t\t.replace(/&/g, '&')\n\t\t\t.replace(/</g, '<')\n\t\t\t.replace(/>/g, '>')\n\t\t\t.replace(/\\n/g, '<br>');\n\t}\n\n\t_appendMessage(message) {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tconst emptyState = messagesContainer.querySelector('.messenger-chat-empty');\n\t\tif (emptyState) {\n\t\t\temptyState.remove();\n\t\t}\n\n\t\tconst messageHtml = this._renderMessage(message);\n\t\tconst tempDiv = document.createElement('div');\n\t\ttempDiv.innerHTML = messageHtml;\n\t\tmessagesContainer.appendChild(tempDiv.firstElementChild);\n\t}\n\n\t_scrollToBottom() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessagesContainer.scrollTop = messagesContainer.scrollHeight;\n\t\t\t}, 50);\n\t\t}\n\t}\n\n\t_updateSendButtonState() {\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.messenger-compose-send');\n\t\tif (input && sendBtn) {\n\t\t\tsendBtn.disabled = !input.value.trim() && this._pendingAttachments.length === 0;\n\t\t}\n\t}\n\n\t_renderAttachmentPreviews() {\n\t\tconst container = this.element.querySelector('.messenger-compose-attachments-preview');\n\t\tif (!container) return;\n\n\t\tif (this._pendingAttachments.length === 0) {\n\t\t\tcontainer.innerHTML = '';\n\t\t\tcontainer.style.display = 'none';\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.display = 'flex';\n\t\tcontainer.innerHTML = this._pendingAttachments.map((att, i) => {\n\t\t\tconst isImage = att.type.startsWith('image');\n\t\t\tconst thumb = isImage\n\t\t\t\t? `<img class=\"messenger-attachment-thumb\" src=\"${att.preview}\" alt=\"${this._escapeHtml(att.file.name)}\" />`\n\t\t\t\t: `<div class=\"messenger-attachment-thumb messenger-attachment-file-icon\"><i class=\"ph ph-file\"></i></div>`;\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-attachment-preview\" data-index=\"${i}\">\n\t\t\t\t\t${thumb}\n\t\t\t\t\t<button class=\"messenger-attachment-remove\" data-index=\"${i}\" aria-label=\"Remove\">×</button>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}).join('');\n\n\t\t// Attach remove button events\n\t\tcontainer.querySelectorAll('.messenger-attachment-remove').forEach((btn) => {\n\t\t\tbtn.addEventListener('click', (e) => {\n\t\t\t\tconst idx = parseInt(e.currentTarget.dataset.index, 10);\n\t\t\t\tthis._pendingAttachments.splice(idx, 1);\n\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\tthis._updateSendButtonState();\n\t\t\t});\n\t\t});\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-back-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.querySelector('.sdk-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Compose input (not rendered when conversation is closed)\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.messenger-compose-send');\n\n\t\tif (input && sendBtn) {\n\t\t\tinput.addEventListener('input', () => {\n\t\t\t\t// Auto-resize textarea\n\t\t\t\tinput.style.height = 'auto';\n\t\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\n\t\t\t\t// Enable/disable send button\n\t\t\t\tthis._updateSendButtonState();\n\n\t\t\t\t// Send typing indicator\n\t\t\t\tif (input.value.trim()) {\n\t\t\t\t\tthis._startTyping();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinput.addEventListener('keydown', (e) => {\n\t\t\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._sendMessage();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsendBtn.addEventListener('click', () => {\n\t\t\t\tthis._sendMessage();\n\t\t\t});\n\t\t}\n\n\t\t// Attach button + file input\n\t\tconst attachBtn = this.element.querySelector('.messenger-compose-attach');\n\t\tconst fileInput = this.element.querySelector('.messenger-compose-file-input');\n\n\t\tif (attachBtn && fileInput) {\n\t\t\tattachBtn.addEventListener('click', () => {\n\t\t\t\tfileInput.click();\n\t\t\t});\n\n\t\t\tfileInput.addEventListener('change', (e) => {\n\t\t\t\tconst files = e.target.files;\n\t\t\t\tif (!files) return;\n\t\t\t\tArray.from(files).forEach((file) => {\n\t\t\t\t\tconst reader = new FileReader();\n\t\t\t\t\treader.onload = (ev) => {\n\t\t\t\t\t\tthis._pendingAttachments.push({\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tpreview: ev.target.result,\n\t\t\t\t\t\t\ttype: file.type,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\t\t\tthis._updateSendButtonState();\n\t\t\t\t\t};\n\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t});\n\t\t\t\tfileInput.value = '';\n\t\t\t});\n\t\t}\n\n\t\t// Email overlay events\n\t\tconst emailInput = this.element.querySelector('.messenger-email-input');\n\t\tconst emailSubmit = this.element.querySelector('.messenger-email-submit');\n\t\tconst emailSkip = this.element.querySelector('.messenger-email-skip');\n\n\t\tif (emailInput) {\n\t\t\temailInput.addEventListener('input', () => {\n\t\t\t\tconst isValid = this._isValidEmail(emailInput.value.trim());\n\t\t\t\temailSubmit.disabled = !isValid;\n\t\t\t});\n\n\t\t\temailInput.addEventListener('keydown', (e) => {\n\t\t\t\tif (e.key === 'Enter' && !emailSubmit.disabled) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis._handleEmailSubmit();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (emailSubmit) {\n\t\t\temailSubmit.addEventListener('click', () => {\n\t\t\t\tthis._handleEmailSubmit();\n\t\t\t});\n\t\t}\n\n\t\tif (emailSkip) {\n\t\t\temailSkip.addEventListener('click', () => {\n\t\t\t\tthis._hideEmailOverlay();\n\t\t\t});\n\t\t}\n\n\t\t// Delegated events for attachment clicks\n\t\tconst messagesContainer = this.element.querySelector('.messenger-chat-messages');\n\t\tif (messagesContainer) {\n\t\t\tmessagesContainer.addEventListener('click', (e) => {\n\t\t\t\t// File click -> download\n\t\t\t\tconst fileLink = e.target.closest('.messenger-message-file');\n\t\t\t\tif (fileLink) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst url = fileLink.dataset.url;\n\t\t\t\t\tconst name = fileLink.dataset.name;\n\t\t\t\t\tthis._downloadFile(url, name);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Image click -> open in new tab\n\t\t\t\tconst img = e.target.closest('.messenger-message-image');\n\t\t\t\tif (img) {\n\t\t\t\t\tconst url = img.dataset.url || img.src;\n\t\t\t\t\twindow.open(url, '_blank');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tasync _downloadFile(url, name) {\n\t\ttry {\n\t\t\tconst response = await fetch(url);\n\t\t\tconst blob = await response.blob();\n\t\t\tconst blobUrl = URL.createObjectURL(blob);\n\t\t\tconst a = document.createElement('a');\n\t\t\ta.href = blobUrl;\n\t\t\ta.download = name || 'download';\n\t\t\ta.style.display = 'none';\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.click();\n\t\t\tdocument.body.removeChild(a);\n\t\t\tURL.revokeObjectURL(blobUrl);\n\t\t} catch {\n\t\t\t// Fallback: open in new tab\n\t\t\twindow.open(url, '_blank');\n\t\t}\n\t}\n\n\t_escapeHtml(text) {\n\t\tif (!text) return '';\n\t\treturn text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n\t}\n\n\t_isValidEmail(email) {\n\t\treturn /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n\t}\n\n\t_showEmailOverlay() {\n\t\tconst overlay = this.element.querySelector('.messenger-email-overlay');\n\t\tif (overlay) {\n\t\t\toverlay.style.display = 'flex';\n\t\t\tconst emailInput = overlay.querySelector('.messenger-email-input');\n\t\t\tif (emailInput) {\n\t\t\t\tsetTimeout(() => emailInput.focus(), 100);\n\t\t\t}\n\t\t}\n\t}\n\n\t_startPendingConversation() {\n\t\tif (this._pendingMessage && this.options.onStartConversation) {\n\t\t\tthis.options.onStartConversation(this._pendingMessage, this._pendingAttachmentsForSend || []);\n\t\t\tthis._pendingMessage = null;\n\t\t\tthis._pendingAttachmentsForSend = null;\n\t\t}\n\t}\n\n\t_hideEmailOverlay() {\n\t\tthis._showEmailOverlayFlag = false;\n\t\tconst overlay = this.element.querySelector('.messenger-email-overlay');\n\t\tif (overlay) {\n\t\t\toverlay.style.display = 'none';\n\t\t}\n\t}\n\n\tasync _handleEmailSubmit() {\n\t\tconst nameInput = this.element.querySelector('.messenger-email-name');\n\t\tconst emailInput = this.element.querySelector('.messenger-email-input');\n\t\tconst submitBtn = this.element.querySelector('.messenger-email-submit');\n\n\t\tconst name = nameInput?.value.trim() || '';\n\t\tconst email = emailInput?.value.trim();\n\n\t\tif (!email || !this._isValidEmail(email)) return;\n\n\t\tsubmitBtn.disabled = true;\n\t\tsubmitBtn.textContent = 'Saving...';\n\n\t\ttry {\n\t\t\tif (this.options.onIdentifyContact) {\n\t\t\t\tawait this.options.onIdentifyContact({ name, email });\n\t\t\t}\n\n\t\t\tif (!this.state.userContext) {\n\t\t\t\tthis.state.userContext = {};\n\t\t\t}\n\t\t\tthis.state.userContext.name = name;\n\t\t\tthis.state.userContext.email = email;\n\n\t\t\tthis._hideEmailOverlay();\n\t\t\tthis._startPendingConversation();\n\t\t} catch (error) {\n\t\t\tconsole.error('[ChatView] Failed to save email:', error);\n\t\t\tsubmitBtn.disabled = false;\n\t\t\tsubmitBtn.textContent = 'Set my email';\n\t\t}\n\t}\n\n\tasync _sendMessage() {\n\t\tif (this._isConversationClosed) return;\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst content = input.value.trim();\n\t\tconst hasAttachments = this._pendingAttachments.length > 0;\n\n\t\tif (!content && !hasAttachments) return;\n\n\t\tthis._stopTyping();\n\n\t\t// Collect attachments to upload\n\t\tconst attachmentsToSend = [...this._pendingAttachments];\n\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\t\tconst needsContactInfo = !this.state.userContext?.email;\n\n\t\tif (isNewConversation) {\n\t\t\t// Show user's message in chat immediately\n\t\t\tconst localMessage = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: content,\n\t\t\t\tisOwn: true,\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\tattachments: attachmentsToSend.map((a) => ({\n\t\t\t\t\turl: a.preview,\n\t\t\t\t\ttype: a.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: a.file.name,\n\t\t\t\t})),\n\t\t\t};\n\t\t\tthis._appendMessage(localMessage);\n\t\t\tthis._scrollToBottom();\n\n\t\t\tif (needsContactInfo) {\n\t\t\t\tthis._pendingMessage = content;\n\t\t\t\tthis._pendingAttachmentsForSend = attachmentsToSend;\n\t\t\t\tthis._showEmailOverlayFlag = true;\n\t\t\t\tsetTimeout(() => this._showEmailOverlay(), 300);\n\t\t\t} else {\n\t\t\t\tif (this.options.onStartConversation) {\n\t\t\t\t\tthis.options.onStartConversation(content, attachmentsToSend);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst message = {\n\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\tcontent: content,\n\t\t\t\tisOwn: true,\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\tattachments: attachmentsToSend.map((a) => ({\n\t\t\t\t\turl: a.preview,\n\t\t\t\t\ttype: a.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: a.file.name,\n\t\t\t\t})),\n\t\t\t};\n\n\t\t\tthis.state.addMessage(this.state.activeConversationId, message);\n\n\t\t\tif (this.options.onSendMessage) {\n\t\t\t\tthis.options.onSendMessage(this.state.activeConversationId, message, attachmentsToSend);\n\t\t\t}\n\t\t}\n\n\t\t// Clear input and attachments\n\t\tinput.value = '';\n\t\tinput.style.height = 'auto';\n\t\tthis._pendingAttachments = [];\n\t\tthis._renderAttachmentPreviews();\n\t\tthis._updateSendButtonState();\n\t}\n\n\t_startTyping() {\n\t\tif (this._isConversationClosed) return;\n\t\tif (!this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = true;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, true);\n\t\t\t}\n\t\t}\n\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._typingTimeout = setTimeout(() => {\n\t\t\tthis._stopTyping();\n\t\t}, 3000);\n\t}\n\n\t_stopTyping() {\n\t\tif (this._isTyping && this.state.activeConversationId) {\n\t\t\tthis._isTyping = false;\n\t\t\tif (this.options.onTyping) {\n\t\t\t\tthis.options.onTyping(this.state.activeConversationId, false);\n\t\t\t}\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t\tthis._typingTimeout = null;\n\t\t}\n\t}\n\n\t_showTypingIndicator(userName) {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'flex';\n\t\t\tconst textEl = this._typingIndicator.querySelector(\n\t\t\t\t'.messenger-typing-text'\n\t\t\t);\n\t\t\tif (textEl) {\n\t\t\t\ttextEl.textContent = `${userName || 'Support'} is typing...`;\n\t\t\t}\n\t\t\tthis._scrollToBottom();\n\t\t}\n\t}\n\n\t_hideTypingIndicator() {\n\t\tif (this._typingIndicator) {\n\t\t\tthis._typingIndicator.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this._typingTimeout) {\n\t\t\tclearTimeout(this._typingTimeout);\n\t\t}\n\t\tthis._stopTyping();\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","export class ConversationsView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-conversations-view';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'conversationAdded' ||\n\t\t\t\ttype === 'conversationRead' ||\n\t\t\t\ttype === 'conversationUpdated'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-empty-state\">\n\t\t\t\t\t<div class=\"messenger-empty-state-icon\">\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t\t<path d=\"M216,48H40A16,16,0,0,0,24,64V224a15.85,15.85,0,0,0,9.24,14.5A16.13,16.13,0,0,0,40,240a15.89,15.89,0,0,0,10.25-3.78.69.69,0,0,0,.13-.11L82.5,208H216a16,16,0,0,0,16-16V64A16,16,0,0,0,216,48ZM40,224h0ZM216,192H82.5a16,16,0,0,0-10.3,3.75l-.12.11L40,224V64H216Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No conversations yet</h3>\n\t\t\t\t\t<p>Start a new conversation with our team</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t} else {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-conversations-list\">\n\t\t\t\t\t${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-conversations-header\">\n\t\t\t\t<h2>Messages</h2>\n\t\t\t\t<button class=\"sdk-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-body\">\n\t\t\t\t${conversationsHtml}\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-footer\">\n\t\t\t\t<button class=\"messenger-new-message-btn\">\n\t\t\t\t\t<div class=\"messenger-new-message-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<span>Send us a message</span>\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderConversationItem(conversation) {\n\t\tconst unreadClass = conversation.unread > 0 ? 'unread' : '';\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst avatarsHtml = this._renderConversationAvatars(\n\t\t\tconversation.participants\n\t\t);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-conversation-item ${unreadClass}\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"messenger-conversation-avatars\">\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-conversation-content\">\n\t\t\t\t\t<div class=\"messenger-conversation-header\">\n\t\t\t\t\t\t<span class=\"messenger-conversation-title\">${conversation.title || 'Chat with team'}</span>\n\t\t\t\t\t\t<span class=\"messenger-conversation-time\">${timeAgo}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-conversation-preview\">\n\t\t\t\t\t\t${conversation.unread > 0 ? '<span class=\"messenger-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t<span class=\"messenger-conversation-message\">${this._truncateMessage(conversation.lastMessage)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderConversationAvatars(participants) {\n\t\tif (!participants || participants.length === 0) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\">S</div>`;\n\t\t}\n\n\t\tconst p = participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${p.avatarUrl}\" alt=\"${p.name}\" /></div>`;\n\t\t}\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_truncateMessage(message) {\n\t\tif (!message) return 'No messages yet';\n\t\tconst maxLength = 50;\n\t\tif (message.length <= maxLength) return message;\n\t\treturn message.substring(0, maxLength) + '...';\n\t}\n\n\t_attachEvents() {\n\t\tconst closeBtn = this.element.querySelector('.sdk-close-btn');\n\t\tif (closeBtn) {\n\t\t\tcloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-conversation-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst convId = item.dataset.conversationId;\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\n\t\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst newMsgBtn = this.element.querySelector('.messenger-new-message-btn');\n\t\tif (newMsgBtn) {\n\t\t\tnewMsgBtn.addEventListener('click', () => {\n\t\t\t\tthis._startNewConversation();\n\t\t\t});\n\t\t}\n\t}\n\n\t_startNewConversation() {\n\t\t// If there's an open conversation, route to it instead of creating new\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.state.setActiveConversation(openConversation.id);\n\t\t\tthis.state.markAsRead(openConversation.id);\n\t\t\tthis.state.setView('chat');\n\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\tthis.options.onSelectConversation(openConversation.id);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.state.setActiveConversation(null);\n\t\t\tif (this.options.onStartNewConversation) {\n\t\t\t\tthis.options.onStartNewConversation();\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","export class HelpView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-help-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'helpArticlesUpdate' || type === 'helpSearchChange') {\n\t\t\t\tthis._updateCollectionsList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst searchQuery = this.state.helpSearchQuery || '';\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst collectionCount = collections.length;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-help-header\">\n\t\t\t\t<h2>Help</h2>\n\t\t\t\t<button class=\"sdk-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-search\">\n\t\t\t\t<div class=\"messenger-help-search-wrapper\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"sdk-input messenger-help-search-input\"\n\t\t\t\t\t\tplaceholder=\"Search for help\"\n\t\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t\t/>\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"#000000\" viewBox=\"0 0 256 256\" class=\"messenger-help-search-icon\">\n\t\t\t\t\t\t<path d=\"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-body\">\n\t\t\t\t<div class=\"messenger-help-collections-header\">\n\t\t\t\t\t${collectionCount} collections\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-help-collections\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateCollectionsList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateCollectionsList() {\n\t\tconst collectionsContainer = this.element.querySelector(\n\t\t\t'.messenger-help-collections'\n\t\t);\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst searchQuery = (this.state.helpSearchQuery || '').toLowerCase();\n\n\t\tconst filteredCollections = searchQuery\n\t\t\t? collections.filter(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\tc.title.toLowerCase().includes(searchQuery) ||\n\t\t\t\t\t\t(c.description && c.description.toLowerCase().includes(searchQuery))\n\t\t\t\t)\n\t\t\t: collections;\n\n\t\tconst headerEl = this.element.querySelector(\n\t\t\t'.messenger-help-collections-header'\n\t\t);\n\t\tif (headerEl) {\n\t\t\theaderEl.textContent = `${filteredCollections.length} collections`;\n\t\t}\n\n\t\tif (filteredCollections.length === 0) {\n\t\t\tcollectionsContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tcollectionsContainer.innerHTML = filteredCollections\n\t\t\t.map((collection) => this._renderCollectionItem(collection))\n\t\t\t.join('');\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_renderCollectionItem(collection) {\n\t\tconst articleCount = collection.articleCount || 0;\n\t\treturn `\n\t\t\t<div class=\"messenger-help-collection\" data-collection-id=\"${collection.id}\">\n\t\t\t\t<div class=\"messenger-help-collection-content\">\n\t\t\t\t\t<h3 class=\"messenger-help-collection-title\">${collection.title}</h3>\n\t\t\t\t\t<p class=\"messenger-help-collection-desc\">${collection.description || ''}</p>\n\t\t\t\t\t<span class=\"messenger-help-collection-count\">${articleCount} articles</span>\n\t\t\t\t</div>\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\" class=\"messenger-help-collection-arrow\">\n\t\t\t\t\t<path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderEmptyState() {\n\t\tconst isSearching = this.state.helpSearchQuery;\n\n\t\tif (isSearching) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-empty-state\">\n\t\t\t\t\t<div class=\"messenger-empty-state-icon\">\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t\t<path d=\"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No results found</h3>\n\t\t\t\t\t<p>Try a different search term</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"messenger-empty-state\">\n\t\t\t\t<div class=\"messenger-empty-state-icon\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<h3>Help collections</h3>\n\t\t\t\t<p>No collections available yet</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.sdk-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\tconst searchInput = this.element.querySelector(\n\t\t\t'.messenger-help-search-input'\n\t\t);\n\t\tlet searchTimeout;\n\t\tsearchInput.addEventListener('input', (e) => {\n\t\t\tclearTimeout(searchTimeout);\n\t\t\tsearchTimeout = setTimeout(() => {\n\t\t\t\tthis.state.setHelpSearchQuery(e.target.value);\n\t\t\t}, 300);\n\t\t});\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_attachCollectionEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-help-collection')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst collectionId = item.dataset.collectionId;\n\t\t\t\t\tconst collection = this.state.helpArticles.find(\n\t\t\t\t\t\t(c) => c.id === collectionId\n\t\t\t\t\t);\n\t\t\t\t\tif (collection && collection.url) {\n\t\t\t\t\t\twindow.open(collection.url, '_blank');\n\t\t\t\t\t} else if (this.options.onArticleClick) {\n\t\t\t\t\t\tthis.options.onArticleClick(collection);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","export class HomeView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-home-view';\n\n\t\tthis._updateContent();\n\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'homeChangelogUpdate' ||\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'availabilityUpdate'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\t\tconst recentChangelogHtml = this._renderRecentChangelog();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-home-header\">\n\t\t\t\t<div class=\"messenger-home-header-top\">\n\t\t\t\t\t<div class=\"messenger-home-logo\">\n\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-home-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<button class=\"sdk-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n\t\t\t\t\t\t\t<path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-home-welcome\">\n\t\t\t\t\t<span class=\"messenger-home-greeting\">Hello there.</span>\n\t\t\t\t\t<span class=\"messenger-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t\t${this._renderAvailabilityStatus()}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-home-body\">\n\t\t\t\t${this._renderMessageButton()}\n\n\t\t\t\t${this._renderFeaturedCard()}\n\n\t\t\t\t${recentChangelogHtml}\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-md\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-md\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_renderAvailabilityStatus() {\n\t\tconst isOnline = this.state.agentsOnline;\n\t\tconst responseTime =\n\t\t\tthis.state.responseTime || 'We typically reply within a few minutes';\n\n\t\tif (isOnline) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-home-availability\">\n\t\t\t\t\t<span class=\"messenger-availability-dot messenger-availability-online\"></span>\n\t\t\t\t\t<span class=\"messenger-availability-text\">We're online now</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-availability\">\n\t\t\t\t<span class=\"messenger-availability-dot messenger-availability-away\"></span>\n\t\t\t\t<span class=\"messenger-availability-text\">${responseTime}</span>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessageButton() {\n\t\tconst openConversation = this.state.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tconst preview = openConversation.lastMessage\n\t\t\t\t? (openConversation.lastMessage.length > 40\n\t\t\t\t\t? openConversation.lastMessage.substring(0, 40) + '...'\n\t\t\t\t\t: openConversation.lastMessage)\n\t\t\t\t: 'Continue your conversation';\n\n\t\t\treturn `\n\t\t\t\t<button class=\"messenger-home-message-btn messenger-home-continue-btn\" data-conversation-id=\"${openConversation.id}\">\n\t\t\t\t\t<div class=\"messenger-home-continue-info\">\n\t\t\t\t\t\t<span class=\"messenger-home-continue-label\">Continue conversation</span>\n\t\t\t\t\t\t<span class=\"messenger-home-continue-preview\">${preview}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<i class=\"ph ph-arrow-right\"></i>\n\t\t\t\t</button>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<button class=\"messenger-home-message-btn\">\n\t\t\t\t<span>Send us a message</span>\n\t\t\t\t<i class=\"ph ph-arrow-right\"></i>\n\t\t\t</button>\n\t\t`;\n\t}\n\n\t_renderFeaturedCard() {\n\t\tif (!this.options.featuredContent) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst { title, description, imageUrl, action } =\n\t\t\tthis.options.featuredContent;\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-featured\">\n\t\t\t\t${imageUrl ? `<img src=\"${imageUrl}\" alt=\"${title}\" class=\"messenger-home-featured-image\" onerror=\"this.style.display='none';\" />` : ''}\n\t\t\t\t<div class=\"messenger-home-featured-content\">\n\t\t\t\t\t<h3>${title}</h3>\n\t\t\t\t\t<p>${description}</p>\n\t\t\t\t</div>\n\t\t\t\t${action ? `<button class=\"sdk-btn sdk-btn-primary messenger-home-featured-btn\" data-action=\"${action.type}\" data-value=\"${action.value}\">${action.label}</button>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderRecentChangelog() {\n\t\tconst changelogItems = this.state.homeChangelogItems;\n\t\tif (changelogItems.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst changelogHtml = changelogItems\n\t\t\t.map(\n\t\t\t\t(item) => `\n\t\t\t<div class=\"messenger-home-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-home-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t\t${item.coverText ? `<span class=\"messenger-home-changelog-cover-text\">${item.coverText}</span>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-home-changelog-card-content\">\n\t\t\t\t\t<h4 class=\"messenger-home-changelog-card-title\">${item.title}</h4>\n\t\t\t\t\t<p class=\"messenger-home-changelog-card-desc\">${item.description || ''}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-changelog-section\">\n\t\t\t\t${changelogHtml}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\tconst now = new Date();\n\t\tconst diffDays = Math.floor((now - date) / (1000 * 60 * 60 * 24));\n\n\t\tif (diffDays === 0) return 'Today';\n\t\tif (diffDays === 1) return 'Yesterday';\n\t\tif (diffDays < 7) return `${diffDays}d ago`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.sdk-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Send message / continue conversation button\n\t\tconst msgBtn = this.element.querySelector('.messenger-home-message-btn');\n\t\tif (msgBtn) {\n\t\t\tmsgBtn.addEventListener('click', () => {\n\t\t\t\tconst convId = msgBtn.dataset.conversationId;\n\t\t\t\tif (convId) {\n\t\t\t\t\t// Continue existing open conversation\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\t\t\t\t\tif (this.options.onSelectConversation) {\n\t\t\t\t\t\tthis.options.onSelectConversation(convId);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// No open conversation — start new\n\t\t\t\t\tthis.state.setActiveConversation(null);\n\t\t\t\t\tthis.state.setView('chat');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-home-changelog-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t});\n\t\t\t});\n\n\t\tconst seeAllBtn = this.element.querySelector(\n\t\t\t'.messenger-home-changelog-all'\n\t\t);\n\t\tif (seeAllBtn) {\n\t\t\tseeAllBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('changelog');\n\t\t\t});\n\t\t}\n\n\t\tconst featuredBtn = this.element.querySelector(\n\t\t\t'.messenger-home-featured-btn'\n\t\t);\n\t\tif (featuredBtn) {\n\t\t\tfeaturedBtn.addEventListener('click', () => {\n\t\t\t\tconst action = featuredBtn.dataset.action;\n\t\t\t\tconst value = featuredBtn.dataset.value;\n\t\t\t\tif (action === 'url') {\n\t\t\t\t\twindow.open(value, '_blank');\n\t\t\t\t} else if (action === 'view') {\n\t\t\t\t\tthis.state.setView(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}","export class PreChatFormView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._isSubmitting = false;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-prechat-view';\n\n\t\tthis._updateContent();\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst existingName = this.state.userContext?.name || '';\n\t\tconst existingEmail = this.state.userContext?.email || '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-prechat-overlay\">\n\t\t\t\t<div class=\"messenger-prechat-card\">\n\t\t\t\t\t<h4 class=\"messenger-prechat-title\">Get notified when we reply</h4>\n\t\t\t\t\t<form class=\"sdk-form-group\" novalidate>\n\t\t\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tid=\"messenger-prechat-name\"\n\t\t\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\t\t\tplaceholder=\"Name (optional)\"\n\t\t\t\t\t\t\t\tvalue=\"${this._escapeHtml(existingName)}\"\n\t\t\t\t\t\t\t\tautocomplete=\"name\"\n\t\t\t\t\t\t\t\tclass=\"sdk-input\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t\t\t\tid=\"messenger-prechat-email\"\n\t\t\t\t\t\t\t\tname=\"email\"\n\t\t\t\t\t\t\t\tplaceholder=\"Email address\"\n\t\t\t\t\t\t\t\tvalue=\"${this._escapeHtml(existingEmail)}\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\t\t\t\tclass=\"sdk-input\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<span class=\"messenger-prechat-error\" id=\"messenger-email-error\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"messenger-prechat-actions\">\n\t\t\t\t\t\t\t<button type=\"button\" class=\"sdk-btn sdk-btn-secondary messenger-prechat-skip\">Skip</button>\n\t\t\t\t\t\t\t<button type=\"submit\" class=\"sdk-btn sdk-btn-primary sdk-btn-block messenger-prechat-submit\" disabled>\n\t\t\t\t\t\t\t\t<span class=\"messenger-prechat-submit-text\">Continue</span>\n\t\t\t\t\t\t\t\t<span class=\"messenger-prechat-submit-loading\">\n\t\t\t\t\t\t\t\t\t<i class=\"ph ph-spinner\"></i>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-md\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-md\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_escapeHtml(text) {\n\t\tif (!text) return '';\n\t\treturn text\n\t\t\t.replace(/&/g, '&')\n\t\t\t.replace(/</g, '<')\n\t\t\t.replace(/>/g, '>')\n\t\t\t.replace(/\"/g, '"');\n\t}\n\n\t_attachEvents() {\n\t\t// Form validation\n\t\tconst form = this.element.querySelector('form');\n\t\tconst emailInput = this.element.querySelector('#messenger-prechat-email');\n\t\tconst submitBtn = this.element.querySelector('.messenger-prechat-submit');\n\t\tconst skipBtn = this.element.querySelector('.messenger-prechat-skip');\n\n\t\tconst validateForm = () => {\n\t\t\tconst email = emailInput.value.trim();\n\t\t\tconst isEmailValid = this._isValidEmail(email);\n\t\t\tsubmitBtn.disabled = !isEmailValid;\n\t\t\treturn isEmailValid;\n\t\t};\n\n\t\temailInput.addEventListener('input', () => {\n\t\t\tthis._clearError('messenger-email-error');\n\t\t\tvalidateForm();\n\t\t});\n\n\t\temailInput.addEventListener('blur', () => {\n\t\t\tconst email = emailInput.value.trim();\n\t\t\tif (email && !this._isValidEmail(email)) {\n\t\t\t\tthis._showError('messenger-email-error', 'Please enter a valid email');\n\t\t\t}\n\t\t});\n\n\t\tskipBtn.addEventListener('click', () => {\n\t\t\tthis.state.setView('chat');\n\t\t});\n\n\t\tform.addEventListener('submit', async (e) => {\n\t\t\te.preventDefault();\n\t\t\tif (this._isSubmitting) return;\n\t\t\tif (!validateForm()) {\n\t\t\t\tthis._showError('messenger-email-error', 'Please enter a valid email');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait this._handleSubmit();\n\t\t});\n\n\t\tvalidateForm();\n\n\t\tsetTimeout(() => emailInput.focus(), 100);\n\t}\n\n\t_isValidEmail(email) {\n\t\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\t\treturn emailRegex.test(email);\n\t}\n\n\t_showError(elementId, message) {\n\t\tconst errorEl = this.element.querySelector(`#${elementId}`);\n\t\tif (errorEl) {\n\t\t\terrorEl.textContent = message;\n\t\t\terrorEl.style.display = 'block';\n\t\t}\n\t}\n\n\t_clearError(elementId) {\n\t\tconst errorEl = this.element.querySelector(`#${elementId}`);\n\t\tif (errorEl) {\n\t\t\terrorEl.textContent = '';\n\t\t\terrorEl.style.display = 'none';\n\t\t}\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst nameInput = this.element.querySelector('#messenger-prechat-name');\n\t\tconst emailInput = this.element.querySelector('#messenger-prechat-email');\n\t\tconst submitBtn = this.element.querySelector('.messenger-prechat-submit');\n\t\tconst submitText = submitBtn.querySelector('.messenger-prechat-submit-text');\n\t\tconst submitLoading = submitBtn.querySelector('.messenger-prechat-submit-loading');\n\n\t\tconst name = nameInput.value.trim();\n\t\tconst email = emailInput.value.trim();\n\n\t\tthis._isSubmitting = true;\n\t\tsubmitBtn.disabled = true;\n\t\tsubmitText.style.display = 'none';\n\t\tsubmitLoading.style.display = 'inline-flex';\n\n\t\ttry {\n\t\t\tif (this.options.onIdentifyContact) {\n\t\t\t\tawait this.options.onIdentifyContact({ name, email });\n\t\t\t}\n\n\t\t\tif (!this.state.userContext) {\n\t\t\t\tthis.state.userContext = {};\n\t\t\t}\n\t\t\tthis.state.userContext.name = name;\n\t\t\tthis.state.userContext.email = email;\n\n\t\t\tthis._isSubmitting = false;\n\n\t\t\tthis.state.setView('chat');\n\t\t} catch (error) {\n\t\t\tconsole.error('[PreChatFormView] Error submitting form:', error);\n\t\t\tthis._showError('messenger-email-error', 'Something went wrong. Please try again.');\n\n\t\t\tthis._isSubmitting = false;\n\t\t\tsubmitBtn.disabled = false;\n\t\t\tsubmitText.style.display = 'inline';\n\t\t\tsubmitLoading.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * WebSocketService - Real-time communication for messenger widget\n */\n\nexport class WebSocketService {\n\tconstructor(config = {}) {\n\t\tthis.baseURL = config.baseURL || '';\n\t\tthis.workspace = config.workspace || '';\n\t\tthis.sessionToken = config.sessionToken || null;\n\t\tthis.mock = config.mock || false;\n\n\t\tthis.ws = null;\n\t\tthis.reconnectAttempts = 0;\n\t\tthis.maxReconnectAttempts = 5;\n\t\tthis.reconnectDelay = 1000;\n\t\tthis.pingInterval = null;\n\t\tthis.isConnected = false;\n\n\t\t// Event listeners\n\t\tthis._listeners = new Map();\n\n\t\t// Bind methods\n\t\tthis._onOpen = this._onOpen.bind(this);\n\t\tthis._onMessage = this._onMessage.bind(this);\n\t\tthis._onClose = this._onClose.bind(this);\n\t\tthis._onError = this._onError.bind(this);\n\t}\n\n\t/**\n\t * Connect to WebSocket server\n\t */\n\tconnect(sessionToken = null) {\n\t\tif (sessionToken) {\n\t\t\tthis.sessionToken = sessionToken;\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.warn('[WebSocket] No session token provided');\n\t\t\treturn;\n\t\t}\n\n\t\t// Mock mode - simulate connection\n\t\tif (this.mock) {\n\t\t\tthis.isConnected = true;\n\t\t\tthis._emit('connected', {});\n\t\t\tthis._startMockResponses();\n\t\t\treturn;\n\t\t}\n\n\t\t// Build WebSocket URL\n\t\tconst wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n\t\tlet wsURL = this.baseURL.replace(/^https?:/, wsProtocol);\n\t\twsURL = wsURL.replace('/api/v1', '');\n\t\twsURL = `${wsURL}/api/v1/widget/messenger/ws?token=${encodeURIComponent(this.sessionToken)}`;\n\n\t\ttry {\n\t\t\tthis.ws = new WebSocket(wsURL);\n\t\t\tthis.ws.onopen = this._onOpen;\n\t\t\tthis.ws.onmessage = this._onMessage;\n\t\t\tthis.ws.onclose = this._onClose;\n\t\t\tthis.ws.onerror = this._onError;\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Connection error:', error);\n\t\t\tthis._scheduleReconnect();\n\t\t}\n\t}\n\n\t/**\n\t * Disconnect from WebSocket server\n\t */\n\tdisconnect() {\n\t\tthis.isConnected = false;\n\t\tthis.reconnectAttempts = this.maxReconnectAttempts; // Prevent reconnection\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tif (this.ws) {\n\t\t\tthis.ws.close();\n\t\t\tthis.ws = null;\n\t\t}\n\n\t\tif (this._mockInterval) {\n\t\t\tclearInterval(this._mockInterval);\n\t\t\tthis._mockInterval = null;\n\t\t}\n\t}\n\n\t/**\n\t * Subscribe to events\n\t * @param {string} event - Event name\n\t * @param {Function} callback - Event handler\n\t * @returns {Function} Unsubscribe function\n\t */\n\ton(event, callback) {\n\t\tif (!this._listeners.has(event)) {\n\t\t\tthis._listeners.set(event, new Set());\n\t\t}\n\t\tthis._listeners.get(event).add(callback);\n\t\treturn () => this._listeners.get(event).delete(callback);\n\t}\n\n\t/**\n\t * Remove event listener\n\t */\n\toff(event, callback) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).delete(callback);\n\t\t}\n\t}\n\n\t/**\n\t * Send message through WebSocket\n\t */\n\tsend(type, payload = {}) {\n\t\tif (!this.isConnected) {\n\t\t\tconsole.warn('[WebSocket] Not connected, cannot send message');\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.mock) {\n\t\t\t// Mock mode - just log\n\t\t\tconsole.log('[WebSocket Mock] Sending:', type, payload);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.ws && this.ws.readyState === WebSocket.OPEN) {\n\t\t\tthis.ws.send(JSON.stringify({ type, payload }));\n\t\t}\n\t}\n\n\t// Private methods\n\n\t_onOpen() {\n\t\tconsole.log('[WebSocket] Connected');\n\t\tthis.isConnected = true;\n\t\tthis.reconnectAttempts = 0;\n\t\tthis._emit('connected', {});\n\n\t\t// Start ping interval to keep connection alive\n\t\tthis.pingInterval = setInterval(() => {\n\t\t\tthis.send('ping', {});\n\t\t}, 30000);\n\t}\n\n\t_onMessage(event) {\n\t\ttry {\n\t\t\tconst data = JSON.parse(event.data);\n\t\t\tconst { type, payload } = data;\n\n\t\t\t// Handle different event types\n\t\t\tswitch (type) {\n\t\t\t\tcase 'message:new':\n\t\t\t\t\tthis._emit('message', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:started':\n\t\t\t\t\tthis._emit('typing_started', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'typing:stopped':\n\t\t\t\t\tthis._emit('typing_stopped', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:updated':\n\t\t\t\t\tthis._emit('conversation_updated', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'conversation:closed':\n\t\t\t\t\tthis._emit('conversation_closed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'availability:changed':\n\t\t\t\t\tthis._emit('availability_changed', payload);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'pong':\n\t\t\t\t\t// Ping response, ignore\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.log('[WebSocket] Unknown event:', type, payload);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[WebSocket] Failed to parse message:', error);\n\t\t}\n\t}\n\n\t_onClose(event) {\n\t\tconsole.log('[WebSocket] Disconnected:', event.code, event.reason);\n\t\tthis.isConnected = false;\n\n\t\tif (this.pingInterval) {\n\t\t\tclearInterval(this.pingInterval);\n\t\t\tthis.pingInterval = null;\n\t\t}\n\n\t\tthis._emit('disconnected', { code: event.code, reason: event.reason });\n\t\tthis._scheduleReconnect();\n\t}\n\n\t_onError(error) {\n\t\tconsole.error('[WebSocket] Error:', error);\n\t\tthis._emit('error', { error });\n\t}\n\n\t_scheduleReconnect() {\n\t\tif (this.reconnectAttempts >= this.maxReconnectAttempts) {\n\t\t\tconsole.log('[WebSocket] Max reconnect attempts reached');\n\t\t\tthis._emit('reconnect_failed', {});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reconnectAttempts++;\n\t\tconst delay = this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);\n\t\tconsole.log(\n\t\t\t`[WebSocket] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`\n\t\t);\n\n\t\tsetTimeout(() => {\n\t\t\tthis.connect();\n\t\t}, delay);\n\t}\n\n\t_emit(event, data) {\n\t\tif (this._listeners.has(event)) {\n\t\t\tthis._listeners.get(event).forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(`[WebSocket] Error in ${event} handler:`, error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Mock support for development\n\t_startMockResponses() {\n\t\t// Simulate agent typing and responses\n\t\tthis._mockInterval = setInterval(() => {\n\t\t\t// Randomly emit typing or message events for demo\n\t\t\tconst random = Math.random();\n\t\t\tif (random < 0.1) {\n\t\t\t\tthis._emit('typing_started', {\n\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\tuser_name: 'Sarah',\n\t\t\t\t\tis_agent: true,\n\t\t\t\t});\n\n\t\t\t\t// Stop typing after 2 seconds\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._emit('typing_stopped', {\n\t\t\t\t\t\tconversation_id: 'conv_1',\n\t\t\t\t\t\tuser_id: 'agent_1',\n\t\t\t\t\t});\n\t\t\t\t}, 2000);\n\t\t\t}\n\t\t}, 10000);\n\t}\n\n\t/**\n\t * Simulate receiving a message (for mock mode)\n\t */\n\tsimulateMessage(conversationId, message) {\n\t\tif (this.mock) {\n\t\t\tthis._emit('message', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t\tmessage: {\n\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\tcontent: message.content,\n\t\t\t\t\tsender_type: message.sender_type || 'agent',\n\t\t\t\t\tsender_name: message.sender_name || 'Support',\n\t\t\t\t\tsender_avatar: message.sender_avatar || null,\n\t\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n}\n","\nimport { BaseWidget } from './BaseWidget.js';\nimport { MessengerState } from './messenger/MessengerState.js';\nimport { MessengerLauncher } from './messenger/components/MessengerLauncher.js';\nimport { MessengerPanel } from './messenger/components/MessengerPanel.js';\nimport { ChangelogView } from './messenger/views/ChangelogView.js';\nimport { ChatView } from './messenger/views/ChatView.js';\nimport { ConversationsView } from './messenger/views/ConversationsView.js';\nimport { HelpView } from './messenger/views/HelpView.js';\nimport { HomeView } from './messenger/views/HomeView.js';\nimport { PreChatFormView } from './messenger/views/PreChatFormView.js';\nimport { WebSocketService } from '../core/WebSocketService.js';\n\nexport class MessengerWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'messenger' });\n\n\t\tthis.messengerOptions = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || 'light',\n\t\t\tteamName: options.teamName || 'Support',\n\t\t\tteamAvatars: options.teamAvatars || [],\n\t\t\twelcomeMessage: options.welcomeMessage || 'How can we help?',\n\t\t\tenableHelp: options.enableHelp !== false,\n\t\t\tenableChangelog: options.enableChangelog !== false,\n\t\t\tlogoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',\n\t\t\tfeaturedContent: options.featuredContent || null,\n\t\t\tprimaryColor: options.primaryColor || '#1c1c1e',\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonArticleClick: options.onArticleClick || null,\n\t\t\tonChangelogClick: options.onChangelogClick || null,\n\t\t};\n\n\t\tthis.messengerState = new MessengerState({\n\t\t\tteamName: this.messengerOptions.teamName,\n\t\t\tteamAvatars: this.messengerOptions.teamAvatars,\n\t\t\twelcomeMessage: this.messengerOptions.welcomeMessage,\n\t\t\tenableHelp: this.messengerOptions.enableHelp,\n\t\t\tenableChangelog: this.messengerOptions.enableChangelog,\n\t\t\tuserContext: this.sdk?.apiService?.getUserContext() || null,\n\t\t});\n\n\t\tthis.launcher = null;\n\t\tthis.panel = null;\n\t\tthis.wsService = null;\n\t\tthis._wsUnsubscribers = [];\n\n\t\tthis._handleOpenChange = this._handleOpenChange.bind(this);\n\t\tthis._handleWebSocketMessage = this._handleWebSocketMessage.bind(this);\n\t\tthis._handleTypingStarted = this._handleTypingStarted.bind(this);\n\t\tthis._handleTypingStopped = this._handleTypingStopped.bind(this);\n\t\tthis._handleConversationClosed = this._handleConversationClosed.bind(this);\n\t}\n\n\t_render() {\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = `messenger-widget theme-${this.messengerOptions.theme}`;\n\t\tcontainer.style.zIndex = '999999';\n\n\t\tthis.launcher = new MessengerLauncher(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t});\n\t\tcontainer.appendChild(this.launcher.render());\n\n\t\tthis.panel = new MessengerPanel(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\ttheme: this.messengerOptions.theme,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t\tlogoUrl: this.messengerOptions.logoUrl,\n\t\t\tfeaturedContent: this.messengerOptions.featuredContent,\n\t\t\tonSendMessage:\n\t\t\t\tthis.messengerOptions.onSendMessage ||\n\t\t\t\tthis._handleSendMessage.bind(this),\n\t\t\tonStartConversation: this._handleStartConversation.bind(this),\n\t\t\tonTyping: this.sendTypingIndicator.bind(this),\n\t\t\tonSelectConversation: this._handleSelectConversation.bind(this),\n\t\t\tonStartNewConversation: this._handleNewConversationClick.bind(this),\n\t\t\tonIdentifyContact: this._handleIdentifyContact.bind(this),\n\t\t\tonArticleClick: this.messengerOptions.onArticleClick,\n\t\t\tonChangelogClick: this.messengerOptions.onChangelogClick,\n\t\t});\n\n\t\tthis.panel.registerView('home', HomeView);\n\t\tthis.panel.registerView('messages', ConversationsView);\n\t\tthis.panel.registerView('chat', ChatView);\n\t\tthis.panel.registerView('prechat', PreChatFormView);\n\t\tthis.panel.registerView('help', HelpView);\n\t\tthis.panel.registerView('changelog', ChangelogView);\n\n\t\tcontainer.appendChild(this.panel.render());\n\t\tthis.panel.hide();\n\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\tthis._stateUnsubscribe = this.messengerState.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._handleOpenChange(data.isOpen);\n\t\t\t}\n\t\t\tif (type === 'conversationChange') {\n\t\t\t\tthis._handleActiveConversationChange(\n\t\t\t\t\tdata.conversationId,\n\t\t\t\t\tdata.previousConversationId\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\t_handleOpenChange(isOpen) {\n\t\tif (isOpen) {\n\t\t\tthis.panel.show();\n\t\t\tthis.sdk.eventBus.emit('messenger:opened', { widget: this });\n\t\t} else {\n\t\t\tthis.panel.hide();\n\t\t\tthis.messengerState.reset();\n\t\t\tthis.sdk.eventBus.emit('messenger:closed', { widget: this });\n\t\t}\n\t}\n\n\t_handleActiveConversationChange(conversationId, previousConversationId) {\n\t\tif (previousConversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:unsubscribe', {\n\t\t\t\tconversation_id: previousConversationId,\n\t\t\t});\n\t\t}\n\t\tif (conversationId && this.wsService) {\n\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\tconversation_id: conversationId,\n\t\t\t});\n\t\t}\n\t}\n\nasync _handleStartConversation(messageContent, pendingAttachments) {\n\ttry {\n\t\t// Check if already identified\n\t\tif (!this.messengerState.isIdentified) {\n\t\t\t// Not identified - show pre-chat form\n\t\t\tthis.messengerState.pendingMessage = {\n\t\t\t\tcontent: messageContent,\n\t\t\t\tattachments: pendingAttachments,\n\t\t\t};\n\t\t\tthis.messengerState.setView('prechat');\n\t\t\treturn null;\n\t\t}\n\n\t\t// Already identified - proceed with conversation\n\t\tconst openConversation = this.messengerState.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.messengerState.setActiveConversation(openConversation.id);\n\t\t\tawait this._handleSendMessage(\n\t\t\t\topenConversation.id,\n\t\t\t\t{ content: messageContent },\n\t\t\t\tpendingAttachments\n\t\t\t);\n\t\t\treturn openConversation;\n\t\t}\n\n\t\treturn await this.startNewConversation(\n\t\t\tmessageContent,\n\t\t\t'',\n\t\t\tpendingAttachments\n\t\t);\n\t} catch (error) {\n\t\tconsole.error('[MessengerWidget] Failed to start conversation:', error);\n\t\treturn null;\n\t}\n}\n\n\tasync _handleSelectConversation(conversationId) {\n\t\ttry {\n\t\t\tawait this.fetchMessages(conversationId);\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch messages:', error);\n\t\t}\n\t}\n\n\t_handleNewConversationClick() {\n\t\tconst openConversation = this.messengerState.conversations.find(\n\t\t\t(c) => c.status === 'open'\n\t\t);\n\n\t\tif (openConversation) {\n\t\t\tthis.messengerState.setActiveConversation(openConversation.id);\n\t\t\tthis.messengerState.setView('chat');\n\t\t\tthis._handleSelectConversation(openConversation.id);\n\t\t} else {\n\t\t\tthis.messengerState.setActiveConversation(null);\n\t\t\tthis.messengerState.setView('chat');\n\t\t}\n\t}\n\nasync _handleIdentifyContact(contactData) {\n\ttry {\n\t\tconst response = await this.apiService.identifyContact({\n\t\t\tname: contactData.name,\n\t\t\temail: contactData.email,\n\t\t});\n\n\t\tif (response.status) {\n\t\t\tconsole.log('[MessengerWidget] Contact identified:', response.data.contact_id);\n\n\t\t\t// Update state\n\t\t\tif (!this.messengerState.userContext) {\n\t\t\t\tthis.messengerState.userContext = {};\n\t\t\t}\n\t\t\tthis.messengerState.userContext.name = contactData.name;\n\t\t\tthis.messengerState.userContext.email = contactData.email;\n\t\t\tthis.messengerState.isIdentified = true; // ADD THIS LINE\n\n\t\t\t// Process pending message\n\t\t\tconst pendingMessage = this.messengerState.pendingMessage;\n\t\t\tif (pendingMessage) {\n\t\t\t\tthis.messengerState.pendingMessage = null;\n\t\t\t\tawait this.startNewConversation(\n\t\t\t\t\tpendingMessage.content,\n\t\t\t\t\t'',\n\t\t\t\t\tpendingMessage.attachments\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.messengerState.setView('chat');\n\t\t\t}\n\t\t}\n\n\t\treturn response;\n\t} catch (error) {\n\t\tconsole.error('[MessengerWidget] Failed to identify contact:', error);\n\t\tthrow error;\n\t}\n}\n\n\tasync _handleUploadFile(base64Data, filename) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.uploadFile(base64Data, filename);\n\t\t\tif (response.status && response.url) {\n\t\t\t\treturn response.url;\n\t\t\t}\n\t\t\tthrow new Error('Upload failed');\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to upload file:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync _uploadPendingAttachments(pendingAttachments) {\n\t\tif (!pendingAttachments || pendingAttachments.length === 0) return [];\n\n\t\tconst uploaded = [];\n\t\tfor (const att of pendingAttachments) {\n\t\t\ttry {\n\t\t\t\tconst cdnUrl = await this._handleUploadFile(att.preview, att.file.name);\n\t\t\t\tuploaded.push({\n\t\t\t\t\turl: cdnUrl,\n\t\t\t\t\ttype: att.type.startsWith('image') ? 'image' : 'file',\n\t\t\t\t\tname: att.file.name,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'[MessengerWidget] Skipping failed attachment upload:',\n\t\t\t\t\tatt.file.name,\n\t\t\t\t\terr\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn uploaded;\n\t}\n\n\tasync _handleSendMessage(conversationId, message, pendingAttachments) {\n\t\tthis.sdk.eventBus.emit('messenger:messageSent', {\n\t\t\twidget: this,\n\t\t\tconversationId,\n\t\t\tmessage,\n\t\t});\n\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconst response = await this.apiService.sendMessage(conversationId, {\n\t\t\t\tcontent: message.content,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconsole.log('[MessengerWidget] Message sent:', response.data.id);\n\t\t\t}\n\n\t\t\tif (this.apiService?.mock) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst mockResponse = {\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: \"Thanks for your message! We'll get back to you soon.\",\n\t\t\t\t\t\tisOwn: false,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname: 'Support Team',\n\t\t\t\t\t\t\tavatarUrl: null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tthis.messengerState.addMessage(conversationId, mockResponse);\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to send message:', error);\n\t\t}\n\t}\n\n\t_handleWebSocketMessage(data) {\n\t\tconst { conversation_id, message } = data;\n\n\t\tlet attachments = [];\n\t\tif (message.attachments) {\n\t\t\ttry {\n\t\t\t\tattachments =\n\t\t\t\t\ttypeof message.attachments === 'string'\n\t\t\t\t\t\t? JSON.parse(message.attachments)\n\t\t\t\t\t\t: message.attachments;\n\t\t\t} catch (e) {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\n\t\tconst localMessage = {\n\t\t\tid: message.id,\n\t\t\tcontent: message.content,\n\t\t\tisOwn: message.sender_type === 'customer',\n\t\t\ttimestamp: message.created_at,\n\t\t\tattachments: attachments.length > 0 ? attachments : undefined,\n\t\t\tsender: {\n\t\t\t\tname: message.sender_name || 'Support',\n\t\t\t\tavatarUrl: message.sender_avatar || null,\n\t\t\t},\n\t\t};\n\n\t\tthis.messengerState.addMessage(conversation_id, localMessage);\n\n\t\tif (\n\t\t\t!this.messengerState.isOpen ||\n\t\t\tthis.messengerState.activeConversationId !== conversation_id\n\t\t) {\n\t\t\tthis._updateUnreadCount();\n\t\t}\n\t}\n\n\t_handleTypingStarted(data) {\n\t\tif (data.is_agent) {\n\t\t\tthis.messengerState._notify('typingStarted', {\n\t\t\t\tconversationId: data.conversation_id,\n\t\t\t\tuserName: data.user_name,\n\t\t\t});\n\t\t}\n\t}\n\n\t_handleTypingStopped(data) {\n\t\tthis.messengerState._notify('typingStopped', {\n\t\t\tconversationId: data.conversation_id,\n\t\t});\n\t}\n\n\t_handleConversationClosed(data) {\n\t\tconst conversationId =\n\t\t\tdata?.conversation_id || data?.id || data?.conversation?.id;\n\t\tif (!conversationId) return;\n\n\t\tthis.messengerState.updateConversation(conversationId, { status: 'closed' });\n\t}\n\n\tasync _updateUnreadCount() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getUnreadCount();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.messengerState.unreadCount = response.data.unread_count || 0;\n\t\t\t\tthis.messengerState._notify('unreadCountChange', {\n\t\t\t\t\tcount: this.messengerState.unreadCount,\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to get unread count:', error);\n\t\t}\n\t}\n\n\t_initWebSocket() {\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis.wsService = new WebSocketService({\n\t\t\tbaseURL: this.apiService.baseURL,\n\t\t\tworkspace: this.apiService.workspace,\n\t\t\tsessionToken: this.apiService.sessionToken,\n\t\t\tmock: this.apiService.mock,\n\t\t});\n\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('message', this._handleWebSocketMessage)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_started', this._handleTypingStarted)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('typing_stopped', this._handleTypingStopped)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('conversation_closed', this._handleConversationClosed)\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('connected', () => {\n\t\t\t\tconsole.log('[MessengerWidget] WebSocket connected');\n\t\t\t\tif (this.messengerState.activeConversationId) {\n\t\t\t\t\tthis.wsService.send('conversation:subscribe', {\n\t\t\t\t\t\tconversation_id: this.messengerState.activeConversationId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t\tthis._wsUnsubscribers.push(\n\t\t\tthis.wsService.on('disconnected', () => {\n\t\t\t\tconsole.log('[MessengerWidget] WebSocket disconnected');\n\t\t\t})\n\t\t);\n\n\t\tthis.wsService.connect();\n\t}\n\n\topen() {\n\t\tthis.messengerState.setOpen(true);\n\t}\n\n\tclose() {\n\t\tthis.messengerState.setOpen(false);\n\t}\n\n\ttoggle() {\n\t\tthis.messengerState.setOpen(!this.messengerState.isOpen);\n\t}\n\n\tnavigateTo(view) {\n\t\tthis.messengerState.setView(view);\n\t\tif (!this.messengerState.isOpen) {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.messengerState.setConversations(conversations);\n\t}\n\n\taddMessage(conversationId, message) {\n\t\tthis.messengerState.addMessage(conversationId, message);\n\t}\n\n\tsetHelpArticles(articles) {\n\t\tthis.messengerState.setHelpArticles(articles);\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.messengerState.setHomeChangelogItems(items);\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.messengerState.setChangelogItems(items);\n\t}\n\n\tsetUnreadCount(count) {\n\t\tthis.messengerState.unreadCount = count;\n\t\tthis.messengerState._notify('unreadCountChange', { count });\n\t}\n\n\tgetState() {\n\t\treturn {\n\t\t\tisOpen: this.messengerState.isOpen,\n\t\t\tcurrentView: this.messengerState.currentView,\n\t\t\tunreadCount: this.messengerState.unreadCount,\n\t\t\tconversations: this.messengerState.conversations,\n\t\t};\n\t}\n\n\tasync loadInitialData() {\n\t\ttry {\n\t\t\tconst conversations = await this._fetchConversations();\n\t\t\tthis.messengerState.setConversations(conversations);\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to load conversations:', error);\n\t\t}\n\n\t\tif (this.messengerOptions.enableHelp) {\n\t\t\ttry {\n\t\t\t\tconst articles = await this._fetchHelpArticles();\n\t\t\t\tthis.messengerState.setHelpArticles(articles);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load help articles:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.messengerOptions.enableChangelog) {\n\t\t\ttry {\n\t\t\t\tconst { homeItems, changelogItems } = await this._fetchChangelog();\n\t\t\t\tthis.messengerState.setHomeChangelogItems(homeItems);\n\t\t\t\tthis.messengerState.setChangelogItems(changelogItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load changelog:', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync _fetchConversations() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversations();\n\t\t\tif (response.status && response.data) {\n\t\t\t\treturn response.data.map((conv) => ({\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle:\n\t\t\t\t\t\tconv.subject ||\n\t\t\t\t\t\t`Chat with ${conv.assigned_user?.name || 'Support'}`,\n\t\t\t\t\tparticipants: conv.assigned_user\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: conv.assigned_user.name,\n\t\t\t\t\t\t\t\t\tavatarUrl: conv.assigned_user.avatar,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: conv.preview || conv.snippet || '',\n\t\t\t\t\tlastMessageTime: conv.last_message_at,\n\t\t\t\t\tunread: conv.unread || 0,\n\t\t\t\t\tstatus: conv.status,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch conversations:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync _fetchHelpArticles() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getHelpCollections();\n\t\t\tif (response.status && response.data) {\n\t\t\t\treturn response.data.map((collection) => ({\n\t\t\t\t\tid: collection.id,\n\t\t\t\t\ttitle: collection.title || collection.name,\n\t\t\t\t\tdescription: collection.description || '',\n\t\t\t\t\tarticleCount:\n\t\t\t\t\t\tcollection.article_count || collection.articleCount || 0,\n\t\t\t\t\ticon: collection.icon || 'ph-book-open',\n\t\t\t\t\turl: collection.url || `#/help/${collection.slug || collection.id}`,\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch help articles:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync fetchMessages(conversationId) {\n\t\ttry {\n\t\t\tconst response = await this.apiService.getConversation(conversationId);\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst messages = (response.data.messages || []).map((msg) => {\n\t\t\t\t\tlet attachments;\n\t\t\t\t\tif (msg.attachments) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tattachments =\n\t\t\t\t\t\t\t\ttypeof msg.attachments === 'string'\n\t\t\t\t\t\t\t\t\t? JSON.parse(msg.attachments)\n\t\t\t\t\t\t\t\t\t: msg.attachments;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: msg.id,\n\t\t\t\t\t\tcontent: msg.content,\n\t\t\t\t\t\tisOwn: msg.sender_type === 'customer',\n\t\t\t\t\t\ttimestamp: msg.created_at,\n\t\t\t\t\t\tattachments:\n\t\t\t\t\t\t\tattachments && attachments.length > 0 ? attachments : undefined,\n\t\t\t\t\t\tsender: {\n\t\t\t\t\t\t\tname:\n\t\t\t\t\t\t\t\tmsg.sender_name ||\n\t\t\t\t\t\t\t\t(msg.sender_type === 'customer' ? 'You' : 'Support'),\n\t\t\t\t\t\t\tavatarUrl: msg.sender_avatar || null,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tthis.messengerState.setMessages(conversationId, messages);\n\n\t\t\t\tawait this.apiService.markConversationAsRead(conversationId);\n\t\t\t\tthis.messengerState.markAsRead(conversationId);\n\n\t\t\t\treturn messages;\n\t\t\t}\n\t\t\treturn [];\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch messages:', error);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync startNewConversation(message, subject = '', pendingAttachments = []) {\n\t\ttry {\n\t\t\tconst uploadedAttachments =\n\t\t\t\tawait this._uploadPendingAttachments(pendingAttachments);\n\n\t\t\tconsole.log('[MessengerWidget] Starting conversation...', {\n\t\t\t\tmessage,\n\t\t\t\tattachmentCount: uploadedAttachments.length,\n\t\t\t\thasSession: this.apiService.isSessionValid(),\n\t\t\t\tsessionToken: this.apiService.sessionToken\n\t\t\t\t\t? this.apiService.sessionToken.substring(0, 10) + '...'\n\t\t\t\t\t: null,\n\t\t\t\tbaseURL: this.apiService.baseURL,\n\t\t\t\tmock: this.apiService.mock,\n\t\t\t});\n\n\t\t\tconst response = await this.apiService.startConversation({\n\t\t\t\tmessage,\n\t\t\t\tsubject,\n\t\t\t\tattachments: uploadedAttachments,\n\t\t\t});\n\n\t\t\tconsole.log('[MessengerWidget] Conversation response:', response);\n\n\t\t\tif (response.status && response.data) {\n\t\t\t\tconst conv = response.data;\n\t\t\t\tconst newConversation = {\n\t\t\t\t\tid: conv.id,\n\t\t\t\t\ttitle: conv.subject || 'New conversation',\n\t\t\t\t\tparticipants: [{ name: 'Support', avatarUrl: null }],\n\t\t\t\t\tlastMessage: message,\n\t\t\t\t\tlastMessageTime: conv.created_at || new Date().toISOString(),\n\t\t\t\t\tunread: 0,\n\t\t\t\t\tstatus: 'open',\n\t\t\t\t};\n\n\t\t\t\tthis.messengerState.addConversation(newConversation);\n\n\t\t\t\tthis.messengerState.setMessages(conv.id, [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\t\tcontent: message,\n\t\t\t\t\t\tisOwn: true,\n\t\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\t},\n\t\t\t\t]);\n\n\t\t\t\tthis.messengerState.setActiveConversation(conv.id);\n\t\t\t\tthis.messengerState.setView('chat');\n\n\t\t\t\treturn conv;\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to start conversation:', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync sendTypingIndicator(conversationId, isTyping) {\n\t\ttry {\n\t\t\tawait this.apiService.sendTypingIndicator(conversationId, isTyping);\n\t\t} catch (error) {\n\t\t\t// Silent fail\n\t\t}\n\t}\n\n\tasync checkAgentAvailability() {\n\t\ttry {\n\t\t\tconst response = await this.apiService.checkAgentsOnline();\n\t\t\tif (response.status && response.data) {\n\t\t\t\tthis.messengerState.agentsOnline = response.data.agents_online;\n\t\t\t\tthis.messengerState.onlineCount = response.data.online_count || 0;\n\t\t\t\tthis.messengerState.responseTime = response.data.response_time || '';\n\n\t\t\t\tif (response.data.available_agents) {\n\t\t\t\t\tthis.messengerState.setTeamAvatarsFromAgents(\n\t\t\t\t\t\tresponse.data.available_agents\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.messengerState._notify('availabilityUpdate', response.data);\n\t\t\t\treturn response.data;\n\t\t\t}\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to check availability:', error);\n\t\t\treturn { agents_online: false, online_count: 0 };\n\t\t}\n\t}\n\n\tasync _fetchChangelog() {\n\t\tif (this.apiService?.mock) {\n\t\t\treturn {\n\t\t\t\thomeItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_5',\n\t\t\t\t\t\ttitle: 'New integrations available',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Connect with more tools you love and streamline your workflow.',\n\t\t\t\t\t\ttags: ['Integration'],\n\t\t\t\t\t\tcoverImage: 'https://feedback-sdk.product7.io/700x400__5_.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 14 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_2',\n\t\t\t\t\t\ttitle: 'A new era of Insights has arrived',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'We announced Fin Insights, a groundbreaking, AI-powered product that gives you complete visibility into every customer conversation.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Intercom_Messenger__1_.jpg',\n\t\t\t\t\t\tcoverText: 'Watch our major product launch on-demand',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 5 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_1',\n\t\t\t\t\t\ttitle: 'The 2025 Customer Service Transformation Report',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Learn how AI has transformed customer service from the ground up—rewriting its economics and reshaping expectations.',\n\t\t\t\t\t\ttags: ['Report'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Main_Report_Email_Header.png',\n\t\t\t\t\t\tcoverText: 'Customer service trends as we know them are dead.',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 2 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchangelogItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_4',\n\t\t\t\t\t\ttitle: 'Enhanced conversation analytics',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Get deeper insights into your customer conversations with our new analytics dashboard.',\n\t\t\t\t\t\ttags: ['Analytics'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-Frame%202087334450.jpg',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 10 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_3',\n\t\t\t\t\t\ttitle: 'Escalation guidance for complex issues',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'New AI-powered escalation guidance helps your team handle complex customer issues more effectively.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-image-escalation-guidance-event@2x.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 7 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\tconst response = await this.apiService.getChangelogs({ limit: 20 });\n\t\tconst changelogs = response.data || [];\n\n\t\tconst mappedItems = changelogs.map((item) => ({\n\t\t\tid: item.id,\n\t\t\ttitle: item.title,\n\t\t\tdescription: item.excerpt || item.description || '',\n\t\t\ttags: item.labels ? item.labels.map((label) => label.name) : [],\n\t\t\tcoverImage: item.cover_image || null,\n\t\t\tcoverText: null,\n\t\t\tpublishedAt: item.published_at,\n\t\t\turl: item.slug ? `/changelog/${item.slug}` : '#',\n\t\t}));\n\n\t\treturn {\n\t\t\thomeItems: mappedItems.slice(0, 3),\n\t\t\tchangelogItems: mappedItems,\n\t\t};\n\t}\n\nasync onMount() {\n\tthis.loadInitialData();\n\n\tif (this.apiService?.sessionToken) {\n\t\tthis._initWebSocket();\n\t}\n\n\tthis.checkAgentAvailability();\n\n\tthis._availabilityInterval = setInterval(() => {\n\t\tthis.checkAgentAvailability();\n\t}, 60000);\n}\n\n\tonDestroy() {\n\t\tif (this._stateUnsubscribe) {\n\t\t\tthis._stateUnsubscribe();\n\t\t}\n\n\t\tif (this.wsService) {\n\t\t\tthis.wsService.disconnect();\n\t\t}\n\n\t\tthis._wsUnsubscribers.forEach((unsub) => unsub());\n\t\tthis._wsUnsubscribers = [];\n\n\t\tif (this._availabilityInterval) {\n\t\t\tclearInterval(this._availabilityInterval);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.launcher) {\n\t\t\tthis.launcher.destroy();\n\t\t}\n\t\tif (this.panel) {\n\t\t\tthis.panel.destroy();\n\t\t}\n\t\tthis.onDestroy();\n\t\tsuper.destroy();\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class SurveyWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'survey' });\n\n\t\tthis.surveyOptions = {\n\t\t\tsurveyId: options.surveyId || null,\n\t\t\tsurveyType: options.surveyType || 'nps',\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttitle: options.title || null,\n\t\t\tdescription: options.description || null,\n\t\t\tlowLabel: options.lowLabel || null,\n\t\t\thighLabel: options.highLabel || null,\n\t\t\tcustomQuestions: options.customQuestions || [],\n\t\t\tonSubmit: options.onSubmit || null,\n\t\t\tonDismiss: options.onDismiss || null,\n\t\t};\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\t_render() {\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'feedback-survey-container';\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Events are attached when survey is shown\n\t}\n\n\tshow() {\n\t\tthis._renderSurvey();\n\t\tthis.surveyState.isVisible = true;\n\t\tthis.sdk.eventBus.emit('survey:shown', {\n\t\t\twidget: this,\n\t\t\ttype: this.surveyOptions.surveyType,\n\t\t});\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tthis._closeSurvey();\n\t\treturn this;\n\t}\n\n\t_renderSurvey() {\n\t\tthis._closeSurvey();\n\n\t\tconst config = this._getSurveyConfig();\n\n\t\tif (this.surveyOptions.position === 'center') {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-survey-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () =>\n\t\t\t\tthis._handleDismiss()\n\t\t\t);\n\t\t}\n\n\t\tthis.surveyElement = document.createElement('div');\n\t\tthis.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position}`;\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\">×</button>\n\t\t\t<h3 class=\"feedback-survey-title\">${config.title}</h3>\n\t\t\t<p class=\"feedback-survey-description\">${config.description}</p>\n\t\t\t<div class=\"feedback-survey-content\">${config.html}</div>\n\t\t\t<div class=\"feedback-survey-feedback\">\n\t\t\t\t<textarea class=\"feedback-survey-textarea\" placeholder=\"Any additional feedback? (optional)\"></textarea>\n\t\t\t</div>\n\t\t\t<button class=\"feedback-survey-submit\">Submit</button>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.surveyElement);\n\t\tthis._attachSurveyEvents();\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.surveyElement.style.opacity = '1';\n\t\t\tthis.surveyElement.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(1)'\n\t\t\t\t\t: 'translateY(0)';\n\t\t});\n\t}\n\n\t_getSurveyConfig() {\n\t\tconst configs = {\n\t\t\tnps: {\n\t\t\t\ttitle:\n\t\t\t\t\tthis.surveyOptions.title || 'How likely are you to recommend us?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'On a scale of 0-10, how likely are you to recommend our product to a friend or colleague?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-nps\">\n\t\t\t\t\t\t${[...Array(11).keys()]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(n) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-nps-btn\" data-score=\"${n}\">${n}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"feedback-survey-labels\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Not likely'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very likely'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcsat: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How satisfied are you?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How would you rate your overall satisfaction with our product?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-csat\">\n\t\t\t\t\t\t${['😞', '😕', '😐', '🙂', '😄']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(emoji, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-csat-btn\" data-score=\"${i + 1}\">${emoji}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"feedback-survey-labels\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Very dissatisfied'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very satisfied'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tces: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How easy was it?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How easy was it to accomplish your task today?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-ces\">\n\t\t\t\t\t\t${['Very Difficult', 'Difficult', 'Neutral', 'Easy', 'Very Easy']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-ces-btn\" data-score=\"${i + 1}\">${label}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t\ttitle: this.surveyOptions.title || 'Quick Feedback',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'Help us improve by answering a few questions.',\n\t\t\t\thtml: this._renderCustomQuestions(),\n\t\t\t},\n\t\t};\n\n\t\treturn configs[this.surveyOptions.surveyType] || configs.nps;\n\t}\n\n\t_renderCustomQuestions() {\n\t\tif (\n\t\t\t!this.surveyOptions.customQuestions ||\n\t\t\tthis.surveyOptions.customQuestions.length === 0\n\t\t) {\n\t\t\treturn `\n\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t<label class=\"sdk-label\">What feature do you use most?</label>\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"feature\">\n\t\t\t\t\t\t<option value=\"\">Select a feature</option>\n\t\t\t\t\t\t<option value=\"feedback\">Feedback Collection</option>\n\t\t\t\t\t\t<option value=\"surveys\">Surveys</option>\n\t\t\t\t\t\t<option value=\"analytics\">Analytics</option>\n\t\t\t\t\t\t<option value=\"integrations\">Integrations</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t\t<label class=\"sdk-label\">How often do you use it?</label>\n\t\t\t\t\t<div class=\"feedback-survey-frequency\">\n\t\t\t\t\t\t${['Daily', 'Weekly', 'Monthly', 'Rarely']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(freq) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-freq-btn\" data-freq=\"${freq}\">${freq}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.surveyOptions.customQuestions\n\t\t\t.map(\n\t\t\t\t(q, index) => `\n\t\t\t<div class=\"sdk-form-group\">\n\t\t\t\t<label class=\"sdk-label\">${q.label}</label>\n\t\t\t\t${this._renderQuestionInput(q, index)}\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\t}\n\n\t_renderQuestionInput(question, index) {\n\t\tswitch (question.type) {\n\t\t\tcase 'select':\n\t\t\t\treturn `\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"${question.id || index}\">\n\t\t\t\t\t\t<option value=\"\">${question.placeholder || 'Select an option'}</option>\n\t\t\t\t\t\t${question.options.map((opt) => `<option value=\"${opt.value}\">${opt.label}</option>`).join('')}\n\t\t\t\t\t</select>\n\t\t\t\t`;\n\t\t\tcase 'text':\n\t\t\t\treturn `\n\t\t\t\t\t<input type=\"text\" class=\"feedback-survey-input\" data-question=\"${question.id || index}\" placeholder=\"${question.placeholder || ''}\">\n\t\t\t\t`;\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_attachSurveyEvents() {\n\t\tif (!this.surveyElement) return;\n\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tcloseBtn.addEventListener('click', () => this._handleDismiss());\n\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.addEventListener('click', () => this._handleSubmit());\n\n\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-textarea'\n\t\t);\n\t\ttextarea.addEventListener('input', (e) => {\n\t\t\tthis.surveyState.feedback = e.target.value;\n\t\t});\n\n\t\tthis._attachTypeSpecificEvents();\n\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis._handleDismiss();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\t_attachTypeSpecificEvents() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\tif (type === 'nps') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectNPS(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'csat') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCSAT(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'ces') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCES(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'custom') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectFrequency(btn.dataset.freq)\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-select')\n\t\t\t\t.forEach((select) => {\n\t\t\t\t\tselect.addEventListener('change', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[select.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-input')\n\t\t\t\t.forEach((input) => {\n\t\t\t\t\tinput.addEventListener('input', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[input.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_selectNPS(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.classList.add('selected');\n\t\t\t\t} else {\n\t\t\t\t\tbtn.classList.remove('selected');\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectCSAT(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.classList.add('selected');\n\t\t\t\t} else {\n\t\t\t\t\tbtn.classList.remove('selected');\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectCES(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.classList.add('selected');\n\t\t\t\t} else {\n\t\t\t\t\tbtn.classList.remove('selected');\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectFrequency(freq) {\n\t\tthis.surveyState.customAnswers.frequency = freq;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tif (btn.dataset.freq === freq) {\n\t\t\t\t\tbtn.classList.add('selected');\n\t\t\t\t} else {\n\t\t\t\t\tbtn.classList.remove('selected');\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\tif (\n\t\t\t(type === 'nps' || type === 'csat' || type === 'ces') &&\n\t\t\tthis.surveyState.score === null\n\t\t) {\n\t\t\tthis._showError('Please select a rating');\n\t\t\treturn;\n\t\t}\n\n\t\tconst responseData = {\n\t\t\trating: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tanswers: this.surveyState.customAnswers,\n\t\t};\n\n\t\tconst response = {\n\t\t\ttype: type,\n\t\t\tscore: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tcustomAnswers: this.surveyState.customAnswers,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (this.surveyOptions.onSubmit) {\n\t\t\tthis.surveyOptions.onSubmit(response);\n\t\t}\n\n\t\ttry {\n\t\t\tconst surveyId =\n\t\t\t\tthis.surveyOptions.surveyId || `local_${type}_${Date.now()}`;\n\t\t\tawait this.apiService.submitSurveyResponse(surveyId, responseData);\n\t\t} catch (error) {\n\t\t\tconsole.error('[SurveyWidget] Failed to submit survey:', error);\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('survey:submitted', { widget: this, response });\n\n\t\tthis._closeSurvey();\n\t\tthis._showSuccessNotification();\n\t}\n\n\tasync _handleDismiss() {\n\t\tif (this.surveyOptions.surveyId) {\n\t\t\ttry {\n\t\t\t\tawait this.apiService.dismissSurvey(this.surveyOptions.surveyId);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[SurveyWidget] Failed to dismiss survey:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.surveyOptions.onDismiss) {\n\t\t\tthis.surveyOptions.onDismiss();\n\t\t}\n\t\tthis.sdk.eventBus.emit('survey:dismissed', { widget: this });\n\t\tthis._closeSurvey();\n\t}\n\n\t_showError(message) {\n\t\tconst existing = this.surveyElement.querySelector('.feedback-survey-error');\n\t\tif (existing) existing.remove();\n\n\t\tconst error = document.createElement('div');\n\t\terror.className = 'feedback-survey-error';\n\t\terror.textContent = message;\n\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.parentNode.insertBefore(error, submitBtn);\n\n\t\tsetTimeout(() => error.remove(), 3000);\n\t}\n\n\t_showSuccessNotification() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-survey-success';\n\t\tnotification.innerHTML = `\n\t\t\t<div>\n\t\t\t\t<span style=\"font-size: 18px;\">✓</span>\n\t\t\t\t<span>Thank you for your feedback!</span>\n\t\t\t</div>\n\t\t`;\n\t\tdocument.body.appendChild(notification);\n\n\t\tsetTimeout(() => {\n\t\t\tnotification.style.opacity = '0';\n\t\t\tnotification.style.transition = 'opacity 0.3s ease';\n\t\t\tsetTimeout(() => notification.remove(), 300);\n\t\t}, 3000);\n\t}\n\n\t_closeSurvey() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\tconst surveyEl = this.surveyElement;\n\t\tconst backdropEl = this.backdropElement;\n\n\t\tif (surveyEl) {\n\t\t\tsurveyEl.style.opacity = '0';\n\t\t\tsurveyEl.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(0.95)'\n\t\t\t\t\t: 'translateY(20px)';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (surveyEl && surveyEl.parentNode) {\n\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.surveyElement = null;\n\t\t}\n\n\t\tif (backdropEl) {\n\t\t\tbackdropEl.style.opacity = '0';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (backdropEl && backdropEl.parentNode) {\n\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.backdropElement = null;\n\t\t}\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\tdestroy() {\n\t\tthis._closeSurvey();\n\t\tsuper.destroy();\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { ChangelogWidget } from './ChangelogWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { MessengerWidget } from './MessengerWidget.js';\nimport { SurveyWidget } from './SurveyWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t\t['survey', SurveyWidget],\n\t\t['messenger', MessengerWidget],\n\t\t['changelog', ChangelogWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class FeedbackSDK {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tsiteId: this.config.siteId,\n\t\t\tsessionToken: this.config.sessionToken,\n\t\t\tuserContext: this.config.userContext,\n\t\t\tmock: this.config.mock,\n\t\t\tdebug: this.config.debug,\n\t\t\tenv: this.config.env,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init(this.config.userContext);\n\n\t\t\tif (initData.config) {\n\t\t\t\tthis.config = deepMerge(initData.config, this.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before creating widgets. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...options,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(type, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', { widget, type });\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getActiveSurveys(context);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to fetch active surveys: ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tasync showSurveyById(surveyId, options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst surveys = await this.getActiveSurveys();\n\t\tconst surveyConfig = surveys.find((s) => s.id === surveyId);\n\n\t\tif (!surveyConfig) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Survey with ID '${surveyId}' not found or not active`\n\t\t\t);\n\t\t}\n\n\t\treturn this.showSurvey({\n\t\t\tsurveyId: surveyConfig.id,\n\t\t\tsurveyType: surveyConfig.type,\n\t\t\ttitle: surveyConfig.title,\n\t\t\tdescription: surveyConfig.description,\n\t\t\tlowLabel: surveyConfig.low_label,\n\t\t\thighLabel: surveyConfig.high_label,\n\t\t\tcustomQuestions: surveyConfig.questions,\n\t\t\t...options,\n\t\t});\n\t}\n\n\tshowSurvey(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst surveyWidget = this.createWidget('survey', {\n\t\t\tsurveyId: options.surveyId,\n\t\t\tsurveyType: options.surveyType || options.type || 'nps',\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || this.config.theme || 'light',\n\t\t\ttitle: options.title,\n\t\t\tdescription: options.description,\n\t\t\tlowLabel: options.lowLabel,\n\t\t\thighLabel: options.highLabel,\n\t\t\tcustomQuestions: options.customQuestions,\n\t\t\tonSubmit: options.onSubmit,\n\t\t\tonDismiss: options.onDismiss,\n\t\t});\n\n\t\tsurveyWidget.mount();\n\t\tsurveyWidget.show();\n\n\t\treturn surveyWidget;\n\t}\n\n\tshowChangelog(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing changelog. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst changelogWidget = this.createWidget('changelog', {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || this.config.theme || 'light',\n\t\t\ttitle: options.title || \"What's New\",\n\t\t\ttriggerText: options.triggerText || \"What's New\",\n\t\t\tshowBadge: options.showBadge !== false,\n\t\t\tviewButtonText: options.viewButtonText || 'View Update',\n\t\t\tchangelogBaseUrl: options.changelogBaseUrl,\n\t\t\topenInNewTab: options.openInNewTab,\n\t\t\tonViewUpdate: options.onViewUpdate,\n\t\t});\n\n\t\tchangelogWidget.mount();\n\t\tchangelogWidget.show();\n\n\t\treturn changelogWidget;\n\t}\n\n\tasync getChangelogs(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching changelogs. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getChangelogs(options);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to fetch changelogs: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.config.userContext = userContext;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setUserContext(userContext);\n\t\t}\n\t\tthis.eventBus.emit('user:updated', { userContext });\n\t}\n\n\tgetUserContext() {\n\t\treturn (\n\t\t\tthis.config.userContext ||\n\t\t\t(this.apiService ? this.apiService.getUserContext() : null)\n\t\t);\n\t}\n\n\tasync reinitialize(newUserContext = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\n\t\tif (newUserContext) {\n\t\t\tthis.setUserContext(newUserContext);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.removeAllListeners();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t}\n\n\thasFeedbackBeenSubmitted(cooldownDays = 30) {\n\t\tconst cooldownMs = cooldownDays * 24 * 60 * 60 * 1000;\n\t\tconst now = Date.now();\n\n\t\tif (this.config.last_feedback_at) {\n\t\t\ttry {\n\t\t\t\tconst backendTimestamp = new Date(\n\t\t\t\t\tthis.config.last_feedback_at\n\t\t\t\t).getTime();\n\t\t\t\tif (now - backendTimestamp < cooldownMs) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid date format, continue to localStorage check\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tconst stored = localStorage.getItem(storageKey);\n\t\t\tif (!stored) return false;\n\n\t\t\tconst data = JSON.parse(stored);\n\t\t\treturn now - data.submittedAt < cooldownMs;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclearFeedbackSubmissionTracking() {\n\t\ttry {\n\t\t\tconst storageKey = `feedback_submitted_${this.config.workspace}`;\n\t\t\tlocalStorage.removeItem(storageKey);\n\t\t\tthis.eventBus.emit('feedback:trackingCleared');\n\t\t} catch (e) {\n\t\t\tconsole.warn('Failed to clear feedback tracking:', e);\n\t\t}\n\t}\n\n\t_detectEnvironment() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn 'production';\n\t\t}\n\n\t\tconst hostname = window.location.hostname.toLowerCase();\n\n\t\tif (\n\t\t\thostname.includes('staging') ||\n\t\t\thostname.includes('localhost') ||\n\t\t\thostname.includes('127.0.0.1') ||\n\t\t\thostname.includes('.local')\n\t\t) {\n\t\t\treturn 'staging';\n\t\t}\n\n\t\treturn 'production';\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tuserContext: null,\n\t\t\tposition: 'bottom-right',\n\t\t\ttheme: 'light',\n\t\t\tboardId: 'general',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t\tmock: false,\n\t\t\tenv: this._detectEnvironment(),\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(\n\t\t\tdeepMerge(defaultConfig, existingConfig),\n\t\t\tnewConfig\n\t\t);\n\n\t\tif (!newConfig.env && !existingConfig.env) {\n\t\t\tmergedConfig.env = this._detectEnvironment();\n\t\t}\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.userContext) {\n\t\t\tthis._validateUserContext(mergedConfig.userContext);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateUserContext(userContext) {\n\t\tif (!userContext.user_id && !userContext.email) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t'User context must include at least user_id or email'\n\t\t\t);\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (userContext[key] && typeof userContext[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`User context field '${key}' must be of type '${expectedType}'`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new FeedbackSDK(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new FeedbackSDK(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractUserContextFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany:\n\t\t\t\tauthData.company || authData.organization\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t};\n\t}\n}\n","export const baseStyles = `\n.feedback-widget,\n.messenger-widget,\n.changelog-widget,\n.feedback-survey {\n box-sizing: border-box;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after,\n.messenger-widget *,\n.messenger-widget *::before,\n.messenger-widget *::after,\n.changelog-widget *,\n.changelog-widget *::before,\n.changelog-widget *::after,\n.feedback-survey *,\n.feedback-survey *::before,\n.feedback-survey *::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .feedback-widget *,\n .messenger-widget *,\n .changelog-widget *,\n .feedback-survey * {\n transition: none !important;\n animation: none !important;\n }\n}\n\n@media print {\n .feedback-widget,\n .feedback-panel,\n .sdk-modal-backdrop,\n .sdk-notification,\n .changelog-widget,\n .changelog-modal,\n .messenger-widget,\n .messenger-launcher,\n .messenger-panel,\n .feedback-survey,\n .feedback-survey-backdrop {\n display: none !important;\n }\n}\n`;","export const changelogStyles = `\n.changelog-widget {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.changelog-widget.position-bottom-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.changelog-widget.position-bottom-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.changelog-widget.position-top-right {\n top: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.changelog-widget.position-top-left {\n top: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.changelog-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 48px;\n border-radius: var(--radius-full);\n border: none;\n padding: var(--spacing-3) var(--spacing-5);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-slow);\n color: var(--color-white);\n background: var(--color-primary);\n box-shadow: var(--shadow-md);\n width: fit-content;\n}\n\n.changelog-trigger-btn:hover {\n transform: translateY(-2px);\n box-shadow: var(--shadow-lg);\n}\n\n.changelog-trigger-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.changelog-icon {\n flex-shrink: 0;\n}\n\n.changelog-confetti-emoji {\n font-size: var(--font-size-base);\n margin-left: 2px;\n}\n\n.changelog-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 12px;\n height: 12px;\n background: var(--color-error);\n border-radius: var(--radius-full);\n border: 2px solid var(--color-white);\n}\n\n.changelog-confetti-container {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: var(--z-notification);\n overflow: hidden;\n}\n\n.changelog-confetti {\n position: absolute;\n top: -20px;\n opacity: 0;\n animation: confettiFall 2s ease-out forwards;\n}\n\n@keyframes confettiFall {\n 0% {\n opacity: 1;\n transform: translateY(0) rotate(0deg) scale(1);\n }\n 10% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translateY(100vh) rotate(720deg) scale(0.5);\n }\n}\n\n.changelog-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n font-family: inherit;\n}\n\n.changelog-modal.open {\n pointer-events: auto;\n}\n\n.changelog-modal-container {\n position: relative;\n width: 100%;\n max-width: 580px;\n max-height: 90vh;\n background: #DBEAFE;\n border-radius: var(--radius-4xl);\n overflow: hidden;\n box-shadow: var(--shadow-2xl);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n}\n\n.changelog-modal.open .changelog-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-modal-close {\n position: absolute;\n top: var(--spacing-4);\n right: var(--spacing-4);\n background: rgba(255, 255, 255, 0.9);\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 0;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-full);\n transition: all var(--transition-base);\n line-height: 1;\n z-index: 10;\n box-shadow: var(--shadow-md);\n}\n\n.changelog-modal-close:hover {\n background: var(--color-white);\n color: var(--color-neutral-900);\n transform: scale(1.05);\n}\n\n.changelog-modal-content {\n overflow-y: auto;\n max-height: 90vh;\n}\n\n.changelog-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px var(--spacing-5);\n}\n\n.changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px var(--spacing-5);\n text-align: center;\n color: var(--color-text-tertiary);\n}\n\n.changelog-empty svg {\n margin-bottom: var(--spacing-4);\n stroke: var(--color-neutral-300);\n}\n\n.changelog-empty p {\n margin: 0;\n font-size: var(--font-size-md);\n}\n\n.changelog-popup-item {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-popup-image {\n width: 100%;\n padding: var(--spacing-6) var(--spacing-6) 0;\n}\n\n.changelog-popup-image img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n border-radius: var(--radius-xl);\n border: 2px solid var(--color-primary);\n box-shadow: 0 4px 20px rgba(21, 94, 239, 0.2);\n}\n\n.changelog-popup-body {\n padding: var(--spacing-6) var(--spacing-8) var(--spacing-8);\n text-align: center;\n}\n\n.changelog-popup-title {\n margin: 0 0 var(--spacing-4);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-neutral-900);\n}\n\n.changelog-popup-description {\n margin: 0 0 var(--spacing-6);\n font-size: 17px;\n line-height: var(--line-height-loose);\n color: var(--color-neutral-600);\n}\n\n.changelog-popup-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 14px var(--spacing-8);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-white);\n background: var(--color-primary);\n border: none;\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-base);\n}\n\n.changelog-popup-btn:hover {\n background: var(--color-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(21, 94, 239, 0.3);\n}\n\n.changelog-popup-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.changelog-popup-footer {\n padding: 0 var(--spacing-8) var(--spacing-6);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--spacing-4);\n}\n\n.changelog-popup-dots {\n display: flex;\n gap: var(--spacing-2);\n}\n\n.changelog-dot {\n width: 10px;\n height: 10px;\n border-radius: var(--radius-full);\n background: var(--color-primary-border);\n cursor: pointer;\n transition: all var(--transition-base);\n}\n\n.changelog-dot:hover {\n background: rgba(21, 94, 239, 0.5);\n}\n\n.changelog-dot.active {\n background: var(--color-primary);\n transform: scale(1.2);\n}\n\n.changelog-view-all-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n color: var(--color-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-sm);\n transition: all var(--transition-base);\n}\n\n.changelog-view-all-btn:hover {\n background: var(--color-primary-light);\n}\n\n.changelog-view-all-btn svg {\n transition: transform var(--transition-base);\n}\n\n.changelog-view-all-btn:hover svg {\n transform: translateX(3px);\n}\n\n.changelog-list-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n pointer-events: none;\n font-family: inherit;\n}\n\n.changelog-list-modal.open {\n pointer-events: auto;\n}\n\n.changelog-list-modal-container {\n position: relative;\n width: 100%;\n max-width: 460px;\n max-height: 85vh;\n background: var(--color-white);\n border-radius: var(--radius-3xl);\n overflow: hidden;\n box-shadow: var(--shadow-2xl);\n transform: scale(0.95) translateY(20px);\n opacity: 0;\n transition: all var(--transition-slow);\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-modal.open .changelog-list-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.changelog-list-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n background: var(--color-white);\n}\n\n.changelog-list-modal-header h2 {\n margin: 0;\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.changelog-list-modal-close {\n background: none;\n border: none;\n font-size: 22px;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: var(--spacing-1);\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-sm);\n transition: all var(--transition-base);\n line-height: 1;\n}\n\n.changelog-list-modal-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.changelog-list-modal-body {\n flex: 1;\n overflow-y: auto;\n}\n\n.changelog-list {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: var(--spacing-3) var(--spacing-4);\n border-bottom: 1px solid var(--color-border);\n cursor: pointer;\n transition: background-color var(--transition-base);\n position: relative;\n}\n\n.changelog-list-item:hover {\n background: var(--color-neutral-50);\n}\n\n.changelog-list-item:last-child {\n border-bottom: none;\n}\n\n.changelog-list-item-image {\n width: 100%;\n margin-bottom: var(--spacing-2);\n border-radius: var(--radius-sm);\n overflow: hidden;\n border: 1px solid var(--color-border);\n}\n\n.changelog-list-item-image img {\n width: 100%;\n height: 100px;\n display: block;\n object-fit: cover;\n}\n\n.changelog-list-item-main {\n flex: 1;\n min-width: 0;\n}\n\n.changelog-list-item-content {\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n\n.changelog-list-item-date {\n font-size: var(--font-size-xs);\n color: var(--color-neutral-500);\n font-weight: var(--font-weight-medium);\n}\n\n.changelog-list-item-labels {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-1);\n margin-bottom: 1px;\n}\n\n.changelog-list-item-title {\n margin: 0;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-snug);\n color: var(--color-text-primary);\n}\n\n.changelog-list-item-description {\n margin: 0;\n font-size: var(--font-size-sm);\n line-height: var(--line-height-normal);\n color: var(--color-neutral-500);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.changelog-list-item-arrow {\n flex-shrink: 0;\n margin-left: var(--spacing-3);\n color: var(--color-text-tertiary);\n transition: all var(--transition-base);\n}\n\n.changelog-list-item:hover .changelog-list-item-arrow {\n color: var(--color-primary);\n transform: translateX(3px);\n}\n\n@media (max-width: 768px) {\n .changelog-widget {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .changelog-widget.position-bottom-left {\n left: var(--spacing-4);\n }\n\n .changelog-modal {\n padding: var(--spacing-4);\n }\n\n .changelog-modal-container {\n max-width: 100%;\n border-radius: var(--spacing-5);\n }\n\n .changelog-popup-image {\n padding: var(--spacing-5) var(--spacing-5) 0;\n }\n\n .changelog-popup-body {\n padding: var(--spacing-5) var(--spacing-6) var(--spacing-6);\n }\n\n .changelog-popup-title {\n font-size: 22px;\n }\n\n .changelog-popup-description {\n font-size: var(--font-size-md);\n }\n\n .changelog-popup-btn {\n padding: var(--spacing-3) 28px;\n font-size: var(--font-size-md);\n width: 100%;\n }\n\n .changelog-popup-footer {\n padding: 0 var(--spacing-6) var(--spacing-5);\n }\n\n .changelog-list-modal {\n padding: var(--spacing-4);\n }\n\n .changelog-list-modal-container {\n max-width: 100%;\n max-height: 90vh;\n border-radius: var(--spacing-4);\n }\n\n .changelog-list-item {\n padding: 10px 14px;\n }\n\n .changelog-list-item-image img {\n height: 80px;\n }\n\n .changelog-list-item-title {\n font-size: var(--font-size-sm);\n }\n\n .changelog-list-item-description {\n font-size: var(--font-size-xs);\n }\n}\n`;","export const feedbackStyles = `\n.feedback-widget-button {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.feedback-widget-button.position-bottom-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.feedback-widget-button.position-bottom-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.feedback-widget-button.position-top-right {\n top: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.feedback-widget-button.position-top-left {\n top: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.feedback-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n height: 48px;\n border-radius: var(--radius-full);\n border: none;\n padding: var(--spacing-3) var(--spacing-5);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-slow);\n color: var(--color-white);\n background: var(--color-primary);\n box-shadow: var(--shadow-md);\n width: fit-content;\n}\n\n.feedback-trigger-btn:hover:not(:disabled) {\n transform: translateY(-2px);\n box-shadow: var(--shadow-lg);\n}\n\n.feedback-trigger-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.feedback-trigger-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.feedback-icon {\n flex-shrink: 0;\n}\n\n.feedback-minimize-icon,\n.feedback-expand-icon {\n position: absolute;\n top: -6px;\n right: -6px;\n width: 24px;\n height: 24px;\n padding: var(--spacing-1);\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-white);\n border-radius: var(--radius-full);\n opacity: 0;\n transition: opacity var(--transition-base);\n box-shadow: var(--shadow-sm);\n cursor: pointer;\n}\n\n.feedback-minimize-icon svg,\n.feedback-expand-icon svg {\n width: 16px;\n height: 16px;\n display: block;\n fill: var(--color-primary);\n}\n\n.feedback-widget-button:not(.minimized) .feedback-trigger-btn:hover .feedback-minimize-icon {\n opacity: 1;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn {\n padding: var(--spacing-3);\n width: 48px;\n height: 48px;\n justify-content: center;\n}\n\n.feedback-widget-button.minimized .feedback-text {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-minimize-icon {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-trigger-btn:hover .feedback-expand-icon {\n opacity: 1;\n}\n\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: var(--spacing-6);\n width: 420px;\n max-height: 500px;\n z-index: var(--z-popover);\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n font-family: inherit;\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n}\n\n.feedback-panel-content {\n background: var(--color-white);\n height: 100%;\n display: flex;\n flex-direction: column;\n border-radius: var(--radius-2xl);\n box-shadow: var(--shadow-xl);\n border: 1px solid var(--color-border);\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: var(--spacing-6);\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\n margin-top: auto;\n padding-top: var(--spacing-6);\n}\n\n.feedback-error {\n color: var(--color-error-dark);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n margin-top: var(--spacing-2);\n padding: var(--spacing-3);\n background: var(--color-error-light);\n border: 1px solid var(--color-error-border);\n border-radius: var(--radius-md);\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n@media (max-width: 768px) {\n .feedback-widget-button {\n bottom: var(--spacing-4);\n right: var(--spacing-4);\n }\n \n .feedback-widget-button.position-bottom-left {\n left: var(--spacing-4);\n }\n \n .feedback-minimize-icon,\n .feedback-expand-icon {\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n }\n \n .feedback-minimize-icon svg,\n .feedback-expand-icon svg {\n width: 14px;\n height: 14px;\n }\n\n .feedback-panel {\n width: 100%;\n top: auto;\n bottom: 0;\n right: 0;\n left: 0;\n height: 85vh;\n max-height: 85vh;\n transform: translateY(100%);\n border-radius: var(--radius-3xl) var(--radius-3xl) 0 0;\n }\n \n .feedback-panel.open {\n transform: translateY(0);\n }\n \n .feedback-panel-content {\n border-radius: var(--radius-3xl) var(--radius-3xl) 0 0;\n }\n \n .feedback-panel-header {\n padding: var(--spacing-5);\n position: relative;\n }\n \n .feedback-panel-header::before {\n content: '';\n position: absolute;\n top: var(--spacing-2);\n left: 50%;\n transform: translateX(-50%);\n width: 40px;\n height: 4px;\n background: var(--color-neutral-300);\n border-radius: 2px;\n }\n \n .feedback-panel-body {\n padding: var(--spacing-5);\n }\n \n .feedback-form-group textarea {\n min-height: 150px;\n }\n}\n`;","export const messengerCoreStyles = `\n\n.messenger-launcher {\n position: fixed;\n z-index: 999999;\n}\n\n.messenger-launcher-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.messenger-launcher-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.messenger-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: 50%;\n border: none;\n background: #1c1c1e;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n}\n\n.messenger-launcher-btn:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.4);\n}\n\n.messenger-launcher-btn:active {\n transform: scale(0.95);\n}\n\n.messenger-launcher-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s ease, transform 0.2s ease;\n}\n\n.messenger-launcher-open .messenger-launcher-icon-chat {\n opacity: 0;\n transform: rotate(-90deg);\n}\n\n.messenger-launcher-open .messenger-launcher-icon-close {\n opacity: 1;\n transform: rotate(0deg);\n}\n\n.messenger-launcher-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n background: #ef4444;\n color: white;\n font-size: 11px;\n font-weight: 600;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2px solid white;\n}\n\n\n.messenger-panel {\n position: fixed;\n z-index: 999998;\n width: 400px;\n height: 680px;\n max-height: calc(100vh - 100px);\n display: none;\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.messenger-panel.open {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.messenger-panel-bottom-right {\n bottom: 90px;\n right: 20px;\n}\n\n.messenger-panel-bottom-left {\n bottom: 90px;\n left: 20px;\n}\n\n.messenger-panel-content {\n background: #1c1c1e;\n height: 100%;\n border-radius: 16px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);\n}\n\n.messenger-panel-views {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.messenger-view {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n\n.messenger-close-btn,\n.messenger-back-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.6);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.messenger-close-btn:hover,\n.messenger-back-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n/* Avatar Stack */\n.messenger-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.messenger-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 2px solid #1c1c1e;\n background: #5856d6;\n color: white;\n font-size: 13px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: -8px;\n object-fit: cover;\n}\n\n.messenger-avatar:first-child {\n margin-left: 0;\n}\n\n.messenger-avatar-small {\n width: 28px;\n height: 28px;\n font-size: 11px;\n}\n\n.messenger-avatar-medium {\n width: 40px;\n height: 40px;\n font-size: 15px;\n font-weight: 600;\n}\n\n.messenger-avatar-tiny {\n width: 20px;\n height: 20px;\n font-size: 9px;\n border-width: 1.5px;\n margin-left: -6px;\n}\n\n.messenger-avatar-tiny:first-child {\n margin-left: 0;\n}\n\n.messenger-panel-nav {\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-nav {\n display: flex;\n padding: 4px 8px;\n gap: 4px;\n}\n\n.messenger-nav-tab {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 8px 4px;\n background: none;\n border: none;\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.messenger-nav-tab:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-nav-icon {\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-home-icon {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-nav-home-icon > i:first-child {\n position: relative;\n}\n\n.messenger-nav-home-icon > i:last-child {\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n transition: color 0.2s ease, filter 0.2s ease;\n}\n\n.messenger-nav-tab:hover .messenger-nav-home-icon > i:last-child {\n color: #ffd700;\n filter: drop-shadow(0 0 4px #ffd700);\n}\n\n.messenger-nav-label {\n font-size: 11px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-tab.active .messenger-nav-icon {\n color: white;\n}\n\n.messenger-nav-tab.active .messenger-nav-label {\n color: white;\n font-weight: 400;\n}\n\n.messenger-nav-badge {\n position: absolute;\n top: 4px;\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: #ef4444;\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n\n.messenger-home-availability,\n.messenger-chat-availability {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.messenger-availability-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.messenger-availability-online {\n background: #22c55e;\n box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.2);\n}\n\n.messenger-availability-away {\n background: #9ca3af;\n}\n\n.messenger-availability-text {\n opacity: 0.9;\n}\n\n.messenger-typing-indicator {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n margin: 4px 0;\n}\n\n.messenger-typing-dots {\n display: flex;\n align-items: center;\n gap: 4px;\n background: #374151;\n padding: 8px 12px;\n border-radius: 16px;\n}\n\n.messenger-typing-dots span {\n width: 6px;\n height: 6px;\n background: #9ca3af;\n border-radius: 50%;\n animation: messenger-typing-bounce 1.4s infinite ease-in-out;\n}\n\n.messenger-typing-dots span:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.messenger-typing-dots span:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n.messenger-typing-dots span:nth-child(3) {\n animation-delay: 0s;\n}\n\n.messenger-typing-text {\n font-size: 12px;\n color: #9ca3af;\n}\n\n@media (max-width: 480px) {\n .messenger-panel {\n width: 100%;\n height: 100%;\n max-height: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n border-radius: 0;\n }\n\n .messenger-panel-content {\n border-radius: 0;\n }\n\n .messenger-launcher {\n bottom: 16px;\n right: 16px;\n }\n\n .messenger-launcher-bottom-left {\n left: 16px;\n }\n}\n`;","export const messengerViewsStyles = `\n.messenger-home-view {\n background: linear-gradient(180deg, #2c2c2e 0%, #1c1c1e 40%);\n}\n\n.messenger-home-header {\n padding: 20px;\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.2) 0%, transparent 100%);\n}\n\n.messenger-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.messenger-home-logo {\n width: 32px;\n height: 32px;\n}\n\n.messenger-home-logo img {\n width: 100%;\n height: 100%;\n border-radius: 8px;\n object-fit: cover;\n}\n\n.messenger-home-logo-default {\n width: 32px;\n height: 32px;\n background: linear-gradient(135deg, #5856d6, #007aff);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n}\n\n.messenger-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: 12px;\n}\n\n.messenger-home-welcome {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.messenger-home-greeting {\n font-size: 15px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-home-question {\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-body {\n flex: 1;\n padding: 20px;\n overflow-y: auto;\n}\n\n.messenger-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n margin-bottom: 20px;\n}\n\n.messenger-home-message-btn:hover {\n background: #3c3c3e;\n transform: translateX(4px);\n}\n\n.messenger-home-message-btn svg {\n opacity: 0.6;\n}\n\n.messenger-home-continue-btn {\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n position: relative;\n}\n\n.messenger-home-continue-btn > i {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-home-continue-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n text-align: left;\n}\n\n.messenger-home-continue-label {\n font-size: 14px;\n font-weight: 600;\n}\n\n.messenger-home-continue-preview {\n font-size: 12px;\n opacity: 0.6;\n font-weight: 400;\n}\n\n.messenger-home-featured {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 20px;\n}\n\n.messenger-home-featured-image {\n width: 100%;\n height: 120px;\n object-fit: cover;\n}\n\n.messenger-home-featured-content {\n padding: 16px;\n}\n\n.messenger-home-featured-content h3 {\n margin: 0 0 8px;\n font-size: 16px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-featured-content p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.messenger-home-changelog-section {\n margin-top: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-home-changelog-card {\n background: #2c2c2e;\n border-radius: 16px;\n overflow: hidden;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-home-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n border-radius: 12px;\n margin: 12px 12px 0 12px;\n padding-bottom: 12px;\n width: calc(100% - 24px);\n}\n\n.messenger-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 12px;\n}\n\n.messenger-home-changelog-cover-text {\n position: absolute;\n bottom: 12px;\n left: 12px;\n right: 12px;\n color: #ffffff;\n font-size: 14px;\n font-weight: 600;\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-content {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-home-changelog-card-title {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-desc {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n.messenger-conversations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-conversations-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 4px 12px 12px 12px;\n}\n\n.messenger-conversations-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-conversations-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-conversations-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-conversation-item {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 10px 16px;\n border-radius: 12px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.messenger-conversation-item:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-conversation-avatars {\n flex-shrink: 0;\n padding-top: 2px;\n}\n\n.messenger-conversation-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-conversation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 4px;\n gap: 12px;\n}\n\n.messenger-conversation-title {\n font-size: 15px;\n font-weight: 400;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-conversation-time {\n font-size: 13px;\n color: rgba(255, 255, 255, 0.5);\n flex-shrink: 0;\n}\n\n.messenger-conversation-preview {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.messenger-unread-dot {\n width: 8px;\n height: 8px;\n background: #ef4444;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.messenger-conversation-message {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.4;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-title {\n font-weight: 400;\n color: #ffffff;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-message {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.messenger-conversations-footer {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-new-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-new-message-btn:hover {\n background: #3c3c3e;\n}\n\n.messenger-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n.messenger-new-message-btn svg {\n opacity: 0.6;\n}\n\n.messenger-chat-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-chat-header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.messenger-chat-title {\n font-size: 16px;\n font-weight: 500;\n color: white;\n}\n\n.messenger-chat-view {\n position: relative;\n overflow: visible;\n}\n\n.messenger-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-chat-empty {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-chat-empty-avatars {\n margin-bottom: 16px;\n}\n\n.messenger-chat-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-chat-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n max-width: 240px;\n}\n\n.messenger-message {\n display: flex;\n gap: 8px;\n max-width: 85%;\n}\n\n.messenger-message-own {\n align-self: flex-end;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.messenger-message-received {\n align-self: flex-start;\n}\n\n.messenger-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-message-sender {\n font-size: 12px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 4px;\n margin-left: 12px;\n}\n\n.messenger-message-bubble {\n padding: 12px 16px;\n border-radius: 18px;\n word-wrap: break-word;\n}\n\n.messenger-message-own .messenger-message-bubble {\n background: rgb(29, 78, 216);\n color: white;\n border-bottom-right-radius: 4px;\n}\n\n.messenger-message-received .messenger-message-bubble {\n background: #2c2c2e;\n color: white;\n border-bottom-left-radius: 4px;\n}\n\n.messenger-message-content {\n font-size: 15px;\n line-height: 1.4;\n}\n\n.messenger-message-time {\n font-size: 11px;\n color: rgba(255, 255, 255, 0.4);\n margin-top: 4px;\n padding: 0 4px;\n}\n\n.messenger-message-avatar {\n flex-shrink: 0;\n margin-top: auto;\n}\n\n.messenger-closed-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px 16px;\n margin: 16px;\n background: rgba(52, 199, 89, 0.12);\n color: #34c759;\n border-radius: 12px;\n font-size: 13px;\n font-weight: 500;\n}\n\n.messenger-chat-compose {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-compose-input-wrapper {\n flex: 1;\n background: #2c2c2e;\n border-radius: 10px;\n padding: 8px 16px;\n}\n\n.messenger-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 15px;\n line-height: 1.4;\n resize: none;\n max-height: 120px;\n font-family: inherit;\n}\n\n.messenger-compose-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-compose-send {\n width: 40px;\n height: 40px;\n background: #007aff;\n border: none;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.messenger-compose-send:hover:not(:disabled) {\n background: #0066d6;\n transform: scale(1.05);\n}\n\n.messenger-compose-send:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.3);\n cursor: not-allowed;\n}\n\n.messenger-compose-attach {\n width: 40px;\n height: 40px;\n background: transparent;\n border: none;\n border-radius: 50%;\n color: rgba(255, 255, 255, 0.5);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.messenger-compose-attach:hover:not(:disabled) {\n color: rgba(255, 255, 255, 0.85);\n background: rgba(255, 255, 255, 0.08);\n}\n\n.messenger-compose-attach:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n`;","export const messengerHelpStyles = `\n\n.messenger-help-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n position: relative;\n}\n\n.messenger-help-header h2 {\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-header .messenger-close-btn {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-help-search {\n padding: 0 16px 16px;\n}\n\n.messenger-help-search-wrapper {\n display: flex;\n align-items: center;\n background: #2c2c2e;\n border-radius: 12px;\n padding: 14px 16px;\n position: relative;\n}\n\n.messenger-help-search-icon {\n position: absolute;\n right: 16px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-search-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 16px;\n font-family: inherit;\n padding-right: 32px;\n}\n\n.messenger-help-search-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-help-collections-header {\n font-size: 17px;\n font-weight: 600;\n color: white;\n padding: 12px 16px 8px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collections {\n padding: 0;\n}\n\n.messenger-help-collection {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collection:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-help-collection-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-help-collection-title {\n margin: 0 0 2px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-collection-desc {\n margin: 0 0 2px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.3;\n}\n\n.messenger-help-collection-count {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-collection-arrow {\n color: rgba(255, 255, 255, 0.3);\n flex-shrink: 0;\n margin-left: 12px;\n}\n\n.messenger-help-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-help-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-help-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n\n.messenger-changelog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-latest {\n font-size: 12px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.5);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.messenger-changelog-team {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.messenger-changelog-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n.messenger-changelog-card {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 12px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-changelog-cover {\n height: 120px;\n overflow: hidden;\n}\n\n.messenger-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.messenger-changelog-content {\n padding: 16px;\n}\n\n.messenger-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.messenger-changelog-tag {\n font-size: 11px;\n font-weight: 600;\n color: white;\n background: rgba(88, 86, 214, 0.3);\n padding: 4px 10px;\n border-radius: 12px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.messenger-changelog-title {\n margin: 0 0 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n line-height: 1.3;\n}\n\n.messenger-changelog-description {\n margin: 0 0 12px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n}\n\n.messenger-changelog-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.messenger-changelog-date {\n font-size: 12px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-changelog-arrow {\n color: rgba(255, 255, 255, 0.3);\n}\n\n.messenger-changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-changelog-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-changelog-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n`;","export const messengerFeaturesStyles = `\n\n.messenger-compose-attachments-preview {\n display: none;\n flex-wrap: wrap;\n gap: 8px;\n padding: 8px 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-attachment-preview {\n position: relative;\n width: 56px;\n height: 56px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid rgba(255, 255, 255, 0.15);\n}\n\n.messenger-attachment-thumb {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.messenger-attachment-file-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n background: #2c2c2e;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-attachment-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 18px;\n height: 18px;\n background: rgba(0, 0, 0, 0.7);\n border: none;\n border-radius: 50%;\n color: white;\n font-size: 12px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: background 0.15s ease;\n}\n\n.messenger-attachment-remove:hover {\n background: rgba(255, 59, 48, 0.85);\n}\n\n\n.messenger-message-image {\n max-width: 220px;\n max-height: 200px;\n width: auto;\n height: auto;\n border-radius: 8px;\n margin-top: 4px;\n cursor: pointer;\n object-fit: contain;\n display: block;\n}\n\n.messenger-message-file {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n margin-top: 4px;\n padding: 8px 12px;\n border-radius: 8px;\n background: #2c2c2e;\n color: #60a5fa;\n text-decoration: none;\n font-size: 13px;\n transition: background 0.15s ease;\n max-width: 100%;\n word-break: break-all;\n cursor: pointer;\n}\n\n.messenger-message-file:hover {\n background: #3c3c3e;\n}\n\n.messenger-file-download-icon {\n margin-left: auto;\n opacity: 0.5;\n flex-shrink: 0;\n}\n\n.messenger-message-file:hover .messenger-file-download-icon {\n opacity: 1;\n}\n\n.messenger-prechat-view {\n background: transparent;\n position: relative;\n}\n\n.messenger-prechat-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(2px);\n display: flex;\n align-items: flex-end;\n padding: 16px;\n animation: messenger-fade-in 0.2s ease;\n}\n\n.messenger-prechat-card {\n background: #1c1c1e;\n border-radius: 16px;\n padding: 20px;\n width: 100%;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);\n animation: messenger-slide-up 0.25s ease;\n}\n\n.messenger-prechat-card h4 {\n margin: 0 0 14px;\n font-size: 15px;\n font-weight: 600;\n color: white;\n text-align: center;\n}\n\n.messenger-prechat-form {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.messenger-prechat-fields {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.messenger-prechat-input {\n width: 100%;\n padding: 11px 14px;\n background: #2c2c2e;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 10px;\n color: white;\n font-size: 14px;\n font-family: inherit;\n outline: none;\n transition: border-color 0.2s ease;\n}\n\n.messenger-prechat-input:focus {\n border-color: #007aff;\n}\n\n.messenger-prechat-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-prechat-error {\n font-size: 12px;\n color: #ef4444;\n display: none;\n text-align: center;\n}\n\n.messenger-prechat-actions {\n display: flex;\n gap: 10px;\n margin-top: 4px;\n}\n\n.messenger-prechat-skip {\n flex: 1;\n padding: 11px 14px;\n background: transparent;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 20px;\n color: rgba(255, 255, 255, 0.7);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-prechat-skip:hover {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.3);\n}\n\n.messenger-prechat-submit {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 11px 14px;\n background: #007aff;\n border: none;\n border-radius: 20px;\n color: white;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-prechat-submit:hover:not(:disabled) {\n background: #0066d6;\n}\n\n.messenger-prechat-submit:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.4);\n cursor: not-allowed;\n}\n\n.messenger-prechat-submit-loading {\n display: inline-flex;\n align-items: center;\n animation: messenger-spin 1s linear infinite;\n}\n\n.messenger-email-overlay {\n position: absolute;\n bottom: -56px;\n left: 0;\n right: 0;\n top: 0;\n display: flex;\n align-items: flex-end;\n z-index: 20;\n background: rgba(0, 0, 0, 0.08);\n pointer-events: auto;\n}\n\n.messenger-email-card {\n width: 100%;\n background: #ffffff;\n border-radius: 0;\n padding: 16px 16px 72px;\n box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.08);\n animation: messenger-slide-up 0.25s ease;\n}\n\n.messenger-email-card h4 {\n margin: 0 0 2px;\n font-size: 13px;\n font-weight: 600;\n color: #1d1d1f;\n text-align: center;\n}\n\n.messenger-email-card p {\n margin: 0 0 10px;\n font-size: 11px;\n color: #6b7280;\n text-align: center;\n}\n\n.messenger-email-name,\n.messenger-email-input {\n width: 100%;\n padding: 8px 10px;\n background: #f3f4f6;\n border: 1px solid transparent;\n border-radius: 8px;\n color: #1d1d1f;\n font-size: 12px;\n font-family: inherit;\n outline: none;\n margin-bottom: 6px;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n\n.messenger-email-name:focus,\n.messenger-email-input:focus {\n border-color: #007aff;\n box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.12);\n background: #ffffff;\n}\n\n.messenger-email-name::placeholder,\n.messenger-email-input::placeholder {\n color: #9ca3af;\n}\n\n.messenger-email-actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n.messenger-email-submit {\n flex: 1.2;\n padding: 7px 12px;\n background: #007aff;\n border: none;\n border-radius: 8px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-email-submit:hover:not(:disabled) {\n background: #0066d6;\n}\n\n.messenger-email-submit:disabled {\n background: #d1d5db;\n color: #9ca3af;\n cursor: not-allowed;\n}\n\n.messenger-email-skip {\n flex: 0.8;\n padding: 7px 12px;\n background: #ffffff;\n border: 1px solid #e5e5e7;\n border-radius: 8px;\n color: #4b5563;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-email-skip:hover {\n background: #f9fafb;\n border-color: #d1d5db;\n}\n`;","export const messengerThemesStyles = `\n\n/* Panel */\n.theme-light .messenger-panel-content {\n background: #ffffff;\n}\n\n/* Close/Back buttons */\n.theme-light .messenger-close-btn,\n.theme-light .messenger-back-btn {\n color: #86868b;\n}\n\n.theme-light .messenger-close-btn:hover,\n.theme-light .messenger-back-btn:hover {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n/* Avatar */\n.theme-light .messenger-avatar {\n border-color: #ffffff;\n}\n\n/* Home View */\n.theme-light .messenger-home-view {\n background: linear-gradient(180deg, #f5f5f7 0%, #ffffff 40%);\n}\n\n.theme-light .messenger-home-header {\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.1) 0%, transparent 100%);\n}\n\n.theme-light .messenger-home-greeting {\n color: #86868b;\n}\n\n.theme-light .messenger-home-question {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-message-btn svg,\n.theme-light .messenger-home-message-btn i {\n color: #86868b;\n}\n\n.theme-light .messenger-home-featured {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-home-featured-content h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-featured-content p {\n color: #86868b;\n}\n\n.theme-light .messenger-home-changelog-card {\n background: #f5f5f7;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card-content {\n border-top-color: #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-changelog-card-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-changelog-card-desc {\n color: #6e6e73;\n}\n\n/* Conversations View */\n.theme-light .messenger-conversations-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-header,\n.theme-light .messenger-help-header,\n.theme-light .messenger-changelog-header,\n.theme-light .messenger-chat-header {\n background: #ffffff;\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-conversations-header h2,\n.theme-light .messenger-help-header h2,\n.theme-light .messenger-changelog-header h2 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-footer {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-conversations-empty-icon,\n.theme-light .messenger-chat-empty-avatars,\n.theme-light .messenger-help-empty-icon,\n.theme-light .messenger-changelog-empty-icon {\n color: #c7c7cc;\n}\n\n.theme-light .messenger-conversations-empty h3,\n.theme-light .messenger-chat-empty h3,\n.theme-light .messenger-help-empty h3,\n.theme-light .messenger-changelog-empty h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-empty p,\n.theme-light .messenger-chat-empty p,\n.theme-light .messenger-help-empty p,\n.theme-light .messenger-changelog-empty p {\n color: #86868b;\n}\n\n.theme-light .messenger-conversation-item:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-conversation-title {\n color: #1d1d1f !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-title {\n color: #1d1d1f !important;\n font-weight: 400;\n}\n\n.theme-light .messenger-conversation-time {\n color: #86868b !important;\n}\n\n.theme-light .messenger-conversation-message {\n color: #6e6e73 !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-message {\n color: #3a3a3c !important;\n}\n\n.theme-light .messenger-new-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-new-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-new-message-btn svg,\n.theme-light .messenger-new-message-btn i {\n color: #86868b;\n}\n\n/* Chat View */\n.theme-light .messenger-chat-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-header {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-title,\n.theme-light .messenger-help-article-title,\n.theme-light .messenger-changelog-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-article-desc,\n.theme-light .messenger-changelog-description {\n color: #86868b;\n}\n\n.theme-light .messenger-chat-messages {\n background: #ffffff;\n}\n\n.theme-light .messenger-message-sender {\n color: #86868b;\n}\n\n.theme-light .messenger-message-received .messenger-message-bubble {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-message-own .messenger-message-bubble {\n background: rgb(29, 78, 216);\n color: #ffffff;\n}\n\n.theme-light .messenger-message-time {\n color: #86868b;\n}\n\n.theme-light .messenger-closed-banner {\n background: rgba(52, 199, 89, 0.1);\n color: #22883a;\n}\n\n.theme-light .messenger-chat-compose {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-compose-input-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-compose-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-compose-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-compose-send:disabled {\n background: #e5e5e7;\n color: #c7c7cc;\n}\n\n.theme-light .messenger-compose-attach {\n color: #9ca3af;\n}\n\n.theme-light .messenger-compose-attach:hover:not(:disabled) {\n color: #374151;\n background: #f3f4f6;\n}\n\n/* Help View */\n.theme-light .messenger-help-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-help-search-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-help-search-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-search-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collections-header {\n color: #1d1d1f;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection {\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-help-collection-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-collection-desc {\n color: #6e6e73;\n}\n\n.theme-light .messenger-help-collection-count {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collection-arrow {\n color: #c7c7cc;\n}\n\n/* Changelog View */\n.theme-light .messenger-changelog-subheader {\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-changelog-latest {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-team {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-card {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-changelog-tag {\n background: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n.theme-light .messenger-changelog-date {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-arrow {\n color: #c7c7cc;\n}\n\n/* Navigation */\n.theme-light .messenger-panel-nav {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-nav-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-label {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-tab:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.theme-light .messenger-nav-tab.active .messenger-nav-icon,\n.theme-light .messenger-nav-tab.active .messenger-nav-label {\n color: #007aff;\n}\n\n/* Availability */\n.theme-light .messenger-home-availability,\n.theme-light .messenger-chat-availability {\n color: #6b7280;\n}\n\n/* Typing Indicator */\n.theme-light .messenger-typing-dots {\n background: #e5e7eb;\n}\n\n/* Attachments */\n.theme-light .messenger-compose-attachments-preview {\n background: #ffffff;\n border-top-color: #e5e7eb;\n}\n\n.theme-light .messenger-attachment-preview {\n border-color: #e5e7eb;\n}\n\n.theme-light .messenger-attachment-file-icon {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n.theme-light .messenger-message-file {\n background: #f3f4f6;\n color: #2563eb;\n}\n\n.theme-light .messenger-message-file:hover {\n background: #e5e7eb;\n}\n\n/* Pre-Chat Form */\n.theme-light .messenger-prechat-overlay {\n background: rgba(255, 255, 255, 0.6);\n}\n\n.theme-light .messenger-prechat-card {\n background: #ffffff;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n}\n\n.theme-light .messenger-prechat-card h4 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-prechat-input {\n background: #f5f5f7;\n border-color: #e5e5e7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-prechat-input:focus {\n border-color: #007aff;\n background: #ffffff;\n}\n\n.theme-light .messenger-prechat-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-prechat-skip {\n border-color: #e5e5e7;\n color: #6e6e73;\n}\n\n.theme-light .messenger-prechat-skip:hover {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-prechat-submit:disabled {\n background: #e5e5e7;\n color: #c7c7cc;\n}\n\n/* Email Collection */\n.theme-dark .messenger-email-overlay {\n background: rgba(0, 0, 0, 0.3);\n}\n\n.theme-dark .messenger-email-card {\n background: #1c1c1e;\n}\n\n.theme-dark .messenger-email-card h4 {\n color: white;\n}\n\n.theme-dark .messenger-email-card p {\n color: rgba(255, 255, 255, 0.6);\n}\n\n.theme-dark .messenger-email-name,\n.theme-dark .messenger-email-input {\n background: #2c2c2e;\n border-color: transparent;\n color: white;\n}\n\n.theme-dark .messenger-email-name:focus,\n.theme-dark .messenger-email-input:focus {\n border-color: #007aff;\n box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.25);\n background: #1c1c1e;\n}\n\n.theme-dark .messenger-email-name::placeholder,\n.theme-dark .messenger-email-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.theme-dark .messenger-email-submit:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.theme-dark .messenger-email-skip {\n background: transparent;\n border-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n}\n\n.theme-dark .messenger-email-skip:hover {\n background: rgba(255, 255, 255, 0.05);\n border-color: rgba(255, 255, 255, 0.25);\n}\n`;","import { baseStyles } from './base.js';\nimport { changelogStyles } from './changelog.js';\nimport { feedbackStyles } from './feedback.js';\nimport { messengerCoreStyles } from './messenger-core.js';\nimport { messengerViewsStyles } from './messenger-views.js';\nimport { messengerHelpStyles } from './messenger-help.js';\nimport { messengerFeaturesStyles } from './messenger-features.js';\nimport { messengerThemesStyles } from './messenger-themes.js';\n\nexport const CSS_STYLES = \n baseStyles + \n feedbackStyles + \n changelogStyles +\n messengerCoreStyles +\n messengerViewsStyles +\n messengerHelpStyles +\n messengerFeaturesStyles +\n messengerThemesStyles;\n\nexport { \n baseStyles, \n changelogStyles, \n feedbackStyles,\n messengerCoreStyles,\n messengerViewsStyles,\n messengerHelpStyles,\n messengerFeaturesStyles,\n messengerThemesStyles\n};","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { FeedbackSDK } from './core/FeedbackSDK.js';\nimport { CSS_STYLES } from './styles/styles.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { ChangelogWidget } from './widgets/ChangelogWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { MessengerWidget } from './widgets/MessengerWidget.js';\nimport { SurveyWidget } from './widgets/SurveyWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\nfunction injectStyles() {\n\tif (\n\t\ttypeof document !== 'undefined' &&\n\t\t!document.querySelector('#feedback-sdk-styles')\n\t) {\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'feedback-sdk-styles';\n\t\tstyle.textContent = CSS_STYLES;\n\t\tdocument.head.appendChild(style);\n\t}\n}\n\nfunction autoInit() {\n\tif (typeof window !== 'undefined' && window.FeedbackSDKConfig) {\n\t\tinjectStyles();\n\n\t\tconst config = { ...window.FeedbackSDKConfig };\n\t\tconst sdk = new FeedbackSDK(config);\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then((initData) => {\n\t\t\t\twindow.FeedbackSDK.instance = sdk;\n\n\t\t\t\tif (window.FeedbackSDKConfig.autoCreate) {\n\t\t\t\t\tconst widgets = Array.isArray(window.FeedbackSDKConfig.autoCreate)\n\t\t\t\t\t\t? window.FeedbackSDKConfig.autoCreate\n\t\t\t\t\t\t: [window.FeedbackSDKConfig.autoCreate];\n\n\t\t\t\t\twidgets.forEach((widgetConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst widget = sdk.createWidget(\n\t\t\t\t\t\t\t\twidgetConfig.type || 'button',\n\t\t\t\t\t\t\t\twidgetConfig\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\twidget.mount(widgetConfig.container);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[FeedbackSDK] Failed to create widget:', error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKReady', {\n\t\t\t\t\t\tdetail: { sdk, config, initData },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('[FeedbackSDK] Auto-initialization failed:', error);\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKError', {\n\t\t\t\t\t\tdetail: { error, config, phase: 'initialization' },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\nfunction handleDOMReady() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.readyState === 'loading') {\n\t\t\tdocument.addEventListener('DOMContentLoaded', autoInit);\n\t\t} else {\n\t\t\tsetTimeout(autoInit, 0);\n\t\t}\n\t}\n}\n\nconst FeedbackSDKExport = {\n\tFeedbackSDK,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tTabWidget,\n\tInlineWidget,\n\tSurveyWidget,\n\tMessengerWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n\tcreate: (config) => {\n\t\tinjectStyles();\n\t\treturn new FeedbackSDK(config);\n\t},\n\tversion: '1.0.0',\n\tinstance: null,\n\n\tisReady: () => Boolean(FeedbackSDKExport.instance),\n\tgetInstance: () => FeedbackSDKExport.instance,\n\n\tsetUserContext: (userContext) => {\n\t\tif (FeedbackSDKExport.instance) {\n\t\t\tFeedbackSDKExport.instance.setUserContext(userContext);\n\t\t} else {\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.FeedbackSDKUserContext = userContext;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitWithUser: async (config, userContext) => {\n\t\tinjectStyles();\n\t\tconst fullConfig = { ...config, userContext };\n\t\tconst sdk = new FeedbackSDK(fullConfig);\n\t\tawait sdk.init();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.FeedbackSDK.instance = sdk;\n\t\t}\n\n\t\treturn sdk;\n\t},\n\n\tonReady: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\tif (FeedbackSDKExport.isReady()) {\n\t\t\t\tcallback(FeedbackSDKExport.instance);\n\t\t\t} else {\n\t\t\t\twindow.addEventListener(\n\t\t\t\t\t'FeedbackSDKReady',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tcallback(event.detail.sdk, event.detail);\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\tonError: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener('FeedbackSDKError', (event) => {\n\t\t\t\tcallback(event.detail.error, event.detail);\n\t\t\t});\n\t\t}\n\t},\n\n\textractUserContext: FeedbackSDK.extractUserContextFromAuth,\n};\n\nif (typeof window !== 'undefined') {\n\twindow.FeedbackSDK = FeedbackSDKExport;\n\thandleDOMReady();\n}\n\nexport default FeedbackSDKExport;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tChangelogWidget,\n\tConfigError,\n\tEventBus,\n\tFeedbackSDK,\n\thelpers,\n\tInlineWidget,\n\tMessengerWidget,\n\tSDKError,\n\tSurveyWidget,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};"],"names":["MOCK_CONVERSATIONS","MOCK_MESSAGES","delay","APIError"],"mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCpkBM,MAAM,cAAc,GAAG;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCvQM,MAAM,mBAAmB,GAAG;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCrYM,MAAM,oBAAoB,GAAG;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CCzmBM,MAAM,mBAAmB,GAAG;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCzSM,MAAM,uBAAuB,GAAG;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CC1VM,MAAM,qBAAqB,GAAG;;AAErC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AA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"}
|