@datatechsolutions/ui 3.10.0 → 3.11.1

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.
Files changed (117) hide show
  1. package/dist/astrlabe/contracts.d.mts +18 -2
  2. package/dist/astrlabe/contracts.d.ts +18 -2
  3. package/dist/astrlabe/index.d.mts +2 -2
  4. package/dist/astrlabe/index.d.ts +2 -2
  5. package/dist/astrlabe/index.js +108 -108
  6. package/dist/astrlabe/index.mjs +4 -4
  7. package/dist/astrlabe/workflow-canvas.js +4 -4
  8. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  9. package/dist/{chunk-JB3U6ORY.mjs → chunk-3U3CIARA.mjs} +3 -3
  10. package/dist/{chunk-JB3U6ORY.mjs.map → chunk-3U3CIARA.mjs.map} +1 -1
  11. package/dist/{chunk-5U43K6G3.mjs → chunk-7DZ2C5IN.mjs} +24 -22
  12. package/dist/chunk-7DZ2C5IN.mjs.map +1 -0
  13. package/dist/{chunk-EC34PGUO.js → chunk-APONR6ZM.js} +136 -136
  14. package/dist/chunk-APONR6ZM.js.map +1 -0
  15. package/dist/{chunk-AMESLEIO.js → chunk-BTMHQCDB.js} +63 -63
  16. package/dist/{chunk-AMESLEIO.js.map → chunk-BTMHQCDB.js.map} +1 -1
  17. package/dist/{chunk-L3R425GB.js → chunk-CLXEVSGB.js} +13 -13
  18. package/dist/{chunk-L3R425GB.js.map → chunk-CLXEVSGB.js.map} +1 -1
  19. package/dist/{chunk-TSNKICPP.js → chunk-CVCMJJ56.js} +10 -10
  20. package/dist/{chunk-TSNKICPP.js.map → chunk-CVCMJJ56.js.map} +1 -1
  21. package/dist/{chunk-MSMEECO6.js → chunk-DPXCJVJT.js} +9 -9
  22. package/dist/{chunk-MSMEECO6.js.map → chunk-DPXCJVJT.js.map} +1 -1
  23. package/dist/{chunk-A256OE5E.mjs → chunk-E3NMVWRL.mjs} +5 -5
  24. package/dist/chunk-E3NMVWRL.mjs.map +1 -0
  25. package/dist/{chunk-HEXTU6W3.mjs → chunk-I77TTBYO.mjs} +6 -6
  26. package/dist/{chunk-HEXTU6W3.mjs.map → chunk-I77TTBYO.mjs.map} +1 -1
  27. package/dist/{chunk-RHRJXK5R.mjs → chunk-IGOMJHC6.mjs} +11 -3
  28. package/dist/chunk-IGOMJHC6.mjs.map +1 -0
  29. package/dist/{chunk-DA3H7ERQ.mjs → chunk-IHOCYBHM.mjs} +3 -3
  30. package/dist/{chunk-DA3H7ERQ.mjs.map → chunk-IHOCYBHM.mjs.map} +1 -1
  31. package/dist/{chunk-C4D3EI5L.mjs → chunk-K3LIDGMA.mjs} +3 -3
  32. package/dist/{chunk-C4D3EI5L.mjs.map → chunk-K3LIDGMA.mjs.map} +1 -1
  33. package/dist/{chunk-YSYEV2Z6.js → chunk-KDVZIDVF.js} +46 -44
  34. package/dist/chunk-KDVZIDVF.js.map +1 -0
  35. package/dist/{chunk-NM37GLCL.mjs → chunk-LHAOIPYP.mjs} +3 -3
  36. package/dist/{chunk-NM37GLCL.mjs.map → chunk-LHAOIPYP.mjs.map} +1 -1
  37. package/dist/{chunk-MAOZWOA6.js → chunk-LM6BJOKX.js} +55 -55
  38. package/dist/{chunk-MAOZWOA6.js.map → chunk-LM6BJOKX.js.map} +1 -1
  39. package/dist/{chunk-2A45ZEK4.js → chunk-MN777KLN.js} +45 -45
  40. package/dist/{chunk-2A45ZEK4.js.map → chunk-MN777KLN.js.map} +1 -1
  41. package/dist/{chunk-FIJMOTP4.js → chunk-NW32BM3F.js} +34 -34
  42. package/dist/{chunk-FIJMOTP4.js.map → chunk-NW32BM3F.js.map} +1 -1
  43. package/dist/{chunk-W6MBDTKF.mjs → chunk-O4DIKNNH.mjs} +3 -3
  44. package/dist/{chunk-W6MBDTKF.mjs.map → chunk-O4DIKNNH.mjs.map} +1 -1
  45. package/dist/{chunk-5AKTDJFR.js → chunk-OD2AZBEX.js} +25 -25
  46. package/dist/{chunk-5AKTDJFR.js.map → chunk-OD2AZBEX.js.map} +1 -1
  47. package/dist/{chunk-5KI7FB3E.mjs → chunk-OKCEK7GH.mjs} +225 -234
  48. package/dist/chunk-OKCEK7GH.mjs.map +1 -0
  49. package/dist/{chunk-KHUWFL6W.js → chunk-OO4YMN4P.js} +4 -4
  50. package/dist/{chunk-KHUWFL6W.js.map → chunk-OO4YMN4P.js.map} +1 -1
  51. package/dist/{chunk-O4HH77A4.js → chunk-OSXBMLZP.js} +68 -68
  52. package/dist/{chunk-O4HH77A4.js.map → chunk-OSXBMLZP.js.map} +1 -1
  53. package/dist/{chunk-6ZYATZS3.mjs → chunk-Q6MMJYEG.mjs} +3 -3
  54. package/dist/{chunk-6ZYATZS3.mjs.map → chunk-Q6MMJYEG.mjs.map} +1 -1
  55. package/dist/{chunk-NSZN54HW.js → chunk-QASAHGLE.js} +4 -4
  56. package/dist/{chunk-NSZN54HW.js.map → chunk-QASAHGLE.js.map} +1 -1
  57. package/dist/{chunk-BU4WMSK3.mjs → chunk-QDW3IJIL.mjs} +3 -3
  58. package/dist/{chunk-BU4WMSK3.mjs.map → chunk-QDW3IJIL.mjs.map} +1 -1
  59. package/dist/{chunk-FENA4YGN.mjs → chunk-QKWNQOJB.mjs} +3 -3
  60. package/dist/{chunk-FENA4YGN.mjs.map → chunk-QKWNQOJB.mjs.map} +1 -1
  61. package/dist/{chunk-H7X3SXMB.mjs → chunk-S46LUR7O.mjs} +7 -7
  62. package/dist/{chunk-H7X3SXMB.mjs.map → chunk-S46LUR7O.mjs.map} +1 -1
  63. package/dist/{chunk-FD376DZ6.mjs → chunk-S4LHC5SF.mjs} +3 -3
  64. package/dist/{chunk-FD376DZ6.mjs.map → chunk-S4LHC5SF.mjs.map} +1 -1
  65. package/dist/{chunk-B76RTA7D.js → chunk-SSKKTSMA.js} +35 -35
  66. package/dist/{chunk-B76RTA7D.js.map → chunk-SSKKTSMA.js.map} +1 -1
  67. package/dist/{chunk-LVR4SR65.js → chunk-TIJXCRM4.js} +223 -234
  68. package/dist/chunk-TIJXCRM4.js.map +1 -0
  69. package/dist/{chunk-6UX2SRA2.mjs → chunk-VHU5FWFB.mjs} +3 -3
  70. package/dist/{chunk-6UX2SRA2.mjs.map → chunk-VHU5FWFB.mjs.map} +1 -1
  71. package/dist/{chunk-SY4MUT5V.js → chunk-ZUU7G3PC.js} +11 -2
  72. package/dist/chunk-ZUU7G3PC.js.map +1 -0
  73. package/dist/index.d.mts +26 -40
  74. package/dist/index.d.ts +26 -40
  75. package/dist/index.js +663 -671
  76. package/dist/index.mjs +2 -2
  77. package/dist/platform/admin/index.js +10 -10
  78. package/dist/platform/admin/index.mjs +4 -4
  79. package/dist/platform/agents-workspace.js +7 -7
  80. package/dist/platform/agents-workspace.mjs +6 -6
  81. package/dist/platform/app-shell.js +4 -4
  82. package/dist/platform/app-shell.mjs +3 -3
  83. package/dist/platform/auth/index.js +22 -22
  84. package/dist/platform/auth/index.mjs +4 -4
  85. package/dist/platform/billing/index.js +4 -4
  86. package/dist/platform/billing/index.mjs +3 -3
  87. package/dist/platform/impersonation/index.js +4 -4
  88. package/dist/platform/impersonation/index.mjs +3 -3
  89. package/dist/platform/index.js +82 -82
  90. package/dist/platform/index.mjs +18 -18
  91. package/dist/platform/pages/index.d.mts +3 -3
  92. package/dist/platform/pages/index.d.ts +3 -3
  93. package/dist/platform/pages/index.js +734 -701
  94. package/dist/platform/pages/index.js.map +1 -1
  95. package/dist/platform/pages/index.mjs +452 -419
  96. package/dist/platform/pages/index.mjs.map +1 -1
  97. package/dist/platform/settings/index.js +7 -7
  98. package/dist/platform/settings/index.mjs +6 -6
  99. package/dist/platform/workflow-api-client.d.mts +1 -1
  100. package/dist/platform/workflow-api-client.d.ts +1 -1
  101. package/dist/platform/workflow-api-client.js +65 -61
  102. package/dist/platform/workflow-api-client.mjs +1 -1
  103. package/dist/platform/workflow-canvas-shell.js +5 -5
  104. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  105. package/dist/{rule-form-BYJzyork.d.mts → rule-form-BkKCY8Tc.d.mts} +8 -2
  106. package/dist/{rule-form-BYJzyork.d.ts → rule-form-CBD8wlrw.d.ts} +8 -2
  107. package/dist/{workflow-api-client-CpFl3WcG.d.mts → workflow-api-client-D9_0Spdz.d.mts} +16 -1
  108. package/dist/{workflow-api-client-uLICOanv.d.ts → workflow-api-client-E1QFRgeP.d.ts} +16 -1
  109. package/package.json +1 -1
  110. package/dist/chunk-5KI7FB3E.mjs.map +0 -1
  111. package/dist/chunk-5U43K6G3.mjs.map +0 -1
  112. package/dist/chunk-A256OE5E.mjs.map +0 -1
  113. package/dist/chunk-EC34PGUO.js.map +0 -1
  114. package/dist/chunk-LVR4SR65.js.map +0 -1
  115. package/dist/chunk-RHRJXK5R.mjs.map +0 -1
  116. package/dist/chunk-SY4MUT5V.js.map +0 -1
  117. package/dist/chunk-YSYEV2Z6.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
5
- var chunkSY4MUT5V_js = require('./chunk-SY4MUT5V.js');
5
+ var chunkZUU7G3PC_js = require('./chunk-ZUU7G3PC.js');
6
6
  var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
7
7
  var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
8
8
  var chunkS7KHTUHA_js = require('./chunk-S7KHTUHA.js');
@@ -12,12 +12,12 @@ var HeroIcons = require('@heroicons/react/24/outline');
12
12
  var jsxRuntime = require('react/jsx-runtime');
13
13
  var solid = require('@heroicons/react/20/solid');
14
14
  var Headless3 = require('@headlessui/react');
15
- var solid$1 = require('@heroicons/react/24/solid');
16
15
  var Popover = require('@radix-ui/react-popover');
17
16
  var clsx4 = require('clsx');
18
17
  var reactDom = require('react-dom');
19
18
  var dateFns = require('date-fns');
20
19
  var locale = require('date-fns/locale');
20
+ var solid$1 = require('@heroicons/react/24/solid');
21
21
  var reactTransitionProgress = require('react-transition-progress');
22
22
  var lucideReact = require('lucide-react');
23
23
  var d3Geo = require('d3-geo');
@@ -1800,94 +1800,84 @@ var StatusBadge = React9.forwardRef(function StatusBadge2({ status, label, size
1800
1800
  }
1801
1801
  );
1802
1802
  });
1803
- function classNames(...classes) {
1804
- return classes.filter(Boolean).join(" ");
1805
- }
1806
- function StepTimeline({
1803
+ var accentStyles = {
1804
+ indigo: {
1805
+ currentPill: "bg-indigo-500/15 text-indigo-700 dark:bg-indigo-500/25 dark:text-indigo-300",
1806
+ completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
1807
+ currentDot: "bg-indigo-500 text-white",
1808
+ completeDot: "bg-emerald-500 text-white",
1809
+ connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
1810
+ },
1811
+ blue: {
1812
+ currentPill: "bg-blue-500/15 text-blue-700 dark:bg-blue-500/25 dark:text-blue-300",
1813
+ completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
1814
+ currentDot: "bg-blue-500 text-white",
1815
+ completeDot: "bg-emerald-500 text-white",
1816
+ connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
1817
+ },
1818
+ emerald: {
1819
+ currentPill: "bg-emerald-500/15 text-emerald-700 dark:bg-emerald-500/25 dark:text-emerald-300",
1820
+ completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
1821
+ currentDot: "bg-emerald-500 text-white",
1822
+ completeDot: "bg-emerald-500 text-white",
1823
+ connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
1824
+ },
1825
+ violet: {
1826
+ currentPill: "bg-violet-500/15 text-violet-700 dark:bg-violet-500/25 dark:text-violet-300",
1827
+ completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
1828
+ currentDot: "bg-violet-500 text-white",
1829
+ completeDot: "bg-emerald-500 text-white",
1830
+ connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
1831
+ }
1832
+ };
1833
+ var upcomingPill = "bg-slate-500/8 text-slate-400 dark:bg-white/5 dark:text-white/30";
1834
+ var upcomingDot = "bg-slate-200 text-slate-400 dark:bg-white/10 dark:text-white/30";
1835
+ var upcomingConnector = "bg-slate-200 dark:bg-white/10";
1836
+ function StepIndicator({
1807
1837
  steps,
1838
+ currentStep,
1839
+ onStepChange,
1808
1840
  progressLabel,
1809
- onStepClick,
1810
- renderCompleteContent
1841
+ accent = "indigo"
1811
1842
  }) {
1812
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:border-t lg:border-b lg:border-gray-200 dark:lg:border-white/15", children: /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": progressLabel, className: "mx-auto max-w-7xl px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsx(
1813
- "ol",
1814
- {
1815
- role: "list",
1816
- className: "overflow-hidden rounded-md lg:flex lg:rounded-none lg:border-r lg:border-l lg:border-gray-200 dark:lg:border-white/15",
1817
- children: steps.map((step, stepIndex) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "relative overflow-hidden lg:flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
1843
+ const tone = accentStyles[accent];
1844
+ return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": progressLabel, className: "flex items-center gap-2", children: steps.map((step, index) => {
1845
+ const isCompleted = index < currentStep;
1846
+ const isCurrent = index === currentStep;
1847
+ const isClickable = isCompleted && Boolean(onStepChange);
1848
+ const pillTone = isCurrent ? tone.currentPill : isCompleted ? tone.completePill : upcomingPill;
1849
+ const dotTone = isCurrent ? tone.currentDot : isCompleted ? tone.completeDot : upcomingDot;
1850
+ const connectorTone = index < currentStep ? tone.connector : upcomingConnector;
1851
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 items-center gap-2", children: [
1852
+ /* @__PURE__ */ jsxRuntime.jsxs(
1818
1853
  "button",
1819
1854
  {
1820
1855
  type: "button",
1821
- onClick: () => onStepClick?.(stepIndex),
1822
- disabled: step.status === "upcoming",
1823
- className: classNames(
1824
- step.status === "upcoming" ? "cursor-not-allowed" : "cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800",
1825
- stepIndex === 0 ? "rounded-t-md border-b-0" : "",
1826
- stepIndex === steps.length - 1 ? "rounded-b-md border-t-0" : "",
1827
- "w-full overflow-hidden border border-gray-200 text-left transition-colors lg:border-0 dark:border-white/15"
1828
- ),
1856
+ onClick: isClickable ? () => onStepChange?.(index) : void 0,
1857
+ disabled: !isClickable && !isCurrent,
1858
+ "aria-current": isCurrent ? "step" : void 0,
1859
+ className: `flex items-center gap-2 rounded-full px-3 py-1.5 text-xs font-medium transition-all duration-200 backdrop-blur-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${pillTone} ${isClickable ? "cursor-pointer" : ""}`,
1829
1860
  children: [
1830
- step.status === "complete" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group", children: [
1831
- /* @__PURE__ */ jsxRuntime.jsx(
1832
- "span",
1833
- {
1834
- "aria-hidden": "true",
1835
- className: "absolute top-0 left-0 h-full w-1 bg-transparent group-hover:bg-gray-200 lg:top-auto lg:bottom-0 lg:h-1 lg:w-full dark:group-hover:bg-white/20"
1836
- }
1837
- ),
1838
- renderCompleteContent ? renderCompleteContent(step) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: classNames(stepIndex !== 0 ? "lg:pl-9" : "", "flex items-start px-6 py-5 text-sm font-medium"), children: [
1839
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-9 w-9 items-center justify-center rounded-full bg-blue-600 dark:bg-blue-500", children: /* @__PURE__ */ jsxRuntime.jsx(solid$1.CheckIcon, { "aria-hidden": "true", className: "h-5 w-5 text-white" }) }) }),
1840
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "mt-0.5 ml-4 flex min-w-0 flex-col", children: [
1841
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-900 dark:text-white", children: step.name }),
1842
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-500 dark:text-gray-400", children: step.description })
1843
- ] })
1844
- ] })
1845
- ] }) : step.status === "current" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { "aria-current": "step", children: [
1846
- /* @__PURE__ */ jsxRuntime.jsx(
1847
- "span",
1848
- {
1849
- "aria-hidden": "true",
1850
- className: "absolute top-0 left-0 h-full w-1 bg-blue-600 lg:top-auto lg:bottom-0 lg:h-1 lg:w-full dark:bg-blue-500"
1851
- }
1852
- ),
1853
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: classNames(stepIndex !== 0 ? "lg:pl-9" : "", "flex items-start px-6 py-5 text-sm font-medium"), children: [
1854
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-10 w-10 items-center justify-center rounded-full border-2 border-blue-600 dark:border-blue-500", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-blue-600 dark:text-blue-400", children: step.id }) }) }),
1855
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "mt-0.5 ml-4 flex min-w-0 flex-col", children: [
1856
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-blue-600 dark:text-blue-400", children: step.name }),
1857
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-500 dark:text-gray-400", children: step.description })
1858
- ] })
1859
- ] })
1860
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group", children: [
1861
- /* @__PURE__ */ jsxRuntime.jsx(
1862
- "span",
1863
- {
1864
- "aria-hidden": "true",
1865
- className: "absolute top-0 left-0 h-full w-1 bg-transparent group-hover:bg-gray-200 lg:top-auto lg:bottom-0 lg:h-1 lg:w-full dark:group-hover:bg-white/20"
1866
- }
1867
- ),
1868
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: classNames(stepIndex !== 0 ? "lg:pl-9" : "", "flex items-start px-6 py-5 text-sm font-medium"), children: [
1869
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-10 w-10 items-center justify-center rounded-full border-2 border-gray-300 dark:border-white/15", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500 dark:text-gray-400", children: step.id }) }) }),
1870
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "mt-0.5 ml-4 flex min-w-0 flex-col", children: [
1871
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-500 dark:text-gray-400", children: step.name }),
1872
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-500 dark:text-gray-400", children: step.description })
1873
- ] })
1874
- ] })
1875
- ] }),
1876
- stepIndex !== 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", className: "absolute inset-0 top-0 left-0 hidden w-3 lg:block", children: /* @__PURE__ */ jsxRuntime.jsx(
1877
- "svg",
1861
+ /* @__PURE__ */ jsxRuntime.jsx(
1862
+ "span",
1878
1863
  {
1879
- fill: "none",
1880
- viewBox: "0 0 12 82",
1881
- preserveAspectRatio: "none",
1882
- className: "h-full w-full text-gray-200 dark:text-white/15",
1883
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0.5 0V31L10.5 41L0.5 51V82", stroke: "currentColor", vectorEffect: "non-scaling-stroke" })
1864
+ className: `flex h-5 w-5 items-center justify-center rounded-full text-[10px] font-bold ${dotTone}`,
1865
+ children: step.icon ? step.icon : isCompleted ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckIcon, { className: "h-3 w-3" }) : index + 1
1884
1866
  }
1885
- ) }) : null
1867
+ ),
1868
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: step.title })
1886
1869
  ]
1887
1870
  }
1888
- ) }, step.id))
1889
- }
1890
- ) }) });
1871
+ ),
1872
+ index < steps.length - 1 ? /* @__PURE__ */ jsxRuntime.jsx(
1873
+ "div",
1874
+ {
1875
+ "aria-hidden": true,
1876
+ className: `h-px flex-1 transition-colors duration-200 ${connectorTone}`
1877
+ }
1878
+ ) : null
1879
+ ] }, step.id);
1880
+ }) });
1891
1881
  }
1892
1882
  function AgentAnalysisCard({ name, avatar, duration: duration2, output }) {
1893
1883
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface rounded-xl p-3 transition-all duration-300", children: [
@@ -2099,10 +2089,12 @@ function LifecycleSection({ data }) {
2099
2089
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-zinc-950/10 bg-white p-4 dark:border-white/10 dark:bg-zinc-900", children: [
2100
2090
  data.title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-3 text-sm font-semibold text-slate-900 dark:text-slate-100", children: data.title }),
2101
2091
  /* @__PURE__ */ jsxRuntime.jsx(
2102
- StepTimeline,
2092
+ StepIndicator,
2103
2093
  {
2104
- steps: data.steps,
2105
- progressLabel: data.progressLabel ?? data.title ?? "Progress"
2094
+ accent: "indigo",
2095
+ currentStep: data.steps.filter((step) => step.status === "complete").length,
2096
+ progressLabel: data.progressLabel ?? data.title ?? "Progress",
2097
+ steps: data.steps.map((step) => ({ id: step.id, title: step.name }))
2106
2098
  }
2107
2099
  )
2108
2100
  ] });
@@ -2278,7 +2270,7 @@ function InputRequestForm({
2278
2270
  try {
2279
2271
  const payload = decision === "approved" ? sanitizeForSubmit(values) : void 0;
2280
2272
  const reason = decision === "rejected" ? typeof values.reason === "string" ? values.reason : "rejected" : void 0;
2281
- await chunkSY4MUT5V_js.submitApproval(runId, data.nodeId, {
2273
+ await chunkZUU7G3PC_js.submitApproval(runId, data.nodeId, {
2282
2274
  approved: decision === "approved",
2283
2275
  ...payload ? { payload } : {},
2284
2276
  ...reason ? { reason } : {}
@@ -2526,7 +2518,7 @@ function StreamingDashboard({
2526
2518
  if (phase === "completed" || phase === "failed" || phase === "cancelled") {
2527
2519
  return;
2528
2520
  }
2529
- const unsubscribe = chunkSY4MUT5V_js.subscribeToRunEvents(
2521
+ const unsubscribe = chunkZUU7G3PC_js.subscribeToRunEvents(
2530
2522
  runId,
2531
2523
  (event) => handleEvent(event),
2532
2524
  (err) => {
@@ -6606,31 +6598,102 @@ function DialogActions({
6606
6598
  }
6607
6599
  );
6608
6600
  }
6601
+ var DEFAULT_UNSELECTED_STYLE = {
6602
+ bg: "bg-slate-500/15",
6603
+ text: "text-slate-700 dark:text-slate-200"
6604
+ };
6605
+ function slugify(raw) {
6606
+ return raw.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
6607
+ }
6609
6608
  function ChipPicker({
6610
6609
  items,
6611
6610
  selectedIds,
6612
6611
  onChange,
6612
+ allowCustom = false,
6613
+ onItemsChange,
6614
+ unselectedStyle,
6613
6615
  isLoading = false,
6614
6616
  showActions = true,
6615
6617
  loadingLabel = "Loading...",
6616
6618
  selectedLabel = "selected",
6617
6619
  selectAllLabel = "Select all",
6618
6620
  clearLabel = "Clear",
6619
- emptyLabel = "No items configured"
6621
+ emptyLabel = "No items configured",
6622
+ addPlaceholder = "Add\u2026",
6623
+ addAriaLabel = "Add new item"
6620
6624
  }) {
6621
- const toggleItem = (itemId) => {
6625
+ const groupId = React9.useId();
6626
+ const inputId = `${groupId}-add`;
6627
+ const [draft, setDraft] = React9.useState("");
6628
+ const styleForNew = unselectedStyle ?? DEFAULT_UNSELECTED_STYLE;
6629
+ const toggleItem = React9.useCallback((itemId) => {
6622
6630
  if (selectedIds.includes(itemId)) {
6623
6631
  onChange(selectedIds.filter((id) => id !== itemId));
6624
6632
  } else {
6625
6633
  onChange([...selectedIds, itemId]);
6626
6634
  }
6627
- };
6628
- const selectAll = () => {
6635
+ }, [selectedIds, onChange]);
6636
+ const selectAll = React9.useCallback(() => {
6629
6637
  onChange(items.map((item) => item.id));
6630
- };
6631
- const clearAll = () => {
6638
+ }, [items, onChange]);
6639
+ const clearAll = React9.useCallback(() => {
6632
6640
  onChange([]);
6633
- };
6641
+ }, [onChange]);
6642
+ const existingIds = React9.useMemo(() => new Set(items.map((i) => i.id)), [items]);
6643
+ const commitDraft = React9.useCallback((raw) => {
6644
+ const trimmed = raw.trim();
6645
+ if (!trimmed) {
6646
+ setDraft("");
6647
+ return;
6648
+ }
6649
+ if (!allowCustom || !onItemsChange) return;
6650
+ const candidates = trimmed.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
6651
+ const additions = [];
6652
+ const addedIds = [];
6653
+ for (const candidate of candidates) {
6654
+ const slug = slugify(candidate) || `item-${additions.length + items.length}`;
6655
+ if (existingIds.has(slug) || additions.some((a) => a.id === slug)) {
6656
+ if (!selectedIds.includes(slug)) addedIds.push(slug);
6657
+ continue;
6658
+ }
6659
+ additions.push({
6660
+ id: slug,
6661
+ name: candidate,
6662
+ style: styleForNew,
6663
+ userCreated: true
6664
+ });
6665
+ addedIds.push(slug);
6666
+ }
6667
+ if (additions.length > 0) {
6668
+ onItemsChange([...items, ...additions]);
6669
+ }
6670
+ if (addedIds.length > 0) {
6671
+ const nextSelected = Array.from(/* @__PURE__ */ new Set([...selectedIds, ...addedIds]));
6672
+ onChange(nextSelected);
6673
+ }
6674
+ setDraft("");
6675
+ }, [allowCustom, onItemsChange, items, existingIds, selectedIds, onChange, styleForNew]);
6676
+ const removeUserCreated = React9.useCallback((itemId) => {
6677
+ if (!allowCustom || !onItemsChange) return;
6678
+ const target = items.find((i) => i.id === itemId);
6679
+ if (!target?.userCreated) return;
6680
+ onItemsChange(items.filter((i) => i.id !== itemId));
6681
+ if (selectedIds.includes(itemId)) {
6682
+ onChange(selectedIds.filter((id) => id !== itemId));
6683
+ }
6684
+ }, [allowCustom, onItemsChange, items, selectedIds, onChange]);
6685
+ const handleKeyDown = React9.useCallback((e) => {
6686
+ if (e.key === "Enter" || e.key === ",") {
6687
+ e.preventDefault();
6688
+ commitDraft(draft);
6689
+ } else if (e.key === "Backspace" && draft.length === 0) {
6690
+ const lastUserCreated = [...items].reverse().find((i) => i.userCreated);
6691
+ if (lastUserCreated) {
6692
+ e.preventDefault();
6693
+ removeUserCreated(lastUserCreated.id);
6694
+ }
6695
+ }
6696
+ }, [draft, commitDraft, items, removeUserCreated]);
6634
6697
  if (isLoading) {
6635
6698
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 text-center text-sm text-gray-500 dark:text-gray-400", children: loadingLabel });
6636
6699
  }
@@ -6663,31 +6726,77 @@ function ChipPicker({
6663
6726
  )
6664
6727
  ] })
6665
6728
  ] }),
6666
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: items.map((item) => {
6667
- const isSelected = selectedIds.includes(item.id);
6668
- const { style } = item;
6669
- return /* @__PURE__ */ jsxRuntime.jsxs(
6670
- "label",
6671
- {
6672
- className: `inline-flex cursor-pointer items-center gap-2 rounded-full border px-3 py-1.5 text-xs font-medium transition ${isSelected ? `${style.bg} ${style.text} border-transparent ring-2 ring-offset-1 ring-current` : "border-gray-200 bg-white/70 text-gray-700 hover:border-gray-300 dark:border-white/10 dark:bg-white/5 dark:text-gray-200"}`,
6673
- children: [
6729
+ /* @__PURE__ */ jsxRuntime.jsxs(
6730
+ "div",
6731
+ {
6732
+ className: "flex flex-wrap items-center gap-2",
6733
+ role: "group",
6734
+ "aria-multiselectable": "true",
6735
+ children: [
6736
+ items.map((item) => {
6737
+ const isSelected = selectedIds.includes(item.id);
6738
+ const { style } = item;
6739
+ return /* @__PURE__ */ jsxRuntime.jsxs(
6740
+ "span",
6741
+ {
6742
+ className: `inline-flex items-center gap-1.5 rounded-full border text-xs font-medium transition ${isSelected ? `${style.bg} ${style.text} border-transparent ring-2 ring-offset-1 ring-current` : "border-gray-200 bg-white/70 text-gray-700 hover:border-gray-300 dark:border-white/10 dark:bg-white/5 dark:text-gray-200"}`,
6743
+ children: [
6744
+ /* @__PURE__ */ jsxRuntime.jsxs(
6745
+ "label",
6746
+ {
6747
+ className: "inline-flex cursor-pointer items-center gap-2 rounded-full px-3 py-1.5",
6748
+ "aria-selected": isSelected,
6749
+ children: [
6750
+ /* @__PURE__ */ jsxRuntime.jsx(
6751
+ "input",
6752
+ {
6753
+ type: "checkbox",
6754
+ checked: isSelected,
6755
+ onChange: () => toggleItem(item.id),
6756
+ className: "sr-only"
6757
+ }
6758
+ ),
6759
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `inline-flex h-2 w-2 rounded-full ${isSelected ? "bg-current opacity-70" : style.bg}` }),
6760
+ item.abbreviation ? `${item.abbreviation} - ${item.name}` : item.name
6761
+ ]
6762
+ }
6763
+ ),
6764
+ allowCustom && item.userCreated && /* @__PURE__ */ jsxRuntime.jsx(
6765
+ "button",
6766
+ {
6767
+ type: "button",
6768
+ "aria-label": `Remove ${item.name}`,
6769
+ onClick: () => removeUserCreated(item.id),
6770
+ className: "liquid-surface mr-1 inline-flex h-5 w-5 items-center justify-center rounded-full text-current/70 hover:text-current focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70",
6771
+ children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.XMarkIcon, { className: "h-3 w-3" })
6772
+ }
6773
+ )
6774
+ ]
6775
+ },
6776
+ item.id
6777
+ );
6778
+ }),
6779
+ allowCustom && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 rounded-full border border-dashed border-slate-300 bg-white/50 px-2 py-1 text-xs dark:border-white/15 dark:bg-white/5", children: [
6780
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.PlusIcon, { className: "h-3 w-3 text-slate-500 dark:text-slate-400", "aria-hidden": "true" }),
6674
6781
  /* @__PURE__ */ jsxRuntime.jsx(
6675
6782
  "input",
6676
6783
  {
6677
- type: "checkbox",
6678
- checked: isSelected,
6679
- onChange: () => toggleItem(item.id),
6680
- className: "sr-only"
6784
+ id: inputId,
6785
+ type: "text",
6786
+ value: draft,
6787
+ onChange: (e) => setDraft(e.target.value),
6788
+ onKeyDown: handleKeyDown,
6789
+ onBlur: () => commitDraft(draft),
6790
+ placeholder: addPlaceholder,
6791
+ "aria-label": addAriaLabel,
6792
+ className: "min-w-[6rem] border-0 bg-transparent p-0 text-xs text-slate-800 placeholder:text-slate-400 focus:outline-none focus:ring-0 dark:text-slate-100 dark:placeholder:text-slate-500"
6681
6793
  }
6682
- ),
6683
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `inline-flex h-2 w-2 rounded-full ${isSelected ? "bg-current opacity-70" : style.bg}` }),
6684
- item.abbreviation ? `${item.abbreviation} - ${item.name}` : item.name
6685
- ]
6686
- },
6687
- item.id
6688
- );
6689
- }) }),
6690
- items.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-6 text-center text-sm text-gray-500 dark:text-gray-400", children: emptyLabel })
6794
+ )
6795
+ ] })
6796
+ ]
6797
+ }
6798
+ ),
6799
+ items.length === 0 && !allowCustom && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-6 text-center text-sm text-gray-500 dark:text-gray-400", children: emptyLabel })
6691
6800
  ] });
6692
6801
  }
6693
6802
  var DEFAULT_COPYABLE_CLASSNAME = "liquid-surface-strong text-gray-500 dark:text-gray-400";
@@ -7275,85 +7384,6 @@ function StepProgress({ steps, progressLabel, onStepClick }) {
7275
7384
  ) }, step.id);
7276
7385
  }) }) });
7277
7386
  }
7278
- var accentStyles = {
7279
- indigo: {
7280
- currentPill: "bg-indigo-500/15 text-indigo-700 dark:bg-indigo-500/25 dark:text-indigo-300",
7281
- completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
7282
- currentDot: "bg-indigo-500 text-white",
7283
- completeDot: "bg-emerald-500 text-white",
7284
- connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
7285
- },
7286
- blue: {
7287
- currentPill: "bg-blue-500/15 text-blue-700 dark:bg-blue-500/25 dark:text-blue-300",
7288
- completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
7289
- currentDot: "bg-blue-500 text-white",
7290
- completeDot: "bg-emerald-500 text-white",
7291
- connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
7292
- },
7293
- emerald: {
7294
- currentPill: "bg-emerald-500/15 text-emerald-700 dark:bg-emerald-500/25 dark:text-emerald-300",
7295
- completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
7296
- currentDot: "bg-emerald-500 text-white",
7297
- completeDot: "bg-emerald-500 text-white",
7298
- connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
7299
- },
7300
- violet: {
7301
- currentPill: "bg-violet-500/15 text-violet-700 dark:bg-violet-500/25 dark:text-violet-300",
7302
- completePill: "bg-emerald-500/10 text-emerald-700 hover:bg-emerald-500/20 dark:bg-emerald-500/20 dark:text-emerald-300",
7303
- currentDot: "bg-violet-500 text-white",
7304
- completeDot: "bg-emerald-500 text-white",
7305
- connector: "bg-emerald-500/30 dark:bg-emerald-500/20"
7306
- }
7307
- };
7308
- var upcomingPill = "bg-slate-500/8 text-slate-400 dark:bg-white/5 dark:text-white/30";
7309
- var upcomingDot = "bg-slate-200 text-slate-400 dark:bg-white/10 dark:text-white/30";
7310
- var upcomingConnector = "bg-slate-200 dark:bg-white/10";
7311
- function StepIndicator({
7312
- steps,
7313
- currentStep,
7314
- onStepChange,
7315
- progressLabel,
7316
- accent = "indigo"
7317
- }) {
7318
- const tone = accentStyles[accent];
7319
- return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": progressLabel, className: "flex items-center gap-2", children: steps.map((step, index) => {
7320
- const isCompleted = index < currentStep;
7321
- const isCurrent = index === currentStep;
7322
- const isClickable = isCompleted && Boolean(onStepChange);
7323
- const pillTone = isCurrent ? tone.currentPill : isCompleted ? tone.completePill : upcomingPill;
7324
- const dotTone = isCurrent ? tone.currentDot : isCompleted ? tone.completeDot : upcomingDot;
7325
- const connectorTone = index < currentStep ? tone.connector : upcomingConnector;
7326
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 items-center gap-2", children: [
7327
- /* @__PURE__ */ jsxRuntime.jsxs(
7328
- "button",
7329
- {
7330
- type: "button",
7331
- onClick: isClickable ? () => onStepChange?.(index) : void 0,
7332
- disabled: !isClickable && !isCurrent,
7333
- "aria-current": isCurrent ? "step" : void 0,
7334
- className: `flex items-center gap-2 rounded-full px-3 py-1.5 text-xs font-medium transition-all duration-200 backdrop-blur-sm focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${pillTone} ${isClickable ? "cursor-pointer" : ""}`,
7335
- children: [
7336
- /* @__PURE__ */ jsxRuntime.jsx(
7337
- "span",
7338
- {
7339
- className: `flex h-5 w-5 items-center justify-center rounded-full text-[10px] font-bold ${dotTone}`,
7340
- children: step.icon ? step.icon : isCompleted ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckIcon, { className: "h-3 w-3" }) : index + 1
7341
- }
7342
- ),
7343
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: step.title })
7344
- ]
7345
- }
7346
- ),
7347
- index < steps.length - 1 ? /* @__PURE__ */ jsxRuntime.jsx(
7348
- "div",
7349
- {
7350
- "aria-hidden": true,
7351
- className: `h-px flex-1 transition-colors duration-200 ${connectorTone}`
7352
- }
7353
- ) : null
7354
- ] }, step.id);
7355
- }) });
7356
- }
7357
7387
  function PageHeading({
7358
7388
  breadcrumbs,
7359
7389
  eyebrow,
@@ -8061,45 +8091,6 @@ function StepFormPage({
8061
8091
  ] })
8062
8092
  ] });
8063
8093
  }
8064
- var BACK_BUTTON_CLASSES = "flex-1 px-4 py-3 border border-white/45 dark:border-white/14 bg-white/80 dark:bg-white/5 backdrop-blur-sm text-gray-900 dark:text-white rounded-xl hover:bg-white/90 dark:hover:bg-white/10 disabled:opacity-50 transition-all duration-200 shadow-[inset_0_1px_0_rgba(255,255,255,0.88)]";
8065
- var CONTINUE_BUTTON_CLASSES = "flex-1 px-4 py-3 bg-gradient-to-r from-indigo-600 to-purple-600 hover:from-indigo-700 hover:to-purple-700 disabled:from-gray-400 disabled:to-gray-500 text-white font-semibold rounded-xl transition-all duration-200 shadow-lg shadow-indigo-500/25 disabled:shadow-none";
8066
- function StepNavigationButtons({
8067
- onBack,
8068
- isLoading,
8069
- backLabel,
8070
- continueLabel,
8071
- loadingLabel,
8072
- showSpinner = false,
8073
- type = "submit",
8074
- onContinue
8075
- }) {
8076
- const displayLabel = isLoading && loadingLabel ? loadingLabel : continueLabel;
8077
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: onBack ? "flex gap-4" : "", children: [
8078
- onBack && backLabel && /* @__PURE__ */ jsxRuntime.jsx(
8079
- "button",
8080
- {
8081
- type: "button",
8082
- onClick: onBack,
8083
- disabled: isLoading,
8084
- className: BACK_BUTTON_CLASSES,
8085
- children: backLabel
8086
- }
8087
- ),
8088
- /* @__PURE__ */ jsxRuntime.jsx(
8089
- "button",
8090
- {
8091
- type,
8092
- disabled: isLoading,
8093
- onClick: onContinue,
8094
- className: `${CONTINUE_BUTTON_CLASSES}${!onBack ? " w-full" : ""}`,
8095
- children: isLoading && showSpinner ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center justify-center gap-2", children: [
8096
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-4 w-4 animate-spin motion-reduce:animate-none rounded-full border-2 border-white border-t-transparent" }),
8097
- displayLabel
8098
- ] }) : displayLabel
8099
- }
8100
- )
8101
- ] });
8102
- }
8103
8094
  var COLOR_MAP = {
8104
8095
  blue: {
8105
8096
  activeGradient: "bg-gradient-to-br from-blue-500 to-blue-600 ring-2 ring-indigo-500/70 shadow-lg",
@@ -20460,9 +20451,7 @@ exports.StatusBadge = StatusBadge;
20460
20451
  exports.StatusToggle = StatusToggle;
20461
20452
  exports.StepFormPage = StepFormPage;
20462
20453
  exports.StepIndicator = StepIndicator;
20463
- exports.StepNavigationButtons = StepNavigationButtons;
20464
20454
  exports.StepProgress = StepProgress;
20465
- exports.StepTimeline = StepTimeline;
20466
20455
  exports.StreamingDashboard = StreamingDashboard;
20467
20456
  exports.Strong = Strong;
20468
20457
  exports.Subheading = Subheading;
@@ -20770,5 +20759,5 @@ exports.useSocialProviders = useSocialProviders;
20770
20759
  exports.validateDashboardSpec = validateDashboardSpec;
20771
20760
  exports.xScale = xScale;
20772
20761
  exports.yScale = yScale;
20773
- //# sourceMappingURL=chunk-LVR4SR65.js.map
20774
- //# sourceMappingURL=chunk-LVR4SR65.js.map
20762
+ //# sourceMappingURL=chunk-TIJXCRM4.js.map
20763
+ //# sourceMappingURL=chunk-TIJXCRM4.js.map