reactbridge-sdk 0.2.17 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.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","../src/components/analytics/AnalyticsDashboard.tsx","../src/utils/request-cache.ts","../src/hooks/analytics/useReportData.ts","../src/utils/date-range.ts","../src/hooks/analytics/useDateRange.ts","../src/components/reports/DateRangeSelector.tsx","../src/components/reports/LoadingState.tsx","../src/components/reports/ReportLayout.tsx","../src/components/reports/MetricCard.tsx","../src/components/reports/TrendChart.tsx","../src/components/reports/ExecutiveDashboard.tsx","../src/components/reports/ProgressBar.tsx","../src/components/reports/DataTable.tsx","../src/components/reports/SupplyChainRisk.tsx","../src/components/reports/StatusBadge.tsx","../src/components/reports/ExecutionAuditTrail.tsx","../src/components/reports/HealthGauge.tsx","../src/components/reports/PortfolioHealth.tsx","../src/components/reports/DataQualityAutomation.tsx","../src/components/ReportsDashboard.tsx","../src/components/reports/RiskMatrix.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 {\n OrchestratorRequest,\n OrchestratorResponse,\n ReactBridgeConfig,\n} from \"../types\";\nimport type {\n ExecutiveDashboardReport,\n SupplyChainRiskReport,\n ExecutionAuditTrailReport,\n PortfolioHealthReport,\n DataQualityAutomationReport,\n ReportDateRange,\n ExecutionAuditTrailParams,\n} from \"../types/reports\";\n\nconst DEFAULT_BASE_URL =\n \"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(\n request: OrchestratorRequest,\n ): 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 =\n typeof this.config.timeout === \"number\"\n ? this.config.timeout\n : 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)\n formData.append(\"userPreferences\", request.userPreferences);\n if (request.userRecentActivity)\n formData.append(\"userRecentActivity\", request.userRecentActivity);\n if (request.interfaceState)\n formData.append(\n \"InterfaceStateJson\",\n JSON.stringify(request.interfaceState),\n );\n if (request.sessionId) formData.append(\"sessionId\", request.sessionId);\n if (request.modalityHint)\n 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(\n `API request failed: ${response.status} ${response.statusText}`,\n );\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 // Pass the FULL ToolResult object to the orchestrator, not just the summary\n // The orchestrator needs: status, result_items, and detailed_data for sequential execution\n const toolResultJson = JSON.stringify(toolResult, null, 2);\n \n const request: OrchestratorRequest = {\n ...originalRequest,\n sessionId,\n query: `[Tool Result] ${toolResultJson}`,\n // CRITICAL: Remove document/image from subsequent requests\n // If we keep them, the orchestrator will reprocess the PDF on every tool result\n // This causes sequential execution to restart instead of continuing\n document: undefined,\n image: undefined,\n modalityHint: undefined,\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 /**\n * Report API Methods - Call analytics endpoints directly\n */\n\n private async fetchReport<T>(\n endpoint: string,\n params?: Record<string, string>,\n ): Promise<T> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = new URL(`${baseURL}/api/reports/${endpoint}`);\n\n // Add query parameters if provided\n if (params) {\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n url.searchParams.append(key, params[key]);\n }\n }\n }\n\n try {\n const response = await fetch(url.toString(), {\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 const errorMessage = this.getErrorMessage(response.status);\n throw new Error(errorMessage);\n }\n\n return (await response.json()) as T;\n } catch (error) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(\"Failed to fetch report data\");\n }\n }\n\n private getErrorMessage(status: number): string {\n switch (status) {\n case 401:\n return \"Unauthorized: Invalid API key\";\n case 404:\n return \"Report endpoint not found\";\n case 500:\n return \"Server error: Unable to fetch report data\";\n default:\n return `API Error: ${status}`;\n }\n }\n\n async getExecutiveDashboard(\n params?: ReportDateRange,\n ): Promise<ExecutiveDashboardReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<ExecutiveDashboardReport>(\n \"executive-dashboard\",\n queryParams,\n );\n }\n\n async getSupplyChainRisk(\n params?: ReportDateRange,\n ): Promise<SupplyChainRiskReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<SupplyChainRiskReport>(\n \"supply-chain-risk\",\n queryParams,\n );\n }\n\n async getExecutionAuditTrail(\n params?: ExecutionAuditTrailParams,\n ): Promise<ExecutionAuditTrailReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n if (params?.directiveType) queryParams.directiveType = params.directiveType;\n return this.fetchReport<ExecutionAuditTrailReport>(\n \"execution-audit-trail\",\n queryParams,\n );\n }\n\n async getPortfolioHealth(\n params?: ReportDateRange,\n ): Promise<PortfolioHealthReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<PortfolioHealthReport>(\n \"portfolio-health\",\n queryParams,\n );\n }\n\n async getDataQualityAutomation(\n params?: ReportDateRange,\n ): Promise<DataQualityAutomationReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<DataQualityAutomationReport>(\n \"data-quality-automation\",\n queryParams,\n );\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 ||\n (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, {\n createContext,\n useContext,\n ReactNode,\n useState,\n useRef,\n} from \"react\";\nimport type {\n ReactBridgeConfig,\n Theme,\n STTProvider,\n TTSProvider,\n} 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(\n () => new ReactBridgeAPI(fullConfig),\n [fullConfig.apiKey, fullConfig.baseURL, 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 (\n previous.interfaceState.currentPageName !==\n current.interfaceState.currentPageName\n ) {\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 (\n queryOrOptions:\n | string\n | { image?: File; document?: File; query?: string },\n fromVoiceInput: boolean = false,\n ) => {\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\n ? `${messageContent} [Image: ${image.name}]`\n : `[Image: ${image.name}]`;\n } else if (document) {\n messageContent = messageContent\n ? `${messageContent} [Document: ${document.name}]`\n : `[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 // Process tool calls in a loop to support chained/sequential tool execution\n let currentToolCall: typeof response.toolCall | null = response.toolCall;\n let currentResponse = response;\n let toolCallCount = 0;\n const maxToolCalls = 50; // Prevent infinite loops\n\n while (currentToolCall && toolCallCount < maxToolCalls) {\n toolCallCount++;\n\n // Execute the current tool\n const toolResult = await onIntentDetected(currentToolCall);\n\n // Step 3: Send tool result back to orchestrator\n if (lastRequestRef.current && currentResponse.sessionId) {\n const resultResponse = await api.sendToolResult(\n currentResponse.sessionId,\n toolResult,\n lastRequestRef.current,\n );\n\n // Add assistant message with tool result context\n const finalMessage: ChatMessage = {\n id: `assistant-final-${Date.now()}-${toolCallCount}`,\n role: \"assistant\",\n content: resultResponse.message,\n timestamp: new Date(),\n toolCall: resultResponse.toolCall,\n };\n setMessages((prev) => [...prev, finalMessage]);\n\n // Trigger TTS for final response only if input came from voice (first iteration only)\n if (fromVoiceInput && toolCallCount === 1) {\n ttsProvider.speak(resultResponse.message);\n }\n if (onAgentResponse && toolCallCount === 1) {\n onAgentResponse(resultResponse.message);\n }\n\n // Check if there's another tool call in the response (chained execution)\n if (resultResponse.toolCall) {\n currentToolCall = resultResponse.toolCall;\n currentResponse = resultResponse;\n } else {\n // No more tool calls, exit loop\n currentToolCall = null;\n }\n } else {\n // Cannot send result, exit loop\n currentToolCall = null;\n }\n }\n\n if (toolCallCount >= maxToolCalls) {\n console.warn(\"Tool call loop exceeded maximum iterations. Possible infinite loop detected.\");\n }\n } catch (toolError) {\n const errorMessage =\n 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(\n toolError instanceof Error\n ? toolError\n : new Error(errorMessage),\n );\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 }, [\n sttProvider,\n sendChatQuery,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onError,\n ]);\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, useCallback } 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// Expandable Message Component with Show More functionality\nconst ExpandableMessage = ({\n content,\n isUser,\n theme,\n isExpanded,\n onToggleExpand,\n}: {\n content: string;\n isUser: boolean;\n theme: any;\n isExpanded: boolean;\n onToggleExpand: () => void;\n}) => {\n const characterLimit = 300;\n const isLongMessage = content.length > characterLimit;\n const displayText = isExpanded ? content : content.substring(0, characterLimit);\n\n return (\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 wordWrap: \"break-word\",\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"break-word\",\n }}\n >\n <div style={{ marginBottom: isLongMessage && !isExpanded ? \"8px\" : \"0\" }}>\n {displayText}\n </div>\n {isLongMessage && (\n <button\n onClick={onToggleExpand}\n style={{\n background: \"none\",\n border: \"none\",\n color: isUser ? \"#ffffff\" : theme.colors.primary,\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: \"0\",\n marginTop: isExpanded ? \"8px\" : \"0\",\n fontSize: theme.fontSizes.sm,\n fontWeight: \"bold\",\n }}\n >\n {isExpanded ? \"Show less\" : \"Show more...\"}\n </button>\n )}\n </div>\n );\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 // Track expanded messages by ID\n const [expandedMessages, setExpandedMessages] = useState<Set<string>>(\n new Set(),\n );\n // Track textarea height\n const [textareaHeight, setTextareaHeight] = useState<number>(40);\n\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(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 // Auto-scroll to bottom when widget opens\n useEffect(() => {\n if (isOpen && renderMode === \"standard\") {\n setTimeout(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, 100);\n }\n }, [isOpen, renderMode]);\n\n // Handle textarea height adjustment\n const handleTextareaChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const textarea = e.target;\n setInputValue(textarea.value);\n\n // Reset height to calculate scroll height\n textarea.style.height = \"auto\";\n const scrollHeight = textarea.scrollHeight;\n const lineHeight = parseInt(\n window.getComputedStyle(textarea).lineHeight,\n );\n const maxHeight = lineHeight * 3; // 3 lines max\n\n if (scrollHeight <= maxHeight) {\n textarea.style.height = scrollHeight + \"px\";\n setTextareaHeight(scrollHeight);\n } else {\n textarea.style.height = maxHeight + \"px\";\n textarea.style.overflowY = \"auto\";\n setTextareaHeight(maxHeight);\n }\n },\n [],\n );\n\n // Handle key down for Shift+Enter and Enter submission\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n if (e.shiftKey) {\n // Shift+Enter: Allow new line (default behavior)\n return;\n } else {\n // Enter alone: Submit\n e.preventDefault();\n const form = e.currentTarget.closest(\"form\");\n if (form) {\n form.dispatchEvent(\n new Event(\"submit\", { bubbles: true, cancelable: true }),\n );\n }\n }\n }\n },\n [],\n );\n\n // Toggle message expansion\n const toggleMessageExpansion = (messageId: string) => {\n setExpandedMessages((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(messageId)) {\n newSet.delete(messageId);\n } else {\n newSet.add(messageId);\n }\n return newSet;\n });\n };\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 && renderMode === \"standard\") {\n setIsOpen(false);\n }\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isUploadMenuOpen, isOpen, renderMode]);\n\n // Add scrollbar styling for textareas\n useEffect(() => {\n const styleId = \"react-bridge-textarea-styles\";\n \n // Check if styles are already injected\n if (!document.getElementById(styleId)) {\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = `\n .react-bridge-textarea {\n scrollbar-width: thin;\n scrollbar-color: rgba(0, 0, 0, 0.3) transparent;\n }\n \n .react-bridge-textarea::-webkit-scrollbar {\n width: 6px;\n }\n \n .react-bridge-textarea::-webkit-scrollbar-track {\n background: transparent;\n }\n \n .react-bridge-textarea::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.3);\n border-radius: 3px;\n }\n \n .react-bridge-textarea::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.5);\n }\n `;\n document.head.appendChild(style);\n }\n\n return () => {\n // Optional: cleanup if needed\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 setTextareaHeight(40);\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n textareaRef.current.style.overflowY = \"hidden\";\n }\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 const isExpanded = expandedMessages.has(message.id);\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 <ExpandableMessage\n content={message.content}\n isUser={isUser}\n theme={theme}\n isExpanded={isExpanded}\n onToggleExpand={() => toggleMessageExpansion(message.id)}\n />\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: \"flex-end\",\n }}\n >\n <textarea\n ref={textareaRef}\n value={inputValue}\n onChange={handleTextareaChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={isLoading}\n className=\"react-bridge-textarea\"\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 fontFamily: \"inherit\",\n resize: \"none\",\n minHeight: \"40px\",\n maxHeight: \"120px\",\n height: `${textareaHeight}px`,\n scrollbarWidth: \"thin\",\n } as React.CSSProperties}\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 &times;\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\n ? renderMessage(message)\n : 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: \"flex-end\",\n }}\n >\n <textarea\n ref={textareaRef}\n value={inputValue}\n onChange={handleTextareaChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={isLoading}\n className=\"react-bridge-textarea\"\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 fontFamily: \"inherit\",\n resize: \"none\",\n minHeight: \"40px\",\n maxHeight: \"120px\",\n height: `${textareaHeight}px`,\n scrollbarWidth: \"thin\",\n } as React.CSSProperties}\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, useCallback } from \"react\";\nimport { useReactBridge } from \"../hooks/useReactBridge\";\nimport { useReactBridgeContext } from \"../provider/ReactBridgeProvider\";\nimport type {\n OnIntentDetected,\n InterfaceState,\n Theme,\n CurrentContext,\n} 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\n// Expandable Message Component for Search Results\nconst SearchResultItem = ({\n content,\n theme,\n isExpanded,\n onToggleExpand,\n}: {\n content: string;\n theme: any;\n isExpanded: boolean;\n onToggleExpand: () => void;\n}) => {\n const characterLimit = 300;\n const isLongMessage = content.length > characterLimit;\n const displayText = isExpanded ? content : content.substring(0, characterLimit);\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n }}\n >\n <div\n style={{\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n color: theme.colors.text,\n }}\n >\n {displayText}\n </div>\n {isLongMessage && (\n <button\n onClick={onToggleExpand}\n style={{\n background: \"none\",\n border: \"none\",\n color: theme.colors.primary,\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: \"0\",\n textAlign: \"left\",\n fontSize: theme.fontSizes.sm,\n fontWeight: \"bold\",\n }}\n >\n {isExpanded ? \"Show less\" : \"Show more...\"}\n </button>\n )}\n </div>\n );\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 {\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 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 [expandedMessages, setExpandedMessages] = useState<Set<string>>(\n new Set(),\n );\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 (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\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 =\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 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 = [\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"text/plain\",\n ];\n\n const allowedTypes = file.type.startsWith(\"image/\")\n ? imageTypes\n : documentTypes;\n\n if (!allowedTypes.includes(file.type)) {\n if (onError) {\n onError(\n new Error(\n `Invalid file type. Please select a valid ${file.type.startsWith(\"image/\") ? \"image\" : \"document\"} file.`,\n ),\n );\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(\n new Error(\n \"File size too large. Please select a file smaller than 10MB.\",\n ),\n );\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 // Toggle message expansion\n const toggleMessageExpansion = useCallback((messageId: string) => {\n setExpandedMessages((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(messageId)) {\n newSet.delete(messageId);\n } else {\n newSet.add(messageId);\n }\n return newSet;\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/\")\n ? selectedFile\n : undefined,\n document: selectedFile.type.startsWith(\"image/\")\n ? undefined\n : 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 .reverse();\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={\n selectedFile ? `Search with ${selectedFile.name}...` : placeholder\n }\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:\n isLoading || (!inputValue.trim() && !selectedFile)\n ? \"not-allowed\"\n : \"pointer\",\n opacity:\n 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\n style={{\n flex: 1,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n }}\n >\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 }}\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 <SearchResultItem\n content={message.content}\n theme={theme}\n isExpanded={expandedMessages.has(message.id)}\n onToggleExpand={() => toggleMessageExpansion(message.id)}\n />\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(\n baseTheme: Theme,\n overrides: Partial<Theme>,\n): 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 =\n \"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(\n `Failed to fetch analytics configs: ${response.statusText}`,\n );\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(\n `No results found for analytics type: ${analyticsType}`,\n );\n }\n throw new Error(\n `Failed to fetch analytics result: ${response.statusText}`,\n );\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(\n `Failed to update directive status: ${response.statusText}`,\n );\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> = ({\n metrics,\n theme,\n}) => {\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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\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 {\n AnalyticsDirective,\n DirectiveActionResult,\n} 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 {\n AnalyticsDirective,\n OnDirectiveAction,\n} 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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\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} (\n {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\n ? \"Processing...\"\n : \"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 } =\n 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\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n }}\n >\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\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xl,\n }}\n >\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\n observations={result.observations}\n theme={theme}\n />\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\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\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>(\n null,\n );\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\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\n Loading analytics...\n </div>\n ) : configs.length === 0 ? (\n <div\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\n No analytics configured\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n {configs.map((config) => (\n <div\n key={config.configId}\n onClick={() =>\n config.isEnabled &&\n setSelectedAnalytics(config.analyticsType)\n }\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:{\" \"}\n {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 <>\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 40 40\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 10 L 35 20 L 10 30 L 15 20 Z\" fill=\"currentColor\"/>\n </svg>\n {/* <span className=\"absolute -top-1 -right-1 flex h-4 w-4\">\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-accent-red opacity-75\"></span>\n <span className=\"relative inline-flex rounded-full h-4 w-4 bg-accent-red text-[9px] font-bold text-white items-center justify-center\">5</span>\n </span> */}\n </>\n);\n\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\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","import React, { useState, useEffect } from \"react\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { useAnalyticsConfigs } from \"../../hooks/analytics/useAnalyticsConfigs\";\nimport { useAnalyticsResult } from \"../../hooks/analytics/useAnalyticsResult\";\nimport { useDirectiveAction } from \"../../hooks/analytics/useDirectiveAction\";\nimport type {\n AnalyticsDirective,\n DirectiveActionCallback,\n} from \"../../types/analytics\";\nimport type { Theme } from \"../../types\";\n\nexport interface AnalyticsDashboardProps {\n onDirectiveAction: DirectiveActionCallback;\n className?: string;\n showRefresh?: boolean;\n autoRefreshInterval?: number; // in seconds, 0 = disabled\n theme?: Theme;\n}\n\nexport function AnalyticsDashboard({\n onDirectiveAction,\n className = \"\",\n showRefresh = true,\n autoRefreshInterval = 0,\n theme: customTheme,\n}: AnalyticsDashboardProps) {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = customTheme || contextTheme;\n const [selectedAnalytics, setSelectedAnalytics] = useState<string | null>(\n null,\n );\n const [directiveFilter, setDirectiveFilter] = useState<\n \"all\" | \"proposed\" | \"executed\" | \"declined\"\n >(\"all\");\n // Directive type filter (by action)\n const [directiveType, setDirectiveType] = useState<string>(\"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 const [processingId, setProcessingId] = useState<string | null>(null);\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 (\n directive: AnalyticsDirective,\n action: \"execute\" | \"decline\",\n ) => {\n setProcessingId(directive.directiveId);\n await handleAction(directive, action);\n setProcessingId(null);\n // Refetch result to get updated directive statuses\n refetchResult();\n };\n\n // Get all unique directive types (actions)\n const directiveTypes = React.useMemo(() => {\n if (!result?.directives) return [];\n const types = Array.from(new Set(result.directives.map((d) => d.action)));\n return types;\n }, [result?.directives]);\n\n // Filter directives by status and type\n const filteredDirectives =\n result?.directives.filter((d) => {\n const statusMatch =\n directiveFilter === \"all\" || d.status === directiveFilter;\n const typeMatch = directiveType === \"all\" || d.action === directiveType;\n return statusMatch && typeMatch;\n }) || [];\n\n const selectedConfig = configs?.find(\n (c) => c.analyticsType === selectedAnalytics,\n );\n\n const proposedCount =\n result?.directives.filter((d) => d.status === \"proposed\").length || 0;\n const executedCount =\n result?.directives.filter((d) => d.status === \"executed\").length || 0;\n const declinedCount =\n result?.directives.filter((d) => d.status === \"declined\").length || 0;\n\n const containerStyle: React.CSSProperties = {\n display: \"flex\",\n gap: theme.spacing.lg,\n width: \"100%\",\n minHeight: \"540px\",\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n padding: theme.spacing.lg,\n };\n\n const sidebarStyle: React.CSSProperties = {\n width: \"320px\",\n borderRight: `1px solid ${theme.colors.border}`,\n paddingRight: theme.spacing.lg,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n };\n\n const listItemStyle = (\n isActive: boolean,\n isDisabled: boolean,\n ): React.CSSProperties => ({\n width: \"100%\",\n textAlign: \"left\",\n padding: theme.spacing.md,\n backgroundColor: isActive ? theme.colors.primary : theme.colors.surface,\n color: isActive ? \"#fff\" : theme.colors.text,\n border: `1px solid ${isActive ? theme.colors.primary : theme.colors.border}`,\n borderRadius: theme.borderRadius,\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n opacity: isDisabled ? 0.6 : 1,\n transition: \"transform 0.15s ease, box-shadow 0.15s ease\",\n boxShadow: isActive ? theme.boxShadow : \"none\",\n });\n\n const pillStyle = (bg: string): React.CSSProperties => ({\n fontSize: theme.fontSizes.xs,\n padding: \"2px 8px\",\n borderRadius: \"999px\",\n backgroundColor: bg,\n color: \"#fff\",\n fontWeight: 600,\n });\n\n const placeholderStyle: React.CSSProperties = {\n flex: 1,\n minHeight: \"420px\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: theme.spacing.sm,\n color: theme.colors.textSecondary,\n textAlign: \"center\",\n };\n\n const cardStyle: React.CSSProperties = {\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n padding: theme.spacing.md,\n };\n\n const statusBadgeStyle = (status: string): React.CSSProperties => {\n const colors: Record<string, { bg: string; text: string }> = {\n proposed: { bg: theme.colors.primary, text: \"#fff\" },\n executed: { bg: theme.colors.success, text: \"#fff\" },\n declined: { bg: theme.colors.error, text: \"#fff\" },\n ok: { bg: \"#d1fae5\", text: \"#065f46\" },\n warning: { bg: \"#fef3c7\", text: \"#92400e\" },\n critical: { bg: \"#fee2e2\", text: \"#991b1b\" },\n high: { bg: \"#fee2e2\", text: \"#991b1b\" },\n medium: { bg: \"#fef3c7\", text: \"#92400e\" },\n low: { bg: \"#e0ecff\", text: \"#1e3a8a\" },\n };\n\n const palette = colors[status] || {\n bg: theme.colors.surface,\n text: theme.colors.text,\n };\n return {\n fontSize: theme.fontSizes.xs,\n padding: \"2px 8px\",\n borderRadius: \"999px\",\n backgroundColor: palette.bg,\n color: palette.text,\n fontWeight: 700,\n textTransform: \"capitalize\",\n };\n };\n\n const directiveCardStyle = (status: string): React.CSSProperties => ({\n ...cardStyle,\n borderLeft: `4px solid ${\n status === \"executed\"\n ? theme.colors.success\n : status === \"declined\"\n ? theme.colors.error\n : theme.colors.primary\n }`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n });\n\n return (\n <div className={className} style={containerStyle}>\n <div style={sidebarStyle}>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>Analytics</h3>\n {showRefresh && (\n <button\n type=\"button\"\n onClick={handleRefresh}\n disabled={configsLoading}\n style={{\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.surface,\n color: theme.colors.text,\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderRadius: theme.borderRadius,\n cursor: configsLoading ? \"not-allowed\" : \"pointer\",\n }}\n >\n {configsLoading ? \"Refreshing...\" : \"Refresh\"}\n </button>\n )}\n </div>\n\n {configsLoading && (\n <div style={placeholderStyle}>Loading analytics...</div>\n )}\n\n {configsError && (\n <div style={placeholderStyle}>\n Error loading analytics: {configsError.message}\n </div>\n )}\n\n {configs && configs.length === 0 && (\n <div style={placeholderStyle}>\n No analytics configured. Configure analytics in your DirectivSys\n dashboard.\n </div>\n )}\n\n {configs && configs.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n }}\n >\n {configs.map((config) => {\n const isActive = selectedAnalytics === config.analyticsType;\n return (\n <button\n key={config.configId}\n type=\"button\"\n onClick={() =>\n config.isEnabled &&\n setSelectedAnalytics(config.analyticsType)\n }\n style={listItemStyle(isActive, !config.isEnabled)}\n disabled={!config.isEnabled}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: theme.spacing.xs,\n width: \"100%\",\n }}\n >\n <span\n style={{ fontSize: theme.fontSizes.md, fontWeight: 600 }}\n >\n {config.analyticsType}\n </span>\n {!config.isEnabled && (\n <span style={pillStyle(theme.colors.textSecondary)}>\n Disabled\n </span>\n )}\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: isActive\n ? \"rgba(255,255,255,0.9)\"\n : theme.colors.textSecondary,\n marginBottom: theme.spacing.xs,\n }}\n >\n {config.templateDescription}\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: theme.fontSizes.xs,\n color: isActive\n ? \"rgba(255,255,255,0.8)\"\n : theme.colors.textSecondary,\n }}\n >\n <span style={{ textTransform: \"capitalize\" }}>\n {config.frequency}\n </span>\n {config.lastExecutedAt && (\n <span>\n Last:{\" \"}\n {new Date(config.lastExecutedAt).toLocaleDateString()}\n </span>\n )}\n </div>\n </button>\n );\n })}\n </div>\n )}\n </div>\n\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.lg,\n }}\n >\n {!selectedAnalytics && (\n <div style={placeholderStyle}>\n <h3 style={{ margin: 0, color: theme.colors.text }}>\n No analytics selected\n </h3>\n <p style={{ margin: 0 }}>\n Select an analytics type from the left to view results.\n </p>\n </div>\n )}\n\n {selectedAnalytics && resultLoading && (\n <div style={placeholderStyle}>Loading results...</div>\n )}\n\n {selectedAnalytics && resultError && (\n <div style={placeholderStyle}>\n Error loading results: {resultError.message}\n </div>\n )}\n\n {selectedAnalytics && !resultLoading && !result && (\n <div style={placeholderStyle}>\n <h3 style={{ margin: 0, color: theme.colors.text }}>\n No results yet\n </h3>\n <p style={{ margin: 0 }}>\n This analytics has not run yet. Results will appear after the\n first run.\n </p>\n </div>\n )}\n\n {selectedAnalytics && result && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.lg,\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xs,\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes.xl,\n color: theme.colors.text,\n }}\n >\n {selectedConfig?.analyticsType}\n </h2>\n <p\n style={{\n margin: 0,\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n Generated: {new Date(result.createdAt).toLocaleString()}\n </p>\n </div>\n\n {result.metrics && result.metrics.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>\n Metrics\n </h3>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns:\n \"repeat(auto-fill, minmax(220px, 1fr))\",\n gap: theme.spacing.md,\n }}\n >\n {result.metrics.map((metric, index) => (\n <div\n key={index}\n style={{\n ...cardStyle,\n borderLeft: `4px solid ${\n metric.status === \"ok\"\n ? theme.colors.success\n : metric.status === \"warning\"\n ? \"#f59e0b\"\n : theme.colors.error\n }`,\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 fontWeight: 600,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n display: \"inline-block\",\n }}\n title={metric.name}\n >\n {metric.name}\n </span>\n <span style={statusBadgeStyle(metric.status)}>\n {metric.status}\n </span>\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.xl,\n fontWeight: 700,\n }}\n >\n {metric.value} {metric.unit}\n </div>\n <div\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {metric.explanation}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {result.observations && result.observations.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>\n Observations\n </h3>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n }}\n >\n {result.observations.map((observation, index) => (\n <div\n key={index}\n style={{\n ...cardStyle,\n borderLeft: `4px solid ${\n observation.severity === \"high\"\n ? theme.colors.error\n : observation.severity === \"medium\"\n ? \"#f59e0b\"\n : theme.colors.primary\n }`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xs,\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: theme.spacing.sm,\n alignItems: \"center\",\n }}\n >\n <span style={statusBadgeStyle(observation.severity)}>\n {observation.severity}\n </span>\n <span\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {observation.scope}\n </span>\n </div>\n <div\n style={{\n color: theme.colors.text,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {observation.text}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {result.directives && result.directives.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: theme.spacing.sm,\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>\n Recommended actions\n </h3>\n <div style={{ display: \"flex\", gap: theme.spacing.xs }}>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"all\")}\n style={{\n ...pillStyle(\n directiveFilter === \"all\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"all\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n All ({result.directives.length})\n </button>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"proposed\")}\n style={{\n ...pillStyle(\n directiveFilter === \"proposed\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"proposed\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n Proposed ({proposedCount})\n </button>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"executed\")}\n style={{\n ...pillStyle(\n directiveFilter === \"executed\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"executed\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n Executed ({executedCount})\n </button>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"declined\")}\n style={{\n ...pillStyle(\n directiveFilter === \"declined\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"declined\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n Declined ({declinedCount})\n </button>\n </div>\n {/* Directive type filter select (only if >1 type) */}\n {directiveTypes.length > 1 && (\n <select\n value={directiveType}\n onChange={(e) => setDirectiveType(e.target.value)}\n style={{\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n background: theme.colors.surface,\n color: theme.colors.text,\n fontSize: theme.fontSizes.sm,\n fontWeight: 500,\n outline: \"none\",\n minWidth: 120,\n marginLeft: theme.spacing.sm,\n cursor: \"pointer\",\n }}\n >\n <option value=\"all\">All types</option>\n {directiveTypes.map((type) => (\n <option key={type} value={type}>\n {type}\n </option>\n ))}\n </select>\n )}\n </div>\n\n {filteredDirectives.length === 0 && (\n <div style={placeholderStyle}>\n No directives match the selected filter.\n </div>\n )}\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n }}\n >\n {filteredDirectives.map((directive) => (\n <div\n key={directive.directiveId}\n style={directiveCardStyle(directive.status)}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n flexWrap: \"wrap\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xs,\n }}\n >\n <span style={{ fontWeight: 700 }}>\n {directive.action}\n </span>\n <span\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n Priority: {directive.priority}\n </span>\n </div>\n <span style={statusBadgeStyle(directive.status)}>\n {directive.status}\n </span>\n </div>\n\n <div\n style={{\n color: theme.colors.text,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {directive.rationale}\n </div>\n\n {directive.parameters &&\n directive.parameters.length > 0 && (\n <div\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n <strong style={{ color: theme.colors.text }}>\n Parameters:\n </strong>\n <ul\n style={{\n margin: `${theme.spacing.xs} 0 0 16px`,\n padding: 0,\n }}\n >\n {directive.parameters.map((param, index) => (\n <li\n key={index}\n style={{ marginBottom: theme.spacing.xs }}\n >\n <code>{param.name}</code>: {param.value}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {directive.status === \"proposed\" && (\n <div style={{ display: \"flex\", gap: theme.spacing.sm }}>\n <button\n type=\"button\"\n onClick={() =>\n handleDirectiveAction(directive, \"execute\")\n }\n disabled={\n isProcessing &&\n processingId === directive.directiveId\n }\n style={{\n ...pillStyle(theme.colors.success),\n border: \"none\",\n cursor:\n isProcessing &&\n processingId === directive.directiveId\n ? \"not-allowed\"\n : \"pointer\",\n }}\n >\n {isProcessing &&\n processingId === directive.directiveId\n ? \"Processing...\"\n : \"Execute\"}\n </button>\n <button\n type=\"button\"\n onClick={() =>\n handleDirectiveAction(directive, \"decline\")\n }\n disabled={\n isProcessing &&\n processingId === directive.directiveId\n }\n style={{\n ...pillStyle(theme.colors.error),\n border: \"none\",\n cursor:\n isProcessing &&\n processingId === directive.directiveId\n ? \"not-allowed\"\n : \"pointer\",\n }}\n >\n {isProcessing &&\n processingId === directive.directiveId\n ? \"Processing...\"\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","/**\n * Request Cache Manager\n * Implements a simple caching mechanism similar to react-query\n * Prevents duplicate concurrent requests and caches results\n */\n\ninterface CacheEntry<T> {\n data: T;\n timestamp: number;\n ttl: number; // milliseconds\n}\n\ninterface PendingRequest<T> {\n promise: Promise<T>;\n}\n\nconst DEFAULT_TTL = 5 * 60 * 1000; // 5 minutes\n\nclass RequestCache {\n private cache = new Map<string, CacheEntry<any>>();\n private pendingRequests = new Map<string, PendingRequest<any>>();\n\n /**\n * Generate a cache key from function and parameters\n */\n private getCacheKey(fetchFn: Function, params?: any): string {\n const fnString = fetchFn.toString();\n const paramString = params ? JSON.stringify(params) : '';\n return `${fnString}::${paramString}`;\n }\n\n /**\n * Check if cache entry is still valid\n */\n private isCacheValid<T>(entry: CacheEntry<T>): boolean {\n return Date.now() - entry.timestamp < entry.ttl;\n }\n\n /**\n * Fetch or return cached data\n */\n async get<T>(\n fetchFn: () => Promise<T>,\n params?: any,\n ttl: number = DEFAULT_TTL\n ): Promise<T> {\n const key = this.getCacheKey(fetchFn, params);\n\n // Return valid cached data\n const cached = this.cache.get(key);\n if (cached && this.isCacheValid(cached)) {\n return cached.data as T;\n }\n\n // Return pending request if already in flight\n const pending = this.pendingRequests.get(key);\n if (pending) {\n return pending.promise;\n }\n\n // Create new request\n const promise = fetchFn().then((data) => {\n this.cache.set(key, {\n data,\n timestamp: Date.now(),\n ttl,\n });\n this.pendingRequests.delete(key);\n return data;\n }).catch((error) => {\n this.pendingRequests.delete(key);\n throw error;\n });\n\n this.pendingRequests.set(key, { promise });\n return promise;\n }\n\n /**\n * Invalidate cache entry\n */\n invalidate(fetchFn: Function, params?: any): void {\n const key = this.getCacheKey(fetchFn, params);\n this.cache.delete(key);\n }\n\n /**\n * Clear all cache\n */\n clear(): void {\n this.cache.clear();\n this.pendingRequests.clear();\n }\n}\n\n// Singleton instance\nexport const requestCache = new RequestCache();\n","/**\n * useReportData Hook\n * Fetches and manages report data with error handling\n * Implements caching to prevent duplicate requests\n */\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { requestCache } from \"../../utils/request-cache\";\n\nexport interface UseReportDataOptions {\n enabled?: boolean;\n ttl?: number; // Cache time-to-live in milliseconds (default: 5 minutes)\n}\n\nexport interface UseReportDataReturn<T> {\n data: T | null;\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n}\n\n/**\n * Generic hook for fetching report data\n * Implements caching and deduplication to prevent infinite requests\n * @param fetchFn - Async function to fetch report data\n * @param dependencies - Dependencies that trigger refetch when changed\n * @param options - Hook options (enabled flag, cache TTL)\n */\nexport function useReportData<T>(\n fetchFn: () => Promise<T>,\n dependencies: React.DependencyList = [],\n options: UseReportDataOptions = {},\n): UseReportDataReturn<T> {\n const [data, setData] = useState<T | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const isMountedRef = useRef(true);\n\n const { enabled = true, ttl = 5 * 60 * 1000 } = options;\n\n // Create a stable string representation of dependencies for comparison\n const depsString = JSON.stringify(dependencies);\n\n useEffect(() => {\n isMountedRef.current = true;\n\n if (!enabled) {\n setLoading(false);\n return;\n }\n\n let cancelled = false;\n\n const fetchData = async () => {\n try {\n setLoading(true);\n setError(null);\n\n // Use cache to avoid duplicate requests\n const result = await requestCache.get(fetchFn, depsString, ttl);\n\n if (!cancelled && isMountedRef.current) {\n setData(result);\n }\n } catch (err) {\n if (!cancelled && isMountedRef.current) {\n const error =\n err instanceof Error ? err : new Error(\"Unknown error occurred\");\n setError(error);\n setData(null);\n }\n } finally {\n if (!cancelled && isMountedRef.current) {\n setLoading(false);\n }\n }\n };\n\n fetchData();\n\n return () => {\n cancelled = true;\n };\n }, [depsString, enabled, ttl, fetchFn]);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const refetch = async () => {\n // Invalidate cache and refetch\n requestCache.invalidate(fetchFn, depsString);\n\n try {\n setLoading(true);\n setError(null);\n const result = await requestCache.get(fetchFn, depsString, ttl);\n if (isMountedRef.current) {\n setData(result);\n }\n } catch (err) {\n if (isMountedRef.current) {\n const error =\n err instanceof Error ? err : new Error(\"Unknown error occurred\");\n setError(error);\n setData(null);\n }\n } finally {\n if (isMountedRef.current) {\n setLoading(false);\n }\n }\n };\n\n return { data, loading, error, refetch };\n}\n","/**\n * Date Range Service\n * Handles date range calculations and options\n */\n\nexport type DateRangeOption =\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n\nexport interface DateRange {\n label: string;\n startDate: string; // YYYY-MM-DD\n endDate: string; // YYYY-MM-DD\n}\n\nexport class DateRangeService {\n /**\n * Calculate date range based on predefined options\n */\n static getDateRange(option: DateRangeOption): DateRange {\n const today = new Date();\n const endDate = today.toISOString().split(\"T\")[0]; // YYYY-MM-DD format\n let startDate: Date;\n\n switch (option) {\n case \"past-week\":\n startDate = new Date(today);\n startDate.setDate(today.getDate() - 7);\n break;\n case \"past-month\":\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 1);\n break;\n case \"past-3-months\":\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 3);\n break;\n case \"past-6-months\":\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 6);\n break;\n case \"past-year\":\n startDate = new Date(today);\n startDate.setFullYear(today.getFullYear() - 1);\n break;\n default:\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 1);\n }\n\n return {\n label: this.getLabel(option),\n startDate: startDate.toISOString().split(\"T\")[0],\n endDate,\n };\n }\n\n /**\n * Get human-readable label for date range option\n */\n private static getLabel(option: DateRangeOption): string {\n const labels: Record<DateRangeOption, string> = {\n \"past-week\": \"Past Week\",\n \"past-month\": \"Past Month\",\n \"past-3-months\": \"Past 3 Months\",\n \"past-6-months\": \"Past 6 Months\",\n \"past-year\": \"Past Year\",\n };\n return labels[option];\n }\n\n /**\n * Get all available date range options\n */\n static getAllOptions(): Array<{ value: DateRangeOption; label: string }> {\n return [\n { value: \"past-week\", label: \"Past Week\" },\n { value: \"past-month\", label: \"Past Month\" },\n { value: \"past-3-months\", label: \"Past 3 Months\" },\n { value: \"past-6-months\", label: \"Past 6 Months\" },\n { value: \"past-year\", label: \"Past Year\" },\n ];\n }\n\n /**\n * Format date for display (e.g., \"Jan 6 - Feb 5\")\n */\n static formatDateRangeForDisplay(startDate: string, endDate: string): string {\n try {\n const start = new Date(startDate);\n const end = new Date(endDate);\n\n const formatPart = (date: Date): string => {\n const month = date.toLocaleString(\"default\", { month: \"short\" });\n const day = date.getDate();\n return `${month} ${day}`;\n };\n\n return `${formatPart(start)} - ${formatPart(end)}`;\n } catch {\n return `${startDate} - ${endDate}`;\n }\n }\n}\n","/**\n * useDateRange Hook\n * Manages date range state with predefined options\n */\n\nimport { useState } from \"react\";\nimport { DateRangeService, DateRangeOption } from \"../../utils/date-range\";\n\nexport interface UseDateRangeReturn {\n selectedOption: DateRangeOption;\n setSelectedOption: (option: DateRangeOption) => void;\n startDate: string;\n endDate: string;\n label: string;\n}\n\n/**\n * Hook to manage date range selection for reports\n * @param defaultOption - Default date range option (default: 'past-month')\n */\nexport function useDateRange(\n defaultOption: DateRangeOption = \"past-month\",\n): UseDateRangeReturn {\n const [selectedOption, setSelectedOption] =\n useState<DateRangeOption>(defaultOption);\n const dateRange = DateRangeService.getDateRange(selectedOption);\n\n return {\n selectedOption,\n setSelectedOption,\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n label: dateRange.label,\n };\n}\n","/**\n * DateRangeSelector Component\n * Select dropdown for date range selection\n */\n\nimport React from \"react\";\nimport { DateRangeOption, DateRangeService } from \"../../utils/date-range\";\nimport { Theme } from \"../../types\";\n\nexport interface DateRangeSelectorProps {\n selectedOption: DateRangeOption;\n onSelect: (option: DateRangeOption) => void;\n theme?: Theme;\n}\n\nexport const DateRangeSelector: React.FC<DateRangeSelectorProps> = ({\n selectedOption,\n onSelect,\n theme,\n}) => {\n const options = DateRangeService.getAllOptions();\n\n return (\n <select\n value={selectedOption}\n onChange={(e) => onSelect(e.target.value as DateRangeOption)}\n style={{\n padding: `${theme?.spacing.xs} ${theme?.spacing.sm}`,\n borderRadius: theme?.borderRadius,\n border: `1px solid ${theme?.colors.border}`,\n background: theme?.colors.surface,\n color: theme?.colors.text,\n fontSize: theme?.fontSizes.sm,\n fontWeight: 500,\n outline: \"none\",\n minWidth: 120,\n marginLeft: theme?.spacing.sm,\n cursor: \"pointer\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLSelectElement).style.borderColor =\n theme?.colors.primary || \"#1976d2\";\n (e.currentTarget as HTMLSelectElement).style.boxShadow = `0 0 0 2px ${\n (theme?.colors.primary || \"#1976d2\") + \"20\"\n }`;\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLSelectElement).style.borderColor =\n theme?.colors.border || \"#d0d0d0\";\n (e.currentTarget as HTMLSelectElement).style.boxShadow = \"none\";\n }}\n >\n {options.map((option: { value: DateRangeOption; label: string }) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n","/**\n * LoadingState Component\n * Skeleton loader for reports\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface LoadingStateProps {\n theme?: Theme;\n variant?: \"minimal\" | \"cards\" | \"table\";\n}\n\nconst Skeleton: React.FC<{ theme?: Theme }> = ({ theme }) => (\n <div\n style={{\n backgroundColor: theme?.colors.border || \"#e0e0e0\",\n borderRadius: theme?.borderRadius || \"8px\",\n height: \"16px\",\n marginBottom: theme?.spacing.xs || \"4px\",\n animation: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n }}\n />\n);\n\nexport const LoadingState: React.FC<LoadingStateProps> = ({\n theme,\n variant = \"minimal\",\n}) => {\n if (variant === \"minimal\") {\n return (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n <div\n style={{\n display: \"inline-block\",\n width: \"40px\",\n height: \"40px\",\n border: `3px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderTop: `3px solid ${theme?.colors.primary || \"#1976d2\"}`,\n borderRadius: \"50%\",\n animation: \"spin 0.6s linear infinite\",\n }}\n />\n <p style={{ marginTop: theme?.spacing.sm || \"8px\" }}>\n Loading report...\n </p>\n </div>\n );\n }\n\n if (variant === \"cards\") {\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n padding: theme?.spacing.md || \"16px\",\n }}\n >\n {[1, 2, 3, 4].map((i) => (\n <div\n key={i}\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <Skeleton theme={theme} />\n <Skeleton theme={theme} />\n <Skeleton theme={theme} />\n </div>\n ))}\n </div>\n );\n }\n\n return (\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n {[1, 2, 3, 4, 5].map((i) => (\n <div key={i} style={{ marginBottom: theme?.spacing.md || \"16px\" }}>\n <Skeleton theme={theme} />\n <Skeleton theme={theme} />\n </div>\n ))}\n </div>\n );\n};\n","/**\n * ReportLayout Component\n * Wrapper for report pages with header and date range selector\n */\n\nimport React from \"react\";\nimport { DateRangeSelector } from \"./DateRangeSelector\";\nimport { DateRangeOption } from \"../../utils/date-range\";\nimport { LoadingState } from \"./LoadingState\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { Theme } from \"../../types\";\n\nexport interface ReportLayoutProps {\n title: string;\n description?: string;\n selectedDateRange: DateRangeOption;\n onDateRangeChange: (option: DateRangeOption) => void;\n loading?: boolean;\n error?: Error | null;\n children: React.ReactNode;\n theme?: Theme;\n}\n\nexport const ReportLayout: React.FC<ReportLayoutProps> = ({\n title,\n description,\n selectedDateRange,\n onDateRangeChange,\n loading,\n error,\n children,\n theme: themeProp,\n}) => {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.md || \"12px\",\n padding: theme?.spacing.md || \"12px\",\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: theme?.spacing.sm || \"12px\",\n flexWrap: \"wrap\",\n }}\n >\n <div style={{ flex: 1, minWidth: \"200px\" }}>\n <h1\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.lg || \"20px\",\n fontWeight: \"700\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h1>\n {description && (\n <p\n style={{\n margin: `${theme?.spacing.xs || \"4px\"} 0 0 0`,\n fontSize: theme?.fontSizes.sm || \"12px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n <DateRangeSelector\n selectedOption={selectedDateRange}\n onSelect={onDateRangeChange}\n theme={theme}\n />\n </div>\n\n {/* Content */}\n {loading ? (\n <LoadingState theme={theme} />\n ) : error ? (\n <div\n style={{\n padding: theme?.spacing.sm || \"12px\",\n borderRadius: theme?.borderRadius || \"6px\",\n backgroundColor: theme?.colors.error\n ? `${theme.colors.error}15`\n : \"#FEE2E2\",\n border: `1px solid ${theme?.colors.error || \"#f44336\"}`,\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"12px\",\n color: theme?.colors.error || \"#f44336\",\n fontWeight: \"500\",\n }}\n >\n Error loading report: {error.message}\n </p>\n </div>\n ) : (\n children\n )}\n </div>\n );\n};\n","/**\n * MetricCard Component\n * Displays a single KPI metric with optional trend indicator\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface MetricCardProps {\n label: string;\n value: string | number;\n unit?: string;\n trend?: \"up\" | \"down\" | \"neutral\";\n trendValue?: number;\n icon?: React.ReactNode;\n onClick?: () => void;\n theme?: Theme;\n}\n\nexport const MetricCard: React.FC<MetricCardProps> = ({\n label,\n value,\n unit,\n trend,\n trendValue,\n icon,\n onClick,\n theme,\n}) => {\n const getTrendColor = (): string => {\n if (!theme) return \"inherit\";\n if (trend === \"up\") return theme.colors.success;\n if (trend === \"down\") return theme.colors.error;\n return theme.colors.textSecondary;\n };\n\n const getTrendIcon = (): string => {\n if (trend === \"up\") return \"↑\";\n if (trend === \"down\") return \"↓\";\n return \"→\";\n };\n\n const containerStyles: React.CSSProperties = {\n padding: theme?.spacing.sm || \"10px\",\n borderRadius: theme?.borderRadius || \"6px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.2s ease\",\n };\n\n return (\n <div\n style={containerStyles}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (onClick) {\n (e.currentTarget as HTMLDivElement).style.boxShadow =\n theme?.boxShadow || \"0 2px 8px rgba(0, 0, 0, 0.1)\";\n }\n }}\n onMouseLeave={(e) => {\n if (onClick) {\n (e.currentTarget as HTMLDivElement).style.boxShadow = \"none\";\n }\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ flex: 1 }}>\n <p\n style={{\n fontSize: theme?.fontSizes.xs || \"11px\",\n color: theme?.colors.textSecondary || \"#666\",\n margin: \"0 0 6px 0\",\n }}\n >\n {label}\n </p>\n <div\n style={{\n display: \"flex\",\n alignItems: \"baseline\",\n gap: theme?.spacing.xs || \"4px\",\n }}\n >\n <p\n style={{\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: theme?.colors.text || \"#000\",\n margin: 0,\n }}\n >\n {value}\n </p>\n {unit && (\n <p\n style={{\n fontSize: theme?.fontSizes.xs || \"11px\",\n color: theme?.colors.textSecondary || \"#666\",\n margin: 0,\n }}\n >\n {unit}\n </p>\n )}\n </div>\n {trend && trendValue !== undefined && (\n <div\n style={{\n fontSize: \"10px\",\n color: getTrendColor(),\n marginTop: \"4px\",\n }}\n >\n {getTrendIcon()} {trendValue}%\n </div>\n )}\n </div>\n {icon && (\n <div\n style={{\n color: theme?.colors.textSecondary || \"#999\",\n fontSize: \"18px\",\n }}\n >\n {icon}\n </div>\n )}\n </div>\n </div>\n );\n};\n","/**\n * TrendChart Component\n * Renders a simple line/area chart for trend data\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface TrendDataPoint {\n label: string;\n value: number;\n}\n\nexport interface TrendChartProps {\n data: TrendDataPoint[];\n title?: string;\n height?: number;\n theme?: Theme;\n showArea?: boolean;\n}\n\nexport const TrendChart: React.FC<TrendChartProps> = ({\n data,\n title,\n height = 200,\n theme,\n showArea = true,\n}) => {\n if (!data || data.length === 0) {\n return (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n No data available\n </div>\n );\n }\n\n const padding = 40;\n const width = 600;\n const innerHeight = height - padding * 2;\n const innerWidth = width - padding * 2;\n\n const maxValue = Math.max(...data.map((d) => d.value));\n const minValue = Math.min(...data.map((d) => d.value));\n const range = maxValue - minValue || 1;\n\n const points = data.map((d, i) => {\n const x = padding + (i / (data.length - 1 || 1)) * innerWidth;\n const y =\n padding + innerHeight - ((d.value - minValue) / range) * innerHeight;\n return { x, y, ...d };\n });\n\n const pathD = points\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`)\n .join(\" \");\n const areaPathD = `${pathD} L ${points[points.length - 1].x} ${padding + innerHeight} L ${points[0].x} ${padding + innerHeight} Z`;\n\n const lineColor = theme?.colors.primary || \"#1976d2\";\n const areaColor = theme?.colors.primary || \"#1976d2\";\n\n return (\n <div>\n {title && (\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h3>\n )}\n <svg\n width=\"100%\"\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"xMidYMid meet\"\n style={{ overflow: \"visible\" }}\n >\n {/* Grid lines */}\n {[0, 0.25, 0.5, 0.75, 1].map((factor) => {\n const y = padding + innerHeight - factor * innerHeight;\n return (\n <line\n key={`grid-${factor}`}\n x1={padding}\n y1={y}\n x2={width - padding}\n y2={y}\n stroke={theme?.colors.border || \"#e0e0e0\"}\n strokeWidth=\"1\"\n strokeDasharray=\"4\"\n opacity=\"0.5\"\n />\n );\n })}\n\n {/* Area */}\n {showArea && <path d={areaPathD} fill={areaColor} fillOpacity=\"0.1\" />}\n\n {/* Line */}\n <path\n d={pathD}\n fill=\"none\"\n stroke={lineColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n\n {/* Points */}\n {points.map((p, i) => (\n <circle\n key={`point-${i}`}\n cx={p.x}\n cy={p.y}\n r=\"3\"\n fill={lineColor}\n opacity=\"0.8\"\n />\n ))}\n\n {/* X-axis labels */}\n {points.map((p, i) => {\n if (data.length <= 6 || i % Math.ceil(data.length / 6) === 0) {\n return (\n <text\n key={`label-${i}`}\n x={p.x}\n y={height - padding + 20}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill={theme?.colors.textSecondary || \"#666\"}\n >\n {p.label}\n </text>\n );\n }\n })}\n </svg>\n </div>\n );\n};\n","/**\n * Executive Dashboard Report\n * High-level directive execution metrics, trends, and cost impact\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { MetricCard } from \"./MetricCard\";\nimport { TrendChart } from \"./TrendChart\";\nimport { ExecutiveDashboardReport } from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface ExecutiveDashboardProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const ExecutiveDashboard: React.FC<ExecutiveDashboardProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<ExecutiveDashboardReport>(\n () =>\n api.getExecutiveDashboard({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const trendData =\n data?.monthlyTrends?.map((m) => ({\n label: m.month,\n value: m.successPercentage,\n })) || [];\n\n return (\n <ReportLayout\n title=\"Executive Dashboard\"\n description=\"High-level directive execution metrics and trends\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\",\n gap: theme?.spacing.sm || \"10px\",\n }}\n >\n <MetricCard\n label=\"Total Directives\"\n value={data?.totalDirectives ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Success Rate\"\n value={data?.successRate?.toFixed(2) ?? 0}\n unit=\"%\"\n trend={(data?.successRate ?? 0 > 80) ? \"up\" : \"neutral\"}\n theme={theme}\n />\n <MetricCard\n label=\"Auto-Executed\"\n value={data?.autoExecutedDirectives ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Cost Impact\"\n value={data?.totalCostImpact?.toFixed(2) ?? 0}\n unit=\"$\"\n theme={theme}\n />\n </div>\n\n {trendData.length > 0 && (\n <div\n style={{\n padding: theme?.spacing.sm || \"10px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"6px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <TrendChart\n data={trendData}\n title=\"Success Rate Trend\"\n theme={theme}\n showArea={true}\n />\n </div>\n )}\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(220px, 1fr))\",\n gap: theme?.spacing.sm || \"10px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.sm || \"10px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"6px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.sm || \"8px\"} 0`,\n fontSize: theme?.fontSizes.sm || \"13px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Execution Summary\n </h3>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.xs || \"4px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"3px\"} 0`,\n fontSize: theme?.fontSizes.xs || \"11px\",\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Successful:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n {data?.successfulExecutions ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"3px\"} 0`,\n fontSize: theme?.fontSizes.xs || \"11px\",\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Failed:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n {data?.failedExecutions ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"3px\"} 0`,\n fontSize: theme?.fontSizes.xs || \"11px\",\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Avg Cost:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n ${data?.averageCostPerDirective?.toFixed(2) ?? 0}\n </span>\n </div>\n </div>\n </div>\n </div>\n </ReportLayout>\n );\n};\n","/**\n * ProgressBar Component\n * Displays percentage with visual bar\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface ProgressBarProps {\n percentage: number; // 0-100\n label?: string;\n showPercentage?: boolean;\n height?: \"small\" | \"medium\" | \"large\";\n theme?: Theme;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n percentage,\n label,\n showPercentage = true,\n height = \"medium\",\n theme,\n}) => {\n const normalizedPercentage = Math.min(Math.max(percentage, 0), 100);\n\n const getBarColor = (): string => {\n if (!theme) {\n if (normalizedPercentage >= 80) return \"#10B981\";\n if (normalizedPercentage >= 60) return \"#F59E0B\";\n return \"#EF4444\";\n }\n\n if (normalizedPercentage >= 80) return theme.colors.success;\n if (normalizedPercentage >= 60) return \"#F59E0B\"; // warning\n return theme.colors.error;\n };\n\n const heightConfig = {\n small: \"4px\",\n medium: \"8px\",\n large: \"12px\",\n };\n\n return (\n <div>\n {(label || showPercentage) && (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n {label && (\n <span\n style={{\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.text || \"#000\",\n fontWeight: \"500\",\n }}\n >\n {label}\n </span>\n )}\n {showPercentage && (\n <span\n style={{\n fontSize: theme?.fontSizes.xs || \"12px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n {normalizedPercentage.toFixed(1)}%\n </span>\n )}\n </div>\n )}\n <div\n style={{\n width: \"100%\",\n height: heightConfig[height],\n backgroundColor: theme?.colors.border || \"#e0e0e0\",\n borderRadius: \"4px\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n height: \"100%\",\n width: `${normalizedPercentage}%`,\n backgroundColor: getBarColor(),\n transition: \"width 0.3s ease\",\n }}\n />\n </div>\n </div>\n );\n};\n","/**\n * DataTable Component\n * Generic sortable/paginated table for report data\n */\n\nimport React, { useState, useMemo } from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface TableColumn<T> {\n key: keyof T;\n label: string;\n sortable?: boolean;\n render?: (value: any, row: T) => React.ReactNode;\n width?: string;\n}\n\nexport interface DataTableProps<T extends { id?: string | number }> {\n columns: TableColumn<T>[];\n data: T[];\n title?: string;\n pageSize?: number;\n theme?: Theme;\n}\n\nexport const DataTable = React.forwardRef<HTMLDivElement, DataTableProps<any>>(\n ({ columns, data, title, pageSize = 10, theme }, ref) => {\n const [sortKey, setSortKey] = useState<string | null>(null);\n const [sortOrder, setSortOrder] = useState<\"asc\" | \"desc\">(\"asc\");\n const [currentPage, setCurrentPage] = useState(0);\n\n const sortedData = useMemo(() => {\n if (!sortKey) return data;\n\n const sorted = [...data].sort((a, b) => {\n const aVal = a[sortKey];\n const bVal = b[sortKey];\n\n if (aVal < bVal) return sortOrder === \"asc\" ? -1 : 1;\n if (aVal > bVal) return sortOrder === \"asc\" ? 1 : -1;\n return 0;\n });\n\n return sorted;\n }, [data, sortKey, sortOrder]);\n\n const paginatedData = useMemo(() => {\n const start = currentPage * pageSize;\n return sortedData.slice(start, start + pageSize);\n }, [sortedData, currentPage, pageSize]);\n\n const totalPages = Math.ceil(sortedData.length / pageSize);\n\n const handleSort = (key: string) => {\n if (sortKey === key) {\n setSortOrder(sortOrder === \"asc\" ? \"desc\" : \"asc\");\n } else {\n setSortKey(key);\n setSortOrder(\"asc\");\n }\n setCurrentPage(0);\n };\n\n return (\n <div ref={ref}>\n {title && (\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h3>\n )}\n\n {data.length === 0 ? (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n }}\n >\n No data available\n </div>\n ) : (\n <>\n <div\n style={{\n overflowX: \"auto\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n }}\n >\n <table\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n fontSize: theme?.fontSizes.sm || \"14px\",\n }}\n >\n <thead>\n <tr\n style={{\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n borderBottom: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n }}\n >\n {columns.map((col) => (\n <th\n key={String(col.key)}\n onClick={() =>\n col.sortable && handleSort(String(col.key))\n }\n style={{\n padding: theme?.spacing.sm || \"8px\",\n textAlign: \"left\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n cursor: col.sortable ? \"pointer\" : \"default\",\n userSelect: \"none\",\n width: col.width,\n whiteSpace: \"nowrap\",\n }}\n onMouseEnter={(e) => {\n if (col.sortable) {\n (\n e.currentTarget as HTMLTableHeaderCellElement\n ).style.backgroundColor =\n theme?.colors.border || \"#e0e0e0\";\n }\n }}\n onMouseLeave={(e) => {\n (\n e.currentTarget as HTMLTableHeaderCellElement\n ).style.backgroundColor =\n theme?.colors.surface || \"#f5f5f5\";\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"4px\",\n }}\n >\n {col.label}\n {col.sortable && sortKey === String(col.key) && (\n <span>{sortOrder === \"asc\" ? \"↑\" : \"↓\"}</span>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {paginatedData.map((row, idx) => (\n <tr\n key={row.id || idx}\n style={{\n borderBottom: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor:\n idx % 2 === 0\n ? \"transparent\"\n : theme?.colors.surface || \"#f5f5f5\",\n }}\n onMouseEnter={(e) => {\n (\n e.currentTarget as HTMLTableRowElement\n ).style.backgroundColor =\n theme?.colors.border || \"#e0e0e0\";\n }}\n onMouseLeave={(e) => {\n (\n e.currentTarget as HTMLTableRowElement\n ).style.backgroundColor =\n idx % 2 === 0\n ? \"transparent\"\n : theme?.colors.surface || \"#f5f5f5\";\n }}\n >\n {columns.map((col) => (\n <td\n key={String(col.key)}\n style={{\n padding: theme?.spacing.sm || \"8px\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {col.render\n ? col.render(row[col.key], row)\n : String(row[col.key])}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {totalPages > 1 && (\n <div\n style={{\n marginTop: theme?.spacing.md || \"16px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <span\n style={{\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n Page {currentPage + 1} of {totalPages}\n </span>\n <div\n style={{ display: \"flex\", gap: theme?.spacing.xs || \"4px\" }}\n >\n <button\n onClick={() => setCurrentPage(0)}\n disabled={currentPage === 0}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor: currentPage === 0 ? \"not-allowed\" : \"pointer\",\n opacity: currentPage === 0 ? 0.5 : 1,\n }}\n >\n First\n </button>\n <button\n onClick={() => setCurrentPage(Math.max(0, currentPage - 1))}\n disabled={currentPage === 0}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor: currentPage === 0 ? \"not-allowed\" : \"pointer\",\n opacity: currentPage === 0 ? 0.5 : 1,\n }}\n >\n Previous\n </button>\n <button\n onClick={() =>\n setCurrentPage(Math.min(totalPages - 1, currentPage + 1))\n }\n disabled={currentPage === totalPages - 1}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor:\n currentPage === totalPages - 1\n ? \"not-allowed\"\n : \"pointer\",\n opacity: currentPage === totalPages - 1 ? 0.5 : 1,\n }}\n >\n Next\n </button>\n <button\n onClick={() => setCurrentPage(totalPages - 1)}\n disabled={currentPage === totalPages - 1}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor:\n currentPage === totalPages - 1\n ? \"not-allowed\"\n : \"pointer\",\n opacity: currentPage === totalPages - 1 ? 0.5 : 1,\n }}\n >\n Last\n </button>\n </div>\n </div>\n )}\n </>\n )}\n </div>\n );\n },\n);\n\nDataTable.displayName = \"DataTable\";\n","/**\n * Supply Chain Risk Report\n * Supply chain risks including inventory, supplier, and cost analysis\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { MetricCard } from \"./MetricCard\";\nimport { ProgressBar } from \"./ProgressBar\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport { SupplyChainRiskReport, DataQualityIssue } from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface SupplyChainRiskProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const SupplyChainRisk: React.FC<SupplyChainRiskProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<SupplyChainRiskReport>(\n () =>\n api.getSupplyChainRisk({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const riskPercentage = data?.overallRiskScore ?? 0;\n const totalRisks =\n (data?.highRiskCount ?? 0) +\n (data?.mediumRiskCount ?? 0) +\n (data?.lowRiskCount ?? 0);\n\n const tableColumns: TableColumn<DataQualityIssue>[] = [\n {\n key: \"issueType\",\n label: \"Issue Type\",\n sortable: true,\n },\n {\n key: \"description\",\n label: \"Description\",\n sortable: true,\n },\n {\n key: \"affectedRecords\",\n label: \"Affected Records\",\n sortable: true,\n },\n {\n key: \"severity\",\n label: \"Severity\",\n sortable: true,\n render: (value: any) => {\n const color =\n value === \"high\"\n ? theme?.colors.error\n : value === \"medium\"\n ? \"#F59E0B\"\n : theme?.colors.success;\n return (\n <span style={{ color, fontWeight: \"600\" }}>\n {value.toUpperCase()}\n </span>\n );\n },\n },\n ];\n\n return (\n <ReportLayout\n title=\"Supply Chain Risk\"\n description=\"Inventory, supplier, and cost risk analysis\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.lg || \"18px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Overall Risk Assessment\n </h3>\n <ProgressBar\n percentage={riskPercentage}\n label=\"Risk Score\"\n theme={theme}\n height=\"large\"\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <MetricCard\n label=\"High Risk Items\"\n value={data?.highRiskCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Medium Risk Items\"\n value={data?.mediumRiskCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Low Risk Items\"\n value={data?.lowRiskCount ?? 0}\n theme={theme}\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(250px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Inventory Risk\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Low Stock Items:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.inventoryRisk?.lowStockItems ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Overstocked Items:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.inventoryRisk?.overstockedItems ?? 0}\n </span>\n </div>\n <ProgressBar\n percentage={data?.inventoryRisk?.averageStockHealth ?? 0}\n label=\"Stock Health\"\n theme={theme}\n />\n </div>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Supplier Risk\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Unreliable Suppliers:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.supplierRisk?.unreliableSuppliers ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n High Defect Rate:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.supplierRisk?.highDefectRateSuppliers ?? 0}\n </span>\n </div>\n <ProgressBar\n percentage={data?.supplierRisk?.averageSupplierScore ?? 0}\n label=\"Supplier Score\"\n theme={theme}\n />\n </div>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Cost Risk\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Cost Variance:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n ${data?.costRisk?.unexpectedCostVariance?.toFixed(2) ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Potential Savings:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n ${data?.costRisk?.potentialSavings?.toFixed(2) ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Volatility Index:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.costRisk?.costVolatilityIndex?.toFixed(2) ?? 0}%\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {data?.dataQualityIssues && data.dataQualityIssues.length > 0 && (\n <div>\n <DataTable\n title=\"Data Quality Issues\"\n columns={tableColumns}\n data={data.dataQualityIssues.map((issue, idx) => ({\n id: idx,\n ...issue,\n }))}\n pageSize={5}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * StatusBadge Component\n * Displays status with color-coded background\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport type StatusType =\n | \"ok\"\n | \"warning\"\n | \"critical\"\n | \"proposed\"\n | \"executed\"\n | \"declined\"\n | \"failed\"\n | \"auto-executed\";\n\nexport interface StatusBadgeProps {\n status: StatusType;\n label?: string;\n theme?: Theme;\n}\n\nconst getStatusConfig = (\n status: StatusType,\n theme?: Theme,\n): { bg: string; text: string; label: string } => {\n const baseConfig: Record<StatusType, { label: string }> = {\n ok: { label: \"OK\" },\n warning: { label: \"Warning\" },\n critical: { label: \"Critical\" },\n proposed: { label: \"Proposed\" },\n executed: { label: \"Executed\" },\n declined: { label: \"Declined\" },\n failed: { label: \"Failed\" },\n \"auto-executed\": { label: \"Auto Executed\" },\n };\n\n const config = baseConfig[status];\n\n if (theme) {\n const statusColors: Record<StatusType, { bg: string; text: string }> = {\n ok: { bg: \"rgba(16, 185, 129, 0.15)\", text: theme.colors.success },\n warning: { bg: \"rgba(245, 158, 11, 0.15)\", text: \"#F59E0B\" },\n critical: { bg: \"rgba(239, 68, 68, 0.15)\", text: theme.colors.error },\n proposed: { bg: \"rgba(59, 130, 246, 0.15)\", text: theme.colors.primary },\n executed: { bg: \"rgba(16, 185, 129, 0.15)\", text: theme.colors.success },\n declined: {\n bg: \"rgba(156, 163, 175, 0.15)\",\n text: theme.colors.textSecondary,\n },\n failed: { bg: \"rgba(239, 68, 68, 0.15)\", text: theme.colors.error },\n \"auto-executed\": {\n bg: \"rgba(16, 185, 129, 0.15)\",\n text: theme.colors.success,\n },\n };\n\n return {\n bg: statusColors[status].bg,\n text: statusColors[status].text,\n label: config.label,\n };\n }\n\n const defaultColors: Record<StatusType, { bg: string; text: string }> = {\n ok: { bg: \"#D1FAE5\", text: \"#059669\" },\n warning: { bg: \"#FEF3C7\", text: \"#D97706\" },\n critical: { bg: \"#FEE2E2\", text: \"#DC2626\" },\n proposed: { bg: \"#DBEAFE\", text: \"#1D4ED8\" },\n executed: { bg: \"#D1FAE5\", text: \"#059669\" },\n declined: { bg: \"#E5E7EB\", text: \"#4B5563\" },\n failed: { bg: \"#FEE2E2\", text: \"#DC2626\" },\n \"auto-executed\": { bg: \"#D1FAE5\", text: \"#059669\" },\n };\n\n return {\n bg: defaultColors[status].bg,\n text: defaultColors[status].text,\n label: config.label,\n };\n};\n\nexport const StatusBadge: React.FC<StatusBadgeProps> = ({\n status,\n label,\n theme,\n}) => {\n const config = getStatusConfig(status, theme);\n\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n paddingLeft: \"10px\",\n paddingRight: \"10px\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n borderRadius: \"4px\",\n fontSize: \"12px\",\n fontWeight: \"500\",\n backgroundColor: config.bg,\n color: config.text,\n whiteSpace: \"nowrap\",\n }}\n >\n {label || config.label}\n </span>\n );\n};\n","/**\n * Execution Audit Trail Report\n * Complete execution history and audit information\n */\n\nimport React, { useState } from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { MetricCard } from \"./MetricCard\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport {\n ExecutionAuditTrailReport,\n ExecutionRecord,\n} from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface ExecutionAuditTrailProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const ExecutionAuditTrail: React.FC<ExecutionAuditTrailProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n const [directiveTypeFilter, setDirectiveTypeFilter] = useState<string>(\"\");\n\n const { data, loading, error } = useReportData<ExecutionAuditTrailReport>(\n () =>\n api.getExecutionAuditTrail({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n directiveType: directiveTypeFilter || undefined,\n }),\n [dateRange.startDate, dateRange.endDate, directiveTypeFilter],\n );\n\n const tableColumns: TableColumn<ExecutionRecord>[] = [\n {\n key: \"directiveAction\",\n label: \"Directive Action\",\n sortable: true,\n width: \"200px\",\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: (value: any) => <StatusBadge status={value} theme={theme} />,\n },\n {\n key: \"executedAt\",\n label: \"Executed At\",\n sortable: true,\n render: (value: string) => {\n try {\n return new Date(value).toLocaleString();\n } catch {\n return value;\n }\n },\n },\n {\n key: \"executionDurationMinutes\",\n label: \"Duration (min)\",\n sortable: true,\n },\n {\n key: \"executedBy\",\n label: \"Executed By\",\n sortable: true,\n },\n {\n key: \"outcome\",\n label: \"Outcome\",\n sortable: false,\n },\n ];\n\n return (\n <ReportLayout\n title=\"Execution Audit Trail\"\n description=\"Directive execution history and audit information\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <MetricCard\n label=\"Total Directives\"\n value={data?.totalDirectives ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Executed\"\n value={data?.executedCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Declined\"\n value={data?.declinedCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Failed\"\n value={data?.failedCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Auto-Executed\"\n value={data?.autoExecutedCount ?? 0}\n theme={theme}\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Execution Statistics\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Avg. Duration:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.stats?.averageExecutionTimeMinutes?.toFixed(1) ?? 0} min\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Success Rate:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n {data?.stats?.successRate?.toFixed(2) ?? 0}%\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Fastest Execution:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.stats?.fastestExecutionMinutes ?? 0} min\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Slowest Execution:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.stats?.slowestExecutionMinutes ?? 0} min\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {data?.executionHistory && data.executionHistory.length > 0 && (\n <div>\n <DataTable\n title=\"Execution History\"\n columns={tableColumns}\n data={data.executionHistory.map((record, idx) => ({\n id: idx,\n ...record,\n }))}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * HealthGauge Component\n * Displays health/score on a 0-10 scale with color-coded circle\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface HealthGaugeProps {\n score: number; // 0-10\n label: string;\n size?: \"small\" | \"medium\" | \"large\";\n theme?: Theme;\n}\n\nexport const HealthGauge: React.FC<HealthGaugeProps> = ({\n score,\n label,\n size = \"medium\",\n theme,\n}) => {\n const getColor = (): string => {\n if (!theme) {\n if (score >= 8) return \"#10B981\";\n if (score >= 6) return \"#F59E0B\";\n return \"#EF4444\";\n }\n\n if (score >= 8) return theme.colors.success;\n if (score >= 6) return \"#F59E0B\"; // warning\n return theme.colors.error;\n };\n\n const getBackgroundColor = (): string => {\n if (!theme) {\n if (score >= 8) return \"rgba(16, 185, 129, 0.1)\";\n if (score >= 6) return \"rgba(245, 158, 11, 0.1)\";\n return \"rgba(239, 68, 68, 0.1)\";\n }\n\n if (score >= 8) return \"rgba(16, 185, 129, 0.15)\";\n if (score >= 6) return \"rgba(245, 158, 11, 0.15)\";\n return \"rgba(239, 68, 68, 0.15)\";\n };\n\n const sizeConfig = {\n small: { width: 64, height: 64, fontSize: \"14px\", labelSize: \"11px\" },\n medium: { width: 96, height: 96, fontSize: \"24px\", labelSize: \"12px\" },\n large: { width: 128, height: 128, fontSize: \"32px\", labelSize: \"13px\" },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n width: `${config.width}px`,\n height: `${config.height}px`,\n borderRadius: \"50%\",\n backgroundColor: getBackgroundColor(),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"none\",\n }}\n >\n <span\n style={{\n fontSize: config.fontSize,\n fontWeight: \"bold\",\n color: getColor(),\n }}\n >\n {score.toFixed(1)}\n </span>\n </div>\n <p\n style={{\n fontSize: config.labelSize,\n color: theme?.colors.textSecondary || \"#666\",\n textAlign: \"center\",\n margin: 0,\n maxWidth: `${config.width + 20}px`,\n }}\n >\n {label}\n </p>\n </div>\n );\n};\n","/**\n * Portfolio Health Report\n * Aggregated metric health across the entire portfolio\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { HealthGauge } from \"./HealthGauge\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport {\n PortfolioHealthReport,\n MetricHealthScore,\n CriticalMetric,\n} from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface PortfolioHealthProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const PortfolioHealth: React.FC<PortfolioHealthProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<PortfolioHealthReport>(\n () =>\n api.getPortfolioHealth({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const metricTableColumns: TableColumn<MetricHealthScore>[] = [\n {\n key: \"metricName\",\n label: \"Metric Name\",\n sortable: true,\n },\n {\n key: \"score\",\n label: \"Score (0-10)\",\n sortable: true,\n render: (value: number) => value.toFixed(2),\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: (value: string) => {\n const color =\n value === \"ok\"\n ? theme?.colors.success\n : value === \"warning\"\n ? \"#F59E0B\"\n : theme?.colors.error;\n return (\n <span style={{ color, fontWeight: \"600\" }}>\n {value.toUpperCase()}\n </span>\n );\n },\n },\n {\n key: \"currentValue\",\n label: \"Current Value\",\n sortable: true,\n render: (value: number) => value.toFixed(2),\n },\n {\n key: \"targetValue\",\n label: \"Target Value\",\n sortable: true,\n render: (value: number) => value.toFixed(2),\n },\n {\n key: \"variance\",\n label: \"Variance\",\n sortable: true,\n render: (value: number) => {\n const color = value > 0 ? theme?.colors.success : theme?.colors.error;\n return (\n <span style={{ color, fontWeight: \"600\" }}>{value.toFixed(2)}</span>\n );\n },\n },\n ];\n\n const criticalTableColumns: TableColumn<CriticalMetric>[] = [\n {\n key: \"metricName\",\n label: \"Metric Name\",\n sortable: true,\n },\n {\n key: \"description\",\n label: \"Description\",\n sortable: true,\n },\n {\n key: \"recommendedAction\",\n label: \"Recommended Action\",\n sortable: false,\n },\n ];\n\n return (\n <ReportLayout\n title=\"Portfolio Health\"\n description=\"Aggregated metric health and critical alerts\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n {/* Overall Health Score */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n padding: theme?.spacing.lg || \"24px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <HealthGauge\n score={data?.overallHealthScore ?? 0}\n label=\"Overall Portfolio Health\"\n size=\"large\"\n theme={theme}\n />\n </div>\n\n {/* Health Summary Cards */}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n Healthy Metrics\n </p>\n <p\n style={{\n margin: 0,\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n {data?.healthyMetricsCount ?? 0}\n </p>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n Warning Metrics\n </p>\n <p\n style={{\n margin: 0,\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: \"#F59E0B\",\n }}\n >\n {data?.warningMetricsCount ?? 0}\n </p>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n Critical Metrics\n </p>\n <p\n style={{\n margin: 0,\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n {data?.criticalMetricsCount ?? 0}\n </p>\n </div>\n </div>\n\n {/* Metric Health Scores Table */}\n {data?.metricHealthScores && data.metricHealthScores.length > 0 && (\n <div>\n <DataTable\n title=\"Metric Health Scores\"\n columns={metricTableColumns}\n data={data.metricHealthScores.map((metric, idx) => ({\n id: idx,\n ...metric,\n }))}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n\n {/* Critical Metrics Table */}\n {data?.criticalMetrics && data.criticalMetrics.length > 0 && (\n <div>\n <DataTable\n title=\"Critical Metrics Requiring Attention\"\n columns={criticalTableColumns}\n data={data.criticalMetrics.map((metric, idx) => ({\n id: idx,\n ...metric,\n }))}\n pageSize={5}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * Data Quality & Automation Report\n * Data gaps, automation opportunities, and actionable recommendations\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { ProgressBar } from \"./ProgressBar\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport {\n DataQualityAutomationReport,\n DataGap,\n Recommendation,\n} from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface DataQualityAutomationProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const DataQualityAutomation: React.FC<DataQualityAutomationProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<DataQualityAutomationReport>(\n () =>\n api.getDataQualityAutomation({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const dataGapColumns: TableColumn<DataGap>[] = [\n {\n key: \"fieldName\",\n label: \"Field Name\",\n sortable: true,\n },\n {\n key: \"missingRecords\",\n label: \"Missing Records\",\n sortable: true,\n },\n {\n key: \"missingPercentage\",\n label: \"Missing %\",\n sortable: true,\n render: (value: number) => `${value.toFixed(2)}%`,\n },\n {\n key: \"impact\",\n label: \"Impact\",\n sortable: false,\n },\n ];\n\n const recommendationColumns: TableColumn<Recommendation>[] = [\n {\n key: \"category\",\n label: \"Category\",\n sortable: true,\n },\n {\n key: \"recommendation\",\n label: \"Recommendation\",\n sortable: true,\n },\n {\n key: \"priority\",\n label: \"Priority\",\n sortable: true,\n render: (value: string) => {\n const color =\n value === \"High\"\n ? theme?.colors.error\n : value === \"Medium\"\n ? \"#F59E0B\"\n : theme?.colors.success;\n return <span style={{ color, fontWeight: \"600\" }}>{value}</span>;\n },\n },\n {\n key: \"expectedBenefit\",\n label: \"Expected Benefit\",\n sortable: false,\n },\n ];\n\n return (\n <ReportLayout\n title=\"Data Quality & Automation\"\n description=\"Data quality assessment and automation opportunities\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n {/* Data Quality Scores */}\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.lg || \"18px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Data Quality Assessment\n </h3>\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <ProgressBar\n percentage={data?.overallDataQualityScore ?? 0}\n label=\"Overall Quality Score\"\n theme={theme}\n height=\"large\"\n />\n\n <ProgressBar\n percentage={data?.completenessScore ?? 0}\n label=\"Completeness\"\n theme={theme}\n />\n\n <ProgressBar\n percentage={data?.accuracyScore ?? 0}\n label=\"Accuracy\"\n theme={theme}\n />\n\n <ProgressBar\n percentage={data?.consistencyScore ?? 0}\n label=\"Consistency\"\n theme={theme}\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n marginTop: theme?.spacing.lg || \"24px\",\n }}\n >\n <div\n style={{\n textAlign: \"center\",\n padding: theme?.spacing.sm || \"8px\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n Total Records Analyzed\n </p>\n <p\n style={{\n margin: `${theme?.spacing.xs || \"4px\"} 0 0 0`,\n fontSize: \"20px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {data?.totalRecordsAnalyzed ?? 0}\n </p>\n </div>\n\n <div\n style={{\n textAlign: \"center\",\n padding: theme?.spacing.sm || \"8px\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n Records with Issues\n </p>\n <p\n style={{\n margin: `${theme?.spacing.xs || \"4px\"} 0 0 0`,\n fontSize: \"20px\",\n fontWeight: \"600\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n {data?.recordsWithIssues ?? 0}\n </p>\n </div>\n </div>\n </div>\n\n {/* Automation Opportunities */}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Automation Readiness\n </h4>\n <div\n style={{\n marginBottom: theme?.spacing.md || \"16px\",\n }}\n >\n <ProgressBar\n percentage={\n data?.automationOpportunities?.automationReadinessScore ?? 0\n }\n label=\"Readiness Score\"\n theme={theme}\n height=\"large\"\n />\n </div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Fully Automatable:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.automationOpportunities?.fullyAutomatable ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Partially Automatable:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.automationOpportunities?.partiallyAutomatable ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Manual Only:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.automationOpportunities?.manualOnly ?? 0}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Data Gaps Table */}\n {data?.identifiedDataGaps && data.identifiedDataGaps.length > 0 && (\n <div>\n <DataTable\n title=\"Identified Data Gaps\"\n columns={dataGapColumns}\n data={data.identifiedDataGaps.map((gap: DataGap, idx: number) => ({\n id: idx,\n ...gap,\n }))}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n\n {/* Recommendations Table */}\n {data?.recommendations && data.recommendations.length > 0 && (\n <div>\n <DataTable\n title=\"Recommendations\"\n columns={recommendationColumns}\n data={data.recommendations.map(\n (rec: Recommendation, idx: number) => ({ id: idx, ...rec }),\n )}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * Reports Dashboard\n * Main container that displays all 5 reports with navigation\n */\n\nimport React, { useState } from \"react\";\nimport { ExecutiveDashboard } from \"./reports/ExecutiveDashboard\";\nimport { SupplyChainRisk } from \"./reports/SupplyChainRisk\";\nimport { ExecutionAuditTrail } from \"./reports/ExecutionAuditTrail\";\nimport { PortfolioHealth } from \"./reports/PortfolioHealth\";\nimport { DataQualityAutomation } from \"./reports/DataQualityAutomation\";\nimport { Theme } from \"../types\";\n\nexport type ReportType = \"executive\" | \"risk\" | \"audit\" | \"health\" | \"quality\";\n\nexport interface ReportsDashboardProps {\n theme?: Theme;\n initialReport?: ReportType;\n}\n\nconst REPORTS: Array<{\n id: ReportType;\n label: string;\n icon: string;\n description: string;\n}> = [\n {\n id: \"executive\",\n label: \"Executive Dashboard\",\n icon: \"📊\",\n description: \"High-level directive execution metrics\",\n },\n {\n id: \"risk\",\n label: \"Supply Chain Risk\",\n icon: \"⚠️\",\n description: \"Risk analysis and supply chain health\",\n },\n {\n id: \"audit\",\n label: \"Execution Audit\",\n icon: \"✓\",\n description: \"Directive execution history and audit trail\",\n },\n {\n id: \"health\",\n label: \"Portfolio Health\",\n icon: \"❤️\",\n description: \"Portfolio metric health and critical alerts\",\n },\n {\n id: \"quality\",\n label: \"Data Quality\",\n icon: \"📈\",\n description: \"Data quality and automation assessment\",\n },\n];\n\nexport const ReportsDashboard: React.FC<ReportsDashboardProps> = ({\n theme,\n initialReport = \"executive\",\n}) => {\n const [activeReport, setActiveReport] = useState<ReportType>(initialReport);\n\n const containerStyle: React.CSSProperties = {\n minHeight: \"100vh\",\n backgroundColor: theme?.colors.background || \"#fff\",\n color: theme?.colors.text || \"#000\",\n };\n\n const navContainerStyle: React.CSSProperties = {\n borderBottom: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n };\n\n const navWrapperStyle: React.CSSProperties = {\n maxWidth: \"1400px\",\n margin: \"0 auto\",\n padding: `${theme?.spacing.md || \"16px\"} ${theme?.spacing.lg || \"24px\"}`,\n display: \"flex\",\n gap: theme?.spacing.md || \"16px\",\n overflowX: \"auto\",\n scrollBehavior: \"smooth\",\n };\n\n const navButtonStyle = (isActive: boolean): React.CSSProperties => ({\n padding: `${theme?.spacing.sm || \"8px\"} ${theme?.spacing.md || \"16px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n fontWeight: \"500\",\n borderRadius: theme?.borderRadius || \"8px\",\n border: \"none\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n backgroundColor: isActive\n ? theme?.colors.primary || \"#1976d2\"\n : theme?.colors.background || \"#fff\",\n color: isActive ? \"#fff\" : theme?.colors.text || \"#000\",\n whiteSpace: \"nowrap\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme?.spacing.xs || \"4px\",\n });\n\n const contentStyle: React.CSSProperties = {\n maxWidth: \"1400px\",\n margin: \"0 auto\",\n padding: theme?.spacing.lg || \"24px\",\n };\n\n return (\n <div style={containerStyle}>\n {/* Navigation Bar */}\n <div style={navContainerStyle}>\n <div style={navWrapperStyle}>\n {REPORTS.map((report) => (\n <button\n key={report.id}\n onClick={() => setActiveReport(report.id)}\n style={navButtonStyle(activeReport === report.id)}\n title={report.description}\n >\n <span>{report.icon}</span>\n <span>{report.label}</span>\n </button>\n ))}\n </div>\n </div>\n\n {/* Content Area */}\n <div style={contentStyle}>\n {activeReport === \"executive\" && <ExecutiveDashboard theme={theme} />}\n {activeReport === \"risk\" && <SupplyChainRisk theme={theme} />}\n {activeReport === \"audit\" && <ExecutionAuditTrail theme={theme} />}\n {activeReport === \"health\" && <PortfolioHealth theme={theme} />}\n {activeReport === \"quality\" && <DataQualityAutomation theme={theme} />}\n </div>\n </div>\n );\n};\n","/**\n * RiskMatrix Component\n * 2D visualization of risk items (probability vs impact)\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface RiskMatrixItem {\n id: string;\n name: string;\n probability: number; // 0-100\n impact: number; // 0-100\n severity: \"low\" | \"medium\" | \"high\";\n}\n\nexport interface RiskMatrixProps {\n items: RiskMatrixItem[];\n title?: string;\n height?: number;\n theme?: Theme;\n}\n\nexport const RiskMatrix: React.FC<RiskMatrixProps> = ({\n items,\n title,\n height = 300,\n theme,\n}) => {\n if (!items || items.length === 0) {\n return (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n No risk data available\n </div>\n );\n }\n\n const padding = 50;\n const width = 500;\n const innerWidth = width - padding * 2;\n const innerHeight = height - padding * 2;\n\n const getRiskColor = (severity: \"low\" | \"medium\" | \"high\"): string => {\n if (severity === \"high\") return theme?.colors.error || \"#ef4444\";\n if (severity === \"medium\") return \"#F59E0B\";\n return theme?.colors.success || \"#10B981\";\n };\n\n return (\n <div>\n {title && (\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h3>\n )}\n <svg\n width=\"100%\"\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"xMidYMid meet\"\n style={{\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: \"8px\",\n }}\n >\n {/* Background quadrants */}\n {/* High Risk (top-right) */}\n <rect\n x={padding + innerWidth / 2}\n y={padding}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#ef4444\"\n opacity=\"0.05\"\n />\n {/* Medium Risk (middle) */}\n <rect\n x={padding}\n y={padding}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#F59E0B\"\n opacity=\"0.05\"\n />\n <rect\n x={padding + innerWidth / 2}\n y={padding + innerHeight / 2}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#F59E0B\"\n opacity=\"0.05\"\n />\n {/* Low Risk (bottom-left) */}\n <rect\n x={padding}\n y={padding + innerHeight / 2}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#10B981\"\n opacity=\"0.05\"\n />\n\n {/* Grid */}\n <line\n x1={padding}\n y1={padding + innerHeight / 2}\n x2={width - padding}\n y2={padding + innerHeight / 2}\n stroke={theme?.colors.border || \"#e0e0e0\"}\n strokeWidth=\"2\"\n />\n <line\n x1={padding + innerWidth / 2}\n y1={padding}\n x2={padding + innerWidth / 2}\n y2={height - padding}\n stroke={theme?.colors.border || \"#e0e0e0\"}\n strokeWidth=\"2\"\n />\n\n {/* Axis labels */}\n <text\n x={width / 2}\n y={height - 5}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill={theme?.colors.textSecondary || \"#666\"}\n fontWeight=\"500\"\n >\n Probability\n </text>\n <text\n x={15}\n y={height / 2}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill={theme?.colors.textSecondary || \"#666\"}\n fontWeight=\"500\"\n transform={`rotate(-90 15 ${height / 2})`}\n >\n Impact\n </text>\n\n {/* Data points */}\n {items.map((item) => {\n const x = padding + (item.probability / 100) * innerWidth;\n const y = padding + innerHeight - (item.impact / 100) * innerHeight;\n\n return (\n <g key={item.id}>\n <circle\n cx={x}\n cy={y}\n r=\"6\"\n fill={getRiskColor(item.severity)}\n opacity=\"0.7\"\n style={{ cursor: \"pointer\" }}\n />\n <circle\n cx={x}\n cy={y}\n r=\"6\"\n fill=\"none\"\n stroke={getRiskColor(item.severity)}\n strokeWidth=\"2\"\n opacity=\"0.4\"\n />\n </g>\n );\n })}\n </svg>\n </div>\n );\n};\n"],"names":["DEFAULT_BASE_URL","createContext","useState","useContext","useRef","useEffect","useCallback","MIC_ICON_SVG","PLUS_ICON_SVG","CLOSE_ICON_SVG","useMemo"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.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","../src/components/analytics/AnalyticsDashboard.tsx","../src/utils/request-cache.ts","../src/hooks/analytics/useReportData.ts","../src/utils/date-range.ts","../src/hooks/analytics/useDateRange.ts","../src/components/reports/DateRangeSelector.tsx","../src/components/reports/LoadingState.tsx","../src/components/reports/ReportLayout.tsx","../src/components/reports/MetricCard.tsx","../src/components/reports/TrendChart.tsx","../src/components/reports/ExecutiveDashboard.tsx","../src/components/reports/ProgressBar.tsx","../src/components/reports/DataTable.tsx","../src/components/reports/SupplyChainRisk.tsx","../src/components/reports/StatusBadge.tsx","../src/components/reports/ExecutionAuditTrail.tsx","../src/components/reports/HealthGauge.tsx","../src/components/reports/PortfolioHealth.tsx","../src/components/reports/DataQualityAutomation.tsx","../src/components/ReportsDashboard.tsx","../src/components/reports/RiskMatrix.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 {\n OrchestratorRequest,\n OrchestratorResponse,\n ReactBridgeConfig,\n} from \"../types\";\nimport type {\n ExecutiveDashboardReport,\n SupplyChainRiskReport,\n ExecutionAuditTrailReport,\n PortfolioHealthReport,\n DataQualityAutomationReport,\n ReportDateRange,\n ExecutionAuditTrailParams,\n} from \"../types/reports\";\n\nconst DEFAULT_BASE_URL =\n \"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(\n request: OrchestratorRequest,\n ): 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 =\n typeof this.config.timeout === \"number\"\n ? this.config.timeout\n : 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)\n formData.append(\"userPreferences\", request.userPreferences);\n if (request.userRecentActivity)\n formData.append(\"userRecentActivity\", request.userRecentActivity);\n if (request.interfaceState)\n formData.append(\n \"InterfaceStateJson\",\n JSON.stringify(request.interfaceState),\n );\n if (request.sessionId) formData.append(\"sessionId\", request.sessionId);\n if (request.modalityHint)\n 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(\n `API request failed: ${response.status} ${response.statusText}`,\n );\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 // Pass the FULL ToolResult object to the orchestrator, not just the summary\n // The orchestrator needs: status, result_items, and detailed_data for sequential execution\n const toolResultJson = JSON.stringify(toolResult, null, 2);\n \n const request: OrchestratorRequest = {\n ...originalRequest,\n sessionId,\n query: `[Tool Result] ${toolResultJson}`,\n // CRITICAL: Remove document/image from subsequent requests\n // If we keep them, the orchestrator will reprocess the PDF on every tool result\n // This causes sequential execution to restart instead of continuing\n document: undefined,\n image: undefined,\n modalityHint: undefined,\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 /**\n * Report API Methods - Call analytics endpoints directly\n */\n\n private async fetchReport<T>(\n endpoint: string,\n params?: Record<string, string>,\n ): Promise<T> {\n const baseURL = this.config.baseURL || DEFAULT_BASE_URL;\n const url = new URL(`${baseURL}/api/reports/${endpoint}`);\n\n // Add query parameters if provided\n if (params) {\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n url.searchParams.append(key, params[key]);\n }\n }\n }\n\n try {\n const response = await fetch(url.toString(), {\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 const errorMessage = this.getErrorMessage(response.status);\n throw new Error(errorMessage);\n }\n\n return (await response.json()) as T;\n } catch (error) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(\"Failed to fetch report data\");\n }\n }\n\n private getErrorMessage(status: number): string {\n switch (status) {\n case 401:\n return \"Unauthorized: Invalid API key\";\n case 404:\n return \"Report endpoint not found\";\n case 500:\n return \"Server error: Unable to fetch report data\";\n default:\n return `API Error: ${status}`;\n }\n }\n\n async getExecutiveDashboard(\n params?: ReportDateRange,\n ): Promise<ExecutiveDashboardReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<ExecutiveDashboardReport>(\n \"executive-dashboard\",\n queryParams,\n );\n }\n\n async getSupplyChainRisk(\n params?: ReportDateRange,\n ): Promise<SupplyChainRiskReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<SupplyChainRiskReport>(\n \"supply-chain-risk\",\n queryParams,\n );\n }\n\n async getExecutionAuditTrail(\n params?: ExecutionAuditTrailParams,\n ): Promise<ExecutionAuditTrailReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n if (params?.directiveType) queryParams.directiveType = params.directiveType;\n return this.fetchReport<ExecutionAuditTrailReport>(\n \"execution-audit-trail\",\n queryParams,\n );\n }\n\n async getPortfolioHealth(\n params?: ReportDateRange,\n ): Promise<PortfolioHealthReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<PortfolioHealthReport>(\n \"portfolio-health\",\n queryParams,\n );\n }\n\n async getDataQualityAutomation(\n params?: ReportDateRange,\n ): Promise<DataQualityAutomationReport> {\n const queryParams: Record<string, string> = {};\n if (params?.startDate) queryParams.startDate = params.startDate;\n if (params?.endDate) queryParams.endDate = params.endDate;\n return this.fetchReport<DataQualityAutomationReport>(\n \"data-quality-automation\",\n queryParams,\n );\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 ||\n (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, {\n createContext,\n useContext,\n ReactNode,\n useState,\n useRef,\n} from \"react\";\nimport type {\n ReactBridgeConfig,\n Theme,\n STTProvider,\n TTSProvider,\n} 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(\n () => new ReactBridgeAPI(fullConfig),\n [fullConfig.apiKey, fullConfig.baseURL, 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 (\n previous.interfaceState.currentPageName !==\n current.interfaceState.currentPageName\n ) {\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 (\n queryOrOptions:\n | string\n | { image?: File; document?: File; query?: string },\n fromVoiceInput: boolean = false,\n ) => {\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\n ? `${messageContent} [Image: ${image.name}]`\n : `[Image: ${image.name}]`;\n } else if (document) {\n messageContent = messageContent\n ? `${messageContent} [Document: ${document.name}]`\n : `[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 // Process tool calls in a loop to support chained/sequential tool execution\n let currentToolCall: typeof response.toolCall | null = response.toolCall;\n let currentResponse = response;\n let toolCallCount = 0;\n const maxToolCalls = 50; // Prevent infinite loops\n let previousResultResponse: string | null = null;\n\n while (currentToolCall && toolCallCount < maxToolCalls) {\n toolCallCount++;\n\n // Execute the current tool\n const toolResult = await onIntentDetected(currentToolCall);\n\n // Step 3: Send tool result back to orchestrator\n if (lastRequestRef.current && currentResponse.sessionId) {\n const resultResponse = await api.sendToolResult(\n currentResponse.sessionId,\n toolResult,\n lastRequestRef.current,\n );\n\n // Check if result is identical to previous one (prevent infinite loops on duplicate responses)\n const currentResultString = JSON.stringify(resultResponse);\n if (previousResultResponse === currentResultString) {\n console.warn(\"Identical tool response detected. Exiting loop to prevent infinite loop.\");\n currentToolCall = null;\n break;\n }\n previousResultResponse = currentResultString;\n\n // Add assistant message with tool result context\n const finalMessage: ChatMessage = {\n id: `assistant-final-${Date.now()}-${toolCallCount}`,\n role: \"assistant\",\n content: resultResponse.message,\n timestamp: new Date(),\n toolCall: resultResponse.toolCall,\n };\n setMessages((prev) => [...prev, finalMessage]);\n\n // Trigger TTS for final response only if input came from voice (first iteration only)\n if (fromVoiceInput && toolCallCount === 1) {\n ttsProvider.speak(resultResponse.message);\n }\n if (onAgentResponse && toolCallCount === 1) {\n onAgentResponse(resultResponse.message);\n }\n\n // Check if there's another tool call in the response (chained execution)\n if (resultResponse.toolCall) {\n currentToolCall = resultResponse.toolCall;\n currentResponse = resultResponse;\n } else {\n // No more tool calls, exit loop\n currentToolCall = null;\n }\n } else {\n // Cannot send result, exit loop\n currentToolCall = null;\n }\n }\n\n if (toolCallCount >= maxToolCalls) {\n console.warn(\"Tool call loop exceeded maximum iterations. Possible infinite loop detected.\");\n }\n } catch (toolError) {\n const errorMessage =\n 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(\n toolError instanceof Error\n ? toolError\n : new Error(errorMessage),\n );\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 }, [\n sttProvider,\n sendChatQuery,\n onSpeechStart,\n onSpeechEnd,\n onTranscript,\n onError,\n ]);\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, useCallback } 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// Expandable Message Component with Show More functionality\nconst ExpandableMessage = ({\n content,\n isUser,\n theme,\n isExpanded,\n onToggleExpand,\n}: {\n content: string;\n isUser: boolean;\n theme: any;\n isExpanded: boolean;\n onToggleExpand: () => void;\n}) => {\n const characterLimit = 300;\n const isLongMessage = content.length > characterLimit;\n const displayText = isExpanded ? content : content.substring(0, characterLimit);\n\n return (\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 wordWrap: \"break-word\",\n whiteSpace: \"pre-wrap\",\n overflowWrap: \"break-word\",\n }}\n >\n <div style={{ marginBottom: isLongMessage && !isExpanded ? \"8px\" : \"0\" }}>\n {displayText}\n </div>\n {isLongMessage && (\n <button\n onClick={onToggleExpand}\n style={{\n background: \"none\",\n border: \"none\",\n color: isUser ? \"#ffffff\" : theme.colors.primary,\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: \"0\",\n marginTop: isExpanded ? \"8px\" : \"0\",\n fontSize: theme.fontSizes.sm,\n fontWeight: \"bold\",\n }}\n >\n {isExpanded ? \"Show less\" : \"Show more...\"}\n </button>\n )}\n </div>\n );\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 // Track expanded messages by ID\n const [expandedMessages, setExpandedMessages] = useState<Set<string>>(\n new Set(),\n );\n // Track textarea height\n const [textareaHeight, setTextareaHeight] = useState<number>(40);\n\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(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 // Auto-scroll to bottom when widget opens\n useEffect(() => {\n if (isOpen && renderMode === \"standard\") {\n setTimeout(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, 100);\n }\n }, [isOpen, renderMode]);\n\n // Handle textarea height adjustment\n const handleTextareaChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const textarea = e.target;\n setInputValue(textarea.value);\n\n // Reset height to calculate scroll height\n textarea.style.height = \"auto\";\n const scrollHeight = textarea.scrollHeight;\n const lineHeight = parseInt(\n window.getComputedStyle(textarea).lineHeight,\n );\n const maxHeight = lineHeight * 3; // 3 lines max\n\n if (scrollHeight <= maxHeight) {\n textarea.style.height = scrollHeight + \"px\";\n setTextareaHeight(scrollHeight);\n } else {\n textarea.style.height = maxHeight + \"px\";\n textarea.style.overflowY = \"auto\";\n setTextareaHeight(maxHeight);\n }\n },\n [],\n );\n\n // Handle key down for Shift+Enter and Enter submission\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n if (e.shiftKey) {\n // Shift+Enter: Allow new line (default behavior)\n return;\n } else {\n // Enter alone: Submit\n e.preventDefault();\n const form = e.currentTarget.closest(\"form\");\n if (form) {\n form.dispatchEvent(\n new Event(\"submit\", { bubbles: true, cancelable: true }),\n );\n }\n }\n }\n },\n [],\n );\n\n // Toggle message expansion\n const toggleMessageExpansion = (messageId: string) => {\n setExpandedMessages((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(messageId)) {\n newSet.delete(messageId);\n } else {\n newSet.add(messageId);\n }\n return newSet;\n });\n };\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 && renderMode === \"standard\") {\n setIsOpen(false);\n }\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isUploadMenuOpen, isOpen, renderMode]);\n\n // Add scrollbar styling for textareas\n useEffect(() => {\n const styleId = \"react-bridge-textarea-styles\";\n \n // Check if styles are already injected\n if (!document.getElementById(styleId)) {\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = `\n .react-bridge-textarea {\n scrollbar-width: thin;\n scrollbar-color: rgba(0, 0, 0, 0.3) transparent;\n }\n \n .react-bridge-textarea::-webkit-scrollbar {\n width: 6px;\n }\n \n .react-bridge-textarea::-webkit-scrollbar-track {\n background: transparent;\n }\n \n .react-bridge-textarea::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.3);\n border-radius: 3px;\n }\n \n .react-bridge-textarea::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.5);\n }\n `;\n document.head.appendChild(style);\n }\n\n return () => {\n // Optional: cleanup if needed\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 setTextareaHeight(40);\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n textareaRef.current.style.overflowY = \"hidden\";\n }\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 const isExpanded = expandedMessages.has(message.id);\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 <ExpandableMessage\n content={message.content}\n isUser={isUser}\n theme={theme}\n isExpanded={isExpanded}\n onToggleExpand={() => toggleMessageExpansion(message.id)}\n />\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: \"flex-end\",\n }}\n >\n <textarea\n ref={textareaRef}\n value={inputValue}\n onChange={handleTextareaChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={isLoading}\n className=\"react-bridge-textarea\"\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 fontFamily: \"inherit\",\n resize: \"none\",\n minHeight: \"40px\",\n maxHeight: \"120px\",\n height: `${textareaHeight}px`,\n scrollbarWidth: \"thin\",\n } as React.CSSProperties}\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 &times;\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\n ? renderMessage(message)\n : 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: \"flex-end\",\n }}\n >\n <textarea\n ref={textareaRef}\n value={inputValue}\n onChange={handleTextareaChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={isLoading}\n className=\"react-bridge-textarea\"\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 fontFamily: \"inherit\",\n resize: \"none\",\n minHeight: \"40px\",\n maxHeight: \"120px\",\n height: `${textareaHeight}px`,\n scrollbarWidth: \"thin\",\n } as React.CSSProperties}\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, useCallback } from \"react\";\nimport { useReactBridge } from \"../hooks/useReactBridge\";\nimport { useReactBridgeContext } from \"../provider/ReactBridgeProvider\";\nimport type {\n OnIntentDetected,\n InterfaceState,\n Theme,\n CurrentContext,\n} 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\n// Expandable Message Component for Search Results\nconst SearchResultItem = ({\n content,\n theme,\n isExpanded,\n onToggleExpand,\n}: {\n content: string;\n theme: any;\n isExpanded: boolean;\n onToggleExpand: () => void;\n}) => {\n const characterLimit = 300;\n const isLongMessage = content.length > characterLimit;\n const displayText = isExpanded ? content : content.substring(0, characterLimit);\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n }}\n >\n <div\n style={{\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n color: theme.colors.text,\n }}\n >\n {displayText}\n </div>\n {isLongMessage && (\n <button\n onClick={onToggleExpand}\n style={{\n background: \"none\",\n border: \"none\",\n color: theme.colors.primary,\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: \"0\",\n textAlign: \"left\",\n fontSize: theme.fontSizes.sm,\n fontWeight: \"bold\",\n }}\n >\n {isExpanded ? \"Show less\" : \"Show more...\"}\n </button>\n )}\n </div>\n );\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 {\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 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 [expandedMessages, setExpandedMessages] = useState<Set<string>>(\n new Set(),\n );\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 (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\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 =\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 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 = [\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"text/plain\",\n ];\n\n const allowedTypes = file.type.startsWith(\"image/\")\n ? imageTypes\n : documentTypes;\n\n if (!allowedTypes.includes(file.type)) {\n if (onError) {\n onError(\n new Error(\n `Invalid file type. Please select a valid ${file.type.startsWith(\"image/\") ? \"image\" : \"document\"} file.`,\n ),\n );\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(\n new Error(\n \"File size too large. Please select a file smaller than 10MB.\",\n ),\n );\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 // Toggle message expansion\n const toggleMessageExpansion = useCallback((messageId: string) => {\n setExpandedMessages((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(messageId)) {\n newSet.delete(messageId);\n } else {\n newSet.add(messageId);\n }\n return newSet;\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/\")\n ? selectedFile\n : undefined,\n document: selectedFile.type.startsWith(\"image/\")\n ? undefined\n : 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 .reverse();\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={\n selectedFile ? `Search with ${selectedFile.name}...` : placeholder\n }\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:\n isLoading || (!inputValue.trim() && !selectedFile)\n ? \"not-allowed\"\n : \"pointer\",\n opacity:\n 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\n style={{\n flex: 1,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.text,\n }}\n >\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 }}\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 <SearchResultItem\n content={message.content}\n theme={theme}\n isExpanded={expandedMessages.has(message.id)}\n onToggleExpand={() => toggleMessageExpansion(message.id)}\n />\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(\n baseTheme: Theme,\n overrides: Partial<Theme>,\n): 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 =\n \"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(\n `Failed to fetch analytics configs: ${response.statusText}`,\n );\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(\n `No results found for analytics type: ${analyticsType}`,\n );\n }\n throw new Error(\n `Failed to fetch analytics result: ${response.statusText}`,\n );\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(\n `Failed to update directive status: ${response.statusText}`,\n );\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> = ({\n metrics,\n theme,\n}) => {\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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\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 {\n AnalyticsDirective,\n DirectiveActionResult,\n} 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 {\n AnalyticsDirective,\n OnDirectiveAction,\n} 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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\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} (\n {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\n ? \"Processing...\"\n : \"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 } =\n 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\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n }}\n >\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\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xl,\n }}\n >\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\n observations={result.observations}\n theme={theme}\n />\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\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\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>(\n null,\n );\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\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\n Loading analytics...\n </div>\n ) : configs.length === 0 ? (\n <div\n style={{ textAlign: \"center\", color: theme.colors.textSecondary }}\n >\n No analytics configured\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n {configs.map((config) => (\n <div\n key={config.configId}\n onClick={() =>\n config.isEnabled &&\n setSelectedAnalytics(config.analyticsType)\n }\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:{\" \"}\n {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 <>\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 40 40\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 10 L 35 20 L 10 30 L 15 20 Z\" fill=\"currentColor\"/>\n </svg>\n {/* <span className=\"absolute -top-1 -right-1 flex h-4 w-4\">\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-accent-red opacity-75\"></span>\n <span className=\"relative inline-flex rounded-full h-4 w-4 bg-accent-red text-[9px] font-bold text-white items-center justify-center\">5</span>\n </span> */}\n </>\n);\n\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\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","import React, { useState, useEffect } from \"react\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { useAnalyticsConfigs } from \"../../hooks/analytics/useAnalyticsConfigs\";\nimport { useAnalyticsResult } from \"../../hooks/analytics/useAnalyticsResult\";\nimport { useDirectiveAction } from \"../../hooks/analytics/useDirectiveAction\";\nimport type {\n AnalyticsDirective,\n DirectiveActionCallback,\n} from \"../../types/analytics\";\nimport type { Theme } from \"../../types\";\n\nexport interface AnalyticsDashboardProps {\n onDirectiveAction: DirectiveActionCallback;\n className?: string;\n showRefresh?: boolean;\n autoRefreshInterval?: number; // in seconds, 0 = disabled\n theme?: Theme;\n}\n\nexport function AnalyticsDashboard({\n onDirectiveAction,\n className = \"\",\n showRefresh = true,\n autoRefreshInterval = 0,\n theme: customTheme,\n}: AnalyticsDashboardProps) {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = customTheme || contextTheme;\n const [selectedAnalytics, setSelectedAnalytics] = useState<string | null>(\n null,\n );\n const [directiveFilter, setDirectiveFilter] = useState<\n \"all\" | \"proposed\" | \"executed\" | \"declined\"\n >(\"all\");\n // Directive type filter (by action)\n const [directiveType, setDirectiveType] = useState<string>(\"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 const [processingId, setProcessingId] = useState<string | null>(null);\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 (\n directive: AnalyticsDirective,\n action: \"execute\" | \"decline\",\n ) => {\n setProcessingId(directive.directiveId);\n await handleAction(directive, action);\n setProcessingId(null);\n // Refetch result to get updated directive statuses\n refetchResult();\n };\n\n // Get all unique directive types (actions)\n const directiveTypes = React.useMemo(() => {\n if (!result?.directives) return [];\n const types = Array.from(new Set(result.directives.map((d) => d.action)));\n return types;\n }, [result?.directives]);\n\n // Filter directives by status and type\n const filteredDirectives =\n result?.directives.filter((d) => {\n const statusMatch =\n directiveFilter === \"all\" || d.status === directiveFilter;\n const typeMatch = directiveType === \"all\" || d.action === directiveType;\n return statusMatch && typeMatch;\n }) || [];\n\n const selectedConfig = configs?.find(\n (c) => c.analyticsType === selectedAnalytics,\n );\n\n const proposedCount =\n result?.directives.filter((d) => d.status === \"proposed\").length || 0;\n const executedCount =\n result?.directives.filter((d) => d.status === \"executed\").length || 0;\n const declinedCount =\n result?.directives.filter((d) => d.status === \"declined\").length || 0;\n\n const containerStyle: React.CSSProperties = {\n display: \"flex\",\n gap: theme.spacing.lg,\n width: \"100%\",\n minHeight: \"540px\",\n backgroundColor: theme.colors.background,\n color: theme.colors.text,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n boxShadow: theme.boxShadow,\n padding: theme.spacing.lg,\n };\n\n const sidebarStyle: React.CSSProperties = {\n width: \"320px\",\n borderRight: `1px solid ${theme.colors.border}`,\n paddingRight: theme.spacing.lg,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n };\n\n const listItemStyle = (\n isActive: boolean,\n isDisabled: boolean,\n ): React.CSSProperties => ({\n width: \"100%\",\n textAlign: \"left\",\n padding: theme.spacing.md,\n backgroundColor: isActive ? theme.colors.primary : theme.colors.surface,\n color: isActive ? \"#fff\" : theme.colors.text,\n border: `1px solid ${isActive ? theme.colors.primary : theme.colors.border}`,\n borderRadius: theme.borderRadius,\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n opacity: isDisabled ? 0.6 : 1,\n transition: \"transform 0.15s ease, box-shadow 0.15s ease\",\n boxShadow: isActive ? theme.boxShadow : \"none\",\n });\n\n const pillStyle = (bg: string): React.CSSProperties => ({\n fontSize: theme.fontSizes.xs,\n padding: \"2px 8px\",\n borderRadius: \"999px\",\n backgroundColor: bg,\n color: \"#fff\",\n fontWeight: 600,\n });\n\n const placeholderStyle: React.CSSProperties = {\n flex: 1,\n minHeight: \"420px\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: theme.spacing.sm,\n color: theme.colors.textSecondary,\n textAlign: \"center\",\n };\n\n const cardStyle: React.CSSProperties = {\n backgroundColor: theme.colors.surface,\n border: `1px solid ${theme.colors.border}`,\n borderRadius: theme.borderRadius,\n padding: theme.spacing.md,\n };\n\n const statusBadgeStyle = (status: string): React.CSSProperties => {\n const colors: Record<string, { bg: string; text: string }> = {\n proposed: { bg: theme.colors.primary, text: \"#fff\" },\n executed: { bg: theme.colors.success, text: \"#fff\" },\n declined: { bg: theme.colors.error, text: \"#fff\" },\n ok: { bg: \"#d1fae5\", text: \"#065f46\" },\n warning: { bg: \"#fef3c7\", text: \"#92400e\" },\n critical: { bg: \"#fee2e2\", text: \"#991b1b\" },\n high: { bg: \"#fee2e2\", text: \"#991b1b\" },\n medium: { bg: \"#fef3c7\", text: \"#92400e\" },\n low: { bg: \"#e0ecff\", text: \"#1e3a8a\" },\n };\n\n const palette = colors[status] || {\n bg: theme.colors.surface,\n text: theme.colors.text,\n };\n return {\n fontSize: theme.fontSizes.xs,\n padding: \"2px 8px\",\n borderRadius: \"999px\",\n backgroundColor: palette.bg,\n color: palette.text,\n fontWeight: 700,\n textTransform: \"capitalize\",\n };\n };\n\n const directiveCardStyle = (status: string): React.CSSProperties => ({\n ...cardStyle,\n borderLeft: `4px solid ${\n status === \"executed\"\n ? theme.colors.success\n : status === \"declined\"\n ? theme.colors.error\n : theme.colors.primary\n }`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n });\n\n return (\n <div className={className} style={containerStyle}>\n <div style={sidebarStyle}>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>Analytics</h3>\n {showRefresh && (\n <button\n type=\"button\"\n onClick={handleRefresh}\n disabled={configsLoading}\n style={{\n border: `1px solid ${theme.colors.border}`,\n backgroundColor: theme.colors.surface,\n color: theme.colors.text,\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderRadius: theme.borderRadius,\n cursor: configsLoading ? \"not-allowed\" : \"pointer\",\n }}\n >\n {configsLoading ? \"Refreshing...\" : \"Refresh\"}\n </button>\n )}\n </div>\n\n {configsLoading && (\n <div style={placeholderStyle}>Loading analytics...</div>\n )}\n\n {configsError && (\n <div style={placeholderStyle}>\n Error loading analytics: {configsError.message}\n </div>\n )}\n\n {configs && configs.length === 0 && (\n <div style={placeholderStyle}>\n No analytics configured. Configure analytics in your DirectivSys\n dashboard.\n </div>\n )}\n\n {configs && configs.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n }}\n >\n {configs.map((config) => {\n const isActive = selectedAnalytics === config.analyticsType;\n return (\n <button\n key={config.configId}\n type=\"button\"\n onClick={() =>\n config.isEnabled &&\n setSelectedAnalytics(config.analyticsType)\n }\n style={listItemStyle(isActive, !config.isEnabled)}\n disabled={!config.isEnabled}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: theme.spacing.xs,\n width: \"100%\",\n }}\n >\n <span\n style={{ fontSize: theme.fontSizes.md, fontWeight: 600 }}\n >\n {config.analyticsType}\n </span>\n {!config.isEnabled && (\n <span style={pillStyle(theme.colors.textSecondary)}>\n Disabled\n </span>\n )}\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.sm,\n color: isActive\n ? \"rgba(255,255,255,0.9)\"\n : theme.colors.textSecondary,\n marginBottom: theme.spacing.xs,\n }}\n >\n {config.templateDescription}\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: theme.fontSizes.xs,\n color: isActive\n ? \"rgba(255,255,255,0.8)\"\n : theme.colors.textSecondary,\n }}\n >\n <span style={{ textTransform: \"capitalize\" }}>\n {config.frequency}\n </span>\n {config.lastExecutedAt && (\n <span>\n Last:{\" \"}\n {new Date(config.lastExecutedAt).toLocaleDateString()}\n </span>\n )}\n </div>\n </button>\n );\n })}\n </div>\n )}\n </div>\n\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.lg,\n }}\n >\n {!selectedAnalytics && (\n <div style={placeholderStyle}>\n <h3 style={{ margin: 0, color: theme.colors.text }}>\n No analytics selected\n </h3>\n <p style={{ margin: 0 }}>\n Select an analytics type from the left to view results.\n </p>\n </div>\n )}\n\n {selectedAnalytics && resultLoading && (\n <div style={placeholderStyle}>Loading results...</div>\n )}\n\n {selectedAnalytics && resultError && (\n <div style={placeholderStyle}>\n Error loading results: {resultError.message}\n </div>\n )}\n\n {selectedAnalytics && !resultLoading && !result && (\n <div style={placeholderStyle}>\n <h3 style={{ margin: 0, color: theme.colors.text }}>\n No results yet\n </h3>\n <p style={{ margin: 0 }}>\n This analytics has not run yet. Results will appear after the\n first run.\n </p>\n </div>\n )}\n\n {selectedAnalytics && result && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.lg,\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xs,\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: theme.fontSizes.xl,\n color: theme.colors.text,\n }}\n >\n {selectedConfig?.analyticsType}\n </h2>\n <p\n style={{\n margin: 0,\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n Generated: {new Date(result.createdAt).toLocaleString()}\n </p>\n </div>\n\n {result.metrics && result.metrics.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>\n Metrics\n </h3>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns:\n \"repeat(auto-fill, minmax(220px, 1fr))\",\n gap: theme.spacing.md,\n }}\n >\n {result.metrics.map((metric, index) => (\n <div\n key={index}\n style={{\n ...cardStyle,\n borderLeft: `4px solid ${\n metric.status === \"ok\"\n ? theme.colors.success\n : metric.status === \"warning\"\n ? \"#f59e0b\"\n : theme.colors.error\n }`,\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 fontWeight: 600,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n display: \"inline-block\",\n }}\n title={metric.name}\n >\n {metric.name}\n </span>\n <span style={statusBadgeStyle(metric.status)}>\n {metric.status}\n </span>\n </div>\n <div\n style={{\n fontSize: theme.fontSizes.xl,\n fontWeight: 700,\n }}\n >\n {metric.value} {metric.unit}\n </div>\n <div\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {metric.explanation}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {result.observations && result.observations.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>\n Observations\n </h3>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n }}\n >\n {result.observations.map((observation, index) => (\n <div\n key={index}\n style={{\n ...cardStyle,\n borderLeft: `4px solid ${\n observation.severity === \"high\"\n ? theme.colors.error\n : observation.severity === \"medium\"\n ? \"#f59e0b\"\n : theme.colors.primary\n }`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xs,\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: theme.spacing.sm,\n alignItems: \"center\",\n }}\n >\n <span style={statusBadgeStyle(observation.severity)}>\n {observation.severity}\n </span>\n <span\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {observation.scope}\n </span>\n </div>\n <div\n style={{\n color: theme.colors.text,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {observation.text}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {result.directives && result.directives.length > 0 && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.md,\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: theme.spacing.sm,\n }}\n >\n <h3 style={{ margin: 0, fontSize: theme.fontSizes.lg }}>\n Recommended actions\n </h3>\n <div style={{ display: \"flex\", gap: theme.spacing.xs }}>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"all\")}\n style={{\n ...pillStyle(\n directiveFilter === \"all\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"all\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n All ({result.directives.length})\n </button>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"proposed\")}\n style={{\n ...pillStyle(\n directiveFilter === \"proposed\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"proposed\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n Proposed ({proposedCount})\n </button>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"executed\")}\n style={{\n ...pillStyle(\n directiveFilter === \"executed\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"executed\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n Executed ({executedCount})\n </button>\n <button\n type=\"button\"\n onClick={() => setDirectiveFilter(\"declined\")}\n style={{\n ...pillStyle(\n directiveFilter === \"declined\"\n ? theme.colors.primary\n : theme.colors.surface,\n ),\n border: `1px solid ${theme.colors.border}`,\n color:\n directiveFilter === \"declined\"\n ? \"#fff\"\n : theme.colors.text,\n }}\n >\n Declined ({declinedCount})\n </button>\n </div>\n {/* Directive type filter select (only if >1 type) */}\n {directiveTypes.length > 1 && (\n <select\n value={directiveType}\n onChange={(e) => setDirectiveType(e.target.value)}\n style={{\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.border}`,\n background: theme.colors.surface,\n color: theme.colors.text,\n fontSize: theme.fontSizes.sm,\n fontWeight: 500,\n outline: \"none\",\n minWidth: 120,\n marginLeft: theme.spacing.sm,\n cursor: \"pointer\",\n }}\n >\n <option value=\"all\">All types</option>\n {directiveTypes.map((type) => (\n <option key={type} value={type}>\n {type}\n </option>\n ))}\n </select>\n )}\n </div>\n\n {filteredDirectives.length === 0 && (\n <div style={placeholderStyle}>\n No directives match the selected filter.\n </div>\n )}\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.sm,\n }}\n >\n {filteredDirectives.map((directive) => (\n <div\n key={directive.directiveId}\n style={directiveCardStyle(directive.status)}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n flexWrap: \"wrap\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme.spacing.xs,\n }}\n >\n <span style={{ fontWeight: 700 }}>\n {directive.action}\n </span>\n <span\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n Priority: {directive.priority}\n </span>\n </div>\n <span style={statusBadgeStyle(directive.status)}>\n {directive.status}\n </span>\n </div>\n\n <div\n style={{\n color: theme.colors.text,\n fontSize: theme.fontSizes.sm,\n }}\n >\n {directive.rationale}\n </div>\n\n {directive.parameters &&\n directive.parameters.length > 0 && (\n <div\n style={{\n color: theme.colors.textSecondary,\n fontSize: theme.fontSizes.sm,\n }}\n >\n <strong style={{ color: theme.colors.text }}>\n Parameters:\n </strong>\n <ul\n style={{\n margin: `${theme.spacing.xs} 0 0 16px`,\n padding: 0,\n }}\n >\n {directive.parameters.map((param, index) => (\n <li\n key={index}\n style={{ marginBottom: theme.spacing.xs }}\n >\n <code>{param.name}</code>: {param.value}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {directive.status === \"proposed\" && (\n <div style={{ display: \"flex\", gap: theme.spacing.sm }}>\n <button\n type=\"button\"\n onClick={() =>\n handleDirectiveAction(directive, \"execute\")\n }\n disabled={\n isProcessing &&\n processingId === directive.directiveId\n }\n style={{\n ...pillStyle(theme.colors.success),\n border: \"none\",\n cursor:\n isProcessing &&\n processingId === directive.directiveId\n ? \"not-allowed\"\n : \"pointer\",\n }}\n >\n {isProcessing &&\n processingId === directive.directiveId\n ? \"Processing...\"\n : \"Execute\"}\n </button>\n <button\n type=\"button\"\n onClick={() =>\n handleDirectiveAction(directive, \"decline\")\n }\n disabled={\n isProcessing &&\n processingId === directive.directiveId\n }\n style={{\n ...pillStyle(theme.colors.error),\n border: \"none\",\n cursor:\n isProcessing &&\n processingId === directive.directiveId\n ? \"not-allowed\"\n : \"pointer\",\n }}\n >\n {isProcessing &&\n processingId === directive.directiveId\n ? \"Processing...\"\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","/**\n * Request Cache Manager\n * Implements a simple caching mechanism similar to react-query\n * Prevents duplicate concurrent requests and caches results\n */\n\ninterface CacheEntry<T> {\n data: T;\n timestamp: number;\n ttl: number; // milliseconds\n}\n\ninterface PendingRequest<T> {\n promise: Promise<T>;\n}\n\nconst DEFAULT_TTL = 5 * 60 * 1000; // 5 minutes\n\nclass RequestCache {\n private cache = new Map<string, CacheEntry<any>>();\n private pendingRequests = new Map<string, PendingRequest<any>>();\n\n /**\n * Generate a cache key from function and parameters\n */\n private getCacheKey(fetchFn: Function, params?: any): string {\n const fnString = fetchFn.toString();\n const paramString = params ? JSON.stringify(params) : '';\n return `${fnString}::${paramString}`;\n }\n\n /**\n * Check if cache entry is still valid\n */\n private isCacheValid<T>(entry: CacheEntry<T>): boolean {\n return Date.now() - entry.timestamp < entry.ttl;\n }\n\n /**\n * Fetch or return cached data\n */\n async get<T>(\n fetchFn: () => Promise<T>,\n params?: any,\n ttl: number = DEFAULT_TTL\n ): Promise<T> {\n const key = this.getCacheKey(fetchFn, params);\n\n // Return valid cached data\n const cached = this.cache.get(key);\n if (cached && this.isCacheValid(cached)) {\n return cached.data as T;\n }\n\n // Return pending request if already in flight\n const pending = this.pendingRequests.get(key);\n if (pending) {\n return pending.promise;\n }\n\n // Create new request\n const promise = fetchFn().then((data) => {\n this.cache.set(key, {\n data,\n timestamp: Date.now(),\n ttl,\n });\n this.pendingRequests.delete(key);\n return data;\n }).catch((error) => {\n this.pendingRequests.delete(key);\n throw error;\n });\n\n this.pendingRequests.set(key, { promise });\n return promise;\n }\n\n /**\n * Invalidate cache entry\n */\n invalidate(fetchFn: Function, params?: any): void {\n const key = this.getCacheKey(fetchFn, params);\n this.cache.delete(key);\n }\n\n /**\n * Clear all cache\n */\n clear(): void {\n this.cache.clear();\n this.pendingRequests.clear();\n }\n}\n\n// Singleton instance\nexport const requestCache = new RequestCache();\n","/**\n * useReportData Hook\n * Fetches and manages report data with error handling\n * Implements caching to prevent duplicate requests\n */\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { requestCache } from \"../../utils/request-cache\";\n\nexport interface UseReportDataOptions {\n enabled?: boolean;\n ttl?: number; // Cache time-to-live in milliseconds (default: 5 minutes)\n}\n\nexport interface UseReportDataReturn<T> {\n data: T | null;\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n}\n\n/**\n * Generic hook for fetching report data\n * Implements caching and deduplication to prevent infinite requests\n * @param fetchFn - Async function to fetch report data\n * @param dependencies - Dependencies that trigger refetch when changed\n * @param options - Hook options (enabled flag, cache TTL)\n */\nexport function useReportData<T>(\n fetchFn: () => Promise<T>,\n dependencies: React.DependencyList = [],\n options: UseReportDataOptions = {},\n): UseReportDataReturn<T> {\n const [data, setData] = useState<T | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const isMountedRef = useRef(true);\n\n const { enabled = true, ttl = 5 * 60 * 1000 } = options;\n\n // Create a stable string representation of dependencies for comparison\n const depsString = JSON.stringify(dependencies);\n\n useEffect(() => {\n isMountedRef.current = true;\n\n if (!enabled) {\n setLoading(false);\n return;\n }\n\n let cancelled = false;\n\n const fetchData = async () => {\n try {\n setLoading(true);\n setError(null);\n\n // Use cache to avoid duplicate requests\n const result = await requestCache.get(fetchFn, depsString, ttl);\n\n if (!cancelled && isMountedRef.current) {\n setData(result);\n }\n } catch (err) {\n if (!cancelled && isMountedRef.current) {\n const error =\n err instanceof Error ? err : new Error(\"Unknown error occurred\");\n setError(error);\n setData(null);\n }\n } finally {\n if (!cancelled && isMountedRef.current) {\n setLoading(false);\n }\n }\n };\n\n fetchData();\n\n return () => {\n cancelled = true;\n };\n }, [depsString, enabled, ttl, fetchFn]);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const refetch = async () => {\n // Invalidate cache and refetch\n requestCache.invalidate(fetchFn, depsString);\n\n try {\n setLoading(true);\n setError(null);\n const result = await requestCache.get(fetchFn, depsString, ttl);\n if (isMountedRef.current) {\n setData(result);\n }\n } catch (err) {\n if (isMountedRef.current) {\n const error =\n err instanceof Error ? err : new Error(\"Unknown error occurred\");\n setError(error);\n setData(null);\n }\n } finally {\n if (isMountedRef.current) {\n setLoading(false);\n }\n }\n };\n\n return { data, loading, error, refetch };\n}\n","/**\n * Date Range Service\n * Handles date range calculations and options\n */\n\nexport type DateRangeOption =\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n\nexport interface DateRange {\n label: string;\n startDate: string; // YYYY-MM-DD\n endDate: string; // YYYY-MM-DD\n}\n\nexport class DateRangeService {\n /**\n * Calculate date range based on predefined options\n */\n static getDateRange(option: DateRangeOption): DateRange {\n const today = new Date();\n const endDate = today.toISOString().split(\"T\")[0]; // YYYY-MM-DD format\n let startDate: Date;\n\n switch (option) {\n case \"past-week\":\n startDate = new Date(today);\n startDate.setDate(today.getDate() - 7);\n break;\n case \"past-month\":\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 1);\n break;\n case \"past-3-months\":\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 3);\n break;\n case \"past-6-months\":\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 6);\n break;\n case \"past-year\":\n startDate = new Date(today);\n startDate.setFullYear(today.getFullYear() - 1);\n break;\n default:\n startDate = new Date(today);\n startDate.setMonth(today.getMonth() - 1);\n }\n\n return {\n label: this.getLabel(option),\n startDate: startDate.toISOString().split(\"T\")[0],\n endDate,\n };\n }\n\n /**\n * Get human-readable label for date range option\n */\n private static getLabel(option: DateRangeOption): string {\n const labels: Record<DateRangeOption, string> = {\n \"past-week\": \"Past Week\",\n \"past-month\": \"Past Month\",\n \"past-3-months\": \"Past 3 Months\",\n \"past-6-months\": \"Past 6 Months\",\n \"past-year\": \"Past Year\",\n };\n return labels[option];\n }\n\n /**\n * Get all available date range options\n */\n static getAllOptions(): Array<{ value: DateRangeOption; label: string }> {\n return [\n { value: \"past-week\", label: \"Past Week\" },\n { value: \"past-month\", label: \"Past Month\" },\n { value: \"past-3-months\", label: \"Past 3 Months\" },\n { value: \"past-6-months\", label: \"Past 6 Months\" },\n { value: \"past-year\", label: \"Past Year\" },\n ];\n }\n\n /**\n * Format date for display (e.g., \"Jan 6 - Feb 5\")\n */\n static formatDateRangeForDisplay(startDate: string, endDate: string): string {\n try {\n const start = new Date(startDate);\n const end = new Date(endDate);\n\n const formatPart = (date: Date): string => {\n const month = date.toLocaleString(\"default\", { month: \"short\" });\n const day = date.getDate();\n return `${month} ${day}`;\n };\n\n return `${formatPart(start)} - ${formatPart(end)}`;\n } catch {\n return `${startDate} - ${endDate}`;\n }\n }\n}\n","/**\n * useDateRange Hook\n * Manages date range state with predefined options\n */\n\nimport { useState } from \"react\";\nimport { DateRangeService, DateRangeOption } from \"../../utils/date-range\";\n\nexport interface UseDateRangeReturn {\n selectedOption: DateRangeOption;\n setSelectedOption: (option: DateRangeOption) => void;\n startDate: string;\n endDate: string;\n label: string;\n}\n\n/**\n * Hook to manage date range selection for reports\n * @param defaultOption - Default date range option (default: 'past-month')\n */\nexport function useDateRange(\n defaultOption: DateRangeOption = \"past-month\",\n): UseDateRangeReturn {\n const [selectedOption, setSelectedOption] =\n useState<DateRangeOption>(defaultOption);\n const dateRange = DateRangeService.getDateRange(selectedOption);\n\n return {\n selectedOption,\n setSelectedOption,\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n label: dateRange.label,\n };\n}\n","/**\n * DateRangeSelector Component\n * Select dropdown for date range selection\n */\n\nimport React from \"react\";\nimport { DateRangeOption, DateRangeService } from \"../../utils/date-range\";\nimport { Theme } from \"../../types\";\n\nexport interface DateRangeSelectorProps {\n selectedOption: DateRangeOption;\n onSelect: (option: DateRangeOption) => void;\n theme?: Theme;\n}\n\nexport const DateRangeSelector: React.FC<DateRangeSelectorProps> = ({\n selectedOption,\n onSelect,\n theme,\n}) => {\n const options = DateRangeService.getAllOptions();\n\n return (\n <select\n value={selectedOption}\n onChange={(e) => onSelect(e.target.value as DateRangeOption)}\n style={{\n padding: `${theme?.spacing.xs} ${theme?.spacing.sm}`,\n borderRadius: theme?.borderRadius,\n border: `1px solid ${theme?.colors.border}`,\n background: theme?.colors.surface,\n color: theme?.colors.text,\n fontSize: theme?.fontSizes.sm,\n fontWeight: 500,\n outline: \"none\",\n minWidth: 120,\n marginLeft: theme?.spacing.sm,\n cursor: \"pointer\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLSelectElement).style.borderColor =\n theme?.colors.primary || \"#1976d2\";\n (e.currentTarget as HTMLSelectElement).style.boxShadow = `0 0 0 2px ${\n (theme?.colors.primary || \"#1976d2\") + \"20\"\n }`;\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLSelectElement).style.borderColor =\n theme?.colors.border || \"#d0d0d0\";\n (e.currentTarget as HTMLSelectElement).style.boxShadow = \"none\";\n }}\n >\n {options.map((option: { value: DateRangeOption; label: string }) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n","/**\n * LoadingState Component\n * Skeleton loader for reports\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface LoadingStateProps {\n theme?: Theme;\n variant?: \"minimal\" | \"cards\" | \"table\";\n}\n\nconst Skeleton: React.FC<{ theme?: Theme }> = ({ theme }) => (\n <div\n style={{\n backgroundColor: theme?.colors.border || \"#e0e0e0\",\n borderRadius: theme?.borderRadius || \"8px\",\n height: \"16px\",\n marginBottom: theme?.spacing.xs || \"4px\",\n animation: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n }}\n />\n);\n\nexport const LoadingState: React.FC<LoadingStateProps> = ({\n theme,\n variant = \"minimal\",\n}) => {\n if (variant === \"minimal\") {\n return (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n <div\n style={{\n display: \"inline-block\",\n width: \"40px\",\n height: \"40px\",\n border: `3px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderTop: `3px solid ${theme?.colors.primary || \"#1976d2\"}`,\n borderRadius: \"50%\",\n animation: \"spin 0.6s linear infinite\",\n }}\n />\n <p style={{ marginTop: theme?.spacing.sm || \"8px\" }}>\n Loading report...\n </p>\n </div>\n );\n }\n\n if (variant === \"cards\") {\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n padding: theme?.spacing.md || \"16px\",\n }}\n >\n {[1, 2, 3, 4].map((i) => (\n <div\n key={i}\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <Skeleton theme={theme} />\n <Skeleton theme={theme} />\n <Skeleton theme={theme} />\n </div>\n ))}\n </div>\n );\n }\n\n return (\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n {[1, 2, 3, 4, 5].map((i) => (\n <div key={i} style={{ marginBottom: theme?.spacing.md || \"16px\" }}>\n <Skeleton theme={theme} />\n <Skeleton theme={theme} />\n </div>\n ))}\n </div>\n );\n};\n","/**\n * ReportLayout Component\n * Wrapper for report pages with header and date range selector\n */\n\nimport React from \"react\";\nimport { DateRangeSelector } from \"./DateRangeSelector\";\nimport { DateRangeOption } from \"../../utils/date-range\";\nimport { LoadingState } from \"./LoadingState\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { Theme } from \"../../types\";\n\nexport interface ReportLayoutProps {\n title: string;\n description?: string;\n selectedDateRange: DateRangeOption;\n onDateRangeChange: (option: DateRangeOption) => void;\n loading?: boolean;\n error?: Error | null;\n children: React.ReactNode;\n theme?: Theme;\n}\n\nexport const ReportLayout: React.FC<ReportLayoutProps> = ({\n title,\n description,\n selectedDateRange,\n onDateRangeChange,\n loading,\n error,\n children,\n theme: themeProp,\n}) => {\n const { theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.md || \"12px\",\n padding: theme?.spacing.md || \"12px\",\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: theme?.spacing.sm || \"12px\",\n flexWrap: \"wrap\",\n }}\n >\n <div style={{ flex: 1, minWidth: \"200px\" }}>\n <h1\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.lg || \"20px\",\n fontWeight: \"700\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h1>\n {description && (\n <p\n style={{\n margin: `${theme?.spacing.xs || \"4px\"} 0 0 0`,\n fontSize: theme?.fontSizes.sm || \"12px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n {description}\n </p>\n )}\n </div>\n <DateRangeSelector\n selectedOption={selectedDateRange}\n onSelect={onDateRangeChange}\n theme={theme}\n />\n </div>\n\n {/* Content */}\n {loading ? (\n <LoadingState theme={theme} />\n ) : error ? (\n <div\n style={{\n padding: theme?.spacing.sm || \"12px\",\n borderRadius: theme?.borderRadius || \"6px\",\n backgroundColor: theme?.colors.error\n ? `${theme.colors.error}15`\n : \"#FEE2E2\",\n border: `1px solid ${theme?.colors.error || \"#f44336\"}`,\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"12px\",\n color: theme?.colors.error || \"#f44336\",\n fontWeight: \"500\",\n }}\n >\n Error loading report: {error.message}\n </p>\n </div>\n ) : (\n children\n )}\n </div>\n );\n};\n","/**\n * MetricCard Component\n * Displays a single KPI metric with optional trend indicator\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface MetricCardProps {\n label: string;\n value: string | number;\n unit?: string;\n trend?: \"up\" | \"down\" | \"neutral\";\n trendValue?: number;\n icon?: React.ReactNode;\n onClick?: () => void;\n theme?: Theme;\n}\n\nexport const MetricCard: React.FC<MetricCardProps> = ({\n label,\n value,\n unit,\n trend,\n trendValue,\n icon,\n onClick,\n theme,\n}) => {\n const getTrendColor = (): string => {\n if (!theme) return \"inherit\";\n if (trend === \"up\") return theme.colors.success;\n if (trend === \"down\") return theme.colors.error;\n return theme.colors.textSecondary;\n };\n\n const getTrendIcon = (): string => {\n if (trend === \"up\") return \"↑\";\n if (trend === \"down\") return \"↓\";\n return \"→\";\n };\n\n const containerStyles: React.CSSProperties = {\n padding: theme?.spacing.sm || \"10px\",\n borderRadius: theme?.borderRadius || \"6px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.2s ease\",\n };\n\n return (\n <div\n style={containerStyles}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (onClick) {\n (e.currentTarget as HTMLDivElement).style.boxShadow =\n theme?.boxShadow || \"0 2px 8px rgba(0, 0, 0, 0.1)\";\n }\n }}\n onMouseLeave={(e) => {\n if (onClick) {\n (e.currentTarget as HTMLDivElement).style.boxShadow = \"none\";\n }\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ flex: 1 }}>\n <p\n style={{\n fontSize: theme?.fontSizes.xs || \"11px\",\n color: theme?.colors.textSecondary || \"#666\",\n margin: \"0 0 6px 0\",\n }}\n >\n {label}\n </p>\n <div\n style={{\n display: \"flex\",\n alignItems: \"baseline\",\n gap: theme?.spacing.xs || \"4px\",\n }}\n >\n <p\n style={{\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: theme?.colors.text || \"#000\",\n margin: 0,\n }}\n >\n {value}\n </p>\n {unit && (\n <p\n style={{\n fontSize: theme?.fontSizes.xs || \"11px\",\n color: theme?.colors.textSecondary || \"#666\",\n margin: 0,\n }}\n >\n {unit}\n </p>\n )}\n </div>\n {trend && trendValue !== undefined && (\n <div\n style={{\n fontSize: \"10px\",\n color: getTrendColor(),\n marginTop: \"4px\",\n }}\n >\n {getTrendIcon()} {trendValue}%\n </div>\n )}\n </div>\n {icon && (\n <div\n style={{\n color: theme?.colors.textSecondary || \"#999\",\n fontSize: \"18px\",\n }}\n >\n {icon}\n </div>\n )}\n </div>\n </div>\n );\n};\n","/**\n * TrendChart Component\n * Renders a simple line/area chart for trend data\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface TrendDataPoint {\n label: string;\n value: number;\n}\n\nexport interface TrendChartProps {\n data: TrendDataPoint[];\n title?: string;\n height?: number;\n theme?: Theme;\n showArea?: boolean;\n}\n\nexport const TrendChart: React.FC<TrendChartProps> = ({\n data,\n title,\n height = 200,\n theme,\n showArea = true,\n}) => {\n if (!data || data.length === 0) {\n return (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n No data available\n </div>\n );\n }\n\n const padding = 40;\n const width = 600;\n const innerHeight = height - padding * 2;\n const innerWidth = width - padding * 2;\n\n const maxValue = Math.max(...data.map((d) => d.value));\n const minValue = Math.min(...data.map((d) => d.value));\n const range = maxValue - minValue || 1;\n\n const points = data.map((d, i) => {\n const x = padding + (i / (data.length - 1 || 1)) * innerWidth;\n const y =\n padding + innerHeight - ((d.value - minValue) / range) * innerHeight;\n return { x, y, ...d };\n });\n\n const pathD = points\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`)\n .join(\" \");\n const areaPathD = `${pathD} L ${points[points.length - 1].x} ${padding + innerHeight} L ${points[0].x} ${padding + innerHeight} Z`;\n\n const lineColor = theme?.colors.primary || \"#1976d2\";\n const areaColor = theme?.colors.primary || \"#1976d2\";\n\n return (\n <div>\n {title && (\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h3>\n )}\n <svg\n width=\"100%\"\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"xMidYMid meet\"\n style={{ overflow: \"visible\" }}\n >\n {/* Grid lines */}\n {[0, 0.25, 0.5, 0.75, 1].map((factor) => {\n const y = padding + innerHeight - factor * innerHeight;\n return (\n <line\n key={`grid-${factor}`}\n x1={padding}\n y1={y}\n x2={width - padding}\n y2={y}\n stroke={theme?.colors.border || \"#e0e0e0\"}\n strokeWidth=\"1\"\n strokeDasharray=\"4\"\n opacity=\"0.5\"\n />\n );\n })}\n\n {/* Area */}\n {showArea && <path d={areaPathD} fill={areaColor} fillOpacity=\"0.1\" />}\n\n {/* Line */}\n <path\n d={pathD}\n fill=\"none\"\n stroke={lineColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n\n {/* Points */}\n {points.map((p, i) => (\n <circle\n key={`point-${i}`}\n cx={p.x}\n cy={p.y}\n r=\"3\"\n fill={lineColor}\n opacity=\"0.8\"\n />\n ))}\n\n {/* X-axis labels */}\n {points.map((p, i) => {\n if (data.length <= 6 || i % Math.ceil(data.length / 6) === 0) {\n return (\n <text\n key={`label-${i}`}\n x={p.x}\n y={height - padding + 20}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill={theme?.colors.textSecondary || \"#666\"}\n >\n {p.label}\n </text>\n );\n }\n })}\n </svg>\n </div>\n );\n};\n","/**\n * Executive Dashboard Report\n * High-level directive execution metrics, trends, and cost impact\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { MetricCard } from \"./MetricCard\";\nimport { TrendChart } from \"./TrendChart\";\nimport { ExecutiveDashboardReport } from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface ExecutiveDashboardProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const ExecutiveDashboard: React.FC<ExecutiveDashboardProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<ExecutiveDashboardReport>(\n () =>\n api.getExecutiveDashboard({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const trendData =\n data?.monthlyTrends?.map((m) => ({\n label: m.month,\n value: m.successPercentage,\n })) || [];\n\n return (\n <ReportLayout\n title=\"Executive Dashboard\"\n description=\"High-level directive execution metrics and trends\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\",\n gap: theme?.spacing.sm || \"10px\",\n }}\n >\n <MetricCard\n label=\"Total Directives\"\n value={data?.totalDirectives ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Success Rate\"\n value={data?.successRate?.toFixed(2) ?? 0}\n unit=\"%\"\n trend={(data?.successRate ?? 0 > 80) ? \"up\" : \"neutral\"}\n theme={theme}\n />\n <MetricCard\n label=\"Auto-Executed\"\n value={data?.autoExecutedDirectives ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Cost Impact\"\n value={data?.totalCostImpact?.toFixed(2) ?? 0}\n unit=\"$\"\n theme={theme}\n />\n </div>\n\n {trendData.length > 0 && (\n <div\n style={{\n padding: theme?.spacing.sm || \"10px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"6px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <TrendChart\n data={trendData}\n title=\"Success Rate Trend\"\n theme={theme}\n showArea={true}\n />\n </div>\n )}\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(220px, 1fr))\",\n gap: theme?.spacing.sm || \"10px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.sm || \"10px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"6px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.sm || \"8px\"} 0`,\n fontSize: theme?.fontSizes.sm || \"13px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Execution Summary\n </h3>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.xs || \"4px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"3px\"} 0`,\n fontSize: theme?.fontSizes.xs || \"11px\",\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Successful:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n {data?.successfulExecutions ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"3px\"} 0`,\n fontSize: theme?.fontSizes.xs || \"11px\",\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Failed:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n {data?.failedExecutions ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"3px\"} 0`,\n fontSize: theme?.fontSizes.xs || \"11px\",\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Avg Cost:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n ${data?.averageCostPerDirective?.toFixed(2) ?? 0}\n </span>\n </div>\n </div>\n </div>\n </div>\n </ReportLayout>\n );\n};\n","/**\n * ProgressBar Component\n * Displays percentage with visual bar\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface ProgressBarProps {\n percentage: number; // 0-100\n label?: string;\n showPercentage?: boolean;\n height?: \"small\" | \"medium\" | \"large\";\n theme?: Theme;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n percentage,\n label,\n showPercentage = true,\n height = \"medium\",\n theme,\n}) => {\n const normalizedPercentage = Math.min(Math.max(percentage, 0), 100);\n\n const getBarColor = (): string => {\n if (!theme) {\n if (normalizedPercentage >= 80) return \"#10B981\";\n if (normalizedPercentage >= 60) return \"#F59E0B\";\n return \"#EF4444\";\n }\n\n if (normalizedPercentage >= 80) return theme.colors.success;\n if (normalizedPercentage >= 60) return \"#F59E0B\"; // warning\n return theme.colors.error;\n };\n\n const heightConfig = {\n small: \"4px\",\n medium: \"8px\",\n large: \"12px\",\n };\n\n return (\n <div>\n {(label || showPercentage) && (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n {label && (\n <span\n style={{\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.text || \"#000\",\n fontWeight: \"500\",\n }}\n >\n {label}\n </span>\n )}\n {showPercentage && (\n <span\n style={{\n fontSize: theme?.fontSizes.xs || \"12px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n {normalizedPercentage.toFixed(1)}%\n </span>\n )}\n </div>\n )}\n <div\n style={{\n width: \"100%\",\n height: heightConfig[height],\n backgroundColor: theme?.colors.border || \"#e0e0e0\",\n borderRadius: \"4px\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n height: \"100%\",\n width: `${normalizedPercentage}%`,\n backgroundColor: getBarColor(),\n transition: \"width 0.3s ease\",\n }}\n />\n </div>\n </div>\n );\n};\n","/**\n * DataTable Component\n * Generic sortable/paginated table for report data\n */\n\nimport React, { useState, useMemo } from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface TableColumn<T> {\n key: keyof T;\n label: string;\n sortable?: boolean;\n render?: (value: any, row: T) => React.ReactNode;\n width?: string;\n}\n\nexport interface DataTableProps<T extends { id?: string | number }> {\n columns: TableColumn<T>[];\n data: T[];\n title?: string;\n pageSize?: number;\n theme?: Theme;\n}\n\nexport const DataTable = React.forwardRef<HTMLDivElement, DataTableProps<any>>(\n ({ columns, data, title, pageSize = 10, theme }, ref) => {\n const [sortKey, setSortKey] = useState<string | null>(null);\n const [sortOrder, setSortOrder] = useState<\"asc\" | \"desc\">(\"asc\");\n const [currentPage, setCurrentPage] = useState(0);\n\n const sortedData = useMemo(() => {\n if (!sortKey) return data;\n\n const sorted = [...data].sort((a, b) => {\n const aVal = a[sortKey];\n const bVal = b[sortKey];\n\n if (aVal < bVal) return sortOrder === \"asc\" ? -1 : 1;\n if (aVal > bVal) return sortOrder === \"asc\" ? 1 : -1;\n return 0;\n });\n\n return sorted;\n }, [data, sortKey, sortOrder]);\n\n const paginatedData = useMemo(() => {\n const start = currentPage * pageSize;\n return sortedData.slice(start, start + pageSize);\n }, [sortedData, currentPage, pageSize]);\n\n const totalPages = Math.ceil(sortedData.length / pageSize);\n\n const handleSort = (key: string) => {\n if (sortKey === key) {\n setSortOrder(sortOrder === \"asc\" ? \"desc\" : \"asc\");\n } else {\n setSortKey(key);\n setSortOrder(\"asc\");\n }\n setCurrentPage(0);\n };\n\n return (\n <div ref={ref}>\n {title && (\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h3>\n )}\n\n {data.length === 0 ? (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n }}\n >\n No data available\n </div>\n ) : (\n <>\n <div\n style={{\n overflowX: \"auto\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n }}\n >\n <table\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n fontSize: theme?.fontSizes.sm || \"14px\",\n }}\n >\n <thead>\n <tr\n style={{\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n borderBottom: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n }}\n >\n {columns.map((col) => (\n <th\n key={String(col.key)}\n onClick={() =>\n col.sortable && handleSort(String(col.key))\n }\n style={{\n padding: theme?.spacing.sm || \"8px\",\n textAlign: \"left\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n cursor: col.sortable ? \"pointer\" : \"default\",\n userSelect: \"none\",\n width: col.width,\n whiteSpace: \"nowrap\",\n }}\n onMouseEnter={(e) => {\n if (col.sortable) {\n (\n e.currentTarget as HTMLTableHeaderCellElement\n ).style.backgroundColor =\n theme?.colors.border || \"#e0e0e0\";\n }\n }}\n onMouseLeave={(e) => {\n (\n e.currentTarget as HTMLTableHeaderCellElement\n ).style.backgroundColor =\n theme?.colors.surface || \"#f5f5f5\";\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"4px\",\n }}\n >\n {col.label}\n {col.sortable && sortKey === String(col.key) && (\n <span>{sortOrder === \"asc\" ? \"↑\" : \"↓\"}</span>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {paginatedData.map((row, idx) => (\n <tr\n key={row.id || idx}\n style={{\n borderBottom: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor:\n idx % 2 === 0\n ? \"transparent\"\n : theme?.colors.surface || \"#f5f5f5\",\n }}\n onMouseEnter={(e) => {\n (\n e.currentTarget as HTMLTableRowElement\n ).style.backgroundColor =\n theme?.colors.border || \"#e0e0e0\";\n }}\n onMouseLeave={(e) => {\n (\n e.currentTarget as HTMLTableRowElement\n ).style.backgroundColor =\n idx % 2 === 0\n ? \"transparent\"\n : theme?.colors.surface || \"#f5f5f5\";\n }}\n >\n {columns.map((col) => (\n <td\n key={String(col.key)}\n style={{\n padding: theme?.spacing.sm || \"8px\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {col.render\n ? col.render(row[col.key], row)\n : String(row[col.key])}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {totalPages > 1 && (\n <div\n style={{\n marginTop: theme?.spacing.md || \"16px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <span\n style={{\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n Page {currentPage + 1} of {totalPages}\n </span>\n <div\n style={{ display: \"flex\", gap: theme?.spacing.xs || \"4px\" }}\n >\n <button\n onClick={() => setCurrentPage(0)}\n disabled={currentPage === 0}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor: currentPage === 0 ? \"not-allowed\" : \"pointer\",\n opacity: currentPage === 0 ? 0.5 : 1,\n }}\n >\n First\n </button>\n <button\n onClick={() => setCurrentPage(Math.max(0, currentPage - 1))}\n disabled={currentPage === 0}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor: currentPage === 0 ? \"not-allowed\" : \"pointer\",\n opacity: currentPage === 0 ? 0.5 : 1,\n }}\n >\n Previous\n </button>\n <button\n onClick={() =>\n setCurrentPage(Math.min(totalPages - 1, currentPage + 1))\n }\n disabled={currentPage === totalPages - 1}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor:\n currentPage === totalPages - 1\n ? \"not-allowed\"\n : \"pointer\",\n opacity: currentPage === totalPages - 1 ? 0.5 : 1,\n }}\n >\n Next\n </button>\n <button\n onClick={() => setCurrentPage(totalPages - 1)}\n disabled={currentPage === totalPages - 1}\n style={{\n padding: `${theme?.spacing.xs || \"4px\"} ${theme?.spacing.sm || \"8px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n borderRadius: \"4px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n cursor:\n currentPage === totalPages - 1\n ? \"not-allowed\"\n : \"pointer\",\n opacity: currentPage === totalPages - 1 ? 0.5 : 1,\n }}\n >\n Last\n </button>\n </div>\n </div>\n )}\n </>\n )}\n </div>\n );\n },\n);\n\nDataTable.displayName = \"DataTable\";\n","/**\n * Supply Chain Risk Report\n * Supply chain risks including inventory, supplier, and cost analysis\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { MetricCard } from \"./MetricCard\";\nimport { ProgressBar } from \"./ProgressBar\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport { SupplyChainRiskReport, DataQualityIssue } from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface SupplyChainRiskProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const SupplyChainRisk: React.FC<SupplyChainRiskProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<SupplyChainRiskReport>(\n () =>\n api.getSupplyChainRisk({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const riskPercentage = data?.overallRiskScore ?? 0;\n const totalRisks =\n (data?.highRiskCount ?? 0) +\n (data?.mediumRiskCount ?? 0) +\n (data?.lowRiskCount ?? 0);\n\n const tableColumns: TableColumn<DataQualityIssue>[] = [\n {\n key: \"issueType\",\n label: \"Issue Type\",\n sortable: true,\n },\n {\n key: \"description\",\n label: \"Description\",\n sortable: true,\n },\n {\n key: \"affectedRecords\",\n label: \"Affected Records\",\n sortable: true,\n },\n {\n key: \"severity\",\n label: \"Severity\",\n sortable: true,\n render: (value: any) => {\n const color =\n value === \"high\"\n ? theme?.colors.error\n : value === \"medium\"\n ? \"#F59E0B\"\n : theme?.colors.success;\n return (\n <span style={{ color, fontWeight: \"600\" }}>\n {value.toUpperCase()}\n </span>\n );\n },\n },\n ];\n\n return (\n <ReportLayout\n title=\"Supply Chain Risk\"\n description=\"Inventory, supplier, and cost risk analysis\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.lg || \"18px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Overall Risk Assessment\n </h3>\n <ProgressBar\n percentage={riskPercentage}\n label=\"Risk Score\"\n theme={theme}\n height=\"large\"\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <MetricCard\n label=\"High Risk Items\"\n value={data?.highRiskCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Medium Risk Items\"\n value={data?.mediumRiskCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Low Risk Items\"\n value={data?.lowRiskCount ?? 0}\n theme={theme}\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(250px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Inventory Risk\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Low Stock Items:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.inventoryRisk?.lowStockItems ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Overstocked Items:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.inventoryRisk?.overstockedItems ?? 0}\n </span>\n </div>\n <ProgressBar\n percentage={data?.inventoryRisk?.averageStockHealth ?? 0}\n label=\"Stock Health\"\n theme={theme}\n />\n </div>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Supplier Risk\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Unreliable Suppliers:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.supplierRisk?.unreliableSuppliers ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n High Defect Rate:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.supplierRisk?.highDefectRateSuppliers ?? 0}\n </span>\n </div>\n <ProgressBar\n percentage={data?.supplierRisk?.averageSupplierScore ?? 0}\n label=\"Supplier Score\"\n theme={theme}\n />\n </div>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Cost Risk\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Cost Variance:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n ${data?.costRisk?.unexpectedCostVariance?.toFixed(2) ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Potential Savings:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n ${data?.costRisk?.potentialSavings?.toFixed(2) ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Volatility Index:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.costRisk?.costVolatilityIndex?.toFixed(2) ?? 0}%\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {data?.dataQualityIssues && data.dataQualityIssues.length > 0 && (\n <div>\n <DataTable\n title=\"Data Quality Issues\"\n columns={tableColumns}\n data={data.dataQualityIssues.map((issue, idx) => ({\n id: idx,\n ...issue,\n }))}\n pageSize={5}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * StatusBadge Component\n * Displays status with color-coded background\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport type StatusType =\n | \"ok\"\n | \"warning\"\n | \"critical\"\n | \"proposed\"\n | \"executed\"\n | \"declined\"\n | \"failed\"\n | \"auto-executed\";\n\nexport interface StatusBadgeProps {\n status: StatusType;\n label?: string;\n theme?: Theme;\n}\n\nconst getStatusConfig = (\n status: StatusType,\n theme?: Theme,\n): { bg: string; text: string; label: string } => {\n const baseConfig: Record<StatusType, { label: string }> = {\n ok: { label: \"OK\" },\n warning: { label: \"Warning\" },\n critical: { label: \"Critical\" },\n proposed: { label: \"Proposed\" },\n executed: { label: \"Executed\" },\n declined: { label: \"Declined\" },\n failed: { label: \"Failed\" },\n \"auto-executed\": { label: \"Auto Executed\" },\n };\n\n const config = baseConfig[status];\n\n if (theme) {\n const statusColors: Record<StatusType, { bg: string; text: string }> = {\n ok: { bg: \"rgba(16, 185, 129, 0.15)\", text: theme.colors.success },\n warning: { bg: \"rgba(245, 158, 11, 0.15)\", text: \"#F59E0B\" },\n critical: { bg: \"rgba(239, 68, 68, 0.15)\", text: theme.colors.error },\n proposed: { bg: \"rgba(59, 130, 246, 0.15)\", text: theme.colors.primary },\n executed: { bg: \"rgba(16, 185, 129, 0.15)\", text: theme.colors.success },\n declined: {\n bg: \"rgba(156, 163, 175, 0.15)\",\n text: theme.colors.textSecondary,\n },\n failed: { bg: \"rgba(239, 68, 68, 0.15)\", text: theme.colors.error },\n \"auto-executed\": {\n bg: \"rgba(16, 185, 129, 0.15)\",\n text: theme.colors.success,\n },\n };\n\n return {\n bg: statusColors[status].bg,\n text: statusColors[status].text,\n label: config.label,\n };\n }\n\n const defaultColors: Record<StatusType, { bg: string; text: string }> = {\n ok: { bg: \"#D1FAE5\", text: \"#059669\" },\n warning: { bg: \"#FEF3C7\", text: \"#D97706\" },\n critical: { bg: \"#FEE2E2\", text: \"#DC2626\" },\n proposed: { bg: \"#DBEAFE\", text: \"#1D4ED8\" },\n executed: { bg: \"#D1FAE5\", text: \"#059669\" },\n declined: { bg: \"#E5E7EB\", text: \"#4B5563\" },\n failed: { bg: \"#FEE2E2\", text: \"#DC2626\" },\n \"auto-executed\": { bg: \"#D1FAE5\", text: \"#059669\" },\n };\n\n return {\n bg: defaultColors[status].bg,\n text: defaultColors[status].text,\n label: config.label,\n };\n};\n\nexport const StatusBadge: React.FC<StatusBadgeProps> = ({\n status,\n label,\n theme,\n}) => {\n const config = getStatusConfig(status, theme);\n\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n paddingLeft: \"10px\",\n paddingRight: \"10px\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n borderRadius: \"4px\",\n fontSize: \"12px\",\n fontWeight: \"500\",\n backgroundColor: config.bg,\n color: config.text,\n whiteSpace: \"nowrap\",\n }}\n >\n {label || config.label}\n </span>\n );\n};\n","/**\n * Execution Audit Trail Report\n * Complete execution history and audit information\n */\n\nimport React, { useState } from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { MetricCard } from \"./MetricCard\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport {\n ExecutionAuditTrailReport,\n ExecutionRecord,\n} from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface ExecutionAuditTrailProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const ExecutionAuditTrail: React.FC<ExecutionAuditTrailProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n const [directiveTypeFilter, setDirectiveTypeFilter] = useState<string>(\"\");\n\n const { data, loading, error } = useReportData<ExecutionAuditTrailReport>(\n () =>\n api.getExecutionAuditTrail({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n directiveType: directiveTypeFilter || undefined,\n }),\n [dateRange.startDate, dateRange.endDate, directiveTypeFilter],\n );\n\n const tableColumns: TableColumn<ExecutionRecord>[] = [\n {\n key: \"directiveAction\",\n label: \"Directive Action\",\n sortable: true,\n width: \"200px\",\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: (value: any) => <StatusBadge status={value} theme={theme} />,\n },\n {\n key: \"executedAt\",\n label: \"Executed At\",\n sortable: true,\n render: (value: string) => {\n try {\n return new Date(value).toLocaleString();\n } catch {\n return value;\n }\n },\n },\n {\n key: \"executionDurationMinutes\",\n label: \"Duration (min)\",\n sortable: true,\n },\n {\n key: \"executedBy\",\n label: \"Executed By\",\n sortable: true,\n },\n {\n key: \"outcome\",\n label: \"Outcome\",\n sortable: false,\n },\n ];\n\n return (\n <ReportLayout\n title=\"Execution Audit Trail\"\n description=\"Directive execution history and audit information\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <MetricCard\n label=\"Total Directives\"\n value={data?.totalDirectives ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Executed\"\n value={data?.executedCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Declined\"\n value={data?.declinedCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Failed\"\n value={data?.failedCount ?? 0}\n theme={theme}\n />\n <MetricCard\n label=\"Auto-Executed\"\n value={data?.autoExecutedCount ?? 0}\n theme={theme}\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Execution Statistics\n </h4>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Avg. Duration:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.stats?.averageExecutionTimeMinutes?.toFixed(1) ?? 0} min\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Success Rate:\n </span>\n <span\n style={{\n fontWeight: \"600\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n {data?.stats?.successRate?.toFixed(2) ?? 0}%\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Fastest Execution:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.stats?.fastestExecutionMinutes ?? 0} min\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Slowest Execution:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.stats?.slowestExecutionMinutes ?? 0} min\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {data?.executionHistory && data.executionHistory.length > 0 && (\n <div>\n <DataTable\n title=\"Execution History\"\n columns={tableColumns}\n data={data.executionHistory.map((record, idx) => ({\n id: idx,\n ...record,\n }))}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * HealthGauge Component\n * Displays health/score on a 0-10 scale with color-coded circle\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface HealthGaugeProps {\n score: number; // 0-10\n label: string;\n size?: \"small\" | \"medium\" | \"large\";\n theme?: Theme;\n}\n\nexport const HealthGauge: React.FC<HealthGaugeProps> = ({\n score,\n label,\n size = \"medium\",\n theme,\n}) => {\n const getColor = (): string => {\n if (!theme) {\n if (score >= 8) return \"#10B981\";\n if (score >= 6) return \"#F59E0B\";\n return \"#EF4444\";\n }\n\n if (score >= 8) return theme.colors.success;\n if (score >= 6) return \"#F59E0B\"; // warning\n return theme.colors.error;\n };\n\n const getBackgroundColor = (): string => {\n if (!theme) {\n if (score >= 8) return \"rgba(16, 185, 129, 0.1)\";\n if (score >= 6) return \"rgba(245, 158, 11, 0.1)\";\n return \"rgba(239, 68, 68, 0.1)\";\n }\n\n if (score >= 8) return \"rgba(16, 185, 129, 0.15)\";\n if (score >= 6) return \"rgba(245, 158, 11, 0.15)\";\n return \"rgba(239, 68, 68, 0.15)\";\n };\n\n const sizeConfig = {\n small: { width: 64, height: 64, fontSize: \"14px\", labelSize: \"11px\" },\n medium: { width: 96, height: 96, fontSize: \"24px\", labelSize: \"12px\" },\n large: { width: 128, height: 128, fontSize: \"32px\", labelSize: \"13px\" },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n width: `${config.width}px`,\n height: `${config.height}px`,\n borderRadius: \"50%\",\n backgroundColor: getBackgroundColor(),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"none\",\n }}\n >\n <span\n style={{\n fontSize: config.fontSize,\n fontWeight: \"bold\",\n color: getColor(),\n }}\n >\n {score.toFixed(1)}\n </span>\n </div>\n <p\n style={{\n fontSize: config.labelSize,\n color: theme?.colors.textSecondary || \"#666\",\n textAlign: \"center\",\n margin: 0,\n maxWidth: `${config.width + 20}px`,\n }}\n >\n {label}\n </p>\n </div>\n );\n};\n","/**\n * Portfolio Health Report\n * Aggregated metric health across the entire portfolio\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { HealthGauge } from \"./HealthGauge\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport {\n PortfolioHealthReport,\n MetricHealthScore,\n CriticalMetric,\n} from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface PortfolioHealthProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const PortfolioHealth: React.FC<PortfolioHealthProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<PortfolioHealthReport>(\n () =>\n api.getPortfolioHealth({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const metricTableColumns: TableColumn<MetricHealthScore>[] = [\n {\n key: \"metricName\",\n label: \"Metric Name\",\n sortable: true,\n },\n {\n key: \"score\",\n label: \"Score (0-10)\",\n sortable: true,\n render: (value: number) => value.toFixed(2),\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: (value: string) => {\n const color =\n value === \"ok\"\n ? theme?.colors.success\n : value === \"warning\"\n ? \"#F59E0B\"\n : theme?.colors.error;\n return (\n <span style={{ color, fontWeight: \"600\" }}>\n {value.toUpperCase()}\n </span>\n );\n },\n },\n {\n key: \"currentValue\",\n label: \"Current Value\",\n sortable: true,\n render: (value: number) => value.toFixed(2),\n },\n {\n key: \"targetValue\",\n label: \"Target Value\",\n sortable: true,\n render: (value: number) => value.toFixed(2),\n },\n {\n key: \"variance\",\n label: \"Variance\",\n sortable: true,\n render: (value: number) => {\n const color = value > 0 ? theme?.colors.success : theme?.colors.error;\n return (\n <span style={{ color, fontWeight: \"600\" }}>{value.toFixed(2)}</span>\n );\n },\n },\n ];\n\n const criticalTableColumns: TableColumn<CriticalMetric>[] = [\n {\n key: \"metricName\",\n label: \"Metric Name\",\n sortable: true,\n },\n {\n key: \"description\",\n label: \"Description\",\n sortable: true,\n },\n {\n key: \"recommendedAction\",\n label: \"Recommended Action\",\n sortable: false,\n },\n ];\n\n return (\n <ReportLayout\n title=\"Portfolio Health\"\n description=\"Aggregated metric health and critical alerts\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n {/* Overall Health Score */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n padding: theme?.spacing.lg || \"24px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <HealthGauge\n score={data?.overallHealthScore ?? 0}\n label=\"Overall Portfolio Health\"\n size=\"large\"\n theme={theme}\n />\n </div>\n\n {/* Health Summary Cards */}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n Healthy Metrics\n </p>\n <p\n style={{\n margin: 0,\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: theme?.colors.success || \"#4caf50\",\n }}\n >\n {data?.healthyMetricsCount ?? 0}\n </p>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n Warning Metrics\n </p>\n <p\n style={{\n margin: 0,\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: \"#F59E0B\",\n }}\n >\n {data?.warningMetricsCount ?? 0}\n </p>\n </div>\n\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n marginBottom: theme?.spacing.xs || \"4px\",\n }}\n >\n Critical Metrics\n </p>\n <p\n style={{\n margin: 0,\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n {data?.criticalMetricsCount ?? 0}\n </p>\n </div>\n </div>\n\n {/* Metric Health Scores Table */}\n {data?.metricHealthScores && data.metricHealthScores.length > 0 && (\n <div>\n <DataTable\n title=\"Metric Health Scores\"\n columns={metricTableColumns}\n data={data.metricHealthScores.map((metric, idx) => ({\n id: idx,\n ...metric,\n }))}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n\n {/* Critical Metrics Table */}\n {data?.criticalMetrics && data.criticalMetrics.length > 0 && (\n <div>\n <DataTable\n title=\"Critical Metrics Requiring Attention\"\n columns={criticalTableColumns}\n data={data.criticalMetrics.map((metric, idx) => ({\n id: idx,\n ...metric,\n }))}\n pageSize={5}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * Data Quality & Automation Report\n * Data gaps, automation opportunities, and actionable recommendations\n */\n\nimport React from \"react\";\nimport { useReportData } from \"../../hooks/analytics/useReportData\";\nimport { useDateRange } from \"../../hooks/analytics/useDateRange\";\nimport { useReactBridgeContext } from \"../../provider/ReactBridgeProvider\";\nimport { ReportLayout } from \"./ReportLayout\";\nimport { ProgressBar } from \"./ProgressBar\";\nimport { DataTable, TableColumn } from \"./DataTable\";\nimport {\n DataQualityAutomationReport,\n DataGap,\n Recommendation,\n} from \"../../types/reports\";\nimport { Theme } from \"../../types\";\n\nexport interface DataQualityAutomationProps {\n theme?: Theme;\n defaultDateRange?:\n | \"past-week\"\n | \"past-month\"\n | \"past-3-months\"\n | \"past-6-months\"\n | \"past-year\";\n}\n\nexport const DataQualityAutomation: React.FC<DataQualityAutomationProps> = ({\n theme: themeProp,\n defaultDateRange = \"past-month\",\n}) => {\n const { api, theme: contextTheme } = useReactBridgeContext();\n const theme = themeProp || contextTheme;\n const dateRange = useDateRange(defaultDateRange);\n\n const { data, loading, error } = useReportData<DataQualityAutomationReport>(\n () =>\n api.getDataQualityAutomation({\n startDate: dateRange.startDate,\n endDate: dateRange.endDate,\n }),\n [dateRange.startDate, dateRange.endDate],\n );\n\n const dataGapColumns: TableColumn<DataGap>[] = [\n {\n key: \"fieldName\",\n label: \"Field Name\",\n sortable: true,\n },\n {\n key: \"missingRecords\",\n label: \"Missing Records\",\n sortable: true,\n },\n {\n key: \"missingPercentage\",\n label: \"Missing %\",\n sortable: true,\n render: (value: number) => `${value.toFixed(2)}%`,\n },\n {\n key: \"impact\",\n label: \"Impact\",\n sortable: false,\n },\n ];\n\n const recommendationColumns: TableColumn<Recommendation>[] = [\n {\n key: \"category\",\n label: \"Category\",\n sortable: true,\n },\n {\n key: \"recommendation\",\n label: \"Recommendation\",\n sortable: true,\n },\n {\n key: \"priority\",\n label: \"Priority\",\n sortable: true,\n render: (value: string) => {\n const color =\n value === \"High\"\n ? theme?.colors.error\n : value === \"Medium\"\n ? \"#F59E0B\"\n : theme?.colors.success;\n return <span style={{ color, fontWeight: \"600\" }}>{value}</span>;\n },\n },\n {\n key: \"expectedBenefit\",\n label: \"Expected Benefit\",\n sortable: false,\n },\n ];\n\n return (\n <ReportLayout\n title=\"Data Quality & Automation\"\n description=\"Data quality assessment and automation opportunities\"\n selectedDateRange={dateRange.selectedOption}\n onDateRangeChange={dateRange.setSelectedOption}\n loading={loading}\n error={error}\n theme={theme}\n >\n {/* Data Quality Scores */}\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.lg || \"18px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Data Quality Assessment\n </h3>\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <ProgressBar\n percentage={data?.overallDataQualityScore ?? 0}\n label=\"Overall Quality Score\"\n theme={theme}\n height=\"large\"\n />\n\n <ProgressBar\n percentage={data?.completenessScore ?? 0}\n label=\"Completeness\"\n theme={theme}\n />\n\n <ProgressBar\n percentage={data?.accuracyScore ?? 0}\n label=\"Accuracy\"\n theme={theme}\n />\n\n <ProgressBar\n percentage={data?.consistencyScore ?? 0}\n label=\"Consistency\"\n theme={theme}\n />\n </div>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(150px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n marginTop: theme?.spacing.lg || \"24px\",\n }}\n >\n <div\n style={{\n textAlign: \"center\",\n padding: theme?.spacing.sm || \"8px\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n Total Records Analyzed\n </p>\n <p\n style={{\n margin: `${theme?.spacing.xs || \"4px\"} 0 0 0`,\n fontSize: \"20px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {data?.totalRecordsAnalyzed ?? 0}\n </p>\n </div>\n\n <div\n style={{\n textAlign: \"center\",\n padding: theme?.spacing.sm || \"8px\",\n }}\n >\n <p\n style={{\n margin: 0,\n fontSize: theme?.fontSizes.sm || \"14px\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n Records with Issues\n </p>\n <p\n style={{\n margin: `${theme?.spacing.xs || \"4px\"} 0 0 0`,\n fontSize: \"20px\",\n fontWeight: \"600\",\n color: theme?.colors.error || \"#f44336\",\n }}\n >\n {data?.recordsWithIssues ?? 0}\n </p>\n </div>\n </div>\n </div>\n\n {/* Automation Opportunities */}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gap: theme?.spacing.md || \"16px\",\n }}\n >\n <div\n style={{\n padding: theme?.spacing.md || \"16px\",\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: theme?.borderRadius || \"8px\",\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n }}\n >\n <h4\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n Automation Readiness\n </h4>\n <div\n style={{\n marginBottom: theme?.spacing.md || \"16px\",\n }}\n >\n <ProgressBar\n percentage={\n data?.automationOpportunities?.automationReadinessScore ?? 0\n }\n label=\"Readiness Score\"\n theme={theme}\n height=\"large\"\n />\n </div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: theme?.spacing.sm || \"8px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Fully Automatable:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.automationOpportunities?.fullyAutomatable ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Partially Automatable:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.automationOpportunities?.partiallyAutomatable ?? 0}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: `${theme?.spacing.xs || \"4px\"} 0`,\n }}\n >\n <span style={{ color: theme?.colors.textSecondary || \"#666\" }}>\n Manual Only:\n </span>\n <span style={{ fontWeight: \"600\" }}>\n {data?.automationOpportunities?.manualOnly ?? 0}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Data Gaps Table */}\n {data?.identifiedDataGaps && data.identifiedDataGaps.length > 0 && (\n <div>\n <DataTable\n title=\"Identified Data Gaps\"\n columns={dataGapColumns}\n data={data.identifiedDataGaps.map((gap: DataGap, idx: number) => ({\n id: idx,\n ...gap,\n }))}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n\n {/* Recommendations Table */}\n {data?.recommendations && data.recommendations.length > 0 && (\n <div>\n <DataTable\n title=\"Recommendations\"\n columns={recommendationColumns}\n data={data.recommendations.map(\n (rec: Recommendation, idx: number) => ({ id: idx, ...rec }),\n )}\n pageSize={10}\n theme={theme}\n />\n </div>\n )}\n </ReportLayout>\n );\n};\n","/**\n * Reports Dashboard\n * Main container that displays all 5 reports with navigation\n */\n\nimport React, { useState } from \"react\";\nimport { ExecutiveDashboard } from \"./reports/ExecutiveDashboard\";\nimport { SupplyChainRisk } from \"./reports/SupplyChainRisk\";\nimport { ExecutionAuditTrail } from \"./reports/ExecutionAuditTrail\";\nimport { PortfolioHealth } from \"./reports/PortfolioHealth\";\nimport { DataQualityAutomation } from \"./reports/DataQualityAutomation\";\nimport { Theme } from \"../types\";\n\nexport type ReportType = \"executive\" | \"risk\" | \"audit\" | \"health\" | \"quality\";\n\nexport interface ReportsDashboardProps {\n theme?: Theme;\n initialReport?: ReportType;\n}\n\nconst REPORTS: Array<{\n id: ReportType;\n label: string;\n icon: string;\n description: string;\n}> = [\n {\n id: \"executive\",\n label: \"Executive Dashboard\",\n icon: \"📊\",\n description: \"High-level directive execution metrics\",\n },\n {\n id: \"risk\",\n label: \"Supply Chain Risk\",\n icon: \"⚠️\",\n description: \"Risk analysis and supply chain health\",\n },\n {\n id: \"audit\",\n label: \"Execution Audit\",\n icon: \"✓\",\n description: \"Directive execution history and audit trail\",\n },\n {\n id: \"health\",\n label: \"Portfolio Health\",\n icon: \"❤️\",\n description: \"Portfolio metric health and critical alerts\",\n },\n {\n id: \"quality\",\n label: \"Data Quality\",\n icon: \"📈\",\n description: \"Data quality and automation assessment\",\n },\n];\n\nexport const ReportsDashboard: React.FC<ReportsDashboardProps> = ({\n theme,\n initialReport = \"executive\",\n}) => {\n const [activeReport, setActiveReport] = useState<ReportType>(initialReport);\n\n const containerStyle: React.CSSProperties = {\n minHeight: \"100vh\",\n backgroundColor: theme?.colors.background || \"#fff\",\n color: theme?.colors.text || \"#000\",\n };\n\n const navContainerStyle: React.CSSProperties = {\n borderBottom: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n backgroundColor: theme?.colors.surface || \"#f5f5f5\",\n };\n\n const navWrapperStyle: React.CSSProperties = {\n maxWidth: \"1400px\",\n margin: \"0 auto\",\n padding: `${theme?.spacing.md || \"16px\"} ${theme?.spacing.lg || \"24px\"}`,\n display: \"flex\",\n gap: theme?.spacing.md || \"16px\",\n overflowX: \"auto\",\n scrollBehavior: \"smooth\",\n };\n\n const navButtonStyle = (isActive: boolean): React.CSSProperties => ({\n padding: `${theme?.spacing.sm || \"8px\"} ${theme?.spacing.md || \"16px\"}`,\n fontSize: theme?.fontSizes.sm || \"14px\",\n fontWeight: \"500\",\n borderRadius: theme?.borderRadius || \"8px\",\n border: \"none\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n backgroundColor: isActive\n ? theme?.colors.primary || \"#1976d2\"\n : theme?.colors.background || \"#fff\",\n color: isActive ? \"#fff\" : theme?.colors.text || \"#000\",\n whiteSpace: \"nowrap\",\n display: \"flex\",\n alignItems: \"center\",\n gap: theme?.spacing.xs || \"4px\",\n });\n\n const contentStyle: React.CSSProperties = {\n maxWidth: \"1400px\",\n margin: \"0 auto\",\n padding: theme?.spacing.lg || \"24px\",\n };\n\n return (\n <div style={containerStyle}>\n {/* Navigation Bar */}\n <div style={navContainerStyle}>\n <div style={navWrapperStyle}>\n {REPORTS.map((report) => (\n <button\n key={report.id}\n onClick={() => setActiveReport(report.id)}\n style={navButtonStyle(activeReport === report.id)}\n title={report.description}\n >\n <span>{report.icon}</span>\n <span>{report.label}</span>\n </button>\n ))}\n </div>\n </div>\n\n {/* Content Area */}\n <div style={contentStyle}>\n {activeReport === \"executive\" && <ExecutiveDashboard theme={theme} />}\n {activeReport === \"risk\" && <SupplyChainRisk theme={theme} />}\n {activeReport === \"audit\" && <ExecutionAuditTrail theme={theme} />}\n {activeReport === \"health\" && <PortfolioHealth theme={theme} />}\n {activeReport === \"quality\" && <DataQualityAutomation theme={theme} />}\n </div>\n </div>\n );\n};\n","/**\n * RiskMatrix Component\n * 2D visualization of risk items (probability vs impact)\n */\n\nimport React from \"react\";\nimport { Theme } from \"../../types\";\n\nexport interface RiskMatrixItem {\n id: string;\n name: string;\n probability: number; // 0-100\n impact: number; // 0-100\n severity: \"low\" | \"medium\" | \"high\";\n}\n\nexport interface RiskMatrixProps {\n items: RiskMatrixItem[];\n title?: string;\n height?: number;\n theme?: Theme;\n}\n\nexport const RiskMatrix: React.FC<RiskMatrixProps> = ({\n items,\n title,\n height = 300,\n theme,\n}) => {\n if (!items || items.length === 0) {\n return (\n <div\n style={{\n padding: theme?.spacing.lg || \"24px\",\n textAlign: \"center\",\n color: theme?.colors.textSecondary || \"#666\",\n }}\n >\n No risk data available\n </div>\n );\n }\n\n const padding = 50;\n const width = 500;\n const innerWidth = width - padding * 2;\n const innerHeight = height - padding * 2;\n\n const getRiskColor = (severity: \"low\" | \"medium\" | \"high\"): string => {\n if (severity === \"high\") return theme?.colors.error || \"#ef4444\";\n if (severity === \"medium\") return \"#F59E0B\";\n return theme?.colors.success || \"#10B981\";\n };\n\n return (\n <div>\n {title && (\n <h3\n style={{\n margin: `0 0 ${theme?.spacing.md || \"16px\"} 0`,\n fontSize: theme?.fontSizes.md || \"16px\",\n fontWeight: \"600\",\n color: theme?.colors.text || \"#000\",\n }}\n >\n {title}\n </h3>\n )}\n <svg\n width=\"100%\"\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"xMidYMid meet\"\n style={{\n border: `1px solid ${theme?.colors.border || \"#e0e0e0\"}`,\n borderRadius: \"8px\",\n }}\n >\n {/* Background quadrants */}\n {/* High Risk (top-right) */}\n <rect\n x={padding + innerWidth / 2}\n y={padding}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#ef4444\"\n opacity=\"0.05\"\n />\n {/* Medium Risk (middle) */}\n <rect\n x={padding}\n y={padding}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#F59E0B\"\n opacity=\"0.05\"\n />\n <rect\n x={padding + innerWidth / 2}\n y={padding + innerHeight / 2}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#F59E0B\"\n opacity=\"0.05\"\n />\n {/* Low Risk (bottom-left) */}\n <rect\n x={padding}\n y={padding + innerHeight / 2}\n width={innerWidth / 2}\n height={innerHeight / 2}\n fill=\"#10B981\"\n opacity=\"0.05\"\n />\n\n {/* Grid */}\n <line\n x1={padding}\n y1={padding + innerHeight / 2}\n x2={width - padding}\n y2={padding + innerHeight / 2}\n stroke={theme?.colors.border || \"#e0e0e0\"}\n strokeWidth=\"2\"\n />\n <line\n x1={padding + innerWidth / 2}\n y1={padding}\n x2={padding + innerWidth / 2}\n y2={height - padding}\n stroke={theme?.colors.border || \"#e0e0e0\"}\n strokeWidth=\"2\"\n />\n\n {/* Axis labels */}\n <text\n x={width / 2}\n y={height - 5}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill={theme?.colors.textSecondary || \"#666\"}\n fontWeight=\"500\"\n >\n Probability\n </text>\n <text\n x={15}\n y={height / 2}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill={theme?.colors.textSecondary || \"#666\"}\n fontWeight=\"500\"\n transform={`rotate(-90 15 ${height / 2})`}\n >\n Impact\n </text>\n\n {/* Data points */}\n {items.map((item) => {\n const x = padding + (item.probability / 100) * innerWidth;\n const y = padding + innerHeight - (item.impact / 100) * innerHeight;\n\n return (\n <g key={item.id}>\n <circle\n cx={x}\n cy={y}\n r=\"6\"\n fill={getRiskColor(item.severity)}\n opacity=\"0.7\"\n style={{ cursor: \"pointer\" }}\n />\n <circle\n cx={x}\n cy={y}\n r=\"6\"\n fill=\"none\"\n stroke={getRiskColor(item.severity)}\n strokeWidth=\"2\"\n opacity=\"0.4\"\n />\n </g>\n );\n })}\n </svg>\n </div>\n );\n};\n"],"names":["DEFAULT_BASE_URL","createContext","useState","useContext","useRef","useEffect","useCallback","MIC_ICON_SVG","PLUS_ICON_SVG","CLOSE_ICON_SVG","useMemo"],"mappings":"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","x_google_ignoreList":[0]}