@datatechsolutions/ui 2.11.64 → 2.11.66

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.
@@ -16415,50 +16415,58 @@ var DashboardDemo = ({
16415
16415
  }
16416
16416
  );
16417
16417
  };
16418
+ var DEFAULT_THEME = {
16419
+ runButtonGradient: "from-indigo-600 to-violet-600",
16420
+ runButtonShadow: "shadow-indigo-500/20",
16421
+ stepActiveBg: "bg-indigo-500",
16422
+ activeRing: "ring-indigo-500/60",
16423
+ activeEdgeStroke: "#818cf8",
16424
+ completeEdgeStroke: "#10b981",
16425
+ badge: "bg-indigo-500/15 text-indigo-700 dark:text-indigo-300"
16426
+ };
16418
16427
  var NODE_TYPE_META = {
16419
- start: { icon: HeroIcons.PlayIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)" },
16420
- end: { icon: HeroIcons.CheckCircleIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)" },
16421
- datasource: { icon: HeroIcons.CircleStackIcon, color: "text-sky-300", bg: "bg-sky-500/15", glow: "rgba(14,165,233,0.45)" },
16422
- entity: { icon: HeroIcons.RectangleStackIcon, color: "text-sky-300", bg: "bg-sky-500/15", glow: "rgba(14,165,233,0.45)" },
16423
- http_request: { icon: HeroIcons.CloudIcon, color: "text-cyan-300", bg: "bg-cyan-500/15", glow: "rgba(34,211,238,0.45)" },
16424
- knowledge_base: { icon: HeroIcons.ServerStackIcon, color: "text-cyan-300", bg: "bg-cyan-500/15", glow: "rgba(34,211,238,0.45)" },
16425
- agent: { icon: HeroIcons.CpuChipIcon, color: "text-purple-300", bg: "bg-purple-500/15", glow: "rgba(168,85,247,0.5)" },
16426
- agent_tool: { icon: HeroIcons.BeakerIcon, color: "text-violet-300", bg: "bg-violet-500/15", glow: "rgba(139,92,246,0.5)" },
16427
- tool: { icon: HeroIcons.BeakerIcon, color: "text-violet-300", bg: "bg-violet-500/15", glow: "rgba(139,92,246,0.5)" },
16428
- code: { icon: HeroIcons.CodeBracketIcon, color: "text-amber-300", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.45)" },
16429
- template_transform: { icon: HeroIcons.DocumentTextIcon, color: "text-amber-300", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.45)" },
16430
- if_else: { icon: HeroIcons.BoltIcon, color: "text-orange-300", bg: "bg-orange-500/15", glow: "rgba(251,146,60,0.5)" },
16431
- question_classifier: { icon: HeroIcons.BoltIcon, color: "text-orange-300", bg: "bg-orange-500/15", glow: "rgba(251,146,60,0.5)" },
16432
- parameter_extractor: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-orange-300", bg: "bg-orange-500/15", glow: "rgba(251,146,60,0.5)" },
16433
- variable_aggregator: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-yellow-300", bg: "bg-yellow-500/15", glow: "rgba(234,179,8,0.45)" },
16434
- variable_assigner: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-yellow-300", bg: "bg-yellow-500/15", glow: "rgba(234,179,8,0.45)" },
16435
- iteration: { icon: HeroIcons.ArrowPathIcon, color: "text-fuchsia-300", bg: "bg-fuchsia-500/15", glow: "rgba(232,121,249,0.5)" },
16436
- iteration_start: { icon: HeroIcons.ArrowPathIcon, color: "text-fuchsia-300", bg: "bg-fuchsia-500/15", glow: "rgba(232,121,249,0.5)" },
16437
- list_operator: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-fuchsia-300", bg: "bg-fuchsia-500/15", glow: "rgba(232,121,249,0.5)" },
16438
- answer: { icon: HeroIcons.ChartBarIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)" },
16439
- dashboard_output: { icon: HeroIcons.ChartBarIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)" },
16440
- rule: { icon: HeroIcons.BoltIcon, color: "text-rose-300", bg: "bg-rose-500/15", glow: "rgba(244,63,94,0.5)" },
16441
- document_extractor: { icon: HeroIcons.DocumentTextIcon, color: "text-amber-300", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.45)" },
16442
- model_provider: { icon: HeroIcons.CpuChipIcon, color: "text-violet-300", bg: "bg-violet-500/15", glow: "rgba(139,92,246,0.5)" },
16443
- note: { icon: HeroIcons.DocumentTextIcon, color: "text-slate-300", bg: "bg-slate-500/15", glow: "rgba(100,116,139,0.4)" },
16444
- group: { icon: HeroIcons.RectangleStackIcon, color: "text-slate-300", bg: "bg-slate-500/15", glow: "rgba(100,116,139,0.4)" }
16428
+ start: { icon: HeroIcons.PlayIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)", tag: "start" },
16429
+ end: { icon: HeroIcons.CheckCircleIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)", tag: "end" },
16430
+ datasource: { icon: HeroIcons.CircleStackIcon, color: "text-sky-300", bg: "bg-sky-500/15", glow: "rgba(14,165,233,0.45)", tag: "datasource" },
16431
+ entity: { icon: HeroIcons.RectangleStackIcon, color: "text-sky-300", bg: "bg-sky-500/15", glow: "rgba(14,165,233,0.45)", tag: "entity" },
16432
+ http_request: { icon: HeroIcons.CloudIcon, color: "text-cyan-300", bg: "bg-cyan-500/15", glow: "rgba(34,211,238,0.45)", tag: "http" },
16433
+ knowledge_base: { icon: HeroIcons.ServerStackIcon, color: "text-cyan-300", bg: "bg-cyan-500/15", glow: "rgba(34,211,238,0.45)", tag: "kb" },
16434
+ agent: { icon: HeroIcons.CpuChipIcon, color: "text-purple-300", bg: "bg-purple-500/15", glow: "rgba(168,85,247,0.5)", tag: "agent" },
16435
+ agent_tool: { icon: HeroIcons.BeakerIcon, color: "text-violet-300", bg: "bg-violet-500/15", glow: "rgba(139,92,246,0.5)", tag: "agent.tool" },
16436
+ tool: { icon: HeroIcons.BeakerIcon, color: "text-violet-300", bg: "bg-violet-500/15", glow: "rgba(139,92,246,0.5)", tag: "tool" },
16437
+ code: { icon: HeroIcons.CodeBracketIcon, color: "text-amber-300", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.45)", tag: "code" },
16438
+ template_transform: { icon: HeroIcons.DocumentTextIcon, color: "text-amber-300", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.45)", tag: "template" },
16439
+ if_else: { icon: HeroIcons.BoltIcon, color: "text-orange-300", bg: "bg-orange-500/15", glow: "rgba(251,146,60,0.5)", tag: "branch" },
16440
+ question_classifier: { icon: HeroIcons.BoltIcon, color: "text-orange-300", bg: "bg-orange-500/15", glow: "rgba(251,146,60,0.5)", tag: "classifier" },
16441
+ parameter_extractor: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-orange-300", bg: "bg-orange-500/15", glow: "rgba(251,146,60,0.5)", tag: "extractor" },
16442
+ variable_aggregator: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-yellow-300", bg: "bg-yellow-500/15", glow: "rgba(234,179,8,0.45)", tag: "aggregate" },
16443
+ variable_assigner: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-yellow-300", bg: "bg-yellow-500/15", glow: "rgba(234,179,8,0.45)", tag: "assign" },
16444
+ iteration: { icon: HeroIcons.ArrowPathIcon, color: "text-fuchsia-300", bg: "bg-fuchsia-500/15", glow: "rgba(232,121,249,0.5)", tag: "iterate" },
16445
+ iteration_start: { icon: HeroIcons.ArrowPathIcon, color: "text-fuchsia-300", bg: "bg-fuchsia-500/15", glow: "rgba(232,121,249,0.5)", tag: "iterate.start" },
16446
+ list_operator: { icon: HeroIcons.AdjustmentsHorizontalIcon, color: "text-fuchsia-300", bg: "bg-fuchsia-500/15", glow: "rgba(232,121,249,0.5)", tag: "list" },
16447
+ answer: { icon: HeroIcons.ChartBarIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)", tag: "answer" },
16448
+ dashboard_output: { icon: HeroIcons.ChartBarIcon, color: "text-emerald-300", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.45)", tag: "dashboard" },
16449
+ rule: { icon: HeroIcons.BoltIcon, color: "text-rose-300", bg: "bg-rose-500/15", glow: "rgba(244,63,94,0.5)", tag: "rule" },
16450
+ document_extractor: { icon: HeroIcons.DocumentTextIcon, color: "text-amber-300", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.45)", tag: "extract" },
16451
+ model_provider: { icon: HeroIcons.CpuChipIcon, color: "text-violet-300", bg: "bg-violet-500/15", glow: "rgba(139,92,246,0.5)", tag: "model" },
16452
+ note: { icon: HeroIcons.DocumentTextIcon, color: "text-slate-300", bg: "bg-slate-500/15", glow: "rgba(100,116,139,0.4)", tag: "note" },
16453
+ group: { icon: HeroIcons.RectangleStackIcon, color: "text-slate-300", bg: "bg-slate-500/15", glow: "rgba(100,116,139,0.4)", tag: "group" }
16445
16454
  };
16446
- var FALLBACK_META = { icon: HeroIcons.BoltIcon, color: "text-gray-300", bg: "bg-gray-500/15", glow: "rgba(100,116,139,0.4)" };
16455
+ var FALLBACK_META = { icon: HeroIcons.BoltIcon, color: "text-gray-300", bg: "bg-gray-500/15", glow: "rgba(100,116,139,0.4)", tag: "node" };
16447
16456
  function getNodeMeta(type) {
16448
16457
  return NODE_TYPE_META[type] ?? FALLBACK_META;
16449
16458
  }
16450
- var NODE_W = 180;
16451
- var NODE_H = 80;
16452
- var PADDING = 24;
16453
16459
  function DepartmentWorkflowDemo({
16454
16460
  workflow,
16455
16461
  stepDurationMs = 1100,
16456
16462
  autoPlay = false,
16457
16463
  className,
16458
16464
  hideHeader = false,
16459
- onComplete
16465
+ onComplete,
16466
+ theme
16460
16467
  }) {
16461
- const { graph, steps, title, description, accentBadge = "bg-indigo-500/15 text-indigo-300", completionSummary } = workflow;
16468
+ const t = { ...DEFAULT_THEME, ...theme };
16469
+ const { graph, steps, title, description, accentBadge, completionSummary } = workflow;
16462
16470
  const [stepIndex, setStepIndex] = React12.useState(-1);
16463
16471
  const intervalRef = React12.useRef(null);
16464
16472
  const completedRef = React12.useRef(false);
@@ -16466,6 +16474,20 @@ function DepartmentWorkflowDemo({
16466
16474
  const isIdle = stepIndex === -1;
16467
16475
  const isRunning = stepIndex >= 0 && stepIndex < total - 1;
16468
16476
  const isComplete = stepIndex === total - 1 && total > 0;
16477
+ const columns = React12.useMemo(() => {
16478
+ const stepByNode = /* @__PURE__ */ new Map();
16479
+ steps.forEach((s, idx) => {
16480
+ for (const id of s.nodes) {
16481
+ if (!stepByNode.has(id)) stepByNode.set(id, idx);
16482
+ }
16483
+ });
16484
+ const cols = steps.map(() => []);
16485
+ for (const node2 of graph.nodes) {
16486
+ const idx = stepByNode.get(node2.id);
16487
+ if (idx !== void 0) cols[idx].push(node2);
16488
+ }
16489
+ return cols.map((col, i) => ({ stepIndex: i, nodes: col, label: steps[i]?.label ?? "" })).filter((c) => c.nodes.length > 0);
16490
+ }, [graph.nodes, steps]);
16469
16491
  const activeNodeIds = React12.useMemo(() => {
16470
16492
  if (stepIndex < 0) return /* @__PURE__ */ new Set();
16471
16493
  return new Set(steps[stepIndex]?.nodes ?? []);
@@ -16515,42 +16537,32 @@ function DepartmentWorkflowDemo({
16515
16537
  if (intervalRef.current) clearInterval(intervalRef.current);
16516
16538
  };
16517
16539
  }, [autoPlay, handleRun]);
16518
- const bounds = React12.useMemo(() => {
16519
- if (graph.nodes.length === 0) return { width: 800, height: 400 };
16520
- let maxX = 0;
16521
- let maxY = 0;
16522
- for (const node2 of graph.nodes) {
16523
- if (node2.position.x > maxX) maxX = node2.position.x;
16524
- if (node2.position.y > maxY) maxY = node2.position.y;
16525
- }
16526
- return { width: maxX + NODE_W + PADDING * 2, height: maxY + NODE_H + PADDING * 2 };
16527
- }, [graph.nodes]);
16528
16540
  const currentStepLabel = stepIndex >= 0 ? steps[stepIndex]?.label : "Ready to run";
16529
16541
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `liquid-surface rounded-2xl overflow-hidden ${className ?? ""}`, children: [
16530
16542
  !hideHeader && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-white/5 px-5 py-4 flex items-start gap-4", children: [
16531
16543
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
16532
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider ${accentBadge}`, children: [
16544
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider ${accentBadge ?? t.badge}`, children: [
16533
16545
  /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BoltIcon, { className: "h-3 w-3" }),
16534
16546
  "Astrlabe workflow"
16535
16547
  ] }),
16536
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mt-2 text-lg font-bold text-white", children: title }),
16537
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-gray-400", children: description })
16548
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mt-2 text-lg font-bold text-gray-900 dark:text-white", children: title }),
16549
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-gray-500 dark:text-gray-400", children: description })
16538
16550
  ] }),
16539
16551
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [
16540
16552
  stepIndex >= 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: steps.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
16541
16553
  "div",
16542
16554
  {
16543
- className: `h-1 w-3 rounded-full transition-all duration-500 ${index < stepIndex || isComplete ? "bg-emerald-500" : index === stepIndex ? "bg-indigo-500 animate-pulse" : "bg-white/10"}`
16555
+ className: `h-1 w-3 rounded-full transition-all duration-500 ${index < stepIndex || isComplete ? "bg-emerald-500" : index === stepIndex ? `${t.stepActiveBg} animate-pulse` : "bg-white/10"}`
16544
16556
  },
16545
16557
  index
16546
16558
  )) }),
16547
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[180px] truncate text-[10px] text-gray-400", children: currentStepLabel }),
16559
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[180px] truncate text-[10px] text-gray-500 dark:text-gray-400", children: currentStepLabel }),
16548
16560
  isIdle ? /* @__PURE__ */ jsxRuntime.jsxs(
16549
16561
  "button",
16550
16562
  {
16551
16563
  type: "button",
16552
16564
  onClick: handleRun,
16553
- className: "flex items-center gap-1 rounded-lg bg-gradient-to-r from-indigo-600 to-violet-600 px-3 py-1 text-[11px] font-semibold text-white shadow-lg shadow-indigo-500/20 hover:shadow-indigo-500/30 hover:scale-105 active:scale-95 transition-all",
16565
+ className: `flex items-center gap-1 rounded-lg bg-gradient-to-r ${t.runButtonGradient} px-3 py-1 text-[11px] font-semibold text-white shadow-lg ${t.runButtonShadow} hover:scale-105 active:scale-95 transition-all`,
16554
16566
  children: [
16555
16567
  /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.PlayIcon, { className: "h-3 w-3" }),
16556
16568
  " Run"
@@ -16572,7 +16584,7 @@ function DepartmentWorkflowDemo({
16572
16584
  {
16573
16585
  type: "button",
16574
16586
  onClick: handleRun,
16575
- className: "flex items-center gap-1 rounded-lg border border-white/10 px-3 py-1 text-[11px] font-medium text-gray-300 hover:bg-white/5",
16587
+ className: "flex items-center gap-1 rounded-lg border border-white/10 px-3 py-1 text-[11px] font-medium text-gray-700 dark:text-gray-300 hover:bg-white/5",
16576
16588
  children: [
16577
16589
  /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ArrowPathIcon, { className: "h-3 w-3" }),
16578
16590
  " Replay"
@@ -16581,80 +16593,74 @@ function DepartmentWorkflowDemo({
16581
16593
  )
16582
16594
  ] })
16583
16595
  ] }),
16584
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-auto p-6", style: { minHeight: bounds.height + PADDING * 2 }, children: [
16596
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-x-auto px-4 py-5", children: [
16585
16597
  /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
16586
- @keyframes astGlow { 0%, 100% { box-shadow: 0 0 12px var(--glow); } 50% { box-shadow: 0 0 28px var(--glow); } }
16587
- @keyframes astEdge { to { stroke-dashoffset: -16; } }
16598
+ @keyframes deptGlow { 0%, 100% { box-shadow: 0 0 12px var(--glow); } 50% { box-shadow: 0 0 28px var(--glow); } }
16599
+ @keyframes deptEdge { to { stroke-dashoffset: -16; } }
16588
16600
  ` }),
16589
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", style: { width: bounds.width, height: bounds.height }, children: [
16590
- /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "absolute inset-0 pointer-events-none", width: bounds.width, height: bounds.height, children: graph.edges.map((edge2) => {
16591
- const source = graph.nodes.find((n) => n.id === edge2.source);
16592
- const target = graph.nodes.find((n) => n.id === edge2.target);
16593
- if (!source || !target) return null;
16594
- const x1 = source.position.x + NODE_W;
16595
- const y1 = source.position.y + NODE_H / 2;
16596
- const x2 = target.position.x;
16597
- const y2 = target.position.y + NODE_H / 2;
16598
- const midX = (x1 + x2) / 2;
16599
- const isActive = activeNodeIds.has(edge2.source) || completedNodeIds.has(edge2.source) && (activeNodeIds.has(edge2.target) || completedNodeIds.has(edge2.target));
16600
- const isComplete2 = completedNodeIds.has(edge2.source) && completedNodeIds.has(edge2.target);
16601
- const stroke = isComplete2 ? "#10b981" : isActive ? "#818cf8" : "#334155";
16602
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
16601
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-stretch gap-0 min-w-full", children: columns.map((col, colIdx) => {
16602
+ const isStepActive = stepIndex === col.stepIndex;
16603
+ const isStepDone = stepIndex > col.stepIndex;
16604
+ const showsConnector = colIdx > 0;
16605
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-stretch", children: [
16606
+ showsConnector && /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "36", height: "100", className: "self-center shrink-0", viewBox: "0 0 36 100", children: [
16603
16607
  /* @__PURE__ */ jsxRuntime.jsx(
16604
- "path",
16608
+ "line",
16605
16609
  {
16606
- d: `M ${x1} ${y1} C ${midX} ${y1}, ${midX} ${y2}, ${x2} ${y2}`,
16607
- fill: "none",
16608
- stroke,
16609
- strokeWidth: 2,
16610
+ x1: "0",
16611
+ y1: "50",
16612
+ x2: "36",
16613
+ y2: "50",
16614
+ stroke: isStepDone ? t.completeEdgeStroke : isStepActive ? t.activeEdgeStroke : "#334155",
16615
+ strokeWidth: "2",
16610
16616
  strokeDasharray: "6 4",
16611
- style: { animation: isActive && !isComplete2 ? "astEdge 0.8s linear infinite" : "none" }
16617
+ style: { animation: isStepActive ? "deptEdge 0.8s linear infinite" : "none" }
16612
16618
  }
16613
16619
  ),
16614
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x2, cy: y2, r: "3", fill: stroke })
16615
- ] }, edge2.id);
16616
- }) }),
16617
- graph.nodes.map((node2) => {
16618
- const status = getStatus(node2);
16619
- const meta = getNodeMeta(node2.type);
16620
- const statusBorder = status === "running" ? "ring-2 ring-indigo-500/60 scale-[1.04]" : status === "complete" ? "ring-1 ring-emerald-500/40" : "opacity-60";
16621
- return /* @__PURE__ */ jsxRuntime.jsx(
16622
- "div",
16623
- {
16624
- className: `absolute liquid-surface rounded-2xl px-3 py-2.5 transition-all duration-500 ${statusBorder}`,
16625
- style: {
16626
- left: node2.position.x,
16627
- top: node2.position.y,
16628
- width: NODE_W,
16629
- height: NODE_H,
16630
- ...status === "running" ? { "--glow": meta.glow, animation: "astGlow 1.4s ease-in-out infinite" } : {}
16631
- },
16632
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2.5", children: [
16633
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg ${meta.bg}`, children: /* @__PURE__ */ jsxRuntime.jsx(meta.icon, { className: `h-4 w-4 ${meta.color}` }) }),
16634
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
16635
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-[12px] font-semibold text-white", children: node2.data.label }),
16636
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 text-[9px] text-gray-500 font-mono", children: [
16637
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: node2.type }),
16638
- status === "running" && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-0.5 text-indigo-300", children: [
16639
- /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ArrowRightIcon, { className: "h-2.5 w-2.5 animate-pulse" }),
16640
- "running"
16641
- ] }),
16642
- status === "complete" && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-0.5 text-emerald-400", children: [
16643
- /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-2.5 w-2.5" }),
16644
- "done"
16620
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "34", cy: "50", r: "3", fill: isStepDone ? t.completeEdgeStroke : isStepActive ? t.activeEdgeStroke : "#334155" })
16621
+ ] }),
16622
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-[160px] flex-col gap-2 shrink-0", children: [
16623
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[8px] font-bold uppercase tracking-wider text-gray-400 dark:text-gray-500 text-center", children: [
16624
+ "Step ",
16625
+ col.stepIndex + 1
16626
+ ] }),
16627
+ col.nodes.map((node2) => {
16628
+ const status = getStatus(node2);
16629
+ const meta = getNodeMeta(node2.type);
16630
+ const statusClass = status === "running" ? `scale-[1.04] ring-2 ${t.activeRing}` : status === "complete" ? "ring-1 ring-emerald-500/40" : "opacity-50";
16631
+ return /* @__PURE__ */ jsxRuntime.jsx(
16632
+ "div",
16633
+ {
16634
+ className: `liquid-surface rounded-xl p-2.5 transition-all duration-500 ${statusClass}`,
16635
+ style: status === "running" ? { "--glow": meta.glow, animation: "deptGlow 1.4s ease-in-out infinite" } : void 0,
16636
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
16637
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg ${meta.bg}`, children: /* @__PURE__ */ jsxRuntime.jsx(meta.icon, { className: `h-4 w-4 ${meta.color}` }) }),
16638
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
16639
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-[11px] font-semibold text-gray-900 dark:text-white", children: node2.data.label }),
16640
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 text-[8px] text-gray-500 dark:text-gray-500", children: [
16641
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-mono", children: meta.tag }),
16642
+ status === "running" && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `flex items-center gap-0.5 ${t.stepActiveBg.replace("bg-", "text-")}`, children: [
16643
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-1 w-1 rounded-full bg-current animate-pulse" }),
16644
+ "ativo"
16645
+ ] }),
16646
+ status === "complete" && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-0.5 text-emerald-500", children: [
16647
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-2.5 w-2.5" }),
16648
+ "ok"
16649
+ ] })
16650
+ ] })
16645
16651
  ] })
16646
16652
  ] })
16647
- ] })
16648
- ] })
16649
- },
16650
- node2.id
16651
- );
16652
- })
16653
- ] })
16653
+ },
16654
+ node2.id
16655
+ );
16656
+ })
16657
+ ] })
16658
+ ] }, col.stepIndex);
16659
+ }) })
16654
16660
  ] }),
16655
16661
  isComplete && completionSummary && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-white/5 bg-emerald-500/[0.06] px-5 py-3 flex items-center gap-2", children: [
16656
- /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-4 w-4 shrink-0 text-emerald-400" }),
16657
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] font-semibold text-emerald-300", children: completionSummary })
16662
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-4 w-4 shrink-0 text-emerald-500" }),
16663
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] font-semibold text-emerald-700 dark:text-emerald-300", children: completionSummary })
16658
16664
  ] })
16659
16665
  ] });
16660
16666
  }
@@ -16899,6 +16905,160 @@ var customerAnalyticsWorkflow = {
16899
16905
  step("Publishing analytics dashboard\u2026", "dashboard")
16900
16906
  ]
16901
16907
  };
16908
+ var payrollWorkflow = {
16909
+ title: "Folha de pagamento \u2014 fechamento eSocial",
16910
+ description: "Ponto \u2192 c\xE1lculos paralelos (FGTS / INSS / IRRF) \u2192 encargos \u2192 S-1200 \u2192 dashboard.",
16911
+ accentBadge: "bg-cyan-500/15 text-cyan-300",
16912
+ completionSummary: "142 holerites processados \xB7 R$ 890k bruto \xB7 eSocial S-1200 transmitido",
16913
+ graph: buildGraph(
16914
+ [
16915
+ node("start", "start", "Fechamento mensal", 0, 120),
16916
+ node("attendance", "datasource", "Buscar ponto", 220, 120),
16917
+ node("fgts", "code", "Calcular FGTS", 460, 10),
16918
+ node("inss", "code", "Calcular INSS", 460, 120),
16919
+ node("irrf", "code", "Calcular IRRF", 460, 230),
16920
+ node("aggregate", "variable_aggregator", "Agregar folha", 700, 120),
16921
+ node("esocial", "template_transform", "Gerar S-1200", 940, 120),
16922
+ node("transmit", "http_request", "Transmitir eSocial", 1180, 120),
16923
+ node("report", "dashboard_output", "Dashboard folha", 1420, 120)
16924
+ ],
16925
+ [
16926
+ edge("start", "attendance"),
16927
+ edge("attendance", "fgts"),
16928
+ edge("attendance", "inss"),
16929
+ edge("attendance", "irrf"),
16930
+ edge("fgts", "aggregate"),
16931
+ edge("inss", "aggregate"),
16932
+ edge("irrf", "aggregate"),
16933
+ edge("aggregate", "esocial"),
16934
+ edge("esocial", "transmit"),
16935
+ edge("transmit", "report")
16936
+ ]
16937
+ ),
16938
+ steps: [
16939
+ step("Iniciando fechamento mensal\u2026", "start"),
16940
+ step("Buscando registros de ponto\u2026", "attendance"),
16941
+ step("Calculando FGTS, INSS e IRRF em paralelo\u2026", "fgts", "inss", "irrf"),
16942
+ step("Agregando folha consolidada\u2026", "aggregate"),
16943
+ step("Gerando evento S-1200\u2026", "esocial"),
16944
+ step("Transmitindo ao eSocial\u2026", "transmit"),
16945
+ step("Publicando dashboard da folha\u2026", "report")
16946
+ ]
16947
+ };
16948
+ var supportWorkflow = {
16949
+ title: "Atendimento \u2014 ticket com SLA",
16950
+ description: "Ticket \u2192 paralelo (hist\xF3rico do cliente, status do pedido, base de conhecimento) \u2192 classificar \u2192 rascunhar \u2192 revisar \u2192 responder.",
16951
+ accentBadge: "bg-teal-500/15 text-teal-300",
16952
+ completionSummary: "Ticket respondido em 2min \xB7 CSAT esperado 4.8/5 \xB7 SLA cumprido",
16953
+ graph: buildGraph(
16954
+ [
16955
+ node("start", "start", "Ticket #847", 0, 120),
16956
+ node("history", "datasource", "Hist\xF3rico cliente", 220, 10),
16957
+ node("order", "datasource", "Status pedido", 220, 120),
16958
+ node("kb", "knowledge_base", "Base de conhecimento", 220, 230),
16959
+ node("classify", "question_classifier", "Classificar inten\xE7\xE3o", 460, 120),
16960
+ node("gate", "if_else", "Urgente?", 700, 120),
16961
+ node("draft", "agent", "Rascunhar resposta", 940, 120),
16962
+ node("review", "agent", "Revisor humano", 1180, 120),
16963
+ node("send", "http_request", "Enviar resposta", 1420, 120)
16964
+ ],
16965
+ [
16966
+ edge("start", "history"),
16967
+ edge("start", "order"),
16968
+ edge("start", "kb"),
16969
+ edge("history", "classify"),
16970
+ edge("order", "classify"),
16971
+ edge("kb", "classify"),
16972
+ edge("classify", "gate"),
16973
+ edge("gate", "draft"),
16974
+ edge("draft", "review"),
16975
+ edge("review", "send")
16976
+ ]
16977
+ ),
16978
+ steps: [
16979
+ step("Ticket recebido\u2026", "start"),
16980
+ step("Buscando contexto em paralelo\u2026", "history", "order", "kb"),
16981
+ step("Classificando inten\xE7\xE3o e prioridade\u2026", "classify"),
16982
+ step("Avaliando SLA\u2026", "gate"),
16983
+ step("Rascunhando resposta personalizada\u2026", "draft"),
16984
+ step("Revis\xE3o humana (opcional)\u2026", "review"),
16985
+ step("Enviando resposta ao cliente\u2026", "send")
16986
+ ]
16987
+ };
16988
+ var manufacturingWorkflow = {
16989
+ title: "Produ\xE7\xE3o \u2014 planejamento MRP",
16990
+ description: "Demanda \u2192 BOM \u2192 verificar estoque \u2192 alocar centros de trabalho \u2192 QC \u2192 liberar OPs.",
16991
+ accentBadge: "bg-violet-500/15 text-violet-300",
16992
+ completionSummary: "34 OPs liberadas \xB7 OEE 87% \xB7 3 desvios de QC tratados automaticamente",
16993
+ graph: buildGraph(
16994
+ [
16995
+ node("start", "start", "Trigger MRP semanal", 0, 120),
16996
+ node("demand", "datasource", "Buscar demanda", 220, 120),
16997
+ node("bom", "entity", "Explodir BOM", 460, 120),
16998
+ node("stock", "code", "Checar estoque", 700, 10),
16999
+ node("schedule", "agent", "Alocar centros", 700, 230),
17000
+ node("release", "iteration", "Liberar OPs", 940, 120),
17001
+ node("qc", "agent", "Checkpoint QC", 1180, 120),
17002
+ node("report", "dashboard_output", "Painel produ\xE7\xE3o", 1420, 120)
17003
+ ],
17004
+ [
17005
+ edge("start", "demand"),
17006
+ edge("demand", "bom"),
17007
+ edge("bom", "stock"),
17008
+ edge("bom", "schedule"),
17009
+ edge("stock", "release"),
17010
+ edge("schedule", "release"),
17011
+ edge("release", "qc"),
17012
+ edge("qc", "report")
17013
+ ]
17014
+ ),
17015
+ steps: [
17016
+ step("Disparo semanal do MRP\u2026", "start"),
17017
+ step("Puxando demanda prevista\u2026", "demand"),
17018
+ step("Explodindo lista de materiais\u2026", "bom"),
17019
+ step("Checando estoque e alocando capacidade em paralelo\u2026", "stock", "schedule"),
17020
+ step("Liberando 34 ordens de produ\xE7\xE3o\u2026", "release"),
17021
+ step("Rodando checkpoints de qualidade\u2026", "qc"),
17022
+ step("Publicando painel da produ\xE7\xE3o\u2026", "report")
17023
+ ]
17024
+ };
17025
+ var logisticsWorkflow = {
17026
+ title: "Log\xEDstica \u2014 roteiriza\xE7\xE3o inteligente",
17027
+ description: "Pedidos \u2192 paralelo (tr\xE2nsito, frota, janelas) \u2192 otimizador \u2192 despacho \u2192 tracking.",
17028
+ accentBadge: "bg-sky-500/15 text-sky-300",
17029
+ completionSummary: "28 entregas roteirizadas \xB7 -12% km \xB7 94% on-time esperado",
17030
+ graph: buildGraph(
17031
+ [
17032
+ node("start", "start", "28 pedidos SP", 0, 120),
17033
+ node("traffic", "http_request", "Tr\xE2nsito tempo real", 220, 10),
17034
+ node("fleet", "datasource", "Frota dispon\xEDvel", 220, 120),
17035
+ node("windows", "datasource", "Janelas de entrega", 220, 230),
17036
+ node("optimize", "agent", "Otimizador de rotas", 460, 120),
17037
+ node("dispatch", "iteration", "Despachar ve\xEDculos", 700, 120),
17038
+ node("notify", "http_request", "Notificar clientes", 940, 120),
17039
+ node("track", "dashboard_output", "Painel de tracking", 1180, 120)
17040
+ ],
17041
+ [
17042
+ edge("start", "traffic"),
17043
+ edge("start", "fleet"),
17044
+ edge("start", "windows"),
17045
+ edge("traffic", "optimize"),
17046
+ edge("fleet", "optimize"),
17047
+ edge("windows", "optimize"),
17048
+ edge("optimize", "dispatch"),
17049
+ edge("dispatch", "notify"),
17050
+ edge("notify", "track")
17051
+ ]
17052
+ ),
17053
+ steps: [
17054
+ step("28 pedidos entraram na fila\u2026", "start"),
17055
+ step("Consultando tr\xE2nsito, frota e janelas em paralelo\u2026", "traffic", "fleet", "windows"),
17056
+ step("Otimizador montando rotas\u2026", "optimize"),
17057
+ step("Despachando ve\xEDculos\u2026", "dispatch"),
17058
+ step("Notificando clientes via WhatsApp\u2026", "notify"),
17059
+ step("Publicando painel de tracking\u2026", "track")
17060
+ ]
17061
+ };
16902
17062
  var lgpdWorkflow = {
16903
17063
  title: "LGPD compliance \u2014 privacy sweep",
16904
17064
  description: "Scan audit logs \u2192 detect PII access violations \u2192 remediate \u2192 notify DPO \u2192 report.",
@@ -16934,6 +17094,32 @@ var lgpdWorkflow = {
16934
17094
  step("Filing compliance report\u2026", "report")
16935
17095
  ]
16936
17096
  };
17097
+ var DEFAULT_ASSISTANT_THEME = {
17098
+ brandGradient: "from-blue-500 to-purple-600",
17099
+ inputAvatar: "from-blue-500 to-purple-600",
17100
+ inputBorder: "border-indigo-300/40 dark:border-indigo-400/30",
17101
+ inputCursor: "bg-indigo-500",
17102
+ stageActiveBadge: "bg-indigo-500/15 text-indigo-600 dark:text-indigo-300",
17103
+ progressActiveBar: "bg-indigo-500",
17104
+ workflow: {}
17105
+ };
17106
+ var koriAssistantTheme = {
17107
+ brandGradient: "from-amber-500 to-orange-600",
17108
+ inputAvatar: "from-amber-500 to-orange-600",
17109
+ inputBorder: "border-amber-300/50 dark:border-amber-400/40",
17110
+ inputCursor: "bg-amber-500",
17111
+ stageActiveBadge: "bg-amber-500/15 text-amber-700 dark:text-amber-300",
17112
+ progressActiveBar: "bg-amber-500",
17113
+ workflow: {
17114
+ runButtonGradient: "from-amber-500 to-orange-600",
17115
+ runButtonShadow: "shadow-amber-500/25",
17116
+ stepActiveBg: "bg-amber-500",
17117
+ activeRing: "ring-amber-500/60",
17118
+ activeEdgeStroke: "#f59e0b",
17119
+ completeEdgeStroke: "#10b981",
17120
+ badge: "bg-amber-500/15 text-amber-700 dark:text-amber-300"
17121
+ }
17122
+ };
16937
17123
  function DepartmentAssistantDemo({
16938
17124
  flows,
16939
17125
  initialIndex = 0,
@@ -16941,8 +17127,11 @@ function DepartmentAssistantDemo({
16941
17127
  dashboardHoldMs = 1e4,
16942
17128
  typingSpeedMs = 32,
16943
17129
  workflowStepMs = 1050,
17130
+ theme,
17131
+ brandName = "Kori AI Assistant",
16944
17132
  className
16945
17133
  }) {
17134
+ const t = { ...DEFAULT_ASSISTANT_THEME, ...theme, workflow: { ...DEFAULT_ASSISTANT_THEME.workflow, ...theme?.workflow } };
16946
17135
  const [flowIndex, setFlowIndex] = React12.useState(initialIndex);
16947
17136
  const [stage, setStage] = React12.useState("input");
16948
17137
  const [typed, setTyped] = React12.useState("");
@@ -16958,25 +17147,25 @@ function DepartmentAssistantDemo({
16958
17147
  setTyped(flow.prompt.slice(0, i));
16959
17148
  } else {
16960
17149
  clearInterval(interval);
16961
- const t = setTimeout(() => setStage("workflow"), 700);
16962
- return () => clearTimeout(t);
17150
+ const timer = setTimeout(() => setStage("workflow"), 700);
17151
+ return () => clearTimeout(timer);
16963
17152
  }
16964
17153
  return void 0;
16965
17154
  }, typingSpeedMs);
16966
17155
  return () => clearInterval(interval);
16967
17156
  }, [stage, flow.prompt, typingSpeedMs]);
16968
17157
  const handleWorkflowComplete = React12.useCallback(() => {
16969
- const t = setTimeout(() => setStage("dashboard"), 1200);
16970
- rotateTimerRef.current = t;
17158
+ const timer = setTimeout(() => setStage("dashboard"), 1200);
17159
+ rotateTimerRef.current = timer;
16971
17160
  }, []);
16972
17161
  React12.useEffect(() => {
16973
17162
  if (stage !== "dashboard") return void 0;
16974
17163
  if (!autoRotate) return void 0;
16975
- const t = setTimeout(() => {
17164
+ const timer = setTimeout(() => {
16976
17165
  setFlowIndex((prev) => (prev + 1) % flows.length);
16977
17166
  setStage("input");
16978
17167
  }, dashboardHoldMs);
16979
- return () => clearTimeout(t);
17168
+ return () => clearTimeout(timer);
16980
17169
  }, [stage, autoRotate, dashboardHoldMs, flows.length]);
16981
17170
  const handleDepartmentSelect = React12.useCallback((next) => {
16982
17171
  if (rotateTimerRef.current) clearTimeout(rotateTimerRef.current);
@@ -16987,8 +17176,8 @@ function DepartmentAssistantDemo({
16987
17176
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `liquid-surface rounded-3xl overflow-hidden ${className ?? ""}`, children: [
16988
17177
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-white/5 px-4 py-3 flex flex-wrap items-center gap-2", children: [
16989
17178
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 pr-3", children: [
16990
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-7 w-7 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-purple-600", children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CpuChipIcon, { className: "h-4 w-4 text-white" }) }),
16991
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-gray-900 dark:text-white", children: "Kori AI Assistant" })
17179
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-7 w-7 items-center justify-center rounded-lg bg-gradient-to-br ${t.brandGradient}`, children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CpuChipIcon, { className: "h-4 w-4 text-white" }) }),
17180
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-gray-900 dark:text-white", children: brandName })
16992
17181
  ] }),
16993
17182
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
16994
17183
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-1.5", children: flows.map((entry, index) => {
@@ -16998,7 +17187,7 @@ function DepartmentAssistantDemo({
16998
17187
  {
16999
17188
  type: "button",
17000
17189
  onClick: () => handleDepartmentSelect(index),
17001
- className: `group inline-flex items-center gap-1.5 rounded-full px-3 py-1.5 text-[11px] font-semibold transition-all ${isActive ? `bg-gradient-to-r ${entry.accent} text-white shadow-lg shadow-indigo-500/20 scale-105` : "text-gray-600 dark:text-gray-400 hover:bg-white/5 hover:text-gray-900 dark:hover:text-white"}`,
17190
+ className: `group inline-flex items-center gap-1.5 rounded-full px-3 py-1.5 text-[11px] font-semibold transition-all ${isActive ? `bg-gradient-to-r ${entry.accent} text-white shadow-lg scale-105` : "text-gray-600 dark:text-gray-400 hover:bg-white/5 hover:text-gray-900 dark:hover:text-white"}`,
17002
17191
  children: [
17003
17192
  /* @__PURE__ */ jsxRuntime.jsx(entry.icon, { className: "h-3.5 w-3.5" }),
17004
17193
  entry.name
@@ -17009,11 +17198,11 @@ function DepartmentAssistantDemo({
17009
17198
  }) })
17010
17199
  ] }),
17011
17200
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-white/5 px-6 py-3 flex items-center gap-3 text-[11px]", children: [
17012
- /* @__PURE__ */ jsxRuntime.jsx(StageChip, { label: "Ask", stageIndex, mine: 0 }),
17201
+ /* @__PURE__ */ jsxRuntime.jsx(StageChip, { label: "Ask", stageIndex, mine: 0, activeBadge: t.stageActiveBadge }),
17013
17202
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-px flex-1 bg-gradient-to-r from-white/10 to-white/5" }),
17014
- /* @__PURE__ */ jsxRuntime.jsx(StageChip, { label: "Orchestrate", stageIndex, mine: 1 }),
17203
+ /* @__PURE__ */ jsxRuntime.jsx(StageChip, { label: "Orchestrate", stageIndex, mine: 1, activeBadge: t.stageActiveBadge }),
17015
17204
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-px flex-1 bg-gradient-to-r from-white/5 to-white/10" }),
17016
- /* @__PURE__ */ jsxRuntime.jsx(StageChip, { label: "Deliver", stageIndex, mine: 2 })
17205
+ /* @__PURE__ */ jsxRuntime.jsx(StageChip, { label: "Deliver", stageIndex, mine: 2, activeBadge: t.stageActiveBadge })
17017
17206
  ] }),
17018
17207
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", style: { minHeight: 600 }, children: /* @__PURE__ */ jsxRuntime.jsxs(framerMotion.AnimatePresence, { mode: "wait", children: [
17019
17208
  stage === "input" && /* @__PURE__ */ jsxRuntime.jsx(
@@ -17024,7 +17213,17 @@ function DepartmentAssistantDemo({
17024
17213
  exit: { opacity: 0, y: -12 },
17025
17214
  transition: { duration: 0.45 },
17026
17215
  className: "flex items-center justify-center p-10",
17027
- children: /* @__PURE__ */ jsxRuntime.jsx(InputStage3, { prompt: typed, department: flow.name, agents: flow.agents })
17216
+ children: /* @__PURE__ */ jsxRuntime.jsx(
17217
+ InputStage3,
17218
+ {
17219
+ prompt: typed,
17220
+ department: flow.name,
17221
+ agents: flow.agents,
17222
+ avatarGradient: t.inputAvatar,
17223
+ borderClass: t.inputBorder,
17224
+ cursorClass: t.inputCursor
17225
+ }
17226
+ )
17028
17227
  },
17029
17228
  `input-${flow.id}`
17030
17229
  ),
@@ -17043,7 +17242,8 @@ function DepartmentAssistantDemo({
17043
17242
  autoPlay: true,
17044
17243
  hideHeader: true,
17045
17244
  stepDurationMs: workflowStepMs,
17046
- onComplete: handleWorkflowComplete
17245
+ onComplete: handleWorkflowComplete,
17246
+ theme: t.workflow
17047
17247
  },
17048
17248
  `wf-${flow.id}`
17049
17249
  )
@@ -17065,7 +17265,7 @@ function DepartmentAssistantDemo({
17065
17265
  ] }) }),
17066
17266
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-white/5 px-5 py-3", children: [
17067
17267
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px] text-gray-500 dark:text-gray-400", children: [
17068
- /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BoltIcon, { className: "h-3.5 w-3.5 text-indigo-500" }),
17268
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BoltIcon, { className: `h-3.5 w-3.5 ${t.progressActiveBar.replace("bg-", "text-")}` }),
17069
17269
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium", children: [
17070
17270
  stage === "input" && "Usu\xE1rio envia um pedido ao assistente\u2026",
17071
17271
  stage === "workflow" && "Astrlabe orquestrando agentes e datasources\u2026",
@@ -17075,20 +17275,20 @@ function DepartmentAssistantDemo({
17075
17275
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", children: flows.map((entry, index) => /* @__PURE__ */ jsxRuntime.jsx(
17076
17276
  "span",
17077
17277
  {
17078
- className: `h-1 rounded-full transition-all duration-500 ${index === flowIndex ? "w-8 bg-indigo-500" : "w-1.5 bg-gray-300 dark:bg-white/10"}`
17278
+ className: `h-1 rounded-full transition-all duration-500 ${index === flowIndex ? `w-8 ${t.progressActiveBar}` : "w-1.5 bg-gray-300 dark:bg-white/10"}`
17079
17279
  },
17080
17280
  entry.id
17081
17281
  )) })
17082
17282
  ] })
17083
17283
  ] });
17084
17284
  }
17085
- function StageChip({ label, stageIndex, mine }) {
17285
+ function StageChip({ label, stageIndex, mine, activeBadge }) {
17086
17286
  const isActive = stageIndex === mine;
17087
17287
  const isDone = stageIndex > mine;
17088
17288
  return /* @__PURE__ */ jsxRuntime.jsxs(
17089
17289
  "div",
17090
17290
  {
17091
- className: `inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 font-semibold transition-colors ${isActive ? "bg-indigo-500/15 text-indigo-600 dark:text-indigo-300" : isDone ? "bg-emerald-500/10 text-emerald-600 dark:text-emerald-300" : "bg-white/5 text-gray-500 dark:text-gray-500"}`,
17291
+ className: `inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 font-semibold transition-colors ${isActive ? activeBadge : isDone ? "bg-emerald-500/10 text-emerald-600 dark:text-emerald-300" : "bg-white/5 text-gray-500 dark:text-gray-500"}`,
17092
17292
  children: [
17093
17293
  isDone ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-3.5 w-3.5" }) : isActive ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BoltIcon, { className: "h-3.5 w-3.5 animate-pulse" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-current" }),
17094
17294
  label
@@ -17096,10 +17296,17 @@ function StageChip({ label, stageIndex, mine }) {
17096
17296
  }
17097
17297
  );
17098
17298
  }
17099
- function InputStage3({ prompt, department, agents }) {
17299
+ function InputStage3({
17300
+ prompt,
17301
+ department,
17302
+ agents,
17303
+ avatarGradient,
17304
+ borderClass,
17305
+ cursorClass
17306
+ }) {
17100
17307
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-white/10 bg-white/70 dark:bg-zinc-900/70 p-8 shadow-2xl backdrop-blur-sm", children: [
17101
17308
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 flex items-center gap-3", children: [
17102
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 rounded-xl bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.SparklesIcon, { className: "h-6 w-6 text-white" }) }),
17309
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-12 w-12 rounded-xl bg-gradient-to-br ${avatarGradient} flex items-center justify-center`, children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.SparklesIcon, { className: "h-6 w-6 text-white" }) }),
17103
17310
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
17104
17311
  /* @__PURE__ */ jsxRuntime.jsxs("h3", { className: "text-base font-bold text-gray-900 dark:text-white", children: [
17105
17312
  "Assistente \u2014 ",
@@ -17108,17 +17315,17 @@ function InputStage3({ prompt, department, agents }) {
17108
17315
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: "Digite um pedido e veja os agentes atuarem." })
17109
17316
  ] })
17110
17317
  ] }),
17111
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl border-2 border-indigo-300/40 bg-indigo-50/50 dark:border-indigo-400/30 dark:bg-indigo-500/5 p-4 min-h-[120px]", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-base font-medium text-gray-900 dark:text-white", children: [
17318
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `rounded-xl border-2 ${borderClass} bg-white/40 dark:bg-white/[0.02] p-4 min-h-[120px]`, children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-base font-medium text-gray-900 dark:text-white", children: [
17112
17319
  prompt,
17113
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 inline-block w-0.5 h-5 bg-indigo-500 animate-pulse" })
17320
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `ml-1 inline-block w-0.5 h-5 ${cursorClass} animate-pulse` })
17114
17321
  ] }) }),
17115
17322
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400", children: [
17116
- /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BoltIcon, { className: "h-3.5 w-3.5 text-indigo-500" }),
17323
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BoltIcon, { className: `h-3.5 w-3.5 ${cursorClass.replace("bg-", "text-")}` }),
17117
17324
  "Agentes prontos:",
17118
17325
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: agents.map((agent) => /* @__PURE__ */ jsxRuntime.jsx(
17119
17326
  "span",
17120
17327
  {
17121
- className: "inline-flex items-center rounded-full border border-indigo-200 bg-indigo-50 px-2 py-0.5 text-[10px] font-semibold text-indigo-700 dark:border-indigo-500/30 dark:bg-indigo-500/10 dark:text-indigo-300",
17328
+ className: "inline-flex items-center rounded-full border border-white/10 bg-white/60 dark:bg-white/[0.04] px-2 py-0.5 text-[10px] font-semibold text-gray-700 dark:text-gray-200",
17122
17329
  children: agent
17123
17330
  },
17124
17331
  agent
@@ -25091,14 +25298,18 @@ exports.isValidThailandProvince = isValidThailandProvince;
25091
25298
  exports.isValidTurkeyProvince = isValidTurkeyProvince;
25092
25299
  exports.isValidUKNation = isValidUKNation;
25093
25300
  exports.isValidUsState = isValidUsState;
25301
+ exports.koriAssistantTheme = koriAssistantTheme;
25094
25302
  exports.koriDepartmentFlows = koriDepartmentFlows;
25095
25303
  exports.lgpdWorkflow = lgpdWorkflow;
25096
25304
  exports.listItem = listItem;
25097
25305
  exports.listItemReduced = listItemReduced;
25306
+ exports.logisticsWorkflow = logisticsWorkflow;
25307
+ exports.manufacturingWorkflow = manufacturingWorkflow;
25098
25308
  exports.marketingWorkflow = marketingWorkflow;
25099
25309
  exports.notificationBanner = notificationBanner;
25100
25310
  exports.notificationBannerReduced = notificationBannerReduced;
25101
25311
  exports.pageControlDot = pageControlDot;
25312
+ exports.payrollWorkflow = payrollWorkflow;
25102
25313
  exports.prefersReducedMotion = prefersReducedMotion;
25103
25314
  exports.registerCountry = registerCountry;
25104
25315
  exports.registerSubdivisionTheme = registerSubdivisionTheme;
@@ -25116,6 +25327,7 @@ exports.slideUp = slideUp;
25116
25327
  exports.springPresets = springPresets;
25117
25328
  exports.springPresetsReduced = springPresetsReduced;
25118
25329
  exports.staggerContainer = staggerContainer;
25330
+ exports.supportWorkflow = supportWorkflow;
25119
25331
  exports.swipeActionThreshold = swipeActionThreshold;
25120
25332
  exports.swipeConstraints = swipeConstraints;
25121
25333
  exports.useGeoMapState = useGeoMapState;
@@ -25125,5 +25337,5 @@ exports.usePullToRefresh = usePullToRefresh;
25125
25337
  exports.validateDashboardSpec = validateDashboardSpec;
25126
25338
  exports.xScale = xScale;
25127
25339
  exports.yScale = yScale;
25128
- //# sourceMappingURL=chunk-ZIBUWOWT.js.map
25129
- //# sourceMappingURL=chunk-ZIBUWOWT.js.map
25340
+ //# sourceMappingURL=chunk-T23YGO4X.js.map
25341
+ //# sourceMappingURL=chunk-T23YGO4X.js.map