reactbridge-sdk 0.2.0 → 0.2.2
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/components/analytics/AnalyticsDashboard.d.ts +11 -0
- package/dist/components/analytics/AnalyticsDashboard.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +175 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +175 -2
- package/dist/index.js.map +1 -1
- package/dist/types/analytics.d.ts +1 -0
- package/dist/types/analytics.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/api.ts","../src/themes/light.ts","../src/utils/voice.ts","../src/provider/ReactBridgeProvider.tsx","../src/utils/contextDiff.ts","../src/hooks/useReactBridge.ts","../src/components/ReactBridgeChatbox.tsx","../src/components/ReactBridgeSearch.tsx","../src/themes/dark.ts","../src/themes/index.ts","../src/utils/analytics-api.ts","../src/hooks/analytics/useAnalyticsConfigs.ts","../src/hooks/analytics/useAnalyticsResult.ts","../src/components/analytics/MetricsPanel.tsx","../src/components/analytics/ObservationsPanel.tsx","../src/hooks/analytics/useDirectiveAction.ts","../src/components/analytics/DirectivesPanel.tsx","../src/components/analytics/AnalyticsReport.tsx","../src/components/analytics/AnalyticsDrawer.tsx","../src/components/analytics/AnalyticsWidget.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import type { OrchestratorRequest, OrchestratorResponse, ReactBridgeConfig } from '../types';\n\nconst DEFAULT_BASE_URL = 'https://react-bridge-api-14089992360.northamerica-northeast2.run.app'; // 'http://localhost:5093';\n\nexport class ReactBridgeAPI {\n private config: ReactBridgeConfig;\n\n constructor(config: ReactBridgeConfig) {\n this.config = config;\n }\n\n async sendMessage(request: OrchestratorRequest): Promise<OrchestratorResponse> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/orchestrator/process`;\n\n try {\n // Configure abort signal for fetch with robust fallback.\n // `ReactBridgeConfig.timeout` is milliseconds. If it's undefined, no timeout is applied.\n // If it's 0 or a non-positive number, timeout is disabled.\n const timeoutMs = typeof this.config.timeout === 'number' ? this.config.timeout : undefined;\n\n let controller: AbortController | null = null;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n let signal: AbortSignal | undefined;\n\n if (typeof timeoutMs === 'number' && timeoutMs > 0) {\n // Prefer built-in AbortSignal.timeout when available\n if (typeof (AbortSignal as any).timeout === 'function') {\n signal = (AbortSignal as any).timeout(timeoutMs);\n } else {\n controller = new AbortController();\n signal = controller.signal;\n timeoutId = setTimeout(() => controller!.abort(), timeoutMs);\n }\n }\n\n // Check if this is a multimodal request (has image or document)\n const hasFile = request.image || request.document;\n \n let headers: Record<string, string> = {\n 'X-API-Key': this.config.apiKey,\n ...this.config.headers,\n };\n \n let body: string | FormData;\n\n if (hasFile) {\n // Use FormData for file uploads\n const formData = new FormData();\n \n // Add text fields\n formData.append('userId', request.userId);\n formData.append('query', request.query);\n \n if (request.userName) formData.append('userName', request.userName);\n if (request.userPreferences) formData.append('userPreferences', request.userPreferences);\n if (request.userRecentActivity) formData.append('userRecentActivity', request.userRecentActivity);\n if (request.interfaceState) formData.append(\"InterfaceStateJson\", JSON.stringify(request.interfaceState));\n if (request.sessionId) formData.append('sessionId', request.sessionId);\n if (request.modalityHint) formData.append('modalityHint', request.modalityHint);\n \n // Add files\n if (request.image) formData.append('image', request.image);\n if (request.document) formData.append('document', request.document);\n \n body = formData;\n // Don't set Content-Type for FormData - let browser set it with boundary\n delete headers['Content-Type'];\n } else {\n // Use JSON for text-only requests\n headers['Content-Type'] = 'application/json';\n body = JSON.stringify(request);\n }\n // console.log('Sending request to ReactBridge API:', { url, headers, body, timeoutMs });\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body,\n signal,\n });\n\n // console.log('Received response from ReactBridge API:', response);\n // Clear any manual timeout timer if set\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n if (!response.ok) {\n throw new Error(`API request failed: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n return data as OrchestratorResponse;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`ReactBridge API Error: ${error.message}`);\n }\n throw new Error('ReactBridge API Error: Unknown error occurred');\n }\n }\n\n async sendToolResult(\n sessionId: string,\n toolResult: any,\n originalRequest: OrchestratorRequest\n ): Promise<OrchestratorResponse> {\n // Second API call with tool result\n const request: OrchestratorRequest = {\n ...originalRequest,\n sessionId,\n query: `[Tool Result] ${toolResult.summary}`,\n };\n\n return this.sendMessage(request);\n }\n\n // Helper methods for different request types\n async sendTextRequest(\n userId: string,\n query: string,\n context?: Partial<OrchestratorRequest>\n ): Promise<OrchestratorResponse> {\n const request: OrchestratorRequest = {\n userId,\n query,\n ...context,\n };\n return this.sendMessage(request);\n }\n\n async sendImageRequest(\n userId: string,\n imageFile: File,\n query: string = '',\n context?: Partial<OrchestratorRequest>\n ): Promise<OrchestratorResponse> {\n const request: OrchestratorRequest = {\n userId,\n query,\n image: imageFile,\n modalityHint: 'image',\n ...context,\n };\n return this.sendMessage(request);\n }\n\n async sendDocumentRequest(\n userId: string,\n documentFile: File,\n query: string = '',\n context?: Partial<OrchestratorRequest>\n ): Promise<OrchestratorResponse> {\n const request: OrchestratorRequest = {\n userId,\n query,\n document: documentFile,\n modalityHint: 'document',\n ...context,\n };\n return this.sendMessage(request);\n }\n}\n","import type { Theme } from '../types';\n\nexport const lightTheme: Theme = {\n name: 'light',\n colors: {\n primary: '#1976d2',\n secondary: '#dc004e',\n background: '#ffffff',\n surface: '#f5f5f5',\n text: '#000000',\n textSecondary: '#666666',\n border: '#e0e0e0',\n error: '#f44336',\n success: '#4caf50',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '24px',\n },\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n};\n","// Default STT Provider using Web Speech API\nexport class WebSpeechSTTProvider {\n private recognition?: SpeechRecognition;\n private onResultCallback?: (text: string) => void;\n private onErrorCallback?: (error: Error) => void;\n\n constructor() {\n if (typeof window !== 'undefined') {\n const SpeechRecognitionCtor =\n (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\n\n if (SpeechRecognitionCtor) {\n this.recognition = new SpeechRecognitionCtor();\n if (!this.recognition) {\n throw new Error('Failed to initialize SpeechRecognition');\n }\n this.recognition.continuous = false;\n this.recognition.interimResults = false;\n this.recognition.lang = 'en-US';\n\n this.recognition.onresult = (event: SpeechRecognitionEvent) => {\n const transcript = event.results[0][0].transcript;\n this.onResultCallback?.(transcript);\n };\n\n this.recognition.onerror = (event: SpeechRecognitionErrorEvent) => {\n this.onErrorCallback?.(\n new Error(`Speech recognition error: ${event.error}`)\n );\n };\n } else {\n console.warn('SpeechRecognition API not supported in this browser.');\n }\n }\n }\n\n startRecognition(): void {\n if (this.recognition) {\n this.recognition.start();\n } else {\n throw new Error('Speech recognition not supported');\n }\n }\n\n stopRecognition(): void {\n this.recognition?.stop();\n }\n\n onResult(callback: (text: string) => void): void {\n this.onResultCallback = callback;\n }\n\n onError(callback: (error: Error) => void): void {\n this.onErrorCallback = callback;\n }\n}\n\n// Default TTS Provider using Web Speech API\nexport class WebSpeechTTSProvider {\n speak(text: string): void {\n if (typeof window !== 'undefined' && 'speechSynthesis' in window) {\n const utterance = new SpeechSynthesisUtterance(text);\n window.speechSynthesis.speak(utterance);\n } else {\n console.warn('Text-to-speech not supported');\n }\n }\n\n stop(): void {\n if (typeof window !== 'undefined' && 'speechSynthesis' in window) {\n window.speechSynthesis.cancel();\n }\n }\n}\n","import React, { createContext, useContext, ReactNode, useState, useRef } from 'react';\nimport type { ReactBridgeConfig, Theme, STTProvider, TTSProvider } from '../types';\nimport { ReactBridgeAPI } from '../utils/api';\nimport { lightTheme } from '../themes/light';\nimport { WebSpeechSTTProvider, WebSpeechTTSProvider } from '../utils/voice';\n\ninterface ReactBridgeContextValue {\n api: ReactBridgeAPI;\n config: ReactBridgeConfig;\n theme: Theme;\n sttProvider: STTProvider;\n ttsProvider: TTSProvider;\n setSTTProvider: (provider: STTProvider) => void;\n setTTSProvider: (provider: TTSProvider) => void;\n}\n\nconst ReactBridgeContext = createContext<ReactBridgeContextValue | null>(null);\n\nexport interface ReactBridgeProviderProps {\n apiKey: string;\n config?: Partial<ReactBridgeConfig>;\n theme?: Theme;\n sttProvider?: STTProvider;\n ttsProvider?: TTSProvider;\n children: ReactNode;\n}\n\nexport function ReactBridgeProvider({\n apiKey,\n config = {},\n theme = lightTheme,\n sttProvider: initialSTTProvider,\n ttsProvider: initialTTSProvider,\n children,\n}: ReactBridgeProviderProps) {\n const fullConfig: ReactBridgeConfig = {\n apiKey,\n baseURL: config.baseURL,\n // Preserve explicit 0 (to disable timeouts). If not provided, default to 30s\n timeout: typeof config.timeout === 'number' ? config.timeout : 30000,\n headers: config.headers,\n };\n\n const api = React.useMemo(() => new ReactBridgeAPI(fullConfig), [\n fullConfig.apiKey,\n fullConfig.baseURL,\n fullConfig.timeout,\n ]);\n\n const [sttProvider, setSTTProvider] = useState<STTProvider>(\n initialSTTProvider || new WebSpeechSTTProvider()\n );\n const [ttsProvider, setTTSProvider] = useState<TTSProvider>(\n initialTTSProvider || new WebSpeechTTSProvider()\n );\n\n const value: ReactBridgeContextValue = {\n api,\n config: fullConfig,\n theme,\n sttProvider,\n ttsProvider,\n setSTTProvider,\n setTTSProvider,\n };\n\n return (\n <ReactBridgeContext.Provider value={value}>\n {children}\n </ReactBridgeContext.Provider>\n );\n}\n\nexport function useReactBridgeContext(): ReactBridgeContextValue {\n const context = useContext(ReactBridgeContext);\n if (!context) {\n throw new Error(\n 'useReactBridgeContext must be used within a ReactBridgeProvider'\n );\n }\n return context;\n}\n","import type { CurrentContext, InterfaceState } from '../types';\n\nexport function hasContextChanged(\n previous: CurrentContext | null,\n current: CurrentContext\n): boolean {\n if (!previous) return true;\n\n // Check if page changed\n if (previous.interfaceState.currentPageName !== current.interfaceState.currentPageName) {\n return true;\n }\n\n // Check if viewing items changed\n const prevItems = previous.interfaceState.viewingItems || [];\n const currItems = current.interfaceState.viewingItems || [];\n\n if (prevItems.length !== currItems.length) {\n return true;\n }\n\n // Check if item IDs changed\n const prevIds = prevItems.map(item => item.id).sort();\n const currIds = currItems.map(item => item.id).sort();\n\n return JSON.stringify(prevIds) !== JSON.stringify(currIds);\n}\n\nexport function getContextSummary(context: CurrentContext): string {\n const { interfaceState } = context;\n const parts: string[] = [];\n\n parts.push(`Page: ${interfaceState.currentPageName}`);\n\n if (interfaceState.viewingItems && interfaceState.viewingItems.length > 0) {\n parts.push(`Viewing ${interfaceState.viewingItems.length} items:`);\n interfaceState.viewingItems.slice(0, 3).forEach(item => {\n parts.push(` - ${item.name} ($${item.price})`);\n });\n if (interfaceState.viewingItems.length > 3) {\n parts.push(` ... and ${interfaceState.viewingItems.length - 3} more`);\n }\n }\n\n return parts.join('\\n');\n}\n","import { useState, useCallback, useRef, useEffect } from 'react';\nimport { useReactBridgeContext } from '../provider/ReactBridgeProvider';\nimport { hasContextChanged, getContextSummary } from '../utils/contextDiff';\nimport type {\n ChatMessage,\n UseReactBridgeOptions,\n UseReactBridgeReturn,\n InterfaceState,\n OrchestratorRequest,\n CurrentContext,\n} from '../types';\n\nexport function useReactBridge({\n onIntentDetected,\n currentContext,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n}: UseReactBridgeOptions): UseReactBridgeReturn {\n const { api, sttProvider, ttsProvider } = useReactBridgeContext();\n const [messages, setMessages] = useState<ChatMessage[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [sessionId, setSessionId] = useState<string | null>(null);\n const [isListening, setIsListening] = useState(false);\n \n const previousContextRef = useRef<CurrentContext | null>(null);\n const lastRequestRef = useRef<OrchestratorRequest | null>(null);\n\n // Inject context changes as system messages\n useEffect(() => {\n if (hasContextChanged(previousContextRef.current, currentContext)) {\n const contextSummary = getContextSummary(currentContext);\n const contextMessage: ChatMessage = {\n id: `context-${Date.now()}`,\n role: 'system',\n content: `[Context Update]\\n${contextSummary}`,\n timestamp: new Date(),\n };\n \n setMessages(prev => [...prev, contextMessage]);\n previousContextRef.current = currentContext;\n }\n }, [currentContext]);\n\n const sendChatQuery = useCallback(\n async (queryOrOptions: string | { image?: File; document?: File; query?: string }, fromVoiceInput: boolean = false) => {\n const isMultimodal = typeof queryOrOptions === 'object';\n const query = isMultimodal ? (queryOrOptions.query || '') : queryOrOptions;\n const image = isMultimodal ? queryOrOptions.image : undefined;\n const document = isMultimodal ? queryOrOptions.document : undefined;\n \n if (!query.trim() && !image && !document) return;\n\n setIsLoading(true);\n setError(null);\n\n // Add user message with file info if present\n let messageContent = query;\n if (image) {\n messageContent = messageContent ? `${messageContent} [Image: ${image.name}]` : `[Image: ${image.name}]`;\n } else if (document) {\n messageContent = messageContent ? `${messageContent} [Document: ${document.name}]` : `[Document: ${document.name}]`;\n }\n \n const userMessage: ChatMessage = {\n id: `user-${Date.now()}`,\n role: 'user',\n content: messageContent,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, userMessage]);\n\n try {\n // Step 1: Send initial request to orchestrator\n const request: OrchestratorRequest = {\n userId: currentContext.userId,\n query,\n // Pass the new top-level fields expected by the API, populated from the InterfaceState\n userName: currentContext.userName,\n userPreferences: currentContext.userPreferences,\n userRecentActivity: currentContext.userRecentActivity,\n interfaceState: currentContext.interfaceState,\n sessionId: sessionId || undefined,\n // Add multimodal fields\n image,\n document,\n modalityHint: image ? 'image' : document ? 'document' : undefined,\n };\n\n lastRequestRef.current = request;\n\n const response = await api.sendMessage(request);\n\n if (!response.success) {\n throw new Error(response.error || 'Request failed');\n }\n\n // Update session ID\n if (response.sessionId) {\n setSessionId(response.sessionId);\n }\n\n // Add assistant message\n const assistantMessage: ChatMessage = {\n id: `assistant-${Date.now()}`,\n role: 'assistant',\n content: response.message,\n timestamp: new Date(),\n toolCall: response.toolCall,\n };\n setMessages(prev => [...prev, assistantMessage]);\n\n // Trigger TTS and callback only if input came from voice\n if (fromVoiceInput) {\n ttsProvider.speak(response.message);\n }\n if (onAgentResponse) {\n onAgentResponse(response.message);\n }\n\n // Step 2: If there's a tool call, execute it\n if (response.toolCall && onIntentDetected) {\n try {\n const toolResult = await onIntentDetected(response.toolCall);\n\n // Step 3: Send tool result back to orchestrator\n if (lastRequestRef.current && response.sessionId) {\n const resultResponse = await api.sendToolResult(\n response.sessionId,\n toolResult,\n lastRequestRef.current\n );\n\n // Add final assistant message with tool result context\n const finalMessage: ChatMessage = {\n id: `assistant-final-${Date.now()}`,\n role: 'assistant',\n content: resultResponse.message,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, finalMessage]);\n\n // Trigger TTS for final response only if input came from voice\n if (fromVoiceInput) {\n ttsProvider.speak(resultResponse.message);\n }\n if (onAgentResponse) {\n onAgentResponse(resultResponse.message);\n }\n }\n } catch (toolError) {\n const errorMessage = toolError instanceof Error \n ? toolError.message \n : 'Tool execution failed';\n \n const errorMsg: ChatMessage = {\n id: `error-${Date.now()}`,\n role: 'assistant',\n content: `I encountered an error: ${errorMessage}`,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, errorMsg]);\n \n if (onError) {\n onError(toolError instanceof Error ? toolError : new Error(errorMessage));\n }\n }\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Unknown error');\n setError(error);\n \n const errorMessage: ChatMessage = {\n id: `error-${Date.now()}`,\n role: 'assistant',\n content: `Sorry, I encountered an error: ${error.message}`,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, errorMessage]);\n\n if (onError) {\n onError(error);\n }\n } finally {\n setIsLoading(false);\n }\n },\n [api, currentContext, sessionId, onIntentDetected, onError]\n );\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n setSessionId(null);\n setError(null);\n }, []);\n\n const startVoiceInput = useCallback(() => {\n setIsListening(true);\n if (onSpeechStart) {\n onSpeechStart();\n }\n sttProvider.onResult((text: string) => {\n if (onTranscript) {\n onTranscript(text);\n }\n sendChatQuery(text, true); // Pass true to indicate voice input\n setIsListening(false);\n if (onSpeechEnd) {\n onSpeechEnd();\n }\n });\n if (sttProvider.onError) {\n sttProvider.onError((error: Error) => {\n setIsListening(false);\n if (onError) {\n onError(error);\n }\n if (onSpeechEnd) {\n onSpeechEnd();\n }\n });\n }\n sttProvider.startRecognition();\n }, [sttProvider, sendChatQuery, onSpeechStart, onSpeechEnd, onTranscript, onError]);\n\n const stopVoiceInput = useCallback(() => {\n setIsListening(false);\n sttProvider.stopRecognition();\n if (onSpeechEnd) {\n onSpeechEnd();\n }\n }, [sttProvider, onSpeechEnd]);\n\n return {\n messages,\n isLoading,\n sendChatQuery,\n clearMessages,\n error,\n isListening,\n startVoiceInput,\n stopVoiceInput,\n };\n}\n","import React, { useState, useRef, useEffect } from \"react\";\n// Removed import: import { FaMessage } from \"react-icons/fa6\";\nimport { useReactBridge } from \"../hooks/useReactBridge\";\nimport { useReactBridgeContext } from \"../provider/ReactBridgeProvider\";\nimport type {\n OnIntentDetected,\n ChatMessage,\n Theme,\n CurrentContext,\n} from \"../types\";\n\n// --- START: Dependency-Free SVG Message Icon ---\nconst MESSAGE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\" // Use 1em so it scales with font-size\n height=\"1em\"\n fill=\"currentColor\"\n // Simple speech bubble shape\n >\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z\" />\n </svg>\n);\n// --- END: Dependency-Free SVG Message Icon ---\n\n// Microphone Icon SVG\nconst MIC_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\" />\n </svg>\n);\n\n// Plus Icon SVG\nconst PLUS_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n);\n\n// Photo Icon SVG\nconst PHOTO_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\" />\n </svg>\n);\n\n// File Icon SVG\nconst FILE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z\" />\n </svg>\n);\n\n// Typing Indicator Component\nconst TypingIndicator = ({ theme }: { theme: any }) => (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"flex-start\",\n marginBottom: theme.spacing.md,\n paddingLeft: theme.spacing.md,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"4px\",\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n maxWidth: \"70%\",\n }}\n >\n <div\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n backgroundColor: theme.colors.primary,\n animation: \"typing-dot 1.4s infinite ease-in-out\",\n animationDelay: \"0s\",\n }}\n />\n <div\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n backgroundColor: theme.colors.primary,\n animation: \"typing-dot 1.4s infinite ease-in-out\",\n animationDelay: \"0.2s\",\n }}\n />\n <div\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n backgroundColor: theme.colors.primary,\n animation: \"typing-dot 1.4s infinite ease-in-out\",\n animationDelay: \"0.4s\",\n }}\n />\n <style>\n {`\n @keyframes typing-dot {\n 0%, 60%, 100% {\n transform: translateY(0);\n opacity: 0.4;\n }\n 30% {\n transform: translateY(-10px);\n opacity: 1;\n }\n }\n `}\n </style>\n </div>\n </div>\n);\n\n// Default styling constants for the widget wrapper\nconst defaultToggleButtonClass =\n \"fixed bottom-6 right-6 z-40 w-14 h-14 rounded-full shadow-lg text-white bg-blue-600 hover:bg-blue-700 transition-all flex justify-center items-center cursor-pointer text-2xl\";\n\nexport interface ReactBridgeChatboxProps {\n // --- Existing Core Props ---\n onIntentDetected: OnIntentDetected;\n currentContext: CurrentContext;\n placeholder?: string;\n // NOTE: height/width now refer to the widget container size in 'standard' mode\n height?: string;\n width?: string;\n theme?: Partial<Theme>;\n renderMessage?: (message: ChatMessage) => React.ReactNode;\n onError?: (error: Error) => void;\n\n // --- Voice Event Props ---\n onSpeechStart?: () => void;\n onSpeechEnd?: () => void;\n onTranscript?: (text: string) => void;\n onAgentResponse?: (response: string) => void;\n\n // --- NEW Widget Props ---\n renderMode?: \"standard\" | \"basic\";\n defaultOpen?: boolean;\n boxLocation?: \"bottom-right\" | \"bottom-left\";\n\n // Header/Title Customization\n titleText?: string;\n titleIcon?: React.ReactNode; // Component or element for the icon\n titleTextColor?: string;\n headerBgColor?: string;\n\n // Toggle Button Customization\n toggleIcon?: React.ReactNode;\n toggleButtonClass?: string;\n toggleButtonTitle?: string;\n}\n\nexport function ReactBridgeChatbox({\n onIntentDetected,\n currentContext,\n placeholder = \"Type your message...\",\n height = \"500px\",\n width = \"100%\",\n theme: themeOverride,\n renderMessage,\n onError,\n\n // Voice Event Props\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n\n // NEW Widget Props\n renderMode = \"basic\", // Default to 'basic' (original behavior)\n defaultOpen = false,\n boxLocation = \"bottom-right\",\n titleText = \"AI Assistant\",\n titleIcon = null,\n titleTextColor, // Will use theme.colors.text or default white based on headerBgColor\n headerBgColor, // Will use theme.colors.primary if not set\n\n toggleIcon = MESSAGE_ICON_SVG, // <<< NOW USES THE PURE SVG CONSTANT\n toggleButtonClass = defaultToggleButtonClass,\n toggleButtonTitle = \"Open chat assistant\",\n}: ReactBridgeChatboxProps) {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = { ...contextTheme, ...themeOverride };\n\n const {\n messages,\n isLoading,\n sendChatQuery,\n isListening,\n startVoiceInput,\n stopVoiceInput,\n } = useReactBridge({\n onIntentDetected,\n currentContext,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n });\n\n const [inputValue, setInputValue] = useState(\"\");\n // New: Manage widget open/closed state\n const [isOpen, setIsOpen] = useState(defaultOpen);\n // Upload functionality state\n const [isUploadMenuOpen, setIsUploadMenuOpen] = useState(false);\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [filePreview, setFilePreview] = useState<{\n type: \"image\" | \"document\";\n url?: string;\n name: string;\n } | null>(null);\n\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Fallback styles for header\n const finalHeaderBgColor = headerBgColor || theme.colors.primary;\n const finalTitleTextColor = titleTextColor || \"#ffffff\"; // Default to white for contrast\n\n // Auto-scroll to bottom when new messages arrive\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n // Close upload menu and widget when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsUploadMenuOpen(false);\n if (isOpen) {\n setIsOpen(false);\n }\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isUploadMenuOpen, isOpen]);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if ((!inputValue.trim() && !selectedFile) || isLoading) return;\n\n const query = inputValue.trim();\n setInputValue(\"\");\n\n // Handle multimodal request\n if (selectedFile && filePreview) {\n if (filePreview.type === \"image\") {\n await sendChatQuery({ image: selectedFile, query });\n } else if (filePreview.type === \"document\") {\n await sendChatQuery({ document: selectedFile, query });\n }\n } else {\n await sendChatQuery(query);\n }\n\n // Clear file selection after sending\n setSelectedFile(null);\n setFilePreview(null);\n };\n\n // File validation and handling\n const validateAndSetFile = (file: File, type: \"image\" | \"document\") => {\n const imageTypes = [\"image/png\", \"image/jpeg\", \"image/jpg\", \"image/webp\"];\n const documentTypes = [\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"text/plain\",\n ];\n\n const allowedTypes = type === \"image\" ? imageTypes : documentTypes;\n\n if (!allowedTypes.includes(file.type)) {\n if (onError) {\n onError(\n new Error(`Invalid file type. Please select a valid ${type} file.`)\n );\n }\n return false;\n }\n\n setSelectedFile(file);\n\n if (type === \"image\") {\n const url = URL.createObjectURL(file);\n setFilePreview({ type: \"image\", url, name: file.name });\n } else {\n setFilePreview({ type: \"document\", name: file.name });\n }\n\n setIsUploadMenuOpen(false);\n return true;\n };\n\n const handleFileSelect = (type: \"image\" | \"document\") => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept =\n type === \"image\"\n ? \"image/png,image/jpeg,image/jpg,image/webp\"\n : \"application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,text/plain\";\n\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (file) {\n validateAndSetFile(file, type);\n }\n };\n\n input.click();\n };\n\n const removeFile = () => {\n if (filePreview?.url) {\n URL.revokeObjectURL(filePreview.url);\n }\n setSelectedFile(null);\n setFilePreview(null);\n };\n\n const defaultRenderMessage = (message: ChatMessage) => {\n const isUser = message.role === \"user\";\n const isSystem = message.role === \"system\";\n\n // Don't render system messages in UI\n if (isSystem) return null;\n\n return (\n <div\n key={message.id}\n style={{\n display: \"flex\",\n justifyContent: isUser ? \"flex-end\" : \"flex-start\",\n marginBottom: theme.spacing.md,\n }}\n >\n <div\n style={{\n maxWidth: \"70%\",\n padding: theme.spacing.md,\n borderRadius: theme.borderRadius,\n backgroundColor: isUser\n ? theme.colors.primary\n : theme.colors.surface,\n color: isUser ? \"#ffffff\" : theme.colors.text,\n fontSize: theme.fontSizes.md,\n boxShadow: theme.boxShadow,\n }}\n >\n {message.content}\n </div>\n </div>\n );\n };\n\n // --- RENDER LOGIC FOR 'BASIC' MODE (Original Behavior) ---\n if (renderMode === \"basic\") {\n // Renders the chat component only, using the height/width props directly\n return (\n <div\n ref={containerRef}\n style={{\n width,\n height,\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n overflow: \"hidden\",\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n }}\n >\n {/* Messages Container (basic) */}\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: theme.spacing.md,\n }}\n >\n {messages.map((message) =>\n renderMessage\n ? renderMessage(message)\n : defaultRenderMessage(message)\n )}\n {isLoading && <TypingIndicator theme={theme} />}\n <div ref={messagesEndRef} />\n </div>\n\n {/* Input Form (basic) */}\n <form\n onSubmit={handleSubmit}\n style={{\n padding: theme.spacing.md,\n borderTop: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.surface,\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: theme.spacing.sm,\n alignItems: \"center\",\n }}\n >\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={isLoading}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n fontSize: theme.fontSizes.md,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n outline: \"none\",\n }}\n />\n\n {/* Plus button for uploads */}\n <button\n type=\"button\"\n onClick={() => setIsUploadMenuOpen(!isUploadMenuOpen)}\n disabled={isLoading}\n title=\"Attach file\"\n style={{\n padding: theme.spacing.sm,\n paddingRight: 0,\n color: theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {PLUS_ICON_SVG}\n </button>\n\n {/* Upload menu dropdown */}\n {isUploadMenuOpen && (\n <div\n style={{\n position: \"absolute\",\n bottom: \"60px\",\n right: \"10px\",\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n zIndex: 1000,\n minWidth: \"150px\",\n }}\n >\n <button\n onClick={() => handleFileSelect(\"image\")}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `${theme.borderRadius} ${theme.borderRadius} 0 0`,\n }}\n >\n {PHOTO_ICON_SVG}\n Upload Image\n </button>\n <button\n onClick={() => handleFileSelect(\"document\")}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `0 0 ${theme.borderRadius} ${theme.borderRadius}`,\n borderTop: `1px solid ${theme.colors.border}`,\n }}\n >\n {FILE_ICON_SVG}\n Upload Document\n </button>\n </div>\n )}\n\n <button\n type=\"button\"\n onClick={isListening ? stopVoiceInput : startVoiceInput}\n disabled={isLoading}\n title={isListening ? \"Stop recording\" : \"Start voice input\"}\n style={{\n padding: theme.spacing.sm,\n paddingLeft: 0,\n paddingRight: 0,\n color: isListening ? theme.colors.primary : theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {MIC_ICON_SVG}\n </button>\n <button\n type=\"submit\"\n disabled={isLoading || (!inputValue.trim() && !selectedFile)}\n style={{\n padding: `${theme.spacing.sm} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.md,\n backgroundColor: theme.colors.primary,\n color: \"#ffffff\",\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor:\n isLoading || (!inputValue.trim() && !selectedFile)\n ? \"not-allowed\"\n : \"pointer\",\n opacity:\n isLoading || (!inputValue.trim() && !selectedFile) ? 0.5 : 1,\n }}\n >\n {isLoading ? \"Sending...\" : \"Send\"}\n </button>\n </div>\n\n {/* File preview */}\n {filePreview && (\n <div\n style={{\n marginTop: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n }}\n >\n {filePreview.type === \"image\" && filePreview.url ? (\n <img\n src={filePreview.url}\n alt=\"Preview\"\n style={{\n width: \"40px\",\n height: \"40px\",\n objectFit: \"cover\",\n borderRadius: theme.borderRadius,\n }}\n />\n ) : (\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n backgroundColor: theme.colors.secondary,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {FILE_ICON_SVG}\n </div>\n )}\n <div\n style={{\n flex: 1,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n }}\n >\n {filePreview.name}\n </div>\n <button\n type=\"button\"\n onClick={removeFile}\n style={{\n padding: \"4px\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: theme.colors.error,\n cursor: \"pointer\",\n fontSize: \"18px\",\n }}\n title=\"Remove file\"\n >\n ×\n </button>\n </div>\n )}\n </form>\n </div>\n );\n }\n\n // --- RENDER LOGIC FOR 'STANDARD' MODE (Widget Behavior) ---\n\n // Determine fixed positioning class for the widget\n const widgetPositionClass =\n boxLocation === \"bottom-right\"\n ? { bottom: \"24px\", right: \"24px\" }\n : { bottom: \"24px\", left: \"24px\" };\n\n // Determine fixed positioning class for the toggle button\n const togglePositionClass =\n boxLocation === \"bottom-right\"\n ? { bottom: \"24px\", right: \"24px\" }\n : { bottom: \"24px\", left: \"24px\" };\n\n if (!isOpen) {\n // Render the toggle button when closed\n return (\n <button\n className={toggleButtonClass}\n onClick={() => setIsOpen(true)}\n title={toggleButtonTitle}\n style={{\n // Apply widget-specific fixed positioning\n position: \"fixed\",\n zIndex: 40,\n ...togglePositionClass,\n backgroundColor: finalHeaderBgColor,\n // Use default styling if the user didn't override the entire class\n ...(toggleButtonClass === defaultToggleButtonClass && {\n width: \"56px\",\n height: \"56px\",\n borderRadius: \"50%\",\n boxShadow: \"0 4px 6px rgba(0, 0, 0, 0.1)\",\n }),\n }}\n >\n {toggleIcon}\n </button>\n );\n }\n\n // Render the full widget when open\n return (\n <div\n ref={containerRef}\n style={{\n width: width,\n height: height,\n display: \"flex\",\n flexDirection: \"column\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.15)\",\n borderRadius: theme.borderRadius,\n overflow: \"hidden\",\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n position: \"fixed\",\n zIndex: 50,\n ...widgetPositionClass,\n }}\n >\n {/* 1. Header (Title Bar) */}\n <div\n style={{\n padding: \"10px 15px\",\n backgroundColor: finalHeaderBgColor,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n color: finalTitleTextColor,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n fontSize: theme.fontSizes.md,\n }}\n >\n {/* Title Icon */}\n {titleIcon && (\n <span\n style={{\n marginRight: theme.spacing.sm,\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {titleIcon}\n </span>\n )}\n {/* Title Text */}\n {titleText}\n </div>\n\n {/* Close Button */}\n <button\n onClick={() => setIsOpen(false)}\n style={{\n background: \"none\",\n border: \"none\",\n color: finalTitleTextColor,\n fontSize: theme.fontSizes.xl, // Use a larger font for the 'X'\n cursor: \"pointer\",\n padding: \"0 5px\",\n lineHeight: 1,\n }}\n >\n ×\n </button>\n </div>\n\n {/* 2. Messages Container (Chat Body) */}\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: theme.spacing.md,\n backgroundColor: theme.colors.background,\n }}\n >\n {messages.map((message) =>\n renderMessage ? renderMessage(message) : defaultRenderMessage(message)\n )}\n {isLoading && <TypingIndicator theme={theme} />}\n <div ref={messagesEndRef} />\n </div>\n\n {/* 3. Input Form */}\n <form\n onSubmit={handleSubmit}\n style={{\n padding: theme.spacing.md,\n borderTop: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.surface,\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: theme.spacing.sm,\n alignItems: \"center\",\n }}\n >\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={isLoading}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n fontSize: theme.fontSizes.md,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n outline: \"none\",\n }}\n />\n\n {/* Plus button for uploads */}\n <button\n type=\"button\"\n onClick={() => setIsUploadMenuOpen(!isUploadMenuOpen)}\n disabled={isLoading}\n title=\"Attach file\"\n style={{\n padding: theme.spacing.sm,\n paddingRight: 0,\n color: theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {PLUS_ICON_SVG}\n </button>\n\n {/* Upload menu dropdown */}\n {isUploadMenuOpen && (\n <div\n style={{\n position: \"absolute\",\n bottom: \"60px\",\n right: \"10px\",\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n zIndex: 1000,\n minWidth: \"150px\",\n }}\n >\n <button\n onClick={(e) => {\n e.preventDefault();\n handleFileSelect(\"image\");\n }}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `${theme.borderRadius} ${theme.borderRadius} 0 0`,\n }}\n >\n {PHOTO_ICON_SVG}\n Upload Image\n </button>\n <button\n onClick={(e) => {\n e.preventDefault();\n handleFileSelect(\"document\");\n }}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `0 0 ${theme.borderRadius} ${theme.borderRadius}`,\n borderTop: `1px solid ${theme.colors.border}`,\n }}\n >\n {FILE_ICON_SVG}\n Upload Document\n </button>\n </div>\n )}\n\n <button\n type=\"button\"\n onClick={isListening ? stopVoiceInput : startVoiceInput}\n disabled={isLoading}\n title={isListening ? \"Stop recording\" : \"Start voice input\"}\n style={{\n padding: theme.spacing.sm,\n paddingLeft: 0,\n paddingRight: 0,\n color: isListening ? theme.colors.primary : theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {MIC_ICON_SVG}\n </button>\n <button\n type=\"submit\"\n disabled={isLoading || (!inputValue.trim() && !selectedFile)}\n style={{\n padding: `${theme.spacing.sm} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.md,\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor:\n isLoading || (!inputValue.trim() && !selectedFile)\n ? \"not-allowed\"\n : \"pointer\",\n opacity:\n isLoading || (!inputValue.trim() && !selectedFile) ? 0.5 : 1,\n }}\n >\n {isLoading ? \"Sending...\" : \"Send\"}\n </button>\n </div>\n\n {/* File preview */}\n {filePreview && (\n <div\n style={{\n marginTop: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n }}\n >\n {filePreview.type === \"image\" && filePreview.url ? (\n <img\n src={filePreview.url}\n alt=\"Preview\"\n style={{\n width: \"40px\",\n height: \"40px\",\n objectFit: \"cover\",\n borderRadius: theme.borderRadius,\n }}\n />\n ) : (\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n backgroundColor: theme.colors.secondary,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {FILE_ICON_SVG}\n </div>\n )}\n <div\n style={{\n flex: 1,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n }}\n >\n {filePreview.name}\n </div>\n <button\n type=\"button\"\n onClick={removeFile}\n style={{\n padding: \"4px\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: theme.colors.error,\n cursor: \"pointer\",\n fontSize: \"18px\",\n }}\n title=\"Remove file\"\n >\n ×\n </button>\n </div>\n )}\n </form>\n </div>\n );\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport { useReactBridge } from '../hooks/useReactBridge';\nimport { useReactBridgeContext } from '../provider/ReactBridgeProvider';\nimport type { OnIntentDetected, InterfaceState, Theme, CurrentContext } from '../types';\n\n// Microphone Icon SVG\nconst MIC_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\"/>\n </svg>\n);\n\n// Plus Icon SVG\nconst PLUS_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"/>\n </svg>\n);\n\nexport interface ReactBridgeSearchProps {\n onIntentDetected: OnIntentDetected;\n currentContext: CurrentContext;\n placeholder?: string;\n width?: string;\n maxResults?: number;\n theme?: Partial<Theme>;\n onError?: (error: Error) => void;\n onSpeechStart?: () => void;\n onSpeechEnd?: () => void;\n onTranscript?: (text: string) => void;\n onAgentResponse?: (response: string) => void;\n}\n\nexport function ReactBridgeSearch({\n onIntentDetected,\n currentContext,\n placeholder = 'Search...',\n width = '100%',\n maxResults = 5,\n theme: themeOverride,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n}: ReactBridgeSearchProps) {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = { ...contextTheme, ...themeOverride };\n \n const { messages, isLoading, sendChatQuery, isListening, startVoiceInput, stopVoiceInput } = useReactBridge({\n onIntentDetected,\n currentContext,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n });\n\n const [inputValue, setInputValue] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const [isUploadMenuOpen, setIsUploadMenuOpen] = useState(false);\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [filePreview, setFilePreview] = useState<string | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // Close dropdown and upload menu when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setIsUploadMenuOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n // Open dropdown when there are messages\n useEffect(() => {\n if (messages.length > 0) {\n setIsOpen(true);\n }\n }, [messages]);\n\n const handleFileSelect = (type: 'image' | 'document') => {\n if (fileInputRef.current) {\n fileInputRef.current.accept = type === 'image' \n ? 'image/png,image/jpeg,image/jpg,image/webp' \n : 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,text/plain';\n fileInputRef.current.click();\n }\n setIsUploadMenuOpen(false);\n };\n\n const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n // Validate file type\n const imageTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/webp'];\n const documentTypes = ['application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'text/plain'];\n \n const allowedTypes = file.type.startsWith('image/') ? imageTypes : documentTypes;\n \n if (!allowedTypes.includes(file.type)) {\n if (onError) {\n onError(new Error(`Invalid file type. Please select a valid ${file.type.startsWith('image/') ? 'image' : 'document'} file.`));\n }\n return;\n }\n\n // Validate file size (10MB limit)\n const maxSize = 10 * 1024 * 1024; // 10MB\n if (file.size > maxSize) {\n if (onError) {\n onError(new Error('File size too large. Please select a file smaller than 10MB.'));\n }\n return;\n }\n\n setSelectedFile(file);\n \n // Create preview for images\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = (e) => {\n setFilePreview(e.target?.result as string);\n };\n reader.readAsDataURL(file);\n } else {\n // For documents, show file name\n setFilePreview(file.name);\n }\n };\n\n const removeFile = () => {\n setSelectedFile(null);\n setFilePreview(null);\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if ((!inputValue.trim() && !selectedFile) || isLoading) return;\n\n const query = inputValue.trim();\n setInputValue('');\n \n // Handle multimodal request\n if (selectedFile && filePreview) {\n await sendChatQuery({\n query,\n image: selectedFile.type.startsWith('image/') ? selectedFile : undefined,\n document: selectedFile.type.startsWith('image/') ? undefined : selectedFile,\n });\n removeFile();\n } else {\n await sendChatQuery(query);\n }\n };\n\n // Get only assistant messages (not system messages)\n const displayMessages = messages\n .filter((msg) => msg.role === 'assistant')\n .slice(-maxResults);\n\n return (\n <div\n ref={containerRef}\n style={{\n position: 'relative',\n width,\n fontFamily: 'system-ui, -apple-system, sans-serif',\n }}\n >\n {/* Search Input */}\n <form onSubmit={handleSubmit}>\n <div style={{ position: 'relative' }}>\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileChange}\n style={{ display: 'none' }}\n />\n\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onFocus={() => displayMessages.length > 0 && setIsOpen(true)}\n placeholder={selectedFile ? `Search with ${selectedFile.name}...` : placeholder}\n disabled={isLoading}\n style={{\n width: '100%',\n padding: theme.spacing.md,\n paddingRight: '180px', // Increased to make room for plus, mic, and search buttons\n fontSize: theme.fontSizes.md,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n outline: 'none',\n boxSizing: 'border-box',\n }}\n />\n\n {/* Plus button for uploads */}\n <button\n type=\"button\"\n onClick={() => setIsUploadMenuOpen(!isUploadMenuOpen)}\n disabled={isLoading}\n title=\"Upload file\"\n style={{\n position: 'absolute',\n right: '105px', // Position before the mic button\n top: '50%',\n transform: 'translateY(-50%)',\n padding: theme.spacing.sm,\n marginRight: theme.spacing.xs,\n color: theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"32px\",\n height: \"32px\",\n }}\n >\n {PLUS_ICON_SVG}\n </button>\n\n {/* Upload menu */}\n {isUploadMenuOpen && (\n <div\n style={{\n position: 'absolute',\n right: '105px',\n top: '100%',\n marginTop: theme.spacing.xs,\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n zIndex: 1000,\n minWidth: '120px',\n }}\n >\n <button\n type=\"button\"\n onClick={() => handleFileSelect('image')}\n style={{\n width: '100%',\n padding: theme.spacing.sm,\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.colors.text,\n cursor: 'pointer',\n textAlign: 'left',\n fontSize: theme.fontSizes.sm,\n }}\n >\n 📷 Image\n </button>\n <button\n type=\"button\"\n onClick={() => handleFileSelect('document')}\n style={{\n width: '100%',\n padding: theme.spacing.sm,\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.colors.text,\n cursor: 'pointer',\n textAlign: 'left',\n fontSize: theme.fontSizes.sm,\n }}\n >\n 📄 Document\n </button>\n </div>\n )}\n\n <button\n type=\"button\"\n onClick={isListening ? stopVoiceInput : startVoiceInput}\n disabled={isLoading}\n title={isListening ? \"Stop recording\" : \"Start voice input\"}\n style={{\n position: 'absolute',\n right: '70px', // Position before the search button\n top: '50%',\n transform: 'translateY(-50%)',\n padding: theme.spacing.sm,\n marginRight: theme.spacing.xs,\n color: isListening ? theme.colors.primary : theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"32px\",\n height: \"32px\",\n }}\n >\n {MIC_ICON_SVG}\n </button>\n <button\n type=\"submit\"\n disabled={isLoading || (!inputValue.trim() && !selectedFile)}\n style={{\n position: 'absolute',\n right: theme.spacing.sm,\n top: '50%',\n transform: 'translateY(-50%)',\n padding: `${theme.spacing.xs} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.sm,\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: isLoading || (!inputValue.trim() && !selectedFile) ? 'not-allowed' : 'pointer',\n opacity: isLoading || (!inputValue.trim() && !selectedFile) ? 0.5 : 1,\n }}\n >\n {isLoading ? 'Searching...' : 'Search'}\n </button>\n </div>\n\n {/* File Preview */}\n {selectedFile && filePreview && (\n <div\n style={{\n marginTop: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing.sm,\n }}\n >\n {selectedFile.type.startsWith('image/') ? (\n <img\n src={filePreview}\n alt=\"Preview\"\n style={{\n width: '40px',\n height: '40px',\n objectFit: 'cover',\n borderRadius: theme.borderRadius,\n }}\n />\n ) : (\n <div\n style={{\n width: '40px',\n height: '40px',\n backgroundColor: theme.colors.primary,\n borderRadius: theme.borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.background,\n fontSize: theme.fontSizes.lg,\n }}\n >\n 📄\n </div>\n )}\n <div style={{ flex: 1, fontSize: theme.fontSizes.sm, color: theme.colors.text }}>\n <div style={{ fontWeight: 'bold' }}>{selectedFile.name}</div>\n <div style={{ color: theme.colors.textSecondary }}>\n {(selectedFile.size / 1024 / 1024).toFixed(2)} MB\n </div>\n </div>\n <button\n type=\"button\"\n onClick={removeFile}\n style={{\n padding: theme.spacing.xs,\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n borderRadius: theme.borderRadius,\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '18px',\n }}\n title=\"Remove file\"\n >\n ×\n </button>\n </div>\n )}\n </form>\n\n {/* Results Dropdown */}\n {isOpen && displayMessages.length > 0 && (\n <div\n style={{\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n marginTop: theme.spacing.xs,\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n maxHeight: '300px',\n overflowY: 'auto',\n zIndex: 1000,\n }}\n >\n {displayMessages.map((message) => (\n <div\n key={message.id}\n style={{\n padding: theme.spacing.md,\n borderBottom: `1px solid ${theme.colors.border}`,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n cursor: 'pointer',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.surface;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.background;\n }}\n >\n {message.content}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","import type { Theme } from '../types';\n\nexport const darkTheme: Theme = {\n name: 'dark',\n colors: {\n primary: '#90caf9',\n secondary: '#f48fb1',\n background: '#121212',\n surface: '#1e1e1e',\n text: '#ffffff',\n textSecondary: '#b0b0b0',\n border: '#333333',\n error: '#f44336',\n success: '#4caf50',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '24px',\n },\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.5)',\n};\n","import type { Theme, ThemeMode } from '../types';\nimport { lightTheme } from './light';\nimport { darkTheme } from './dark';\n\nexport { lightTheme, darkTheme };\n\nexport function getTheme(mode: ThemeMode, customTheme?: Theme): Theme {\n if (mode === 'custom' && customTheme) {\n return customTheme;\n }\n return mode === 'dark' ? darkTheme : lightTheme;\n}\n\nexport function createCustomTheme(baseTheme: Theme, overrides: Partial<Theme>): Theme {\n return {\n ...baseTheme,\n ...overrides,\n colors: {\n ...baseTheme.colors,\n ...(overrides.colors || {}),\n },\n spacing: {\n ...baseTheme.spacing,\n ...(overrides.spacing || {}),\n },\n fontSizes: {\n ...baseTheme.fontSizes,\n ...(overrides.fontSizes || {}),\n },\n };\n}\n","import type { ReactBridgeConfig } from '../types';\nimport type { AnalyticsConfig, AnalyticsResult } from '../types/analytics';\n\nconst DEFAULT_BASE_URL = 'https://react-bridge-api-14089992360.northamerica-northeast2.run.app';\n\nexport class AnalyticsAPI {\n private config: ReactBridgeConfig;\n\n constructor(config: ReactBridgeConfig) {\n this.config = config;\n }\n\n /**\n * Fetch all analytics configurations for the client\n */\n async getConfigs(): Promise<AnalyticsConfig[]> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/client/analytics/configs`;\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-API-Key': this.config.apiKey,\n ...this.config.headers,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch analytics configs: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Fetch the latest analytics result for a specific type\n */\n async getLatestResult(analyticsType: string): Promise<AnalyticsResult> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/analytics/${analyticsType}/latest`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'X-API-Key': this.config.apiKey,\n 'Content-Type': 'application/json',\n ...this.config.headers,\n },\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error(`No results found for analytics type: ${analyticsType}`);\n }\n throw new Error(`Failed to fetch analytics result: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Update directive status (executed, declined, failed)\n */\n async updateDirectiveStatus(\n directiveId: string,\n status: 'proposed' | 'executed' | 'declined' | 'failed'\n ): Promise<{ directiveId: string; status: string; updatedAt: string }> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/analytics/directives/${directiveId}/status`;\n\n const response = await fetch(url, {\n method: 'PATCH',\n headers: {\n 'X-API-Key': this.config.apiKey,\n 'Content-Type': 'application/json',\n ...this.config.headers,\n },\n body: JSON.stringify({ status }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to update directive status: ${response.statusText}`);\n }\n\n return response.json();\n }\n}\n","import { useState, useEffect } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { AnalyticsAPI } from '../../utils/analytics-api';\nimport type { AnalyticsConfig } from '../../types/analytics';\n\nexport function useAnalyticsConfigs() {\n const { config } = useReactBridgeContext();\n const [configs, setConfigs] = useState<AnalyticsConfig[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchConfigs = async () => {\n try {\n setIsLoading(true);\n setError(null);\n const api = new AnalyticsAPI(config);\n const data = await api.getConfigs();\n setConfigs(data);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n fetchConfigs();\n }, [config]);\n\n return {\n configs,\n isLoading,\n error,\n refetch: fetchConfigs,\n };\n}\n","import { useState, useEffect } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { AnalyticsAPI } from '../../utils/analytics-api';\nimport type { AnalyticsResult } from '../../types/analytics';\n\nexport function useAnalyticsResult(analyticsType: string | null) {\n const { config } = useReactBridgeContext();\n const [result, setResult] = useState<AnalyticsResult | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchResult = async () => {\n if (!analyticsType) return;\n\n try {\n setIsLoading(true);\n setError(null);\n const api = new AnalyticsAPI(config);\n const data = await api.getLatestResult(analyticsType);\n setResult(data);\n } catch (err) {\n setError(err as Error);\n setResult(null);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n fetchResult();\n }, [analyticsType, config]);\n\n return {\n result,\n isLoading,\n error,\n refetch: fetchResult,\n };\n}\n","import React from 'react';\nimport type { Theme } from '../../types';\nimport type { AnalyticsMetric } from '../../types/analytics';\n\nexport interface MetricsPanelProps {\n metrics: AnalyticsMetric[];\n theme: Theme;\n}\n\nexport const MetricsPanel: React.FC<MetricsPanelProps> = ({ metrics, theme }) => {\n const getStatusColor = (status: string) => {\n switch (status) {\n case 'ok':\n return theme.colors.success;\n case 'warning':\n return '#FFA500'; // Orange\n case 'critical':\n return theme.colors.error;\n default:\n return theme.colors.textSecondary;\n }\n };\n\n return (\n <div>\n <h3\n style={{\n margin: 0,\n marginBottom: theme.spacing.md,\n fontSize: theme.fontSizes.lg,\n color: theme.colors.text,\n }}\n >\n Metrics\n </h3>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))',\n gap: theme.spacing.md,\n }}\n >\n {metrics.map((metric, index) => (\n <div\n key={index}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `2px solid ${getStatusColor(metric.status)}`,\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.xs,\n }}\n >\n <span\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}\n >\n {metric.name.replace(/_/g, ' ')}\n </span>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: getStatusColor(metric.status),\n color: '#fff',\n textTransform: 'uppercase',\n }}\n >\n {metric.status}\n </span>\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.xl,\n fontWeight: 'bold',\n color: theme.colors.text,\n marginBottom: theme.spacing.xs,\n }}\n >\n {metric.value} {metric.unit}\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n }}\n >\n {metric.explanation}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport type { Theme } from '../../types';\nimport type { AnalyticsObservation } from '../../types/analytics';\n\nexport interface ObservationsPanelProps {\n observations: AnalyticsObservation[];\n theme: Theme;\n}\n\nexport const ObservationsPanel: React.FC<ObservationsPanelProps> = ({\n observations,\n theme,\n}) => {\n const getSeverityColor = (severity: string) => {\n switch (severity) {\n case 'low':\n return theme.colors.success;\n case 'medium':\n return '#FFA500'; // Orange\n case 'high':\n return theme.colors.error;\n default:\n return theme.colors.textSecondary;\n }\n };\n\n return (\n <div>\n <h3\n style={{\n margin: 0,\n marginBottom: theme.spacing.md,\n fontSize: theme.fontSizes.lg,\n color: theme.colors.text,\n }}\n >\n Observations\n </h3>\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.md }}>\n {observations.map((observation, index) => (\n <div\n key={index}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n borderLeft: `4px solid ${getSeverityColor(observation.severity)}`,\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.xs,\n }}\n >\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: getSeverityColor(observation.severity),\n color: '#fff',\n textTransform: 'uppercase',\n }}\n >\n {observation.severity}\n </span>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n color: theme.colors.textSecondary,\n }}\n >\n {observation.scope}\n </span>\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.md,\n color: theme.colors.text,\n lineHeight: '1.5',\n }}\n >\n {observation.text}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import { useState } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { AnalyticsAPI } from '../../utils/analytics-api';\nimport type { AnalyticsDirective, DirectiveActionResult } from '../../types/analytics';\n\nexport function useDirectiveAction(\n onDirectiveAction?: (\n directive: AnalyticsDirective,\n action: 'execute' | 'decline'\n ) => Promise<DirectiveActionResult>\n) {\n const { config } = useReactBridgeContext();\n const [isProcessing, setIsProcessing] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const handleAction = async (\n directive: AnalyticsDirective,\n action: 'execute' | 'decline'\n ): Promise<DirectiveActionResult> => {\n try {\n setIsProcessing(true);\n setError(null);\n\n const api = new AnalyticsAPI(config);\n\n // If onDirectiveAction callback is provided, execute it first\n if (onDirectiveAction) {\n const result = await onDirectiveAction(directive, action);\n\n if (result.success) {\n // Update status to 'executed' if action succeeded\n await api.updateDirectiveStatus(directive.directiveId, 'executed');\n } else {\n // Update status to 'failed' if action failed\n await api.updateDirectiveStatus(directive.directiveId, 'failed');\n throw new Error(result.error || 'Directive execution failed');\n }\n\n return { success: true };\n } else {\n // No callback provided, just update status to 'declined'\n if (action === 'decline') {\n await api.updateDirectiveStatus(directive.directiveId, 'declined');\n }\n\n return { success: true };\n }\n } catch (err) {\n setError(err as Error);\n return { success: false, error: (err as Error).message };\n } finally {\n setIsProcessing(false);\n }\n };\n\n return {\n handleAction,\n isProcessing,\n error,\n };\n}\n","import React, { useState } from 'react';\nimport { useDirectiveAction } from '../../hooks/analytics/useDirectiveAction';\nimport type { Theme } from '../../types';\nimport type { AnalyticsDirective, OnDirectiveAction } from '../../types/analytics';\n\nexport interface DirectivesPanelProps {\n directives: AnalyticsDirective[];\n theme: Theme;\n onDirectiveAction?: OnDirectiveAction;\n onUpdate?: () => void;\n}\n\nexport const DirectivesPanel: React.FC<DirectivesPanelProps> = ({\n directives,\n theme,\n onDirectiveAction,\n onUpdate,\n}) => {\n const { handleAction, isProcessing } = useDirectiveAction(onDirectiveAction);\n const [processingId, setProcessingId] = useState<string | null>(null);\n\n const getPriorityColor = (priority: number) => {\n if (priority >= 3) return theme.colors.error; // High/Critical\n if (priority === 2) return '#FFA500'; // Medium\n return theme.colors.success; // Low\n };\n\n const getPriorityLabel = (priority: number) => {\n if (priority >= 3) return 'Critical';\n if (priority === 2) return 'High';\n if (priority === 1) return 'Medium';\n return 'Low';\n };\n\n const getStatusLabel = (status: string) => {\n switch (status) {\n case 'proposed':\n return 'Pending';\n case 'executed':\n return 'Executed ✓';\n case 'declined':\n return 'Declined';\n case 'failed':\n return 'Failed ✗';\n default:\n return status;\n }\n };\n\n const handleDirectiveAction = async (\n directive: AnalyticsDirective,\n action: 'execute' | 'decline'\n ) => {\n setProcessingId(directive.directiveId);\n await handleAction(directive, action);\n setProcessingId(null);\n if (onUpdate) {\n onUpdate();\n }\n };\n\n return (\n <div>\n <h3\n style={{\n margin: 0,\n marginBottom: theme.spacing.md,\n fontSize: theme.fontSizes.lg,\n color: theme.colors.text,\n }}\n >\n Directives\n </h3>\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.md }}>\n {directives.map((directive) => {\n const isDisabled =\n directive.status !== 'proposed' ||\n isProcessing ||\n processingId === directive.directiveId;\n\n return (\n <div\n key={directive.directiveId}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.sm,\n }}\n >\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: getPriorityColor(directive.priority),\n color: '#fff',\n textTransform: 'uppercase',\n }}\n >\n {getPriorityLabel(directive.priority)}\n </span>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: theme.colors.textSecondary,\n color: '#fff',\n }}\n >\n {getStatusLabel(directive.status)}\n </span>\n </div>\n\n {/* Action */}\n <div\n style={{\n fontSize: theme.fontSizes.lg,\n fontWeight: 'bold',\n color: theme.colors.text,\n marginBottom: theme.spacing.xs,\n }}\n >\n {directive.action.replace(/_/g, ' ').toUpperCase()}\n </div>\n\n {/* Targets */}\n {directive.targets.length > 0 && (\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n marginBottom: theme.spacing.xs,\n }}\n >\n <strong>Targets:</strong> {directive.targets.join(', ')}\n </div>\n )}\n\n {/* Parameters */}\n {directive.parameters.length > 0 && (\n <div\n style={{\n marginBottom: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.background,\n borderRadius: theme.borderRadius,\n }}\n >\n {directive.parameters.map((param, index) => (\n <div\n key={index}\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n marginBottom: '4px',\n }}\n >\n <strong>{param.name}:</strong> {param.value} ({param.valueType})\n </div>\n ))}\n </div>\n )}\n\n {/* Rationale */}\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n marginBottom: theme.spacing.md,\n lineHeight: '1.5',\n }}\n >\n {directive.rationale}\n </div>\n\n {/* Action Buttons */}\n {directive.status === 'proposed' && (\n <div style={{ display: 'flex', gap: theme.spacing.sm }}>\n <button\n onClick={() => handleDirectiveAction(directive, 'execute')}\n disabled={isDisabled}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n backgroundColor: isDisabled\n ? theme.colors.textSecondary\n : theme.colors.success,\n color: '#fff',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n fontSize: theme.fontSizes.sm,\n fontWeight: 'bold',\n opacity: isDisabled ? 0.6 : 1,\n }}\n >\n {processingId === directive.directiveId ? 'Processing...' : 'Execute'}\n </button>\n <button\n onClick={() => handleDirectiveAction(directive, 'decline')}\n disabled={isDisabled}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n backgroundColor: isDisabled\n ? theme.colors.textSecondary\n : theme.colors.error,\n color: '#fff',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n fontSize: theme.fontSizes.sm,\n fontWeight: 'bold',\n opacity: isDisabled ? 0.6 : 1,\n }}\n >\n Decline\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useAnalyticsResult } from '../../hooks/analytics/useAnalyticsResult';\nimport { MetricsPanel } from './MetricsPanel';\nimport { ObservationsPanel } from './ObservationsPanel';\nimport { DirectivesPanel } from './DirectivesPanel';\nimport type { Theme } from '../../types';\nimport type { OnDirectiveAction } from '../../types/analytics';\n\n// Refresh Icon SVG\nconst REFRESH_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n </svg>\n);\n\n// Back Arrow Icon SVG\nconst BACK_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </svg>\n);\n\n// Close Icon SVG\nconst CLOSE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\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\nexport interface AnalyticsReportProps {\n analyticsType: string;\n theme?: Theme;\n onDirectiveAction?: OnDirectiveAction;\n onRefresh?: () => void;\n onBack?: () => void;\n onClose?: () => void;\n}\n\nexport const AnalyticsReport: React.FC<AnalyticsReportProps> = ({\n analyticsType,\n theme: customTheme,\n onDirectiveAction,\n onRefresh,\n onBack,\n onClose,\n}) => {\n const { result, isLoading, error, refetch } = useAnalyticsResult(analyticsType);\n\n const handleRefresh = () => {\n refetch();\n if (onRefresh) {\n onRefresh();\n }\n };\n\n // Use a default theme if none provided\n const theme = customTheme || {\n colors: {\n background: '#ffffff',\n surface: '#f5f5f5',\n text: '#333333',\n textSecondary: '#666666',\n border: '#e0e0e0',\n primary: '#007bff',\n success: '#28a745',\n error: '#dc3545',\n secondary: '#6c757d',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '20px',\n xl: '24px',\n },\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n name: 'default',\n };\n\n return (\n <div\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.colors.background,\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: theme.spacing.lg,\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: theme.spacing.sm }}>\n {onBack && (\n <button\n onClick={onBack}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n }}\n >\n {BACK_ICON_SVG}\n </button>\n )}\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes.xl,\n color: theme.colors.text,\n }}\n >\n {analyticsType}\n </h2>\n {result && (\n <div\n style={{\n fontSize: theme.fontSizes.xs,\n color: theme.colors.textSecondary,\n marginTop: '4px',\n }}\n >\n Last updated: {new Date(result.createdAt).toLocaleString()}\n </div>\n )}\n </div>\n </div>\n <div style={{ display: 'flex', gap: theme.spacing.sm }}>\n <button\n onClick={handleRefresh}\n disabled={isLoading}\n style={{\n background: 'none',\n border: 'none',\n cursor: isLoading ? 'not-allowed' : 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n opacity: isLoading ? 0.5 : 1,\n }}\n >\n {REFRESH_ICON_SVG}\n </button>\n {onClose && (\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n }}\n >\n {CLOSE_ICON_SVG}\n </button>\n )}\n </div>\n </div>\n\n {/* Content */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: theme.spacing.lg,\n }}\n >\n {isLoading ? (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n Loading analytics result...\n </div>\n ) : error ? (\n <div\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.error}`,\n color: theme.colors.error,\n }}\n >\n Error: {error.message}\n </div>\n ) : result ? (\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.xl }}>\n {/* Metrics */}\n {result.metrics.length > 0 && (\n <MetricsPanel metrics={result.metrics} theme={theme} />\n )}\n\n {/* Observations */}\n {result.observations.length > 0 && (\n <ObservationsPanel observations={result.observations} theme={theme} />\n )}\n\n {/* Directives */}\n {result.directives.length > 0 && (\n <DirectivesPanel\n directives={result.directives}\n theme={theme}\n onDirectiveAction={onDirectiveAction}\n onUpdate={refetch}\n />\n )}\n </div>\n ) : (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n No results available\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { AnalyticsReport } from './AnalyticsReport';\nimport type { Theme } from '../../types';\nimport type { AnalyticsConfig, OnDirectiveAction } from '../../types/analytics';\n\n// Close Icon SVG\nconst CLOSE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\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\nexport interface AnalyticsDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n configs: AnalyticsConfig[];\n isLoading: boolean;\n theme: Theme;\n onDirectiveAction?: OnDirectiveAction;\n}\n\nexport const AnalyticsDrawer: React.FC<AnalyticsDrawerProps> = ({\n isOpen,\n onClose,\n configs,\n isLoading,\n theme,\n onDirectiveAction,\n}) => {\n const [selectedAnalytics, setSelectedAnalytics] = useState<string | null>(null);\n\n // Check if mobile\n const isMobile = typeof window !== 'undefined' && window.innerWidth < 768;\n\n const drawerStyles: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n right: 0,\n width: isMobile ? '100%' : '400px',\n height: '100%',\n backgroundColor: theme.colors.background,\n boxShadow: theme.boxShadow,\n zIndex: 1001,\n display: 'flex',\n flexDirection: 'column',\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n transition: 'transform 0.3s ease',\n };\n\n const overlayStyles: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 1000,\n opacity: isOpen ? 1 : 0,\n pointerEvents: isOpen ? 'auto' : 'none',\n transition: 'opacity 0.3s ease',\n };\n\n if (selectedAnalytics) {\n return (\n <>\n <div style={overlayStyles} onClick={onClose} />\n <div style={drawerStyles}>\n <AnalyticsReport\n analyticsType={selectedAnalytics}\n theme={theme}\n onDirectiveAction={onDirectiveAction}\n onBack={() => setSelectedAnalytics(null)}\n onClose={onClose}\n />\n </div>\n </>\n );\n }\n\n return (\n <>\n <div style={overlayStyles} onClick={onClose} />\n <div style={drawerStyles}>\n {/* Header */}\n <div\n style={{\n padding: theme.spacing.lg,\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes.xl,\n color: theme.colors.text,\n }}\n >\n Analytics\n </h2>\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n }}\n >\n {CLOSE_ICON_SVG}\n </button>\n </div>\n\n {/* Content */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: theme.spacing.lg,\n }}\n >\n {isLoading ? (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n Loading analytics...\n </div>\n ) : configs.length === 0 ? (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n No analytics configured\n </div>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.md }}>\n {configs.map((config) => (\n <div\n key={config.configId}\n onClick={() => config.isEnabled && setSelectedAnalytics(config.analyticsType)}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n cursor: config.isEnabled ? 'pointer' : 'not-allowed',\n opacity: config.isEnabled ? 1 : 0.6,\n transition: 'transform 0.2s ease',\n }}\n onMouseEnter={(e) => {\n if (config.isEnabled) {\n e.currentTarget.style.transform = 'translateX(5px)';\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'translateX(0)';\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.xs,\n }}\n >\n <h3\n style={{\n margin: 0,\n fontSize: theme.fontSizes.md,\n color: theme.colors.text,\n }}\n >\n {config.analyticsType}\n </h3>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: config.isEnabled\n ? theme.colors.success\n : theme.colors.textSecondary,\n color: '#fff',\n }}\n >\n {config.isEnabled ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n <p\n style={{\n margin: 0,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n marginBottom: theme.spacing.xs,\n }}\n >\n {config.templateDescription}\n </p>\n <div\n style={{\n fontSize: theme.fontSizes.xs,\n color: theme.colors.textSecondary,\n }}\n >\n <div>Frequency: {config.frequency}</div>\n {config.lastExecutedAt && (\n <div>\n Last run: {new Date(config.lastExecutedAt).toLocaleString()}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </>\n );\n};\n","import React, { useState } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { useAnalyticsConfigs } from '../../hooks/analytics/useAnalyticsConfigs';\nimport { AnalyticsDrawer } from './AnalyticsDrawer';\nimport type { Theme } from '../../types';\nimport type { OnDirectiveAction } from '../../types/analytics';\n\n// Analytics Icon SVG\nconst ANALYTICS_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\" />\n </svg>\n);\n\nexport interface AnalyticsWidgetProps {\n position?: 'bottom-right' | 'bottom-left';\n theme?: Theme;\n onDirectiveAction?: OnDirectiveAction;\n}\n\nexport const AnalyticsWidget: React.FC<AnalyticsWidgetProps> = ({\n position = 'bottom-right',\n theme: customTheme,\n onDirectiveAction,\n}) => {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = customTheme || contextTheme;\n const { configs, isLoading } = useAnalyticsConfigs();\n const [isOpen, setIsOpen] = useState(false);\n\n const enabledCount = configs.filter((c) => c.isEnabled).length;\n\n const positionStyles: React.CSSProperties =\n position === 'bottom-right'\n ? { right: theme.spacing.lg, bottom: theme.spacing.lg }\n : { left: theme.spacing.lg, bottom: theme.spacing.lg };\n\n return (\n <>\n {/* Floating Button */}\n <button\n onClick={() => setIsOpen(!isOpen)}\n style={{\n position: 'fixed',\n ...positionStyles,\n width: '60px',\n height: '60px',\n borderRadius: '50%',\n backgroundColor: theme.colors.primary,\n color: '#fff',\n border: 'none',\n boxShadow: theme.boxShadow,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '24px',\n zIndex: 1000,\n transition: 'transform 0.2s ease',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'scale(1.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n {ANALYTICS_ICON_SVG}\n {!isLoading && enabledCount > 0 && (\n <span\n style={{\n position: 'absolute',\n top: '-5px',\n right: '-5px',\n backgroundColor: theme.colors.error,\n color: '#fff',\n borderRadius: '50%',\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n fontWeight: 'bold',\n }}\n >\n {enabledCount}\n </span>\n )}\n </button>\n\n {/* Drawer */}\n {isOpen && (\n <AnalyticsDrawer\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n configs={configs}\n isLoading={isLoading}\n theme={theme}\n onDirectiveAction={onDirectiveAction}\n />\n )}\n </>\n );\n};\n"],"names":["DEFAULT_BASE_URL","MIC_ICON_SVG","PLUS_ICON_SVG","CLOSE_ICON_SVG"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/api.ts","../src/themes/light.ts","../src/utils/voice.ts","../src/provider/ReactBridgeProvider.tsx","../src/utils/contextDiff.ts","../src/hooks/useReactBridge.ts","../src/components/ReactBridgeChatbox.tsx","../src/components/ReactBridgeSearch.tsx","../src/themes/dark.ts","../src/themes/index.ts","../src/utils/analytics-api.ts","../src/hooks/analytics/useAnalyticsConfigs.ts","../src/hooks/analytics/useAnalyticsResult.ts","../src/components/analytics/MetricsPanel.tsx","../src/components/analytics/ObservationsPanel.tsx","../src/hooks/analytics/useDirectiveAction.ts","../src/components/analytics/DirectivesPanel.tsx","../src/components/analytics/AnalyticsReport.tsx","../src/components/analytics/AnalyticsDrawer.tsx","../src/components/analytics/AnalyticsWidget.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/components/analytics/AnalyticsDashboard.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import type { OrchestratorRequest, OrchestratorResponse, ReactBridgeConfig } from '../types';\n\nconst DEFAULT_BASE_URL = 'https://react-bridge-api-14089992360.northamerica-northeast2.run.app'; // 'http://localhost:5093';\n\nexport class ReactBridgeAPI {\n private config: ReactBridgeConfig;\n\n constructor(config: ReactBridgeConfig) {\n this.config = config;\n }\n\n async sendMessage(request: OrchestratorRequest): Promise<OrchestratorResponse> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/orchestrator/process`;\n\n try {\n // Configure abort signal for fetch with robust fallback.\n // `ReactBridgeConfig.timeout` is milliseconds. If it's undefined, no timeout is applied.\n // If it's 0 or a non-positive number, timeout is disabled.\n const timeoutMs = typeof this.config.timeout === 'number' ? this.config.timeout : undefined;\n\n let controller: AbortController | null = null;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n let signal: AbortSignal | undefined;\n\n if (typeof timeoutMs === 'number' && timeoutMs > 0) {\n // Prefer built-in AbortSignal.timeout when available\n if (typeof (AbortSignal as any).timeout === 'function') {\n signal = (AbortSignal as any).timeout(timeoutMs);\n } else {\n controller = new AbortController();\n signal = controller.signal;\n timeoutId = setTimeout(() => controller!.abort(), timeoutMs);\n }\n }\n\n // Check if this is a multimodal request (has image or document)\n const hasFile = request.image || request.document;\n \n let headers: Record<string, string> = {\n 'X-API-Key': this.config.apiKey,\n ...this.config.headers,\n };\n \n let body: string | FormData;\n\n if (hasFile) {\n // Use FormData for file uploads\n const formData = new FormData();\n \n // Add text fields\n formData.append('userId', request.userId);\n formData.append('query', request.query);\n \n if (request.userName) formData.append('userName', request.userName);\n if (request.userPreferences) formData.append('userPreferences', request.userPreferences);\n if (request.userRecentActivity) formData.append('userRecentActivity', request.userRecentActivity);\n if (request.interfaceState) formData.append(\"InterfaceStateJson\", JSON.stringify(request.interfaceState));\n if (request.sessionId) formData.append('sessionId', request.sessionId);\n if (request.modalityHint) formData.append('modalityHint', request.modalityHint);\n \n // Add files\n if (request.image) formData.append('image', request.image);\n if (request.document) formData.append('document', request.document);\n \n body = formData;\n // Don't set Content-Type for FormData - let browser set it with boundary\n delete headers['Content-Type'];\n } else {\n // Use JSON for text-only requests\n headers['Content-Type'] = 'application/json';\n body = JSON.stringify(request);\n }\n // console.log('Sending request to ReactBridge API:', { url, headers, body, timeoutMs });\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body,\n signal,\n });\n\n // console.log('Received response from ReactBridge API:', response);\n // Clear any manual timeout timer if set\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n if (!response.ok) {\n throw new Error(`API request failed: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n return data as OrchestratorResponse;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`ReactBridge API Error: ${error.message}`);\n }\n throw new Error('ReactBridge API Error: Unknown error occurred');\n }\n }\n\n async sendToolResult(\n sessionId: string,\n toolResult: any,\n originalRequest: OrchestratorRequest\n ): Promise<OrchestratorResponse> {\n // Second API call with tool result\n const request: OrchestratorRequest = {\n ...originalRequest,\n sessionId,\n query: `[Tool Result] ${toolResult.summary}`,\n };\n\n return this.sendMessage(request);\n }\n\n // Helper methods for different request types\n async sendTextRequest(\n userId: string,\n query: string,\n context?: Partial<OrchestratorRequest>\n ): Promise<OrchestratorResponse> {\n const request: OrchestratorRequest = {\n userId,\n query,\n ...context,\n };\n return this.sendMessage(request);\n }\n\n async sendImageRequest(\n userId: string,\n imageFile: File,\n query: string = '',\n context?: Partial<OrchestratorRequest>\n ): Promise<OrchestratorResponse> {\n const request: OrchestratorRequest = {\n userId,\n query,\n image: imageFile,\n modalityHint: 'image',\n ...context,\n };\n return this.sendMessage(request);\n }\n\n async sendDocumentRequest(\n userId: string,\n documentFile: File,\n query: string = '',\n context?: Partial<OrchestratorRequest>\n ): Promise<OrchestratorResponse> {\n const request: OrchestratorRequest = {\n userId,\n query,\n document: documentFile,\n modalityHint: 'document',\n ...context,\n };\n return this.sendMessage(request);\n }\n}\n","import type { Theme } from '../types';\n\nexport const lightTheme: Theme = {\n name: 'light',\n colors: {\n primary: '#1976d2',\n secondary: '#dc004e',\n background: '#ffffff',\n surface: '#f5f5f5',\n text: '#000000',\n textSecondary: '#666666',\n border: '#e0e0e0',\n error: '#f44336',\n success: '#4caf50',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '24px',\n },\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n};\n","// Default STT Provider using Web Speech API\nexport class WebSpeechSTTProvider {\n private recognition?: SpeechRecognition;\n private onResultCallback?: (text: string) => void;\n private onErrorCallback?: (error: Error) => void;\n\n constructor() {\n if (typeof window !== 'undefined') {\n const SpeechRecognitionCtor =\n (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\n\n if (SpeechRecognitionCtor) {\n this.recognition = new SpeechRecognitionCtor();\n if (!this.recognition) {\n throw new Error('Failed to initialize SpeechRecognition');\n }\n this.recognition.continuous = false;\n this.recognition.interimResults = false;\n this.recognition.lang = 'en-US';\n\n this.recognition.onresult = (event: SpeechRecognitionEvent) => {\n const transcript = event.results[0][0].transcript;\n this.onResultCallback?.(transcript);\n };\n\n this.recognition.onerror = (event: SpeechRecognitionErrorEvent) => {\n this.onErrorCallback?.(\n new Error(`Speech recognition error: ${event.error}`)\n );\n };\n } else {\n console.warn('SpeechRecognition API not supported in this browser.');\n }\n }\n }\n\n startRecognition(): void {\n if (this.recognition) {\n this.recognition.start();\n } else {\n throw new Error('Speech recognition not supported');\n }\n }\n\n stopRecognition(): void {\n this.recognition?.stop();\n }\n\n onResult(callback: (text: string) => void): void {\n this.onResultCallback = callback;\n }\n\n onError(callback: (error: Error) => void): void {\n this.onErrorCallback = callback;\n }\n}\n\n// Default TTS Provider using Web Speech API\nexport class WebSpeechTTSProvider {\n speak(text: string): void {\n if (typeof window !== 'undefined' && 'speechSynthesis' in window) {\n const utterance = new SpeechSynthesisUtterance(text);\n window.speechSynthesis.speak(utterance);\n } else {\n console.warn('Text-to-speech not supported');\n }\n }\n\n stop(): void {\n if (typeof window !== 'undefined' && 'speechSynthesis' in window) {\n window.speechSynthesis.cancel();\n }\n }\n}\n","import React, { createContext, useContext, ReactNode, useState, useRef } from 'react';\nimport type { ReactBridgeConfig, Theme, STTProvider, TTSProvider } from '../types';\nimport { ReactBridgeAPI } from '../utils/api';\nimport { lightTheme } from '../themes/light';\nimport { WebSpeechSTTProvider, WebSpeechTTSProvider } from '../utils/voice';\n\ninterface ReactBridgeContextValue {\n api: ReactBridgeAPI;\n config: ReactBridgeConfig;\n theme: Theme;\n sttProvider: STTProvider;\n ttsProvider: TTSProvider;\n setSTTProvider: (provider: STTProvider) => void;\n setTTSProvider: (provider: TTSProvider) => void;\n}\n\nconst ReactBridgeContext = createContext<ReactBridgeContextValue | null>(null);\n\nexport interface ReactBridgeProviderProps {\n apiKey: string;\n config?: Partial<ReactBridgeConfig>;\n theme?: Theme;\n sttProvider?: STTProvider;\n ttsProvider?: TTSProvider;\n children: ReactNode;\n}\n\nexport function ReactBridgeProvider({\n apiKey,\n config = {},\n theme = lightTheme,\n sttProvider: initialSTTProvider,\n ttsProvider: initialTTSProvider,\n children,\n}: ReactBridgeProviderProps) {\n const fullConfig: ReactBridgeConfig = {\n apiKey,\n baseURL: config.baseURL,\n // Preserve explicit 0 (to disable timeouts). If not provided, default to 30s\n timeout: typeof config.timeout === 'number' ? config.timeout : 30000,\n headers: config.headers,\n };\n\n const api = React.useMemo(() => new ReactBridgeAPI(fullConfig), [\n fullConfig.apiKey,\n fullConfig.baseURL,\n fullConfig.timeout,\n ]);\n\n const [sttProvider, setSTTProvider] = useState<STTProvider>(\n initialSTTProvider || new WebSpeechSTTProvider()\n );\n const [ttsProvider, setTTSProvider] = useState<TTSProvider>(\n initialTTSProvider || new WebSpeechTTSProvider()\n );\n\n const value: ReactBridgeContextValue = {\n api,\n config: fullConfig,\n theme,\n sttProvider,\n ttsProvider,\n setSTTProvider,\n setTTSProvider,\n };\n\n return (\n <ReactBridgeContext.Provider value={value}>\n {children}\n </ReactBridgeContext.Provider>\n );\n}\n\nexport function useReactBridgeContext(): ReactBridgeContextValue {\n const context = useContext(ReactBridgeContext);\n if (!context) {\n throw new Error(\n 'useReactBridgeContext must be used within a ReactBridgeProvider'\n );\n }\n return context;\n}\n","import type { CurrentContext, InterfaceState } from '../types';\n\nexport function hasContextChanged(\n previous: CurrentContext | null,\n current: CurrentContext\n): boolean {\n if (!previous) return true;\n\n // Check if page changed\n if (previous.interfaceState.currentPageName !== current.interfaceState.currentPageName) {\n return true;\n }\n\n // Check if viewing items changed\n const prevItems = previous.interfaceState.viewingItems || [];\n const currItems = current.interfaceState.viewingItems || [];\n\n if (prevItems.length !== currItems.length) {\n return true;\n }\n\n // Check if item IDs changed\n const prevIds = prevItems.map(item => item.id).sort();\n const currIds = currItems.map(item => item.id).sort();\n\n return JSON.stringify(prevIds) !== JSON.stringify(currIds);\n}\n\nexport function getContextSummary(context: CurrentContext): string {\n const { interfaceState } = context;\n const parts: string[] = [];\n\n parts.push(`Page: ${interfaceState.currentPageName}`);\n\n if (interfaceState.viewingItems && interfaceState.viewingItems.length > 0) {\n parts.push(`Viewing ${interfaceState.viewingItems.length} items:`);\n interfaceState.viewingItems.slice(0, 3).forEach(item => {\n parts.push(` - ${item.name} ($${item.price})`);\n });\n if (interfaceState.viewingItems.length > 3) {\n parts.push(` ... and ${interfaceState.viewingItems.length - 3} more`);\n }\n }\n\n return parts.join('\\n');\n}\n","import { useState, useCallback, useRef, useEffect } from 'react';\nimport { useReactBridgeContext } from '../provider/ReactBridgeProvider';\nimport { hasContextChanged, getContextSummary } from '../utils/contextDiff';\nimport type {\n ChatMessage,\n UseReactBridgeOptions,\n UseReactBridgeReturn,\n InterfaceState,\n OrchestratorRequest,\n CurrentContext,\n} from '../types';\n\nexport function useReactBridge({\n onIntentDetected,\n currentContext,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n}: UseReactBridgeOptions): UseReactBridgeReturn {\n const { api, sttProvider, ttsProvider } = useReactBridgeContext();\n const [messages, setMessages] = useState<ChatMessage[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [sessionId, setSessionId] = useState<string | null>(null);\n const [isListening, setIsListening] = useState(false);\n \n const previousContextRef = useRef<CurrentContext | null>(null);\n const lastRequestRef = useRef<OrchestratorRequest | null>(null);\n\n // Inject context changes as system messages\n useEffect(() => {\n if (hasContextChanged(previousContextRef.current, currentContext)) {\n const contextSummary = getContextSummary(currentContext);\n const contextMessage: ChatMessage = {\n id: `context-${Date.now()}`,\n role: 'system',\n content: `[Context Update]\\n${contextSummary}`,\n timestamp: new Date(),\n };\n \n setMessages(prev => [...prev, contextMessage]);\n previousContextRef.current = currentContext;\n }\n }, [currentContext]);\n\n const sendChatQuery = useCallback(\n async (queryOrOptions: string | { image?: File; document?: File; query?: string }, fromVoiceInput: boolean = false) => {\n const isMultimodal = typeof queryOrOptions === 'object';\n const query = isMultimodal ? (queryOrOptions.query || '') : queryOrOptions;\n const image = isMultimodal ? queryOrOptions.image : undefined;\n const document = isMultimodal ? queryOrOptions.document : undefined;\n \n if (!query.trim() && !image && !document) return;\n\n setIsLoading(true);\n setError(null);\n\n // Add user message with file info if present\n let messageContent = query;\n if (image) {\n messageContent = messageContent ? `${messageContent} [Image: ${image.name}]` : `[Image: ${image.name}]`;\n } else if (document) {\n messageContent = messageContent ? `${messageContent} [Document: ${document.name}]` : `[Document: ${document.name}]`;\n }\n \n const userMessage: ChatMessage = {\n id: `user-${Date.now()}`,\n role: 'user',\n content: messageContent,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, userMessage]);\n\n try {\n // Step 1: Send initial request to orchestrator\n const request: OrchestratorRequest = {\n userId: currentContext.userId,\n query,\n // Pass the new top-level fields expected by the API, populated from the InterfaceState\n userName: currentContext.userName,\n userPreferences: currentContext.userPreferences,\n userRecentActivity: currentContext.userRecentActivity,\n interfaceState: currentContext.interfaceState,\n sessionId: sessionId || undefined,\n // Add multimodal fields\n image,\n document,\n modalityHint: image ? 'image' : document ? 'document' : undefined,\n };\n\n lastRequestRef.current = request;\n\n const response = await api.sendMessage(request);\n\n if (!response.success) {\n throw new Error(response.error || 'Request failed');\n }\n\n // Update session ID\n if (response.sessionId) {\n setSessionId(response.sessionId);\n }\n\n // Add assistant message\n const assistantMessage: ChatMessage = {\n id: `assistant-${Date.now()}`,\n role: 'assistant',\n content: response.message,\n timestamp: new Date(),\n toolCall: response.toolCall,\n };\n setMessages(prev => [...prev, assistantMessage]);\n\n // Trigger TTS and callback only if input came from voice\n if (fromVoiceInput) {\n ttsProvider.speak(response.message);\n }\n if (onAgentResponse) {\n onAgentResponse(response.message);\n }\n\n // Step 2: If there's a tool call, execute it\n if (response.toolCall && onIntentDetected) {\n try {\n const toolResult = await onIntentDetected(response.toolCall);\n\n // Step 3: Send tool result back to orchestrator\n if (lastRequestRef.current && response.sessionId) {\n const resultResponse = await api.sendToolResult(\n response.sessionId,\n toolResult,\n lastRequestRef.current\n );\n\n // Add final assistant message with tool result context\n const finalMessage: ChatMessage = {\n id: `assistant-final-${Date.now()}`,\n role: 'assistant',\n content: resultResponse.message,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, finalMessage]);\n\n // Trigger TTS for final response only if input came from voice\n if (fromVoiceInput) {\n ttsProvider.speak(resultResponse.message);\n }\n if (onAgentResponse) {\n onAgentResponse(resultResponse.message);\n }\n }\n } catch (toolError) {\n const errorMessage = toolError instanceof Error \n ? toolError.message \n : 'Tool execution failed';\n \n const errorMsg: ChatMessage = {\n id: `error-${Date.now()}`,\n role: 'assistant',\n content: `I encountered an error: ${errorMessage}`,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, errorMsg]);\n \n if (onError) {\n onError(toolError instanceof Error ? toolError : new Error(errorMessage));\n }\n }\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Unknown error');\n setError(error);\n \n const errorMessage: ChatMessage = {\n id: `error-${Date.now()}`,\n role: 'assistant',\n content: `Sorry, I encountered an error: ${error.message}`,\n timestamp: new Date(),\n };\n setMessages(prev => [...prev, errorMessage]);\n\n if (onError) {\n onError(error);\n }\n } finally {\n setIsLoading(false);\n }\n },\n [api, currentContext, sessionId, onIntentDetected, onError]\n );\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n setSessionId(null);\n setError(null);\n }, []);\n\n const startVoiceInput = useCallback(() => {\n setIsListening(true);\n if (onSpeechStart) {\n onSpeechStart();\n }\n sttProvider.onResult((text: string) => {\n if (onTranscript) {\n onTranscript(text);\n }\n sendChatQuery(text, true); // Pass true to indicate voice input\n setIsListening(false);\n if (onSpeechEnd) {\n onSpeechEnd();\n }\n });\n if (sttProvider.onError) {\n sttProvider.onError((error: Error) => {\n setIsListening(false);\n if (onError) {\n onError(error);\n }\n if (onSpeechEnd) {\n onSpeechEnd();\n }\n });\n }\n sttProvider.startRecognition();\n }, [sttProvider, sendChatQuery, onSpeechStart, onSpeechEnd, onTranscript, onError]);\n\n const stopVoiceInput = useCallback(() => {\n setIsListening(false);\n sttProvider.stopRecognition();\n if (onSpeechEnd) {\n onSpeechEnd();\n }\n }, [sttProvider, onSpeechEnd]);\n\n return {\n messages,\n isLoading,\n sendChatQuery,\n clearMessages,\n error,\n isListening,\n startVoiceInput,\n stopVoiceInput,\n };\n}\n","import React, { useState, useRef, useEffect } from \"react\";\n// Removed import: import { FaMessage } from \"react-icons/fa6\";\nimport { useReactBridge } from \"../hooks/useReactBridge\";\nimport { useReactBridgeContext } from \"../provider/ReactBridgeProvider\";\nimport type {\n OnIntentDetected,\n ChatMessage,\n Theme,\n CurrentContext,\n} from \"../types\";\n\n// --- START: Dependency-Free SVG Message Icon ---\nconst MESSAGE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\" // Use 1em so it scales with font-size\n height=\"1em\"\n fill=\"currentColor\"\n // Simple speech bubble shape\n >\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z\" />\n </svg>\n);\n// --- END: Dependency-Free SVG Message Icon ---\n\n// Microphone Icon SVG\nconst MIC_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\" />\n </svg>\n);\n\n// Plus Icon SVG\nconst PLUS_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n);\n\n// Photo Icon SVG\nconst PHOTO_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\" />\n </svg>\n);\n\n// File Icon SVG\nconst FILE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z\" />\n </svg>\n);\n\n// Typing Indicator Component\nconst TypingIndicator = ({ theme }: { theme: any }) => (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"flex-start\",\n marginBottom: theme.spacing.md,\n paddingLeft: theme.spacing.md,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"4px\",\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n maxWidth: \"70%\",\n }}\n >\n <div\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n backgroundColor: theme.colors.primary,\n animation: \"typing-dot 1.4s infinite ease-in-out\",\n animationDelay: \"0s\",\n }}\n />\n <div\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n backgroundColor: theme.colors.primary,\n animation: \"typing-dot 1.4s infinite ease-in-out\",\n animationDelay: \"0.2s\",\n }}\n />\n <div\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n backgroundColor: theme.colors.primary,\n animation: \"typing-dot 1.4s infinite ease-in-out\",\n animationDelay: \"0.4s\",\n }}\n />\n <style>\n {`\n @keyframes typing-dot {\n 0%, 60%, 100% {\n transform: translateY(0);\n opacity: 0.4;\n }\n 30% {\n transform: translateY(-10px);\n opacity: 1;\n }\n }\n `}\n </style>\n </div>\n </div>\n);\n\n// Default styling constants for the widget wrapper\nconst defaultToggleButtonClass =\n \"fixed bottom-6 right-6 z-40 w-14 h-14 rounded-full shadow-lg text-white bg-blue-600 hover:bg-blue-700 transition-all flex justify-center items-center cursor-pointer text-2xl\";\n\nexport interface ReactBridgeChatboxProps {\n // --- Existing Core Props ---\n onIntentDetected: OnIntentDetected;\n currentContext: CurrentContext;\n placeholder?: string;\n // NOTE: height/width now refer to the widget container size in 'standard' mode\n height?: string;\n width?: string;\n theme?: Partial<Theme>;\n renderMessage?: (message: ChatMessage) => React.ReactNode;\n onError?: (error: Error) => void;\n\n // --- Voice Event Props ---\n onSpeechStart?: () => void;\n onSpeechEnd?: () => void;\n onTranscript?: (text: string) => void;\n onAgentResponse?: (response: string) => void;\n\n // --- NEW Widget Props ---\n renderMode?: \"standard\" | \"basic\";\n defaultOpen?: boolean;\n boxLocation?: \"bottom-right\" | \"bottom-left\";\n\n // Header/Title Customization\n titleText?: string;\n titleIcon?: React.ReactNode; // Component or element for the icon\n titleTextColor?: string;\n headerBgColor?: string;\n\n // Toggle Button Customization\n toggleIcon?: React.ReactNode;\n toggleButtonClass?: string;\n toggleButtonTitle?: string;\n}\n\nexport function ReactBridgeChatbox({\n onIntentDetected,\n currentContext,\n placeholder = \"Type your message...\",\n height = \"500px\",\n width = \"100%\",\n theme: themeOverride,\n renderMessage,\n onError,\n\n // Voice Event Props\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n\n // NEW Widget Props\n renderMode = \"basic\", // Default to 'basic' (original behavior)\n defaultOpen = false,\n boxLocation = \"bottom-right\",\n titleText = \"AI Assistant\",\n titleIcon = null,\n titleTextColor, // Will use theme.colors.text or default white based on headerBgColor\n headerBgColor, // Will use theme.colors.primary if not set\n\n toggleIcon = MESSAGE_ICON_SVG, // <<< NOW USES THE PURE SVG CONSTANT\n toggleButtonClass = defaultToggleButtonClass,\n toggleButtonTitle = \"Open chat assistant\",\n}: ReactBridgeChatboxProps) {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = { ...contextTheme, ...themeOverride };\n\n const {\n messages,\n isLoading,\n sendChatQuery,\n isListening,\n startVoiceInput,\n stopVoiceInput,\n } = useReactBridge({\n onIntentDetected,\n currentContext,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n });\n\n const [inputValue, setInputValue] = useState(\"\");\n // New: Manage widget open/closed state\n const [isOpen, setIsOpen] = useState(defaultOpen);\n // Upload functionality state\n const [isUploadMenuOpen, setIsUploadMenuOpen] = useState(false);\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [filePreview, setFilePreview] = useState<{\n type: \"image\" | \"document\";\n url?: string;\n name: string;\n } | null>(null);\n\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Fallback styles for header\n const finalHeaderBgColor = headerBgColor || theme.colors.primary;\n const finalTitleTextColor = titleTextColor || \"#ffffff\"; // Default to white for contrast\n\n // Auto-scroll to bottom when new messages arrive\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n // Close upload menu and widget when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsUploadMenuOpen(false);\n if (isOpen) {\n setIsOpen(false);\n }\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isUploadMenuOpen, isOpen]);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if ((!inputValue.trim() && !selectedFile) || isLoading) return;\n\n const query = inputValue.trim();\n setInputValue(\"\");\n\n // Handle multimodal request\n if (selectedFile && filePreview) {\n if (filePreview.type === \"image\") {\n await sendChatQuery({ image: selectedFile, query });\n } else if (filePreview.type === \"document\") {\n await sendChatQuery({ document: selectedFile, query });\n }\n } else {\n await sendChatQuery(query);\n }\n\n // Clear file selection after sending\n setSelectedFile(null);\n setFilePreview(null);\n };\n\n // File validation and handling\n const validateAndSetFile = (file: File, type: \"image\" | \"document\") => {\n const imageTypes = [\"image/png\", \"image/jpeg\", \"image/jpg\", \"image/webp\"];\n const documentTypes = [\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"text/plain\",\n ];\n\n const allowedTypes = type === \"image\" ? imageTypes : documentTypes;\n\n if (!allowedTypes.includes(file.type)) {\n if (onError) {\n onError(\n new Error(`Invalid file type. Please select a valid ${type} file.`)\n );\n }\n return false;\n }\n\n setSelectedFile(file);\n\n if (type === \"image\") {\n const url = URL.createObjectURL(file);\n setFilePreview({ type: \"image\", url, name: file.name });\n } else {\n setFilePreview({ type: \"document\", name: file.name });\n }\n\n setIsUploadMenuOpen(false);\n return true;\n };\n\n const handleFileSelect = (type: \"image\" | \"document\") => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept =\n type === \"image\"\n ? \"image/png,image/jpeg,image/jpg,image/webp\"\n : \"application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,text/plain\";\n\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (file) {\n validateAndSetFile(file, type);\n }\n };\n\n input.click();\n };\n\n const removeFile = () => {\n if (filePreview?.url) {\n URL.revokeObjectURL(filePreview.url);\n }\n setSelectedFile(null);\n setFilePreview(null);\n };\n\n const defaultRenderMessage = (message: ChatMessage) => {\n const isUser = message.role === \"user\";\n const isSystem = message.role === \"system\";\n\n // Don't render system messages in UI\n if (isSystem) return null;\n\n return (\n <div\n key={message.id}\n style={{\n display: \"flex\",\n justifyContent: isUser ? \"flex-end\" : \"flex-start\",\n marginBottom: theme.spacing.md,\n }}\n >\n <div\n style={{\n maxWidth: \"70%\",\n padding: theme.spacing.md,\n borderRadius: theme.borderRadius,\n backgroundColor: isUser\n ? theme.colors.primary\n : theme.colors.surface,\n color: isUser ? \"#ffffff\" : theme.colors.text,\n fontSize: theme.fontSizes.md,\n boxShadow: theme.boxShadow,\n }}\n >\n {message.content}\n </div>\n </div>\n );\n };\n\n // --- RENDER LOGIC FOR 'BASIC' MODE (Original Behavior) ---\n if (renderMode === \"basic\") {\n // Renders the chat component only, using the height/width props directly\n return (\n <div\n ref={containerRef}\n style={{\n width,\n height,\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n overflow: \"hidden\",\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n }}\n >\n {/* Messages Container (basic) */}\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: theme.spacing.md,\n }}\n >\n {messages.map((message) =>\n renderMessage\n ? renderMessage(message)\n : defaultRenderMessage(message)\n )}\n {isLoading && <TypingIndicator theme={theme} />}\n <div ref={messagesEndRef} />\n </div>\n\n {/* Input Form (basic) */}\n <form\n onSubmit={handleSubmit}\n style={{\n padding: theme.spacing.md,\n borderTop: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.surface,\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: theme.spacing.sm,\n alignItems: \"center\",\n }}\n >\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={isLoading}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n fontSize: theme.fontSizes.md,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n outline: \"none\",\n }}\n />\n\n {/* Plus button for uploads */}\n <button\n type=\"button\"\n onClick={() => setIsUploadMenuOpen(!isUploadMenuOpen)}\n disabled={isLoading}\n title=\"Attach file\"\n style={{\n padding: theme.spacing.sm,\n paddingRight: 0,\n color: theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {PLUS_ICON_SVG}\n </button>\n\n {/* Upload menu dropdown */}\n {isUploadMenuOpen && (\n <div\n style={{\n position: \"absolute\",\n bottom: \"60px\",\n right: \"10px\",\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n zIndex: 1000,\n minWidth: \"150px\",\n }}\n >\n <button\n onClick={() => handleFileSelect(\"image\")}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `${theme.borderRadius} ${theme.borderRadius} 0 0`,\n }}\n >\n {PHOTO_ICON_SVG}\n Upload Image\n </button>\n <button\n onClick={() => handleFileSelect(\"document\")}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `0 0 ${theme.borderRadius} ${theme.borderRadius}`,\n borderTop: `1px solid ${theme.colors.border}`,\n }}\n >\n {FILE_ICON_SVG}\n Upload Document\n </button>\n </div>\n )}\n\n <button\n type=\"button\"\n onClick={isListening ? stopVoiceInput : startVoiceInput}\n disabled={isLoading}\n title={isListening ? \"Stop recording\" : \"Start voice input\"}\n style={{\n padding: theme.spacing.sm,\n paddingLeft: 0,\n paddingRight: 0,\n color: isListening ? theme.colors.primary : theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {MIC_ICON_SVG}\n </button>\n <button\n type=\"submit\"\n disabled={isLoading || (!inputValue.trim() && !selectedFile)}\n style={{\n padding: `${theme.spacing.sm} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.md,\n backgroundColor: theme.colors.primary,\n color: \"#ffffff\",\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor:\n isLoading || (!inputValue.trim() && !selectedFile)\n ? \"not-allowed\"\n : \"pointer\",\n opacity:\n isLoading || (!inputValue.trim() && !selectedFile) ? 0.5 : 1,\n }}\n >\n {isLoading ? \"Sending...\" : \"Send\"}\n </button>\n </div>\n\n {/* File preview */}\n {filePreview && (\n <div\n style={{\n marginTop: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n }}\n >\n {filePreview.type === \"image\" && filePreview.url ? (\n <img\n src={filePreview.url}\n alt=\"Preview\"\n style={{\n width: \"40px\",\n height: \"40px\",\n objectFit: \"cover\",\n borderRadius: theme.borderRadius,\n }}\n />\n ) : (\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n backgroundColor: theme.colors.secondary,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {FILE_ICON_SVG}\n </div>\n )}\n <div\n style={{\n flex: 1,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n }}\n >\n {filePreview.name}\n </div>\n <button\n type=\"button\"\n onClick={removeFile}\n style={{\n padding: \"4px\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: theme.colors.error,\n cursor: \"pointer\",\n fontSize: \"18px\",\n }}\n title=\"Remove file\"\n >\n ×\n </button>\n </div>\n )}\n </form>\n </div>\n );\n }\n\n // --- RENDER LOGIC FOR 'STANDARD' MODE (Widget Behavior) ---\n\n // Determine fixed positioning class for the widget\n const widgetPositionClass =\n boxLocation === \"bottom-right\"\n ? { bottom: \"24px\", right: \"24px\" }\n : { bottom: \"24px\", left: \"24px\" };\n\n // Determine fixed positioning class for the toggle button\n const togglePositionClass =\n boxLocation === \"bottom-right\"\n ? { bottom: \"24px\", right: \"24px\" }\n : { bottom: \"24px\", left: \"24px\" };\n\n if (!isOpen) {\n // Render the toggle button when closed\n return (\n <button\n className={toggleButtonClass}\n onClick={() => setIsOpen(true)}\n title={toggleButtonTitle}\n style={{\n // Apply widget-specific fixed positioning\n position: \"fixed\",\n zIndex: 40,\n ...togglePositionClass,\n backgroundColor: finalHeaderBgColor,\n // Use default styling if the user didn't override the entire class\n ...(toggleButtonClass === defaultToggleButtonClass && {\n width: \"56px\",\n height: \"56px\",\n borderRadius: \"50%\",\n boxShadow: \"0 4px 6px rgba(0, 0, 0, 0.1)\",\n }),\n }}\n >\n {toggleIcon}\n </button>\n );\n }\n\n // Render the full widget when open\n return (\n <div\n ref={containerRef}\n style={{\n width: width,\n height: height,\n display: \"flex\",\n flexDirection: \"column\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.15)\",\n borderRadius: theme.borderRadius,\n overflow: \"hidden\",\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n position: \"fixed\",\n zIndex: 50,\n ...widgetPositionClass,\n }}\n >\n {/* 1. Header (Title Bar) */}\n <div\n style={{\n padding: \"10px 15px\",\n backgroundColor: finalHeaderBgColor,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n color: finalTitleTextColor,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n fontSize: theme.fontSizes.md,\n }}\n >\n {/* Title Icon */}\n {titleIcon && (\n <span\n style={{\n marginRight: theme.spacing.sm,\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {titleIcon}\n </span>\n )}\n {/* Title Text */}\n {titleText}\n </div>\n\n {/* Close Button */}\n <button\n onClick={() => setIsOpen(false)}\n style={{\n background: \"none\",\n border: \"none\",\n color: finalTitleTextColor,\n fontSize: theme.fontSizes.xl, // Use a larger font for the 'X'\n cursor: \"pointer\",\n padding: \"0 5px\",\n lineHeight: 1,\n }}\n >\n ×\n </button>\n </div>\n\n {/* 2. Messages Container (Chat Body) */}\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: theme.spacing.md,\n backgroundColor: theme.colors.background,\n }}\n >\n {messages.map((message) =>\n renderMessage ? renderMessage(message) : defaultRenderMessage(message)\n )}\n {isLoading && <TypingIndicator theme={theme} />}\n <div ref={messagesEndRef} />\n </div>\n\n {/* 3. Input Form */}\n <form\n onSubmit={handleSubmit}\n style={{\n padding: theme.spacing.md,\n borderTop: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.surface,\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: theme.spacing.sm,\n alignItems: \"center\",\n }}\n >\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={placeholder}\n disabled={isLoading}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n fontSize: theme.fontSizes.md,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n outline: \"none\",\n }}\n />\n\n {/* Plus button for uploads */}\n <button\n type=\"button\"\n onClick={() => setIsUploadMenuOpen(!isUploadMenuOpen)}\n disabled={isLoading}\n title=\"Attach file\"\n style={{\n padding: theme.spacing.sm,\n paddingRight: 0,\n color: theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {PLUS_ICON_SVG}\n </button>\n\n {/* Upload menu dropdown */}\n {isUploadMenuOpen && (\n <div\n style={{\n position: \"absolute\",\n bottom: \"60px\",\n right: \"10px\",\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n zIndex: 1000,\n minWidth: \"150px\",\n }}\n >\n <button\n onClick={(e) => {\n e.preventDefault();\n handleFileSelect(\"image\");\n }}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `${theme.borderRadius} ${theme.borderRadius} 0 0`,\n }}\n >\n {PHOTO_ICON_SVG}\n Upload Image\n </button>\n <button\n onClick={(e) => {\n e.preventDefault();\n handleFileSelect(\"document\");\n }}\n style={{\n width: \"100%\",\n padding: theme.spacing.md,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: theme.colors.text,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n borderRadius: `0 0 ${theme.borderRadius} ${theme.borderRadius}`,\n borderTop: `1px solid ${theme.colors.border}`,\n }}\n >\n {FILE_ICON_SVG}\n Upload Document\n </button>\n </div>\n )}\n\n <button\n type=\"button\"\n onClick={isListening ? stopVoiceInput : startVoiceInput}\n disabled={isLoading}\n title={isListening ? \"Stop recording\" : \"Start voice input\"}\n style={{\n padding: theme.spacing.sm,\n paddingLeft: 0,\n paddingRight: 0,\n color: isListening ? theme.colors.primary : theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"24px\",\n height: \"40px\",\n }}\n >\n {MIC_ICON_SVG}\n </button>\n <button\n type=\"submit\"\n disabled={isLoading || (!inputValue.trim() && !selectedFile)}\n style={{\n padding: `${theme.spacing.sm} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.md,\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor:\n isLoading || (!inputValue.trim() && !selectedFile)\n ? \"not-allowed\"\n : \"pointer\",\n opacity:\n isLoading || (!inputValue.trim() && !selectedFile) ? 0.5 : 1,\n }}\n >\n {isLoading ? \"Sending...\" : \"Send\"}\n </button>\n </div>\n\n {/* File preview */}\n {filePreview && (\n <div\n style={{\n marginTop: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n }}\n >\n {filePreview.type === \"image\" && filePreview.url ? (\n <img\n src={filePreview.url}\n alt=\"Preview\"\n style={{\n width: \"40px\",\n height: \"40px\",\n objectFit: \"cover\",\n borderRadius: theme.borderRadius,\n }}\n />\n ) : (\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n backgroundColor: theme.colors.secondary,\n borderRadius: theme.borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {FILE_ICON_SVG}\n </div>\n )}\n <div\n style={{\n flex: 1,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n }}\n >\n {filePreview.name}\n </div>\n <button\n type=\"button\"\n onClick={removeFile}\n style={{\n padding: \"4px\",\n backgroundColor: \"transparent\",\n border: \"none\",\n color: theme.colors.error,\n cursor: \"pointer\",\n fontSize: \"18px\",\n }}\n title=\"Remove file\"\n >\n ×\n </button>\n </div>\n )}\n </form>\n </div>\n );\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport { useReactBridge } from '../hooks/useReactBridge';\nimport { useReactBridgeContext } from '../provider/ReactBridgeProvider';\nimport type { OnIntentDetected, InterfaceState, Theme, CurrentContext } from '../types';\n\n// Microphone Icon SVG\nconst MIC_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\"/>\n </svg>\n);\n\n// Plus Icon SVG\nconst PLUS_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"/>\n </svg>\n);\n\nexport interface ReactBridgeSearchProps {\n onIntentDetected: OnIntentDetected;\n currentContext: CurrentContext;\n placeholder?: string;\n width?: string;\n maxResults?: number;\n theme?: Partial<Theme>;\n onError?: (error: Error) => void;\n onSpeechStart?: () => void;\n onSpeechEnd?: () => void;\n onTranscript?: (text: string) => void;\n onAgentResponse?: (response: string) => void;\n}\n\nexport function ReactBridgeSearch({\n onIntentDetected,\n currentContext,\n placeholder = 'Search...',\n width = '100%',\n maxResults = 5,\n theme: themeOverride,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n}: ReactBridgeSearchProps) {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = { ...contextTheme, ...themeOverride };\n \n const { messages, isLoading, sendChatQuery, isListening, startVoiceInput, stopVoiceInput } = useReactBridge({\n onIntentDetected,\n currentContext,\n onError,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onAgentResponse,\n });\n\n const [inputValue, setInputValue] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const [isUploadMenuOpen, setIsUploadMenuOpen] = useState(false);\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [filePreview, setFilePreview] = useState<string | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // Close dropdown and upload menu when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setIsUploadMenuOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n // Open dropdown when there are messages\n useEffect(() => {\n if (messages.length > 0) {\n setIsOpen(true);\n }\n }, [messages]);\n\n const handleFileSelect = (type: 'image' | 'document') => {\n if (fileInputRef.current) {\n fileInputRef.current.accept = type === 'image' \n ? 'image/png,image/jpeg,image/jpg,image/webp' \n : 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,text/plain';\n fileInputRef.current.click();\n }\n setIsUploadMenuOpen(false);\n };\n\n const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n // Validate file type\n const imageTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/webp'];\n const documentTypes = ['application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'text/plain'];\n \n const allowedTypes = file.type.startsWith('image/') ? imageTypes : documentTypes;\n \n if (!allowedTypes.includes(file.type)) {\n if (onError) {\n onError(new Error(`Invalid file type. Please select a valid ${file.type.startsWith('image/') ? 'image' : 'document'} file.`));\n }\n return;\n }\n\n // Validate file size (10MB limit)\n const maxSize = 10 * 1024 * 1024; // 10MB\n if (file.size > maxSize) {\n if (onError) {\n onError(new Error('File size too large. Please select a file smaller than 10MB.'));\n }\n return;\n }\n\n setSelectedFile(file);\n \n // Create preview for images\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = (e) => {\n setFilePreview(e.target?.result as string);\n };\n reader.readAsDataURL(file);\n } else {\n // For documents, show file name\n setFilePreview(file.name);\n }\n };\n\n const removeFile = () => {\n setSelectedFile(null);\n setFilePreview(null);\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if ((!inputValue.trim() && !selectedFile) || isLoading) return;\n\n const query = inputValue.trim();\n setInputValue('');\n \n // Handle multimodal request\n if (selectedFile && filePreview) {\n await sendChatQuery({\n query,\n image: selectedFile.type.startsWith('image/') ? selectedFile : undefined,\n document: selectedFile.type.startsWith('image/') ? undefined : selectedFile,\n });\n removeFile();\n } else {\n await sendChatQuery(query);\n }\n };\n\n // Get only assistant messages (not system messages)\n const displayMessages = messages\n .filter((msg) => msg.role === 'assistant')\n .slice(-maxResults);\n\n return (\n <div\n ref={containerRef}\n style={{\n position: 'relative',\n width,\n fontFamily: 'system-ui, -apple-system, sans-serif',\n }}\n >\n {/* Search Input */}\n <form onSubmit={handleSubmit}>\n <div style={{ position: 'relative' }}>\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileChange}\n style={{ display: 'none' }}\n />\n\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onFocus={() => displayMessages.length > 0 && setIsOpen(true)}\n placeholder={selectedFile ? `Search with ${selectedFile.name}...` : placeholder}\n disabled={isLoading}\n style={{\n width: '100%',\n padding: theme.spacing.md,\n paddingRight: '180px', // Increased to make room for plus, mic, and search buttons\n fontSize: theme.fontSizes.md,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n outline: 'none',\n boxSizing: 'border-box',\n }}\n />\n\n {/* Plus button for uploads */}\n <button\n type=\"button\"\n onClick={() => setIsUploadMenuOpen(!isUploadMenuOpen)}\n disabled={isLoading}\n title=\"Upload file\"\n style={{\n position: 'absolute',\n right: '105px', // Position before the mic button\n top: '50%',\n transform: 'translateY(-50%)',\n padding: theme.spacing.sm,\n marginRight: theme.spacing.xs,\n color: theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"32px\",\n height: \"32px\",\n }}\n >\n {PLUS_ICON_SVG}\n </button>\n\n {/* Upload menu */}\n {isUploadMenuOpen && (\n <div\n style={{\n position: 'absolute',\n right: '105px',\n top: '100%',\n marginTop: theme.spacing.xs,\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n zIndex: 1000,\n minWidth: '120px',\n }}\n >\n <button\n type=\"button\"\n onClick={() => handleFileSelect('image')}\n style={{\n width: '100%',\n padding: theme.spacing.sm,\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.colors.text,\n cursor: 'pointer',\n textAlign: 'left',\n fontSize: theme.fontSizes.sm,\n }}\n >\n 📷 Image\n </button>\n <button\n type=\"button\"\n onClick={() => handleFileSelect('document')}\n style={{\n width: '100%',\n padding: theme.spacing.sm,\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.colors.text,\n cursor: 'pointer',\n textAlign: 'left',\n fontSize: theme.fontSizes.sm,\n }}\n >\n 📄 Document\n </button>\n </div>\n )}\n\n <button\n type=\"button\"\n onClick={isListening ? stopVoiceInput : startVoiceInput}\n disabled={isLoading}\n title={isListening ? \"Stop recording\" : \"Start voice input\"}\n style={{\n position: 'absolute',\n right: '70px', // Position before the search button\n top: '50%',\n transform: 'translateY(-50%)',\n padding: theme.spacing.sm,\n marginRight: theme.spacing.xs,\n color: isListening ? theme.colors.primary : theme.colors.border,\n border: \"none\",\n borderRadius: theme.borderRadius,\n cursor: isLoading ? \"not-allowed\" : \"pointer\",\n opacity: isLoading ? 0.5 : 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"32px\",\n height: \"32px\",\n }}\n >\n {MIC_ICON_SVG}\n </button>\n <button\n type=\"submit\"\n disabled={isLoading || (!inputValue.trim() && !selectedFile)}\n style={{\n position: 'absolute',\n right: theme.spacing.sm,\n top: '50%',\n transform: 'translateY(-50%)',\n padding: `${theme.spacing.xs} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.sm,\n backgroundColor: theme.colors.primary,\n color: theme.colors.background,\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: isLoading || (!inputValue.trim() && !selectedFile) ? 'not-allowed' : 'pointer',\n opacity: isLoading || (!inputValue.trim() && !selectedFile) ? 0.5 : 1,\n }}\n >\n {isLoading ? 'Searching...' : 'Search'}\n </button>\n </div>\n\n {/* File Preview */}\n {selectedFile && filePreview && (\n <div\n style={{\n marginTop: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing.sm,\n }}\n >\n {selectedFile.type.startsWith('image/') ? (\n <img\n src={filePreview}\n alt=\"Preview\"\n style={{\n width: '40px',\n height: '40px',\n objectFit: 'cover',\n borderRadius: theme.borderRadius,\n }}\n />\n ) : (\n <div\n style={{\n width: '40px',\n height: '40px',\n backgroundColor: theme.colors.primary,\n borderRadius: theme.borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.background,\n fontSize: theme.fontSizes.lg,\n }}\n >\n 📄\n </div>\n )}\n <div style={{ flex: 1, fontSize: theme.fontSizes.sm, color: theme.colors.text }}>\n <div style={{ fontWeight: 'bold' }}>{selectedFile.name}</div>\n <div style={{ color: theme.colors.textSecondary }}>\n {(selectedFile.size / 1024 / 1024).toFixed(2)} MB\n </div>\n </div>\n <button\n type=\"button\"\n onClick={removeFile}\n style={{\n padding: theme.spacing.xs,\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.colors.textSecondary,\n cursor: 'pointer',\n borderRadius: theme.borderRadius,\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '18px',\n }}\n title=\"Remove file\"\n >\n ×\n </button>\n </div>\n )}\n </form>\n\n {/* Results Dropdown */}\n {isOpen && displayMessages.length > 0 && (\n <div\n style={{\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n marginTop: theme.spacing.xs,\n backgroundColor: theme.colors.background,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n maxHeight: '300px',\n overflowY: 'auto',\n zIndex: 1000,\n }}\n >\n {displayMessages.map((message) => (\n <div\n key={message.id}\n style={{\n padding: theme.spacing.md,\n borderBottom: `1px solid ${theme.colors.border}`,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n cursor: 'pointer',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.surface;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = theme.colors.background;\n }}\n >\n {message.content}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","import type { Theme } from '../types';\n\nexport const darkTheme: Theme = {\n name: 'dark',\n colors: {\n primary: '#90caf9',\n secondary: '#f48fb1',\n background: '#121212',\n surface: '#1e1e1e',\n text: '#ffffff',\n textSecondary: '#b0b0b0',\n border: '#333333',\n error: '#f44336',\n success: '#4caf50',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '24px',\n },\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.5)',\n};\n","import type { Theme, ThemeMode } from '../types';\nimport { lightTheme } from './light';\nimport { darkTheme } from './dark';\n\nexport { lightTheme, darkTheme };\n\nexport function getTheme(mode: ThemeMode, customTheme?: Theme): Theme {\n if (mode === 'custom' && customTheme) {\n return customTheme;\n }\n return mode === 'dark' ? darkTheme : lightTheme;\n}\n\nexport function createCustomTheme(baseTheme: Theme, overrides: Partial<Theme>): Theme {\n return {\n ...baseTheme,\n ...overrides,\n colors: {\n ...baseTheme.colors,\n ...(overrides.colors || {}),\n },\n spacing: {\n ...baseTheme.spacing,\n ...(overrides.spacing || {}),\n },\n fontSizes: {\n ...baseTheme.fontSizes,\n ...(overrides.fontSizes || {}),\n },\n };\n}\n","import type { ReactBridgeConfig } from '../types';\nimport type { AnalyticsConfig, AnalyticsResult } from '../types/analytics';\n\nconst DEFAULT_BASE_URL = 'https://react-bridge-api-14089992360.northamerica-northeast2.run.app';\n\nexport class AnalyticsAPI {\n private config: ReactBridgeConfig;\n\n constructor(config: ReactBridgeConfig) {\n this.config = config;\n }\n\n /**\n * Fetch all analytics configurations for the client\n */\n async getConfigs(): Promise<AnalyticsConfig[]> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/analytics/configs`;\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-API-Key': this.config.apiKey,\n ...this.config.headers,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch analytics configs: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Fetch the latest analytics result for a specific type\n */\n async getLatestResult(analyticsType: string): Promise<AnalyticsResult> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/analytics/${analyticsType}/latest`;\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-API-Key': this.config.apiKey,\n 'Content-Type': 'application/json',\n ...this.config.headers,\n },\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error(`No results found for analytics type: ${analyticsType}`);\n }\n throw new Error(`Failed to fetch analytics result: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Update directive status (executed, declined, failed)\n */\n async updateDirectiveStatus(\n directiveId: string,\n status: 'proposed' | 'executed' | 'declined' | 'failed'\n ): Promise<{ directiveId: string; status: string; updatedAt: string }> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = `${baseURL}/api/analytics/directives/${directiveId}/status`;\n\n const response = await fetch(url, {\n method: 'PATCH',\n headers: {\n 'X-API-Key': this.config.apiKey,\n 'Content-Type': 'application/json',\n ...this.config.headers,\n },\n body: JSON.stringify({ status }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to update directive status: ${response.statusText}`);\n }\n\n return response.json();\n }\n}\n","import { useState, useEffect } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { AnalyticsAPI } from '../../utils/analytics-api';\nimport type { AnalyticsConfig } from '../../types/analytics';\n\nexport function useAnalyticsConfigs() {\n const { config } = useReactBridgeContext();\n const [configs, setConfigs] = useState<AnalyticsConfig[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchConfigs = async () => {\n try {\n setIsLoading(true);\n setError(null);\n const api = new AnalyticsAPI(config);\n const data = await api.getConfigs();\n setConfigs(data);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n fetchConfigs();\n }, [config]);\n\n return {\n configs,\n isLoading,\n error,\n refetch: fetchConfigs,\n };\n}\n","import { useState, useEffect } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { AnalyticsAPI } from '../../utils/analytics-api';\nimport type { AnalyticsResult } from '../../types/analytics';\n\nexport function useAnalyticsResult(analyticsType: string | null) {\n const { config } = useReactBridgeContext();\n const [result, setResult] = useState<AnalyticsResult | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchResult = async () => {\n if (!analyticsType) return;\n\n try {\n setIsLoading(true);\n setError(null);\n const api = new AnalyticsAPI(config);\n const data = await api.getLatestResult(analyticsType);\n setResult(data);\n } catch (err) {\n setError(err as Error);\n setResult(null);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n fetchResult();\n }, [analyticsType, config]);\n\n return {\n result,\n isLoading,\n error,\n refetch: fetchResult,\n };\n}\n","import React from 'react';\nimport type { Theme } from '../../types';\nimport type { AnalyticsMetric } from '../../types/analytics';\n\nexport interface MetricsPanelProps {\n metrics: AnalyticsMetric[];\n theme: Theme;\n}\n\nexport const MetricsPanel: React.FC<MetricsPanelProps> = ({ metrics, theme }) => {\n const getStatusColor = (status: string) => {\n switch (status) {\n case 'ok':\n return theme.colors.success;\n case 'warning':\n return '#FFA500'; // Orange\n case 'critical':\n return theme.colors.error;\n default:\n return theme.colors.textSecondary;\n }\n };\n\n return (\n <div>\n <h3\n style={{\n margin: 0,\n marginBottom: theme.spacing.md,\n fontSize: theme.fontSizes.lg,\n color: theme.colors.text,\n }}\n >\n Metrics\n </h3>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))',\n gap: theme.spacing.md,\n }}\n >\n {metrics.map((metric, index) => (\n <div\n key={index}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `2px solid ${getStatusColor(metric.status)}`,\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.xs,\n }}\n >\n <span\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n }}\n >\n {metric.name.replace(/_/g, ' ')}\n </span>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: getStatusColor(metric.status),\n color: '#fff',\n textTransform: 'uppercase',\n }}\n >\n {metric.status}\n </span>\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.xl,\n fontWeight: 'bold',\n color: theme.colors.text,\n marginBottom: theme.spacing.xs,\n }}\n >\n {metric.value} {metric.unit}\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n }}\n >\n {metric.explanation}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport type { Theme } from '../../types';\nimport type { AnalyticsObservation } from '../../types/analytics';\n\nexport interface ObservationsPanelProps {\n observations: AnalyticsObservation[];\n theme: Theme;\n}\n\nexport const ObservationsPanel: React.FC<ObservationsPanelProps> = ({\n observations,\n theme,\n}) => {\n const getSeverityColor = (severity: string) => {\n switch (severity) {\n case 'low':\n return theme.colors.success;\n case 'medium':\n return '#FFA500'; // Orange\n case 'high':\n return theme.colors.error;\n default:\n return theme.colors.textSecondary;\n }\n };\n\n return (\n <div>\n <h3\n style={{\n margin: 0,\n marginBottom: theme.spacing.md,\n fontSize: theme.fontSizes.lg,\n color: theme.colors.text,\n }}\n >\n Observations\n </h3>\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.md }}>\n {observations.map((observation, index) => (\n <div\n key={index}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n borderLeft: `4px solid ${getSeverityColor(observation.severity)}`,\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.xs,\n }}\n >\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: getSeverityColor(observation.severity),\n color: '#fff',\n textTransform: 'uppercase',\n }}\n >\n {observation.severity}\n </span>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n color: theme.colors.textSecondary,\n }}\n >\n {observation.scope}\n </span>\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.md,\n color: theme.colors.text,\n lineHeight: '1.5',\n }}\n >\n {observation.text}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import { useState } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { AnalyticsAPI } from '../../utils/analytics-api';\nimport type { AnalyticsDirective, DirectiveActionResult } from '../../types/analytics';\n\nexport function useDirectiveAction(\n onDirectiveAction?: (\n directive: AnalyticsDirective,\n action: 'execute' | 'decline'\n ) => Promise<DirectiveActionResult>\n) {\n const { config } = useReactBridgeContext();\n const [isProcessing, setIsProcessing] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const handleAction = async (\n directive: AnalyticsDirective,\n action: 'execute' | 'decline'\n ): Promise<DirectiveActionResult> => {\n try {\n setIsProcessing(true);\n setError(null);\n\n const api = new AnalyticsAPI(config);\n\n // If onDirectiveAction callback is provided, execute it first\n if (onDirectiveAction) {\n const result = await onDirectiveAction(directive, action);\n\n if (result.success) {\n // Update status to 'executed' if action succeeded\n await api.updateDirectiveStatus(directive.directiveId, 'executed');\n } else {\n // Update status to 'failed' if action failed\n await api.updateDirectiveStatus(directive.directiveId, 'failed');\n throw new Error(result.error || 'Directive execution failed');\n }\n\n return { success: true };\n } else {\n // No callback provided, just update status to 'declined'\n if (action === 'decline') {\n await api.updateDirectiveStatus(directive.directiveId, 'declined');\n }\n\n return { success: true };\n }\n } catch (err) {\n setError(err as Error);\n return { success: false, error: (err as Error).message };\n } finally {\n setIsProcessing(false);\n }\n };\n\n return {\n handleAction,\n isProcessing,\n error,\n };\n}\n","import React, { useState } from 'react';\nimport { useDirectiveAction } from '../../hooks/analytics/useDirectiveAction';\nimport type { Theme } from '../../types';\nimport type { AnalyticsDirective, OnDirectiveAction } from '../../types/analytics';\n\nexport interface DirectivesPanelProps {\n directives: AnalyticsDirective[];\n theme: Theme;\n onDirectiveAction?: OnDirectiveAction;\n onUpdate?: () => void;\n}\n\nexport const DirectivesPanel: React.FC<DirectivesPanelProps> = ({\n directives,\n theme,\n onDirectiveAction,\n onUpdate,\n}) => {\n const { handleAction, isProcessing } = useDirectiveAction(onDirectiveAction);\n const [processingId, setProcessingId] = useState<string | null>(null);\n\n const getPriorityColor = (priority: number) => {\n if (priority >= 3) return theme.colors.error; // High/Critical\n if (priority === 2) return '#FFA500'; // Medium\n return theme.colors.success; // Low\n };\n\n const getPriorityLabel = (priority: number) => {\n if (priority >= 3) return 'Critical';\n if (priority === 2) return 'High';\n if (priority === 1) return 'Medium';\n return 'Low';\n };\n\n const getStatusLabel = (status: string) => {\n switch (status) {\n case 'proposed':\n return 'Pending';\n case 'executed':\n return 'Executed ✓';\n case 'declined':\n return 'Declined';\n case 'failed':\n return 'Failed ✗';\n default:\n return status;\n }\n };\n\n const handleDirectiveAction = async (\n directive: AnalyticsDirective,\n action: 'execute' | 'decline'\n ) => {\n setProcessingId(directive.directiveId);\n await handleAction(directive, action);\n setProcessingId(null);\n if (onUpdate) {\n onUpdate();\n }\n };\n\n return (\n <div>\n <h3\n style={{\n margin: 0,\n marginBottom: theme.spacing.md,\n fontSize: theme.fontSizes.lg,\n color: theme.colors.text,\n }}\n >\n Directives\n </h3>\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.md }}>\n {directives.map((directive) => {\n const isDisabled =\n directive.status !== 'proposed' ||\n isProcessing ||\n processingId === directive.directiveId;\n\n return (\n <div\n key={directive.directiveId}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.sm,\n }}\n >\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: getPriorityColor(directive.priority),\n color: '#fff',\n textTransform: 'uppercase',\n }}\n >\n {getPriorityLabel(directive.priority)}\n </span>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: theme.colors.textSecondary,\n color: '#fff',\n }}\n >\n {getStatusLabel(directive.status)}\n </span>\n </div>\n\n {/* Action */}\n <div\n style={{\n fontSize: theme.fontSizes.lg,\n fontWeight: 'bold',\n color: theme.colors.text,\n marginBottom: theme.spacing.xs,\n }}\n >\n {directive.action.replace(/_/g, ' ').toUpperCase()}\n </div>\n\n {/* Targets */}\n {directive.targets.length > 0 && (\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n marginBottom: theme.spacing.xs,\n }}\n >\n <strong>Targets:</strong> {directive.targets.join(', ')}\n </div>\n )}\n\n {/* Parameters */}\n {directive.parameters.length > 0 && (\n <div\n style={{\n marginBottom: theme.spacing.sm,\n padding: theme.spacing.sm,\n backgroundColor: theme.colors.background,\n borderRadius: theme.borderRadius,\n }}\n >\n {directive.parameters.map((param, index) => (\n <div\n key={index}\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n marginBottom: '4px',\n }}\n >\n <strong>{param.name}:</strong> {param.value} ({param.valueType})\n </div>\n ))}\n </div>\n )}\n\n {/* Rationale */}\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n marginBottom: theme.spacing.md,\n lineHeight: '1.5',\n }}\n >\n {directive.rationale}\n </div>\n\n {/* Action Buttons */}\n {directive.status === 'proposed' && (\n <div style={{ display: 'flex', gap: theme.spacing.sm }}>\n <button\n onClick={() => handleDirectiveAction(directive, 'execute')}\n disabled={isDisabled}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n backgroundColor: isDisabled\n ? theme.colors.textSecondary\n : theme.colors.success,\n color: '#fff',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n fontSize: theme.fontSizes.sm,\n fontWeight: 'bold',\n opacity: isDisabled ? 0.6 : 1,\n }}\n >\n {processingId === directive.directiveId ? 'Processing...' : 'Execute'}\n </button>\n <button\n onClick={() => handleDirectiveAction(directive, 'decline')}\n disabled={isDisabled}\n style={{\n flex: 1,\n padding: theme.spacing.sm,\n backgroundColor: isDisabled\n ? theme.colors.textSecondary\n : theme.colors.error,\n color: '#fff',\n border: 'none',\n borderRadius: theme.borderRadius,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n fontSize: theme.fontSizes.sm,\n fontWeight: 'bold',\n opacity: isDisabled ? 0.6 : 1,\n }}\n >\n Decline\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useAnalyticsResult } from '../../hooks/analytics/useAnalyticsResult';\nimport { MetricsPanel } from './MetricsPanel';\nimport { ObservationsPanel } from './ObservationsPanel';\nimport { DirectivesPanel } from './DirectivesPanel';\nimport type { Theme } from '../../types';\nimport type { OnDirectiveAction } from '../../types/analytics';\n\n// Refresh Icon SVG\nconst REFRESH_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n </svg>\n);\n\n// Back Arrow Icon SVG\nconst BACK_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </svg>\n);\n\n// Close Icon SVG\nconst CLOSE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\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\nexport interface AnalyticsReportProps {\n analyticsType: string;\n theme?: Theme;\n onDirectiveAction?: OnDirectiveAction;\n onRefresh?: () => void;\n onBack?: () => void;\n onClose?: () => void;\n}\n\nexport const AnalyticsReport: React.FC<AnalyticsReportProps> = ({\n analyticsType,\n theme: customTheme,\n onDirectiveAction,\n onRefresh,\n onBack,\n onClose,\n}) => {\n const { result, isLoading, error, refetch } = useAnalyticsResult(analyticsType);\n\n const handleRefresh = () => {\n refetch();\n if (onRefresh) {\n onRefresh();\n }\n };\n\n // Use a default theme if none provided\n const theme = customTheme || {\n colors: {\n background: '#ffffff',\n surface: '#f5f5f5',\n text: '#333333',\n textSecondary: '#666666',\n border: '#e0e0e0',\n primary: '#007bff',\n success: '#28a745',\n error: '#dc3545',\n secondary: '#6c757d',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n fontSizes: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '20px',\n xl: '24px',\n },\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n name: 'default',\n };\n\n return (\n <div\n style={{\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.colors.background,\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: theme.spacing.lg,\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: theme.spacing.sm }}>\n {onBack && (\n <button\n onClick={onBack}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n }}\n >\n {BACK_ICON_SVG}\n </button>\n )}\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes.xl,\n color: theme.colors.text,\n }}\n >\n {analyticsType}\n </h2>\n {result && (\n <div\n style={{\n fontSize: theme.fontSizes.xs,\n color: theme.colors.textSecondary,\n marginTop: '4px',\n }}\n >\n Last updated: {new Date(result.createdAt).toLocaleString()}\n </div>\n )}\n </div>\n </div>\n <div style={{ display: 'flex', gap: theme.spacing.sm }}>\n <button\n onClick={handleRefresh}\n disabled={isLoading}\n style={{\n background: 'none',\n border: 'none',\n cursor: isLoading ? 'not-allowed' : 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n opacity: isLoading ? 0.5 : 1,\n }}\n >\n {REFRESH_ICON_SVG}\n </button>\n {onClose && (\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n }}\n >\n {CLOSE_ICON_SVG}\n </button>\n )}\n </div>\n </div>\n\n {/* Content */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: theme.spacing.lg,\n }}\n >\n {isLoading ? (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n Loading analytics result...\n </div>\n ) : error ? (\n <div\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.error}`,\n color: theme.colors.error,\n }}\n >\n Error: {error.message}\n </div>\n ) : result ? (\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.xl }}>\n {/* Metrics */}\n {result.metrics.length > 0 && (\n <MetricsPanel metrics={result.metrics} theme={theme} />\n )}\n\n {/* Observations */}\n {result.observations.length > 0 && (\n <ObservationsPanel observations={result.observations} theme={theme} />\n )}\n\n {/* Directives */}\n {result.directives.length > 0 && (\n <DirectivesPanel\n directives={result.directives}\n theme={theme}\n onDirectiveAction={onDirectiveAction}\n onUpdate={refetch}\n />\n )}\n </div>\n ) : (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n No results available\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { AnalyticsReport } from './AnalyticsReport';\nimport type { Theme } from '../../types';\nimport type { AnalyticsConfig, OnDirectiveAction } from '../../types/analytics';\n\n// Close Icon SVG\nconst CLOSE_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\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\nexport interface AnalyticsDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n configs: AnalyticsConfig[];\n isLoading: boolean;\n theme: Theme;\n onDirectiveAction?: OnDirectiveAction;\n}\n\nexport const AnalyticsDrawer: React.FC<AnalyticsDrawerProps> = ({\n isOpen,\n onClose,\n configs,\n isLoading,\n theme,\n onDirectiveAction,\n}) => {\n const [selectedAnalytics, setSelectedAnalytics] = useState<string | null>(null);\n\n // Check if mobile\n const isMobile = typeof window !== 'undefined' && window.innerWidth < 768;\n\n const drawerStyles: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n right: 0,\n width: isMobile ? '100%' : '400px',\n height: '100%',\n backgroundColor: theme.colors.background,\n boxShadow: theme.boxShadow,\n zIndex: 1001,\n display: 'flex',\n flexDirection: 'column',\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n transition: 'transform 0.3s ease',\n };\n\n const overlayStyles: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 1000,\n opacity: isOpen ? 1 : 0,\n pointerEvents: isOpen ? 'auto' : 'none',\n transition: 'opacity 0.3s ease',\n };\n\n if (selectedAnalytics) {\n return (\n <>\n <div style={overlayStyles} onClick={onClose} />\n <div style={drawerStyles}>\n <AnalyticsReport\n analyticsType={selectedAnalytics}\n theme={theme}\n onDirectiveAction={onDirectiveAction}\n onBack={() => setSelectedAnalytics(null)}\n onClose={onClose}\n />\n </div>\n </>\n );\n }\n\n return (\n <>\n <div style={overlayStyles} onClick={onClose} />\n <div style={drawerStyles}>\n {/* Header */}\n <div\n style={{\n padding: theme.spacing.lg,\n borderBottom: `1px solid ${theme.colors.border}`,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes.xl,\n color: theme.colors.text,\n }}\n >\n Analytics\n </h2>\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '24px',\n color: theme.colors.text,\n padding: 0,\n }}\n >\n {CLOSE_ICON_SVG}\n </button>\n </div>\n\n {/* Content */}\n <div\n style={{\n flex: 1,\n overflowY: 'auto',\n padding: theme.spacing.lg,\n }}\n >\n {isLoading ? (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n Loading analytics...\n </div>\n ) : configs.length === 0 ? (\n <div style={{ textAlign: 'center', color: theme.colors.textSecondary }}>\n No analytics configured\n </div>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing.md }}>\n {configs.map((config) => (\n <div\n key={config.configId}\n onClick={() => config.isEnabled && setSelectedAnalytics(config.analyticsType)}\n style={{\n padding: theme.spacing.md,\n backgroundColor: theme.colors.surface,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n cursor: config.isEnabled ? 'pointer' : 'not-allowed',\n opacity: config.isEnabled ? 1 : 0.6,\n transition: 'transform 0.2s ease',\n }}\n onMouseEnter={(e) => {\n if (config.isEnabled) {\n e.currentTarget.style.transform = 'translateX(5px)';\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'translateX(0)';\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: theme.spacing.xs,\n }}\n >\n <h3\n style={{\n margin: 0,\n fontSize: theme.fontSizes.md,\n color: theme.colors.text,\n }}\n >\n {config.analyticsType}\n </h3>\n <span\n style={{\n fontSize: theme.fontSizes.xs,\n padding: '2px 8px',\n borderRadius: '12px',\n backgroundColor: config.isEnabled\n ? theme.colors.success\n : theme.colors.textSecondary,\n color: '#fff',\n }}\n >\n {config.isEnabled ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n <p\n style={{\n margin: 0,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.textSecondary,\n marginBottom: theme.spacing.xs,\n }}\n >\n {config.templateDescription}\n </p>\n <div\n style={{\n fontSize: theme.fontSizes.xs,\n color: theme.colors.textSecondary,\n }}\n >\n <div>Frequency: {config.frequency}</div>\n {config.lastExecutedAt && (\n <div>\n Last run: {new Date(config.lastExecutedAt).toLocaleString()}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </>\n );\n};\n","import React, { useState } from 'react';\nimport { useReactBridgeContext } from '../../provider/ReactBridgeProvider';\nimport { useAnalyticsConfigs } from '../../hooks/analytics/useAnalyticsConfigs';\nimport { AnalyticsDrawer } from './AnalyticsDrawer';\nimport type { Theme } from '../../types';\nimport type { OnDirectiveAction } from '../../types/analytics';\n\n// Analytics Icon SVG\nconst ANALYTICS_ICON_SVG = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\" />\n </svg>\n);\n\nexport interface AnalyticsWidgetProps {\n position?: 'bottom-right' | 'bottom-left';\n theme?: Theme;\n onDirectiveAction?: OnDirectiveAction;\n}\n\nexport const AnalyticsWidget: React.FC<AnalyticsWidgetProps> = ({\n position = 'bottom-right',\n theme: customTheme,\n onDirectiveAction,\n}) => {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = customTheme || contextTheme;\n const { configs, isLoading } = useAnalyticsConfigs();\n const [isOpen, setIsOpen] = useState(false);\n\n const enabledCount = configs.filter((c) => c.isEnabled).length;\n\n const positionStyles: React.CSSProperties =\n position === 'bottom-right'\n ? { right: theme.spacing.lg, bottom: theme.spacing.lg }\n : { left: theme.spacing.lg, bottom: theme.spacing.lg };\n\n return (\n <>\n {/* Floating Button */}\n <button\n onClick={() => setIsOpen(!isOpen)}\n style={{\n position: 'fixed',\n ...positionStyles,\n width: '60px',\n height: '60px',\n borderRadius: '50%',\n backgroundColor: theme.colors.primary,\n color: '#fff',\n border: 'none',\n boxShadow: theme.boxShadow,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '24px',\n zIndex: 1000,\n transition: 'transform 0.2s ease',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'scale(1.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n {ANALYTICS_ICON_SVG}\n {!isLoading && enabledCount > 0 && (\n <span\n style={{\n position: 'absolute',\n top: '-5px',\n right: '-5px',\n backgroundColor: theme.colors.error,\n color: '#fff',\n borderRadius: '50%',\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n fontWeight: 'bold',\n }}\n >\n {enabledCount}\n </span>\n )}\n </button>\n\n {/* Drawer */}\n {isOpen && (\n <AnalyticsDrawer\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n configs={configs}\n isLoading={isLoading}\n theme={theme}\n onDirectiveAction={onDirectiveAction}\n />\n )}\n </>\n );\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useState, useEffect } from 'react';\nimport { useAnalyticsConfigs } from '../../hooks/analytics/useAnalyticsConfigs';\nimport { useAnalyticsResult } from '../../hooks/analytics/useAnalyticsResult';\nimport { useDirectiveAction } from '../../hooks/analytics/useDirectiveAction';\nimport type { AnalyticsConfig, AnalyticsDirective } from '../../types/analytics';\nimport type { DirectiveActionCallback } from '../../types/analytics';\nimport './AnalyticsDashboard.css';\n\nexport interface AnalyticsDashboardProps {\n onDirectiveAction: DirectiveActionCallback;\n className?: string;\n showRefresh?: boolean;\n autoRefreshInterval?: number; // in seconds, 0 = disabled\n}\n\nexport function AnalyticsDashboard({\n onDirectiveAction,\n className = '',\n showRefresh = true,\n autoRefreshInterval = 0,\n}: AnalyticsDashboardProps) {\n const [selectedAnalytics, setSelectedAnalytics] = useState<string | null>(null);\n const [directiveFilter, setDirectiveFilter] = useState<'all' | 'proposed' | 'executed' | 'declined'>('all');\n\n // Fetch analytics configurations\n const {\n configs,\n isLoading: configsLoading,\n error: configsError,\n refetch: refetchConfigs,\n } = useAnalyticsConfigs();\n\n // Fetch latest result for selected analytics\n const {\n result,\n isLoading: resultLoading,\n error: resultError,\n refetch: refetchResult,\n } = useAnalyticsResult(selectedAnalytics);\n\n // Handle directive actions\n const { handleAction, isProcessing } = useDirectiveAction(onDirectiveAction);\n\n // Auto-select first analytics if none selected\n useEffect(() => {\n if (configs && configs.length > 0 && !selectedAnalytics) {\n setSelectedAnalytics(configs[0].analyticsType);\n }\n }, [configs, selectedAnalytics]);\n\n // Auto-refresh\n useEffect(() => {\n if (autoRefreshInterval > 0) {\n const interval = setInterval(() => {\n refetchConfigs();\n if (selectedAnalytics) {\n refetchResult();\n }\n }, autoRefreshInterval * 1000);\n return () => clearInterval(interval);\n }\n }, [autoRefreshInterval, selectedAnalytics, refetchConfigs, refetchResult]);\n\n const handleRefresh = () => {\n refetchConfigs();\n if (selectedAnalytics) {\n refetchResult();\n }\n };\n\n const handleDirectiveAction = async (directive: AnalyticsDirective, action: 'execute' | 'decline') => {\n await handleAction(directive, action);\n // Refetch result to get updated directive statuses\n refetchResult();\n };\n\n const filteredDirectives = result?.directives.filter(d => {\n if (directiveFilter === 'all') return true;\n return d.status === directiveFilter;\n }) || [];\n\n const selectedConfig = configs?.find(c => c.analyticsType === selectedAnalytics);\n\n return (\n <div className={`rb-analytics-dashboard ${className}`}>\n {/* Sidebar */}\n <div className=\"rb-analytics-sidebar\">\n <div className=\"rb-analytics-sidebar-header\">\n <h3>Analytics</h3>\n {showRefresh && (\n <button\n onClick={handleRefresh}\n disabled={configsLoading}\n className=\"rb-analytics-refresh-btn\"\n title=\"Refresh\"\n >\n ↻\n </button>\n )}\n </div>\n\n {configsLoading && (\n <div className=\"rb-analytics-loading\">Loading analytics...</div>\n )}\n\n {configsError && (\n <div className=\"rb-analytics-error\">\n Error loading analytics: {configsError.message}\n </div>\n )}\n\n {configs && configs.length === 0 && (\n <div className=\"rb-analytics-empty\">\n No analytics configured. Please configure analytics in your DirectivSys dashboard.\n </div>\n )}\n\n {configs && configs.length > 0 && (\n <div className=\"rb-analytics-list\">\n {configs.map((config) => (\n <button\n key={config.configId}\n onClick={() => setSelectedAnalytics(config.analyticsType)}\n className={`rb-analytics-item ${\n selectedAnalytics === config.analyticsType ? 'active' : ''\n } ${!config.isEnabled ? 'disabled' : ''}`}\n >\n <div className=\"rb-analytics-item-header\">\n <span className=\"rb-analytics-item-name\">{config.analyticsType}</span>\n {!config.isEnabled && (\n <span className=\"rb-analytics-item-badge disabled\">Disabled</span>\n )}\n </div>\n <div className=\"rb-analytics-item-description\">\n {config.templateDescription}\n </div>\n <div className=\"rb-analytics-item-footer\">\n <span className=\"rb-analytics-item-frequency\">{config.frequency}</span>\n {config.lastExecutedAt && (\n <span className=\"rb-analytics-item-date\">\n Last: {new Date(config.lastExecutedAt).toLocaleDateString()}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Main Content */}\n <div className=\"rb-analytics-main\">\n {!selectedAnalytics && (\n <div className=\"rb-analytics-empty-state\">\n <h3>No Analytics Selected</h3>\n <p>Select an analytics type from the sidebar to view results.</p>\n </div>\n )}\n\n {selectedAnalytics && resultLoading && (\n <div className=\"rb-analytics-loading\">Loading results...</div>\n )}\n\n {selectedAnalytics && resultError && (\n <div className=\"rb-analytics-error\">\n Error loading results: {resultError.message}\n </div>\n )}\n\n {selectedAnalytics && !resultLoading && !result && (\n <div className=\"rb-analytics-empty-state\">\n <h3>No Results Available</h3>\n <p>This analytics has not been executed yet. Results will appear here once the first run completes.</p>\n </div>\n )}\n\n {selectedAnalytics && result && (\n <div className=\"rb-analytics-content\">\n {/* Header */}\n <div className=\"rb-analytics-content-header\">\n <div>\n <h2>{selectedConfig?.analyticsType}</h2>\n <p className=\"rb-analytics-content-date\">\n Generated: {new Date(result.createdAt).toLocaleString()}\n </p>\n </div>\n </div>\n\n {/* Metrics */}\n {result.metrics && result.metrics.length > 0 && (\n <div className=\"rb-analytics-section\">\n <h3 className=\"rb-analytics-section-title\">Metrics</h3>\n <div className=\"rb-analytics-metrics-grid\">\n {result.metrics.map((metric, index) => (\n <div key={index} className={`rb-analytics-metric-card status-${metric.status}`}>\n <div className=\"rb-analytics-metric-header\">\n <span className=\"rb-analytics-metric-name\">{metric.name}</span>\n <span className={`rb-analytics-metric-status ${metric.status}`}>\n {metric.status}\n </span>\n </div>\n <div className=\"rb-analytics-metric-value\">\n {metric.value} {metric.unit}\n </div>\n <div className=\"rb-analytics-metric-explanation\">\n {metric.explanation}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Observations */}\n {result.observations && result.observations.length > 0 && (\n <div className=\"rb-analytics-section\">\n <h3 className=\"rb-analytics-section-title\">Observations</h3>\n <div className=\"rb-analytics-observations-list\">\n {result.observations.map((observation, index) => (\n <div key={index} className={`rb-analytics-observation severity-${observation.severity}`}>\n <div className=\"rb-analytics-observation-header\">\n <span className={`rb-analytics-observation-severity ${observation.severity}`}>\n {observation.severity}\n </span>\n <span className=\"rb-analytics-observation-scope\">{observation.scope}</span>\n </div>\n <div className=\"rb-analytics-observation-text\">{observation.text}</div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Directives */}\n {result.directives && result.directives.length > 0 && (\n <div className=\"rb-analytics-section\">\n <div className=\"rb-analytics-directives-header\">\n <h3 className=\"rb-analytics-section-title\">Recommended Actions</h3>\n <div className=\"rb-analytics-directive-filters\">\n <button\n onClick={() => setDirectiveFilter('all')}\n className={directiveFilter === 'all' ? 'active' : ''}\n >\n All ({result.directives.length})\n </button>\n <button\n onClick={() => setDirectiveFilter('proposed')}\n className={directiveFilter === 'proposed' ? 'active' : ''}\n >\n Proposed ({result.directives.filter(d => d.status === 'proposed').length})\n </button>\n <button\n onClick={() => setDirectiveFilter('executed')}\n className={directiveFilter === 'executed' ? 'active' : ''}\n >\n Executed ({result.directives.filter(d => d.status === 'executed').length})\n </button>\n <button\n onClick={() => setDirectiveFilter('declined')}\n className={directiveFilter === 'declined' ? 'active' : ''}\n >\n Declined ({result.directives.filter(d => d.status === 'declined').length})\n </button>\n </div>\n </div>\n\n {filteredDirectives.length === 0 && (\n <div className=\"rb-analytics-empty-state\">\n <p>No directives match the selected filter.</p>\n </div>\n )}\n\n <div className=\"rb-analytics-directives-list\">\n {filteredDirectives.map((directive) => (\n <div key={directive.directiveId} className={`rb-analytics-directive status-${directive.status}`}>\n <div className=\"rb-analytics-directive-header\">\n <div>\n <span className=\"rb-analytics-directive-action\">{directive.action}</span>\n <span className={`rb-analytics-directive-priority priority-${directive.priority}`}>\n Priority: {directive.priority}\n </span>\n </div>\n <span className={`rb-analytics-directive-status ${directive.status}`}>\n {directive.status}\n </span>\n </div>\n\n <div className=\"rb-analytics-directive-rationale\">\n {directive.rationale}\n </div>\n\n {directive.parameters && directive.parameters.length > 0 && (\n <div className=\"rb-analytics-directive-parameters\">\n <strong>Parameters:</strong>\n <ul>\n {directive.parameters.map((param, index) => (\n <li key={index}>\n <code>{param.name}</code>: {param.value}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {directive.status === 'proposed' && (\n <div className=\"rb-analytics-directive-actions\">\n <button\n onClick={() => handleDirectiveAction(directive, 'execute')}\n disabled={isProcessing}\n className=\"rb-analytics-directive-btn execute\"\n >\n {isProcessing ? 'Processing...' : 'Execute'}\n </button>\n <button\n onClick={() => handleDirectiveAction(directive, 'decline')}\n disabled={isProcessing}\n className=\"rb-analytics-directive-btn decline\"\n >\n Decline\n </button>\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"names":["DEFAULT_BASE_URL","MIC_ICON_SVG","PLUS_ICON_SVG","CLOSE_ICON_SVG"],"mappings":"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","x_google_ignoreList":[0,21]}
|