@product7/feedback-sdk 1.4.5 → 1.4.7
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.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/core/WebSocketService.js","../src/styles/messengerCustomStyles.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/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/components.js","../src/styles/design-tokens.js","../src/styles/feedback.js","../src/styles/messenger-components.js","../src/styles/messenger-core.js","../src/styles/messenger-features.js","../src/styles/messenger-views.js","../src/styles/messenger.js","../src/styles/survey.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?',\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\tattachments: data.attachments || [],\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\tattachments: data.attachments || [],\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\tattachments: data.attachments || [],\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({\n\t\t\t\t\tcontent: data.content,\n\t\t\t\t\tattachments: data.attachments || [],\n\t\t\t\t}),\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(\n\t\t\t\t'[APIService] startConversation: session invalid, calling init...'\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tawait this.init();\n\t\t\t\tconsole.log(\n\t\t\t\t\t'[APIService] startConversation: init result, token:',\n\t\t\t\t\tthis.sessionToken ? 'set' : 'null'\n\t\t\t\t);\n\t\t\t} catch (initError) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'[APIService] startConversation: init failed:',\n\t\t\t\t\tinitError.message\n\t\t\t\t);\n\t\t\t\tthrow initError;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.error(\n\t\t\t\t'[APIService] startConversation: no session token after init'\n\t\t\t);\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tconsole.log(\n\t\t\t'[APIService] startConversation: sending to',\n\t\t\t`${this.baseURL}/widget/messenger/conversations`,\n\t\t\t'mock:',\n\t\t\tthis.mock\n\t\t);\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(\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.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t}\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\tasync getChangelogs(options) {\n\t\treturn this.changelog.getChangelogs(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 =\n\t\t\t\tsessionData.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}\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}\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) => e.stopPropagation());\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') this.closeModal();\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) container.parentNode.removeChild(container);\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) => e.stopPropagation());\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') this.closeSidebar();\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) return;\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\tthis._handleViewUpdate(this.changelogs[index]);\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\t\tconst description = this._truncateDescription(\n\t\t\tchangelog.excerpt || changelog.description,\n\t\t\t120\n\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${description ? `<p class=\"changelog-list-item-description\">${description}</p>` : ''}\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) return;\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\t\tconst description = this._truncateDescription(\n\t\t\tchangelog.excerpt || changelog.description,\n\t\t\t160\n\t\t);\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${description ? `<p class=\"changelog-popup-description\">${description}</p>` : ''}\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\tthis.currentIndex = parseInt(e.target.dataset.index, 10);\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\tconst changelogBase = (this.options.changelogBaseUrl || '').replace(\n\t\t\t/\\/$/,\n\t\t\t''\n\t\t);\n\t\tconst url =\n\t\t\tchangelog.url ||\n\t\t\t(changelog.slug && changelogBase\n\t\t\t\t? `${changelogBase}/${changelog.slug}`\n\t\t\t\t: null) ||\n\t\t\tchangelogBase ||\n\t\t\tnull;\n\n\t\tif (url) {\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_stripHtml(html) {\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_truncateDescription(html, maxLength = 120) {\n\t\tif (!html) return '';\n\t\tconst plain = this._stripHtml(html);\n\t\tif (plain.length <= maxLength) return plain;\n\t\treturn plain.substring(0, maxLength).trimEnd() + '...';\n\t}\n\n\t_formatDate(dateString) {\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t});\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) badge.style.display = 'none';\n\t}\n\n\tshowBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) badge.style.display = 'block';\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';\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","/**\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","export function applyMessengerCustomStyles(options = {}) {\n\tconst {\n\t\tprimaryColor = '#155EEF',\n\t\ttextColor = '#1d1d1f',\n\t\tbackgroundColor = '#ffffff',\n\t\ttheme = 'light',\n\t} = options;\n\n\tlet styleElement = document.getElementById(\n\t\t'product7-messenger-custom-styles'\n\t);\n\n\tif (!styleElement) {\n\t\tstyleElement = document.createElement('style');\n\t\tstyleElement.id = 'product7-messenger-custom-styles';\n\t\tdocument.head.appendChild(styleElement);\n\t}\n\n\tconst adjustColor = (hex, percent, alpha = 1) => {\n\t\tconst num = parseInt(hex.replace('#', ''), 16);\n\t\tconst r = Math.max(0, Math.min(255, (num >> 16) + percent));\n\t\tconst g = Math.max(0, Math.min(255, ((num >> 8) & 0x00ff) + percent));\n\t\tconst b = Math.max(0, Math.min(255, (num & 0x0000ff) + percent));\n\n\t\tif (alpha < 1) {\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\treturn '#' + ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0');\n\t};\n\n\tstyleElement.textContent = `\n\t\t#product7-messenger-widget {\n\t\t\t--color-primary: ${primaryColor} !important;\n\t\t\t--color-primary-hover: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.messenger-launcher-btn {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t}\n\n\t\t.messenger-launcher-btn:hover {\n\t\t\tbox-shadow: 0 8px 24px ${adjustColor(primaryColor, 0, 0.3)} !important;\n\t\t}\n\n\t\t.sdk-btn-primary {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t\tborder-color: ${primaryColor} !important;\n\t\t}\n\n\t\t.sdk-btn-primary:hover {\n\t\t\tbackground: ${adjustColor(primaryColor, -10)} !important;\n\t\t\tborder-color: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.messenger-compose-send {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t}\n\n\t\t.messenger-compose-send:hover:not(:disabled) {\n\t\t\tbackground: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.messenger-nav-tab.active .messenger-nav-icon,\n\t\t.messenger-nav-tab.active .messenger-nav-label {\n\t\t\tcolor: ${primaryColor} !important;\n\t\t}\n\n\t\t.messenger-home-view::before {\n\t\t\tbackground: radial-gradient(circle, ${adjustColor(primaryColor, 0, 0.08)} 0%, transparent 70%) !important;\n\t\t}\n\n\t\t${\n\t\t\tbackgroundColor !== '#ffffff'\n\t\t\t\t? `\n\t\t.messenger-panel-content {\n\t\t\tbackground: ${backgroundColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\n\t\t${\n\t\t\ttextColor !== '#1d1d1f'\n\t\t\t\t? `\n\t\t.messenger-panel-content,\n\t\t.messenger-view {\n\t\t\tcolor: ${textColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\t`;\n\n\tconsole.log('✅ Custom messenger styles applied:', { primaryColor, theme });\n}\n\nexport function removeMessengerCustomStyles() {\n\tconst styleElement = document.getElementById(\n\t\t'product7-messenger-custom-styles'\n\t);\n\tif (styleElement && styleElement.parentNode) {\n\t\tstyleElement.parentNode.removeChild(styleElement);\n\t}\n}\n","export class MessengerState {\n\tconstructor(options = {}) {\n\t\tthis.currentView = 'home';\n\t\tthis.isOpen = false;\n\t\tthis.unreadCount = 0;\n\t\tthis.activeConversationId = null;\n\n\t\tthis.conversations = [];\n\t\tthis.messages = {};\n\n\t\tthis.helpArticles = [];\n\t\tthis.helpSearchQuery = '';\n\n\t\tthis.homeChangelogItems = [];\n\t\tthis.changelogItems = [];\n\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\tthis.userContext = options.userContext || null;\n\t\tthis.isIdentified = false;\n\t\tthis.pendingMessage = null;\n\n\t\tthis.enableHelp = options.enableHelp !== false;\n\t\tthis.enableChangelog = options.enableChangelog !== false;\n\n\t\tthis.agentsOnline = false;\n\t\tthis.onlineCount = 0;\n\t\tthis.responseTime = 'Usually replies within a few minutes';\n\n\t\tthis.typingUsers = {};\n\n\t\tthis.isLoading = false;\n\t\tthis.isLoadingMessages = false;\n\n\t\tthis.urls = options.urls || {\n\t\t\tfeedback: null,\n\t\t\tchangelog: null,\n\t\t\thelp: null,\n\t\t\troadmap: null,\n\t\t};\n\n\t\tthis._listeners = new Set();\n\t}\n\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\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\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\tsetActiveConversation(conversationId) {\n\t\tconst previousConversationId = this.activeConversationId;\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', {\n\t\t\tconversationId,\n\t\t\tpreviousConversationId,\n\t\t});\n\t}\n\n\tsetIdentified(isIdentified, userContext = null) {\n\t\tthis.isIdentified = isIdentified;\n\t\tif (userContext) {\n\t\t\tthis.userContext = { ...this.userContext, ...userContext };\n\t\t}\n\t\tthis._notify('identificationChange', { isIdentified, userContext });\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\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\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\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\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_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\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\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\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\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 <button class=\"messenger-launcher-btn\" aria-label=\"Open messenger\">\n <span class=\"messenger-launcher-icon messenger-launcher-icon-chat\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </span>\n <span class=\"messenger-launcher-icon messenger-launcher-icon-close\" style=\"display: none;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </span>\n ${badgeHtml}\n </button>\n `;\n\n\t\tconst btn = this.element.querySelector('.messenger-launcher-btn');\n\t\tif (btn && this.options.primaryColor) {\n\t\t\tbtn.style.setProperty(\n\t\t\t\t'background',\n\t\t\t\tthis.options.primaryColor,\n\t\t\t\t'important'\n\t\t\t);\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","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-panel-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 = `\n\t\t\t<div class=\"messenger-nav-tabs\">\n\t\t\t\t${tabsHtml}\n\t\t\t</div>\n\t\t\t<div class=\"messenger-nav-footer\">\n\t\t\t\t<a href=\"https://product7.io\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"messenger-powered-by\">\n\t\t\t\t\t<svg width=\"12\" height=\"14\" viewBox=\"0 0 28 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.0615 5.28044C8.5161 4.42949 3.30825 11.1456 5.89967 17.6588C6.9321 20.2538 9.06268 22.2644 11.8777 23.1968C16.2682 24.6507 18.4038 22.3222 19.0483 23.9691C19.4055 24.8894 18.7282 25.3209 17.988 25.4938C10.9146 27.15 5.15304 22.7566 3.5869 17.5531C1.52205 10.6941 5.98684 4.6667 11.3483 3.41065C17.8801 1.88094 24.0325 6.19355 24.3926 12.7175C24.7448 19.0921 18.6217 24.5978 11.927 22.2036C10.8789 21.8285 8.8419 20.6682 8.46823 19.858C8.06026 18.9727 8.80261 18.1725 9.68285 18.3576C10.2223 18.4726 10.3116 18.8706 11.3161 19.5372C14.4549 21.6213 19.1276 20.6132 21.2046 17.0972C23.991 12.3817 21.0481 6.05351 15.06 5.27758L15.0615 5.28044Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.2492 2.19833C11.944 1.71463 8.88819 3.07214 6.91479 4.49682C2.27067 7.85488 0.76169 14.5038 3.49672 19.8731C4.08535 21.0096 4.84379 22.0497 5.7459 22.9576L7.16343 24.2515C7.67214 24.9131 7.27203 25.7176 6.64115 25.9269C5.13502 26.4271 2.0499 21.8172 1.42044 20.5383C0.0872204 17.8297 -0.312889 14.9047 0.242977 11.503C1.66908 2.77063 11.221 -2.51652 19.7197 1.21021C27.7548 4.73331 30.2733 15.4555 23.9351 22.0773C23.3107 22.7296 21.6352 24.4823 20.6278 23.8907C20.0076 23.5263 19.8933 22.6446 20.5192 22.1238C21.0301 21.6986 21.4759 21.435 21.9896 20.9734C23.6665 19.4688 25.2562 16.8752 25.3477 13.5636C25.4427 10.2055 24.1266 7.5848 22.3904 5.74859C20.6392 3.89665 18.6751 2.69919 15.2456 2.19691L15.2492 2.19833Z\" fill=\"#F69F06\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.48332 27.2217C7.93817 26.265 8.89987 25.3776 10.1352 25.8641C15.5653 27.9926 18.3081 25.5269 19.0255 27.0823C19.2655 27.6039 19.0448 28.1619 18.7354 28.3863C17.9895 28.9257 14.82 28.9343 13.9262 28.8714C12.9071 28.8053 11.897 28.6377 10.9111 28.3713C10.0888 28.1348 8.88057 27.9247 8.48189 27.2281L8.48332 27.2217Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.8722 31.0607C15.7765 32.1381 14.579 32.0331 13.5766 31.9545C12.5742 31.8759 11.5203 31.8502 11.601 30.7013C11.6789 29.5882 12.8035 29.7532 13.8274 29.8332C14.4425 29.8811 15.9951 29.681 15.8722 31.0607Z\" fill=\"#21244A\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\tPowered by <strong>Product7</strong>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t`;\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\" viewBox=\"0 0 256 256\">\n\t\t\t<path d=\"M40,216H216V120a8,8,0,0,0-2.34-5.66l-80-80a8,8,0,0,0-11.32,0l-80,80A8,8,0,0,0,40,120Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t</svg>`;\n\t}\n\n\t_getMessagesIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 256 256\">\n\t\t\t<circle cx=\"128\" cy=\"128\" r=\"12\"/>\n\t\t\t<circle cx=\"84\" cy=\"128\" r=\"12\"/>\n\t\t\t<circle cx=\"172\" cy=\"128\" r=\"12\"/>\n\t\t\t<path d=\"M79.93,211.11a96,96,0,1,0-35-35h0L32.42,213.46a8,8,0,0,0,10.12,10.12l37.39-12.47Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t</svg>`;\n\t}\n\n\t_getHelpIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 256 256\">\n\t\t\t<circle cx=\"128\" cy=\"128\" r=\"96\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t<circle cx=\"128\" cy=\"180\" r=\"12\"/>\n\t\t\t<path d=\"M128,144v-8a28,28,0,1,0-28-28\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t</svg>`;\n\t}\n\n\t_getChangelogIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 256 256\">\n\t\t\t<path d=\"M160,80V200.67a8,8,0,0,0,3.56,6.65l11,7.33a8,8,0,0,0,12.2-4.72L200,160\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t<path d=\"M40,200a8,8,0,0,0,13.15,6.12C105.55,162.16,160,160,160,160h40a40,40,0,0,0,0-80H160S105.55,77.84,53.15,33.89A8,8,0,0,0,40,40Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\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","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}\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\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-changelog-header\">\n\t\t\t\t<h2>Latest Updates</h2>\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</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._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._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 (\n\t\t\t\ttype === 'messagesUpdate' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\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 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 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\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<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${\n\t\t\t\t\tisClosed\n\t\t\t\t\t\t? `\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\t\t: ''\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${\n\t\t\t\tisClosed\n\t\t\t\t\t? ''\n\t\t\t\t\t: `\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\t\t\t}\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\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\n\t\t\t.map((att) => {\n\t\t\t\tif (att.type === 'image') {\n\t\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\t}\n\t\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\t})\n\t\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\n\t\t\t? `<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>`\n\t\t\t: '';\n\t\tconst bubbleHtml = contentHtml\n\t\t\t? `<div class=\"messenger-message-bubble\">${contentHtml}</div>`\n\t\t\t: '';\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-sender\">${message.sender?.name || 'Support'}</div>\n\t\t\t\t<div class=\"messenger-message-row\">\n\t\t\t\t\t<div class=\"messenger-message-avatar\">${avatarHtml}</div>\n\t\t\t\t\t<div class=\"messenger-message-wrapper\">\n\t\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</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_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 =\n\t\t\t\t!input.value.trim() && this._pendingAttachments.length === 0;\n\t\t}\n\t}\n\n\t_renderAttachmentPreviews() {\n\t\tconst container = this.element.querySelector(\n\t\t\t'.messenger-compose-attachments-preview'\n\t\t);\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\n\t\t\t.map((att, i) => {\n\t\t\t\tconst isImage = att.type.startsWith('image');\n\t\t\t\tconst thumb = isImage\n\t\t\t\t\t? `<img class=\"messenger-attachment-thumb\" src=\"${att.preview}\" alt=\"${this._escapeHtml(att.file.name)}\" />`\n\t\t\t\t\t: `<div class=\"messenger-attachment-thumb messenger-attachment-file-icon\"><i class=\"ph ph-file\"></i></div>`;\n\t\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\t})\n\t\t\t.join('');\n\n\t\tcontainer\n\t\t\t.querySelectorAll('.messenger-attachment-remove')\n\t\t\t.forEach((btn) => {\n\t\t\t\tbtn.addEventListener('click', (e) => {\n\t\t\t\t\tconst idx = parseInt(e.currentTarget.dataset.index, 10);\n\t\t\t\t\tthis._pendingAttachments.splice(idx, 1);\n\t\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\t\tthis._updateSendButtonState();\n\t\t\t\t});\n\t\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\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\tinput.style.height = 'auto';\n\t\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\t\t\t\tthis._updateSendButtonState();\n\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\tconst attachBtn = this.element.querySelector('.messenger-compose-attach');\n\t\tconst fileInput = this.element.querySelector(\n\t\t\t'.messenger-compose-file-input'\n\t\t);\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\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tmessagesContainer.addEventListener('click', (e) => {\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\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\twindow.open(url, '_blank');\n\t\t}\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\tasync _sendMessage() {\n\t\tif (this._isConversationClosed) return;\n\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\tconst attachmentsToSend = [...this._pendingAttachments];\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\n\t\tif (isNewConversation) {\n\t\t\tif (this.options.onStartConversation) {\n\t\t\t\tthis.options.onStartConversation(content, attachmentsToSend);\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(\n\t\t\t\t\tthis.state.activeConversationId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentsToSend\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\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\tthis.avatarColors = [\n\t\t\t'#155EEF',\n\t\t\t'#8b5cf6',\n\t\t\t'#10b981',\n\t\t\t'#f59e0b',\n\t\t\t'#ef4444',\n\t\t\t'#ec4899',\n\t\t\t'#06b6d4',\n\t\t];\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_getAvatarColor(name) {\n\t\t// Generate consistent color based on name\n\t\tconst charCode = (name || 'S').charCodeAt(0);\n\t\treturn this.avatarColors[charCode % this.avatarColors.length];\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n <div class=\"messenger-empty-state\">\n <div class=\"messenger-empty-state-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </div>\n <h3>No conversations yet</h3>\n <p>Start a new conversation with our team</p>\n </div>\n `;\n\t\t} else {\n\t\t\tconversationsHtml = `\n <div class=\"messenger-conversations-list\">\n ${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n </div>\n `;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n <div class=\"messenger-conversations-header\">\n <h2>Messages</h2>\n <button class=\"sdk-close-btn\" aria-label=\"Close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </button>\n </div>\n\n <div class=\"messenger-conversations-body\">\n ${conversationsHtml}\n </div>\n\n <div class=\"messenger-conversations-footer\">\n <button class=\"messenger-new-message-btn\">\n <span>Send us a message</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" style=\"flex-shrink: 0;\">\n <rect width=\"256\" height=\"256\" fill=\"none\"/>\n <line x1=\"144\" y1=\"128\" x2=\"80\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n <path d=\"M48.49,221.28A8,8,0,0,0,59.93,231l168-96.09a8,8,0,0,0,0-14l-168-95.85a8,8,0,0,0-11.44,9.67L80,128Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n </svg>\n </button>\n </div>\n `;\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\tconst color = this._getAvatarColor('S');\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">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\tconst initial = (p.name || 'S').charAt(0).toUpperCase();\n\t\tconst color = this._getAvatarColor(p.name);\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">${initial}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\tconst color1 = this._getAvatarColor('S');\n\t\t\tconst color2 = this._getAvatarColor('T');\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\" style=\"background-color: ${color1};\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color2};\">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, index) => {\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\tconst initial = avatar.charAt(0).toUpperCase();\n\t\t\t\tconst color = this._getAvatarColor(avatar);\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color};\">${initial}</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}\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\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-help-header\">\n\t\t\t\t<div class=\"messenger-help-header-top\">\n\t\t\t\t\t<h2>Help</h2>\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=\"currentColor\" 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<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclass=\"messenger-help-search-input\"\n\t\t\t\t\tplaceholder=\"Search for help...\"\n\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t/>\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\"></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}\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-scroll\">\n\t\t\t\t<div class=\"messenger-home-header\">\n\t\t\t\t\t<div class=\"messenger-home-header-top\">\n\t\t\t\t\t\t<div class=\"messenger-home-logo\">\n\t\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"messenger-home-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t\t<button class=\"sdk-close-btn\" aria-label=\"Close\">\n\t\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\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\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-home-welcome\">\n\t\t\t\t\t\t<span class=\"messenger-home-greeting\">Hi there 👋</span>\n\t\t\t\t\t\t<span class=\"messenger-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"messenger-home-body\">\n\t\t\t\t\t${this._renderMessageButton()}\n\t\t\t\t\t${this._renderFeaturedCard()}\n\t\t\t\t\t${recentChangelogHtml}\n\t\t\t\t</div>\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\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500'];\n\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-lg\" style=\"background: ${colors[0]};\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-lg\" style=\"background: ${colors[1]};\">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, 4)\n\t\t\t.map((avatar, index) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\" style=\"background: ${colors[index % colors.length]};\">${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\tconst sendIcon = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" style=\"flex-shrink: 0;\">\n\t\t\t\t<rect width=\"256\" height=\"256\" fill=\"none\"/>\n\t\t\t\t<line x1=\"144\" y1=\"128\" x2=\"80\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t\t<path d=\"M48.49,221.28A8,8,0,0,0,59.93,231l168-96.09a8,8,0,0,0,0-14l-168-95.85a8,8,0,0,0-11.44,9.67L80,128Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t</svg>\n\t\t`;\n\n\t\tconst caretIcon = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" style=\"flex-shrink: 0;\">\n\t\t\t\t<rect width=\"256\" height=\"256\" fill=\"none\"/>\n\t\t\t\t<polyline points=\"96 48 176 128 96 208\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t</svg>\n\t\t`;\n\n\t\tif (openConversation) {\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</div>\n\t\t\t\t\t${sendIcon}\n\t\t\t\t</button>\n\t\t\t\t<button class=\"messenger-home-message-btn messenger-feedback-btn\" data-action=\"feedback\">\n\t\t\t\t\t<span class=\"messenger-home-continue-label\">Leave us feedback</span>\n\t\t\t\t\t${caretIcon}\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>Start a conversation</span>\n\t\t\t\t${sendIcon}\n\t\t\t</button>\n\t\t\t<button class=\"messenger-home-message-btn messenger-feedback-btn\" data-action=\"feedback\">\n\t\t\t\t<span>Leave us feedback</span>\n\t\t\t\t${caretIcon}\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\tconst msgBtn = this.element.querySelector(\n\t\t\t'.messenger-home-message-btn:not(.messenger-feedback-btn)'\n\t\t);\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\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\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\tconst feedbackBtn = this.element.querySelector('.messenger-feedback-btn');\n\t\tif (feedbackBtn) {\n\t\t\tfeedbackBtn.addEventListener('click', () => {\n\t\t\t\tconst url = this.state.urls?.feedback;\n\n\t\t\t\tif (this.options.onFeedbackClick) {\n\t\t\t\t\tthis.options.onFeedbackClick();\n\t\t\t\t} else if (url) {\n\t\t\t\t\twindow.open(url, '_blank');\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'[Messenger] No feedback destination configured. Set `feedbackUrl` in MessengerWidget options.'\n\t\t\t\t\t);\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-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst item = this.state.homeChangelogItems.find(\n\t\t\t\t\t\t(i) => i.id === card.dataset.changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (item?.url) {\n\t\t\t\t\t\twindow.open(item.url, '_blank');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t\t}\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","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\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(\n\t\t\t'.messenger-prechat-submit-text'\n\t\t);\n\t\tconst submitLoading = submitBtn.querySelector(\n\t\t\t'.messenger-prechat-submit-loading'\n\t\t);\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\tthis.state.setIdentified(true, { name, email });\n\n\t\t\tthis._isSubmitting = false;\n\n\t\t\tconst pendingMessage = this.state.pendingMessage;\n\t\t\tif (pendingMessage && this.options.onStartConversation) {\n\t\t\t\tthis.state.pendingMessage = null;\n\t\t\t\tthis.state.setView('chat');\n\n\t\t\t\tawait this.options.onStartConversation(\n\t\t\t\t\tpendingMessage.content,\n\t\t\t\t\tpendingMessage.attachments\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[PreChatFormView] Error submitting form:', error);\n\t\t\tthis._showError(\n\t\t\t\t'messenger-email-error',\n\t\t\t\t'Something went wrong. Please try again.'\n\t\t\t);\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","import { WebSocketService } from '../core/WebSocketService.js';\nimport {\n\tapplyMessengerCustomStyles,\n\tremoveMessengerCustomStyles,\n} from '../styles/messengerCustomStyles.js';\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';\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\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\ttextColor: options.textColor || '#1d1d1f',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\tlogoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',\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\tfeaturedContent: options.featuredContent || null,\n\t\t\tfeedbackUrl: options.feedbackUrl || null,\n\t\t\tchangelogUrl: options.changelogUrl || null,\n\t\t\thelpUrl: options.helpUrl || null,\n\t\t\troadmapUrl: options.roadmapUrl || null,\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonFeedbackClick: options.onFeedbackClick || 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\turls: {\n\t\t\t\tfeedback: this.messengerOptions.feedbackUrl,\n\t\t\t\tchangelog: this.messengerOptions.changelogUrl,\n\t\t\t\thelp: this.messengerOptions.helpUrl,\n\t\t\t\troadmap: this.messengerOptions.roadmapUrl,\n\t\t\t},\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\tapplyMessengerCustomStyles({\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t\ttextColor: this.messengerOptions.textColor,\n\t\t\tbackgroundColor: this.messengerOptions.backgroundColor,\n\t\t\ttheme: this.messengerOptions.theme,\n\t\t});\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\tonFeedbackClick: this.messengerOptions.onFeedbackClick,\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\n\tasync _handleStartConversation(messageContent, pendingAttachments) {\n\t\ttry {\n\t\t\tif (!this.messengerState.isIdentified) {\n\t\t\t\tthis.messengerState.pendingMessage = {\n\t\t\t\t\tcontent: messageContent,\n\t\t\t\t\tattachments: pendingAttachments,\n\t\t\t\t};\n\t\t\t\tthis.messengerState.setView('prechat');\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst openConversation = this.messengerState.conversations.find(\n\t\t\t\t(c) => c.status === 'open'\n\t\t\t);\n\n\t\t\tif (openConversation) {\n\t\t\t\tthis.messengerState.setActiveConversation(openConversation.id);\n\t\t\t\tawait this._handleSendMessage(\n\t\t\t\t\topenConversation.id,\n\t\t\t\t\t{ content: messageContent },\n\t\t\t\t\tpendingAttachments\n\t\t\t\t);\n\t\t\t\treturn openConversation;\n\t\t\t}\n\n\t\t\treturn await this.startNewConversation(\n\t\t\t\tmessageContent,\n\t\t\t\t'',\n\t\t\t\tpendingAttachments\n\t\t\t);\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 _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(\n\t\t\t\t\t'[MessengerWidget] Contact identified:',\n\t\t\t\t\tresponse.data.contact_id\n\t\t\t\t);\n\t\t\t\tthis.messengerState.setIdentified(true, {\n\t\t\t\t\tname: contactData.name,\n\t\t\t\t\temail: contactData.email,\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\tmarkAsIdentified(name, email) {\n\t\tthis.messengerState.setIdentified(true, { name, email });\n\t\tconsole.log('[MessengerWidget] Marked as identified:', email);\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, {\n\t\t\tstatus: 'closed',\n\t\t});\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.success && response.data) {\n\t\t\t\tconst collections = response.data.collections || response.data;\n\t\t\t\tconst helpBase = (this.messengerOptions.helpUrl || '').replace(\n\t\t\t\t\t/\\/$/,\n\t\t\t\t\t''\n\t\t\t\t);\n\n\t\t\t\treturn collections.map((collection) => ({\n\t\t\t\t\tid: collection.id,\n\t\t\t\t\ttitle: collection.title,\n\t\t\t\t\tdescription: collection.description || '',\n\t\t\t\t\tarticleCount: collection.article_count || 0,\n\t\t\t\t\turl:\n\t\t\t\t\t\tcollection.url_slug && helpBase\n\t\t\t\t\t\t\t? `${helpBase}/collections/${collection.url_slug}`\n\t\t\t\t\t\t\t: helpBase || null,\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\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\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:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1674027444485-cec3da58eef4?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1666875753105-c63a6f3bdc86?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1762330467475-a565d04e1808?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1523961131990-5ea7c61b2107?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1764773516703-b246ac2ad5ef?w=500&auto=format&fit=crop&q=60',\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\ttry {\n\t\t\tconst response = await this.apiService.getChangelogs({ limit: 20 });\n\n\t\t\tif (response.success && response.data) {\n\t\t\t\tconst changelogs = Array.isArray(response.data) ? response.data : [];\n\t\t\t\tconst changelogBase = (\n\t\t\t\t\tthis.messengerOptions.changelogUrl || ''\n\t\t\t\t).replace(/\\/$/, '');\n\n\t\t\t\tconst mappedItems = changelogs.map((item) => ({\n\t\t\t\t\tid: item.id,\n\t\t\t\t\ttitle: item.title,\n\t\t\t\t\tdescription: item.excerpt || item.description || '',\n\t\t\t\t\ttags: item.labels ? item.labels.map((label) => label.name) : [],\n\t\t\t\t\tcoverImage: item.cover_image || null,\n\t\t\t\t\tpublishedAt: item.published_at,\n\t\t\t\t\turl:\n\t\t\t\t\t\titem.slug && changelogBase\n\t\t\t\t\t\t\t? `${changelogBase}/${item.slug}`\n\t\t\t\t\t\t\t: changelogBase || null,\n\t\t\t\t}));\n\n\t\t\t\treturn {\n\t\t\t\t\thomeItems: mappedItems.slice(0, 3),\n\t\t\t\t\tchangelogItems: mappedItems,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch changelog:', error);\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t}\n\t}\n\n\tasync onMount() {\n\t\tthis.loadInitialData();\n\n\t\tif (this.apiService?.sessionToken) {\n\t\t\tthis._initWebSocket();\n\t\t}\n\n\t\tthis.checkAgentAvailability();\n\n\t\tthis._availabilityInterval = setInterval(() => {\n\t\t\tthis.checkAgentAvailability();\n\t\t}, 60000);\n\t}\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\tremoveMessengerCustomStyles();\n\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}\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}\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}\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`;\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/* ========================================\n CONFETTI\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/* ========================================\n POPUP MODAL\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: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\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/* ========================================\n POPUP ITEM\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-3);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\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: var(--font-size-md);\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: var(--spacing-3) var(--spacing-8);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-white);\n background: var(--color-primary);\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-base);\n font-family: inherit;\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/* ========================================\n POPUP FOOTER / DOTS\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: 8px;\n height: 8px;\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-md);\n transition: all var(--transition-base);\n font-family: inherit;\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/* ========================================\n LIST MODAL\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-2xl);\n overflow: hidden;\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\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: var(--spacing-4) 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 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-md);\n transition: all var(--transition-base);\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/* ========================================\n LIST ITEMS\n ======================================== */\n\n.changelog-list {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-item {\n display: flex;\n align-items: center;\n padding: var(--spacing-3) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n cursor: pointer;\n transition: background var(--transition-base);\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-md);\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-text-tertiary);\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-text-secondary);\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/* ========================================\n RESPONSIVE\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(--radius-3xl);\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: var(--font-size-xl);\n }\n\n .changelog-popup-description {\n font-size: var(--font-size-base);\n }\n\n .changelog-popup-btn {\n padding: var(--spacing-3) var(--spacing-7);\n font-size: var(--font-size-base);\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(--radius-2xl);\n }\n\n .changelog-list-item {\n padding: var(--spacing-3) var(--spacing-4);\n }\n\n .changelog-list-item-image img {\n height: 80px;\n }\n}\n`;\n","export const componentsStyles = `\n.sdk-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n border-radius: var(--radius-md);\n border: none;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-base);\n outline: none;\n}\n\n.sdk-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sdk-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.sdk-btn-primary {\n background: var(--color-primary);\n color: var(--color-white);\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n height: 44px;\n padding: 10px 18px;\n}\n\n.sdk-btn-primary:hover:not(:disabled) {\n background: var(--color-primary-hover);\n}\n\n.sdk-btn-primary:active:not(:disabled) {\n background: var(--color-primary-active);\n}\n\n.sdk-btn-secondary {\n background: transparent;\n color: var(--color-neutral-600);\n border: 1px solid var(--color-border);\n height: 44px;\n padding: 10px 18px;\n}\n\n.sdk-btn-secondary:hover:not(:disabled) {\n background: var(--color-neutral-50);\n border-color: var(--color-neutral-400);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-ghost {\n background: transparent;\n color: var(--color-neutral-600);\n}\n\n.sdk-btn-ghost:hover:not(:disabled) {\n background: var(--color-neutral-100);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-sm {\n height: 36px;\n padding: 8px 14px;\n font-size: var(--font-size-base);\n}\n\n.sdk-btn-lg {\n height: 48px;\n padding: 12px 20px;\n font-size: var(--font-size-lg);\n}\n\n.sdk-btn-pill {\n border-radius: var(--radius-full);\n}\n\n.sdk-btn-block {\n width: 100%;\n}\n\n.sdk-btn-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: none;\n border-radius: var(--radius-md);\n cursor: pointer;\n color: var(--color-text-secondary);\n transition: all var(--transition-base);\n padding: 0;\n}\n\n.sdk-btn-icon:hover {\n background: var(--color-neutral-100);\n color: var(--color-text-primary);\n}\n\n.sdk-input {\n width: 100%;\n height: 44px;\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-input:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-input:disabled {\n background: var(--color-neutral-50);\n cursor: not-allowed;\n}\n\n.sdk-textarea {\n width: 100%;\n min-height: 120px;\n resize: vertical;\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-select {\n width: 100%;\n height: 44px;\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n cursor: pointer;\n}\n\n.sdk-select:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-label {\n display: block;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-tight);\n color: var(--color-neutral-700);\n margin-bottom: var(--spacing-2);\n}\n\n.sdk-form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: var(--spacing-5);\n}\n\n.sdk-form-group:last-child {\n margin-bottom: 0;\n}\n\n.sdk-card {\n background: var(--color-white);\n border-radius: var(--radius-xl);\n box-shadow: var(--shadow-base);\n overflow: hidden;\n}\n\n.sdk-card-header {\n padding: var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n}\n\n.sdk-card-body {\n padding: var(--spacing-6);\n}\n\n.sdk-card-footer {\n padding: var(--spacing-6);\n border-top: 1px solid var(--color-border);\n}\n\n.sdk-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 var(--transition-slow);\n pointer-events: none;\n z-index: var(--z-modal-backdrop);\n}\n\n.sdk-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.sdk-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}\n\n.sdk-modal.open {\n pointer-events: auto;\n}\n\n.sdk-modal-container {\n position: relative;\n width: 100%;\n max-width: 580px;\n max-height: 90vh;\n background: var(--color-white);\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.sdk-modal.open .sdk-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.sdk-modal-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}\n\n.sdk-modal-title {\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.sdk-modal-body {\n overflow-y: auto;\n max-height: calc(90vh - 120px);\n}\n\n.sdk-close-btn {\n background: none;\n border: none;\n padding: var(--spacing-2);\n cursor: pointer;\n color: var(--color-neutral-500);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n line-height: 1;\n}\n\n.sdk-close-btn:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.sdk-avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-primary);\n color: var(--color-white);\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.sdk-avatar-sm {\n width: 24px;\n height: 24px;\n font-size: var(--font-size-xs);\n}\n\n.sdk-avatar-md {\n width: 32px;\n height: 32px;\n font-size: var(--font-size-sm);\n}\n\n.sdk-avatar-lg {\n width: 40px;\n height: 40px;\n font-size: var(--font-size-base);\n}\n\n.sdk-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.sdk-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px var(--spacing-2);\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n line-height: 1;\n}\n\n.sdk-badge-primary {\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.sdk-badge-success {\n background: var(--color-success-light);\n color: var(--color-success-dark);\n}\n\n.sdk-badge-error {\n background: var(--color-error-light);\n color: var(--color-error-dark);\n}\n\n.sdk-badge-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n position: absolute;\n top: -2px;\n right: -2px;\n}\n\n.sdk-badge-dot.primary {\n background: var(--color-primary);\n}\n\n.sdk-badge-dot.error {\n background: var(--color-error);\n border: 2px solid var(--color-white);\n}\n\n.sdk-notification {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n z-index: var(--z-notification);\n background: var(--color-white);\n border-radius: var(--radius-xl);\n box-shadow: var(--shadow-lg);\n min-width: 320px;\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sdk-notification-content {\n display: flex;\n align-items: center;\n padding: var(--spacing-4) var(--spacing-5);\n gap: var(--spacing-3);\n}\n\n.sdk-notification-success {\n border: 1px solid var(--color-success-light);\n}\n\n.sdk-notification-success .sdk-notification-icon {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-full);\n background: var(--color-success);\n color: var(--color-white);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n flex-shrink: 0;\n}\n\n.sdk-notification-text {\n color: var(--color-success-dark);\n font-weight: var(--font-weight-medium);\n font-size: var(--font-size-base);\n flex: 1;\n}\n\n.sdk-notification .sdk-close-btn {\n flex-shrink: 0;\n}\n\n.sdk-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid var(--color-neutral-200);\n border-top-color: var(--color-primary);\n border-radius: var(--radius-full);\n animation: spin 0.8s linear infinite;\n}\n\n.sdk-spinner-sm {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\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 fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@media (max-width: 768px) {\n .sdk-modal {\n padding: var(--spacing-4);\n }\n \n .sdk-modal-container {\n max-width: 100%;\n border-radius: var(--spacing-5);\n }\n \n .sdk-notification {\n top: var(--spacing-4);\n right: var(--spacing-4);\n left: var(--spacing-4);\n min-width: auto;\n }\n}\n`;\n","export const designTokens = `\n:root {\n --color-primary: #155EEF;\n --color-primary-hover: #1249CA;\n --color-primary-active: #0D3A9F;\n --color-primary-light: rgba(21, 94, 239, 0.1);\n --color-primary-border: rgba(21, 94, 239, 0.3);\n \n --color-success: #10B981;\n --color-success-hover: #059669;\n --color-success-light: #D1FAE5;\n --color-success-dark: #065F46;\n \n --color-error: #EF4444;\n --color-error-hover: #DC2626;\n --color-error-light: #FEE2E2;\n --color-error-dark: #991B1B;\n --color-error-border: #FECACA;\n \n --color-warning: #F59E0B;\n --color-warning-light: #FEF3C7;\n \n --color-neutral-50: #F9FAFB;\n --color-neutral-100: #F3F4F6;\n --color-neutral-200: #E5E7EB;\n --color-neutral-300: #D1D5DB;\n --color-neutral-400: #9CA3AF;\n --color-neutral-500: #6B7280;\n --color-neutral-600: #4B5563;\n --color-neutral-700: #374151;\n --color-neutral-800: #1F2937;\n --color-neutral-900: #111827;\n \n --color-white: #FFFFFF;\n --color-black: #000000;\n \n --color-background: #FFFFFF;\n --color-surface: #F9FAFB;\n --color-border: #E5E7EB;\n --color-text-primary: #111827;\n --color-text-secondary: #4B5563;\n --color-text-tertiary: #6B7280;\n \n --spacing-1: 4px;\n --spacing-2: 8px;\n --spacing-3: 12px;\n --spacing-4: 16px;\n --spacing-5: 20px;\n --spacing-6: 24px;\n --spacing-7: 28px;\n --spacing-8: 32px;\n --spacing-10: 40px;\n --spacing-12: 48px;\n \n --font-size-xs: 11px;\n --font-size-sm: 12px;\n --font-size-base: 14px;\n --font-size-md: 15px;\n --font-size-lg: 16px;\n --font-size-xl: 18px;\n --font-size-2xl: 20px;\n --font-size-3xl: 24px;\n \n --font-weight-normal: 450;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n \n --line-height-tight: 1.25;\n --line-height-snug: 1.3;\n --line-height-normal: 1.4;\n --line-height-relaxed: 1.5;\n --line-height-loose: 1.6;\n \n --radius-sm: 6px;\n --radius-md: 8px;\n --radius-lg: 10px;\n --radius-xl: 12px;\n --radius-2xl: 16px;\n --radius-3xl: 20px;\n --radius-4xl: 24px;\n --radius-full: 9999px;\n \n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n \n --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);\n \n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 999998;\n --z-modal: 999999;\n --z-popover: 1000000;\n --z-tooltip: 1000001;\n --z-notification: 1000002;\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 box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\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}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) 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-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`;\n","export const messengerComponentsStyles = `\n\n/* ========================================\n MESSAGES\n ======================================== */\n\n.messenger-message {\n display: flex;\n gap: var(--spacing-2);\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 flex-direction: column;\n}\n\n.messenger-message-row {\n display: flex;\n align-items: flex-end;\n gap: var(--spacing-2);\n}\n\n.messenger-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-message-avatar {\n flex-shrink: 0;\n}\n\n.messenger-message-sender {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-secondary);\n margin-bottom: 2px;\n margin-left: 0;\n}\n\n.messenger-message-bubble {\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-2xl);\n word-wrap: break-word;\n}\n\n.messenger-message-own .messenger-message-bubble {\n background: var(--color-primary);\n color: var(--color-white);\n border-bottom-right-radius: var(--spacing-1);\n}\n\n.messenger-message-received .messenger-message-bubble {\n background: var(--color-neutral-100);\n color: var(--color-text-primary);\n border-bottom-left-radius: var(--spacing-1);\n}\n\n.messenger-message-content {\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n}\n\n.messenger-message-time {\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n margin-top: 2px;\n padding: 0 var(--spacing-1);\n}\n\n.messenger-message-image {\n max-width: 220px;\n max-height: 200px;\n width: auto;\n height: auto;\n border-radius: var(--radius-lg);\n margin-top: var(--spacing-1);\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: var(--spacing-2);\n margin-top: var(--spacing-1);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-lg);\n background: var(--color-neutral-100);\n color: var(--color-primary);\n text-decoration: none;\n font-size: var(--font-size-sm);\n transition: background var(--transition-base);\n max-width: 100%;\n word-break: break-all;\n cursor: pointer;\n}\n\n.messenger-message-file:hover {\n background: var(--color-neutral-200);\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-closed-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n margin: var(--spacing-4);\n background: var(--color-success-light);\n color: var(--color-success-dark);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n}\n\n/* ========================================\n CHAT HEADER\n ======================================== */\n\n.messenger-chat-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n}\n\n.messenger-chat-header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.messenger-chat-title {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: var(--spacing-4);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\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: var(--spacing-10);\n}\n\n.messenger-chat-empty-avatars {\n margin-bottom: var(--spacing-4);\n}\n\n.messenger-chat-empty h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-chat-empty p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n max-width: 240px;\n}\n\n/* ========================================\n COMPOSE AREA\n ======================================== */\n\n.messenger-chat-compose {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n border-top: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-compose-input-wrapper {\n flex: 1;\n background: var(--color-neutral-100);\n border-radius: var(--radius-lg);\n padding: var(--spacing-2) var(--spacing-4);\n}\n\n.messenger-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: var(--color-text-primary);\n font-size: var(--font-size-md);\n line-height: var(--line-height-normal);\n resize: none;\n max-height: 120px;\n font-family: inherit;\n}\n\n.messenger-compose-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.messenger-compose-send {\n width: 40px;\n height: 40px;\n background: var(--color-primary);\n border: none;\n border-radius: var(--radius-full);\n color: var(--color-white);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--transition-base);\n flex-shrink: 0;\n}\n\n.messenger-compose-send:hover:not(:disabled) {\n background: var(--color-primary-hover);\n transform: scale(1.05);\n}\n\n.messenger-compose-send:disabled {\n background: var(--color-neutral-300);\n cursor: not-allowed;\n}\n\n.messenger-compose-file-input {\n display: none;\n}\n\n/* ========================================\n TYPING INDICATOR\n ======================================== */\n\n.messenger-typing-indicator {\n display: none;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-3);\n margin: var(--spacing-1) 0;\n}\n\n.messenger-typing-dots {\n display: flex;\n align-items: center;\n gap: 4px;\n background: var(--color-neutral-100);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-2xl);\n}\n\n.messenger-typing-dots span {\n width: 6px;\n height: 6px;\n background: var(--color-neutral-400);\n border-radius: var(--radius-full);\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: var(--font-size-xs);\n color: var(--color-text-tertiary);\n}\n\n/* ========================================\n NAVIGATION TABS\n ======================================== */\n\n.messenger-panel-nav {\n border-top: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-nav-tabs {\n display: flex;\n padding: var(--spacing-1) var(--spacing-2);\n gap: var(--spacing-1);\n}\n\n.messenger-nav-footer {\n padding: var(--spacing-1) var(--spacing-2);\n text-align: center;\n}\n\n.messenger-powered-by {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n color: var(--color-text-tertiary);\n text-decoration: none;\n transition: color var(--transition-base);\n}\n\n.messenger-powered-by:hover {\n color: var(--color-text-secondary);\n}\n\n.messenger-powered-by svg {\n width: 12px;\n height: 14px;\n}\n\n.messenger-powered-by strong {\n font-weight: var(--font-weight-semibold);\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: var(--spacing-2) var(--spacing-1);\n background: none;\n border: none;\n cursor: pointer;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n position: relative;\n}\n\n.messenger-nav-tab:hover {\n background: var(--color-neutral-50);\n}\n\n.messenger-nav-icon {\n color: var(--color-text-secondary);\n transition: color var(--transition-base);\n}\n\n.messenger-nav-label {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-secondary);\n transition: color var(--transition-base);\n}\n\n.messenger-nav-tab.active .messenger-nav-icon,\n.messenger-nav-tab.active .messenger-nav-label {\n color: var(--color-primary);\n}\n\n.messenger-nav-badge {\n position: absolute;\n top: var(--spacing-1);\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: var(--color-error);\n color: var(--color-white);\n font-size: 10px;\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--spacing-1);\n}\n\n/* ========================================\n PRECHAT\n ======================================== */\n\n.messenger-prechat-view {\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 display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n z-index: var(--z-popover);\n}\n\n.messenger-prechat-card {\n background: var(--color-white);\n border-radius: var(--radius-2xl);\n padding: var(--spacing-6);\n width: 100%;\n max-width: 360px;\n box-shadow: var(--shadow-xl);\n}\n\n.messenger-prechat-title {\n margin: 0 0 var(--spacing-5);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n text-align: center;\n}\n\n.messenger-prechat-error {\n display: none;\n font-size: var(--font-size-sm);\n color: var(--color-error);\n margin-top: calc(var(--spacing-1) * -1);\n}\n\n.messenger-prechat-actions {\n display: flex;\n gap: var(--spacing-3);\n margin-top: var(--spacing-2);\n}\n\n.messenger-prechat-skip {\n flex: 1;\n}\n\n.messenger-prechat-submit {\n flex: 2;\n}\n\n.messenger-prechat-submit-loading {\n display: none;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-prechat-submit-loading i {\n animation: spin 0.8s linear infinite;\n}\n`;\n","export const messengerCoreStyles = `\n\n.messenger-launcher {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.messenger-launcher-bottom-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.messenger-launcher-bottom-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.messenger-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: var(--radius-full);\n border: none;\n background: var(--color-primary);\n color: var(--color-white);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--shadow-lg);\n transition: all var(--transition-slow);\n position: relative;\n}\n\n.messenger-launcher-btn:hover {\n transform: translateY(-2px);\n box-shadow: var(--shadow-xl);\n}\n\n.messenger-launcher-btn:active {\n transform: scale(0.95);\n}\n\n.messenger-launcher-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n background: var(--color-error);\n color: var(--color-white);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2px solid var(--color-white);\n}\n\n.messenger-panel {\n position: fixed;\n z-index: var(--z-popover);\n width: 440px;\n height: 720px;\n max-height: calc(100vh - 100px);\n display: none;\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n transition: all var(--transition-slow);\n}\n\n.messenger-panel.open {\n display: block;\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.messenger-panel-bottom-right {\n bottom: 90px;\n right: var(--spacing-5);\n}\n\n.messenger-panel-bottom-left {\n bottom: 90px;\n left: var(--spacing-5);\n}\n\n.messenger-panel-content {\n background: var(--color-white);\n height: 100%;\n border-radius: var(--radius-2xl);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n border: 1px solid var(--color-border);\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.messenger-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.messenger-avatar-stack .sdk-avatar {\n margin-left: -8px;\n}\n\n.messenger-avatar-stack .sdk-avatar:first-child {\n margin-left: 0;\n}\n\n.messenger-avatar-stack-tiny .sdk-avatar {\n margin-left: -6px;\n}\n\n.messenger-avatar-stack-tiny .sdk-avatar:first-child {\n margin-left: 0;\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: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .messenger-launcher-bottom-left {\n left: var(--spacing-4);\n }\n}\n`;\n","export const messengerFeaturesStyles = `\n/* ========================================\n ATTACHMENTS\n ======================================== */\n.messenger-compose-attachments-preview {\n display: none;\n flex-wrap: wrap;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-4);\n border-top: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-attachment-preview {\n position: relative;\n width: 56px;\n height: 56px;\n border-radius: var(--radius-lg);\n overflow: hidden;\n border: 1px solid var(--color-border);\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: var(--color-neutral-100);\n color: var(--color-text-secondary);\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: var(--radius-full);\n color: var(--color-white);\n font-size: var(--font-size-xs);\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: background var(--transition-base);\n}\n\n.messenger-attachment-remove:hover {\n background: var(--color-error);\n}\n\n/* ========================================\n EMAIL OVERLAY\n ======================================== */\n.messenger-email-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n display: none;\n align-items: flex-end;\n z-index: 20;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: auto;\n}\n\n.messenger-email-card {\n width: 100%;\n animation: messenger-slide-up 0.25s ease;\n}\n\n.messenger-email-actions {\n display: flex;\n gap: var(--spacing-2);\n margin-top: var(--spacing-1);\n}\n\n/* ========================================\n EMPTY STATE\n ======================================== */\n.messenger-empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: var(--spacing-10);\n}\n\n.messenger-empty-state-icon {\n color: var(--color-neutral-300);\n margin-bottom: var(--spacing-4);\n}\n\n.messenger-empty-state h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-empty-state p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n}\n\n/* ========================================\n ANIMATIONS\n ======================================== */\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes messenger-typing-bounce {\n 0%, 80%, 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n\n@keyframes messenger-slide-up {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes messenger-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n@media (max-width: 480px) {\n .messenger-prechat-overlay {\n padding: var(--spacing-4);\n }\n .messenger-prechat-card {\n max-width: 100%;\n }\n}\n`;\n","export const messengerViewsStyles = `\n\n/* ========================================\n HOME VIEW\n ======================================== */\n\n.messenger-home-view {\n background: linear-gradient(180deg, #f0f4ff 0%, #FFFFFF 50%);\n position: relative;\n overflow: hidden;\n}\n\n.messenger-home-view::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 600px;\n height: 600px;\n background: radial-gradient(circle, rgba(21, 94, 239, 0.08) 0%, transparent 70%);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.messenger-home-view::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 500px;\n height: 500px;\n background: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.messenger-home-scroll {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n.messenger-home-header {\n padding: var(--spacing-6) var(--spacing-5);\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n}\n\n.messenger-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-8);\n position: relative;\n z-index: 2;\n}\n\n.messenger-home-logo {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-lg);\n overflow: visible;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-home-logo img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: var(--radius-lg);\n}\n\n.messenger-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: var(--spacing-4);\n margin-left: var(--spacing-4);\n}\n\n.messenger-home-welcome {\n display: flex;\n flex-direction: column;\n text-align: left;\n position: relative;\n z-index: 2;\n}\n\n.messenger-home-greeting {\n font-size: 28px;\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-tight);\n}\n\n.messenger-home-question {\n font-size: 28px;\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-tight);\n}\n\n.messenger-home-body {\n flex: 1;\n padding: 0 var(--spacing-5) var(--spacing-5);\n position: relative;\n z-index: 2;\n}\n\n.messenger-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) var(--spacing-5);\n background: var(--color-white);\n border: none;\n border-radius: 8px;\n color: var(--color-text-primary);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-base);\n margin-bottom: var(--spacing-5);\n font-family: inherit;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-home-message-btn:hover {\n background: var(--color-neutral-50);\n transform: translateX(4px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-home-continue-btn {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-3);\n}\n\n.messenger-home-continue-btn > svg {\n flex-shrink: 0;\n}\n\n.messenger-home-continue-info {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-1);\n text-align: left;\n flex: 1;\n}\n\n.messenger-home-continue-label {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n}\n\n.messenger-home-continue-preview {\n font-size: var(--font-size-sm);\n opacity: 0.6;\n font-weight: var(--font-weight-normal);\n}\n\n.messenger-home-featured {\n background: var(--color-neutral-50);\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--spacing-5);\n border: 1px solid var(--color-border);\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: var(--spacing-4);\n}\n\n.messenger-home-featured-content h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-home-featured-content p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n}\n\n.messenger-home-featured-btn {\n margin-top: var(--spacing-3);\n}\n\n.messenger-home-changelog-section {\n margin-top: var(--spacing-5);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n}\n\n.messenger-home-changelog-card {\n background: var(--color-white);\n border-radius: 8px;\n overflow: hidden;\n cursor: pointer;\n transition: all var(--transition-base);\n border: none;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-home-changelog-card:hover {\n background: var(--color-neutral-50);\n transform: translateY(-2px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n}\n\n.messenger-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.messenger-home-changelog-cover-text {\n position: absolute;\n bottom: var(--spacing-3);\n left: var(--spacing-3);\n right: var(--spacing-3);\n color: var(--color-white);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n line-height: var(--line-height-snug);\n}\n\n.messenger-home-changelog-card-content {\n padding: var(--spacing-4);\n border-top: 1px solid var(--color-border);\n}\n\n.messenger-home-changelog-card-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-home-changelog-card-desc {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.messenger-home-availability,\n.messenger-chat-availability {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: var(--spacing-2);\n font-size: var(--font-size-sm);\n color: var(--color-text-secondary);\n}\n\n.messenger-availability-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n flex-shrink: 0;\n}\n\n.messenger-availability-online {\n background: var(--color-success);\n box-shadow: 0 0 0 2px var(--color-success-light);\n}\n\n.messenger-availability-away {\n background: var(--color-neutral-400);\n}\n\n.messenger-availability-text {\n opacity: 0.9;\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: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n}\n\n.messenger-conversations-header h2 {\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.messenger-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-conversations-list {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-conversation-item + .messenger-conversation-item {\n border-top: 1px solid var(--color-border);\n}\n\n.messenger-conversation-item {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-3);\n padding: 10px var(--spacing-4);\n cursor: pointer;\n transition: background var(--transition-base);\n}\n\n.messenger-conversation-item:hover {\n background: var(--color-neutral-50);\n}\n\n.messenger-conversation-avatars {\n flex-shrink: 0;\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: var(--spacing-1);\n gap: var(--spacing-3);\n}\n\n.messenger-conversation-title {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-conversation-time {\n font-size: var(--font-size-sm);\n color: var(--color-text-secondary);\n flex-shrink: 0;\n}\n\n.messenger-conversation-preview {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.messenger-conversation-message {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n color: var(--color-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: var(--line-height-normal);\n}\n\n.messenger-conversation-item.unread .messenger-conversation-message {\n color: var(--color-text-primary);\n font-weight: var(--font-weight-medium);\n}\n\n.messenger-unread-dot {\n width: 8px;\n height: 8px;\n background: var(--color-primary);\n border-radius: var(--radius-full);\n flex-shrink: 0;\n}\n\n.messenger-conversations-footer {\n padding: var(--spacing-4);\n border-top: none;\n}\n\n.messenger-new-message-btn {\n max-width: 220px;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n background: var(--color-white);\n border: none;\n border-radius: var(--radius-xl);\n color: var(--color-text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-base);\n font-family: inherit;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-new-message-btn:hover {\n background: var(--color-neutral-50);\n transform: translateX(4px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n/* ========================================\n HELP VIEW\n ======================================== */\n\n.messenger-help-header {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-help-header-top {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.messenger-help-header-top h2 {\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.messenger-help-header-top .sdk-close-btn {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-help-search-input {\n width: 100%;\n background: var(--color-neutral-50);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n padding: var(--spacing-2) var(--spacing-3);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: border-color var(--transition-base);\n}\n\n.messenger-help-search-input:focus {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.messenger-help-search-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.messenger-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-help-collections-header {\n display: none;\n}\n\n.messenger-help-collections {\n padding: 0;\n}\n\n.messenger-help-collection {\n display: flex;\n align-items: center;\n padding: var(--spacing-4) var(--spacing-5);\n cursor: pointer;\n transition: background var(--transition-base);\n border-bottom: 1px solid var(--color-border);\n}\n\n.messenger-help-collection:hover {\n background: var(--color-neutral-50);\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 var(--spacing-1);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-help-collection-desc {\n margin: 0 0 var(--spacing-1);\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n line-height: var(--line-height-normal);\n}\n\n.messenger-help-collection-count {\n font-size: var(--font-size-sm);\n color: var(--color-text-tertiary);\n}\n\n.messenger-help-collection-arrow {\n color: var(--color-text-tertiary);\n flex-shrink: 0;\n margin-left: var(--spacing-3);\n}\n\n.messenger-help-footer {\n padding: var(--spacing-4) var(--spacing-5);\n border-top: 1px solid var(--color-border);\n text-align: center;\n}\n\n.messenger-help-footer-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--transition-base);\n}\n\n.messenger-help-footer-link:hover {\n color: var(--color-primary);\n}\n\n/* ========================================\n CHANGELOG VIEW\n ======================================== */\n\n.messenger-changelog-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-3) var(--spacing-5);\n}\n\n.messenger-changelog-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.messenger-changelog-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-changelog-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n padding: var(--spacing-4);\n}\n\n.messenger-changelog-card {\n background: var(--color-white);\n border-radius: var(--radius-xl);\n overflow: hidden;\n cursor: pointer;\n transition: all var(--transition-base);\n border: none;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-changelog-card:hover {\n transform: translateY(-2px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 4px 8px -2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-changelog-cover {\n width: 100%;\n height: 160px;\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: var(--spacing-4);\n}\n\n.messenger-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-2);\n margin-bottom: var(--spacing-2);\n}\n\n.messenger-changelog-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-changelog-description {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.messenger-changelog-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: var(--spacing-3);\n}\n\n.messenger-changelog-date {\n font-size: var(--font-size-sm);\n color: var(--color-text-tertiary);\n}\n\n.messenger-changelog-arrow {\n color: var(--color-text-tertiary);\n}\n`;\n","import { messengerComponentsStyles } from './messenger-components.js';\nimport { messengerCoreStyles } from './messenger-core.js';\nimport { messengerFeaturesStyles } from './messenger-features.js';\nimport { messengerViewsStyles } from './messenger-views.js';\n\nexport const messengerStyles =\n\tmessengerCoreStyles +\n\tmessengerViewsStyles +\n\tmessengerComponentsStyles +\n\tmessengerFeaturesStyles;\n\nexport {\n\tmessengerComponentsStyles,\n\tmessengerCoreStyles,\n\tmessengerFeaturesStyles,\n\tmessengerViewsStyles,\n};\n","export const surveyStyles = `\n.feedback-survey-container {\n display: none;\n}\n\n.feedback-survey-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 z-index: var(--z-modal-backdrop);\n animation: fadeIn var(--transition-slow);\n}\n\n/* ========================================\n SURVEY CARD\n ======================================== */\n\n.feedback-survey {\n position: fixed;\n z-index: var(--z-modal);\n background: var(--color-white);\n border-radius: var(--radius-2xl);\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n padding: var(--spacing-6);\n min-width: 320px;\n max-width: 400px;\n font-family: inherit;\n}\n\n.feedback-survey-bottom-right {\n bottom: var(--spacing-6);\n right: var(--spacing-6);\n}\n\n.feedback-survey-bottom-left {\n bottom: var(--spacing-6);\n left: var(--spacing-6);\n}\n\n.feedback-survey-center {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.feedback-survey-bottom {\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;\n max-width: none;\n}\n\n.feedback-survey-close {\n position: absolute;\n top: var(--spacing-3);\n right: var(--spacing-3);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 0;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n}\n\n.feedback-survey-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.feedback-survey-title {\n margin: 0 0 var(--spacing-2) 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n padding-right: var(--spacing-6);\n color: var(--color-text-primary);\n}\n\n.feedback-survey-description {\n color: var(--color-text-secondary);\n margin: 0 0 var(--spacing-5) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n}\n\n.feedback-survey-content {\n margin-bottom: var(--spacing-4);\n}\n\n/* ========================================\n NPS\n ======================================== */\n\n.feedback-survey-nps {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-1);\n}\n\n.feedback-survey-nps-btn {\n width: 28px;\n height: 36px;\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n transition: all var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-nps-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.feedback-survey-nps-btn.selected {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-white);\n}\n\n/* ========================================\n CSAT\n ======================================== */\n\n.feedback-survey-csat {\n display: flex;\n justify-content: center;\n gap: var(--spacing-4);\n}\n\n.feedback-survey-csat-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 36px;\n transition: transform var(--transition-fast);\n padding: var(--spacing-2);\n}\n\n.feedback-survey-csat-btn:hover {\n transform: scale(1.1);\n}\n\n.feedback-survey-csat-btn.selected {\n transform: scale(1.2);\n}\n\n/* ========================================\n CES\n ======================================== */\n\n.feedback-survey-ces {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-ces-btn {\n flex: 1;\n padding: var(--spacing-3) var(--spacing-2);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n cursor: pointer;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n transition: all var(--transition-fast);\n font-family: inherit;\n text-align: center;\n}\n\n.feedback-survey-ces-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.feedback-survey-ces-btn.selected {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-white);\n}\n\n.feedback-survey-labels {\n display: flex;\n justify-content: space-between;\n margin-top: var(--spacing-2);\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n}\n\n/* ========================================\n FREQUENCY\n ======================================== */\n\n.feedback-survey-frequency {\n display: flex;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-freq-btn {\n flex: 1;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n transition: all var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-freq-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.feedback-survey-freq-btn.selected {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-white);\n}\n\n/* ========================================\n FORM INPUTS\n ======================================== */\n\n.feedback-survey-feedback {\n margin-top: var(--spacing-4);\n}\n\n.feedback-survey-textarea {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n resize: none;\n height: 80px;\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n box-sizing: border-box;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.feedback-survey-select {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n cursor: pointer;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-select:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.feedback-survey-input {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n box-sizing: border-box;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-input:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n SUBMIT & FEEDBACK\n ======================================== */\n\n.feedback-survey-submit {\n width: 100%;\n margin-top: var(--spacing-3);\n padding: var(--spacing-3);\n background: var(--color-primary);\n color: var(--color-white);\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n cursor: pointer;\n font-family: inherit;\n transition: all var(--transition-base);\n}\n\n.feedback-survey-submit:hover {\n background: var(--color-primary-hover);\n border-color: var(--color-primary-hover);\n}\n\n.feedback-survey-error {\n color: var(--color-error);\n font-size: var(--font-size-sm);\n margin-top: var(--spacing-2);\n text-align: center;\n}\n\n.feedback-survey-success {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n background: var(--color-success);\n color: var(--color-white);\n padding: var(--spacing-3) var(--spacing-5);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n z-index: var(--z-notification);\n box-shadow: var(--shadow-lg);\n font-family: inherit;\n}\n\n.feedback-survey-success > div {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n\n@media (max-width: 768px) {\n .feedback-survey {\n min-width: 300px;\n }\n\n .feedback-survey-bottom {\n padding: var(--spacing-5);\n }\n\n .feedback-survey-nps-btn {\n width: 24px;\n height: 32px;\n font-size: var(--font-size-xs);\n }\n\n .feedback-survey-csat-btn {\n font-size: 32px;\n }\n}\n`;\n","import { baseStyles } from './base.js';\nimport { changelogStyles } from './changelog.js';\nimport { componentsStyles } from './components.js';\nimport { designTokens } from './design-tokens.js';\nimport { feedbackStyles } from './feedback.js';\nimport { messengerStyles } from './messenger.js';\nimport { surveyStyles } from './survey.js';\n\nexport const CSS_STYLES =\n\tdesignTokens +\n\tbaseStyles +\n\tcomponentsStyles +\n\tfeedbackStyles +\n\tchangelogStyles +\n\tsurveyStyles +\n\tmessengerStyles;\n\nexport {\n\tbaseStyles,\n\tchangelogStyles,\n\tcomponentsStyles,\n\tdesignTokens,\n\tfeedbackStyles,\n\tmessengerStyles,\n\tsurveyStyles,\n};\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};\n"],"names":["MOCK_CONVERSATIONS","MOCK_MESSAGES","delay","APIError"],"mappings":"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I,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI;CACtD,IAAI,IAAI,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;CACrC,IAAI;CACJ,GAAG,OAAO;CACV,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC;CACjC,OAAO;CACP,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE;CAC5D,OAAO,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI;CAClE,OAAO,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa;CACrD;CACA,OAAO,SAAS;CAChB,GAAG;CACH,CAAC;CACD;;CC/bO,MAAM,UAAU,GAAG;AAC1B;AACA;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCjDM,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;;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;;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;;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;;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;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;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;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;;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;AACA;AACA,CAAC;;CCtlBM,MAAM,gBAAgB,GAAG;AAChC;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;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;;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;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;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,CAAC;;CCzfM,MAAM,YAAY,GAAG;AAC5B;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCvGM,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;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;;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,CAAC;;CClQM,MAAM,yBAAyB,GAAG;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;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;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;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;;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;;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;;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;CCxdM,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;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;;AAEA;AACA;AACA;;AAEA;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;AACA,CAAC;;CC9JM,MAAM,uBAAuB,GAAG;AACvC;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;;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;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCxKM,MAAM,oBAAoB,GAAG;;AAEpC;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;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;;AAEA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;;AAEA;AACA;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;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;;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;;AAEA;AACA;AACA;;AAEA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;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;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;CCtqBM,MAAM,eAAe;CAC5B,CAAC,mBAAmB;CACpB,CAAC,oBAAoB;CACrB,CAAC,yBAAyB;CAC1B,CAAC,uBAAuB;;CCTjB,MAAM,YAAY,GAAG;AAC5B;AACA;AACA;;AAEA;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;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAC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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/core/WebSocketService.js","../src/styles/messengerCustomStyles.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/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/components.js","../src/styles/design-tokens.js","../src/styles/feedback.js","../src/styles/messenger-components.js","../src/styles/messenger-core.js","../src/styles/messenger-features.js","../src/styles/messenger-views.js","../src/styles/messenger.js","../src/styles/survey.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?',\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\tattachments: data.attachments || [],\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\tattachments: data.attachments || [],\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\tattachments: data.attachments || [],\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({\n\t\t\t\t\tcontent: data.content,\n\t\t\t\t\tattachments: data.attachments || [],\n\t\t\t\t}),\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(\n\t\t\t\t'[APIService] startConversation: session invalid, calling init...'\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tawait this.init();\n\t\t\t\tconsole.log(\n\t\t\t\t\t'[APIService] startConversation: init result, token:',\n\t\t\t\t\tthis.sessionToken ? 'set' : 'null'\n\t\t\t\t);\n\t\t\t} catch (initError) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'[APIService] startConversation: init failed:',\n\t\t\t\t\tinitError.message\n\t\t\t\t);\n\t\t\t\tthrow initError;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tconsole.error(\n\t\t\t\t'[APIService] startConversation: no session token after init'\n\t\t\t);\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tconsole.log(\n\t\t\t'[APIService] startConversation: sending to',\n\t\t\t`${this.baseURL}/widget/messenger/conversations`,\n\t\t\t'mock:',\n\t\t\tthis.mock\n\t\t);\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(\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.sessionToken}`,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t}\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\tasync getChangelogs(options) {\n\t\treturn this.changelog.getChangelogs(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 =\n\t\t\t\tsessionData.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}\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\t\tconst isControlIcon = (target) => {\n\t\t\tif (!(target instanceof Element)) return false;\n\t\t\treturn Boolean(\n\t\t\t\ttarget.closest('.feedback-minimize-icon') ||\n\t\t\t\t\ttarget.closest('.feedback-expand-icon')\n\t\t\t);\n\t\t};\n\t\tconst openIfAllowed = (target) => {\n\t\t\tif (isControlIcon(target)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!this.isMinimized) {\n\t\t\t\tthis.openPanel();\n\t\t\t}\n\t\t};\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\topenIfAllowed(e.target);\n\t\t});\n\n\t\t// Pointer events improve consistency across touch and mouse devices.\n\t\tbutton.addEventListener('pointerup', (e) => {\n\t\t\tif (e.pointerType === 'mouse') return;\n\t\t\topenIfAllowed(e.target);\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 = `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) => e.stopPropagation());\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') this.closeModal();\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) container.parentNode.removeChild(container);\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) => e.stopPropagation());\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') this.closeSidebar();\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) return;\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\tthis._handleViewUpdate(this.changelogs[index]);\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\t\tconst description = this._truncateDescription(\n\t\t\tchangelog.excerpt || changelog.description,\n\t\t\t120\n\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${description ? `<p class=\"changelog-list-item-description\">${description}</p>` : ''}\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) return;\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\t\tconst description = this._truncateDescription(\n\t\t\tchangelog.excerpt || changelog.description,\n\t\t\t160\n\t\t);\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${description ? `<p class=\"changelog-popup-description\">${description}</p>` : ''}\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\tthis.currentIndex = parseInt(e.target.dataset.index, 10);\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\tconst changelogBase = (this.options.changelogBaseUrl || '').replace(\n\t\t\t/\\/$/,\n\t\t\t''\n\t\t);\n\t\tconst url =\n\t\t\tchangelog.url ||\n\t\t\t(changelog.slug && changelogBase\n\t\t\t\t? `${changelogBase}/${changelog.slug}`\n\t\t\t\t: null) ||\n\t\t\tchangelogBase ||\n\t\t\tnull;\n\n\t\tif (url) {\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_stripHtml(html) {\n\t\tconst tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\t\treturn (tmp.textContent || tmp.innerText || '').trim();\n\t}\n\n\t_truncateDescription(html, maxLength = 120) {\n\t\tif (!html) return '';\n\t\tconst plain = this._stripHtml(html);\n\t\tif (plain.length <= maxLength) return plain;\n\t\treturn plain.substring(0, maxLength).trimEnd() + '...';\n\t}\n\n\t_formatDate(dateString) {\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t});\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) badge.style.display = 'none';\n\t}\n\n\tshowBadge() {\n\t\tconst badge = this.element?.querySelector('.changelog-badge');\n\t\tif (badge) badge.style.display = 'block';\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';\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","/**\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","export function applyMessengerCustomStyles(options = {}) {\n\tconst {\n\t\tprimaryColor = '#155EEF',\n\t\ttextColor = '#1d1d1f',\n\t\tbackgroundColor = '#ffffff',\n\t\ttheme = 'light',\n\t} = options;\n\n\tlet styleElement = document.getElementById(\n\t\t'product7-messenger-custom-styles'\n\t);\n\n\tif (!styleElement) {\n\t\tstyleElement = document.createElement('style');\n\t\tstyleElement.id = 'product7-messenger-custom-styles';\n\t\tdocument.head.appendChild(styleElement);\n\t}\n\n\tconst adjustColor = (hex, percent, alpha = 1) => {\n\t\tconst num = parseInt(hex.replace('#', ''), 16);\n\t\tconst r = Math.max(0, Math.min(255, (num >> 16) + percent));\n\t\tconst g = Math.max(0, Math.min(255, ((num >> 8) & 0x00ff) + percent));\n\t\tconst b = Math.max(0, Math.min(255, (num & 0x0000ff) + percent));\n\n\t\tif (alpha < 1) {\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\treturn '#' + ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0');\n\t};\n\n\tstyleElement.textContent = `\n\t\t#product7-messenger-widget {\n\t\t\t--color-primary: ${primaryColor} !important;\n\t\t\t--color-primary-hover: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.messenger-launcher-btn {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t}\n\n\t\t.messenger-launcher-btn:hover {\n\t\t\tbox-shadow: 0 8px 24px ${adjustColor(primaryColor, 0, 0.3)} !important;\n\t\t}\n\n\t\t.sdk-btn-primary {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t\tborder-color: ${primaryColor} !important;\n\t\t}\n\n\t\t.sdk-btn-primary:hover {\n\t\t\tbackground: ${adjustColor(primaryColor, -10)} !important;\n\t\t\tborder-color: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.messenger-compose-send {\n\t\t\tbackground: ${primaryColor} !important;\n\t\t}\n\n\t\t.messenger-compose-send:hover:not(:disabled) {\n\t\t\tbackground: ${adjustColor(primaryColor, -10)} !important;\n\t\t}\n\n\t\t.messenger-nav-tab.active .messenger-nav-icon,\n\t\t.messenger-nav-tab.active .messenger-nav-label {\n\t\t\tcolor: ${primaryColor} !important;\n\t\t}\n\n\t\t.messenger-home-view::before {\n\t\t\tbackground: radial-gradient(circle, ${adjustColor(primaryColor, 0, 0.08)} 0%, transparent 70%) !important;\n\t\t}\n\n\t\t${\n\t\t\tbackgroundColor !== '#ffffff'\n\t\t\t\t? `\n\t\t.messenger-panel-content {\n\t\t\tbackground: ${backgroundColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\n\t\t${\n\t\t\ttextColor !== '#1d1d1f'\n\t\t\t\t? `\n\t\t.messenger-panel-content,\n\t\t.messenger-view {\n\t\t\tcolor: ${textColor} !important;\n\t\t}\n\t\t`\n\t\t\t\t: ''\n\t\t}\n\t`;\n\n\tconsole.log('✅ Custom messenger styles applied:', { primaryColor, theme });\n}\n\nexport function removeMessengerCustomStyles() {\n\tconst styleElement = document.getElementById(\n\t\t'product7-messenger-custom-styles'\n\t);\n\tif (styleElement && styleElement.parentNode) {\n\t\tstyleElement.parentNode.removeChild(styleElement);\n\t}\n}\n","export class MessengerState {\n\tconstructor(options = {}) {\n\t\tthis.currentView = 'home';\n\t\tthis.isOpen = false;\n\t\tthis.unreadCount = 0;\n\t\tthis.activeConversationId = null;\n\n\t\tthis.conversations = [];\n\t\tthis.messages = {};\n\n\t\tthis.helpArticles = [];\n\t\tthis.helpSearchQuery = '';\n\n\t\tthis.homeChangelogItems = [];\n\t\tthis.changelogItems = [];\n\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\tthis.userContext = options.userContext || null;\n\t\tthis.isIdentified = false;\n\t\tthis.pendingMessage = null;\n\n\t\tthis.enableHelp = options.enableHelp !== false;\n\t\tthis.enableChangelog = options.enableChangelog !== false;\n\n\t\tthis.agentsOnline = false;\n\t\tthis.onlineCount = 0;\n\t\tthis.responseTime = 'Usually replies within a few minutes';\n\n\t\tthis.typingUsers = {};\n\n\t\tthis.isLoading = false;\n\t\tthis.isLoadingMessages = false;\n\n\t\tthis.urls = options.urls || {\n\t\t\tfeedback: null,\n\t\t\tchangelog: null,\n\t\t\thelp: null,\n\t\t\troadmap: null,\n\t\t};\n\n\t\tthis._listeners = new Set();\n\t}\n\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\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\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\tsetActiveConversation(conversationId) {\n\t\tconst previousConversationId = this.activeConversationId;\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', {\n\t\t\tconversationId,\n\t\t\tpreviousConversationId,\n\t\t});\n\t}\n\n\tsetIdentified(isIdentified, userContext = null) {\n\t\tthis.isIdentified = isIdentified;\n\t\tif (userContext) {\n\t\t\tthis.userContext = { ...this.userContext, ...userContext };\n\t\t}\n\t\tthis._notify('identificationChange', { isIdentified, userContext });\n\t}\n\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\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\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\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\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_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\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\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\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\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 <button class=\"messenger-launcher-btn\" aria-label=\"Open messenger\">\n <span class=\"messenger-launcher-icon messenger-launcher-icon-chat\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </span>\n <span class=\"messenger-launcher-icon messenger-launcher-icon-close\" style=\"display: none;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </span>\n ${badgeHtml}\n </button>\n `;\n\n\t\tconst btn = this.element.querySelector('.messenger-launcher-btn');\n\t\tif (btn && this.options.primaryColor) {\n\t\t\tbtn.style.setProperty(\n\t\t\t\t'background',\n\t\t\t\tthis.options.primaryColor,\n\t\t\t\t'important'\n\t\t\t);\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","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-panel-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 = `\n\t\t\t<div class=\"messenger-nav-tabs\">\n\t\t\t\t${tabsHtml}\n\t\t\t</div>\n\t\t\t<div class=\"messenger-nav-footer\">\n\t\t\t\t<a href=\"https://product7.io\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"messenger-powered-by\">\n\t\t\t\t\t<svg width=\"12\" height=\"14\" viewBox=\"0 0 28 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.0615 5.28044C8.5161 4.42949 3.30825 11.1456 5.89967 17.6588C6.9321 20.2538 9.06268 22.2644 11.8777 23.1968C16.2682 24.6507 18.4038 22.3222 19.0483 23.9691C19.4055 24.8894 18.7282 25.3209 17.988 25.4938C10.9146 27.15 5.15304 22.7566 3.5869 17.5531C1.52205 10.6941 5.98684 4.6667 11.3483 3.41065C17.8801 1.88094 24.0325 6.19355 24.3926 12.7175C24.7448 19.0921 18.6217 24.5978 11.927 22.2036C10.8789 21.8285 8.8419 20.6682 8.46823 19.858C8.06026 18.9727 8.80261 18.1725 9.68285 18.3576C10.2223 18.4726 10.3116 18.8706 11.3161 19.5372C14.4549 21.6213 19.1276 20.6132 21.2046 17.0972C23.991 12.3817 21.0481 6.05351 15.06 5.27758L15.0615 5.28044Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.2492 2.19833C11.944 1.71463 8.88819 3.07214 6.91479 4.49682C2.27067 7.85488 0.76169 14.5038 3.49672 19.8731C4.08535 21.0096 4.84379 22.0497 5.7459 22.9576L7.16343 24.2515C7.67214 24.9131 7.27203 25.7176 6.64115 25.9269C5.13502 26.4271 2.0499 21.8172 1.42044 20.5383C0.0872204 17.8297 -0.312889 14.9047 0.242977 11.503C1.66908 2.77063 11.221 -2.51652 19.7197 1.21021C27.7548 4.73331 30.2733 15.4555 23.9351 22.0773C23.3107 22.7296 21.6352 24.4823 20.6278 23.8907C20.0076 23.5263 19.8933 22.6446 20.5192 22.1238C21.0301 21.6986 21.4759 21.435 21.9896 20.9734C23.6665 19.4688 25.2562 16.8752 25.3477 13.5636C25.4427 10.2055 24.1266 7.5848 22.3904 5.74859C20.6392 3.89665 18.6751 2.69919 15.2456 2.19691L15.2492 2.19833Z\" fill=\"#F69F06\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.48332 27.2217C7.93817 26.265 8.89987 25.3776 10.1352 25.8641C15.5653 27.9926 18.3081 25.5269 19.0255 27.0823C19.2655 27.6039 19.0448 28.1619 18.7354 28.3863C17.9895 28.9257 14.82 28.9343 13.9262 28.8714C12.9071 28.8053 11.897 28.6377 10.9111 28.3713C10.0888 28.1348 8.88057 27.9247 8.48189 27.2281L8.48332 27.2217Z\" fill=\"#21244A\"/>\n\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.8722 31.0607C15.7765 32.1381 14.579 32.0331 13.5766 31.9545C12.5742 31.8759 11.5203 31.8502 11.601 30.7013C11.6789 29.5882 12.8035 29.7532 13.8274 29.8332C14.4425 29.8811 15.9951 29.681 15.8722 31.0607Z\" fill=\"#21244A\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\tPowered by <strong>Product7</strong>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t`;\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\" viewBox=\"0 0 256 256\">\n\t\t\t<path d=\"M40,216H216V120a8,8,0,0,0-2.34-5.66l-80-80a8,8,0,0,0-11.32,0l-80,80A8,8,0,0,0,40,120Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t</svg>`;\n\t}\n\n\t_getMessagesIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 256 256\">\n\t\t\t<circle cx=\"128\" cy=\"128\" r=\"12\"/>\n\t\t\t<circle cx=\"84\" cy=\"128\" r=\"12\"/>\n\t\t\t<circle cx=\"172\" cy=\"128\" r=\"12\"/>\n\t\t\t<path d=\"M79.93,211.11a96,96,0,1,0-35-35h0L32.42,213.46a8,8,0,0,0,10.12,10.12l37.39-12.47Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t</svg>`;\n\t}\n\n\t_getHelpIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 256 256\">\n\t\t\t<circle cx=\"128\" cy=\"128\" r=\"96\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t<circle cx=\"128\" cy=\"180\" r=\"12\"/>\n\t\t\t<path d=\"M128,144v-8a28,28,0,1,0-28-28\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t</svg>`;\n\t}\n\n\t_getChangelogIcon() {\n\t\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 256 256\">\n\t\t\t<path d=\"M160,80V200.67a8,8,0,0,0,3.56,6.65l11,7.33a8,8,0,0,0,12.2-4.72L200,160\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t<path d=\"M40,200a8,8,0,0,0,13.15,6.12C105.55,162.16,160,160,160,160h40a40,40,0,0,0,0-80H160S105.55,77.84,53.15,33.89A8,8,0,0,0,40,40Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\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","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}\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\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-changelog-header\">\n\t\t\t\t<h2>Latest Updates</h2>\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</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._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._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 (\n\t\t\t\ttype === 'messagesUpdate' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\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 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 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\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<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${\n\t\t\t\t\tisClosed\n\t\t\t\t\t\t? `\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\t\t: ''\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${\n\t\t\t\tisClosed\n\t\t\t\t\t? ''\n\t\t\t\t\t: `\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\t\t\t}\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\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\n\t\t\t.map((att) => {\n\t\t\t\tif (att.type === 'image') {\n\t\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\t}\n\t\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\t})\n\t\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\n\t\t\t? `<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>`\n\t\t\t: '';\n\t\tconst bubbleHtml = contentHtml\n\t\t\t? `<div class=\"messenger-message-bubble\">${contentHtml}</div>`\n\t\t\t: '';\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-sender\">${message.sender?.name || 'Support'}</div>\n\t\t\t\t<div class=\"messenger-message-row\">\n\t\t\t\t\t<div class=\"messenger-message-avatar\">${avatarHtml}</div>\n\t\t\t\t\t<div class=\"messenger-message-wrapper\">\n\t\t\t\t\t\t${bubbleHtml}\n\t\t\t\t\t\t${attachmentsHtml}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</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_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 =\n\t\t\t\t!input.value.trim() && this._pendingAttachments.length === 0;\n\t\t}\n\t}\n\n\t_renderAttachmentPreviews() {\n\t\tconst container = this.element.querySelector(\n\t\t\t'.messenger-compose-attachments-preview'\n\t\t);\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\n\t\t\t.map((att, i) => {\n\t\t\t\tconst isImage = att.type.startsWith('image');\n\t\t\t\tconst thumb = isImage\n\t\t\t\t\t? `<img class=\"messenger-attachment-thumb\" src=\"${att.preview}\" alt=\"${this._escapeHtml(att.file.name)}\" />`\n\t\t\t\t\t: `<div class=\"messenger-attachment-thumb messenger-attachment-file-icon\"><i class=\"ph ph-file\"></i></div>`;\n\t\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\t})\n\t\t\t.join('');\n\n\t\tcontainer\n\t\t\t.querySelectorAll('.messenger-attachment-remove')\n\t\t\t.forEach((btn) => {\n\t\t\t\tbtn.addEventListener('click', (e) => {\n\t\t\t\t\tconst idx = parseInt(e.currentTarget.dataset.index, 10);\n\t\t\t\t\tthis._pendingAttachments.splice(idx, 1);\n\t\t\t\t\tthis._renderAttachmentPreviews();\n\t\t\t\t\tthis._updateSendButtonState();\n\t\t\t\t});\n\t\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\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\tinput.style.height = 'auto';\n\t\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\t\t\t\tthis._updateSendButtonState();\n\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\tconst attachBtn = this.element.querySelector('.messenger-compose-attach');\n\t\tconst fileInput = this.element.querySelector(\n\t\t\t'.messenger-compose-file-input'\n\t\t);\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\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tmessagesContainer.addEventListener('click', (e) => {\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\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\twindow.open(url, '_blank');\n\t\t}\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\tasync _sendMessage() {\n\t\tif (this._isConversationClosed) return;\n\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\tconst attachmentsToSend = [...this._pendingAttachments];\n\t\tconst isNewConversation = !this.state.activeConversationId;\n\n\t\tif (isNewConversation) {\n\t\t\tif (this.options.onStartConversation) {\n\t\t\t\tthis.options.onStartConversation(content, attachmentsToSend);\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(\n\t\t\t\t\tthis.state.activeConversationId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentsToSend\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\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\tthis.avatarColors = [\n\t\t\t'#155EEF',\n\t\t\t'#8b5cf6',\n\t\t\t'#10b981',\n\t\t\t'#f59e0b',\n\t\t\t'#ef4444',\n\t\t\t'#ec4899',\n\t\t\t'#06b6d4',\n\t\t];\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_getAvatarColor(name) {\n\t\t// Generate consistent color based on name\n\t\tconst charCode = (name || 'S').charCodeAt(0);\n\t\treturn this.avatarColors[charCode % this.avatarColors.length];\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n <div class=\"messenger-empty-state\">\n <div class=\"messenger-empty-state-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </div>\n <h3>No conversations yet</h3>\n <p>Start a new conversation with our team</p>\n </div>\n `;\n\t\t} else {\n\t\t\tconversationsHtml = `\n <div class=\"messenger-conversations-list\">\n ${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n </div>\n `;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n <div class=\"messenger-conversations-header\">\n <h2>Messages</h2>\n <button class=\"sdk-close-btn\" aria-label=\"Close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"#000000\" viewBox=\"0 0 256 256\">\n <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 </svg>\n </button>\n </div>\n\n <div class=\"messenger-conversations-body\">\n ${conversationsHtml}\n </div>\n\n <div class=\"messenger-conversations-footer\">\n <button class=\"messenger-new-message-btn\">\n <span>Send us a message</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" style=\"flex-shrink: 0;\">\n <rect width=\"256\" height=\"256\" fill=\"none\"/>\n <line x1=\"144\" y1=\"128\" x2=\"80\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n <path d=\"M48.49,221.28A8,8,0,0,0,59.93,231l168-96.09a8,8,0,0,0,0-14l-168-95.85a8,8,0,0,0-11.44,9.67L80,128Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n </svg>\n </button>\n </div>\n `;\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\tconst color = this._getAvatarColor('S');\n\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">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\tconst initial = (p.name || 'S').charAt(0).toUpperCase();\n\t\tconst color = this._getAvatarColor(p.name);\n\t\treturn `<div class=\"sdk-avatar sdk-avatar-md\" style=\"background-color: ${color};\">${initial}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\tconst color1 = this._getAvatarColor('S');\n\t\t\tconst color2 = this._getAvatarColor('T');\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\" style=\"background-color: ${color1};\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color2};\">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, index) => {\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\tconst initial = avatar.charAt(0).toUpperCase();\n\t\t\t\tconst color = this._getAvatarColor(avatar);\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-sm\" style=\"background-color: ${color};\">${initial}</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}\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\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-help-header\">\n\t\t\t\t<div class=\"messenger-help-header-top\">\n\t\t\t\t\t<h2>Help</h2>\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=\"currentColor\" 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<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclass=\"messenger-help-search-input\"\n\t\t\t\t\tplaceholder=\"Search for help...\"\n\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t/>\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\"></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}\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-scroll\">\n\t\t\t\t<div class=\"messenger-home-header\">\n\t\t\t\t\t<div class=\"messenger-home-header-top\">\n\t\t\t\t\t\t<div class=\"messenger-home-logo\">\n\t\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"messenger-home-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t\t<button class=\"sdk-close-btn\" aria-label=\"Close\">\n\t\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\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\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-home-welcome\">\n\t\t\t\t\t\t<span class=\"messenger-home-greeting\">Hi there 👋</span>\n\t\t\t\t\t\t<span class=\"messenger-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"messenger-home-body\">\n\t\t\t\t\t${this._renderMessageButton()}\n\t\t\t\t\t${this._renderFeaturedCard()}\n\t\t\t\t\t${recentChangelogHtml}\n\t\t\t\t</div>\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\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500'];\n\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-lg\" style=\"background: ${colors[0]};\">S</div>\n\t\t\t\t\t<div class=\"sdk-avatar sdk-avatar-lg\" style=\"background: ${colors[1]};\">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, 4)\n\t\t\t.map((avatar, index) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\"><img src=\"${avatar}\" alt=\"Team member\" /></div>`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"sdk-avatar sdk-avatar-lg\" style=\"background: ${colors[index % colors.length]};\">${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\tconst sendIcon = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" style=\"flex-shrink: 0;\">\n\t\t\t\t<rect width=\"256\" height=\"256\" fill=\"none\"/>\n\t\t\t\t<line x1=\"144\" y1=\"128\" x2=\"80\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t\t<path d=\"M48.49,221.28A8,8,0,0,0,59.93,231l168-96.09a8,8,0,0,0,0-14l-168-95.85a8,8,0,0,0-11.44,9.67L80,128Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t</svg>\n\t\t`;\n\n\t\tconst caretIcon = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" style=\"flex-shrink: 0;\">\n\t\t\t\t<rect width=\"256\" height=\"256\" fill=\"none\"/>\n\t\t\t\t<polyline points=\"96 48 176 128 96 208\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>\n\t\t\t</svg>\n\t\t`;\n\n\t\tif (openConversation) {\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</div>\n\t\t\t\t\t${sendIcon}\n\t\t\t\t</button>\n\t\t\t\t<button class=\"messenger-home-message-btn messenger-feedback-btn\" data-action=\"feedback\">\n\t\t\t\t\t<span class=\"messenger-home-continue-label\">Leave us feedback</span>\n\t\t\t\t\t${caretIcon}\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>Start a conversation</span>\n\t\t\t\t${sendIcon}\n\t\t\t</button>\n\t\t\t<button class=\"messenger-home-message-btn messenger-feedback-btn\" data-action=\"feedback\">\n\t\t\t\t<span>Leave us feedback</span>\n\t\t\t\t${caretIcon}\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\tconst msgBtn = this.element.querySelector(\n\t\t\t'.messenger-home-message-btn:not(.messenger-feedback-btn)'\n\t\t);\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\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\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\tconst feedbackBtn = this.element.querySelector('.messenger-feedback-btn');\n\t\tif (feedbackBtn) {\n\t\t\tfeedbackBtn.addEventListener('click', () => {\n\t\t\t\tconst url = this.state.urls?.feedback;\n\n\t\t\t\tif (this.options.onFeedbackClick) {\n\t\t\t\t\tthis.options.onFeedbackClick();\n\t\t\t\t} else if (url) {\n\t\t\t\t\twindow.open(url, '_blank');\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'[Messenger] No feedback destination configured. Set `feedbackUrl` in MessengerWidget options.'\n\t\t\t\t\t);\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-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst item = this.state.homeChangelogItems.find(\n\t\t\t\t\t\t(i) => i.id === card.dataset.changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (item?.url) {\n\t\t\t\t\t\twindow.open(item.url, '_blank');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t\t}\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","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\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(\n\t\t\t'.messenger-prechat-submit-text'\n\t\t);\n\t\tconst submitLoading = submitBtn.querySelector(\n\t\t\t'.messenger-prechat-submit-loading'\n\t\t);\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\tthis.state.setIdentified(true, { name, email });\n\n\t\t\tthis._isSubmitting = false;\n\n\t\t\tconst pendingMessage = this.state.pendingMessage;\n\t\t\tif (pendingMessage && this.options.onStartConversation) {\n\t\t\t\tthis.state.pendingMessage = null;\n\t\t\t\tthis.state.setView('chat');\n\n\t\t\t\tawait this.options.onStartConversation(\n\t\t\t\t\tpendingMessage.content,\n\t\t\t\t\tpendingMessage.attachments\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.state.setView('chat');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[PreChatFormView] Error submitting form:', error);\n\t\t\tthis._showError(\n\t\t\t\t'messenger-email-error',\n\t\t\t\t'Something went wrong. Please try again.'\n\t\t\t);\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","import { WebSocketService } from '../core/WebSocketService.js';\nimport {\n\tapplyMessengerCustomStyles,\n\tremoveMessengerCustomStyles,\n} from '../styles/messengerCustomStyles.js';\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';\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\tprimaryColor: options.primaryColor || '#155EEF',\n\t\t\ttextColor: options.textColor || '#1d1d1f',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\tlogoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',\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\tfeaturedContent: options.featuredContent || null,\n\t\t\tfeedbackUrl: options.feedbackUrl || null,\n\t\t\tchangelogUrl: options.changelogUrl || null,\n\t\t\thelpUrl: options.helpUrl || null,\n\t\t\troadmapUrl: options.roadmapUrl || null,\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonFeedbackClick: options.onFeedbackClick || 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\turls: {\n\t\t\t\tfeedback: this.messengerOptions.feedbackUrl,\n\t\t\t\tchangelog: this.messengerOptions.changelogUrl,\n\t\t\t\thelp: this.messengerOptions.helpUrl,\n\t\t\t\troadmap: this.messengerOptions.roadmapUrl,\n\t\t\t},\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\tapplyMessengerCustomStyles({\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t\ttextColor: this.messengerOptions.textColor,\n\t\t\tbackgroundColor: this.messengerOptions.backgroundColor,\n\t\t\ttheme: this.messengerOptions.theme,\n\t\t});\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\tonFeedbackClick: this.messengerOptions.onFeedbackClick,\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\n\tasync _handleStartConversation(messageContent, pendingAttachments) {\n\t\ttry {\n\t\t\tif (!this.messengerState.isIdentified) {\n\t\t\t\tthis.messengerState.pendingMessage = {\n\t\t\t\t\tcontent: messageContent,\n\t\t\t\t\tattachments: pendingAttachments,\n\t\t\t\t};\n\t\t\t\tthis.messengerState.setView('prechat');\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst openConversation = this.messengerState.conversations.find(\n\t\t\t\t(c) => c.status === 'open'\n\t\t\t);\n\n\t\t\tif (openConversation) {\n\t\t\t\tthis.messengerState.setActiveConversation(openConversation.id);\n\t\t\t\tawait this._handleSendMessage(\n\t\t\t\t\topenConversation.id,\n\t\t\t\t\t{ content: messageContent },\n\t\t\t\t\tpendingAttachments\n\t\t\t\t);\n\t\t\t\treturn openConversation;\n\t\t\t}\n\n\t\t\treturn await this.startNewConversation(\n\t\t\t\tmessageContent,\n\t\t\t\t'',\n\t\t\t\tpendingAttachments\n\t\t\t);\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 _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(\n\t\t\t\t\t'[MessengerWidget] Contact identified:',\n\t\t\t\t\tresponse.data.contact_id\n\t\t\t\t);\n\t\t\t\tthis.messengerState.setIdentified(true, {\n\t\t\t\t\tname: contactData.name,\n\t\t\t\t\temail: contactData.email,\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\tmarkAsIdentified(name, email) {\n\t\tthis.messengerState.setIdentified(true, { name, email });\n\t\tconsole.log('[MessengerWidget] Marked as identified:', email);\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, {\n\t\t\tstatus: 'closed',\n\t\t});\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.success && response.data) {\n\t\t\t\tconst collections = response.data.collections || response.data;\n\t\t\t\tconst helpBase = (this.messengerOptions.helpUrl || '').replace(\n\t\t\t\t\t/\\/$/,\n\t\t\t\t\t''\n\t\t\t\t);\n\n\t\t\t\treturn collections.map((collection) => ({\n\t\t\t\t\tid: collection.id,\n\t\t\t\t\ttitle: collection.title,\n\t\t\t\t\tdescription: collection.description || '',\n\t\t\t\t\tarticleCount: collection.article_count || 0,\n\t\t\t\t\turl:\n\t\t\t\t\t\tcollection.url_slug && helpBase\n\t\t\t\t\t\t\t? `${helpBase}/collections/${collection.url_slug}`\n\t\t\t\t\t\t\t: helpBase || null,\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\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\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:\n\t\t\t\t\t\t\t'https://images.unsplash.com/photo-1674027444485-cec3da58eef4?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1666875753105-c63a6f3bdc86?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1762330467475-a565d04e1808?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1523961131990-5ea7c61b2107?w=500&auto=format&fit=crop&q=60',\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://images.unsplash.com/photo-1764773516703-b246ac2ad5ef?w=500&auto=format&fit=crop&q=60',\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\ttry {\n\t\t\tconst response = await this.apiService.getChangelogs({ limit: 20 });\n\n\t\t\tif (response.success && response.data) {\n\t\t\t\tconst changelogs = Array.isArray(response.data) ? response.data : [];\n\t\t\t\tconst changelogBase = (\n\t\t\t\t\tthis.messengerOptions.changelogUrl || ''\n\t\t\t\t).replace(/\\/$/, '');\n\n\t\t\t\tconst mappedItems = changelogs.map((item) => ({\n\t\t\t\t\tid: item.id,\n\t\t\t\t\ttitle: item.title,\n\t\t\t\t\tdescription: item.excerpt || item.description || '',\n\t\t\t\t\ttags: item.labels ? item.labels.map((label) => label.name) : [],\n\t\t\t\t\tcoverImage: item.cover_image || null,\n\t\t\t\t\tpublishedAt: item.published_at,\n\t\t\t\t\turl:\n\t\t\t\t\t\titem.slug && changelogBase\n\t\t\t\t\t\t\t? `${changelogBase}/${item.slug}`\n\t\t\t\t\t\t\t: changelogBase || null,\n\t\t\t\t}));\n\n\t\t\t\treturn {\n\t\t\t\t\thomeItems: mappedItems.slice(0, 3),\n\t\t\t\t\tchangelogItems: mappedItems,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to fetch changelog:', error);\n\t\t\treturn { homeItems: [], changelogItems: [] };\n\t\t}\n\t}\n\n\tasync onMount() {\n\t\tthis.loadInitialData();\n\n\t\tif (this.apiService?.sessionToken) {\n\t\t\tthis._initWebSocket();\n\t\t}\n\n\t\tthis.checkAgentAvailability();\n\n\t\tthis._availabilityInterval = setInterval(() => {\n\t\t\tthis.checkAgentAvailability();\n\t\t}, 60000);\n\t}\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\tremoveMessengerCustomStyles();\n\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}\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}\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}\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`;\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/* ========================================\n CONFETTI\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/* ========================================\n POPUP MODAL\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: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\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/* ========================================\n POPUP ITEM\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-3);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\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: var(--font-size-md);\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: var(--spacing-3) var(--spacing-8);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-white);\n background: var(--color-primary);\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-base);\n font-family: inherit;\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/* ========================================\n POPUP FOOTER / DOTS\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: 8px;\n height: 8px;\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-md);\n transition: all var(--transition-base);\n font-family: inherit;\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/* ========================================\n LIST MODAL\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-2xl);\n overflow: hidden;\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\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: var(--spacing-4) 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 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-md);\n transition: all var(--transition-base);\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/* ========================================\n LIST ITEMS\n ======================================== */\n\n.changelog-list {\n display: flex;\n flex-direction: column;\n}\n\n.changelog-list-item {\n display: flex;\n align-items: center;\n padding: var(--spacing-3) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n cursor: pointer;\n transition: background var(--transition-base);\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-md);\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-text-tertiary);\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-text-secondary);\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/* ========================================\n RESPONSIVE\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(--radius-3xl);\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: var(--font-size-xl);\n }\n\n .changelog-popup-description {\n font-size: var(--font-size-base);\n }\n\n .changelog-popup-btn {\n padding: var(--spacing-3) var(--spacing-7);\n font-size: var(--font-size-base);\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(--radius-2xl);\n }\n\n .changelog-list-item {\n padding: var(--spacing-3) var(--spacing-4);\n }\n\n .changelog-list-item-image img {\n height: 80px;\n }\n}\n`;\n","export const componentsStyles = `\n.sdk-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n border-radius: var(--radius-md);\n border: none;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n font-family: inherit;\n cursor: pointer;\n transition: all var(--transition-base);\n outline: none;\n}\n\n.sdk-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sdk-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.sdk-btn-primary {\n background: var(--color-primary);\n color: var(--color-white);\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n height: 44px;\n padding: 10px 18px;\n}\n\n.sdk-btn-primary:hover:not(:disabled) {\n background: var(--color-primary-hover);\n}\n\n.sdk-btn-primary:active:not(:disabled) {\n background: var(--color-primary-active);\n}\n\n.sdk-btn-secondary {\n background: transparent;\n color: var(--color-neutral-600);\n border: 1px solid var(--color-border);\n height: 44px;\n padding: 10px 18px;\n}\n\n.sdk-btn-secondary:hover:not(:disabled) {\n background: var(--color-neutral-50);\n border-color: var(--color-neutral-400);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-ghost {\n background: transparent;\n color: var(--color-neutral-600);\n}\n\n.sdk-btn-ghost:hover:not(:disabled) {\n background: var(--color-neutral-100);\n color: var(--color-neutral-700);\n}\n\n.sdk-btn-sm {\n height: 36px;\n padding: 8px 14px;\n font-size: var(--font-size-base);\n}\n\n.sdk-btn-lg {\n height: 48px;\n padding: 12px 20px;\n font-size: var(--font-size-lg);\n}\n\n.sdk-btn-pill {\n border-radius: var(--radius-full);\n}\n\n.sdk-btn-block {\n width: 100%;\n}\n\n.sdk-btn-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: none;\n border-radius: var(--radius-md);\n cursor: pointer;\n color: var(--color-text-secondary);\n transition: all var(--transition-base);\n padding: 0;\n}\n\n.sdk-btn-icon:hover {\n background: var(--color-neutral-100);\n color: var(--color-text-primary);\n}\n\n.sdk-input {\n width: 100%;\n height: 44px;\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-input:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-input:disabled {\n background: var(--color-neutral-50);\n cursor: not-allowed;\n}\n\n.sdk-textarea {\n width: 100%;\n min-height: 120px;\n resize: vertical;\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-relaxed);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n}\n\n.sdk-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.sdk-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-select {\n width: 100%;\n height: 44px;\n border-radius: var(--radius-md);\n border: 1px solid var(--color-border);\n padding: 10px 14px;\n font-size: var(--font-size-md);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: all var(--transition-base);\n background: var(--color-white);\n cursor: pointer;\n}\n\n.sdk-select:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.sdk-label {\n display: block;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-tight);\n color: var(--color-neutral-700);\n margin-bottom: var(--spacing-2);\n}\n\n.sdk-form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: var(--spacing-5);\n}\n\n.sdk-form-group:last-child {\n margin-bottom: 0;\n}\n\n.sdk-card {\n background: var(--color-white);\n border-radius: var(--radius-xl);\n box-shadow: var(--shadow-base);\n overflow: hidden;\n}\n\n.sdk-card-header {\n padding: var(--spacing-6);\n border-bottom: 1px solid var(--color-border);\n}\n\n.sdk-card-body {\n padding: var(--spacing-6);\n}\n\n.sdk-card-footer {\n padding: var(--spacing-6);\n border-top: 1px solid var(--color-border);\n}\n\n.sdk-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 var(--transition-slow);\n pointer-events: none;\n z-index: var(--z-modal-backdrop);\n}\n\n.sdk-modal-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.sdk-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}\n\n.sdk-modal.open {\n pointer-events: auto;\n}\n\n.sdk-modal-container {\n position: relative;\n width: 100%;\n max-width: 580px;\n max-height: 90vh;\n background: var(--color-white);\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.sdk-modal.open .sdk-modal-container {\n transform: scale(1) translateY(0);\n opacity: 1;\n}\n\n.sdk-modal-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}\n\n.sdk-modal-title {\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.sdk-modal-body {\n overflow-y: auto;\n max-height: calc(90vh - 120px);\n}\n\n.sdk-close-btn {\n background: none;\n border: none;\n padding: var(--spacing-2);\n cursor: pointer;\n color: var(--color-neutral-500);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n line-height: 1;\n}\n\n.sdk-close-btn:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.sdk-avatar {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-primary);\n color: var(--color-white);\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.sdk-avatar-sm {\n width: 24px;\n height: 24px;\n font-size: var(--font-size-xs);\n}\n\n.sdk-avatar-md {\n width: 32px;\n height: 32px;\n font-size: var(--font-size-sm);\n}\n\n.sdk-avatar-lg {\n width: 40px;\n height: 40px;\n font-size: var(--font-size-base);\n}\n\n.sdk-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.sdk-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px var(--spacing-2);\n border-radius: var(--radius-full);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n line-height: 1;\n}\n\n.sdk-badge-primary {\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n\n.sdk-badge-success {\n background: var(--color-success-light);\n color: var(--color-success-dark);\n}\n\n.sdk-badge-error {\n background: var(--color-error-light);\n color: var(--color-error-dark);\n}\n\n.sdk-badge-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n position: absolute;\n top: -2px;\n right: -2px;\n}\n\n.sdk-badge-dot.primary {\n background: var(--color-primary);\n}\n\n.sdk-badge-dot.error {\n background: var(--color-error);\n border: 2px solid var(--color-white);\n}\n\n.sdk-notification {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n z-index: var(--z-notification);\n background: var(--color-white);\n border-radius: var(--radius-xl);\n box-shadow: var(--shadow-lg);\n min-width: 320px;\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sdk-notification-content {\n display: flex;\n align-items: center;\n padding: var(--spacing-4) var(--spacing-5);\n gap: var(--spacing-3);\n}\n\n.sdk-notification-success {\n border: 1px solid var(--color-success-light);\n}\n\n.sdk-notification-success .sdk-notification-icon {\n width: 20px;\n height: 20px;\n border-radius: var(--radius-full);\n background: var(--color-success);\n color: var(--color-white);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n flex-shrink: 0;\n}\n\n.sdk-notification-text {\n color: var(--color-success-dark);\n font-weight: var(--font-weight-medium);\n font-size: var(--font-size-base);\n flex: 1;\n}\n\n.sdk-notification .sdk-close-btn {\n flex-shrink: 0;\n}\n\n.sdk-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid var(--color-neutral-200);\n border-top-color: var(--color-primary);\n border-radius: var(--radius-full);\n animation: spin 0.8s linear infinite;\n}\n\n.sdk-spinner-sm {\n width: 20px;\n height: 20px;\n border-width: 2px;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\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 fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@media (max-width: 768px) {\n .sdk-modal {\n padding: var(--spacing-4);\n }\n \n .sdk-modal-container {\n max-width: 100%;\n border-radius: var(--spacing-5);\n }\n \n .sdk-notification {\n top: var(--spacing-4);\n right: var(--spacing-4);\n left: var(--spacing-4);\n min-width: auto;\n }\n}\n`;\n","export const designTokens = `\n:root {\n --color-primary: #155EEF;\n --color-primary-hover: #1249CA;\n --color-primary-active: #0D3A9F;\n --color-primary-light: rgba(21, 94, 239, 0.1);\n --color-primary-border: rgba(21, 94, 239, 0.3);\n \n --color-success: #10B981;\n --color-success-hover: #059669;\n --color-success-light: #D1FAE5;\n --color-success-dark: #065F46;\n \n --color-error: #EF4444;\n --color-error-hover: #DC2626;\n --color-error-light: #FEE2E2;\n --color-error-dark: #991B1B;\n --color-error-border: #FECACA;\n \n --color-warning: #F59E0B;\n --color-warning-light: #FEF3C7;\n \n --color-neutral-50: #F9FAFB;\n --color-neutral-100: #F3F4F6;\n --color-neutral-200: #E5E7EB;\n --color-neutral-300: #D1D5DB;\n --color-neutral-400: #9CA3AF;\n --color-neutral-500: #6B7280;\n --color-neutral-600: #4B5563;\n --color-neutral-700: #374151;\n --color-neutral-800: #1F2937;\n --color-neutral-900: #111827;\n \n --color-white: #FFFFFF;\n --color-black: #000000;\n \n --color-background: #FFFFFF;\n --color-surface: #F9FAFB;\n --color-border: #E5E7EB;\n --color-text-primary: #111827;\n --color-text-secondary: #4B5563;\n --color-text-tertiary: #6B7280;\n \n --spacing-1: 4px;\n --spacing-2: 8px;\n --spacing-3: 12px;\n --spacing-4: 16px;\n --spacing-5: 20px;\n --spacing-6: 24px;\n --spacing-7: 28px;\n --spacing-8: 32px;\n --spacing-10: 40px;\n --spacing-12: 48px;\n \n --font-size-xs: 11px;\n --font-size-sm: 12px;\n --font-size-base: 14px;\n --font-size-md: 15px;\n --font-size-lg: 16px;\n --font-size-xl: 18px;\n --font-size-2xl: 20px;\n --font-size-3xl: 24px;\n \n --font-weight-normal: 450;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n \n --line-height-tight: 1.25;\n --line-height-snug: 1.3;\n --line-height-normal: 1.4;\n --line-height-relaxed: 1.5;\n --line-height-loose: 1.6;\n \n --radius-sm: 6px;\n --radius-md: 8px;\n --radius-lg: 10px;\n --radius-xl: 12px;\n --radius-2xl: 16px;\n --radius-3xl: 20px;\n --radius-4xl: 24px;\n --radius-full: 9999px;\n \n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n \n --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);\n --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);\n \n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 999998;\n --z-modal: 999999;\n --z-popover: 1000000;\n --z-tooltip: 1000001;\n --z-notification: 1000002;\n}\n`;\n","export const feedbackStyles = `\n.feedback-widget-button {\n position: fixed;\n z-index: var(--z-notification);\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 touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\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 pointer-events: none;\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 pointer-events: auto;\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 pointer-events: auto;\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 box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\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}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) 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-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`;\n","export const messengerComponentsStyles = `\n\n/* ========================================\n MESSAGES\n ======================================== */\n\n.messenger-message {\n display: flex;\n gap: var(--spacing-2);\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 flex-direction: column;\n}\n\n.messenger-message-row {\n display: flex;\n align-items: flex-end;\n gap: var(--spacing-2);\n}\n\n.messenger-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-message-avatar {\n flex-shrink: 0;\n}\n\n.messenger-message-sender {\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-secondary);\n margin-bottom: 2px;\n margin-left: 0;\n}\n\n.messenger-message-bubble {\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-2xl);\n word-wrap: break-word;\n}\n\n.messenger-message-own .messenger-message-bubble {\n background: var(--color-primary);\n color: var(--color-white);\n border-bottom-right-radius: var(--spacing-1);\n}\n\n.messenger-message-received .messenger-message-bubble {\n background: var(--color-neutral-100);\n color: var(--color-text-primary);\n border-bottom-left-radius: var(--spacing-1);\n}\n\n.messenger-message-content {\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n}\n\n.messenger-message-time {\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n margin-top: 2px;\n padding: 0 var(--spacing-1);\n}\n\n.messenger-message-image {\n max-width: 220px;\n max-height: 200px;\n width: auto;\n height: auto;\n border-radius: var(--radius-lg);\n margin-top: var(--spacing-1);\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: var(--spacing-2);\n margin-top: var(--spacing-1);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-lg);\n background: var(--color-neutral-100);\n color: var(--color-primary);\n text-decoration: none;\n font-size: var(--font-size-sm);\n transition: background var(--transition-base);\n max-width: 100%;\n word-break: break-all;\n cursor: pointer;\n}\n\n.messenger-message-file:hover {\n background: var(--color-neutral-200);\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-closed-banner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n margin: var(--spacing-4);\n background: var(--color-success-light);\n color: var(--color-success-dark);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n}\n\n/* ========================================\n CHAT HEADER\n ======================================== */\n\n.messenger-chat-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n}\n\n.messenger-chat-header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.messenger-chat-title {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: var(--spacing-4);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\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: var(--spacing-10);\n}\n\n.messenger-chat-empty-avatars {\n margin-bottom: var(--spacing-4);\n}\n\n.messenger-chat-empty h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-chat-empty p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n max-width: 240px;\n}\n\n/* ========================================\n COMPOSE AREA\n ======================================== */\n\n.messenger-chat-compose {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n border-top: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-compose-input-wrapper {\n flex: 1;\n background: var(--color-neutral-100);\n border-radius: var(--radius-lg);\n padding: var(--spacing-2) var(--spacing-4);\n}\n\n.messenger-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: var(--color-text-primary);\n font-size: var(--font-size-md);\n line-height: var(--line-height-normal);\n resize: none;\n max-height: 120px;\n font-family: inherit;\n}\n\n.messenger-compose-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.messenger-compose-send {\n width: 40px;\n height: 40px;\n background: var(--color-primary);\n border: none;\n border-radius: var(--radius-full);\n color: var(--color-white);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--transition-base);\n flex-shrink: 0;\n}\n\n.messenger-compose-send:hover:not(:disabled) {\n background: var(--color-primary-hover);\n transform: scale(1.05);\n}\n\n.messenger-compose-send:disabled {\n background: var(--color-neutral-300);\n cursor: not-allowed;\n}\n\n.messenger-compose-file-input {\n display: none;\n}\n\n/* ========================================\n TYPING INDICATOR\n ======================================== */\n\n.messenger-typing-indicator {\n display: none;\n align-items: center;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-3);\n margin: var(--spacing-1) 0;\n}\n\n.messenger-typing-dots {\n display: flex;\n align-items: center;\n gap: 4px;\n background: var(--color-neutral-100);\n padding: var(--spacing-2) var(--spacing-3);\n border-radius: var(--radius-2xl);\n}\n\n.messenger-typing-dots span {\n width: 6px;\n height: 6px;\n background: var(--color-neutral-400);\n border-radius: var(--radius-full);\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: var(--font-size-xs);\n color: var(--color-text-tertiary);\n}\n\n/* ========================================\n NAVIGATION TABS\n ======================================== */\n\n.messenger-panel-nav {\n border-top: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-nav-tabs {\n display: flex;\n padding: var(--spacing-1) var(--spacing-2);\n gap: var(--spacing-1);\n}\n\n.messenger-nav-footer {\n padding: var(--spacing-1) var(--spacing-2);\n text-align: center;\n}\n\n.messenger-powered-by {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n color: var(--color-text-tertiary);\n text-decoration: none;\n transition: color var(--transition-base);\n}\n\n.messenger-powered-by:hover {\n color: var(--color-text-secondary);\n}\n\n.messenger-powered-by svg {\n width: 12px;\n height: 14px;\n}\n\n.messenger-powered-by strong {\n font-weight: var(--font-weight-semibold);\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: var(--spacing-2) var(--spacing-1);\n background: none;\n border: none;\n cursor: pointer;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n position: relative;\n}\n\n.messenger-nav-tab:hover {\n background: var(--color-neutral-50);\n}\n\n.messenger-nav-icon {\n color: var(--color-text-secondary);\n transition: color var(--transition-base);\n}\n\n.messenger-nav-label {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-secondary);\n transition: color var(--transition-base);\n}\n\n.messenger-nav-tab.active .messenger-nav-icon,\n.messenger-nav-tab.active .messenger-nav-label {\n color: var(--color-primary);\n}\n\n.messenger-nav-badge {\n position: absolute;\n top: var(--spacing-1);\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: var(--color-error);\n color: var(--color-white);\n font-size: 10px;\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--spacing-1);\n}\n\n/* ========================================\n PRECHAT\n ======================================== */\n\n.messenger-prechat-view {\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 display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-5);\n z-index: var(--z-popover);\n}\n\n.messenger-prechat-card {\n background: var(--color-white);\n border-radius: var(--radius-2xl);\n padding: var(--spacing-6);\n width: 100%;\n max-width: 360px;\n box-shadow: var(--shadow-xl);\n}\n\n.messenger-prechat-title {\n margin: 0 0 var(--spacing-5);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n text-align: center;\n}\n\n.messenger-prechat-error {\n display: none;\n font-size: var(--font-size-sm);\n color: var(--color-error);\n margin-top: calc(var(--spacing-1) * -1);\n}\n\n.messenger-prechat-actions {\n display: flex;\n gap: var(--spacing-3);\n margin-top: var(--spacing-2);\n}\n\n.messenger-prechat-skip {\n flex: 1;\n}\n\n.messenger-prechat-submit {\n flex: 2;\n}\n\n.messenger-prechat-submit-loading {\n display: none;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-prechat-submit-loading i {\n animation: spin 0.8s linear infinite;\n}\n`;\n","export const messengerCoreStyles = `\n\n.messenger-launcher {\n position: fixed;\n z-index: var(--z-modal);\n}\n\n.messenger-launcher-bottom-right {\n bottom: var(--spacing-5);\n right: var(--spacing-5);\n}\n\n.messenger-launcher-bottom-left {\n bottom: var(--spacing-5);\n left: var(--spacing-5);\n}\n\n.messenger-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: var(--radius-full);\n border: none;\n background: var(--color-primary);\n color: var(--color-white);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--shadow-lg);\n transition: all var(--transition-slow);\n position: relative;\n}\n\n.messenger-launcher-btn:hover {\n transform: translateY(-2px);\n box-shadow: var(--shadow-xl);\n}\n\n.messenger-launcher-btn:active {\n transform: scale(0.95);\n}\n\n.messenger-launcher-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n background: var(--color-error);\n color: var(--color-white);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n border-radius: var(--radius-full);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2px solid var(--color-white);\n}\n\n.messenger-panel {\n position: fixed;\n z-index: var(--z-popover);\n width: 440px;\n height: 720px;\n max-height: calc(100vh - 100px);\n display: none;\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n transition: all var(--transition-slow);\n}\n\n.messenger-panel.open {\n display: block;\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.messenger-panel-bottom-right {\n bottom: 90px;\n right: var(--spacing-5);\n}\n\n.messenger-panel-bottom-left {\n bottom: 90px;\n left: var(--spacing-5);\n}\n\n.messenger-panel-content {\n background: var(--color-white);\n height: 100%;\n border-radius: var(--radius-2xl);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n border: 1px solid var(--color-border);\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.messenger-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.messenger-avatar-stack .sdk-avatar {\n margin-left: -8px;\n}\n\n.messenger-avatar-stack .sdk-avatar:first-child {\n margin-left: 0;\n}\n\n.messenger-avatar-stack-tiny .sdk-avatar {\n margin-left: -6px;\n}\n\n.messenger-avatar-stack-tiny .sdk-avatar:first-child {\n margin-left: 0;\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: var(--spacing-4);\n right: var(--spacing-4);\n }\n\n .messenger-launcher-bottom-left {\n left: var(--spacing-4);\n }\n}\n`;\n","export const messengerFeaturesStyles = `\n/* ========================================\n ATTACHMENTS\n ======================================== */\n.messenger-compose-attachments-preview {\n display: none;\n flex-wrap: wrap;\n gap: var(--spacing-2);\n padding: var(--spacing-2) var(--spacing-4);\n border-top: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-attachment-preview {\n position: relative;\n width: 56px;\n height: 56px;\n border-radius: var(--radius-lg);\n overflow: hidden;\n border: 1px solid var(--color-border);\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: var(--color-neutral-100);\n color: var(--color-text-secondary);\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: var(--radius-full);\n color: var(--color-white);\n font-size: var(--font-size-xs);\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: background var(--transition-base);\n}\n\n.messenger-attachment-remove:hover {\n background: var(--color-error);\n}\n\n/* ========================================\n EMAIL OVERLAY\n ======================================== */\n.messenger-email-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n display: none;\n align-items: flex-end;\n z-index: 20;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: auto;\n}\n\n.messenger-email-card {\n width: 100%;\n animation: messenger-slide-up 0.25s ease;\n}\n\n.messenger-email-actions {\n display: flex;\n gap: var(--spacing-2);\n margin-top: var(--spacing-1);\n}\n\n/* ========================================\n EMPTY STATE\n ======================================== */\n.messenger-empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: var(--spacing-10);\n}\n\n.messenger-empty-state-icon {\n color: var(--color-neutral-300);\n margin-bottom: var(--spacing-4);\n}\n\n.messenger-empty-state h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-empty-state p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n}\n\n/* ========================================\n ANIMATIONS\n ======================================== */\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes messenger-typing-bounce {\n 0%, 80%, 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n\n@keyframes messenger-slide-up {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes messenger-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n@media (max-width: 480px) {\n .messenger-prechat-overlay {\n padding: var(--spacing-4);\n }\n .messenger-prechat-card {\n max-width: 100%;\n }\n}\n`;\n","export const messengerViewsStyles = `\n\n/* ========================================\n HOME VIEW\n ======================================== */\n\n.messenger-home-view {\n background: linear-gradient(180deg, #f0f4ff 0%, #FFFFFF 50%);\n position: relative;\n overflow: hidden;\n}\n\n.messenger-home-view::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 600px;\n height: 600px;\n background: radial-gradient(circle, rgba(21, 94, 239, 0.08) 0%, transparent 70%);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.messenger-home-view::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 500px;\n height: 500px;\n background: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);\n filter: blur(60px);\n pointer-events: none;\n z-index: 1;\n}\n\n.messenger-home-scroll {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n.messenger-home-header {\n padding: var(--spacing-6) var(--spacing-5);\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n}\n\n.messenger-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-8);\n position: relative;\n z-index: 2;\n}\n\n.messenger-home-logo {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-lg);\n overflow: visible;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-home-logo img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: var(--radius-lg);\n}\n\n.messenger-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: var(--spacing-4);\n margin-left: var(--spacing-4);\n}\n\n.messenger-home-welcome {\n display: flex;\n flex-direction: column;\n text-align: left;\n position: relative;\n z-index: 2;\n}\n\n.messenger-home-greeting {\n font-size: 28px;\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-tight);\n}\n\n.messenger-home-question {\n font-size: 28px;\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-tight);\n}\n\n.messenger-home-body {\n flex: 1;\n padding: 0 var(--spacing-5) var(--spacing-5);\n position: relative;\n z-index: 2;\n}\n\n.messenger-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-4) var(--spacing-5);\n background: var(--color-white);\n border: none;\n border-radius: 8px;\n color: var(--color-text-primary);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-base);\n margin-bottom: var(--spacing-5);\n font-family: inherit;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-home-message-btn:hover {\n background: var(--color-neutral-50);\n transform: translateX(4px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-home-continue-btn {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-3);\n}\n\n.messenger-home-continue-btn > svg {\n flex-shrink: 0;\n}\n\n.messenger-home-continue-info {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-1);\n text-align: left;\n flex: 1;\n}\n\n.messenger-home-continue-label {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n}\n\n.messenger-home-continue-preview {\n font-size: var(--font-size-sm);\n opacity: 0.6;\n font-weight: var(--font-weight-normal);\n}\n\n.messenger-home-featured {\n background: var(--color-neutral-50);\n border-radius: var(--radius-xl);\n overflow: hidden;\n margin-bottom: var(--spacing-5);\n border: 1px solid var(--color-border);\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: var(--spacing-4);\n}\n\n.messenger-home-featured-content h3 {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n}\n\n.messenger-home-featured-content p {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n}\n\n.messenger-home-featured-btn {\n margin-top: var(--spacing-3);\n}\n\n.messenger-home-changelog-section {\n margin-top: var(--spacing-5);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n}\n\n.messenger-home-changelog-card {\n background: var(--color-white);\n border-radius: 8px;\n overflow: hidden;\n cursor: pointer;\n transition: all var(--transition-base);\n border: none;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-home-changelog-card:hover {\n background: var(--color-neutral-50);\n transform: translateY(-2px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n}\n\n.messenger-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.messenger-home-changelog-cover-text {\n position: absolute;\n bottom: var(--spacing-3);\n left: var(--spacing-3);\n right: var(--spacing-3);\n color: var(--color-white);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n line-height: var(--line-height-snug);\n}\n\n.messenger-home-changelog-card-content {\n padding: var(--spacing-4);\n border-top: 1px solid var(--color-border);\n}\n\n.messenger-home-changelog-card-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-home-changelog-card-desc {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.messenger-home-availability,\n.messenger-chat-availability {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n margin-top: var(--spacing-2);\n font-size: var(--font-size-sm);\n color: var(--color-text-secondary);\n}\n\n.messenger-availability-dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n flex-shrink: 0;\n}\n\n.messenger-availability-online {\n background: var(--color-success);\n box-shadow: 0 0 0 2px var(--color-success-light);\n}\n\n.messenger-availability-away {\n background: var(--color-neutral-400);\n}\n\n.messenger-availability-text {\n opacity: 0.9;\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: var(--spacing-4) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n}\n\n.messenger-conversations-header h2 {\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.messenger-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-conversations-list {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-conversation-item + .messenger-conversation-item {\n border-top: 1px solid var(--color-border);\n}\n\n.messenger-conversation-item {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-3);\n padding: 10px var(--spacing-4);\n cursor: pointer;\n transition: background var(--transition-base);\n}\n\n.messenger-conversation-item:hover {\n background: var(--color-neutral-50);\n}\n\n.messenger-conversation-avatars {\n flex-shrink: 0;\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: var(--spacing-1);\n gap: var(--spacing-3);\n}\n\n.messenger-conversation-title {\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-conversation-time {\n font-size: var(--font-size-sm);\n color: var(--color-text-secondary);\n flex-shrink: 0;\n}\n\n.messenger-conversation-preview {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n.messenger-conversation-message {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n color: var(--color-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: var(--line-height-normal);\n}\n\n.messenger-conversation-item.unread .messenger-conversation-message {\n color: var(--color-text-primary);\n font-weight: var(--font-weight-medium);\n}\n\n.messenger-unread-dot {\n width: 8px;\n height: 8px;\n background: var(--color-primary);\n border-radius: var(--radius-full);\n flex-shrink: 0;\n}\n\n.messenger-conversations-footer {\n padding: var(--spacing-4);\n border-top: none;\n}\n\n.messenger-new-message-btn {\n max-width: 220px;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-2);\n padding: var(--spacing-3) var(--spacing-4);\n background: var(--color-white);\n border: none;\n border-radius: var(--radius-xl);\n color: var(--color-text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-base);\n font-family: inherit;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-new-message-btn:hover {\n background: var(--color-neutral-50);\n transform: translateX(4px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 2px 2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n/* ========================================\n HELP VIEW\n ======================================== */\n\n.messenger-help-header {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3);\n padding: var(--spacing-4) var(--spacing-5) var(--spacing-5);\n border-bottom: 1px solid var(--color-border);\n background: var(--color-white);\n}\n\n.messenger-help-header-top {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.messenger-help-header-top h2 {\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.messenger-help-header-top .sdk-close-btn {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-help-search-input {\n width: 100%;\n background: var(--color-neutral-50);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n padding: var(--spacing-2) var(--spacing-3);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n color: var(--color-text-primary);\n font-family: inherit;\n outline: none;\n transition: border-color var(--transition-base);\n}\n\n.messenger-help-search-input:focus {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.messenger-help-search-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.messenger-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-help-collections-header {\n display: none;\n}\n\n.messenger-help-collections {\n padding: 0;\n}\n\n.messenger-help-collection {\n display: flex;\n align-items: center;\n padding: var(--spacing-4) var(--spacing-5);\n cursor: pointer;\n transition: background var(--transition-base);\n border-bottom: 1px solid var(--color-border);\n}\n\n.messenger-help-collection:hover {\n background: var(--color-neutral-50);\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 var(--spacing-1);\n font-size: var(--font-size-md);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-help-collection-desc {\n margin: 0 0 var(--spacing-1);\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n line-height: var(--line-height-normal);\n}\n\n.messenger-help-collection-count {\n font-size: var(--font-size-sm);\n color: var(--color-text-tertiary);\n}\n\n.messenger-help-collection-arrow {\n color: var(--color-text-tertiary);\n flex-shrink: 0;\n margin-left: var(--spacing-3);\n}\n\n.messenger-help-footer {\n padding: var(--spacing-4) var(--spacing-5);\n border-top: 1px solid var(--color-border);\n text-align: center;\n}\n\n.messenger-help-footer-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-2);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n color: var(--color-text-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--transition-base);\n}\n\n.messenger-help-footer-link:hover {\n color: var(--color-primary);\n}\n\n/* ========================================\n CHANGELOG VIEW\n ======================================== */\n\n.messenger-changelog-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-3) var(--spacing-5);\n}\n\n.messenger-changelog-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.messenger-changelog-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-changelog-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n padding: var(--spacing-4);\n}\n\n.messenger-changelog-card {\n background: var(--color-white);\n border-radius: var(--radius-xl);\n overflow: hidden;\n cursor: pointer;\n transition: all var(--transition-base);\n border: none;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;\n}\n\n.messenger-changelog-card:hover {\n transform: translateY(-2px);\n box-shadow: rgba(9, 30, 66, 0.3) 0px 4px 8px -2px, rgba(9, 30, 66, 0.18) 0px 0px 1px 1px;\n}\n\n.messenger-changelog-cover {\n width: 100%;\n height: 160px;\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: var(--spacing-4);\n}\n\n.messenger-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-2);\n margin-bottom: var(--spacing-2);\n}\n\n.messenger-changelog-title {\n margin: 0 0 var(--spacing-2);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-bold);\n color: var(--color-text-primary);\n line-height: var(--line-height-snug);\n}\n\n.messenger-changelog-description {\n margin: 0;\n font-size: var(--font-size-base);\n color: var(--color-text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.messenger-changelog-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: var(--spacing-3);\n}\n\n.messenger-changelog-date {\n font-size: var(--font-size-sm);\n color: var(--color-text-tertiary);\n}\n\n.messenger-changelog-arrow {\n color: var(--color-text-tertiary);\n}\n`;\n","import { messengerComponentsStyles } from './messenger-components.js';\nimport { messengerCoreStyles } from './messenger-core.js';\nimport { messengerFeaturesStyles } from './messenger-features.js';\nimport { messengerViewsStyles } from './messenger-views.js';\n\nexport const messengerStyles =\n\tmessengerCoreStyles +\n\tmessengerViewsStyles +\n\tmessengerComponentsStyles +\n\tmessengerFeaturesStyles;\n\nexport {\n\tmessengerComponentsStyles,\n\tmessengerCoreStyles,\n\tmessengerFeaturesStyles,\n\tmessengerViewsStyles,\n};\n","export const surveyStyles = `\n.feedback-survey-container {\n display: none;\n}\n\n.feedback-survey-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 z-index: var(--z-modal-backdrop);\n animation: fadeIn var(--transition-slow);\n}\n\n/* ========================================\n SURVEY CARD\n ======================================== */\n\n.feedback-survey {\n position: fixed;\n z-index: var(--z-modal);\n background: var(--color-white);\n border-radius: var(--radius-2xl);\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n padding: var(--spacing-6);\n min-width: 320px;\n max-width: 400px;\n font-family: inherit;\n}\n\n.feedback-survey-bottom-right {\n bottom: var(--spacing-6);\n right: var(--spacing-6);\n}\n\n.feedback-survey-bottom-left {\n bottom: var(--spacing-6);\n left: var(--spacing-6);\n}\n\n.feedback-survey-center {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.feedback-survey-bottom {\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;\n max-width: none;\n}\n\n.feedback-survey-close {\n position: absolute;\n top: var(--spacing-3);\n right: var(--spacing-3);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-neutral-500);\n padding: 0;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n transition: all var(--transition-base);\n}\n\n.feedback-survey-close:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.feedback-survey-title {\n margin: 0 0 var(--spacing-2) 0;\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-bold);\n padding-right: var(--spacing-6);\n color: var(--color-text-primary);\n}\n\n.feedback-survey-description {\n color: var(--color-text-secondary);\n margin: 0 0 var(--spacing-5) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-relaxed);\n}\n\n.feedback-survey-content {\n margin-bottom: var(--spacing-4);\n}\n\n/* ========================================\n NPS\n ======================================== */\n\n.feedback-survey-nps {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-1);\n}\n\n.feedback-survey-nps-btn {\n width: 28px;\n height: 36px;\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n transition: all var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-nps-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.feedback-survey-nps-btn.selected {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-white);\n}\n\n/* ========================================\n CSAT\n ======================================== */\n\n.feedback-survey-csat {\n display: flex;\n justify-content: center;\n gap: var(--spacing-4);\n}\n\n.feedback-survey-csat-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 36px;\n transition: transform var(--transition-fast);\n padding: var(--spacing-2);\n}\n\n.feedback-survey-csat-btn:hover {\n transform: scale(1.1);\n}\n\n.feedback-survey-csat-btn.selected {\n transform: scale(1.2);\n}\n\n/* ========================================\n CES\n ======================================== */\n\n.feedback-survey-ces {\n display: flex;\n justify-content: space-between;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-ces-btn {\n flex: 1;\n padding: var(--spacing-3) var(--spacing-2);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n cursor: pointer;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n transition: all var(--transition-fast);\n font-family: inherit;\n text-align: center;\n}\n\n.feedback-survey-ces-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.feedback-survey-ces-btn.selected {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-white);\n}\n\n.feedback-survey-labels {\n display: flex;\n justify-content: space-between;\n margin-top: var(--spacing-2);\n font-size: var(--font-size-xs);\n color: var(--color-text-tertiary);\n}\n\n/* ========================================\n FREQUENCY\n ======================================== */\n\n.feedback-survey-frequency {\n display: flex;\n gap: var(--spacing-2);\n}\n\n.feedback-survey-freq-btn {\n flex: 1;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n background: var(--color-surface);\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--color-text-primary);\n transition: all var(--transition-fast);\n font-family: inherit;\n}\n\n.feedback-survey-freq-btn:hover {\n border-color: var(--color-primary);\n background: var(--color-white);\n}\n\n.feedback-survey-freq-btn.selected {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-white);\n}\n\n/* ========================================\n FORM INPUTS\n ======================================== */\n\n.feedback-survey-feedback {\n margin-top: var(--spacing-4);\n}\n\n.feedback-survey-textarea {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n resize: none;\n height: 80px;\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n box-sizing: border-box;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-textarea::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-textarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.feedback-survey-select {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n cursor: pointer;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-select:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n.feedback-survey-input {\n width: 100%;\n padding: var(--spacing-3);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n background: var(--color-white);\n color: var(--color-text-primary);\n font-family: inherit;\n box-sizing: border-box;\n transition: border-color var(--transition-base);\n outline: none;\n}\n\n.feedback-survey-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.feedback-survey-input:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px var(--color-primary-light);\n}\n\n/* ========================================\n SUBMIT & FEEDBACK\n ======================================== */\n\n.feedback-survey-submit {\n width: 100%;\n margin-top: var(--spacing-3);\n padding: var(--spacing-3);\n background: var(--color-primary);\n color: var(--color-white);\n border: 1px solid var(--color-primary);\n border-radius: var(--radius-md);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n cursor: pointer;\n font-family: inherit;\n transition: all var(--transition-base);\n}\n\n.feedback-survey-submit:hover {\n background: var(--color-primary-hover);\n border-color: var(--color-primary-hover);\n}\n\n.feedback-survey-error {\n color: var(--color-error);\n font-size: var(--font-size-sm);\n margin-top: var(--spacing-2);\n text-align: center;\n}\n\n.feedback-survey-success {\n position: fixed;\n top: var(--spacing-6);\n right: var(--spacing-6);\n background: var(--color-success);\n color: var(--color-white);\n padding: var(--spacing-3) var(--spacing-5);\n border-radius: var(--radius-xl);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n z-index: var(--z-notification);\n box-shadow: var(--shadow-lg);\n font-family: inherit;\n}\n\n.feedback-survey-success > div {\n display: flex;\n align-items: center;\n gap: var(--spacing-2);\n}\n\n/* ========================================\n RESPONSIVE\n ======================================== */\n\n@media (max-width: 768px) {\n .feedback-survey {\n min-width: 300px;\n }\n\n .feedback-survey-bottom {\n padding: var(--spacing-5);\n }\n\n .feedback-survey-nps-btn {\n width: 24px;\n height: 32px;\n font-size: var(--font-size-xs);\n }\n\n .feedback-survey-csat-btn {\n font-size: 32px;\n }\n}\n`;\n","import { baseStyles } from './base.js';\nimport { changelogStyles } from './changelog.js';\nimport { componentsStyles } from './components.js';\nimport { designTokens } from './design-tokens.js';\nimport { feedbackStyles } from './feedback.js';\nimport { messengerStyles } from './messenger.js';\nimport { surveyStyles } from './survey.js';\n\nexport const CSS_STYLES =\n\tdesignTokens +\n\tbaseStyles +\n\tcomponentsStyles +\n\tfeedbackStyles +\n\tchangelogStyles +\n\tsurveyStyles +\n\tmessengerStyles;\n\nexport {\n\tbaseStyles,\n\tchangelogStyles,\n\tcomponentsStyles,\n\tdesignTokens,\n\tfeedbackStyles,\n\tmessengerStyles,\n\tsurveyStyles,\n};\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};\n"],"names":["MOCK_CONVERSATIONS","MOCK_MESSAGES","delay","APIError"],"mappings":"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AEA;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;;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;;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;;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;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;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;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;;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;AACA;AACA,CAAC;;CCtlBM,MAAM,gBAAgB,GAAG;AAChC;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;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;;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;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;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,CAAC;;CCzfM,MAAM,YAAY,GAAG;AAC5B;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCvGM,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;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;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,CAAC;;CCvQM,MAAM,yBAAyB,GAAG;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;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;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;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;;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;;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;;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;CCxdM,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;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;;AAEA;AACA;AACA;;AAEA;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;AACA,CAAC;;CC9JM,MAAM,uBAAuB,GAAG;AACvC;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;;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;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCxKM,MAAM,oBAAoB,GAAG;;AAEpC;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;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;;AAEA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;;AAEA;AACA;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;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;;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;;AAEA;AACA;AACA;;AAEA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;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;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;CCtqBM,MAAM,eAAe;CAC5B,CAAC,mBAAmB;CACpB,CAAC,oBAAoB;CACrB,CAAC,yBAAyB;CAC1B,CAAC,uBAAuB;;CCTjB,MAAM,YAAY,GAAG;AAC5B;AACA;AACA;;AAEA;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;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;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;;AAEA;AACA;AACA;;AAEA;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;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;CC5XM,MAAM,UAAU;CACvB,CAAC,YAAY;CACb,CAAC,UAAU;CACX,CAAC,gBAAgB;CACjB,CAAC,cAAc;CACf,CAAC,eAAe;CAChB,CAAC,YAAY;CACb,CAAC,eAAe;;CCMhB,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;CAChC,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;CAClC,CAAC;CACD;;CAEA,SAAS,QAAQ,GA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"}
|