aizek-chatbot 1.0.10 → 1.0.12
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/index.cjs +1226 -229
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +112 -4
- package/dist/index.d.ts +112 -4
- package/dist/index.mjs +1226 -228
- package/dist/index.mjs.map +1 -1
- package/package.json +47 -47
package/dist/index.mjs.map
CHANGED
|
@@ -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","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\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 const getHtmlUiInstructions = (config?: BackendConfig) => {\r\n const headerColor = config?.headerBackground || \"#f5f5f5\";\r\n const accentColor = config?.buttonBackground || \"#007bff\";\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 colors from options.config (headerBackground, buttonBackground).\r\n- Return ONLY raw HTML (no markdown, no backticks, no JSON, no explanations).\r\n\r\n====================\r\nTHEME (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\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, 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\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\nGENERAL RULE:\r\n- In NORMAL responses, you MUST NOT use <button>.\r\n\r\nFORBIDDEN (NORMAL MODE):\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\r\nHeader area (if you use one):\r\n- You may add a top header area using the header background color:\r\n background: ${headerColor};\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\nCONFIRMATION MODE (SPECIAL CASE)\r\n====================\r\nSometimes, during a workflow or tool usage, you may need the user to confirm an action\r\n(e.g., deleting a workflow, sending a transaction, performing an irreversible change).\r\n\r\nIn such CONFIRMATION cases ONLY:\r\n- You ARE allowed to use exactly TWO <button> elements.\r\n- They MUST be rendered with these exact data attributes:\r\n\r\n <button data-ai-action=\"approve\">Onayla</button>\r\n <button data-ai-action=\"cancel\">Vazgeç</button>\r\n\r\nRules for confirmation buttons:\r\n- Do NOT add onclick or any other JS event attributes.\r\n- Do NOT add custom data attributes besides data-ai-action.\r\n- The host application will detect these buttons by data-ai-action\r\n and will send the following messages back to you:\r\n \"__APPROVE__\" when the user clicks \"Onayla\"\r\n \"__CANCEL__\" when the user clicks \"Vazgeç\"\r\n\r\nBehavior after user choice:\r\n- When you receive \"__APPROVE__\", behave as if the user confirmed YES.\r\n- When you receive \"__CANCEL__\", behave as if the user declined or cancelled.\r\n- After that, go back to NORMAL mode and return standard HTML output again\r\n (card, table, or mini table, WITHOUT <button>).\r\n\r\nIMPORTANT:\r\n- In NORMAL responses (no confirmation needed), you MUST NOT use <button>.\r\n- In CONFIRMATION MODE, you MUST use exactly these two buttons and NO others.\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 - headerBackground\r\n - buttonBackground\r\n and otherwise a light theme.\r\n\r\n====================\r\nBEHAVIOR SUMMARY\r\n====================\r\n1) Read the user message.\r\n2) If it is a normal response:\r\n - Decide whether CARD, TABLE, or MINI TABLE is most suitable.\r\n - Generate a single HTML layout using only allowed, non-interactive tags (no <button>).\r\n3) If you need explicit user confirmation:\r\n - Enter CONFIRMATION MODE.\r\n - Render a short explanation AND exactly two <button> elements with:\r\n data-ai-action=\"approve\" and data-ai-action=\"cancel\".\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 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 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 setResponseId(resp.id);\r\n\r\n let responseText = \"\";\r\n\r\n if (resp && Array.isArray(resp)) {\r\n const messageItem = resp.find((item) => item.type === \"message\");\r\n\r\n if (\r\n messageItem &&\r\n messageItem.content &&\r\n Array.isArray(messageItem.content)\r\n ) {\r\n const textContent = messageItem.content.find(\r\n (content: any) => content.type === \"output_text\"\r\n );\r\n\r\n if (textContent && textContent.text) {\r\n responseText = textContent.text;\r\n }\r\n }\r\n } else {\r\n if (resp && (resp as any).output_text) {\r\n responseText = (resp as any).output_text;\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 } catch (error) {\r\n console.error(\"Error sending message:\", error);\r\n addMessage(\r\n \"Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.\",\r\n \"assistant\"\r\n );\r\n setIsLoading(false);\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 = (\r\n isUser: boolean,\r\n isTyping: boolean\r\n): React.CSSProperties => ({\r\n display: !isTyping && !isUser ? \"none\" : \"block\",\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 ? {\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 : {\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\"\r\n }, ${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\"\r\n }, ${isUser ? \"#ffffff\" : \"#764ba2\"});\r\n }\r\n`;\r\n\r\nexport const getMessageContainerStyles = (\r\n isUser: boolean\r\n): 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 DOMPurify from \"dompurify\";\r\n\r\nimport {\r\n fetchChatWidgetSettings,\r\n mapApiSettingsToConfig,\r\n} from \"../services/chatWidgetApi\";\r\nimport {\r\n getMessageBubbleStyles,\r\n getTimeStyles,\r\n getMarkdownStyles,\r\n getMarkdownElementStyles,\r\n getMessageContainerStyles,\r\n getInputContainerStyles,\r\n getTextareaStyles,\r\n getSendButtonStyles,\r\n getHeaderStyles,\r\n getLogoContainerStyles,\r\n getLogoImageStyles,\r\n getLogoTextStyles,\r\n getCompanyNameStyles,\r\n getStatusTextStyles,\r\n getFloatingButtonStyles,\r\n getChatContainerStyles,\r\n getOverlayStyles,\r\n getChatbotContainerStyles,\r\n getMessagesContainerStyles,\r\n getEmptyStateStyles,\r\n getLoadingSpinnerStyles,\r\n getAlertContainerStyles,\r\n getAlertIconContainerStyles,\r\n getAlertContentStyles,\r\n getAlertTitleStyles,\r\n getAlertMessageStyles,\r\n getAlertListStyles,\r\n getAlertListItemStyles,\r\n getAlertCloseButtonStyles,\r\n getAlertAnimationStyles,\r\n} from \"../styles\";\r\nimport { validateHeaders } from \"../utils/cx\";\r\n\r\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({\r\n clientId,\r\n headers,\r\n}) => {\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 {\r\n welcomeMessage,\r\n buttonBackground,\r\n placeholder,\r\n buttonPosition,\r\n buttonSize,\r\n chatWidth,\r\n chatHeight,\r\n showTypingIndicator,\r\n initialOpen,\r\n headerBackground,\r\n companyLogo,\r\n companyName,\r\n } = 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 console.log(\"Component rendered\");\r\n\r\n useEffect(() => {\r\n console.log(\"use\");\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(\r\n headers,\r\n apiResponse.data.auth_config,\r\n {\r\n allowExtra: false,\r\n caseSensitive: true,\r\n }\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(\r\n apiResponse.data.chat_widget_settings\r\n );\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({\r\n mcpUrl: finalMcpUrl,\r\n apiKey: apiKey,\r\n headers,\r\n config,\r\n });\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 // ⭐ MessageBubble'a onAction prop'u eklendi\r\n const MessageBubble: React.FC<{\r\n message: Message;\r\n onAction: (msg: string) => void;\r\n }> = ({ message, onAction }) => {\r\n const isUser = message.role === \"user\";\r\n const cleanContent = DOMPurify.sanitize(message.content);\r\n\r\n // ⭐ Assistant HTML içindeki butonları dinlemek için ref\r\n const htmlRef = useRef<HTMLDivElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (!htmlRef.current || isUser) return;\r\n\r\n const root = htmlRef.current;\r\n\r\n const approveBtn = root.querySelector<HTMLButtonElement>(\r\n 'button[data-ai-action=\"approve\"]'\r\n );\r\n const cancelBtn = root.querySelector<HTMLButtonElement>(\r\n 'button[data-ai-action=\"cancel\"]'\r\n );\r\n\r\n const handleApprove = () => onAction(\"__APPROVE__\");\r\n const handleCancel = () => onAction(\"__CANCEL__\");\r\n\r\n if (approveBtn) approveBtn.addEventListener(\"click\", handleApprove);\r\n if (cancelBtn) cancelBtn.addEventListener(\"click\", handleCancel);\r\n\r\n return () => {\r\n if (approveBtn) approveBtn.removeEventListener(\"click\", handleApprove);\r\n if (cancelBtn) cancelBtn.removeEventListener(\"click\", handleCancel);\r\n };\r\n }, [message.content, isUser, onAction]);\r\n\r\n return (\r\n <div style={getMessageContainerStyles(isUser)}>\r\n <style>{getMarkdownElementStyles(isUser)}</style>\r\n <div style={getMessageBubbleStyles(isUser, message.isTyping ?? false)}>\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\r\n }\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 {!isUser &&\r\n <div dangerouslySetInnerHTML={{ __html: cleanContent }} />\r\n\r\n }\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 } =\r\n headerValidation;\r\n\r\n if (\r\n isValid &&\r\n missingKeys.length === 0 &&\r\n extraKeys.length === 0 &&\r\n emptyValueKeys.length === 0\r\n ) {\r\n return null;\r\n }\r\n\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()}>{getAlertIcon()}</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\r\n style={{\r\n position: \"absolute\",\r\n left: \"0\",\r\n top: \"2px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n •\r\n </span>\r\n <code\r\n 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 }}\r\n >\r\n {key}\r\n </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\" }}>\r\n Boş Değerli Header'lar:\r\n </strong>\r\n <ul style={getAlertListStyles()}>\r\n {emptyValueKeys.map((key, index) => (\r\n <li key={index} style={getAlertListItemStyles()}>\r\n <span\r\n style={{\r\n position: \"absolute\",\r\n left: \"0\",\r\n top: \"2px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n •\r\n </span>\r\n <code\r\n 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 }}\r\n >\r\n {key}\r\n </code>\r\n <span\r\n style={{\r\n marginLeft: \"6px\",\r\n fontSize: \"11px\",\r\n opacity: 0.9,\r\n }}\r\n >\r\n (değer boş olamaz)\r\n </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\r\n style={{\r\n position: \"absolute\",\r\n left: \"0\",\r\n top: \"2px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n •\r\n </span>\r\n <code\r\n 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 }}\r\n >\r\n {key}\r\n </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 if (isConfigLoading) {\r\n return (\r\n <div\r\n style={getFloatingButtonStyles(\r\n buttonPosition,\r\n buttonSize,\r\n buttonBackground,\r\n false\r\n )}\r\n >\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\r\n style={getChatContainerStyles(\r\n buttonPosition,\r\n chatWidth,\r\n chatHeight,\r\n isOpen\r\n )}\r\n className=\"floating-chat-container\"\r\n >\r\n <div style={getChatbotContainerStyles()}>\r\n <div style={getHeaderStyles(headerBackground)}>\r\n <div style={getLogoContainerStyles()}>\r\n {companyLogo ? (\r\n companyLogo.startsWith(\"http\") ||\r\n 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()}>{companyLogo}</span>\r\n )\r\n ) : (\r\n \"🤖\"\r\n )}\r\n </div>\r\n <div>\r\n <h3 style={getCompanyNameStyles()}>{companyName}</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\r\n key={message.id}\r\n message={message}\r\n onAction={handleSendMessage} // ⭐ burada bağladık\r\n />\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 onAction={handleSendMessage}\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(\r\n buttonPosition,\r\n buttonSize,\r\n buttonBackground,\r\n isOpen\r\n )}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.transform = isOpen\r\n ? \"scale(0.85)\"\r\n : \"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};\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/uiRenderer.tsx","../src/components/FloatingChat.tsx"],"names":["useState","jsx","jsxs"],"mappings":"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","file":"index.mjs","sourcesContent":["import { AuthConfig, HeadersType } from \"../types/chatbot\";\n\nexport function cx(...args: Array<string | false | null | undefined>): string {\n return args.filter(Boolean).join(\" \");\n}\n\nexport function validateHeaders(\n headers: HeadersType,\n authConfig: AuthConfig,\n opts: { caseSensitive?: boolean; allowExtra?: boolean } = {}\n) {\n const { caseSensitive = false, allowExtra = false } = opts;\n\n const normalize = (s: string) => (caseSensitive ? s : s.toLowerCase());\n\n const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);\n const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);\n\n const headerKeys = headerEntries.map(([k]) => k);\n const authKeys = authEntries.map(([k]) => k);\n\n const requiredSet = new Set(authKeys);\n\n const missingKeys = authKeys.filter(k => !headerKeys.includes(k));\n const extraKeys = headerKeys.filter(k => !requiredSet.has(k));\n\n // 🔍 1. Gerekli tüm key’ler mevcut mu?\n const hasAllRequired = missingKeys.length === 0;\n // 🔍 2. Fazla key var mı?\n const hasExtraKeys = extraKeys.length > 0 && !allowExtra;\n // 🔍 3. Gerekli değerler boş mu?\n const emptyValueKeys = authKeys.filter(k => {\n const val = headerEntries.find(([key]) => key === k)?.[1];\n return !val || val.length === 0;\n });\n\n const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;\n\n return { isValid, missingKeys, extraKeys, emptyValueKeys };\n}","import * as React from \"react\";\nimport { cx } from \"../utils/cx\";\nimport { ButtonProps, ButtonSize, ButtonVariant } from \"../types/button\";\n\n\n\n\nconst base: React.CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: 12,\n fontWeight: 600,\n lineHeight: 1,\n transition: \"background-color .2s ease, color .2s ease, border-color .2s ease\",\n outline: \"none\",\n cursor: \"pointer\",\n};\n\n\nconst sizes: Record<ButtonSize, React.CSSProperties> = {\n sm: { height: 36, padding: \"0 12px\", fontSize: 14 },\n md: { height: 40, padding: \"0 16px\", fontSize: 16 },\n lg: { height: 44, padding: \"0 20px\", fontSize: 18 },\n};\n\n\nconst palette = {\n brand: {\n primary: \"#2563eb\",\n primaryHover: \"#1d4ed8\",\n },\n};\n\n\nfunction styleFor(variant: ButtonVariant): React.CSSProperties {\n switch (variant) {\n case \"outline\":\n return {\n background: \"transparent\",\n color: palette.brand.primary,\n border: `1px solid ${palette.brand.primary}`,\n };\n case \"ghost\":\n return {\n background: \"transparent\",\n color: palette.brand.primary,\n border: \"1px solid transparent\",\n };\n default:\n return {\n background: palette.brand.primary,\n color: \"#fff\",\n border: \"1px solid transparent\",\n };\n }\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = \"primary\", size = \"md\", style, className, onMouseEnter, onMouseLeave, ...props }, ref) => {\n const [hover, setHover] = React.useState(false);\n\n\n const hoverStyle: React.CSSProperties =\n variant === \"primary\"\n ? { background: hover ? palette.brand.primaryHover : palette.brand.primary }\n : variant === \"outline\"\n ? { borderColor: hover ? palette.brand.primaryHover : palette.brand.primary }\n : { background: hover ? \"rgba(37, 99, 235, 0.08)\" : \"transparent\" };\n\n\n return (\n <button\n ref={ref}\n className={cx(\"rui-btn\", className)}\n style={{ ...base, ...sizes[size], ...styleFor(variant), ...(hover ? hoverStyle : {}), ...style }}\n onMouseEnter={(e) => {\n setHover(true);\n onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n setHover(false);\n onMouseLeave?.(e);\n }}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";","import { useState } from \"react\";\nimport { Message, BackendConfig } from \"../types/chatbot\";\nimport OpenAI from \"openai\";\nimport { UIComponent } from \"../components/uiRenderer\";\n\nexport interface UseChatbotOptions {\n apiKey?: string;\n mcpUrl?: string;\n headers?: Record<string, string>;\n config?: BackendConfig;\n}\n\nexport const useChatbot = (options: UseChatbotOptions = {}) => {\n const { mcpUrl, apiKey, config } = options;\n const client = new OpenAI({ apiKey: apiKey, dangerouslyAllowBrowser: true });\n const [responseId, setResponseId] = useState<string | null>(null);\n\n const [messages, setMessages] = useState<Message[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n\n const generateId = () => {\n return Date.now().toString() + Math.random().toString(36).substr(2, 9);\n };\n\n const addMessage = (\n payload: { text?: string; ui?: UIComponent[] },\n role: \"user\" | \"assistant\" | \"approval\"\n ) => {\n const newMessage: Message = {\n id: generateId(),\n text: payload.text,\n ui: payload.ui,\n role,\n timestamp: new Date(),\n };\n setMessages((prev) => [...prev, newMessage]);\n return newMessage;\n };\n\n const extractUiComponents = (raw: string) => {\n const regex = /```ui-component([\\s\\S]*?)```/g;\n const components: any[] = [];\n let cleaned = raw;\n\n let match: RegExpExecArray | null;\n let componentIndex = 0;\n while ((match = regex.exec(raw)) !== null) {\n const block = match[1].trim();\n try {\n const json = JSON.parse(block);\n\n if (\n json.type === \"buttons\" &&\n json.data &&\n typeof json.data === \"object\" &&\n !Array.isArray(json.data)\n ) {\n if (json.data.options && Array.isArray(json.data.options)) {\n json.data = json.data.options.map((opt: any) => {\n if (opt.id && opt.label) {\n return {\n label: opt.label,\n value: opt.id,\n variant: opt.variant,\n };\n }\n return opt;\n });\n }\n }\n\n // ✅ Normalize table data - convert string arrays to object format\n if (json.type === \"table\" && json.data) {\n // Check if columns is a string array (new format)\n if (\n Array.isArray(json.data.columns) &&\n json.data.columns.length > 0\n ) {\n const firstCol = json.data.columns[0];\n if (typeof firstCol === \"string\") {\n // Convert string array to {id, label} format\n json.data.columns = json.data.columns.map(\n (col: string, idx: number) => ({\n id: `col-${idx}`,\n label: col,\n })\n );\n }\n }\n\n // Check if rows is a string array array (new format)\n if (Array.isArray(json.data.rows) && json.data.rows.length > 0) {\n const firstRow = json.data.rows[0];\n if (Array.isArray(firstRow) && typeof firstRow[0] === \"string\") {\n // Convert string array array to Record<string, UIField> format\n json.data.rows = json.data.rows.map((row: string[]) => {\n const rowObj: Record<string, any> = {};\n json.data.columns.forEach((col: any, idx: number) => {\n const colId = typeof col === \"string\" ? `col-${idx}` : col.id;\n const cellValue = row[idx];\n\n // Check if it's an image URL\n if (\n typeof cellValue === \"string\" &&\n (cellValue.startsWith(\"http\") ||\n cellValue.startsWith(\"data:\"))\n ) {\n rowObj[colId] = {\n type: \"image\",\n src: cellValue,\n alt: \"\",\n };\n } else {\n rowObj[colId] = {\n type: \"text\",\n value: cellValue || \"\",\n };\n }\n });\n return rowObj;\n });\n }\n }\n }\n\n // ✅ Normalize form fields - convert string arrays to { label, value } objects\n if (json.type === \"form\" && json.data) {\n if (!json.data.id) {\n json.data.id = json.id || `form-${componentIndex}`;\n }\n\n if (json.data.fields && Array.isArray(json.data.fields)) {\n json.data.fields = json.data.fields.map((field: any) => {\n if (field.optional !== undefined) {\n field.required = !field.optional;\n delete field.optional;\n }\n\n if (!field.type) {\n field.type = \"text\";\n }\n\n if (field.options && Array.isArray(field.options)) {\n const firstOption = field.options[0];\n if (typeof firstOption === \"string\") {\n field.options = field.options.map((opt: string) => ({\n label: opt,\n value: opt,\n }));\n }\n }\n return field;\n });\n }\n }\n\n if (json.id && typeof json.id !== \"string\") {\n json.id = String(json.id);\n }\n if (!json.id || !json.id.trim()) {\n json.id = `ui-comp-${componentIndex}-${Date.now()}`;\n }\n components.push(json);\n componentIndex++;\n } catch (e) {\n console.error(\"Invalid ui-component JSON:\", e, block);\n }\n cleaned = cleaned.replace(match[0], \"\").trim();\n }\n\n return { text: cleaned, components };\n };\n const instructions = `You are Aizek, an AI assistant running in an environment with Model Context Protocol (MCP) tools.\n\nYour top priority is to USE MCP TOOLS whenever they can handle the user's request.\nDo NOT bypass available tools to answer from generic knowledge, web browsing, or other external sources if a suitable MCP tool exists.\n\n==================================================\n1. GENERAL BEHAVIOR\n==================================================\n\n- Default language: reply in the same language as the user (Turkish/English).\n- Be concise and task-focused. Avoid small talk, philosophy, or meta-chat unless the user explicitly asks.\n- Do not invent capabilities or tools that are not actually defined in the MCP tool list.\n- If a tool call fails or returns an error, explain briefly and either:\n - try again with a corrected call, or\n - ask the user for the minimal extra info required.\n\n==================================================\n2. MCP TOOL PRIORITY RULES\n==================================================\n\nALWAYS prefer MCP tools over any other strategy WHEN:\n\n- The user asks for information that matches a tool's domain (weather, products, etc.).\n- The user asks to perform an action (create/update/delete something) that an MCP tool can perform.\n\nOnly if NO provided MCP tool is relevant may you fall back to:\n1) other tools such as web/browsing, or\n2) your own internal knowledge.\n\nWhen deciding whether a tool is relevant:\n- Read the tool name, description, and parameters.\n- If it is even moderately related to what the user wants, you SHOULD try using it.\n- Do NOT choose external (e.g., MGM, random APIs) sources when a matching MCP tool exists.\n\nIf multiple tools could work:\n- Choose the single BEST-FIT tool first.\n- If the task clearly requires multiple tools (e.g., get weather then log it), you may call them sequentially.\n\n==================================================\n3. ACTION TOOLS VS. DRAFTS (IKAS MCP, PRODUCT CREATION)\n==================================================\n\nSome MCP tools can PERFORM REAL ACTIONS (e.g., create a product in an e-commerce system via ikas MCP).\n\nCritical rule:\n- If the user's intent is to PERFORM an action, you MUST call the appropriate tool.\n- Do NOT just \"simulate\" the action or write a draft object.\n- Do NOT stop at: \"Burada şöyle bir ürün oluşturabilirim...\" and then not call the tool.\n- The goal is that the side effect actually happens through the tool.\n\nExamples (Turkish / ikas):\n\n1) User: \n \"İkas'ta yeni bir ürün oluştur: \n isim: Siyah T-Shirt, \n fiyat: 299 TL, \n stok: 50, \n kategori: Tişörtler.\"\n\n → You MUST:\n - Map these fields to the ikas product-creation tool schema.\n - CALL the ikas MCP tool to actually create the product.\n - Then answer with something like:\n \"Ürün başarıyla oluşturuldu. ID: <tool_output_id>, ad: Siyah T-Shirt, fiyat: 299 TL, stok: 50.\"\n\n → You MUST NOT:\n - Only respond with a JSON draft or description like:\n \"Şöyle bir taslak ürün oluşturabilirsin: {...}\" \n without calling the tool.\n\n2) If the tool requires fields that the user didn't provide (e.g. currency code, SKU):\n - Ask ONLY the minimal clarifying question needed.\n - Or, if the field is safely inferrable by convention (e.g. default currency for a given store), use the default.\n\n3) If the tool response indicates \"draft\" vs. \"published\" status:\n - Respect the user's explicit intention.\n - If the user says \"taslak olarak kaydet\", then request draft=true.\n - If the user says \"direkt yayına al\" or clearly wants the product live, then request published/active status.\n - Do NOT downgrade a clear \"publish\" intent into just a draft.\n\n==================================================\n4. INTERPRETING USER INTENT\n==================================================\n\n- Treat verbs like \"oluştur\", \"yarat\", \"ekle\", \"sil\", \"güncelle\", \"publish et\", \"yayına al\"\n as strong indicators that an ACTION tool call is expected, not just text output.\n\n- Treat questions like \"nasıl yapılır?\", \"bana göster\", \"örnek ver\", \"JSON taslağı oluştur\"\n as more educational; then you may provide drafts/examples without executing tools,\n UNLESS the user explicitly says they want the real action too.\n\nExamples:\n\n- \"İkas'ta ürün oluşturmayı bana JSON örneğiyle anlatır mısın?\"\n → Explain the schema, show a draft, you may skip real tool call unless they also say \"ve bunu benim için şimdi oluştur.\"\n\n- \"Benim adıma bu ürünü gerçekten oluştur ve yayına al.\"\n → This MUST trigger the actual ikas MCP product-creation tool call.\n\n==================================================\n5. IRRELEVANT TOPICS & SCOPE\n==================================================\n\n- Aizek's primary job in this environment is:\n - Using MCP tools effectively (weather, e-commerce, etc.).\n - Providing concise, helpful answers strictly related to the user's requests.\n\n- Avoid:\n - Long off-topic chats.\n - Unnecessary explanations of MCP internals or tool schemas unless the user specifically asks.\n - Using random non-MCP APIs or external services when an MCP tool already exists in that domain.\n\n==================================================\n6. TOOL-CALLING STYLE\n==================================================\n\nWhen you decide to call a tool:\n- Use the exact tool name and parameter schema given by the environment.\n- Provide all required parameters; do NOT omit fields the schema marks as required.\n- Prefer a single well-structured call over multiple fragmented ones whenever possible.\n\nOnce you receive tool results:\n- Summarize them clearly for the user in natural language.\n- If the user requested an action (e.g., create product, update something), confirm:\n - What was done,\n - Any IDs or references returned,\n - Any next steps they might need.\n\n==================================================\n7. FALLBACK LOGIC\n==================================================\n\nIn this order of priority:\n\n1) If an MCP tool matches the user's request → USE IT.\n2) If no tool fits, and the user just needs information → answer from your own knowledge or other allowed tools.\n3) If the user asks something completely outside your domain/scope → \n - Briefly explain that it is outside Aizek's scope or that you have limited info,\n - Offer to help only if you can still add value without contradicting previous rules.\n\nAlways keep in mind:\nYour core value in this environment is to be an intelligent router and operator for MCP tools, not a generic, unconstrained chatbot.`;\n\n const SYSTEM_PROMPT = `\nYou are a helpful assistant that can generate both natural language responses and UI components.\n\nYou MUST:\n- Always respond with normal conversational text.\n- Optionally include one or more UI components inside code blocks with language \"ui-component\".\n\nWhen to use components:\n- User needs to provide multiple structured values → generate a FORM\n- User must choose among options → generate BUTTONS\n- User must see structured data comparison → generate a TABLE\n- User must see entity details/summary → generate a CARD\n\nFormat for each component (strictly):\n\n\\`\\`\\`ui-component\n{\n \"type\": \"form\" | \"buttons\" | \"table\" | \"card\",\n \"data\": { ...component-specific fields... }\n}\n\\`\\`\\`\n\nIMPORTANT:\n- Do NOT invent HTML. Only JSON as described.\n- Keep JSON strictly valid.\n- Text response should be outside of code blocks.\n`;\n const sendMessage = async (message: string, approval?: boolean) => {\n if (!message.trim() || isLoading) return;\n\n if (approval) {\n addMessage({ text: message }, \"approval\");\n } else {\n addMessage({ text: message }, \"user\");\n }\n\n setIsLoading(true);\n\n try {\n let resp: OpenAI.Responses.Response & { _request_id?: string | null };\n\n resp = await client.responses.create({\n model: \"gpt-5\",\n tools: [\n {\n type: \"mcp\",\n server_label: \"aizek-mcp\",\n server_url: mcpUrl,\n require_approval: \"never\",\n headers: options.headers || {},\n },\n ],\n input: [\n { role: \"system\", content: SYSTEM_PROMPT },\n { role: \"user\", content: message },\n ],\n previous_response_id: responseId || undefined,\n instructions: instructions,\n });\n console.log(\"Response:\", resp);\n\n setResponseId(resp.id);\n let rawText = \"\";\n\n const output: any[] | undefined = (resp as any).output;\n if (Array.isArray(output) && output.length > 0) {\n const assistantMsg =\n output.find((o) => o.role === \"assistant\") ?? output[0];\n\n if (assistantMsg && Array.isArray(assistantMsg.content)) {\n // content içinde type === \"output_text\" olanı bul\n const textItem = assistantMsg.content.find(\n (c: any) => c.type === \"output_text\"\n );\n\n if (textItem?.text?.value) {\n rawText = textItem.text.value as string;\n } else if (textItem?.text?.annotations?.[0]?.text) {\n // olası alternatif yapı\n rawText = textItem.text.annotations[0].text as string;\n }\n }\n }\n\n // Bazı SDK sürümlerinde convenience field olabilir\n if (!rawText && (resp as any).output_text) {\n rawText = (resp as any).output_text;\n }\n\n if (!rawText) {\n rawText = `\"${message}\" mesajınızı aldım. Size nasıl yardımcı olabilirim?`;\n }\n\n const { text, components } = extractUiComponents(rawText);\n addMessage({ text, ui: components }, \"assistant\");\n\n setIsLoading(false);\n } catch (error) {\n console.error(\"Error sending message:\", error);\n addMessage(\n { text: \"Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.\" },\n \"assistant\"\n );\n setIsLoading(false);\n }\n };\n\n return {\n messages,\n isLoading,\n sendMessage,\n addMessage,\n };\n};\n","import { ChatWidgetApiResponse, ChatWidgetSettings } from '../types/chatbot';\n\nconst API_BASE_URL = 'https://api-alpha.aizek.ai';\n\nexport const fetchChatWidgetSettings = async (clientId: string): Promise<ChatWidgetApiResponse> => {\n try {\n const response = await fetch(`${API_BASE_URL}/ChatWidgetSettings/GetByClientId?client_id=${clientId}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: ChatWidgetApiResponse = await response.json();\n return data;\n } catch (error) {\n console.error('Error fetching chat widget settings:', error);\n throw error;\n }\n};\n\nexport const mapApiSettingsToConfig = (apiSettings: ChatWidgetSettings | null) => {\n if (!apiSettings) {\n return null;\n }\n\n // Map API button_size to our internal format\n const buttonSizeMap = {\n 'small': 'sm' as const,\n 'medium': 'md' as const,\n 'large': 'lg' as const,\n };\n\n return {\n welcomeMessage: apiSettings.welcome_message,\n buttonBackground: apiSettings.button_background,\n placeholder: apiSettings.placeholder,\n buttonPosition: apiSettings.button_position,\n buttonSize: buttonSizeMap[apiSettings.button_size] || 'md',\n chatWidth: apiSettings.chat_width,\n chatHeight: apiSettings.chat_height,\n showTypingIndicator: apiSettings.show_typing_indicator,\n initialOpen: apiSettings.initial_open,\n headerBackground: apiSettings.header_background,\n companyLogo: apiSettings.company_logo || undefined,\n companyName: apiSettings.company_name,\n };\n};\n","import { Message } from \"../types/chatbot\";\n\nexport const getMessageBubbleStyles = (\n isUser: boolean,\n isTyping: boolean\n): React.CSSProperties => ({\n maxWidth: \"80%\",\n padding: \"12px 16px\",\n borderRadius: isUser ? \"18px 18px 4px 18px\" : \"18px 18px 18px 4px\",\n marginBottom: \"8px\",\n wordWrap: \"break-word\",\n lineHeight: 1.4,\n fontSize: \"14px\",\n position: \"relative\",\n ...(isUser\n ? {\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n color: \"#ffffff\",\n marginLeft: \"auto\",\n marginRight: \"0\",\n }\n : {\n background: \"#f8fafc\",\n color: \"#334155\",\n border: \"1px solid #e2e8f0\",\n marginLeft: \"0\",\n marginRight: \"auto\",\n }),\n});\n\nexport const getTimeStyles = (isUser: boolean): React.CSSProperties => ({\n fontSize: \"11px\",\n opacity: 0.7,\n marginTop: \"4px\",\n textAlign: isUser ? \"right\" : \"left\",\n});\n\nexport const getMarkdownStyles = (): React.CSSProperties => ({\n lineHeight: 1.6,\n marginBottom: \"6px\"\n});\n\nexport const getMarkdownElementStyles = (isUser: boolean): string => `\n .markdown-content p {\n margin: 0 0 12px 0;\n line-height: 1.6;\n }\n .markdown-content p:last-child {\n margin-bottom: 0;\n }\n .markdown-content ul {\n margin: 12px 0 16px 0;\n padding-left: 0;\n list-style: none;\n }\n .markdown-content li {\n margin-bottom: 12px;\n line-height: 1.6;\n padding: 12px 16px;\n background: ${isUser ? \"rgba(255,255,255,0.1)\" : \"#ffffff\"};\n border-radius: 12px;\n border: 1px solid ${isUser ? \"rgba(255,255,255,0.2)\" : \"#e2e8f0\"};\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n position: relative;\n transition: all 0.2s ease;\n }\n .markdown-content li:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n }\n .markdown-content li::before {\n content: \"•\";\n color: ${isUser ? \"#ffffff\" : \"#667eea\"};\n font-weight: bold;\n font-size: 18px;\n position: absolute;\n left: -8px;\n top: 12px;\n }\n .markdown-content li strong {\n display: block;\n font-size: 15px;\n margin-bottom: 4px;\n color: ${isUser ? \"#ffffff\" : \"#1e293b\"};\n }\n .markdown-content li em {\n display: block;\n font-size: 13px;\n opacity: 0.8;\n margin-top: 4px;\n }\n .markdown-content strong {\n font-weight: 600;\n color: ${isUser ? \"#ffffff\" : \"#1e293b\"};\n }\n .markdown-content em {\n font-style: italic;\n opacity: 0.9;\n }\n .markdown-content code {\n background: ${isUser ? \"rgba(255,255,255,0.2)\" : \"#f1f5f9\"};\n padding: 2px 6px;\n border-radius: 4px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n }\n .markdown-content pre {\n background: ${isUser ? \"rgba(255,255,255,0.1)\" : \"#f8fafc\"};\n padding: 12px;\n border-radius: 8px;\n overflow-x: auto;\n margin: 8px 0;\n border: 1px solid ${isUser ? \"rgba(255,255,255,0.2)\" : \"#e2e8f0\"};\n }\n .markdown-content pre code {\n background: none;\n padding: 0;\n }\n .markdown-content blockquote {\n border-left: 3px solid ${isUser ? \"rgba(255,255,255,0.5)\" : \"#cbd5e1\"};\n padding-left: 12px;\n margin: 8px 0;\n opacity: 0.8;\n }\n .markdown-content h1, .markdown-content h2, .markdown-content h3 {\n margin: 16px 0 8px 0;\n font-weight: 600;\n }\n .markdown-content h1 {\n font-size: 18px;\n }\n .markdown-content h2 {\n font-size: 16px;\n }\n .markdown-content h3 {\n font-size: 15px;\n }\n .markdown-content table {\n border-collapse: collapse;\n width: 100%;\n margin: 8px 0;\n }\n .markdown-content th, .markdown-content td {\n border: 1px solid ${isUser ? \"rgba(255,255,255,0.3)\" : \"#e2e8f0\"};\n padding: 8px 12px;\n text-align: left;\n }\n .markdown-content th {\n background: ${isUser ? \"rgba(255,255,255,0.1)\" : \"#f8fafc\"};\n font-weight: 600;\n }\n \n /* Enhanced list styling */\n .markdown-content li {\n position: relative;\n overflow: hidden;\n }\n \n .markdown-content li::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: linear-gradient(135deg, ${isUser ? \"#ffffff\" : \"#667eea\"\n }, ${isUser ? \"rgba(255,255,255,0.5)\" : \"#764ba2\"});\n border-radius: 0 2px 2px 0;\n }\n \n /* Product name styling */\n .markdown-content li strong:first-child {\n color: ${isUser ? \"#ffffff\" : \"#1e293b\"};\n font-size: 16px;\n font-weight: 700;\n display: block;\n margin-bottom: 8px;\n }\n \n /* Product details styling */\n .markdown-content li strong:not(:first-child) {\n color: ${isUser ? \"#ffffff\" : \"#059669\"};\n font-size: 13px;\n font-weight: 600;\n margin-right: 8px;\n }\n \n /* Add some spacing between product details */\n .markdown-content li br + * {\n margin-top: 4px;\n }\n \n /* Hover effect enhancement */\n .markdown-content li:hover::after {\n width: 6px;\n background: linear-gradient(135deg, ${isUser ? \"#ffffff\" : \"#667eea\"\n }, ${isUser ? \"#ffffff\" : \"#764ba2\"});\n }\n`;\n\nexport const getMessageContainerStyles = (\n isUser: boolean\n): React.CSSProperties => ({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: isUser ? \"flex-end\" : \"flex-start\",\n width: \"100%\",\n});\n","export const getInputContainerStyles = (): React.CSSProperties => ({\n display: 'flex',\n alignItems: 'flex-end',\n gap: '12px',\n padding: '16px',\n background: '#ffffff',\n borderTop: '1px solid #e2e8f0',\n borderRadius: '0 0 12px 12px',\n});\n\nexport const getTextareaStyles = (isLoading: boolean): React.CSSProperties => ({\n flex: 1,\n minHeight: '44px',\n maxHeight: '120px',\n padding: '12px 16px',\n border: '1px solid #e2e8f0',\n borderRadius: '22px',\n fontSize: '14px',\n lineHeight: 1.4,\n resize: 'none',\n outline: 'none',\n transition: 'border-color 0.2s ease, box-shadow 0.2s ease',\n fontFamily: 'inherit',\n background: '#f8fafc',\n color: '#334155',\n ...(isLoading ? {\n opacity: 0.6,\n cursor: 'not-allowed'\n } : {})\n});\n\nexport const getSendButtonStyles = (isLoading: boolean, hasMessage: boolean): React.CSSProperties => ({\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n border: 'none',\n background: isLoading || !hasMessage ? '#e2e8f0' : 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n color: '#ffffff',\n cursor: isLoading || !hasMessage ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 0.2s ease',\n fontSize: '16px',\n});\n","export const getHeaderStyles = (headerBackground: string): React.CSSProperties => ({\n padding: '16px 20px',\n background: headerBackground,\n color: '#ffffff',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n});\n\nexport const getLogoContainerStyles = (): React.CSSProperties => ({\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n background: 'rgba(255, 255, 255, 0.2)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '18px',\n overflow: 'hidden',\n});\n\nexport const getLogoImageStyles = (): React.CSSProperties => ({\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n borderRadius: '50%',\n});\n\nexport const getLogoTextStyles = (): React.CSSProperties => ({\n fontSize: '16px',\n fontWeight: 'bold',\n});\n\nexport const getCompanyNameStyles = (): React.CSSProperties => ({\n margin: 0,\n fontSize: '16px',\n fontWeight: 600,\n});\n\nexport const getStatusTextStyles = (): React.CSSProperties => ({\n margin: 0,\n fontSize: '12px',\n opacity: 0.8,\n});\n","export const getButtonSizes = () => ({\n sm: { width: '50px', height: '50px', fontSize: '20px' },\n md: { width: '60px', height: '60px', fontSize: '24px' },\n lg: { width: '70px', height: '70px', fontSize: '28px' }\n});\n\nexport const getFloatingButtonStyles = (\n buttonPosition: 'bottom-left' | 'bottom-right',\n buttonSize: 'sm' | 'md' | 'lg',\n buttonBackground: string,\n isOpen: boolean\n): React.CSSProperties => {\n const buttonSizes = getButtonSizes();\n const buttonSizeStyle = buttonSizes[buttonSize];\n\n return {\n position: 'fixed',\n [buttonPosition === 'bottom-left' ? 'left' : 'right']: '20px',\n bottom: '20px',\n width: buttonSizeStyle.width,\n height: buttonSizeStyle.height,\n borderRadius: '50%',\n background: buttonBackground,\n border: 'none',\n color: '#ffffff',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: buttonSizeStyle.fontSize,\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n transition: 'all 0.3s ease',\n zIndex: 1000,\n transform: isOpen ? 'scale(0.9)' : 'scale(1)',\n };\n};\n\nexport const getChatContainerStyles = (\n buttonPosition: 'bottom-left' | 'bottom-right',\n chatWidth: string,\n chatHeight: string,\n isOpen: boolean\n): React.CSSProperties => ({\n position: 'fixed',\n [buttonPosition === 'bottom-left' ? 'left' : 'right']: '20px',\n bottom: '90px',\n width: chatWidth,\n height: chatHeight,\n zIndex: 9999999,\n transform: isOpen ? 'translateY(0) scale(1)' : 'translateY(20px) scale(0.95)',\n opacity: isOpen ? 1 : 0,\n visibility: isOpen ? 'visible' : 'hidden',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n transformOrigin: buttonPosition === 'bottom-left' ? 'bottom left' : 'bottom right',\n});\n\nexport const getOverlayStyles = (isOpen: boolean): React.CSSProperties => ({\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: 'rgba(0, 0, 0, 0.1)',\n zIndex: 998,\n opacity: isOpen ? 1 : 0,\n visibility: isOpen ? 'visible' : 'hidden',\n transition: 'all 0.3s ease',\n});\n\nexport const getChatbotContainerStyles = (): React.CSSProperties => ({\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n background: '#ffffff',\n borderRadius: '12px',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n border: '1px solid #e2e8f0',\n overflow: 'hidden',\n});\n\nexport const getMessagesContainerStyles = (): React.CSSProperties => ({\n flex: 1,\n overflowY: 'auto',\n padding: '16px',\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n background: '#f8fafc',\n});\n\nexport const getEmptyStateStyles = (): React.CSSProperties => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n color: '#64748b',\n textAlign: 'center',\n padding: '40px 20px',\n});\n","export const getLoadingSpinnerStyles = (): React.CSSProperties => ({\n width: '16px',\n height: '16px',\n border: '2px solid transparent',\n borderTop: '2px solid currentColor',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n});\n","export const getAlertContainerStyles = (type: 'error' | 'warning' | 'success'): React.CSSProperties => {\n const colors = {\n error: {\n background: 'linear-gradient(135deg, #ef4444 0%, #dc2626 100%)',\n border: '#dc2626',\n shadow: 'rgba(239, 68, 68, 0.2)',\n },\n warning: {\n background: 'linear-gradient(135deg, #f59e0b 0%, #d97706 100%)',\n border: '#d97706',\n shadow: 'rgba(245, 158, 11, 0.2)',\n },\n success: {\n background: 'linear-gradient(135deg, #10b981 0%, #059669 100%)',\n border: '#059669',\n shadow: 'rgba(16, 185, 129, 0.2)',\n },\n };\n\n const selectedColor = colors[type];\n\n return {\n background: selectedColor.background,\n border: `1px solid ${selectedColor.border}`,\n borderRadius: '12px',\n padding: '14px 16px',\n margin: '12px 16px',\n boxShadow: `0 4px 12px ${selectedColor.shadow}`,\n color: '#ffffff',\n fontSize: '13px',\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n position: 'relative',\n animation: 'slideDown 0.3s ease-out',\n };\n};\n\nexport const getAlertIconContainerStyles = (): React.CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '24px',\n height: '24px',\n flexShrink: 0,\n marginTop: '2px',\n});\n\nexport const getAlertContentStyles = (): React.CSSProperties => ({\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n});\n\nexport const getAlertTitleStyles = (): React.CSSProperties => ({\n fontWeight: 600,\n fontSize: '14px',\n margin: 0,\n lineHeight: 1.4,\n});\n\nexport const getAlertMessageStyles = (): React.CSSProperties => ({\n margin: 0,\n lineHeight: 1.5,\n opacity: 0.95,\n});\n\nexport const getAlertListStyles = (): React.CSSProperties => ({\n margin: '8px 0 0 0',\n paddingLeft: '20px',\n listStyle: 'none',\n});\n\nexport const getAlertListItemStyles = (): React.CSSProperties => ({\n marginBottom: '4px',\n position: 'relative',\n paddingLeft: '12px',\n lineHeight: 1.4,\n});\n\nexport const getAlertCloseButtonStyles = (): React.CSSProperties => ({\n position: 'absolute',\n top: '12px',\n right: '12px',\n background: 'rgba(255, 255, 255, 0.2)',\n border: 'none',\n borderRadius: '6px',\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n color: '#ffffff',\n transition: 'all 0.2s ease',\n padding: 0,\n});\n\nexport const getAlertAnimationStyles = (): string => `\n @keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n`;\n\n","\"use client\";\n\nexport interface UITextField {\n type: \"text\";\n value: string;\n}\n\nexport interface UIImageField {\n type: \"image\";\n src: string;\n alt?: string;\n}\n\nexport interface UILinkField {\n type: \"link\";\n label: string;\n href: string;\n}\n\nexport interface UIBadgeField {\n type: \"badge\";\n label: string;\n tone?: \"success\" | \"warning\" | \"danger\" | \"info\" | \"neutral\";\n}\n\nexport interface UIListField {\n type: \"list\";\n items: UIField[]; // iç içe text vs.\n}\n\nexport type UIField =\n | UITextField\n | UIImageField\n | UILinkField\n | UIBadgeField\n | UIListField;\n\n// types/ui.ts\nexport type UIComponentType = \"form\" | \"buttons\" | \"table\" | \"card\";\n\nexport interface UIFormField {\n id: string;\n name: string;\n label: string;\n placeholder?: string;\n type: \"text\" | \"select\" | \"number\";\n required?: boolean;\n validation?: string;\n options?: { label: string; value: string }[];\n value?: string | number;\n min?: number;\n max?: number;\n}\n\nexport interface UIFormData {\n id: string;\n title?: string;\n fields: UIFormField[];\n submitLabel?: string;\n}\n\nexport interface UIButtonData {\n label: string;\n value: string;\n variant?: \"primary\" | \"secondary\" | \"danger\";\n}\nexport interface UITableColumn {\n id?: string;\n key?: string;\n label: string;\n type?: \"image\" | \"text\" | \"badge\";\n}\n\nexport interface UITableData {\n caption?: string;\n columns: UITableColumn[] | string[];\n rows: Array<Record<string, UIField | string>> | string[][];\n}\n\nexport interface UICardItem {\n id?: string;\n title?: string;\n subtitle?: string;\n image?: string;\n label?: string;\n value?: string;\n}\n\nexport interface UICardField {\n label: string;\n value: string;\n}\n\nexport interface UICardData {\n title?: string;\n description?: string;\n image?: string;\n status?: string;\n subtitle?: string;\n fields?: UICardField[];\n attributes?: UICardField[];\n items?: UICardItem[];\n [key: string]: any;\n}\n\nexport interface UIComponentBase {\n id?: string;\n type: UIComponentType;\n}\n\nexport type UIComponent =\n | (UIComponentBase & { type: \"form\"; data: UIFormData })\n | (UIComponentBase & { type: \"buttons\"; data: UIButtonData[] })\n | (UIComponentBase & { type: \"table\"; data: UITableData })\n | (UIComponentBase & { type: \"card\"; data: UICardData });\n\ninterface Props {\n components: UIComponent[];\n onInteraction?: (event: any) => void;\n}\n\nexport function UIRenderer({ components, onInteraction }: Props) {\n console.log(components);\n\n if (!Array.isArray(components) || components.length === 0) {\n return null;\n }\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\",\n width: \"100%\",\n }}\n >\n {components.map((comp, idx) => {\n if (!comp || typeof comp !== \"object\" || !comp.type) {\n return null;\n }\n\n const key =\n typeof comp.id === \"string\" && comp.id.trim()\n ? comp.id\n : `${comp.type}-${idx}`;\n\n switch (comp.type) {\n case \"form\":\n return (\n <FormComponent\n key={key}\n data={comp.data as UIFormData}\n onSubmit={(values) =>\n onInteraction?.({\n type: \"formSubmit\",\n componentId: comp.data.id,\n values,\n })\n }\n />\n );\n case \"buttons\":\n if (!comp.data || !Array.isArray(comp.data)) {\n return null;\n }\n return (\n <ButtonsComponent\n key={key}\n data={comp.data as UIButtonData[]}\n onClick={(value) =>\n onInteraction?.({ type: \"buttonClick\", value })\n }\n />\n );\n case \"table\":\n return <TableComponent key={key} data={comp.data as UITableData} />;\n case \"card\":\n return <CardComponent key={key} data={comp.data as UICardData} />;\n default:\n return null;\n }\n })}\n </div>\n );\n}\n\nfunction FormComponent({\n data,\n onSubmit,\n}: {\n data: UIFormData;\n onSubmit: (values: Record<string, string>) => void;\n}) {\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n console.log(e.currentTarget);\n\n const formData = new FormData(e.currentTarget);\n console.log(formData);\n\n const values: Record<string, string> = {};\n data.fields.forEach((f) => {\n values[f.id || f.name] = String(formData.get(f.id || f.name) ?? \"\");\n });\n onSubmit(values);\n };\n console.log(\"formdata\", data);\n\n return (\n <form\n onSubmit={handleSubmit}\n style={{\n width: \"100%\",\n maxWidth: \"500px\",\n border: \"1px solid #e0e0e0\",\n borderRadius: \"12px\",\n padding: \"24px\",\n backgroundColor: \"#ffffff\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.08)\",\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n }}\n >\n {data.title && (\n <h3\n style={{\n fontWeight: 600,\n fontSize: \"16px\",\n marginBottom: \"20px\",\n color: \"#1a1a1a\",\n marginTop: 0,\n }}\n >\n {data.title}\n </h3>\n )}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"20px\",\n }}\n >\n {data.fields.map((field, fieldIdx) => {\n const fieldKey =\n typeof field.id === \"string\" && field.id.trim()\n ? field.id\n : `field-${fieldIdx}`;\n\n return (\n <div\n key={fieldKey}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n }}\n >\n <label\n style={{\n fontWeight: 500,\n fontSize: \"13px\",\n color: \"#374151\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"4px\",\n }}\n >\n {field.label}\n {field.required && (\n <span style={{ color: \"#ef4444\", fontSize: \"14px\" }}>*</span>\n )}\n </label>\n {field.type === \"select\" ? (\n <select\n name={field.id || field.name}\n required={field.required}\n defaultValue={field.value ? String(field.value) : \"\"}\n style={{\n border: \"1px solid #d1d5db\",\n borderRadius: \"8px\",\n padding: \"10px 12px\",\n fontSize: \"13px\",\n color: \"#1a1a1a\",\n backgroundColor: \"#ffffff\",\n fontFamily: \"inherit\",\n outline: \"none\",\n transition:\n \"border-color 0.15s ease, box-shadow 0.15s ease\",\n cursor: \"pointer\",\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = \"#3b82f6\";\n e.currentTarget.style.boxShadow =\n \"0 0 0 3px rgba(59, 130, 246, 0.1)\";\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = \"#d1d5db\";\n e.currentTarget.style.boxShadow = \"none\";\n }}\n >\n <option value=\"\">Seçiniz</option>\n {field.options?.map((opt, optIdx) => {\n const optKey =\n typeof opt.value === \"string\"\n ? opt.value\n : `opt-${fieldIdx}-${optIdx}`;\n\n return (\n <option key={optKey} value={opt.value}>\n {opt.label}\n </option>\n );\n })}\n </select>\n ) : (\n <input\n type={field.type === \"number\" ? \"number\" : \"text\"}\n name={field.id || field.name}\n required={field.required}\n defaultValue={field.value ? String(field.value) : \"\"}\n placeholder={field.placeholder || \"\"}\n min={field.min}\n max={field.max}\n style={{\n border: \"1px solid #d1d5db\",\n borderRadius: \"8px\",\n padding: \"10px 12px\",\n fontSize: \"13px\",\n color: \"#1a1a1a\",\n backgroundColor: \"#ffffff\",\n fontFamily: \"inherit\",\n outline: \"none\",\n transition:\n \"border-color 0.15s ease, box-shadow 0.15s ease\",\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = \"#3b82f6\";\n e.currentTarget.style.boxShadow =\n \"0 0 0 3px rgba(59, 130, 246, 0.1)\";\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = \"#d1d5db\";\n e.currentTarget.style.boxShadow = \"none\";\n }}\n />\n )}\n </div>\n );\n })}\n </div>\n <button\n type=\"submit\"\n style={{\n marginTop: \"24px\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"8px\",\n padding: \"12px 24px\",\n fontSize: \"13px\",\n fontWeight: 500,\n backgroundColor: \"#3b82f6\",\n color: \"#ffffff\",\n border: \"none\",\n cursor: \"pointer\",\n transition: \"background-color 0.15s ease, transform 0.1s ease\",\n fontFamily: \"inherit\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"#2563eb\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"#3b82f6\";\n }}\n onMouseDown={(e) => {\n e.currentTarget.style.transform = \"scale(0.98)\";\n }}\n onMouseUp={(e) => {\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n {data.submitLabel ?? \"Gönder\"}\n </button>\n </form>\n );\n}\n\nfunction ButtonsComponent({\n data,\n onClick,\n}: {\n data: UIButtonData[];\n onClick: (value: string) => void;\n}) {\n if (!Array.isArray(data) || data.length === 0) {\n return null;\n }\n\n const getButtonStyles = (variant?: string) => {\n const baseStyles: React.CSSProperties = {\n borderRadius: \"8px\",\n padding: \"10px 20px\",\n fontSize: \"13px\",\n fontWeight: 500,\n border: \"1px solid #e0e0e0\",\n backgroundColor: \"#ffffff\",\n color: \"#374151\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n outline: \"none\",\n };\n\n if (variant === \"primary\") {\n return {\n ...baseStyles,\n backgroundColor: \"#3b82f6\",\n color: \"#ffffff\",\n borderColor: \"#3b82f6\",\n };\n } else if (variant === \"secondary\") {\n return {\n ...baseStyles,\n backgroundColor: \"#f3f4f6\",\n color: \"#374151\",\n borderColor: \"#d1d5db\",\n };\n } else if (variant === \"danger\") {\n return {\n ...baseStyles,\n backgroundColor: \"#ef4444\",\n color: \"#ffffff\",\n borderColor: \"#ef4444\",\n };\n }\n\n return baseStyles;\n };\n\n const getHoverStyles = (variant?: string) => {\n if (variant === \"primary\") {\n return { backgroundColor: \"#2563eb\", borderColor: \"#2563eb\" };\n } else if (variant === \"secondary\") {\n return { backgroundColor: \"#e5e7eb\", borderColor: \"#9ca3af\" };\n } else if (variant === \"danger\") {\n return { backgroundColor: \"#dc2626\", borderColor: \"#dc2626\" };\n }\n return { backgroundColor: \"#f9fafb\", borderColor: \"#d1d5db\" };\n };\n\n return (\n <div\n style={{\n display: \"flex\",\n gap: \"12px\",\n flexWrap: \"wrap\",\n }}\n >\n {data.map((btn, idx) => {\n if (!btn || typeof btn !== \"object\") {\n return null;\n }\n\n const btnValue =\n typeof btn.value === \"string\"\n ? btn.value\n : typeof btn.value === \"number\"\n ? String(btn.value)\n : btn.value && typeof btn.value === \"object\"\n ? JSON.stringify(btn.value)\n : `btn-value-${idx}`;\n\n const btnKey =\n typeof btn.value === \"string\" && btn.value.trim()\n ? btn.value\n : `btn-${idx}`;\n\n const btnLabel = btn.label || `Button ${idx + 1}`;\n const buttonStyles = getButtonStyles(btn.variant);\n const hoverStyles = getHoverStyles(btn.variant);\n\n return (\n <button\n key={btnKey}\n onClick={() => {\n try {\n onClick(btnValue);\n } catch (error) {\n console.error(\"Error in button onClick:\", error);\n }\n }}\n style={buttonStyles}\n onMouseEnter={(e) => {\n Object.assign(e.currentTarget.style, hoverStyles);\n }}\n onMouseLeave={(e) => {\n Object.assign(e.currentTarget.style, buttonStyles);\n }}\n onMouseDown={(e) => {\n e.currentTarget.style.transform = \"scale(0.97)\";\n }}\n onMouseUp={(e) => {\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n {btnLabel}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport function TableComponent({ data }: { data: UITableData }) {\n if (\n !data.columns ||\n !Array.isArray(data.columns) ||\n data.columns.length === 0\n ) {\n return null;\n }\n\n return (\n <div\n style={{\n border: \"1px solid #e0e0e0\",\n borderRadius: \"12px\",\n overflow: \"hidden\",\n fontSize: \"13px\",\n backgroundColor: \"#ffffff\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.08)\",\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n }}\n >\n {data.caption && (\n <div\n style={{\n padding: \"16px 20px\",\n fontWeight: 600,\n fontSize: \"14px\",\n borderBottom: \"1px solid #e0e0e0\",\n backgroundColor: \"#f8f9fa\",\n color: \"#1a1a1a\",\n }}\n >\n {data.caption}\n </div>\n )}\n <div style={{ overflowX: \"auto\" }}>\n <table\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n minWidth: \"100%\",\n }}\n >\n <thead style={{ backgroundColor: \"#f8f9fa\" }}>\n <tr>\n {data.columns.map((col, i) => {\n const colKey =\n typeof col === \"string\"\n ? `col-${i}`\n : col.key || col.id || `col-${i}`;\n const colLabel =\n typeof col === \"string\" ? col : col.label || \"\";\n\n return (\n <th\n key={colKey}\n style={{\n borderBottom: \"2px solid #e0e0e0\",\n padding: \"14px 20px\",\n textAlign: \"left\",\n fontWeight: 600,\n fontSize: \"12px\",\n color: \"#4a5568\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.5px\",\n whiteSpace: \"nowrap\",\n }}\n >\n {colLabel}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {data.rows && data.rows.length > 0 ? (\n data.rows.map((row, rowIdx) => (\n <tr\n key={`row-${rowIdx}`}\n style={{\n backgroundColor: rowIdx % 2 === 0 ? \"#ffffff\" : \"#fafbfc\",\n transition: \"background-color 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"#f0f4f8\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor =\n rowIdx % 2 === 0 ? \"#ffffff\" : \"#fafbfc\";\n }}\n >\n {data.columns.map((col, colIdx) => {\n const colKey =\n typeof col === \"string\"\n ? `col-${colIdx}`\n : col.key || col.id || `col-${colIdx}`;\n const colType =\n typeof col === \"object\" ? col.type : undefined;\n const cellKey = `cell-${rowIdx}-${colIdx}`;\n\n let cellContent: any = null;\n\n if (\n typeof row === \"object\" &&\n row !== null &&\n !Array.isArray(row)\n ) {\n // Object format: row is a plain object with string values or UIField\n const cellValue = row[colKey];\n\n if (cellValue !== undefined && cellValue !== null) {\n // Check if it's a UIField object\n if (\n typeof cellValue === \"object\" &&\n \"type\" in cellValue\n ) {\n cellContent = renderField(cellValue as UIField);\n } else {\n // Plain string value\n const stringValue = String(cellValue);\n\n // Check column type or auto-detect image\n const isImageUrl =\n typeof stringValue === \"string\" &&\n (stringValue.startsWith(\"http\") ||\n stringValue.startsWith(\"data:\") ||\n stringValue.startsWith(\"/\")) &&\n (stringValue.match(\n /\\.(jpg|jpeg|png|gif|webp|svg)$/i\n ) ||\n stringValue.includes(\"image\") ||\n stringValue.includes(\"avatar\"));\n\n if (colType === \"image\" || (!colType && isImageUrl)) {\n cellContent = (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <img\n src={stringValue}\n alt=\"\"\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"8px\",\n objectFit: \"cover\",\n border: \"1px solid #e0e0e0\",\n }}\n onError={(e) => {\n (\n e.target as HTMLImageElement\n ).style.display = \"none\";\n }}\n />\n </div>\n );\n } else {\n cellContent = (\n <span\n style={{\n color: \"#2d3748\",\n lineHeight: \"1.5\",\n }}\n >\n {stringValue}\n </span>\n );\n }\n }\n }\n } else if (Array.isArray(row)) {\n // Array format: row is a string array\n const cellValue = row[colIdx];\n if (cellValue !== undefined && cellValue !== null) {\n const stringValue = String(cellValue);\n\n // Check if it's an image URL\n const isImageUrl =\n typeof stringValue === \"string\" &&\n (stringValue.startsWith(\"http\") ||\n stringValue.startsWith(\"data:\") ||\n stringValue.startsWith(\"/\")) &&\n (stringValue.match(\n /\\.(jpg|jpeg|png|gif|webp|svg)$/i\n ) ||\n stringValue.includes(\"image\") ||\n stringValue.includes(\"avatar\"));\n\n if (colType === \"image\" || (!colType && isImageUrl)) {\n cellContent = (\n <div\n style={{ display: \"flex\", alignItems: \"center\" }}\n >\n <img\n src={stringValue}\n alt=\"\"\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"8px\",\n objectFit: \"cover\",\n border: \"1px solid #e0e0e0\",\n }}\n onError={(e) => {\n (e.target as HTMLImageElement).style.display =\n \"none\";\n }}\n />\n </div>\n );\n } else {\n cellContent = (\n <span\n style={{\n color: \"#2d3748\",\n lineHeight: \"1.5\",\n }}\n >\n {stringValue}\n </span>\n );\n }\n }\n }\n\n return (\n <td\n key={cellKey}\n style={{\n borderBottom: \"1px solid #e8e8e8\",\n padding: \"16px 20px\",\n fontSize: \"13px\",\n verticalAlign: \"middle\",\n }}\n >\n {cellContent || (\n <span\n style={{ color: \"#a0a0a0\", fontStyle: \"italic\" }}\n >\n —\n </span>\n )}\n </td>\n );\n })}\n </tr>\n ))\n ) : (\n <tr>\n <td\n colSpan={data.columns.length}\n style={{\n padding: \"40px\",\n textAlign: \"center\",\n color: \"#9ca3af\",\n fontSize: \"13px\",\n }}\n >\n Veri bulunamadı\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nfunction CardComponent({ data }: { data: UICardData }) {\n if (data.title) {\n const hasImage = data.image && typeof data.image === \"string\";\n const hasFields =\n data.fields && Array.isArray(data.fields) && data.fields.length > 0;\n const hasAttributes =\n data.attributes &&\n Array.isArray(data.attributes) &&\n data.attributes.length > 0;\n const hasStatus = data.status && typeof data.status === \"string\";\n const hasSubtitle = data.subtitle && typeof data.subtitle === \"string\";\n\n const displayFields = hasAttributes\n ? data.attributes\n : hasFields\n ? data.fields\n : [];\n\n return (\n <div\n style={{\n border: \"1px solid #e5e7eb\",\n borderRadius: \"16px\",\n padding: \"16px\",\n backgroundColor: \"#ffffff\",\n boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n overflow: \"hidden\",\n marginBottom: \"12px\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"12px\" }}>\n {hasImage && (\n <img\n src={data.image}\n alt={data.title || \"Card image\"}\n style={{\n width: \"64px\",\n height: \"64px\",\n borderRadius: \"8px\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n onError={(e) => {\n // Fallback if image fails to load\n (e.target as HTMLImageElement).style.display = \"none\";\n }}\n />\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <h4\n style={{\n fontWeight: 600,\n fontSize: \"14px\",\n marginBottom: \"8px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {data.title}\n </h4>\n\n {/* Status field */}\n {hasStatus && (\n <div\n style={{\n display: \"flex\",\n gap: \"8px\",\n fontSize: \"12px\",\n marginBottom: \"4px\",\n }}\n >\n <span style={{ color: \"#6b7280\", fontWeight: 500 }}>\n Durum:\n </span>\n <span style={{ color: \"#374151\" }}>{data.status}</span>\n </div>\n )}\n\n {/* Subtitle */}\n {hasSubtitle && (\n <p\n style={{\n color: \"#6b7280\",\n fontSize: \"12px\",\n marginBottom: \"4px\",\n margin: 0,\n }}\n >\n {data.subtitle}\n </p>\n )}\n\n {/* Attributes or Fields array */}\n {displayFields && displayFields.length > 0 && (\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"4px\" }}\n >\n {displayFields.map((field, i) => (\n <div\n key={i}\n style={{ display: \"flex\", gap: \"8px\", fontSize: \"12px\" }}\n >\n <span style={{ color: \"#6b7280\", fontWeight: 500 }}>\n {field.label}:\n </span>\n <span style={{ color: \"#374151\" }}>{field.value}</span>\n </div>\n ))}\n </div>\n )}\n\n {data.description && (\n <p\n style={{\n color: \"#6b7280\",\n fontSize: \"12px\",\n marginTop: \"8px\",\n margin: 0,\n }}\n >\n {data.description}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n }\n\n if (!data.items || !Array.isArray(data.items) || data.items.length === 0) {\n return null;\n }\n\n return (\n <div style={{ width: \"100%\" }}>\n {data.title && !data.items.some((item) => item.title) && (\n <h3\n style={{\n fontWeight: 600,\n marginBottom: \"12px\",\n fontSize: \"14px\",\n color: \"#1a1a1a\",\n marginTop: 0,\n }}\n >\n {data.title}\n </h3>\n )}\n {data.description && (\n <p\n style={{\n color: \"#6b7280\",\n marginBottom: \"12px\",\n fontSize: \"12px\",\n marginTop: 0,\n }}\n >\n {data.description}\n </p>\n )}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(250px, 1fr))\",\n gap: \"12px\",\n }}\n >\n {data.items.map((item, i) => {\n const itemKey = item.id || `card-item-${i}`;\n const hasImage = item.image && typeof item.image === \"string\";\n const hasTitle = item.title && typeof item.title === \"string\";\n const hasSubtitle =\n item.subtitle && typeof item.subtitle === \"string\";\n const isLegacyFormat = item.label && item.value;\n\n if (isLegacyFormat && !hasTitle) {\n return (\n <div\n key={itemKey}\n style={{\n border: \"1px solid #e0e0e0\",\n borderRadius: \"12px\",\n padding: \"16px\",\n backgroundColor: \"#ffffff\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.08)\",\n fontSize: \"12px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"8px\",\n }}\n >\n <dt style={{ color: \"#6b7280\", margin: 0 }}>{item.label}</dt>\n <dd\n style={{\n fontWeight: 500,\n color: \"#1a1a1a\",\n margin: 0,\n }}\n >\n {item.value}\n </dd>\n </div>\n </div>\n );\n }\n\n return (\n <div\n key={itemKey}\n style={{\n border: \"1px solid #e0e0e0\",\n borderRadius: \"12px\",\n padding: \"16px\",\n backgroundColor: \"#ffffff\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.08)\",\n overflow: \"hidden\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"12px\" }}>\n {hasImage && (\n <img\n src={item.image}\n alt={item.title || `Card ${i + 1}`}\n style={{\n width: \"64px\",\n height: \"64px\",\n borderRadius: \"8px\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = \"none\";\n }}\n />\n )}\n <div\n style={{\n flex: 1,\n minWidth: 0,\n }}\n >\n {hasTitle && (\n <h4\n style={{\n fontWeight: 600,\n fontSize: \"14px\",\n marginBottom: \"4px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n color: \"#1a1a1a\",\n marginTop: 0,\n }}\n >\n {item.title}\n </h4>\n )}\n {hasSubtitle && (\n <p\n style={{\n color: \"#6b7280\",\n fontSize: \"12px\",\n margin: 0,\n }}\n >\n {item.subtitle}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction renderField(field: UIField) {\n switch (field.type) {\n case \"text\":\n return <span>{field.value}</span>;\n case \"image\":\n return (\n <img\n src={field.src}\n alt={field.alt ?? \"\"}\n style={{\n width: 24,\n height: 24,\n borderRadius: \"999px\",\n objectFit: \"cover\",\n }}\n />\n );\n case \"link\":\n return (\n <a\n href={field.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{ textDecoration: \"underline\" }}\n >\n {field.label}\n </a>\n );\n case \"badge\":\n return (\n <span\n style={{\n display: \"inline-block\",\n padding: \"2px 6px\",\n borderRadius: 999,\n fontSize: 10,\n fontWeight: 500,\n backgroundColor:\n field.tone === \"success\"\n ? \"#e0fce5\"\n : field.tone === \"warning\"\n ? \"#fff7d6\"\n : field.tone === \"danger\"\n ? \"#ffe4e4\"\n : \"#f2f2f2\",\n color:\n field.tone === \"success\"\n ? \"#1a7f36\"\n : field.tone === \"warning\"\n ? \"#8a6a00\"\n : field.tone === \"danger\"\n ? \"#b42318\"\n : \"#333\",\n }}\n >\n {field.label}\n </span>\n );\n case \"list\":\n return (\n <ul style={{ margin: 0, paddingLeft: 16 }}>\n {field.items.map((item, i) => (\n <li key={i}>{renderField(item)}</li>\n ))}\n </ul>\n );\n default:\n return null;\n }\n}\n","\"use client\";\nimport { AizekChatBotProps, Message, BackendConfig } from \"../types/chatbot\";\nimport { useChatbot } from \"../hooks/useChatbot\";\nimport { useEffect, useRef, useState } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport {\n fetchChatWidgetSettings,\n mapApiSettingsToConfig,\n} from \"../services/chatWidgetApi\";\nimport {\n getMessageBubbleStyles,\n getTimeStyles,\n getMarkdownStyles,\n getMarkdownElementStyles,\n getMessageContainerStyles,\n getInputContainerStyles,\n getTextareaStyles,\n getSendButtonStyles,\n getHeaderStyles,\n getLogoContainerStyles,\n getLogoImageStyles,\n getLogoTextStyles,\n getCompanyNameStyles,\n getStatusTextStyles,\n getFloatingButtonStyles,\n getChatContainerStyles,\n getOverlayStyles,\n getChatbotContainerStyles,\n getMessagesContainerStyles,\n getEmptyStateStyles,\n getLoadingSpinnerStyles,\n getAlertContainerStyles,\n getAlertIconContainerStyles,\n getAlertContentStyles,\n getAlertTitleStyles,\n getAlertMessageStyles,\n getAlertListStyles,\n getAlertListItemStyles,\n getAlertCloseButtonStyles,\n getAlertAnimationStyles,\n} from \"../styles\";\nimport { validateHeaders } from \"../utils/cx\";\nimport { UIRenderer } from \"./uiRenderer\";\n\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({\n clientId,\n headers,\n}) => {\n const defaultConfig: BackendConfig = {\n welcomeMessage: \"Merhaba! Size nasıl yardımcı olabilirim?\",\n buttonBackground: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n placeholder: \"Mesajınızı yazın...\",\n buttonPosition: \"bottom-left\",\n buttonSize: \"md\",\n chatWidth: \"400px\",\n chatHeight: \"600px\",\n showTypingIndicator: true,\n initialOpen: true,\n headerBackground: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n companyLogo: undefined,\n companyName: \"AI Asistan\",\n };\n\n const [config, setConfig] = useState<BackendConfig>(defaultConfig);\n const [isConfigLoading, setIsConfigLoading] = useState(true);\n const [finalMcpUrl, setFinalMcpUrl] = useState<string>(\"\");\n const [apiKey, setApiKey] = useState<string>(\"\");\n const {\n welcomeMessage,\n buttonBackground,\n placeholder,\n buttonPosition,\n buttonSize,\n chatWidth,\n chatHeight,\n showTypingIndicator,\n initialOpen,\n headerBackground,\n companyLogo,\n companyName,\n } = config;\n\n const [isOpen, setIsOpen] = useState(false);\n const [headerValidation, setHeaderValidation] = useState<{\n isValid: boolean;\n missingKeys: string[];\n extraKeys: string[];\n emptyValueKeys: string[];\n } | null>(null);\n const [showAlert, setShowAlert] = useState(true);\n\n useEffect(() => {\n const loadConfig = async () => {\n try {\n setIsConfigLoading(true);\n const apiResponse = await fetchChatWidgetSettings(clientId);\n if (headers && apiResponse.data.auth_config) {\n const validationResult = validateHeaders(\n headers,\n apiResponse.data.auth_config,\n {\n allowExtra: false,\n caseSensitive: true,\n }\n );\n\n setHeaderValidation(validationResult);\n }\n\n setFinalMcpUrl(apiResponse.data.mcp_url);\n setApiKey(apiResponse.data.openai_key || \"\");\n\n const apiConfig = mapApiSettingsToConfig(\n apiResponse.data.chat_widget_settings\n );\n if (apiConfig) {\n setConfig(apiConfig);\n }\n } catch (error) {\n console.error(\"Failed to load chat widget config:\", error);\n setFinalMcpUrl(\"\");\n } finally {\n setIsConfigLoading(false);\n }\n };\n\n loadConfig();\n }, [clientId]);\n\n const internalChatbot = useChatbot({\n mcpUrl: finalMcpUrl,\n apiKey: apiKey,\n headers,\n config,\n });\n\n const messages = internalChatbot.messages;\n const isLoading = internalChatbot.isLoading;\n const handleSendMessage = internalChatbot.sendMessage;\n\n const toggleChat = () => {\n const newIsOpen = !isOpen;\n setIsOpen(newIsOpen);\n };\n\n useEffect(() => {\n setIsOpen(initialOpen);\n }, [initialOpen]);\n\n const messagesEndRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n const MessageBubble: React.FC<{\n message: Message;\n onAction: (msg: string, approval: boolean) => void;\n }> = ({ message, onAction }) => {\n const isUser = message.role === \"user\";\n\n return (\n <div style={getMessageContainerStyles(isUser)}>\n <style>{getMarkdownElementStyles(isUser)}</style>\n\n {isUser && (\n <>\n <div style={getMessageBubbleStyles(isUser, false)}>\n {message.text && (\n <div style={getMarkdownStyles()}>{message.text}</div>\n )}\n </div>\n <div style={getTimeStyles(isUser)}>\n {message.timestamp.toLocaleTimeString(\"tr-TR\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </div>\n </>\n )}\n\n {!isUser && message.role !== \"approval\" && (\n <>\n <div\n style={getMessageBubbleStyles(isUser, message.isTyping ?? false)}\n >\n {message.isTyping ? (\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n marginLeft: message.text ? \"8px\" : \"0\",\n }}\n >\n <TypingDots />\n </div>\n ) : (\n <>\n <div style={getMarkdownStyles()} className=\"markdown-content\">\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\n {message.text}\n </ReactMarkdown>\n </div>\n {message.ui && (\n <UIRenderer\n components={message.ui}\n onInteraction={(event) => {\n console.log(event);\n\n if (\n event.type === \"buttonClick\" &&\n typeof event.value === \"string\"\n ) {\n onAction(event.value, true);\n } else if (event.type === \"formSubmit\") {\n onAction(JSON.stringify(event.values), true);\n }\n }}\n />\n )}\n </>\n )}\n </div>\n\n <div style={getTimeStyles(isUser)}>\n {message.timestamp.toLocaleTimeString(\"tr-TR\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </div>\n </>\n )}\n </div>\n );\n };\n\n const TypingDots: React.FC = () => {\n const [dots, setDots] = useState(\"\");\n\n useEffect(() => {\n const interval = setInterval(() => {\n setDots((prev) => {\n if (prev === \"...\") return \"\";\n return prev + \".\";\n });\n }, 500);\n\n return () => clearInterval(interval);\n }, []);\n\n return <span>{dots}</span>;\n };\n\n const HeaderValidationAlert: React.FC = () => {\n if (!headerValidation || !showAlert) return null;\n\n const { isValid, missingKeys, extraKeys, emptyValueKeys } =\n headerValidation;\n\n if (\n isValid &&\n missingKeys.length === 0 &&\n extraKeys.length === 0 &&\n emptyValueKeys.length === 0\n ) {\n return null;\n }\n\n const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;\n const hasWarnings = extraKeys.length > 0;\n const alertType = hasErrors ? \"error\" : \"warning\";\n\n const getAlertIcon = () => {\n if (hasErrors) {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\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\" />\n </svg>\n );\n }\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\n </svg>\n );\n };\n\n return (\n <>\n <style>{getAlertAnimationStyles()}</style>\n <div style={getAlertContainerStyles(alertType)}>\n <div style={getAlertIconContainerStyles()}>{getAlertIcon()}</div>\n <div style={getAlertContentStyles()}>\n <h4 style={getAlertTitleStyles()}>\n {hasErrors ? \"Header Doğrulama Hatası\" : \"Header Uyarısı\"}\n </h4>\n <p style={getAlertMessageStyles()}>\n {hasErrors && hasWarnings\n ? \"Header yapılandırmanızda hatalar ve uyarılar bulundu.\"\n : hasErrors\n ? \"Header yapılandırmanızda hatalar bulundu.\"\n : \"Header yapılandırmanızda fazla anahtarlar bulundu.\"}\n </p>\n\n {missingKeys.length > 0 && (\n <div>\n <strong style={{ fontSize: \"13px\" }}>Eksik Header'lar:</strong>\n <ul style={getAlertListStyles()}>\n {missingKeys.map((key, index) => (\n <li key={index} style={getAlertListItemStyles()}>\n <span\n style={{\n position: \"absolute\",\n left: \"0\",\n top: \"2px\",\n fontWeight: \"bold\",\n }}\n >\n •\n </span>\n <code\n style={{\n background: \"rgba(255, 255, 255, 0.2)\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n }}\n >\n {key}\n </code>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {emptyValueKeys.length > 0 && (\n <div>\n <strong style={{ fontSize: \"13px\" }}>\n Boş Değerli Header'lar:\n </strong>\n <ul style={getAlertListStyles()}>\n {emptyValueKeys.map((key, index) => (\n <li key={index} style={getAlertListItemStyles()}>\n <span\n style={{\n position: \"absolute\",\n left: \"0\",\n top: \"2px\",\n fontWeight: \"bold\",\n }}\n >\n •\n </span>\n <code\n style={{\n background: \"rgba(255, 255, 255, 0.2)\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n }}\n >\n {key}\n </code>\n <span\n style={{\n marginLeft: \"6px\",\n fontSize: \"11px\",\n opacity: 0.9,\n }}\n >\n (değer boş olamaz)\n </span>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {extraKeys.length > 0 && (\n <div>\n <strong style={{ fontSize: \"13px\" }}>Fazla Header'lar:</strong>\n <ul style={getAlertListStyles()}>\n {extraKeys.map((key, index) => (\n <li key={index} style={getAlertListItemStyles()}>\n <span\n style={{\n position: \"absolute\",\n left: \"0\",\n top: \"2px\",\n fontWeight: \"bold\",\n }}\n >\n •\n </span>\n <code\n style={{\n background: \"rgba(255, 255, 255, 0.2)\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n }}\n >\n {key}\n </code>\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n <button\n onClick={() => setShowAlert(false)}\n style={getAlertCloseButtonStyles()}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.3)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.2)\";\n }}\n aria-label=\"Uyarıyı kapat\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\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\" />\n </svg>\n </button>\n </div>\n </>\n );\n };\n\n const ChatInput: React.FC = () => {\n const [message, setMessage] = useState(\"\");\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (message.trim() && !isLoading) {\n handleSendMessage(message.trim());\n setMessage(\"\");\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n }\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit(e);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.target.value);\n\n const textarea = e.target;\n textarea.style.height = \"auto\";\n textarea.style.height = Math.min(textarea.scrollHeight, 120) + \"px\";\n };\n\n return (\n <form onSubmit={handleSubmit} style={getInputContainerStyles()}>\n <textarea\n ref={textareaRef}\n value={message}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={isLoading}\n style={getTextareaStyles(isLoading)}\n />\n <button\n type=\"submit\"\n disabled={isLoading || !message.trim()}\n style={getSendButtonStyles(isLoading, !!message.trim())}\n onMouseEnter={(e) => {\n if (!isLoading && message.trim()) {\n e.currentTarget.style.transform = \"scale(1.05)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n {isLoading ? (\n <LoadingSpinner />\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\n </svg>\n )}\n </button>\n </form>\n );\n };\n\n const LoadingSpinner: React.FC = () => {\n return <div style={getLoadingSpinnerStyles()} />;\n };\n\n if (isConfigLoading) {\n return (\n <div\n style={getFloatingButtonStyles(\n buttonPosition,\n buttonSize,\n buttonBackground,\n false\n )}\n >\n <div style={getLoadingSpinnerStyles()} />\n </div>\n );\n }\n\n return (\n <>\n {isOpen && (\n <div\n style={getOverlayStyles(isOpen)}\n onClick={toggleChat}\n className=\"floating-chat-overlay\"\n />\n )}\n\n <div\n style={getChatContainerStyles(\n buttonPosition,\n chatWidth,\n chatHeight,\n isOpen\n )}\n className=\"floating-chat-container\"\n >\n <div style={getChatbotContainerStyles()}>\n <div style={getHeaderStyles(headerBackground)}>\n <div style={getLogoContainerStyles()}>\n {companyLogo ? (\n companyLogo.startsWith(\"http\") ||\n companyLogo.startsWith(\"data:\") ? (\n <img\n src={companyLogo}\n alt=\"Company Logo\"\n style={getLogoImageStyles()}\n />\n ) : (\n <span style={getLogoTextStyles()}>{companyLogo}</span>\n )\n ) : (\n \"🤖\"\n )}\n </div>\n <div>\n <h3 style={getCompanyNameStyles()}>{companyName}</h3>\n <p style={getStatusTextStyles()}>\n {isLoading ? \"Yazıyor...\" : \"Çevrimiçi\"}\n </p>\n </div>\n </div>\n\n <div style={getMessagesContainerStyles()}>\n <HeaderValidationAlert />\n\n {messages.length === 0 ? (\n <div style={getEmptyStateStyles()}>\n <div style={{ fontSize: \"48px\", marginBottom: \"16px\" }}>💬</div>\n <h4 style={{ margin: \"0 0 8px 0\", fontSize: \"18px\" }}>\n {welcomeMessage}\n </h4>\n <p style={{ margin: 0, fontSize: \"14px\", opacity: 0.8 }}>\n Aşağıdaki alana mesajınızı yazarak başlayabilirsiniz.\n </p>\n </div>\n ) : (\n messages.map((message) => (\n <MessageBubble\n key={message.id}\n message={message}\n onAction={handleSendMessage} // ⭐ burada bağladık\n />\n ))\n )}\n\n {showTypingIndicator && isLoading && messages.length > 0 && (\n <MessageBubble\n key={`typing-${messages.length}`}\n message={{\n id: `typing-${messages.length}`,\n text: \"\",\n role: \"assistant\",\n timestamp: new Date(),\n isTyping: true,\n }}\n onAction={handleSendMessage}\n />\n )}\n <div ref={messagesEndRef} />\n </div>\n\n <ChatInput />\n </div>\n </div>\n\n <button\n onClick={toggleChat}\n style={getFloatingButtonStyles(\n buttonPosition,\n buttonSize,\n buttonBackground,\n isOpen\n )}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = isOpen\n ? \"scale(0.85)\"\n : \"scale(1.1)\";\n e.currentTarget.style.boxShadow = \"0 6px 20px rgba(0, 0, 0, 0.25)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = isOpen ? \"scale(0.9)\" : \"scale(1)\";\n e.currentTarget.style.boxShadow = \"0 4px 12px rgba(0, 0, 0, 0.15)\";\n }}\n className=\"floating-chat-button\"\n aria-label={isOpen ? \"Chati kapat\" : \"Chati aç\"}\n >\n {isOpen ? (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\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\" />\n </svg>\n ) : (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\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\" />\n </svg>\n )}\n </button>\n </>\n );\n};\n"]}
|