aizek-chatbot 1.0.13 → 1.0.15
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 +628 -1106
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +358 -516
- package/dist/index.css.map +1 -1
- package/dist/index.mjs +779 -1142
- package/dist/index.mjs.map +1 -1
- package/package.json +52 -50
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/prompt.ts","../src/hooks/use-chatbot.ts","../src/services/chat-widget-api.ts","../src/utils/cx.ts","../src/components/button/index.tsx","../src/components/card/index.tsx","../src/components/form/index.tsx","../src/components/render-field/index.tsx","../src/components/table/index.tsx","../src/components/generative-ui/index.tsx","../src/components/aizek-chat/index.tsx"],"names":["jsx","jsxs","useState"],"mappings":"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","file":"index.mjs","sourcesContent":["export 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\nexport 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\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\nSTRICT REQUIREMENTS (CRITICAL):\n- All component JSON must STRICTLY MATCH the TypeScript types given below.\n- You MUST NOT create extra fields not defined in the types.\n- You MUST NOT rename keys. Example: using \"key\" instead of \"id\" in a form field is INVALID.\n- Only use the exact field names defined in the interfaces below.\n- All JSON must be strictly valid.\n\n-------------------------------------------\nTYPES YOU MUST FOLLOW EXACTLY:\n\nUIField =\n UITextField | UIImageField | UILinkField | UIBadgeField | UIListField\n\nUITextField:\n{\n \"type\": \"text\",\n \"value\": string\n}\n\nUIImageField:\n{\n \"type\": \"image\",\n \"src\": string,\n \"alt\"?: string\n}\n\nUILinkField:\n{\n \"type\": \"link\",\n \"label\": string,\n \"href\": string\n}\n\nUIBadgeField:\n{\n \"type\": \"badge\",\n \"label\": string,\n \"tone\"?: \"success\" | \"warning\" | \"danger\" | \"info\" | \"neutral\"\n}\n\nUIListField:\n{\n \"type\": \"list\",\n \"items\": UIField[]\n}\n\n-------------------------------------------------\n\nUIFormData:\n{\n \"id\": string,\n \"title\"?: string,\n \"fields\": UIFormField[],\n \"submitLabel\"?: string\n}\n\nUIFormField:\n{\n \"id\": string,\n \"name\": string,\n \"label\": string,\n \"placeholder\"?: string,\n \"type\": \"text\" | \"select\" | \"number\" | \"file\",\n \"accept\"?: string,\n \"required\"?: boolean,\n \"validation\"?: string,\n \"options\"?: { \"label\": string, \"value\": string }[],\n \"value\"?: string | number,\n \"min\"?: number,\n \"max\"?: number\n}\n\n-------------------------------------------------\n\nUIButtonData:\n{\n \"label\": string,\n \"value\": string,\n \"variant\"?: \"primary\" | \"secondary\" | \"danger\"\n}\n\n-------------------------------------------------\n\nUITableData:\n{\n \"caption\"?: string,\n \"columns\": UITableColumn[] | string[],\n \"rows\": Array<Record<string, UIField | string>> | string[][]\n}\n\nUITableColumn:\n{\n \"id\"?: string,\n \"key\"?: string,\n \"label\": string,\n \"type\"?: \"image\" | \"text\" | \"badge\"\n}\n\n-------------------------------------------------\n\nUICardData:\n{\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\nUICardField:\n{\n \"label\": string,\n \"value\": string\n}\n\nUICardItem:\n{\n \"id\"?: string,\n \"title\"?: string,\n \"subtitle\"?: string,\n \"image\"?: string,\n \"label\"?: string,\n \"value\"?: string\n}\n\n-------------------------------------------------\n\nUIComponent:\n{\n \"type\": \"form\" | \"buttons\" | \"table\" | \"card\",\n \"data\": (the relevant data according to type)\n}\n\n-------------------------------------------\n\nRULES FOR WHEN 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:\n\n\\`\\`\\`ui-component\n{\n \"type\": \"...\",\n \"data\": { ... }\n}\n\\`\\`\\`\n`;","import { useState } from \"react\";\nimport { Message, BackendConfig } from \"../types/chatbot\";\nimport OpenAI from \"openai\";\nimport { UIComponent } from \"../types/generative-ui\";\nimport { instructions, SYSTEM_PROMPT } from \"../utils/prompt\";\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({\n apiKey: apiKey,\n baseURL: \"https://api.anthropic.com/v1/\",\n dangerouslyAllowBrowser: true,\n });\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\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: \"claude-sonnet-4-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 { 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 { UIButtonData } from \"../../types/generative-ui\";\n\nexport function 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 return (\n <div className=\"buttons-component\">\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 variantClass = 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 className={`button-component ${variantClass}`}\n >\n {btnLabel}\n </button>\n );\n })}\n </div>\n );\n}","import { UICardData } from \"../../types/generative-ui\";\n\nexport function 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 className=\"card-component\">\n <div className=\"card-content\">\n {hasImage && (\n <img\n src={data.image}\n alt={data.title || \"Card image\"}\n className=\"card-image\"\n onError={(e) => {\n // Fallback if image fails to load\n (e.target as HTMLImageElement).style.display = \"none\";\n }}\n />\n )}\n <div className=\"card-info\">\n <h4 className=\"card-title\">\n {data.title}\n </h4>\n\n {/* Status field */}\n {hasStatus && (\n <div className=\"card-status\">\n <span className=\"card-status-label\">\n Durum:\n </span>\n <span className=\"card-status-value\">{data.status}</span>\n </div>\n )}\n\n {/* Subtitle */}\n {hasSubtitle && (\n <p className=\"card-subtitle\">\n {data.subtitle}\n </p>\n )}\n\n {/* Attributes or Fields array */}\n {displayFields && displayFields.length > 0 && (\n <div className=\"card-fields\">\n {displayFields.map((field, i) => (\n <div key={i} className=\"card-field\">\n <span className=\"card-field-label\">\n {field.label}:\n </span>\n <span className=\"card-field-value\">{field.value}</span>\n </div>\n ))}\n </div>\n )}\n\n {data.description && (\n <p className=\"card-description\">\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 className=\"card-list\">\n {data.title && !data.items.some((item) => item.title) && (\n <h3 className=\"card-list-title\">\n {data.title}\n </h3>\n )}\n {data.description && (\n <p className=\"card-list-description\">\n {data.description}\n </p>\n )}\n <div className=\"card-grid\">\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 key={itemKey} className=\"card-item\">\n <div className=\"card-item-legacy\">\n <dt className=\"card-item-legacy-label\">{item.label}</dt>\n <dd className=\"card-item-legacy-value\">\n {item.value}\n </dd>\n </div>\n </div>\n );\n }\n\n return (\n <div key={itemKey} className=\"card-item\">\n <div className=\"card-item-content\">\n {hasImage && (\n <img\n src={item.image}\n alt={item.title || `Card ${i + 1}`}\n className=\"card-item-image\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = \"none\";\n }}\n />\n )}\n <div className=\"card-item-info\">\n {hasTitle && (\n <h4 className=\"card-item-title\">\n {item.title}\n </h4>\n )}\n {hasSubtitle && (\n <p className=\"card-item-subtitle\">\n {item.subtitle}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}","import { UIFormData } from \"../../types/generative-ui\";\n\nexport function 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\n const formData = new FormData(e.currentTarget);\n\n const values: Record<string, string> = {};\n data.fields.forEach((f) => {\n const fieldName = f.id || f.name || `field-${data.fields.indexOf(f)}`;\n values[fieldName] = String(formData.get(fieldName) ?? \"\");\n if (f.type === \"file\") {\n const file = formData.get(fieldName) as File | null;\n values[fieldName] = JSON.stringify({\n name: file?.name,\n size: file?.size,\n type: file?.type,\n });\n }\n });\n console.log(values);\n\n onSubmit(values);\n };\n\n return (\n <form\n onSubmit={handleSubmit}\n className=\"form-component\"\n >\n {data.title && (\n <h3 className=\"form-title\">\n {data.title}\n </h3>\n )}\n <div className=\"form-fields\">\n {data.fields.map((field, fieldIdx) => {\n\n return (\n <div key={fieldIdx} className=\"form-field\">\n <label className=\"form-label\">\n {field.label}\n {field.required && <span>*</span>}\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 className=\"form-select\"\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 ) : field.type === \"file\" ? (\n <input\n type=\"file\"\n name={field.id || field.name}\n required={field.required}\n className=\"form-input\"\n accept={field.accept || \"*\"} // JPG, PNG gibi tipleri desteklemek istersen: field.accept = \"image/*\"\n />\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 className=\"form-input\"\n />\n )}\n </div>\n );\n })}\n </div>\n <button type=\"submit\" className=\"form-submit-button\">\n {data.submitLabel ?? \"Gönder\"}\n </button>\n </form>\n );\n}","import { UIField } from \"../../types/generative-ui\";\n\nexport function renderField(field: UIField) {\n switch (field.type) {\n case \"text\":\n return <span className=\"field-text\">{field.value}</span>;\n case \"image\":\n return (\n <img\n src={field.src}\n alt={field.alt ?? \"\"}\n className=\"field-image\"\n />\n );\n case \"link\":\n return (\n <a\n href={field.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"field-link\"\n >\n {field.label}\n </a>\n );\n case \"badge\":\n const toneClass = field.tone || \"neutral\";\n return (\n <span className={`field-badge ${toneClass}`}>\n {field.label}\n </span>\n );\n case \"list\":\n return (\n <ul className=\"field-list\">\n {field.items.map((item, i) => (\n <li key={i}>{renderField(item)}</li>\n ))}\n </ul>\n );\n default:\n return null;\n }\n}","import { UIField, UITableData } from \"../../types/generative-ui\";\nimport { renderField } from \"../render-field\";\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 className=\"table-component\">\n {data.caption && (\n <div className=\"table-caption\">\n {data.caption}\n </div>\n )}\n <div className=\"table-wrapper\">\n <table className=\"table\">\n <thead className=\"table-header\">\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 key={colKey} className=\"table-th\">\n {colLabel}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody className=\"table-tbody\">\n {data.rows && data.rows.length > 0 ? (\n data.rows.map((row, rowIdx) => (\n <tr key={`row-${rowIdx}`}>\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 const cellValue = row[colKey];\n\n if (cellValue !== undefined && cellValue !== null) {\n if (\n typeof cellValue === \"object\" &&\n \"type\" in cellValue\n ) {\n cellContent = renderField(cellValue as UIField);\n } else {\n const stringValue = String(cellValue);\n\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 className=\"table-cell-image\">\n <img\n src={stringValue}\n alt=\"\"\n className=\"table-image\"\n onError={(e) => {\n (\n e.target as HTMLImageElement\n ).style.display = \"none\";\n }}\n />\n </div>\n );\n } else {\n cellContent = (\n <span className=\"table-cell-text\">\n {stringValue}\n </span>\n );\n }\n }\n }\n } else if (Array.isArray(row)) {\n const cellValue = row[colIdx];\n if (cellValue !== undefined && cellValue !== null) {\n const stringValue = String(cellValue);\n\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 className=\"table-cell-image\">\n <img\n src={stringValue}\n alt=\"\"\n className=\"table-image\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display =\n \"none\";\n }}\n />\n </div>\n );\n } else {\n cellContent = (\n <span className=\"table-cell-text\">\n {stringValue}\n </span>\n );\n }\n }\n }\n\n return (\n <td key={cellKey} className=\"table-td\">\n {cellContent || (\n <span>\n —\n </span>\n )}\n </td>\n );\n })}\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={data.columns.length} className=\"table-empty\">\n Veri bulunamadı\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","\"use client\";\nimport { UIButtonData, UICardData, UIComponent, UIFormData, UITableData } from \"../../types/generative-ui\";\nimport { ButtonsComponent } from \"../button\";\nimport { CardComponent } from \"../card\";\nimport { FormComponent } from \"../form\";\nimport { TableComponent } from \"../table\";\nimport \"../../styles/uiRenderer.scss\";\n\n\ninterface Props {\n components: UIComponent[];\n onInteraction?: (event: any) => void;\n}\n\nexport function GenerativeUI({ 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 className=\"ui-renderer\">\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\n\n\n\n\n\n\n\n\n","\"use client\";\nimport { AizekChatBotProps, Message, BackendConfig } from \"../../types/chatbot\";\nimport { useChatbot } from \"../../hooks/use-chatbot\";\nimport { useEffect, useRef, useState } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { fetchChatWidgetSettings, mapApiSettingsToConfig } from \"../../services/chat-widget-api\";\nimport { validateHeaders } from \"../../utils/cx\";\nimport { GenerativeUI } from \"../generative-ui\";\nimport \"../../styles/index.scss\";\n\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({\n clientId,\n headers,\n}) => {\n const defaultConfig: BackendConfig = {\n welcomeMessage: \"Merhaba! Size nasıl yardımcı olabilirimmmmm?\",\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 className={`message-container ${isUser ? \"user\" : \"assistant\"}`}>\n {isUser && (\n <>\n <div className={`message-bubble ${isUser ? \"user\" : \"assistant\"}`}>\n {message.text && (\n <div className=\"markdown-content\">{message.text}</div>\n )}\n </div>\n <div className={`message-time ${isUser ? \"user\" : \"assistant\"}`}>\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 className={`message-bubble ${isUser ? \"user\" : \"assistant\"}`}>\n {message.isTyping ? (\n <div className=\"message-typing-indicator\">\n <TypingDots />\n </div>\n ) : (\n <>\n <div className=\"markdown-content\">\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\n {message.text}\n </ReactMarkdown>\n </div>\n {message.ui && (\n <GenerativeUI\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 className={`message-time ${isUser ? \"user\" : \"assistant\"}`}>\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 <div className={`alert-container ${alertType}`}>\n <div className=\"alert-icon-container\">{getAlertIcon()}</div>\n <div className=\"alert-content\">\n <h4 className=\"alert-title\">\n {hasErrors ? \"Header Doğrulama Hatası\" : \"Header Uyarısı\"}\n </h4>\n <p className=\"alert-message\">\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>Eksik Header'lar:</strong>\n <ul className=\"alert-list\">\n {missingKeys.map((key, index) => (\n <li key={index} className=\"alert-list-item\">\n <span >\n •\n </span>\n <code>\n {key}\n </code>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {emptyValueKeys.length > 0 && (\n <div>\n <strong >\n Boş Değerli Header'lar:\n </strong>\n <ul className=\"alert-list\">\n {emptyValueKeys.map((key, index) => (\n <li key={index} className=\"alert-list-item\">\n <span >\n •\n </span>\n <code >\n {key}\n </code>\n <span >\n (değer boş olamaz)\n </span>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {extraKeys.length > 0 && (\n <div>\n <strong >Fazla Header'lar:</strong>\n <ul className=\"alert-list\">\n {extraKeys.map((key, index) => (\n <li key={index} className=\"alert-list-item\">\n <span >\n •\n </span>\n <code >\n {key}\n </code>\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n <button\n onClick={() => setShowAlert(false)}\n className=\"alert-close-button\"\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} className=\"input-container\">\n <textarea\n ref={textareaRef}\n value={message}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={isLoading}\n className=\"textarea\"\n />\n <button\n type=\"submit\"\n disabled={isLoading || !message.trim()}\n className=\"send-button\"\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 className=\"loading-spinner\" />;\n };\n\n if (isConfigLoading) {\n return (\n <button\n className={`floating-button ${buttonPosition} button-sizes ${buttonSize}`}\n style={{ background: buttonBackground }}\n >\n <div className=\"loading-spinner\" />\n </button>\n );\n }\n\n return (\n <>\n {isOpen && (\n <div className={`overlay floating-chat-overlay ${isOpen ? \"is-open\" : \"\"}`} onClick={toggleChat} />\n )}\n\n <div className={`chat-container ${buttonPosition} ${isOpen ? \"is-open\" : \"\"}`} style={{ width: chatWidth, height: chatHeight }} >\n <div className=\"chatbot-container\">\n <div className=\"header\" style={{ background: headerBackground }}>\n <div className=\"logo-container\">\n {companyLogo ? (\n companyLogo.startsWith(\"http\") ||\n companyLogo.startsWith(\"data:\") ? (\n <img\n src={companyLogo}\n alt=\"Company Logo\"\n className=\"logo-image\"\n />\n ) : (\n <span className=\"logo-text\">{companyLogo}</span>\n )\n ) : (\n \"🤖\"\n )}\n </div>\n <div>\n <h3 className=\"company-name\">{companyName}</h3>\n <p className=\"status-text\">\n {isLoading ? \"Yazıyor...\" : \"Çevrimiçi\"}\n </p>\n </div>\n </div>\n\n <div className=\"messages-container\">\n <HeaderValidationAlert />\n\n {messages.length === 0 ? (\n <div className=\"empty-state\">\n <div className=\"empty-state-icon\">💬</div>\n <h4 className=\"empty-state-title\">\n {welcomeMessage}\n </h4>\n <p className=\"empty-state-description\">\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 className={`floating-button ${buttonPosition} button-sizes ${buttonSize} ${isOpen ? \"is-open\" : \"\"}`}\n style={{ background: buttonBackground }}\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/services/chat-widget-api.ts","../src/utils/cx.ts","../src/store/static.ts","../src/components/header-alert/index.tsx","../src/components/loading-spinner/index.tsx","../src/components/chat-input/index.tsx","../src/components/generative-ui/index.tsx","../src/components/message-bubble/index.tsx","../src/components/typing-dots/index.tsx","../src/utils/chatbot.ts","../src/components/aizek-chat/index.tsx"],"names":["jsx","jsxs","useRef","Fragment","useState","useEffect","anthropic","mcpClient"],"mappings":"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","file":"index.mjs","sourcesContent":["import { ChatWidgetApiResponse, ChatWidgetSettings } from '../types/chatbot';\r\nimport { BaseResponse } from '../types/global';\r\n\r\nconst API_BASE_URL = 'https://api-alpha.aizek.ai';\r\n\r\nexport const fetchChatWidgetSettings = async (clientId: string): Promise<BaseResponse<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: BaseResponse<ChatWidgetApiResponse> = await response.json();\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 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: apiSettings.button_size || 'medium',\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 { 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 { ChatWidgetApiResponse } from \"../types/chatbot\";\r\n\r\nexport const defaultConfig: ChatWidgetApiResponse = {\r\n auth_config: {\r\n \"header\": \"\"\r\n },\r\n chat_widget_settings: {\r\n welcome_message: \"Merhaba! Size nasıl yardımcı olabilirim?\",\r\n button_background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\r\n placeholder: \"Mesajınızı yazın...\",\r\n button_position: \"bottom-left\",\r\n button_size: \"medium\",\r\n chat_width: \"400px\",\r\n chat_height: \"600px\",\r\n show_typing_indicator: true,\r\n initial_open: true,\r\n header_background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\r\n company_logo: \"\",\r\n company_name: \"Aizek\",\r\n api_source_id: 0,\r\n chat_widget_settings_id: 0,\r\n created_at: \"\",\r\n updated_at: \"\"\r\n },\r\n mcp_url: \"\",\r\n openai_key: \"\"\r\n};\r\n\r\nexport const GENERATIVE_UI_SYSTEM_PROMPT = `\r\nYou can generate interactive UI components as part of your responses.\r\nWhen users need to:\r\n- Provide multiple pieces of information → Generate a FORM\r\n- Make a choice between options → Generate BUTTONS\r\n- View structured data → Generate a TABLE or LIST\r\n- See entity details → Generate a CARD\r\n\r\nFor each component type, include JSON in this format:\r\n\r\n\\`\\`\\`ui-component\r\n{\r\n \"version\": \"1.0\",\r\n \"title\": string,\r\n \"description\"?: string,\r\n \"components\": Array<{\r\n id: string,\r\n type:\r\n | \"text\"\r\n | \"input\"\r\n | \"button\"\r\n | \"select\"\r\n | \"card\"\r\n | \"list\"\r\n | \"image\"\r\n | \"link\"\r\n | \"table\"\r\n | \"form\",\r\n label?: string,\r\n fieldType?: \"text\" | \"number\" | \"date\" | \"textarea\",\r\n requiredField?: boolean,\r\n placeholder?: string,\r\n options?: string[],\r\n columns?: string[],\r\n rows?: string[][],\r\n url?: string,\r\n fieldName?: string\r\n buttonType?: click | submit\r\n }>\r\n}\r\n\\`\\`\\`\r\n\r\n\r\n\r\n\r\n\r\nAlways provide both a conversational text response AND appropriate UI components.\r\n\r\n`;","import { Dispatch, SetStateAction } from \"react\";\r\n\r\ninterface IHeaderAlertProps {\r\n headerValidation: { isValid: boolean; missingKeys: string[]; extraKeys: string[]; emptyValueKeys: string[]; } | null\r\n showAlert: boolean,\r\n setShowAlert: Dispatch<SetStateAction<boolean>>\r\n}\r\nexport const HeaderAlert = ({ headerValidation, showAlert, setShowAlert }: IHeaderAlertProps) => {\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 <div className={`alert-container ${alertType}`}>\r\n <div className=\"alert-icon-container\">{getAlertIcon()}</div>\r\n <div className=\"alert-content\">\r\n <h4 className=\"alert-title\">\r\n {hasErrors ? \"Header Doğrulama Hatası\" : \"Header Uyarısı\"}\r\n </h4>\r\n <p className=\"alert-message\">\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>Eksik Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {missingKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code>\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 >\r\n Boş Değerli Header'lar:\r\n </strong>\r\n <ul className=\"alert-list\">\r\n {emptyValueKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\r\n {key}\r\n </code>\r\n <span >\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 >Fazla Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {extraKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\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 className=\"alert-close-button\"\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};","export const LoadingSpinner: React.FC = () => {\r\n return <div className=\"loading-spinner\" />;\r\n};","import { useRef, useState } from \"react\";\r\nimport { LoadingSpinner } from \"../loading-spinner\";\r\n\r\ninterface IChatInputProps {\r\n isLoading: boolean;\r\n placeholder: string;\r\n handleSendMessage: (message: string, approval?: boolean) => void\r\n}\r\n\r\nexport const ChatInput = ({ isLoading, placeholder, handleSendMessage }: IChatInputProps) => {\r\n const [message, setMessage] = useState(\"\");\r\n const textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\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} className=\"input-container\">\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 className=\"textarea\"\r\n />\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading || !message.trim()}\r\n className=\"send-button\"\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};","import React, { useRef } from \"react\";\r\nimport { UIComponent, UIData } from \"../../types/generative-ui\";\r\n\r\n\r\n\r\ntype GenericUIRendererProps = {\r\n uiData: UIData;\r\n onInteraction: (event: any) => void;\r\n};\r\n\r\nexport const GenericUIRenderer: React.FC<GenericUIRendererProps> = ({ uiData, onInteraction }) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n if (!uiData || !uiData.components) return null;\r\n\r\n // Form değerlerini toplayan fonksiyon\r\n const collectFormValues = () => {\r\n if (!containerRef.current) return {};\r\n\r\n const formData: Record<string, any> = {};\r\n const inputs = containerRef.current.querySelectorAll<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>('input, textarea, select');\r\n\r\n inputs.forEach((element) => {\r\n const name = element.getAttribute('name');\r\n if (name) {\r\n if (element instanceof HTMLInputElement && element.type === 'checkbox') {\r\n formData[name] = element.checked;\r\n } else if (element instanceof HTMLInputElement && element.type === 'radio') {\r\n if (element.checked) {\r\n formData[name] = element.value;\r\n }\r\n } else {\r\n formData[name] = element.value;\r\n }\r\n }\r\n });\r\n\r\n return formData;\r\n };\r\n\r\n const renderComponent = (comp: UIComponent): React.ReactNode => {\r\n switch (comp.type) {\r\n case \"text\":\r\n return (\r\n <p key={comp.id} className=\"gen-ui-text\">\r\n {comp.value ?? comp.label}\r\n </p>\r\n );\r\n\r\n case \"input\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-input-wrapper\">\r\n {comp.label && <label className=\"gen-ui-input-label\">{comp.label}</label>}\r\n {comp.fieldType === \"textarea\" ? (\r\n <textarea\r\n name={comp.id}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-textarea\"\r\n />\r\n ) : (\r\n <input\r\n name={comp.id}\r\n type={comp.fieldType || \"text\"}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-input\"\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n case \"select\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-select-wrapper\">\r\n {comp.label && <label className=\"gen-ui-select-label\">{comp.label}</label>}\r\n <select name={comp.id} className=\"gen-ui-select\">\r\n {comp.options?.map((opt) => (\r\n <option key={opt} value={opt}>\r\n {opt}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n );\r\n\r\n case \"button\":\r\n return (\r\n <button\r\n onClick={() => {\r\n const formValues = collectFormValues();\r\n onInteraction({\r\n action: comp.label,\r\n buttonId: comp.buttonType,\r\n formData: formValues\r\n });\r\n }}\r\n key={comp.id}\r\n className=\"gen-ui-button\"\r\n >\r\n {comp.label}\r\n </button>\r\n );\r\n\r\n case \"card\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-card\">\r\n {comp.label && <h2 className=\"gen-ui-card-title\">{comp.label}</h2>}\r\n {comp.value && <p className=\"gen-ui-card-content\">{comp.value}</p>}\r\n </div>\r\n );\r\n\r\n case \"list\":\r\n return (\r\n <ul key={comp.id} className=\"gen-ui-list\">\r\n {comp.items?.map((item) => (\r\n <li key={item.id} className=\"gen-ui-list-item\">\r\n {item.label ?? String(item.value ?? \"\")}\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n\r\n case \"image\":\r\n return (\r\n <img\r\n key={comp.id}\r\n src={comp.url}\r\n alt={comp.label || \"\"}\r\n className=\"gen-ui-image\"\r\n />\r\n );\r\n\r\n case \"link\":\r\n return (\r\n <a\r\n key={comp.id}\r\n href={comp.url}\r\n className=\"gen-ui-link\"\r\n >\r\n {comp.label || comp.url}\r\n </a>\r\n );\r\n\r\n case \"table\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-table-wrapper\">\r\n <table className=\"gen-ui-table\">\r\n {comp.columns && (\r\n <thead className=\"gen-ui-table-header\">\r\n <tr>\r\n {comp.columns.map((col) => (\r\n <th key={col} className=\"gen-ui-table-th\">\r\n {col}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n )}\r\n {comp.rows && (\r\n <tbody className=\"gen-ui-table-body\">\r\n {comp.rows.map((row, ridx) => (\r\n <tr key={ridx}>\r\n {row.map((cell, cidx) => (\r\n <td key={cidx} className=\"gen-ui-table-td\">\r\n {cell}\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n )}\r\n </table>\r\n </div>\r\n );\r\n\r\n case \"form\":\r\n return (\r\n <form key={comp.id} className=\"gen-ui-form\">\r\n {comp.items?.map((field) => renderComponent(field))}\r\n </form>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"generative-ui-container\" ref={containerRef}>\r\n {(uiData.title || uiData.description) && (\r\n <div className=\"generative-ui-header\">\r\n {uiData.title && (\r\n <h1 className=\"generative-ui-title\">{uiData.title}</h1>\r\n )}\r\n {uiData.description && (\r\n <p className=\"generative-ui-description\">{uiData.description}</p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {uiData.components.map((comp) => renderComponent(comp))}\r\n </div>\r\n );\r\n};\r\n\r\n","import { Message } from \"../../types/chatbot\";\r\nimport { GenericUIRenderer } from \"../generative-ui\";\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport remarkGfm from \"remark-gfm\";\r\n\r\ninterface IMessageBubbleProps {\r\n message: Message;\r\n onAction: (msg: string, approval: boolean) => void;\r\n}\r\n\r\nexport const MessageBubble = ({ message, onAction }: IMessageBubbleProps) => {\r\n console.log(\"MESSAGE\", message);\r\n\r\n const isUser = message.role === \"user\";\r\n const approval = message.role === \"approval\"\r\n\r\n if (approval) {\r\n return <></>\r\n }\r\n\r\n return (\r\n <div className={`message-container ${isUser ? \"user\" : \"assistant\"}`}>\r\n <div className={`message-bubble ${isUser ? \"user\" : \"assistant\"}`}>\r\n {isUser ? (\r\n message.text && (\r\n <div className=\"markdown-content\">{message.text}</div>\r\n )\r\n ) : (\r\n <>\r\n {message.text && (\r\n <div className=\"markdown-content\">\r\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\r\n {message.text}\r\n </ReactMarkdown>\r\n </div>\r\n )}\r\n {message.ui && (\r\n <GenericUIRenderer\r\n uiData={message.ui}\r\n onInteraction={(event) => {\r\n console.log(\"event\", event);\r\n if (event.buttonId === \"submit\") {\r\n onAction(JSON.stringify(event.formData), true);\r\n\r\n } else {\r\n onAction(event.action, true);\r\n\r\n }\r\n\r\n }}\r\n />\r\n )}\r\n\r\n </>\r\n )}\r\n </div>\r\n\r\n <div className={`message-time ${isUser ? \"user\" : \"assistant\"}`}>\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","import { useEffect, useState } from \"react\";\r\n\r\nexport const TypingDots = () => {\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 (\r\n <div className=\"message-container assistant\">\r\n <div className=\"message-bubble assistant\">\r\n <div className=\"message-typing-indicator\">\r\n <span>{dots}</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};","import { BetaMessageParam } from \"@anthropic-ai/sdk/resources/beta.mjs\";\r\nimport { HeadersType, Message } from \"../types/chatbot\";\r\n\r\nexport const extractUIJsonFromText = (text: string): { cleanedText: string; uiData: any | null } => {\r\n const regex = /```ui-component([\\s\\S]*?)```/g;\r\n let cleaned = text;\r\n let match: RegExpExecArray | null;\r\n let uiData: any = null;\r\n\r\n while ((match = regex.exec(text)) !== null) {\r\n const block = match[1].trim();\r\n try {\r\n const parsed = JSON.parse(block);\r\n\r\n if (parsed && parsed.components && Array.isArray(parsed.components)) {\r\n parsed.components = parsed.components.map((comp: any, index: number) => {\r\n if (!comp.id || typeof comp.id !== \"string\" || !comp.id.trim()) {\r\n comp.id = `ui-comp-${index}-${Date.now()}`;\r\n }\r\n\r\n if (comp.type === \"button\") {\r\n if (!comp.buttonType) {\r\n comp.buttonType = \"click\";\r\n }\r\n }\r\n\r\n if (comp.type === \"input\") {\r\n if (!comp.fieldType) {\r\n comp.fieldType = \"text\";\r\n }\r\n }\r\n\r\n if (comp.type === \"select\") {\r\n if (comp.options && Array.isArray(comp.options)) {\r\n const firstOption = comp.options[0];\r\n if (typeof firstOption === \"object\" && firstOption !== null) {\r\n if (\"label\" in firstOption || \"value\" in firstOption) {\r\n comp.options = comp.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"table\") {\r\n if (comp.columns && Array.isArray(comp.columns)) {\r\n const firstCol = comp.columns[0];\r\n if (typeof firstCol === \"object\" && firstCol !== null) {\r\n comp.columns = comp.columns.map((col: any) =>\r\n col.label || col.id || String(col)\r\n );\r\n }\r\n }\r\n\r\n if (comp.rows && Array.isArray(comp.rows)) {\r\n const firstRow = comp.rows[0];\r\n if (typeof firstRow === \"object\" && !Array.isArray(firstRow)) {\r\n comp.rows = comp.rows.map((row: any) => {\r\n if (Array.isArray(row)) return row;\r\n return Object.values(row).map((val: any) => {\r\n if (typeof val === \"object\" && val !== null) {\r\n if (val.type === \"image\" && val.src) return val.src;\r\n if (val.value !== undefined) return String(val.value);\r\n }\r\n return String(val || \"\");\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"form\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((field: any, fieldIndex: number) => {\r\n if (!field.id || !field.id.trim()) {\r\n field.id = `field-${fieldIndex}-${Date.now()}`;\r\n }\r\n\r\n if (field.optional !== undefined) {\r\n field.requiredField = !field.optional;\r\n delete field.optional;\r\n }\r\n\r\n if (field.required !== undefined) {\r\n field.requiredField = field.required;\r\n delete field.required;\r\n }\r\n\r\n if (field.type === \"input\" && !field.fieldType) {\r\n field.fieldType = \"text\";\r\n }\r\n\r\n if (field.type === \"select\" && field.options && Array.isArray(field.options)) {\r\n const firstOpt = field.options[0];\r\n if (typeof firstOpt === \"object\" && firstOpt !== null) {\r\n field.options = field.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n\r\n return field;\r\n });\r\n }\r\n\r\n if (comp.type === \"list\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((item: any, itemIndex: number) => {\r\n if (typeof item === \"string\") {\r\n return {\r\n id: `list-item-${itemIndex}-${Date.now()}`,\r\n type: \"text\",\r\n value: item,\r\n label: item\r\n };\r\n }\r\n if (!item.id || !item.id.trim()) {\r\n item.id = `list-item-${itemIndex}-${Date.now()}`;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n return comp;\r\n });\r\n\r\n uiData = parsed;\r\n }\r\n\r\n cleaned = cleaned.replace(match[0], \"\").trim();\r\n\r\n break;\r\n } catch (e) {\r\n console.error(\"Invalid ui-component JSON:\", e, block);\r\n }\r\n }\r\n\r\n return {\r\n cleanedText: cleaned,\r\n uiData: uiData\r\n };\r\n};\r\n\r\nexport const historyMessages = (history: Message[], currentUserText: string): BetaMessageParam[] => {\r\n const claudeHistory: BetaMessageParam[] = history\r\n .filter((m) => m.role === \"user\" || m.role === \"assistant\")\r\n .map((m) => ({\r\n role: m.role as \"user\" | \"assistant\",\r\n content: m.text ?? JSON.stringify(m.ui ?? \"\")\r\n }));\r\n\r\n claudeHistory.push({\r\n role: \"user\",\r\n content: currentUserText,\r\n });\r\n\r\n return claudeHistory;\r\n};\r\n\r\nexport const generateId = () => Date.now().toString() + Math.random().toString(36).substr(2, 9);\r\n\r\nexport const normalizeHeaders = (headers: HeadersType): HeadersType => {\r\n const result: HeadersType = {};\r\n\r\n for (const [key, value] of Object.entries(headers)) {\r\n if (!value) continue;\r\n\r\n // cookie varyasyonlarını yakala\r\n if (key.toLowerCase() === \"cookie\") {\r\n result[\"x-cookie\"] = value;\r\n } else {\r\n result[key] = value;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n","\"use client\";\r\nimport { AizekChatBotProps, ChatWidgetApiResponse, HeadersType, Message } from \"../../types/chatbot\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { fetchChatWidgetSettings } from \"../../services/chat-widget-api\";\r\nimport { validateHeaders } from \"../../utils/cx\";\r\nimport \"../../styles/index.scss\";\r\nimport { defaultConfig, GENERATIVE_UI_SYSTEM_PROMPT } from \"../../store/static\";\r\nimport { HeaderAlert } from \"../header-alert\";\r\nimport { ChatInput } from \"../chat-input\";\r\nimport { MessageBubble } from \"../message-bubble\";\r\nimport { TypingDots } from \"../typing-dots\";\r\nimport Anthropic from \"@anthropic-ai/sdk\";\r\nimport { Client } from \"@modelcontextprotocol/sdk/client\";\r\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\r\nimport { BetaMessageParam } from \"@anthropic-ai/sdk/resources/beta.mjs\";\r\nimport { extractUIJsonFromText, generateId, normalizeHeaders } from \"../../utils/chatbot\";\r\n\r\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({ clientId, headers }) => {\r\n\r\n const messagesEndRef = useRef<HTMLDivElement>(null);\r\n\r\n const [config, setConfig] = useState<ChatWidgetApiResponse>(defaultConfig);\r\n const [anthropic, setAnthropic] = useState<Anthropic>()\r\n const [messages, setMessages] = useState<Message[]>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [mcpClient, setMcpClient] = useState<Client>()\r\n const [isConfigLoading, setIsConfigLoading] = useState(true);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [headerValidation, setHeaderValidation] = useState<{ isValid: boolean; missingKeys: string[]; extraKeys: string[]; emptyValueKeys: string[]; } | null>(null);\r\n const [showAlert, setShowAlert] = useState(true);\r\n\r\n const { button_background, button_position, button_size, chat_height, chat_width, company_logo, company_name, header_background, initial_open, placeholder, show_typing_indicator, welcome_message, } = config.chat_widget_settings;\r\n\r\n useEffect(() => {\r\n const loadConfig = async () => {\r\n try {\r\n\r\n setIsConfigLoading(true);\r\n const apiResponse = await fetchChatWidgetSettings(clientId);\r\n\r\n if (apiResponse.success) {\r\n\r\n const anthropic = new Anthropic({ apiKey: apiResponse.data.openai_key, dangerouslyAllowBrowser: true });\r\n const mcpClient = new Client({ name: \"mcp-client-cli\", version: \"1.0.0\" })\r\n\r\n const transport = new SSEClientTransport(new URL(\"\", apiResponse.data.mcp_url), {\r\n eventSourceInit: {\r\n fetch: (url, init) => {\r\n if (headers) {\r\n const dynamicHeaders = normalizeHeaders(headers)\r\n\r\n return fetch(url, {\r\n headers: {\r\n ...(init?.headers ?? {}),\r\n ...dynamicHeaders,\r\n },\r\n })\r\n\r\n } else {\r\n return fetch(url, {\r\n headers: {\r\n ...(init?.headers ?? {}),\r\n },\r\n })\r\n }\r\n },\r\n },\r\n })\r\n await mcpClient.connect(transport)\r\n setMcpClient(mcpClient)\r\n setAnthropic(anthropic)\r\n\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 setHeaderValidation(validationResult);\r\n }\r\n\r\n if (!apiResponse.data.chat_widget_settings) {\r\n setConfig({\r\n auth_config: apiResponse.data.auth_config,\r\n mcp_url: apiResponse.data.mcp_url,\r\n openai_key: apiResponse.data.openai_key,\r\n chat_widget_settings: {\r\n api_source_id: 0,\r\n chat_widget_settings_id: 0,\r\n created_at: \"\",\r\n updated_at: \"\",\r\n button_background: defaultConfig.chat_widget_settings.button_background,\r\n button_position: defaultConfig.chat_widget_settings.button_position,\r\n button_size: defaultConfig.chat_widget_settings.button_size,\r\n chat_height: defaultConfig.chat_widget_settings.chat_height,\r\n chat_width: defaultConfig.chat_widget_settings.chat_width,\r\n company_logo: defaultConfig.chat_widget_settings.company_logo,\r\n company_name: defaultConfig.chat_widget_settings.company_name,\r\n header_background: defaultConfig.chat_widget_settings.header_background,\r\n initial_open: defaultConfig.chat_widget_settings.initial_open,\r\n placeholder: defaultConfig.chat_widget_settings.placeholder,\r\n show_typing_indicator: defaultConfig.chat_widget_settings.show_typing_indicator,\r\n welcome_message: defaultConfig.chat_widget_settings.welcome_message,\r\n }\r\n });\r\n } else {\r\n\r\n setConfig(apiResponse.data)\r\n }\r\n }\r\n\r\n } catch (error) {\r\n console.error(\"Failed to load chat widget config:\", error);\r\n } finally {\r\n setIsConfigLoading(false);\r\n }\r\n };\r\n\r\n loadConfig();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setIsOpen(initial_open);\r\n }, [initial_open]);\r\n\r\n useEffect(() => {\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n }, [messages]);\r\n\r\n\r\n if (isConfigLoading || !mcpClient || !anthropic) {\r\n return (\r\n <button className={`floating-button ${button_position} button-sizes ${button_size}`} style={{ background: button_background }} >\r\n <div className=\"loading-spinner\" />\r\n </button>\r\n );\r\n }\r\n\r\n const historyMessages = (\r\n history: Message[],\r\n currentUserText: string\r\n ): BetaMessageParam[] => {\r\n const claudeHistory: BetaMessageParam[] = history\r\n .filter((m) => m.role === \"user\" || m.role === \"assistant\")\r\n .map((m) => ({\r\n role: m.role as \"user\" | \"assistant\",\r\n content: m.text ?? JSON.stringify(m.ui ?? \"\")\r\n }));\r\n\r\n claudeHistory.push({\r\n role: \"user\",\r\n content: currentUserText,\r\n });\r\n\r\n return claudeHistory;\r\n };\r\n\r\n\r\n const addMessage = (payload: Omit<Message, \"timestamp\" | \"id\">) => {\r\n const newMessage: Message = {\r\n id: generateId(),\r\n text: payload.text,\r\n ui: payload.ui,\r\n role: payload.role,\r\n timestamp: new Date(),\r\n };\r\n setMessages((prev) => [...prev, newMessage]);\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n return newMessage;\r\n };\r\n\r\n\r\n\r\n\r\n const sendMessage = async (message: string, approval?: boolean) => {\r\n if (!message.trim() || isLoading) return;\r\n\r\n const newMessage: Message = {\r\n id: generateId(),\r\n text: message,\r\n ui: undefined,\r\n role: approval ? \"approval\" : \"user\",\r\n timestamp: new Date(),\r\n };\r\n\r\n setMessages(prev => [...prev, newMessage]);\r\n\r\n setIsLoading(true);\r\n\r\n const toolsResult = await mcpClient.listTools();\r\n\r\n const tools = toolsResult.tools.map((tool) => {\r\n return {\r\n name: tool.name,\r\n description: tool.description,\r\n input_schema: tool.inputSchema,\r\n };\r\n });\r\n\r\n try {\r\n\r\n const historyForContext = historyMessages([...messages, newMessage], message);\r\n\r\n const response = await anthropic.beta.messages.create({\r\n model: \"claude-sonnet-4-5\",\r\n betas: [\"structured-outputs-2025-11-13\"],\r\n max_tokens: 5000,\r\n messages: historyForContext,\r\n tools: tools,\r\n system: GENERATIVE_UI_SYSTEM_PROMPT\r\n });\r\n\r\n for (const content of response.content) {\r\n if (content.type === \"tool_use\") {\r\n const toolCall = await mcpClient.callTool({ name: content.name, arguments: content.input as any })\r\n const toolMessagesForContext = historyMessages([...messages, newMessage], JSON.stringify(toolCall.structuredContent));\r\n\r\n const finalResponse = await anthropic.beta.messages.create({\r\n model: \"claude-sonnet-4-5\",\r\n max_tokens: 1024,\r\n betas: [\"structured-outputs-2025-11-13\"],\r\n messages: toolMessagesForContext,\r\n tools: tools,\r\n system: GENERATIVE_UI_SYSTEM_PROMPT\r\n });\r\n\r\n const textBlock = finalResponse.content.find((x) => x.type === \"text\");\r\n const { cleanedText, uiData } = extractUIJsonFromText(textBlock?.text ?? \"\");\r\n\r\n addMessage({ ui: uiData, text: cleanedText || undefined, role: \"assistant\" });\r\n\r\n } else if (content.type === \"text\") {\r\n const { cleanedText, uiData } = extractUIJsonFromText(content?.text);\r\n console.log(cleanedText, uiData);\r\n addMessage({ ui: uiData, text: cleanedText || undefined, role: \"assistant\" });\r\n }\r\n }\r\n\r\n setIsLoading(false);\r\n } catch (error) {\r\n console.error(\"Error sending message:\", error);\r\n addMessage({ text: \"Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.\", role: \"assistant\" });\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const toggleChat = () => {\r\n const newIsOpen = !isOpen;\r\n setIsOpen(newIsOpen);\r\n };\r\n\r\n return (\r\n <>\r\n {isOpen && (<div className={`overlay floating-chat-overlay ${isOpen ? \"is-open\" : \"\"}`} onClick={toggleChat} />)}\r\n\r\n <div className={`chat-container ${button_position} ${isOpen ? \"is-open\" : \"\"}`} style={{ width: chat_width, height: chat_height }} >\r\n <div className=\"chatbot-container\">\r\n <div className=\"header\" style={{ background: header_background }}>\r\n <div className=\"logo-container\">\r\n {company_logo ? (\r\n company_logo.startsWith(\"http\") ||\r\n company_logo.startsWith(\"data:\") ? (\r\n <img\r\n src={company_logo}\r\n alt=\"Company Logo\"\r\n className=\"logo-image\"\r\n />\r\n ) : (\r\n <span className=\"logo-text\">{company_logo}</span>\r\n )\r\n ) : (\r\n \"🤖\"\r\n )}\r\n </div>\r\n <div>\r\n <h3 className=\"company-name\">{company_name}</h3>\r\n <p className=\"status-text\">\r\n {isLoading ? \"Yazıyor...\" : \"Çevrimiçi\"}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"messages-container\">\r\n <HeaderAlert headerValidation={headerValidation} setShowAlert={setShowAlert} showAlert={showAlert} />\r\n\r\n {messages.length === 0 ? (\r\n <div className=\"empty-state\">\r\n <div className=\"empty-state-icon\">💬</div>\r\n <h4 className=\"empty-state-title\">\r\n {welcome_message}\r\n </h4>\r\n <p className=\"empty-state-description\">\r\n Aşağıdaki alana mesajınızı yazarak başlayabilirsiniz.\r\n </p>\r\n </div>\r\n ) : (\r\n <>\r\n {messages.map((message) => (\r\n <MessageBubble\r\n key={message.id}\r\n message={message}\r\n onAction={sendMessage}\r\n />\r\n ))}\r\n\r\n {show_typing_indicator && isLoading && <TypingDots />}\r\n </>\r\n )}\r\n\r\n <div ref={messagesEndRef} />\r\n </div>\r\n\r\n <ChatInput handleSendMessage={sendMessage} isLoading={isLoading} placeholder={placeholder} />\r\n </div>\r\n </div>\r\n\r\n <button\r\n onClick={toggleChat}\r\n className={`floating-button ${button_position} button-sizes ${button_size} ${isOpen ? \"is-open\" : \"\"}`}\r\n style={{ background: button_background }}\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"]}
|
package/package.json
CHANGED
|
@@ -1,50 +1,52 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "aizek-chatbot",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "React + TS component library (no Tailwind)",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"main": "./dist/index.cjs",
|
|
7
|
-
"module": "./dist/index.mjs",
|
|
8
|
-
"types": "./dist/index.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist/index.d.ts",
|
|
12
|
-
"import": "./dist/index.mjs",
|
|
13
|
-
"require": "./dist/index.cjs"
|
|
14
|
-
},
|
|
15
|
-
"./styles.css": "./dist/index.css"
|
|
16
|
-
},
|
|
17
|
-
"files": [
|
|
18
|
-
"dist"
|
|
19
|
-
],
|
|
20
|
-
"sideEffects": true,
|
|
21
|
-
"scripts": {
|
|
22
|
-
"build": "npm run build:ts",
|
|
23
|
-
"build:ts": "tsup",
|
|
24
|
-
"dev": "tsup --watch",
|
|
25
|
-
"clean": "rimraf dist || rmdir /s /q dist"
|
|
26
|
-
},
|
|
27
|
-
"keywords": [],
|
|
28
|
-
"author": "",
|
|
29
|
-
"dependencies": {
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "aizek-chatbot",
|
|
3
|
+
"version": "1.0.15",
|
|
4
|
+
"description": "React + TS component library (no Tailwind)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.mjs",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
},
|
|
15
|
+
"./styles.css": "./dist/index.css"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"sideEffects": true,
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "npm run build:ts",
|
|
23
|
+
"build:ts": "tsup",
|
|
24
|
+
"dev": "tsup --watch",
|
|
25
|
+
"clean": "rimraf dist || rmdir /s /q dist"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [],
|
|
28
|
+
"author": "",
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@anthropic-ai/sdk": "^0.71.0",
|
|
31
|
+
"@modelcontextprotocol/sdk": "^1.23.0",
|
|
32
|
+
"dompurify": "^3.3.0",
|
|
33
|
+
"openai": "^5.22.0",
|
|
34
|
+
"react-markdown": "^10.1.0",
|
|
35
|
+
"remark-gfm": "^4.0.1"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/react": "^19.1.12",
|
|
39
|
+
"@types/react-dom": "^19.1.9",
|
|
40
|
+
"clsx": "^2.1.1",
|
|
41
|
+
"esbuild-sass-plugin": "^3.3.1",
|
|
42
|
+
"react": "^19.1.1",
|
|
43
|
+
"react-dom": "^19.1.1",
|
|
44
|
+
"sass": "^1.94.2",
|
|
45
|
+
"tsup": "^8.5.0",
|
|
46
|
+
"typescript": "^5.9.2"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"react": ">=18",
|
|
50
|
+
"react-dom": ">=18"
|
|
51
|
+
}
|
|
52
|
+
}
|