aizek-chatbot 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cx.ts","../src/components/Button.tsx","../src/hooks/useChatbot.ts","../src/services/chatWidgetApi.ts","../src/styles/messageStyles.ts","../src/styles/inputStyles.ts","../src/styles/headerStyles.ts","../src/styles/containerStyles.ts","../src/styles/loadingStyles.ts","../src/styles/alertStyles.ts","../src/components/FloatingChat.tsx"],"names":["useState","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { AuthConfig, HeadersType } from \"../types/chatbot\";\r\n\r\nexport function cx(...args: Array<string | false | null | undefined>): string {\r\n return args.filter(Boolean).join(\" \");\r\n}\r\n\r\nexport function validateHeaders(\r\n headers: HeadersType,\r\n authConfig: AuthConfig,\r\n opts: { caseSensitive?: boolean; allowExtra?: boolean } = {}\r\n) {\r\n const { caseSensitive = false, allowExtra = false } = opts;\r\n\r\n const normalize = (s: string) => (caseSensitive ? s : s.toLowerCase());\r\n\r\n const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);\r\n const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);\r\n\r\n const headerKeys = headerEntries.map(([k]) => k);\r\n const authKeys = authEntries.map(([k]) => k);\r\n\r\n const requiredSet = new Set(authKeys);\r\n\r\n const missingKeys = authKeys.filter(k => !headerKeys.includes(k));\r\n const extraKeys = headerKeys.filter(k => !requiredSet.has(k));\r\n\r\n // 🔍 1. Gerekli tüm key’ler mevcut mu?\r\n const hasAllRequired = missingKeys.length === 0;\r\n // 🔍 2. Fazla key var mı?\r\n const hasExtraKeys = extraKeys.length > 0 && !allowExtra;\r\n // 🔍 3. Gerekli değerler boş mu?\r\n const emptyValueKeys = authKeys.filter(k => {\r\n const val = headerEntries.find(([key]) => key === k)?.[1];\r\n return !val || val.length === 0;\r\n });\r\n\r\n const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;\r\n\r\n return { isValid, missingKeys, extraKeys, emptyValueKeys };\r\n}","import * as React from \"react\";\r\nimport { cx } from \"../utils/cx\";\r\nimport { ButtonProps, ButtonSize, ButtonVariant } from \"../types/button\";\r\n\r\n\r\n\r\n\r\nconst base: React.CSSProperties = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderRadius: 12,\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n transition: \"background-color .2s ease, color .2s ease, border-color .2s ease\",\r\n outline: \"none\",\r\n cursor: \"pointer\",\r\n};\r\n\r\n\r\nconst sizes: Record<ButtonSize, React.CSSProperties> = {\r\n sm: { height: 36, padding: \"0 12px\", fontSize: 14 },\r\n md: { height: 40, padding: \"0 16px\", fontSize: 16 },\r\n lg: { height: 44, padding: \"0 20px\", fontSize: 18 },\r\n};\r\n\r\n\r\nconst palette = {\r\n brand: {\r\n primary: \"#2563eb\",\r\n primaryHover: \"#1d4ed8\",\r\n },\r\n};\r\n\r\n\r\nfunction styleFor(variant: ButtonVariant): React.CSSProperties {\r\n switch (variant) {\r\n case \"outline\":\r\n return {\r\n background: \"transparent\",\r\n color: palette.brand.primary,\r\n border: `1px solid ${palette.brand.primary}`,\r\n };\r\n case \"ghost\":\r\n return {\r\n background: \"transparent\",\r\n color: palette.brand.primary,\r\n border: \"1px solid transparent\",\r\n };\r\n default:\r\n return {\r\n background: palette.brand.primary,\r\n color: \"#fff\",\r\n border: \"1px solid transparent\",\r\n };\r\n }\r\n}\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ variant = \"primary\", size = \"md\", style, className, onMouseEnter, onMouseLeave, ...props }, ref) => {\r\n const [hover, setHover] = React.useState(false);\r\n\r\n\r\n const hoverStyle: React.CSSProperties =\r\n variant === \"primary\"\r\n ? { background: hover ? palette.brand.primaryHover : palette.brand.primary }\r\n : variant === \"outline\"\r\n ? { borderColor: hover ? palette.brand.primaryHover : palette.brand.primary }\r\n : { background: hover ? \"rgba(37, 99, 235, 0.08)\" : \"transparent\" };\r\n\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n className={cx(\"rui-btn\", className)}\r\n style={{ ...base, ...sizes[size], ...styleFor(variant), ...(hover ? hoverStyle : {}), ...style }}\r\n onMouseEnter={(e) => {\r\n setHover(true);\r\n onMouseEnter?.(e);\r\n }}\r\n onMouseLeave={(e) => {\r\n setHover(false);\r\n onMouseLeave?.(e);\r\n }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nButton.displayName = \"Button\";","import { useState } from 'react';\r\nimport { Message } from '../types/chatbot';\r\nimport OpenAI from \"openai\";\r\n\r\n\r\nexport interface UseChatbotOptions {\r\n apiKey?: string;\r\n mcpUrl?: string;\r\n headers?: Record<string, string>;\r\n}\r\n\r\nexport const useChatbot = (options: UseChatbotOptions = {}) => {\r\n const { mcpUrl, apiKey } = options;\r\n const client = new OpenAI({ apiKey: apiKey, dangerouslyAllowBrowser: true, });\r\n const [responseId, setResponseId] = useState<string | null>(null);\r\n\r\n const [messages, setMessages] = useState<Message[]>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const generateId = () => {\r\n return Date.now().toString() + Math.random().toString(36).substr(2, 9);\r\n };\r\n\r\n const addMessage = (content: string, role: 'user' | 'assistant') => {\r\n const newMessage: Message = {\r\n id: generateId(),\r\n content,\r\n role,\r\n timestamp: new Date(),\r\n };\r\n setMessages(prev => [...prev, newMessage]);\r\n return newMessage;\r\n };\r\n\r\n const sendMessage = async (message: string) => {\r\n if (!message.trim() || isLoading) return;\r\n\r\n addMessage(message, 'user');\r\n setIsLoading(true);\r\n\r\n\r\n try {\r\n let resp: OpenAI.Responses.Response & { _request_id?: string | null; };\r\n console.log(options.headers);\r\n\r\n resp = await client.responses.create({\r\n model: \"gpt-5\",\r\n tools: [\r\n {\r\n type: \"mcp\",\r\n server_label: \"aizek-mcp\",\r\n server_url: mcpUrl,\r\n require_approval: \"never\",\r\n headers: options.headers || {}\r\n },\r\n ],\r\n input: message,\r\n previous_response_id: responseId || undefined,\r\n });\r\n\r\n setResponseId(resp.id);\r\n\r\n\r\n let responseText = '';\r\n\r\n if (resp && Array.isArray(resp)) {\r\n\r\n // Find the message type in the response\r\n const messageItem = resp.find(item => item.type === \"message\");\r\n\r\n if (messageItem && messageItem.content && Array.isArray(messageItem.content)) {\r\n\r\n const textContent = messageItem.content.find((content: any) => content.type === \"output_text\");\r\n\r\n if (textContent && textContent.text) {\r\n responseText = textContent.text;\r\n }\r\n }\r\n } else {\r\n\r\n if (resp && resp.output_text) {\r\n responseText = resp.output_text;\r\n }\r\n else if (typeof resp === 'string') {\r\n responseText = resp;\r\n }\r\n }\r\n\r\n if (!responseText) {\r\n responseText = `\"${message}\" mesajınızı aldım. Size nasıl yardımcı olabilirim?`;\r\n }\r\n\r\n addMessage(responseText, 'assistant');\r\n setIsLoading(false);\r\n\r\n } catch (error) {\r\n console.error('Error sending message:', error);\r\n addMessage('Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.', 'assistant');\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n\r\n\r\n return {\r\n messages,\r\n isLoading,\r\n sendMessage,\r\n addMessage,\r\n };\r\n};\r\n","import { ChatWidgetApiResponse, ChatWidgetSettings } from '../types/chatbot';\r\n\r\nconst API_BASE_URL = 'https://api.elviz24.com';\r\n\r\nexport const fetchChatWidgetSettings = async (clientId: string): Promise<ChatWidgetApiResponse> => {\r\n try {\r\n const response = await fetch(`${API_BASE_URL}/ChatWidgetSettings/GetByClientId?client_id=${clientId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data: ChatWidgetApiResponse = await response.json();\r\n console.log(data);\r\n return data;\r\n } catch (error) {\r\n console.error('Error fetching chat widget settings:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const mapApiSettingsToConfig = (apiSettings: ChatWidgetSettings | null) => {\r\n if (!apiSettings) {\r\n return null;\r\n }\r\n\r\n // Map API button_size to our internal format\r\n const buttonSizeMap = {\r\n 'small': 'sm' as const,\r\n 'medium': 'md' as const,\r\n 'large': 'lg' as const,\r\n };\r\n\r\n return {\r\n welcomeMessage: apiSettings.welcome_message,\r\n buttonBackground: apiSettings.button_background,\r\n placeholder: apiSettings.placeholder,\r\n buttonPosition: apiSettings.button_position,\r\n buttonSize: buttonSizeMap[apiSettings.button_size] || 'md',\r\n chatWidth: apiSettings.chat_width,\r\n chatHeight: apiSettings.chat_height,\r\n showTypingIndicator: apiSettings.show_typing_indicator,\r\n initialOpen: apiSettings.initial_open,\r\n headerBackground: apiSettings.header_background,\r\n companyLogo: apiSettings.company_logo || undefined,\r\n companyName: apiSettings.company_name,\r\n };\r\n};\r\n","import { Message } from \"../types/chatbot\";\r\n\r\nexport const getMessageBubbleStyles = (isUser: boolean): React.CSSProperties => ({\r\n maxWidth: '80%',\r\n padding: '12px 16px',\r\n borderRadius: isUser ? '18px 18px 4px 18px' : '18px 18px 18px 4px',\r\n marginBottom: '8px',\r\n wordWrap: 'break-word',\r\n lineHeight: 1.4,\r\n fontSize: '14px',\r\n position: 'relative',\r\n ...(isUser ? {\r\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n color: '#ffffff',\r\n marginLeft: 'auto',\r\n marginRight: '0',\r\n } : {\r\n background: '#f8fafc',\r\n color: '#334155',\r\n border: '1px solid #e2e8f0',\r\n marginLeft: '0',\r\n marginRight: 'auto',\r\n })\r\n});\r\n\r\nexport const getTimeStyles = (isUser: boolean): React.CSSProperties => ({\r\n fontSize: '11px',\r\n opacity: 0.7,\r\n marginTop: '4px',\r\n textAlign: isUser ? 'right' : 'left',\r\n});\r\n\r\nexport const getMarkdownStyles = (): React.CSSProperties => ({\r\n lineHeight: 1.6,\r\n});\r\n\r\nexport const getMarkdownElementStyles = (isUser: boolean): string => `\r\n .markdown-content p {\r\n margin: 0 0 12px 0;\r\n line-height: 1.6;\r\n }\r\n .markdown-content p:last-child {\r\n margin-bottom: 0;\r\n }\r\n .markdown-content ul {\r\n margin: 12px 0 16px 0;\r\n padding-left: 0;\r\n list-style: none;\r\n }\r\n .markdown-content li {\r\n margin-bottom: 12px;\r\n line-height: 1.6;\r\n padding: 12px 16px;\r\n background: ${isUser ? 'rgba(255,255,255,0.1)' : '#ffffff'};\r\n border-radius: 12px;\r\n border: 1px solid ${isUser ? 'rgba(255,255,255,0.2)' : '#e2e8f0'};\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\r\n position: relative;\r\n transition: all 0.2s ease;\r\n }\r\n .markdown-content li:hover {\r\n transform: translateY(-1px);\r\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n .markdown-content li::before {\r\n content: \"•\";\r\n color: ${isUser ? '#ffffff' : '#667eea'};\r\n font-weight: bold;\r\n font-size: 18px;\r\n position: absolute;\r\n left: -8px;\r\n top: 12px;\r\n }\r\n .markdown-content li strong {\r\n display: block;\r\n font-size: 15px;\r\n margin-bottom: 4px;\r\n color: ${isUser ? '#ffffff' : '#1e293b'};\r\n }\r\n .markdown-content li em {\r\n display: block;\r\n font-size: 13px;\r\n opacity: 0.8;\r\n margin-top: 4px;\r\n }\r\n .markdown-content strong {\r\n font-weight: 600;\r\n color: ${isUser ? '#ffffff' : '#1e293b'};\r\n }\r\n .markdown-content em {\r\n font-style: italic;\r\n opacity: 0.9;\r\n }\r\n .markdown-content code {\r\n background: ${isUser ? 'rgba(255,255,255,0.2)' : '#f1f5f9'};\r\n padding: 2px 6px;\r\n border-radius: 4px;\r\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\r\n font-size: 13px;\r\n }\r\n .markdown-content pre {\r\n background: ${isUser ? 'rgba(255,255,255,0.1)' : '#f8fafc'};\r\n padding: 12px;\r\n border-radius: 8px;\r\n overflow-x: auto;\r\n margin: 8px 0;\r\n border: 1px solid ${isUser ? 'rgba(255,255,255,0.2)' : '#e2e8f0'};\r\n }\r\n .markdown-content pre code {\r\n background: none;\r\n padding: 0;\r\n }\r\n .markdown-content blockquote {\r\n border-left: 3px solid ${isUser ? 'rgba(255,255,255,0.5)' : '#cbd5e1'};\r\n padding-left: 12px;\r\n margin: 8px 0;\r\n opacity: 0.8;\r\n }\r\n .markdown-content h1, .markdown-content h2, .markdown-content h3 {\r\n margin: 16px 0 8px 0;\r\n font-weight: 600;\r\n }\r\n .markdown-content h1 {\r\n font-size: 18px;\r\n }\r\n .markdown-content h2 {\r\n font-size: 16px;\r\n }\r\n .markdown-content h3 {\r\n font-size: 15px;\r\n }\r\n .markdown-content table {\r\n border-collapse: collapse;\r\n width: 100%;\r\n margin: 8px 0;\r\n }\r\n .markdown-content th, .markdown-content td {\r\n border: 1px solid ${isUser ? 'rgba(255,255,255,0.3)' : '#e2e8f0'};\r\n padding: 8px 12px;\r\n text-align: left;\r\n }\r\n .markdown-content th {\r\n background: ${isUser ? 'rgba(255,255,255,0.1)' : '#f8fafc'};\r\n font-weight: 600;\r\n }\r\n \r\n /* Enhanced list styling */\r\n .markdown-content li {\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n \r\n .markdown-content li::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: linear-gradient(135deg, ${isUser ? '#ffffff' : '#667eea'}, ${isUser ? 'rgba(255,255,255,0.5)' : '#764ba2'});\r\n border-radius: 0 2px 2px 0;\r\n }\r\n \r\n /* Product name styling */\r\n .markdown-content li strong:first-child {\r\n color: ${isUser ? '#ffffff' : '#1e293b'};\r\n font-size: 16px;\r\n font-weight: 700;\r\n display: block;\r\n margin-bottom: 8px;\r\n }\r\n \r\n /* Product details styling */\r\n .markdown-content li strong:not(:first-child) {\r\n color: ${isUser ? '#ffffff' : '#059669'};\r\n font-size: 13px;\r\n font-weight: 600;\r\n margin-right: 8px;\r\n }\r\n \r\n /* Add some spacing between product details */\r\n .markdown-content li br + * {\r\n margin-top: 4px;\r\n }\r\n \r\n /* Hover effect enhancement */\r\n .markdown-content li:hover::after {\r\n width: 6px;\r\n background: linear-gradient(135deg, ${isUser ? '#ffffff' : '#667eea'}, ${isUser ? '#ffffff' : '#764ba2'});\r\n }\r\n`;\r\n\r\nexport const getMessageContainerStyles = (isUser: boolean): React.CSSProperties => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: isUser ? 'flex-end' : 'flex-start',\r\n width: '100%',\r\n});\r\n","export const getInputContainerStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n gap: '12px',\r\n padding: '16px',\r\n background: '#ffffff',\r\n borderTop: '1px solid #e2e8f0',\r\n borderRadius: '0 0 12px 12px',\r\n});\r\n\r\nexport const getTextareaStyles = (isLoading: boolean): React.CSSProperties => ({\r\n flex: 1,\r\n minHeight: '44px',\r\n maxHeight: '120px',\r\n padding: '12px 16px',\r\n border: '1px solid #e2e8f0',\r\n borderRadius: '22px',\r\n fontSize: '14px',\r\n lineHeight: 1.4,\r\n resize: 'none',\r\n outline: 'none',\r\n transition: 'border-color 0.2s ease, box-shadow 0.2s ease',\r\n fontFamily: 'inherit',\r\n background: '#f8fafc',\r\n color: '#334155',\r\n ...(isLoading ? {\r\n opacity: 0.6,\r\n cursor: 'not-allowed'\r\n } : {})\r\n});\r\n\r\nexport const getSendButtonStyles = (isLoading: boolean, hasMessage: boolean): React.CSSProperties => ({\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '50%',\r\n border: 'none',\r\n background: isLoading || !hasMessage ? '#e2e8f0' : 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n color: '#ffffff',\r\n cursor: isLoading || !hasMessage ? 'not-allowed' : 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'all 0.2s ease',\r\n fontSize: '16px',\r\n});\r\n","export const getHeaderStyles = (headerBackground: string): React.CSSProperties => ({\r\n padding: '16px 20px',\r\n background: headerBackground,\r\n color: '#ffffff',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n});\r\n\r\nexport const getLogoContainerStyles = (): React.CSSProperties => ({\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '18px',\r\n overflow: 'hidden',\r\n});\r\n\r\nexport const getLogoImageStyles = (): React.CSSProperties => ({\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n borderRadius: '50%',\r\n});\r\n\r\nexport const getLogoTextStyles = (): React.CSSProperties => ({\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n});\r\n\r\nexport const getCompanyNameStyles = (): React.CSSProperties => ({\r\n margin: 0,\r\n fontSize: '16px',\r\n fontWeight: 600,\r\n});\r\n\r\nexport const getStatusTextStyles = (): React.CSSProperties => ({\r\n margin: 0,\r\n fontSize: '12px',\r\n opacity: 0.8,\r\n});\r\n","export const getButtonSizes = () => ({\r\n sm: { width: '50px', height: '50px', fontSize: '20px' },\r\n md: { width: '60px', height: '60px', fontSize: '24px' },\r\n lg: { width: '70px', height: '70px', fontSize: '28px' }\r\n});\r\n\r\nexport const getFloatingButtonStyles = (\r\n buttonPosition: 'bottom-left' | 'bottom-right',\r\n buttonSize: 'sm' | 'md' | 'lg',\r\n buttonBackground: string,\r\n isOpen: boolean\r\n): React.CSSProperties => {\r\n const buttonSizes = getButtonSizes();\r\n const buttonSizeStyle = buttonSizes[buttonSize];\r\n\r\n return {\r\n position: 'fixed',\r\n [buttonPosition === 'bottom-left' ? 'left' : 'right']: '20px',\r\n bottom: '20px',\r\n width: buttonSizeStyle.width,\r\n height: buttonSizeStyle.height,\r\n borderRadius: '50%',\r\n background: buttonBackground,\r\n border: 'none',\r\n color: '#ffffff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: buttonSizeStyle.fontSize,\r\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\r\n transition: 'all 0.3s ease',\r\n zIndex: 1000,\r\n transform: isOpen ? 'scale(0.9)' : 'scale(1)',\r\n };\r\n};\r\n\r\nexport const getChatContainerStyles = (\r\n buttonPosition: 'bottom-left' | 'bottom-right',\r\n chatWidth: string,\r\n chatHeight: string,\r\n isOpen: boolean\r\n): React.CSSProperties => ({\r\n position: 'fixed',\r\n [buttonPosition === 'bottom-left' ? 'left' : 'right']: '20px',\r\n bottom: '90px',\r\n width: chatWidth,\r\n height: chatHeight,\r\n zIndex: 9999999,\r\n transform: isOpen ? 'translateY(0) scale(1)' : 'translateY(20px) scale(0.95)',\r\n opacity: isOpen ? 1 : 0,\r\n visibility: isOpen ? 'visible' : 'hidden',\r\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\r\n transformOrigin: buttonPosition === 'bottom-left' ? 'bottom left' : 'bottom right',\r\n});\r\n\r\nexport const getOverlayStyles = (isOpen: boolean): React.CSSProperties => ({\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n background: 'rgba(0, 0, 0, 0.1)',\r\n zIndex: 998,\r\n opacity: isOpen ? 1 : 0,\r\n visibility: isOpen ? 'visible' : 'hidden',\r\n transition: 'all 0.3s ease',\r\n});\r\n\r\nexport const getChatbotContainerStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n background: '#ffffff',\r\n borderRadius: '12px',\r\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\r\n border: '1px solid #e2e8f0',\r\n overflow: 'hidden',\r\n});\r\n\r\nexport const getMessagesContainerStyles = (): React.CSSProperties => ({\r\n flex: 1,\r\n overflowY: 'auto',\r\n padding: '16px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '4px',\r\n background: '#f8fafc',\r\n});\r\n\r\nexport const getEmptyStateStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%',\r\n color: '#64748b',\r\n textAlign: 'center',\r\n padding: '40px 20px',\r\n});\r\n","export const getLoadingSpinnerStyles = (): React.CSSProperties => ({\r\n width: '16px',\r\n height: '16px',\r\n border: '2px solid transparent',\r\n borderTop: '2px solid currentColor',\r\n borderRadius: '50%',\r\n animation: 'spin 1s linear infinite',\r\n});\r\n","export const getAlertContainerStyles = (type: 'error' | 'warning' | 'success'): React.CSSProperties => {\r\n const colors = {\r\n error: {\r\n background: 'linear-gradient(135deg, #ef4444 0%, #dc2626 100%)',\r\n border: '#dc2626',\r\n shadow: 'rgba(239, 68, 68, 0.2)',\r\n },\r\n warning: {\r\n background: 'linear-gradient(135deg, #f59e0b 0%, #d97706 100%)',\r\n border: '#d97706',\r\n shadow: 'rgba(245, 158, 11, 0.2)',\r\n },\r\n success: {\r\n background: 'linear-gradient(135deg, #10b981 0%, #059669 100%)',\r\n border: '#059669',\r\n shadow: 'rgba(16, 185, 129, 0.2)',\r\n },\r\n };\r\n\r\n const selectedColor = colors[type];\r\n\r\n return {\r\n background: selectedColor.background,\r\n border: `1px solid ${selectedColor.border}`,\r\n borderRadius: '12px',\r\n padding: '14px 16px',\r\n margin: '12px 16px',\r\n boxShadow: `0 4px 12px ${selectedColor.shadow}`,\r\n color: '#ffffff',\r\n fontSize: '13px',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '12px',\r\n position: 'relative',\r\n animation: 'slideDown 0.3s ease-out',\r\n };\r\n};\r\n\r\nexport const getAlertIconContainerStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '24px',\r\n height: '24px',\r\n flexShrink: 0,\r\n marginTop: '2px',\r\n});\r\n\r\nexport const getAlertContentStyles = (): React.CSSProperties => ({\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n});\r\n\r\nexport const getAlertTitleStyles = (): React.CSSProperties => ({\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n margin: 0,\r\n lineHeight: 1.4,\r\n});\r\n\r\nexport const getAlertMessageStyles = (): React.CSSProperties => ({\r\n margin: 0,\r\n lineHeight: 1.5,\r\n opacity: 0.95,\r\n});\r\n\r\nexport const getAlertListStyles = (): React.CSSProperties => ({\r\n margin: '8px 0 0 0',\r\n paddingLeft: '20px',\r\n listStyle: 'none',\r\n});\r\n\r\nexport const getAlertListItemStyles = (): React.CSSProperties => ({\r\n marginBottom: '4px',\r\n position: 'relative',\r\n paddingLeft: '12px',\r\n lineHeight: 1.4,\r\n});\r\n\r\nexport const getAlertCloseButtonStyles = (): React.CSSProperties => ({\r\n position: 'absolute',\r\n top: '12px',\r\n right: '12px',\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n border: 'none',\r\n borderRadius: '6px',\r\n width: '24px',\r\n height: '24px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'pointer',\r\n color: '#ffffff',\r\n transition: 'all 0.2s ease',\r\n padding: 0,\r\n});\r\n\r\nexport const getAlertAnimationStyles = (): string => `\r\n @keyframes slideDown {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-10px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n`;\r\n\r\n","\"use client\"\r\nimport { AizekChatBotProps, Message, BackendConfig } from \"../types/chatbot\";\r\nimport { useChatbot } from \"../hooks/useChatbot\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport ReactMarkdown from 'react-markdown';\r\nimport remarkGfm from 'remark-gfm';\r\nimport { fetchChatWidgetSettings, mapApiSettingsToConfig } from \"../services/chatWidgetApi\";\r\nimport { getMessageBubbleStyles, getTimeStyles, getMarkdownStyles, getMarkdownElementStyles, getMessageContainerStyles, getInputContainerStyles, getTextareaStyles, getSendButtonStyles, getHeaderStyles, getLogoContainerStyles, getLogoImageStyles, getLogoTextStyles, getCompanyNameStyles, getStatusTextStyles, getFloatingButtonStyles, getChatContainerStyles, getOverlayStyles, getChatbotContainerStyles, getMessagesContainerStyles, getEmptyStateStyles, getLoadingSpinnerStyles, getAlertContainerStyles, getAlertIconContainerStyles, getAlertContentStyles, getAlertTitleStyles, getAlertMessageStyles, getAlertListStyles, getAlertListItemStyles, getAlertCloseButtonStyles, getAlertAnimationStyles } from \"../styles\";\r\nimport { validateHeaders } from \"../utils/cx\";\r\n\r\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({ clientId, headers }) => {\r\n const defaultConfig: BackendConfig = {\r\n welcomeMessage: 'Merhaba! Size nasıl yardımcı olabilirim?',\r\n buttonBackground: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n placeholder: \"Mesajınızı yazın...\",\r\n buttonPosition: 'bottom-left',\r\n buttonSize: 'md',\r\n chatWidth: '400px',\r\n chatHeight: '600px',\r\n showTypingIndicator: true,\r\n initialOpen: true,\r\n headerBackground: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n companyLogo: undefined,\r\n companyName: 'AI Asistan',\r\n };\r\n\r\n const [config, setConfig] = useState<BackendConfig>(defaultConfig);\r\n const [isConfigLoading, setIsConfigLoading] = useState(true);\r\n const [finalMcpUrl, setFinalMcpUrl] = useState<string>('');\r\n const [apiKey, setApiKey] = useState<string>('');\r\n const [validConfig, setValidConfig] = useState<boolean>(false);\r\n const { welcomeMessage, buttonBackground, placeholder, buttonPosition, buttonSize, chatWidth, chatHeight, showTypingIndicator, initialOpen, headerBackground, companyLogo, companyName } = config;\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [headerValidation, setHeaderValidation] = useState<{\r\n isValid: boolean;\r\n missingKeys: string[];\r\n extraKeys: string[];\r\n emptyValueKeys: string[];\r\n } | null>(null);\r\n const [showAlert, setShowAlert] = useState(true);\r\n\r\n\r\n\r\n\r\n useEffect(() => {\r\n const loadConfig = async () => {\r\n try {\r\n setIsConfigLoading(true);\r\n const apiResponse = await fetchChatWidgetSettings(clientId);\r\n if (headers && apiResponse.data.auth_config) {\r\n const validationResult = validateHeaders(headers, apiResponse.data.auth_config, {\r\n allowExtra: false,\r\n caseSensitive: true,\r\n });\r\n\r\n console.log(validationResult);\r\n\r\n setHeaderValidation(validationResult);\r\n }\r\n\r\n setFinalMcpUrl(apiResponse.data.mcp_url);\r\n setApiKey(apiResponse.data.openai_key || '');\r\n\r\n const apiConfig = mapApiSettingsToConfig(apiResponse.data.chat_widget_settings);\r\n if (apiConfig) {\r\n setConfig(apiConfig);\r\n }\r\n } catch (error) {\r\n console.error('Failed to load chat widget config:', error);\r\n setFinalMcpUrl('');\r\n } finally {\r\n setIsConfigLoading(false);\r\n }\r\n };\r\n\r\n loadConfig();\r\n }, [clientId]);\r\n\r\n const internalChatbot = useChatbot({ mcpUrl: finalMcpUrl, apiKey: apiKey, headers });\r\n\r\n const messages = internalChatbot.messages;\r\n const isLoading = internalChatbot.isLoading;\r\n const handleSendMessage = internalChatbot.sendMessage;\r\n\r\n const toggleChat = () => {\r\n const newIsOpen = !isOpen;\r\n setIsOpen(newIsOpen);\r\n };\r\n\r\n useEffect(() => {\r\n setIsOpen(initialOpen);\r\n }, [initialOpen]);\r\n\r\n const messagesEndRef = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });\r\n }, [messages]);\r\n\r\n\r\n\r\n const MessageBubble: React.FC<{ message: Message }> = ({ message }) => {\r\n const isUser = message.role === 'user';\r\n\r\n return (\r\n <div style={getMessageContainerStyles(isUser)}>\r\n <style>{getMarkdownElementStyles(isUser)}</style>\r\n <div style={getMessageBubbleStyles(isUser)}>\r\n <div style={getMarkdownStyles()} className=\"markdown-content\">\r\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\r\n {message.content}\r\n </ReactMarkdown>\r\n </div>\r\n {message.isTyping && (\r\n <div style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginLeft: '8px'\r\n }}>\r\n <TypingDots />\r\n </div>\r\n )}\r\n </div>\r\n <div style={getTimeStyles(isUser)}>\r\n {message.timestamp.toLocaleTimeString('tr-TR', {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n })}\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const TypingDots: React.FC = () => {\r\n const [dots, setDots] = useState('');\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setDots(prev => {\r\n if (prev === '...') return '';\r\n return prev + '.';\r\n });\r\n }, 500);\r\n\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n return <span>{dots}</span>;\r\n };\r\n\r\n const HeaderValidationAlert: React.FC = () => {\r\n if (!headerValidation || !showAlert) return null;\r\n\r\n const { isValid, missingKeys, extraKeys, emptyValueKeys } = headerValidation;\r\n\r\n // Eğer her şey geçerliyse, alert gösterme\r\n if (isValid && missingKeys.length === 0 && extraKeys.length === 0 && emptyValueKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n // Hata tipini belirle\r\n const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;\r\n const hasWarnings = extraKeys.length > 0;\r\n const alertType = hasErrors ? 'error' : 'warning';\r\n\r\n const getAlertIcon = () => {\r\n if (hasErrors) {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\r\n </svg>\r\n );\r\n }\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\r\n </svg>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <style>{getAlertAnimationStyles()}</style>\r\n <div style={getAlertContainerStyles(alertType)}>\r\n <div style={getAlertIconContainerStyles()}>\r\n {getAlertIcon()}\r\n </div>\r\n <div style={getAlertContentStyles()}>\r\n <h4 style={getAlertTitleStyles()}>\r\n {hasErrors ? 'Header Doğrulama Hatası' : 'Header Uyarısı'}\r\n </h4>\r\n <p style={getAlertMessageStyles()}>\r\n {hasErrors && hasWarnings\r\n ? 'Header yapılandırmanızda hatalar ve uyarılar bulundu.'\r\n : hasErrors\r\n ? 'Header yapılandırmanızda hatalar bulundu.'\r\n : 'Header yapılandırmanızda fazla anahtarlar bulundu.'}\r\n </p>\r\n\r\n {missingKeys.length > 0 && (\r\n <div>\r\n <strong style={{ fontSize: '13px' }}>Eksik Header'lar:</strong>\r\n <ul style={getAlertListStyles()}>\r\n {missingKeys.map((key, index) => (\r\n <li key={index} style={getAlertListItemStyles()}>\r\n <span style={{\r\n position: 'absolute',\r\n left: '0',\r\n top: '2px',\r\n fontWeight: 'bold'\r\n }}>•</span>\r\n <code style={{\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n padding: '2px 6px',\r\n borderRadius: '4px',\r\n fontFamily: 'monospace',\r\n fontSize: '12px'\r\n }}>{key}</code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {emptyValueKeys.length > 0 && (\r\n <div>\r\n <strong style={{ fontSize: '13px' }}>Boş Değerli Header'lar:</strong>\r\n <ul style={getAlertListStyles()}>\r\n {emptyValueKeys.map((key, index) => (\r\n <li key={index} style={getAlertListItemStyles()}>\r\n <span style={{\r\n position: 'absolute',\r\n left: '0',\r\n top: '2px',\r\n fontWeight: 'bold'\r\n }}>•</span>\r\n <code style={{\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n padding: '2px 6px',\r\n borderRadius: '4px',\r\n fontFamily: 'monospace',\r\n fontSize: '12px'\r\n }}>{key}</code>\r\n <span style={{\r\n marginLeft: '6px',\r\n fontSize: '11px',\r\n opacity: 0.9\r\n }}>(değer boş olamaz)</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {extraKeys.length > 0 && (\r\n <div>\r\n <strong style={{ fontSize: '13px' }}>Fazla Header'lar:</strong>\r\n <ul style={getAlertListStyles()}>\r\n {extraKeys.map((key, index) => (\r\n <li key={index} style={getAlertListItemStyles()}>\r\n <span style={{\r\n position: 'absolute',\r\n left: '0',\r\n top: '2px',\r\n fontWeight: 'bold'\r\n }}>•</span>\r\n <code style={{\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n padding: '2px 6px',\r\n borderRadius: '4px',\r\n fontFamily: 'monospace',\r\n fontSize: '12px'\r\n }}>{key}</code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n <button\r\n onClick={() => setShowAlert(false)}\r\n style={getAlertCloseButtonStyles()}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.background = 'rgba(255, 255, 255, 0.3)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.background = 'rgba(255, 255, 255, 0.2)';\r\n }}\r\n aria-label=\"Uyarıyı kapat\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </>\r\n );\r\n };\r\n\r\n const ChatInput: React.FC = () => {\r\n const [message, setMessage] = useState(\"\");\r\n const textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (message.trim() && !isLoading) {\r\n handleSendMessage(message.trim());\r\n setMessage(\"\");\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = 'auto';\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === 'Enter' && !e.shiftKey) {\r\n e.preventDefault();\r\n handleSubmit(e);\r\n }\r\n };\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n setMessage(e.target.value);\r\n\r\n const textarea = e.target;\r\n textarea.style.height = 'auto';\r\n textarea.style.height = Math.min(textarea.scrollHeight, 120) + 'px';\r\n };\r\n\r\n return (\r\n <form onSubmit={handleSubmit} style={getInputContainerStyles()}>\r\n <textarea\r\n ref={textareaRef}\r\n value={message}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n disabled={isLoading}\r\n style={getTextareaStyles(isLoading)}\r\n />\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading || !message.trim()}\r\n style={getSendButtonStyles(isLoading, !!message.trim())}\r\n onMouseEnter={(e) => {\r\n if (!isLoading && message.trim()) {\r\n e.currentTarget.style.transform = 'scale(1.05)';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.transform = 'scale(1)';\r\n }}\r\n >\r\n {isLoading ? (\r\n <LoadingSpinner />\r\n ) : (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </form>\r\n );\r\n };\r\n\r\n const LoadingSpinner: React.FC = () => {\r\n return <div style={getLoadingSpinnerStyles()} />;\r\n };\r\n\r\n\r\n // Show loading state while config is being fetched\r\n if (isConfigLoading) {\r\n return (\r\n <div style={getFloatingButtonStyles(buttonPosition, buttonSize, buttonBackground, false)}>\r\n <div style={getLoadingSpinnerStyles()} />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <div\r\n style={getOverlayStyles(isOpen)}\r\n onClick={toggleChat}\r\n className=\"floating-chat-overlay\"\r\n />\r\n )}\r\n\r\n <div style={getChatContainerStyles(buttonPosition, chatWidth, chatHeight, isOpen)} className=\"floating-chat-container\">\r\n <div style={getChatbotContainerStyles()}>\r\n <div style={getHeaderStyles(headerBackground)}>\r\n <div style={getLogoContainerStyles()}>\r\n {companyLogo ? (\r\n companyLogo.startsWith('http') || companyLogo.startsWith('data:') ? (\r\n <img\r\n src={companyLogo}\r\n alt=\"Company Logo\"\r\n style={getLogoImageStyles()}\r\n />\r\n ) : (\r\n <span style={getLogoTextStyles()}>\r\n {companyLogo}\r\n </span>\r\n )\r\n ) : (\r\n '🤖'\r\n )}\r\n </div>\r\n <div>\r\n <h3 style={getCompanyNameStyles()}>\r\n {companyName}\r\n </h3>\r\n <p style={getStatusTextStyles()}>\r\n {isLoading ? 'Yazıyor...' : 'Çevrimiçi'}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div style={getMessagesContainerStyles()}>\r\n <HeaderValidationAlert />\r\n\r\n {messages.length === 0 ? (\r\n <div style={getEmptyStateStyles()}>\r\n <div style={{ fontSize: '48px', marginBottom: '16px' }}>💬</div>\r\n <h4 style={{ margin: '0 0 8px 0', fontSize: '18px' }}>\r\n {welcomeMessage}\r\n </h4>\r\n <p style={{ margin: 0, fontSize: '14px', opacity: 0.8 }}>\r\n Aşağıdaki alana mesajınızı yazarak başlayabilirsiniz.\r\n </p>\r\n </div>\r\n ) : (\r\n messages.map((message) => (\r\n <MessageBubble key={message.id} message={message} />\r\n ))\r\n )}\r\n\r\n {showTypingIndicator && isLoading && messages.length > 0 && (\r\n <MessageBubble\r\n message={{\r\n id: 'typing',\r\n content: '',\r\n role: 'assistant',\r\n timestamp: new Date(),\r\n isTyping: true\r\n }}\r\n />\r\n )}\r\n <div ref={messagesEndRef} />\r\n </div>\r\n\r\n <ChatInput />\r\n </div>\r\n </div>\r\n\r\n <button\r\n onClick={toggleChat}\r\n style={getFloatingButtonStyles(buttonPosition, buttonSize, buttonBackground, isOpen)}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.transform = isOpen ? 'scale(0.85)' : 'scale(1.1)';\r\n e.currentTarget.style.boxShadow = '0 6px 20px rgba(0, 0, 0, 0.25)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.transform = isOpen ? 'scale(0.9)' : 'scale(1)';\r\n e.currentTarget.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.15)';\r\n }}\r\n className=\"floating-chat-button\"\r\n aria-label={isOpen ? 'Chati kapat' : 'Chati aç'}\r\n >\r\n {isOpen ? (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n ) : (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </>\r\n );\r\n};"]}
1
+ {"version":3,"sources":["../src/utils/cx.ts","../src/components/Button.tsx","../src/hooks/useChatbot.ts","../src/services/chatWidgetApi.ts","../src/styles/messageStyles.ts","../src/styles/inputStyles.ts","../src/styles/headerStyles.ts","../src/styles/containerStyles.ts","../src/styles/loadingStyles.ts","../src/styles/alertStyles.ts","../src/components/FloatingChat.tsx"],"names":["useState","config","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { AuthConfig, HeadersType } from \"../types/chatbot\";\r\n\r\nexport function cx(...args: Array<string | false | null | undefined>): string {\r\n return args.filter(Boolean).join(\" \");\r\n}\r\n\r\nexport function validateHeaders(\r\n headers: HeadersType,\r\n authConfig: AuthConfig,\r\n opts: { caseSensitive?: boolean; allowExtra?: boolean } = {}\r\n) {\r\n const { caseSensitive = false, allowExtra = false } = opts;\r\n\r\n const normalize = (s: string) => (caseSensitive ? s : s.toLowerCase());\r\n\r\n const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);\r\n const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);\r\n\r\n const headerKeys = headerEntries.map(([k]) => k);\r\n const authKeys = authEntries.map(([k]) => k);\r\n\r\n const requiredSet = new Set(authKeys);\r\n\r\n const missingKeys = authKeys.filter(k => !headerKeys.includes(k));\r\n const extraKeys = headerKeys.filter(k => !requiredSet.has(k));\r\n\r\n // 🔍 1. Gerekli tüm key’ler mevcut mu?\r\n const hasAllRequired = missingKeys.length === 0;\r\n // 🔍 2. Fazla key var mı?\r\n const hasExtraKeys = extraKeys.length > 0 && !allowExtra;\r\n // 🔍 3. Gerekli değerler boş mu?\r\n const emptyValueKeys = authKeys.filter(k => {\r\n const val = headerEntries.find(([key]) => key === k)?.[1];\r\n return !val || val.length === 0;\r\n });\r\n\r\n const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;\r\n\r\n return { isValid, missingKeys, extraKeys, emptyValueKeys };\r\n}","import * as React from \"react\";\r\nimport { cx } from \"../utils/cx\";\r\nimport { ButtonProps, ButtonSize, ButtonVariant } from \"../types/button\";\r\n\r\n\r\n\r\n\r\nconst base: React.CSSProperties = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderRadius: 12,\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n transition: \"background-color .2s ease, color .2s ease, border-color .2s ease\",\r\n outline: \"none\",\r\n cursor: \"pointer\",\r\n};\r\n\r\n\r\nconst sizes: Record<ButtonSize, React.CSSProperties> = {\r\n sm: { height: 36, padding: \"0 12px\", fontSize: 14 },\r\n md: { height: 40, padding: \"0 16px\", fontSize: 16 },\r\n lg: { height: 44, padding: \"0 20px\", fontSize: 18 },\r\n};\r\n\r\n\r\nconst palette = {\r\n brand: {\r\n primary: \"#2563eb\",\r\n primaryHover: \"#1d4ed8\",\r\n },\r\n};\r\n\r\n\r\nfunction styleFor(variant: ButtonVariant): React.CSSProperties {\r\n switch (variant) {\r\n case \"outline\":\r\n return {\r\n background: \"transparent\",\r\n color: palette.brand.primary,\r\n border: `1px solid ${palette.brand.primary}`,\r\n };\r\n case \"ghost\":\r\n return {\r\n background: \"transparent\",\r\n color: palette.brand.primary,\r\n border: \"1px solid transparent\",\r\n };\r\n default:\r\n return {\r\n background: palette.brand.primary,\r\n color: \"#fff\",\r\n border: \"1px solid transparent\",\r\n };\r\n }\r\n}\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ variant = \"primary\", size = \"md\", style, className, onMouseEnter, onMouseLeave, ...props }, ref) => {\r\n const [hover, setHover] = React.useState(false);\r\n\r\n\r\n const hoverStyle: React.CSSProperties =\r\n variant === \"primary\"\r\n ? { background: hover ? palette.brand.primaryHover : palette.brand.primary }\r\n : variant === \"outline\"\r\n ? { borderColor: hover ? palette.brand.primaryHover : palette.brand.primary }\r\n : { background: hover ? \"rgba(37, 99, 235, 0.08)\" : \"transparent\" };\r\n\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n className={cx(\"rui-btn\", className)}\r\n style={{ ...base, ...sizes[size], ...styleFor(variant), ...(hover ? hoverStyle : {}), ...style }}\r\n onMouseEnter={(e) => {\r\n setHover(true);\r\n onMouseEnter?.(e);\r\n }}\r\n onMouseLeave={(e) => {\r\n setHover(false);\r\n onMouseLeave?.(e);\r\n }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nButton.displayName = \"Button\";","import { useState } from 'react';\r\nimport { Message, BackendConfig } from '../types/chatbot';\r\nimport OpenAI from \"openai\";\r\n\r\n\r\nexport interface UseChatbotOptions {\r\n apiKey?: string;\r\n mcpUrl?: string;\r\n headers?: Record<string, string>;\r\n config?: BackendConfig;\r\n}\r\n\r\nexport const useChatbot = (options: UseChatbotOptions = {}) => {\r\n const { mcpUrl, apiKey, config } = options;\r\n const client = new OpenAI({ apiKey: apiKey, dangerouslyAllowBrowser: true, });\r\n const [responseId, setResponseId] = useState<string | null>(null);\r\n\r\n const [messages, setMessages] = useState<Message[]>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const generateId = () => {\r\n return Date.now().toString() + Math.random().toString(36).substr(2, 9);\r\n };\r\n\r\n const addMessage = (content: string, role: 'user' | 'assistant') => {\r\n const newMessage: Message = {\r\n id: generateId(),\r\n content,\r\n role,\r\n timestamp: new Date(),\r\n };\r\n setMessages(prev => [...prev, newMessage]);\r\n return newMessage;\r\n };\r\n\r\n\r\n const getHtmlUiInstructions = (config?: BackendConfig) => {\r\n const headerColor = config?.headerBackground || \"#f5f5f5\";\r\n const accentColor = config?.buttonBackground || \"#007bff\";\r\n const companyName = config?.companyName || \"AI Assistant\";\r\n const companyLogo = config?.companyLogo || \"🤖\";\r\n\r\n return `\r\nYou are a helpful assistant that creates UI using ONLY HTML tags.\r\n\r\nYour task:\r\n- Read the user message and respond.\r\n- Render your response as a small HTML layout (card OR table OR mini-table).\r\n- Use inline CSS styles.\r\n- Use a clean, light (white-based) theme.\r\n- Use branding and colors from options.config.\r\n- Return ONLY raw HTML (no markdown, no backticks, no JSON, no explanations).\r\n\r\n====================\r\nTHEME & BRANDING (from options.config)\r\n====================\r\nThe chat widget configuration provides:\r\n\r\n- Header Background Color: ${headerColor}\r\n- Button / Accent Color: ${accentColor}\r\n- Company Name: ${companyName}\r\n- Company Logo: ${companyLogo}\r\n\r\nHow to use these:\r\n- Use Header Background Color mainly for top headers, title strips, or main highlight areas.\r\n- Use Button / Accent Color for important accents: borders, highlights, small badges, table headers, key text highlights, links, etc.\r\n- Use a white or very light background for main surfaces.\r\n- Text color should generally be dark (#111–#333) for readability.\r\n\r\nDo NOT create real interactive buttons. You can visually style elements using the accent color, but you must NOT use <button>.\r\n\r\n====================\r\nALLOWED / FORBIDDEN TAGS\r\n====================\r\nYou may use ANY NON-INTERACTIVE HTML element, for example:\r\n- Text and headings:\r\n <h1>, <h2>, <h3>, <h4>, <h5>, <h6>,\r\n <p>, <span>, <strong>, <em>, <small>, <blockquote>, <code>, <pre>\r\n- Layout:\r\n <div>, <section>, <article>, <header>, <footer>\r\n- Lists:\r\n <ul>, <ol>, <li>\r\n- Tables:\r\n <table>, <thead>, <tbody>, <tr>, <th>, <td>\r\n- Media:\r\n <img>, <figure>, <figcaption>\r\n- Links (non-interactive navigation style only):\r\n <a>\r\n\r\nFORBIDDEN (NEVER USE):\r\n- <button>, <input>, <textarea>, <select>, <option>, <form>, <label>\r\n- <details>, <summary>, <dialog>\r\n- <video> or <audio> with controls for user interaction\r\n- Any inline event handlers like onclick, onmouseover, etc.\r\n- <script> or any JavaScript code.\r\n\r\n====================\r\nLAYOUT TYPE RULES\r\n====================\r\nYou have exactly THREE layout types you can use:\r\n\r\n1) CARD\r\n2) TABLE\r\n3) MINI TABLE\r\n\r\nFor EACH response:\r\n- You MUST choose exactly ONE of these layout types.\r\n- You MUST NOT mix layout types in the same response.\r\n (Do NOT render card + table together, or table + mini-table together.)\r\n\r\nWhich layout to choose:\r\n- CARD (DEFAULT):\r\n - Use this for normal answers, explanations, descriptions, welcome messages,\r\n and any content that is mostly free text.\r\n- TABLE:\r\n - Use this ONLY when the content is clearly structured with multiple columns\r\n (for example: comparisons, lists of items with several attributes).\r\n- MINI TABLE:\r\n - Use this for small, compact key-value style data\r\n (for example: a few fields like \"Token\", \"Price\", \"Network\"),\r\n or when a full table would be visually too heavy.\r\n\r\nIf the user does NOT explicitly ask for a table or very structured data,\r\nyou MUST use the CARD layout.\r\n\r\n====================\r\nSTYLE RULES\r\n====================\r\nGeneral style (CARD or container):\r\n- Use a main wrapper <div> with styles similar to:\r\n background: #ffffff;\r\n color: #111111;\r\n border: 1px solid #e5e5e5;\r\n border-radius: 8px;\r\n padding: 12px;\r\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\r\n- You may add a top header area using the header background color:\r\n background: ${headerColor};\r\n\r\nUse branding:\r\n- Include the company logo and name in a subtle way when appropriate\r\n (for example, in a small header bar):\r\n - Logo (emoji or image) on the left,\r\n - Company name text next to it.\r\n\r\nTypography:\r\n- Titles: 18–22px, bold.\r\n- Body text: 12–16px, regular.\r\n- Line-height should be comfortable (around 1.4–1.6).\r\n\r\nTables:\r\n- Use <table> with <thead> and <tbody> where appropriate.\r\n- Header row background: ${accentColor};\r\n- Header row text color: #ffffff;\r\n- Body rows background: #ffffff;\r\n- Row borders: 1px solid #e5e5e5 (or a faint version of the border color).\r\n\r\nMini table:\r\n- Can be a simple two-column table or stacked key-value pairs.\r\n- Keep it compact (less padding, fewer rows).\r\n\r\nLinks:\r\n- You can use <a> for styling or static URLs.\r\n- Use the accent color for links:\r\n color: ${accentColor};\r\n\r\n====================\r\nOUTPUT FORMAT\r\n====================\r\nYour final output MUST follow these rules:\r\n- Output ONLY a single HTML snippet.\r\n- Do NOT wrap it in backticks or markdown.\r\n- Do NOT include any explanation text.\r\n- Do NOT include JSON.\r\n- Must use exactly ONE of: card, table, mini table.\r\n- Must respect allowed/forbidden tags.\r\n- Must use colors derived from:\r\n - header_background\r\n - button_background\r\n and otherwise a light theme.\r\n\r\n====================\r\nBEHAVIOR SUMMARY\r\n====================\r\n1) Read the user message.\r\n2) Decide whether CARD, TABLE, or MINI TABLE is most suitable.\r\n3) Generate a single HTML layout using only allowed, non-interactive tags.\r\n4) Style the layout with inline CSS using:\r\n - ${headerColor} for header areas,\r\n - ${accentColor} for accents,\r\n - white/light backgrounds and dark text.\r\n5) Return ONLY the HTML snippet.\r\n`;\r\n };\r\n\r\n\r\n\r\n const sendMessage = async (message: string) => {\r\n if (!message.trim() || isLoading) return;\r\n\r\n addMessage(message, 'user');\r\n setIsLoading(true);\r\n console.log(options.config);\r\n\r\n\r\n try {\r\n let resp: OpenAI.Responses.Response & { _request_id?: string | null; };\r\n console.log(options.headers);\r\n\r\n resp = await client.responses.create({\r\n model: \"gpt-5\",\r\n tools: [\r\n {\r\n type: \"mcp\",\r\n server_label: \"aizek-mcp\",\r\n server_url: mcpUrl,\r\n require_approval: \"never\",\r\n headers: options.headers || {}\r\n },\r\n ],\r\n input: message,\r\n previous_response_id: responseId || undefined,\r\n instructions: getHtmlUiInstructions(options.config)\r\n\r\n\r\n });\r\n\r\n setResponseId(resp.id);\r\n\r\n\r\n let responseText = '';\r\n\r\n if (resp && Array.isArray(resp)) {\r\n\r\n // Find the message type in the response\r\n const messageItem = resp.find(item => item.type === \"message\");\r\n\r\n if (messageItem && messageItem.content && Array.isArray(messageItem.content)) {\r\n\r\n const textContent = messageItem.content.find((content: any) => content.type === \"output_text\");\r\n\r\n if (textContent && textContent.text) {\r\n responseText = textContent.text;\r\n }\r\n }\r\n } else {\r\n\r\n if (resp && resp.output_text) {\r\n responseText = resp.output_text;\r\n }\r\n else if (typeof resp === 'string') {\r\n responseText = resp;\r\n }\r\n }\r\n\r\n if (!responseText) {\r\n responseText = `\"${message}\" mesajınızı aldım. Size nasıl yardımcı olabilirim?`;\r\n }\r\n\r\n addMessage(responseText, 'assistant');\r\n setIsLoading(false);\r\n\r\n } catch (error) {\r\n console.error('Error sending message:', error);\r\n addMessage('Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.', 'assistant');\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n\r\n\r\n return {\r\n messages,\r\n isLoading,\r\n sendMessage,\r\n addMessage,\r\n };\r\n};\r\n","import { ChatWidgetApiResponse, ChatWidgetSettings } from '../types/chatbot';\r\n\r\nconst API_BASE_URL = 'https://api.elviz24.com';\r\n\r\nexport const fetchChatWidgetSettings = async (clientId: string): Promise<ChatWidgetApiResponse> => {\r\n try {\r\n const response = await fetch(`${API_BASE_URL}/ChatWidgetSettings/GetByClientId?client_id=${clientId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data: ChatWidgetApiResponse = await response.json();\r\n console.log(data);\r\n return data;\r\n } catch (error) {\r\n console.error('Error fetching chat widget settings:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const mapApiSettingsToConfig = (apiSettings: ChatWidgetSettings | null) => {\r\n if (!apiSettings) {\r\n return null;\r\n }\r\n\r\n // Map API button_size to our internal format\r\n const buttonSizeMap = {\r\n 'small': 'sm' as const,\r\n 'medium': 'md' as const,\r\n 'large': 'lg' as const,\r\n };\r\n\r\n return {\r\n welcomeMessage: apiSettings.welcome_message,\r\n buttonBackground: apiSettings.button_background,\r\n placeholder: apiSettings.placeholder,\r\n buttonPosition: apiSettings.button_position,\r\n buttonSize: buttonSizeMap[apiSettings.button_size] || 'md',\r\n chatWidth: apiSettings.chat_width,\r\n chatHeight: apiSettings.chat_height,\r\n showTypingIndicator: apiSettings.show_typing_indicator,\r\n initialOpen: apiSettings.initial_open,\r\n headerBackground: apiSettings.header_background,\r\n companyLogo: apiSettings.company_logo || undefined,\r\n companyName: apiSettings.company_name,\r\n };\r\n};\r\n","import { Message } from \"../types/chatbot\";\r\n\r\nexport const getMessageBubbleStyles = (isUser: boolean): React.CSSProperties => ({\r\n maxWidth: '80%',\r\n padding: '12px 16px',\r\n borderRadius: isUser ? '18px 18px 4px 18px' : '18px 18px 18px 4px',\r\n marginBottom: '8px',\r\n wordWrap: 'break-word',\r\n lineHeight: 1.4,\r\n fontSize: '14px',\r\n position: 'relative',\r\n ...(isUser ? {\r\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n color: '#ffffff',\r\n marginLeft: 'auto',\r\n marginRight: '0',\r\n } : {\r\n background: '#f8fafc',\r\n color: '#334155',\r\n border: '1px solid #e2e8f0',\r\n marginLeft: '0',\r\n marginRight: 'auto',\r\n })\r\n});\r\n\r\nexport const getTimeStyles = (isUser: boolean): React.CSSProperties => ({\r\n fontSize: '11px',\r\n opacity: 0.7,\r\n marginTop: '4px',\r\n textAlign: isUser ? 'right' : 'left',\r\n});\r\n\r\nexport const getMarkdownStyles = (): React.CSSProperties => ({\r\n lineHeight: 1.6,\r\n});\r\n\r\nexport const getMarkdownElementStyles = (isUser: boolean): string => `\r\n .markdown-content p {\r\n margin: 0 0 12px 0;\r\n line-height: 1.6;\r\n }\r\n .markdown-content p:last-child {\r\n margin-bottom: 0;\r\n }\r\n .markdown-content ul {\r\n margin: 12px 0 16px 0;\r\n padding-left: 0;\r\n list-style: none;\r\n }\r\n .markdown-content li {\r\n margin-bottom: 12px;\r\n line-height: 1.6;\r\n padding: 12px 16px;\r\n background: ${isUser ? 'rgba(255,255,255,0.1)' : '#ffffff'};\r\n border-radius: 12px;\r\n border: 1px solid ${isUser ? 'rgba(255,255,255,0.2)' : '#e2e8f0'};\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\r\n position: relative;\r\n transition: all 0.2s ease;\r\n }\r\n .markdown-content li:hover {\r\n transform: translateY(-1px);\r\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n .markdown-content li::before {\r\n content: \"•\";\r\n color: ${isUser ? '#ffffff' : '#667eea'};\r\n font-weight: bold;\r\n font-size: 18px;\r\n position: absolute;\r\n left: -8px;\r\n top: 12px;\r\n }\r\n .markdown-content li strong {\r\n display: block;\r\n font-size: 15px;\r\n margin-bottom: 4px;\r\n color: ${isUser ? '#ffffff' : '#1e293b'};\r\n }\r\n .markdown-content li em {\r\n display: block;\r\n font-size: 13px;\r\n opacity: 0.8;\r\n margin-top: 4px;\r\n }\r\n .markdown-content strong {\r\n font-weight: 600;\r\n color: ${isUser ? '#ffffff' : '#1e293b'};\r\n }\r\n .markdown-content em {\r\n font-style: italic;\r\n opacity: 0.9;\r\n }\r\n .markdown-content code {\r\n background: ${isUser ? 'rgba(255,255,255,0.2)' : '#f1f5f9'};\r\n padding: 2px 6px;\r\n border-radius: 4px;\r\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\r\n font-size: 13px;\r\n }\r\n .markdown-content pre {\r\n background: ${isUser ? 'rgba(255,255,255,0.1)' : '#f8fafc'};\r\n padding: 12px;\r\n border-radius: 8px;\r\n overflow-x: auto;\r\n margin: 8px 0;\r\n border: 1px solid ${isUser ? 'rgba(255,255,255,0.2)' : '#e2e8f0'};\r\n }\r\n .markdown-content pre code {\r\n background: none;\r\n padding: 0;\r\n }\r\n .markdown-content blockquote {\r\n border-left: 3px solid ${isUser ? 'rgba(255,255,255,0.5)' : '#cbd5e1'};\r\n padding-left: 12px;\r\n margin: 8px 0;\r\n opacity: 0.8;\r\n }\r\n .markdown-content h1, .markdown-content h2, .markdown-content h3 {\r\n margin: 16px 0 8px 0;\r\n font-weight: 600;\r\n }\r\n .markdown-content h1 {\r\n font-size: 18px;\r\n }\r\n .markdown-content h2 {\r\n font-size: 16px;\r\n }\r\n .markdown-content h3 {\r\n font-size: 15px;\r\n }\r\n .markdown-content table {\r\n border-collapse: collapse;\r\n width: 100%;\r\n margin: 8px 0;\r\n }\r\n .markdown-content th, .markdown-content td {\r\n border: 1px solid ${isUser ? 'rgba(255,255,255,0.3)' : '#e2e8f0'};\r\n padding: 8px 12px;\r\n text-align: left;\r\n }\r\n .markdown-content th {\r\n background: ${isUser ? 'rgba(255,255,255,0.1)' : '#f8fafc'};\r\n font-weight: 600;\r\n }\r\n \r\n /* Enhanced list styling */\r\n .markdown-content li {\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n \r\n .markdown-content li::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: linear-gradient(135deg, ${isUser ? '#ffffff' : '#667eea'}, ${isUser ? 'rgba(255,255,255,0.5)' : '#764ba2'});\r\n border-radius: 0 2px 2px 0;\r\n }\r\n \r\n /* Product name styling */\r\n .markdown-content li strong:first-child {\r\n color: ${isUser ? '#ffffff' : '#1e293b'};\r\n font-size: 16px;\r\n font-weight: 700;\r\n display: block;\r\n margin-bottom: 8px;\r\n }\r\n \r\n /* Product details styling */\r\n .markdown-content li strong:not(:first-child) {\r\n color: ${isUser ? '#ffffff' : '#059669'};\r\n font-size: 13px;\r\n font-weight: 600;\r\n margin-right: 8px;\r\n }\r\n \r\n /* Add some spacing between product details */\r\n .markdown-content li br + * {\r\n margin-top: 4px;\r\n }\r\n \r\n /* Hover effect enhancement */\r\n .markdown-content li:hover::after {\r\n width: 6px;\r\n background: linear-gradient(135deg, ${isUser ? '#ffffff' : '#667eea'}, ${isUser ? '#ffffff' : '#764ba2'});\r\n }\r\n`;\r\n\r\nexport const getMessageContainerStyles = (isUser: boolean): React.CSSProperties => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: isUser ? 'flex-end' : 'flex-start',\r\n width: '100%',\r\n});\r\n","export const getInputContainerStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n gap: '12px',\r\n padding: '16px',\r\n background: '#ffffff',\r\n borderTop: '1px solid #e2e8f0',\r\n borderRadius: '0 0 12px 12px',\r\n});\r\n\r\nexport const getTextareaStyles = (isLoading: boolean): React.CSSProperties => ({\r\n flex: 1,\r\n minHeight: '44px',\r\n maxHeight: '120px',\r\n padding: '12px 16px',\r\n border: '1px solid #e2e8f0',\r\n borderRadius: '22px',\r\n fontSize: '14px',\r\n lineHeight: 1.4,\r\n resize: 'none',\r\n outline: 'none',\r\n transition: 'border-color 0.2s ease, box-shadow 0.2s ease',\r\n fontFamily: 'inherit',\r\n background: '#f8fafc',\r\n color: '#334155',\r\n ...(isLoading ? {\r\n opacity: 0.6,\r\n cursor: 'not-allowed'\r\n } : {})\r\n});\r\n\r\nexport const getSendButtonStyles = (isLoading: boolean, hasMessage: boolean): React.CSSProperties => ({\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '50%',\r\n border: 'none',\r\n background: isLoading || !hasMessage ? '#e2e8f0' : 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n color: '#ffffff',\r\n cursor: isLoading || !hasMessage ? 'not-allowed' : 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'all 0.2s ease',\r\n fontSize: '16px',\r\n});\r\n","export const getHeaderStyles = (headerBackground: string): React.CSSProperties => ({\r\n padding: '16px 20px',\r\n background: headerBackground,\r\n color: '#ffffff',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n});\r\n\r\nexport const getLogoContainerStyles = (): React.CSSProperties => ({\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '18px',\r\n overflow: 'hidden',\r\n});\r\n\r\nexport const getLogoImageStyles = (): React.CSSProperties => ({\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n borderRadius: '50%',\r\n});\r\n\r\nexport const getLogoTextStyles = (): React.CSSProperties => ({\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n});\r\n\r\nexport const getCompanyNameStyles = (): React.CSSProperties => ({\r\n margin: 0,\r\n fontSize: '16px',\r\n fontWeight: 600,\r\n});\r\n\r\nexport const getStatusTextStyles = (): React.CSSProperties => ({\r\n margin: 0,\r\n fontSize: '12px',\r\n opacity: 0.8,\r\n});\r\n","export const getButtonSizes = () => ({\r\n sm: { width: '50px', height: '50px', fontSize: '20px' },\r\n md: { width: '60px', height: '60px', fontSize: '24px' },\r\n lg: { width: '70px', height: '70px', fontSize: '28px' }\r\n});\r\n\r\nexport const getFloatingButtonStyles = (\r\n buttonPosition: 'bottom-left' | 'bottom-right',\r\n buttonSize: 'sm' | 'md' | 'lg',\r\n buttonBackground: string,\r\n isOpen: boolean\r\n): React.CSSProperties => {\r\n const buttonSizes = getButtonSizes();\r\n const buttonSizeStyle = buttonSizes[buttonSize];\r\n\r\n return {\r\n position: 'fixed',\r\n [buttonPosition === 'bottom-left' ? 'left' : 'right']: '20px',\r\n bottom: '20px',\r\n width: buttonSizeStyle.width,\r\n height: buttonSizeStyle.height,\r\n borderRadius: '50%',\r\n background: buttonBackground,\r\n border: 'none',\r\n color: '#ffffff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: buttonSizeStyle.fontSize,\r\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\r\n transition: 'all 0.3s ease',\r\n zIndex: 1000,\r\n transform: isOpen ? 'scale(0.9)' : 'scale(1)',\r\n };\r\n};\r\n\r\nexport const getChatContainerStyles = (\r\n buttonPosition: 'bottom-left' | 'bottom-right',\r\n chatWidth: string,\r\n chatHeight: string,\r\n isOpen: boolean\r\n): React.CSSProperties => ({\r\n position: 'fixed',\r\n [buttonPosition === 'bottom-left' ? 'left' : 'right']: '20px',\r\n bottom: '90px',\r\n width: chatWidth,\r\n height: chatHeight,\r\n zIndex: 9999999,\r\n transform: isOpen ? 'translateY(0) scale(1)' : 'translateY(20px) scale(0.95)',\r\n opacity: isOpen ? 1 : 0,\r\n visibility: isOpen ? 'visible' : 'hidden',\r\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\r\n transformOrigin: buttonPosition === 'bottom-left' ? 'bottom left' : 'bottom right',\r\n});\r\n\r\nexport const getOverlayStyles = (isOpen: boolean): React.CSSProperties => ({\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n background: 'rgba(0, 0, 0, 0.1)',\r\n zIndex: 998,\r\n opacity: isOpen ? 1 : 0,\r\n visibility: isOpen ? 'visible' : 'hidden',\r\n transition: 'all 0.3s ease',\r\n});\r\n\r\nexport const getChatbotContainerStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n background: '#ffffff',\r\n borderRadius: '12px',\r\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\r\n border: '1px solid #e2e8f0',\r\n overflow: 'hidden',\r\n});\r\n\r\nexport const getMessagesContainerStyles = (): React.CSSProperties => ({\r\n flex: 1,\r\n overflowY: 'auto',\r\n padding: '16px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '4px',\r\n background: '#f8fafc',\r\n});\r\n\r\nexport const getEmptyStateStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%',\r\n color: '#64748b',\r\n textAlign: 'center',\r\n padding: '40px 20px',\r\n});\r\n","export const getLoadingSpinnerStyles = (): React.CSSProperties => ({\r\n width: '16px',\r\n height: '16px',\r\n border: '2px solid transparent',\r\n borderTop: '2px solid currentColor',\r\n borderRadius: '50%',\r\n animation: 'spin 1s linear infinite',\r\n});\r\n","export const getAlertContainerStyles = (type: 'error' | 'warning' | 'success'): React.CSSProperties => {\r\n const colors = {\r\n error: {\r\n background: 'linear-gradient(135deg, #ef4444 0%, #dc2626 100%)',\r\n border: '#dc2626',\r\n shadow: 'rgba(239, 68, 68, 0.2)',\r\n },\r\n warning: {\r\n background: 'linear-gradient(135deg, #f59e0b 0%, #d97706 100%)',\r\n border: '#d97706',\r\n shadow: 'rgba(245, 158, 11, 0.2)',\r\n },\r\n success: {\r\n background: 'linear-gradient(135deg, #10b981 0%, #059669 100%)',\r\n border: '#059669',\r\n shadow: 'rgba(16, 185, 129, 0.2)',\r\n },\r\n };\r\n\r\n const selectedColor = colors[type];\r\n\r\n return {\r\n background: selectedColor.background,\r\n border: `1px solid ${selectedColor.border}`,\r\n borderRadius: '12px',\r\n padding: '14px 16px',\r\n margin: '12px 16px',\r\n boxShadow: `0 4px 12px ${selectedColor.shadow}`,\r\n color: '#ffffff',\r\n fontSize: '13px',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '12px',\r\n position: 'relative',\r\n animation: 'slideDown 0.3s ease-out',\r\n };\r\n};\r\n\r\nexport const getAlertIconContainerStyles = (): React.CSSProperties => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '24px',\r\n height: '24px',\r\n flexShrink: 0,\r\n marginTop: '2px',\r\n});\r\n\r\nexport const getAlertContentStyles = (): React.CSSProperties => ({\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n});\r\n\r\nexport const getAlertTitleStyles = (): React.CSSProperties => ({\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n margin: 0,\r\n lineHeight: 1.4,\r\n});\r\n\r\nexport const getAlertMessageStyles = (): React.CSSProperties => ({\r\n margin: 0,\r\n lineHeight: 1.5,\r\n opacity: 0.95,\r\n});\r\n\r\nexport const getAlertListStyles = (): React.CSSProperties => ({\r\n margin: '8px 0 0 0',\r\n paddingLeft: '20px',\r\n listStyle: 'none',\r\n});\r\n\r\nexport const getAlertListItemStyles = (): React.CSSProperties => ({\r\n marginBottom: '4px',\r\n position: 'relative',\r\n paddingLeft: '12px',\r\n lineHeight: 1.4,\r\n});\r\n\r\nexport const getAlertCloseButtonStyles = (): React.CSSProperties => ({\r\n position: 'absolute',\r\n top: '12px',\r\n right: '12px',\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n border: 'none',\r\n borderRadius: '6px',\r\n width: '24px',\r\n height: '24px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'pointer',\r\n color: '#ffffff',\r\n transition: 'all 0.2s ease',\r\n padding: 0,\r\n});\r\n\r\nexport const getAlertAnimationStyles = (): string => `\r\n @keyframes slideDown {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-10px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n`;\r\n\r\n","\"use client\"\r\nimport { AizekChatBotProps, Message, BackendConfig } from \"../types/chatbot\";\r\nimport { useChatbot } from \"../hooks/useChatbot\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport ReactMarkdown from 'react-markdown';\r\nimport remarkGfm from 'remark-gfm';\r\nimport { fetchChatWidgetSettings, mapApiSettingsToConfig } from \"../services/chatWidgetApi\";\r\nimport { getMessageBubbleStyles, getTimeStyles, getMarkdownStyles, getMarkdownElementStyles, getMessageContainerStyles, getInputContainerStyles, getTextareaStyles, getSendButtonStyles, getHeaderStyles, getLogoContainerStyles, getLogoImageStyles, getLogoTextStyles, getCompanyNameStyles, getStatusTextStyles, getFloatingButtonStyles, getChatContainerStyles, getOverlayStyles, getChatbotContainerStyles, getMessagesContainerStyles, getEmptyStateStyles, getLoadingSpinnerStyles, getAlertContainerStyles, getAlertIconContainerStyles, getAlertContentStyles, getAlertTitleStyles, getAlertMessageStyles, getAlertListStyles, getAlertListItemStyles, getAlertCloseButtonStyles, getAlertAnimationStyles } from \"../styles\";\r\nimport { validateHeaders } from \"../utils/cx\";\r\n\r\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({ clientId, headers }) => {\r\n const defaultConfig: BackendConfig = {\r\n welcomeMessage: 'Merhaba! Size nasıl yardımcı olabilirim?',\r\n buttonBackground: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n placeholder: \"Mesajınızı yazın...\",\r\n buttonPosition: 'bottom-left',\r\n buttonSize: 'md',\r\n chatWidth: '400px',\r\n chatHeight: '600px',\r\n showTypingIndicator: true,\r\n initialOpen: true,\r\n headerBackground: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n companyLogo: undefined,\r\n companyName: 'AI Asistan',\r\n };\r\n\r\n const [config, setConfig] = useState<BackendConfig>(defaultConfig);\r\n const [isConfigLoading, setIsConfigLoading] = useState(true);\r\n const [finalMcpUrl, setFinalMcpUrl] = useState<string>('');\r\n const [apiKey, setApiKey] = useState<string>('');\r\n const { welcomeMessage, buttonBackground, placeholder, buttonPosition, buttonSize, chatWidth, chatHeight, showTypingIndicator, initialOpen, headerBackground, companyLogo, companyName } = config;\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [headerValidation, setHeaderValidation] = useState<{\r\n isValid: boolean;\r\n missingKeys: string[];\r\n extraKeys: string[];\r\n emptyValueKeys: string[];\r\n } | null>(null);\r\n const [showAlert, setShowAlert] = useState(true);\r\n\r\n\r\n\r\n\r\n useEffect(() => {\r\n console.log(\"render\");\r\n\r\n const loadConfig = async () => {\r\n try {\r\n setIsConfigLoading(true);\r\n const apiResponse = await fetchChatWidgetSettings(clientId);\r\n if (headers && apiResponse.data.auth_config) {\r\n const validationResult = validateHeaders(headers, apiResponse.data.auth_config, {\r\n allowExtra: false,\r\n caseSensitive: true,\r\n });\r\n\r\n console.log(validationResult);\r\n\r\n setHeaderValidation(validationResult);\r\n }\r\n\r\n setFinalMcpUrl(apiResponse.data.mcp_url);\r\n setApiKey(apiResponse.data.openai_key || '');\r\n\r\n const apiConfig = mapApiSettingsToConfig(apiResponse.data.chat_widget_settings);\r\n if (apiConfig) {\r\n setConfig(apiConfig);\r\n }\r\n } catch (error) {\r\n console.error('Failed to load chat widget config:', error);\r\n setFinalMcpUrl('');\r\n } finally {\r\n setIsConfigLoading(false);\r\n }\r\n };\r\n\r\n loadConfig();\r\n }, [clientId]);\r\n\r\n const internalChatbot = useChatbot({ mcpUrl: finalMcpUrl, apiKey: apiKey, headers, config });\r\n\r\n const messages = internalChatbot.messages;\r\n const isLoading = internalChatbot.isLoading;\r\n const handleSendMessage = internalChatbot.sendMessage;\r\n\r\n const toggleChat = () => {\r\n const newIsOpen = !isOpen;\r\n setIsOpen(newIsOpen);\r\n };\r\n\r\n useEffect(() => {\r\n setIsOpen(initialOpen);\r\n }, [initialOpen]);\r\n\r\n const messagesEndRef = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });\r\n }, [messages]);\r\n\r\n\r\n\r\n const MessageBubble: React.FC<{ message: Message }> = ({ message }) => {\r\n const isUser = message.role === 'user';\r\n\r\n return (\r\n <div style={getMessageContainerStyles(isUser)}>\r\n <style>{getMarkdownElementStyles(isUser)}</style>\r\n <div style={getMessageBubbleStyles(isUser)}>\r\n {isUser ?\r\n <div style={getMarkdownStyles()} className=\"markdown-content\">\r\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\r\n {message.content}\r\n </ReactMarkdown>\r\n </div>\r\n : <div dangerouslySetInnerHTML={{ __html: message.content }} />\r\n }\r\n {message.isTyping && (\r\n <div style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginLeft: '8px'\r\n }}>\r\n <TypingDots />\r\n </div>\r\n )}\r\n </div>\r\n <div style={getTimeStyles(isUser)}>\r\n {message.timestamp.toLocaleTimeString('tr-TR', {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n })}\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const TypingDots: React.FC = () => {\r\n const [dots, setDots] = useState('');\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setDots(prev => {\r\n if (prev === '...') return '';\r\n return prev + '.';\r\n });\r\n }, 500);\r\n\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n return <span>{dots}</span>;\r\n };\r\n\r\n const HeaderValidationAlert: React.FC = () => {\r\n if (!headerValidation || !showAlert) return null;\r\n\r\n const { isValid, missingKeys, extraKeys, emptyValueKeys } = headerValidation;\r\n\r\n // Eğer her şey geçerliyse, alert gösterme\r\n if (isValid && missingKeys.length === 0 && extraKeys.length === 0 && emptyValueKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n // Hata tipini belirle\r\n const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;\r\n const hasWarnings = extraKeys.length > 0;\r\n const alertType = hasErrors ? 'error' : 'warning';\r\n\r\n const getAlertIcon = () => {\r\n if (hasErrors) {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\r\n </svg>\r\n );\r\n }\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\r\n </svg>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <style>{getAlertAnimationStyles()}</style>\r\n <div style={getAlertContainerStyles(alertType)}>\r\n <div style={getAlertIconContainerStyles()}>\r\n {getAlertIcon()}\r\n </div>\r\n <div style={getAlertContentStyles()}>\r\n <h4 style={getAlertTitleStyles()}>\r\n {hasErrors ? 'Header Doğrulama Hatası' : 'Header Uyarısı'}\r\n </h4>\r\n <p style={getAlertMessageStyles()}>\r\n {hasErrors && hasWarnings\r\n ? 'Header yapılandırmanızda hatalar ve uyarılar bulundu.'\r\n : hasErrors\r\n ? 'Header yapılandırmanızda hatalar bulundu.'\r\n : 'Header yapılandırmanızda fazla anahtarlar bulundu.'}\r\n </p>\r\n\r\n {missingKeys.length > 0 && (\r\n <div>\r\n <strong style={{ fontSize: '13px' }}>Eksik Header'lar:</strong>\r\n <ul style={getAlertListStyles()}>\r\n {missingKeys.map((key, index) => (\r\n <li key={index} style={getAlertListItemStyles()}>\r\n <span style={{\r\n position: 'absolute',\r\n left: '0',\r\n top: '2px',\r\n fontWeight: 'bold'\r\n }}>•</span>\r\n <code style={{\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n padding: '2px 6px',\r\n borderRadius: '4px',\r\n fontFamily: 'monospace',\r\n fontSize: '12px'\r\n }}>{key}</code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {emptyValueKeys.length > 0 && (\r\n <div>\r\n <strong style={{ fontSize: '13px' }}>Boş Değerli Header'lar:</strong>\r\n <ul style={getAlertListStyles()}>\r\n {emptyValueKeys.map((key, index) => (\r\n <li key={index} style={getAlertListItemStyles()}>\r\n <span style={{\r\n position: 'absolute',\r\n left: '0',\r\n top: '2px',\r\n fontWeight: 'bold'\r\n }}>•</span>\r\n <code style={{\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n padding: '2px 6px',\r\n borderRadius: '4px',\r\n fontFamily: 'monospace',\r\n fontSize: '12px'\r\n }}>{key}</code>\r\n <span style={{\r\n marginLeft: '6px',\r\n fontSize: '11px',\r\n opacity: 0.9\r\n }}>(değer boş olamaz)</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {extraKeys.length > 0 && (\r\n <div>\r\n <strong style={{ fontSize: '13px' }}>Fazla Header'lar:</strong>\r\n <ul style={getAlertListStyles()}>\r\n {extraKeys.map((key, index) => (\r\n <li key={index} style={getAlertListItemStyles()}>\r\n <span style={{\r\n position: 'absolute',\r\n left: '0',\r\n top: '2px',\r\n fontWeight: 'bold'\r\n }}>•</span>\r\n <code style={{\r\n background: 'rgba(255, 255, 255, 0.2)',\r\n padding: '2px 6px',\r\n borderRadius: '4px',\r\n fontFamily: 'monospace',\r\n fontSize: '12px'\r\n }}>{key}</code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n <button\r\n onClick={() => setShowAlert(false)}\r\n style={getAlertCloseButtonStyles()}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.background = 'rgba(255, 255, 255, 0.3)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.background = 'rgba(255, 255, 255, 0.2)';\r\n }}\r\n aria-label=\"Uyarıyı kapat\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </>\r\n );\r\n };\r\n\r\n const ChatInput: React.FC = () => {\r\n const [message, setMessage] = useState(\"\");\r\n const textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (message.trim() && !isLoading) {\r\n handleSendMessage(message.trim());\r\n setMessage(\"\");\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = 'auto';\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === 'Enter' && !e.shiftKey) {\r\n e.preventDefault();\r\n handleSubmit(e);\r\n }\r\n };\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n setMessage(e.target.value);\r\n\r\n const textarea = e.target;\r\n textarea.style.height = 'auto';\r\n textarea.style.height = Math.min(textarea.scrollHeight, 120) + 'px';\r\n };\r\n\r\n return (\r\n <form onSubmit={handleSubmit} style={getInputContainerStyles()}>\r\n <textarea\r\n ref={textareaRef}\r\n value={message}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n disabled={isLoading}\r\n style={getTextareaStyles(isLoading)}\r\n />\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading || !message.trim()}\r\n style={getSendButtonStyles(isLoading, !!message.trim())}\r\n onMouseEnter={(e) => {\r\n if (!isLoading && message.trim()) {\r\n e.currentTarget.style.transform = 'scale(1.05)';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.transform = 'scale(1)';\r\n }}\r\n >\r\n {isLoading ? (\r\n <LoadingSpinner />\r\n ) : (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </form>\r\n );\r\n };\r\n\r\n const LoadingSpinner: React.FC = () => {\r\n return <div style={getLoadingSpinnerStyles()} />;\r\n };\r\n\r\n\r\n // Show loading state while config is being fetched\r\n if (isConfigLoading) {\r\n return (\r\n <div style={getFloatingButtonStyles(buttonPosition, buttonSize, buttonBackground, false)}>\r\n <div style={getLoadingSpinnerStyles()} />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <div\r\n style={getOverlayStyles(isOpen)}\r\n onClick={toggleChat}\r\n className=\"floating-chat-overlay\"\r\n />\r\n )}\r\n\r\n <div style={getChatContainerStyles(buttonPosition, chatWidth, chatHeight, isOpen)} className=\"floating-chat-container\">\r\n <div style={getChatbotContainerStyles()}>\r\n <div style={getHeaderStyles(headerBackground)}>\r\n <div style={getLogoContainerStyles()}>\r\n {companyLogo ? (\r\n companyLogo.startsWith('http') || companyLogo.startsWith('data:') ? (\r\n <img\r\n src={companyLogo}\r\n alt=\"Company Logo\"\r\n style={getLogoImageStyles()}\r\n />\r\n ) : (\r\n <span style={getLogoTextStyles()}>\r\n {companyLogo}\r\n </span>\r\n )\r\n ) : (\r\n '🤖'\r\n )}\r\n </div>\r\n <div>\r\n <h3 style={getCompanyNameStyles()}>\r\n {companyName}\r\n </h3>\r\n <p style={getStatusTextStyles()}>\r\n {isLoading ? 'Yazıyor...' : 'Çevrimiçi'}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div style={getMessagesContainerStyles()}>\r\n <HeaderValidationAlert />\r\n\r\n {messages.length === 0 ? (\r\n <div style={getEmptyStateStyles()}>\r\n <div style={{ fontSize: '48px', marginBottom: '16px' }}>💬</div>\r\n <h4 style={{ margin: '0 0 8px 0', fontSize: '18px' }}>\r\n {welcomeMessage}\r\n </h4>\r\n <p style={{ margin: 0, fontSize: '14px', opacity: 0.8 }}>\r\n Aşağıdaki alana mesajınızı yazarak başlayabilirsiniz.\r\n </p>\r\n </div>\r\n ) : (\r\n messages.map((message) => (\r\n <MessageBubble key={message.id} message={message} />\r\n ))\r\n )}\r\n\r\n {showTypingIndicator && isLoading && messages.length > 0 && (\r\n <MessageBubble\r\n message={{\r\n id: 'typing',\r\n content: '',\r\n role: 'assistant',\r\n timestamp: new Date(),\r\n isTyping: true\r\n }}\r\n />\r\n )}\r\n <div ref={messagesEndRef} />\r\n </div>\r\n\r\n <ChatInput />\r\n </div>\r\n </div>\r\n\r\n <button\r\n onClick={toggleChat}\r\n style={getFloatingButtonStyles(buttonPosition, buttonSize, buttonBackground, isOpen)}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.transform = isOpen ? 'scale(0.85)' : 'scale(1.1)';\r\n e.currentTarget.style.boxShadow = '0 6px 20px rgba(0, 0, 0, 0.25)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.transform = isOpen ? 'scale(0.9)' : 'scale(1)';\r\n e.currentTarget.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.15)';\r\n }}\r\n className=\"floating-chat-button\"\r\n aria-label={isOpen ? 'Chati kapat' : 'Chati aç'}\r\n >\r\n {isOpen ? (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n ) : (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </>\r\n );\r\n};"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aizek-chatbot",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "React + TS component library (no Tailwind)",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.cjs",
@@ -26,6 +26,7 @@
26
26
  "keywords": [],
27
27
  "author": "",
28
28
  "dependencies": {
29
+ "dompurify": "^3.3.0",
29
30
  "openai": "^5.22.0",
30
31
  "react-markdown": "^10.1.0",
31
32
  "remark-gfm": "^4.0.1"
@@ -33,9 +34,9 @@
33
34
  "devDependencies": {
34
35
  "@types/react": "^19.1.12",
35
36
  "@types/react-dom": "^19.1.9",
37
+ "clsx": "^2.1.1",
36
38
  "react": "^19.1.1",
37
39
  "react-dom": "^19.1.1",
38
- "clsx": "^2.1.1",
39
40
  "tsup": "^8.5.0",
40
41
  "typescript": "^5.9.2"
41
42
  },