@datatechsolutions/ui 3.4.0 → 3.5.0

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 (169) hide show
  1. package/dist/astrlabe/index.js +108 -108
  2. package/dist/astrlabe/index.mjs +4 -4
  3. package/dist/astrlabe/workflow-canvas.js +4 -4
  4. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  5. package/dist/{chunk-SEYUYGER.mjs → chunk-2MJAHST4.mjs} +12 -11
  6. package/dist/chunk-2MJAHST4.mjs.map +1 -0
  7. package/dist/{chunk-SQ4KGLBZ.mjs → chunk-3OLYSMI5.mjs} +41 -7
  8. package/dist/chunk-3OLYSMI5.mjs.map +1 -0
  9. package/dist/{chunk-RLVOG5OQ.mjs → chunk-4PFU6A2B.mjs} +3 -3
  10. package/dist/{chunk-RLVOG5OQ.mjs.map → chunk-4PFU6A2B.mjs.map} +1 -1
  11. package/dist/{chunk-RFRXS4PC.mjs → chunk-5BEVTOZV.mjs} +4 -4
  12. package/dist/{chunk-RFRXS4PC.mjs.map → chunk-5BEVTOZV.mjs.map} +1 -1
  13. package/dist/{chunk-NCLZKVJK.js → chunk-5I7F7KZ6.js} +10 -10
  14. package/dist/{chunk-NCLZKVJK.js.map → chunk-5I7F7KZ6.js.map} +1 -1
  15. package/dist/{chunk-NAFWHJCM.mjs → chunk-6V3DUBOZ.mjs} +7 -7
  16. package/dist/{chunk-NAFWHJCM.mjs.map → chunk-6V3DUBOZ.mjs.map} +1 -1
  17. package/dist/{chunk-AL73YAV4.mjs → chunk-6W7VTZG6.mjs} +3 -3
  18. package/dist/{chunk-AL73YAV4.mjs.map → chunk-6W7VTZG6.mjs.map} +1 -1
  19. package/dist/{chunk-ERCDMBRT.js → chunk-74MHWEDC.js} +168 -167
  20. package/dist/chunk-74MHWEDC.js.map +1 -0
  21. package/dist/{chunk-CUWPLPVY.mjs → chunk-7CEZB3ZD.mjs} +3 -3
  22. package/dist/{chunk-CUWPLPVY.mjs.map → chunk-7CEZB3ZD.mjs.map} +1 -1
  23. package/dist/{chunk-QBFE7ABE.mjs → chunk-7UHV6A4C.mjs} +6 -6
  24. package/dist/{chunk-QBFE7ABE.mjs.map → chunk-7UHV6A4C.mjs.map} +1 -1
  25. package/dist/{chunk-TUQLZ4QD.js → chunk-A7FI4K7Z.js} +5 -5
  26. package/dist/{chunk-TUQLZ4QD.js.map → chunk-A7FI4K7Z.js.map} +1 -1
  27. package/dist/{chunk-RLLP7VQJ.js → chunk-AVM53A3Y.js} +63 -29
  28. package/dist/chunk-AVM53A3Y.js.map +1 -0
  29. package/dist/{chunk-FSBR4RCK.js → chunk-AWDH6WNA.js} +139 -109
  30. package/dist/chunk-AWDH6WNA.js.map +1 -0
  31. package/dist/{chunk-Y2AYFG4E.js → chunk-BVXATTTA.js} +4 -4
  32. package/dist/{chunk-Y2AYFG4E.js.map → chunk-BVXATTTA.js.map} +1 -1
  33. package/dist/{chunk-CF7GOUBQ.js → chunk-C4NRF2G2.js} +13 -13
  34. package/dist/{chunk-CF7GOUBQ.js.map → chunk-C4NRF2G2.js.map} +1 -1
  35. package/dist/{chunk-45QAUEYT.js → chunk-CY2MBKVG.js} +4 -4
  36. package/dist/{chunk-45QAUEYT.js.map → chunk-CY2MBKVG.js.map} +1 -1
  37. package/dist/{chunk-PGVZKMOA.js → chunk-FK3WDELF.js} +40 -40
  38. package/dist/{chunk-PGVZKMOA.js.map → chunk-FK3WDELF.js.map} +1 -1
  39. package/dist/{chunk-ZKSDDFHG.mjs → chunk-IOEQ2GET.mjs} +4 -4
  40. package/dist/{chunk-ZKSDDFHG.mjs.map → chunk-IOEQ2GET.mjs.map} +1 -1
  41. package/dist/{chunk-MO5FBVV3.js → chunk-NCDBNGIB.js} +62 -62
  42. package/dist/{chunk-MO5FBVV3.js.map → chunk-NCDBNGIB.js.map} +1 -1
  43. package/dist/{chunk-4GDWGWHY.mjs → chunk-NJ5RVWLA.mjs} +4 -4
  44. package/dist/{chunk-4GDWGWHY.mjs.map → chunk-NJ5RVWLA.mjs.map} +1 -1
  45. package/dist/{chunk-UJVDI66K.js → chunk-NKXQYFS7.js} +16 -16
  46. package/dist/{chunk-UJVDI66K.js.map → chunk-NKXQYFS7.js.map} +1 -1
  47. package/dist/{chunk-AGGOHPMZ.mjs → chunk-NOHHZ6FM.mjs} +139 -109
  48. package/dist/chunk-NOHHZ6FM.mjs.map +1 -0
  49. package/dist/{chunk-VV6SYMPM.mjs → chunk-OASC7NYV.mjs} +3 -3
  50. package/dist/{chunk-VV6SYMPM.mjs.map → chunk-OASC7NYV.mjs.map} +1 -1
  51. package/dist/{chunk-6MBWKOPF.js → chunk-P43PX75J.js} +33 -33
  52. package/dist/{chunk-6MBWKOPF.js.map → chunk-P43PX75J.js.map} +1 -1
  53. package/dist/{chunk-BW67WFHT.mjs → chunk-QLFSJ6HK.mjs} +3 -3
  54. package/dist/{chunk-BW67WFHT.mjs.map → chunk-QLFSJ6HK.mjs.map} +1 -1
  55. package/dist/{chunk-X3GW7UPN.mjs → chunk-QPSHM2JQ.mjs} +4 -4
  56. package/dist/{chunk-X3GW7UPN.mjs.map → chunk-QPSHM2JQ.mjs.map} +1 -1
  57. package/dist/{chunk-M7KSEUZR.js → chunk-QSMPKL27.js} +74 -74
  58. package/dist/{chunk-M7KSEUZR.js.map → chunk-QSMPKL27.js.map} +1 -1
  59. package/dist/{chunk-IDEM3DYF.mjs → chunk-UHMAKUON.mjs} +3 -3
  60. package/dist/{chunk-IDEM3DYF.mjs.map → chunk-UHMAKUON.mjs.map} +1 -1
  61. package/dist/{chunk-YV7F7IXG.js → chunk-V5VBYOF5.js} +36 -36
  62. package/dist/{chunk-YV7F7IXG.js.map → chunk-V5VBYOF5.js.map} +1 -1
  63. package/dist/{chunk-4ICEQJH4.js → chunk-VMGNQFRO.js} +53 -53
  64. package/dist/{chunk-4ICEQJH4.js.map → chunk-VMGNQFRO.js.map} +1 -1
  65. package/dist/{chunk-UE2RDQIK.js → chunk-Z7VY5M4T.js} +77 -77
  66. package/dist/{chunk-UE2RDQIK.js.map → chunk-Z7VY5M4T.js.map} +1 -1
  67. package/dist/{chunk-NVQWHJQH.mjs → chunk-ZM2Q2SMC.mjs} +3 -3
  68. package/dist/{chunk-NVQWHJQH.mjs.map → chunk-ZM2Q2SMC.mjs.map} +1 -1
  69. package/dist/index.js +721 -721
  70. package/dist/index.mjs +2 -2
  71. package/dist/platform/admin/index.js +11 -11
  72. package/dist/platform/admin/index.mjs +5 -5
  73. package/dist/platform/agents-workspace.js +7 -7
  74. package/dist/platform/agents-workspace.mjs +6 -6
  75. package/dist/platform/app-shell.js +4 -4
  76. package/dist/platform/app-shell.mjs +3 -3
  77. package/dist/platform/auth/index.js +28 -28
  78. package/dist/platform/auth/index.mjs +5 -5
  79. package/dist/platform/billing/index.js +4 -4
  80. package/dist/platform/billing/index.mjs +3 -3
  81. package/dist/platform/impersonation/index.js +4 -4
  82. package/dist/platform/impersonation/index.mjs +3 -3
  83. package/dist/platform/index.js +89 -89
  84. package/dist/platform/index.mjs +19 -19
  85. package/dist/platform/pages/index.js +318 -202
  86. package/dist/platform/pages/index.js.map +1 -1
  87. package/dist/platform/pages/index.mjs +144 -28
  88. package/dist/platform/pages/index.mjs.map +1 -1
  89. package/dist/platform/settings/index.js +8 -8
  90. package/dist/platform/settings/index.mjs +7 -7
  91. package/dist/platform/workflow-canvas-shell.js +5 -5
  92. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  93. package/package.json +1 -1
  94. package/dist/astrlabe/contracts.d.mts +0 -517
  95. package/dist/astrlabe/contracts.d.ts +0 -517
  96. package/dist/astrlabe/graph-node.d.mts +0 -28
  97. package/dist/astrlabe/graph-node.d.ts +0 -28
  98. package/dist/astrlabe/index.d.mts +0 -743
  99. package/dist/astrlabe/index.d.ts +0 -743
  100. package/dist/astrlabe/utils.d.mts +0 -60
  101. package/dist/astrlabe/utils.d.ts +0 -60
  102. package/dist/astrlabe/workflow-canvas.d.mts +0 -6
  103. package/dist/astrlabe/workflow-canvas.d.ts +0 -6
  104. package/dist/astrlabe/workflow-preview-canvas.d.mts +0 -10
  105. package/dist/astrlabe/workflow-preview-canvas.d.ts +0 -10
  106. package/dist/billing-panel-DsHhhJqG.d.mts +0 -18
  107. package/dist/billing-panel-DsHhhJqG.d.ts +0 -18
  108. package/dist/brand/index.d.mts +0 -71
  109. package/dist/brand/index.d.ts +0 -71
  110. package/dist/chunk-AGGOHPMZ.mjs.map +0 -1
  111. package/dist/chunk-ERCDMBRT.js.map +0 -1
  112. package/dist/chunk-FSBR4RCK.js.map +0 -1
  113. package/dist/chunk-RLLP7VQJ.js.map +0 -1
  114. package/dist/chunk-SEYUYGER.mjs.map +0 -1
  115. package/dist/chunk-SQ4KGLBZ.mjs.map +0 -1
  116. package/dist/dynamic-island-confirm-BKsZkAEP.d.mts +0 -17
  117. package/dist/dynamic-island-confirm-BKsZkAEP.d.ts +0 -17
  118. package/dist/index-BNRGVAS5.d.mts +0 -222
  119. package/dist/index-BoebbJ44.d.mts +0 -49
  120. package/dist/index-BoebbJ44.d.ts +0 -49
  121. package/dist/index-CnCY-b5V.d.ts +0 -222
  122. package/dist/index.d.mts +0 -5263
  123. package/dist/index.d.ts +0 -5263
  124. package/dist/layout-engine-YZcVr20M.d.mts +0 -19
  125. package/dist/layout-engine-YZcVr20M.d.ts +0 -19
  126. package/dist/lib/i18n-context.d.mts +0 -36
  127. package/dist/lib/i18n-context.d.ts +0 -36
  128. package/dist/lib/router-context.d.mts +0 -35
  129. package/dist/lib/router-context.d.ts +0 -35
  130. package/dist/navigation-BiWVffAN.d.mts +0 -49
  131. package/dist/navigation-BiWVffAN.d.ts +0 -49
  132. package/dist/platform/admin/index.d.mts +0 -17
  133. package/dist/platform/admin/index.d.ts +0 -17
  134. package/dist/platform/agents-workspace.d.mts +0 -19
  135. package/dist/platform/agents-workspace.d.ts +0 -19
  136. package/dist/platform/app-shell.d.mts +0 -58
  137. package/dist/platform/app-shell.d.ts +0 -58
  138. package/dist/platform/auth/index.d.mts +0 -73
  139. package/dist/platform/auth/index.d.ts +0 -73
  140. package/dist/platform/billing/index.d.mts +0 -29
  141. package/dist/platform/billing/index.d.ts +0 -29
  142. package/dist/platform/impersonation/index.d.mts +0 -19
  143. package/dist/platform/impersonation/index.d.ts +0 -19
  144. package/dist/platform/index.d.mts +0 -188
  145. package/dist/platform/index.d.ts +0 -188
  146. package/dist/platform/pages/index.d.mts +0 -432
  147. package/dist/platform/pages/index.d.ts +0 -432
  148. package/dist/platform/rbac.d.mts +0 -42
  149. package/dist/platform/rbac.d.ts +0 -42
  150. package/dist/platform/settings/index.d.mts +0 -31
  151. package/dist/platform/settings/index.d.ts +0 -31
  152. package/dist/platform/telemetry/index.d.mts +0 -51
  153. package/dist/platform/telemetry/index.d.ts +0 -51
  154. package/dist/platform/utils/index.d.mts +0 -32
  155. package/dist/platform/utils/index.d.ts +0 -32
  156. package/dist/platform/windsock-admin-client.d.mts +0 -57
  157. package/dist/platform/windsock-admin-client.d.ts +0 -57
  158. package/dist/platform/workflow-api-client.d.mts +0 -6
  159. package/dist/platform/workflow-api-client.d.ts +0 -6
  160. package/dist/platform/workflow-canvas-shell.d.mts +0 -18
  161. package/dist/platform/workflow-canvas-shell.d.ts +0 -18
  162. package/dist/rule-form-BYJzyork.d.mts +0 -128
  163. package/dist/rule-form-BYJzyork.d.ts +0 -128
  164. package/dist/workflow-api-client-CpFl3WcG.d.mts +0 -468
  165. package/dist/workflow-api-client-uLICOanv.d.ts +0 -468
  166. package/dist/workflow-canvas--qaYKuMm.d.ts +0 -113
  167. package/dist/workflow-canvas-B80fmD_n.d.mts +0 -113
  168. package/dist/workflow-store-o17I6L6A.d.ts +0 -79
  169. package/dist/workflow-store-ppVHdMZi.d.mts +0 -79
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkM7KSEUZR_js = require('./chunk-M7KSEUZR.js');
4
+ var chunkQSMPKL27_js = require('./chunk-QSMPKL27.js');
5
5
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
8
8
  function WorkflowCanvasShell({ graph, messages }) {
9
9
  const locale = chunkYXN2K77G_js.useLocale();
10
10
  return /* @__PURE__ */ jsxRuntime.jsx(
11
- chunkM7KSEUZR_js.Workspace,
11
+ chunkQSMPKL27_js.Workspace,
12
12
  {
13
13
  initialGraph: graph,
14
14
  locale,
@@ -18,5 +18,5 @@ function WorkflowCanvasShell({ graph, messages }) {
18
18
  }
19
19
 
20
20
  exports.WorkflowCanvasShell = WorkflowCanvasShell;
21
- //# sourceMappingURL=chunk-Y2AYFG4E.js.map
22
- //# sourceMappingURL=chunk-Y2AYFG4E.js.map
21
+ //# sourceMappingURL=chunk-BVXATTTA.js.map
22
+ //# sourceMappingURL=chunk-BVXATTTA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":["useLocale","jsx","Workspace"],"mappings":";;;;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAASA,0BAAA,EAAU;AACzB,EAAA,uBACEC,cAAA;AAAA,IAACC,0BAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-Y2AYFG4E.js","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":["useLocale","jsx","Workspace"],"mappings":";;;;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAASA,0BAAA,EAAU;AACzB,EAAA,uBACEC,cAAA;AAAA,IAACC,0BAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-BVXATTTA.js","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk6MBWKOPF_js = require('./chunk-6MBWKOPF.js');
5
- var chunkMO5FBVV3_js = require('./chunk-MO5FBVV3.js');
6
- var chunkUJVDI66K_js = require('./chunk-UJVDI66K.js');
7
- var chunkFSBR4RCK_js = require('./chunk-FSBR4RCK.js');
4
+ var chunkP43PX75J_js = require('./chunk-P43PX75J.js');
5
+ var chunkNCDBNGIB_js = require('./chunk-NCDBNGIB.js');
6
+ var chunkNKXQYFS7_js = require('./chunk-NKXQYFS7.js');
7
+ var chunkAWDH6WNA_js = require('./chunk-AWDH6WNA.js');
8
8
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
9
9
  var react = require('react');
10
10
  var jsxRuntime = require('react/jsx-runtime');
@@ -18,7 +18,7 @@ function PlatformSettings({
18
18
  billing
19
19
  }) {
20
20
  const t = chunkYXN2K77G_js.useTranslations("windsock");
21
- const { status } = chunkFSBR4RCK_js.useAuth();
21
+ const { status } = chunkAWDH6WNA_js.useAuth();
22
22
  const visibleSections = react.useMemo(() => {
23
23
  return sections.filter((section) => {
24
24
  if (section === "organization") {
@@ -54,7 +54,7 @@ function PlatformSettings({
54
54
  };
55
55
  }, [activeSection, adminClient, organizationId, organization?.id]);
56
56
  if (status === "loading") {
57
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.InlineSpinner, {}) });
57
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx(chunkAWDH6WNA_js.InlineSpinner, {}) });
58
58
  }
59
59
  if (status !== "authenticated") {
60
60
  return null;
@@ -68,7 +68,7 @@ function PlatformSettings({
68
68
  }));
69
69
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
70
70
  visibleSections.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
71
- chunkFSBR4RCK_js.SegmentedControl,
71
+ chunkAWDH6WNA_js.SegmentedControl,
72
72
  {
73
73
  segments,
74
74
  value: activeSection,
@@ -76,9 +76,9 @@ function PlatformSettings({
76
76
  fullWidth: true
77
77
  }
78
78
  ),
79
- activeSection === "account" && /* @__PURE__ */ jsxRuntime.jsx(chunkMO5FBVV3_js.UserProfile, {}),
79
+ activeSection === "account" && /* @__PURE__ */ jsxRuntime.jsx(chunkNCDBNGIB_js.UserProfile, {}),
80
80
  activeSection === "organization" && adminClient && organizationId && (organization ? /* @__PURE__ */ jsxRuntime.jsx(
81
- chunk6MBWKOPF_js.AdminOrganizationDetail,
81
+ chunkP43PX75J_js.AdminOrganizationDetail,
82
82
  {
83
83
  client: adminClient,
84
84
  organization
@@ -90,11 +90,11 @@ function PlatformSettings({
90
90
  className: "rounded-xl border border-red-300/40 bg-red-50/80 px-4 py-3 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-300",
91
91
  children: orgLoadError
92
92
  }
93
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.InlineSpinner, {}) })),
94
- activeSection === "billing" && /* @__PURE__ */ jsxRuntime.jsx(chunkUJVDI66K_js.BillingPanel, { ...billing })
93
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx(chunkAWDH6WNA_js.InlineSpinner, {}) })),
94
+ activeSection === "billing" && /* @__PURE__ */ jsxRuntime.jsx(chunkNKXQYFS7_js.BillingPanel, { ...billing })
95
95
  ] });
96
96
  }
97
97
 
98
98
  exports.PlatformSettings = PlatformSettings;
99
- //# sourceMappingURL=chunk-CF7GOUBQ.js.map
100
- //# sourceMappingURL=chunk-CF7GOUBQ.js.map
99
+ //# sourceMappingURL=chunk-C4NRF2G2.js.map
100
+ //# sourceMappingURL=chunk-C4NRF2G2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/settings/platform-settings.tsx"],"names":["useTranslations","useAuth","useMemo","useState","useEffect","jsx","InlineSpinner","jsxs","SegmentedControl","UserProfile","AdminOrganizationDetail","BillingPanel"],"mappings":"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","file":"chunk-CF7GOUBQ.js","sourcesContent":["// =============================================================================\n// @datatechsolutions/windsock/ui — PlatformSettings\n// Unified settings shell consumed by every product (astrlabe, kori).\n// Composes existing building blocks:\n// - `<UserProfile>` — Profile / Security / Sessions / Linked accounts\n// - `<AdminOrganizationDetail>` — Members / Invitations / Domains\n// - `<BillingPanel>` — Current subscription + plan catalogue\n// Apps mount this at their `/settings` route; feature toggles hide sections\n// that a given user's role cannot access.\n// =============================================================================\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { SegmentedControl, InlineSpinner } from '@ui/index'\nimport type { AdminClient, AuthOrganization } from '@datatechsolutions/shared-domain'\n\nimport { useAuth } from '../../_auth'\nimport { UserProfile } from '../auth/user-profile'\nimport { AdminOrganizationDetail } from '../admin/admin-organization-detail'\nimport { BillingPanel, type BillingPanelProps } from '../billing/billing-panel'\n\nexport type PlatformSettingsSection = 'account' | 'organization' | 'billing'\n\nexport interface PlatformSettingsProps {\n /**\n * Sections to surface to the current user. The host app is responsible for\n * picking the right set based on RBAC — e.g. hide `organization` for users\n * without `org:manage` and hide `billing` for users without `billing:read`.\n * Defaults to all three.\n */\n sections?: PlatformSettingsSection[]\n /** Starting section. Defaults to the first item in `sections`. */\n defaultSection?: PlatformSettingsSection\n /**\n * Windsock admin API client. Required when `organization` is in `sections`.\n * Create it once with `createAdminClient({ issuer, authClient })` and reuse.\n */\n adminClient?: AdminClient\n /**\n * Current organization id (usually `ctx.organizationId` from the JWT).\n * Required when `organization` is in `sections`.\n */\n organizationId?: string\n /** Forwarded to `<BillingPanel>` — e.g. redirect handler, billing interval. */\n billing?: BillingPanelProps\n}\n\nconst DEFAULT_SECTIONS: PlatformSettingsSection[] = ['account', 'organization', 'billing']\n\nexport function PlatformSettings({\n sections = DEFAULT_SECTIONS,\n defaultSection,\n adminClient,\n organizationId,\n billing,\n}: PlatformSettingsProps) {\n const t = useTranslations('windsock')\n const { status } = useAuth()\n\n const visibleSections = useMemo(() => {\n // Drop `organization` if the caller didn't pass an admin client + org id.\n return sections.filter((section) => {\n if (section === 'organization') {\n return Boolean(adminClient && organizationId)\n }\n return true\n })\n }, [sections, adminClient, organizationId])\n\n const initialSection: PlatformSettingsSection = (\n defaultSection && visibleSections.includes(defaultSection)\n ? defaultSection\n : visibleSections[0] ?? 'account'\n )\n\n const [activeSection, setActiveSection] = useState<PlatformSettingsSection>(initialSection)\n const [organization, setOrganization] = useState<AuthOrganization | null>(null)\n const [orgLoadError, setOrgLoadError] = useState<string | null>(null)\n\n // Resolve the org detail record (AdminOrganizationDetail needs the full\n // AuthOrganization, not just the id). Fires once the organization tab is\n // first selected so the listOrganizations round-trip is lazy.\n useEffect(() => {\n if (activeSection !== 'organization') return\n if (!adminClient || !organizationId) return\n if (organization?.id === organizationId) return\n\n let cancelled = false\n setOrgLoadError(null)\n void adminClient.listOrganizations()\n .then((orgs) => {\n if (cancelled) return\n const match = orgs.find((org) => org.id === organizationId)\n if (match) {\n setOrganization(match)\n } else {\n setOrgLoadError('Organization not found')\n }\n })\n .catch((loadError: unknown) => {\n if (cancelled) return\n setOrgLoadError(loadError instanceof Error ? loadError.message : String(loadError))\n })\n return () => {\n cancelled = true\n }\n }, [activeSection, adminClient, organizationId, organization?.id])\n\n if (status === 'loading') {\n return (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n }\n\n if (status !== 'authenticated') {\n return null\n }\n\n if (visibleSections.length === 0) {\n return null\n }\n\n const segments = visibleSections.map((section) => ({\n value: section,\n label: t(`platformSettings.sections.${section}`),\n }))\n\n return (\n <div className=\"space-y-6\">\n {visibleSections.length > 1 && (\n <SegmentedControl\n segments={segments}\n value={activeSection}\n onChange={(value: string) => setActiveSection(value as PlatformSettingsSection)}\n fullWidth\n />\n )}\n\n {activeSection === 'account' && <UserProfile />}\n\n {activeSection === 'organization' && adminClient && organizationId && (\n organization ? (\n <AdminOrganizationDetail\n client={adminClient}\n organization={organization}\n />\n ) : orgLoadError ? (\n <div\n role=\"alert\"\n className=\"rounded-xl border border-red-300/40 bg-red-50/80 px-4 py-3 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-300\"\n >\n {orgLoadError}\n </div>\n ) : (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n )}\n\n {activeSection === 'billing' && <BillingPanel {...billing} />}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/settings/platform-settings.tsx"],"names":["useTranslations","useAuth","useMemo","useState","useEffect","jsx","InlineSpinner","jsxs","SegmentedControl","UserProfile","AdminOrganizationDetail","BillingPanel"],"mappings":"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","file":"chunk-C4NRF2G2.js","sourcesContent":["// =============================================================================\n// @datatechsolutions/windsock/ui — PlatformSettings\n// Unified settings shell consumed by every product (astrlabe, kori).\n// Composes existing building blocks:\n// - `<UserProfile>` — Profile / Security / Sessions / Linked accounts\n// - `<AdminOrganizationDetail>` — Members / Invitations / Domains\n// - `<BillingPanel>` — Current subscription + plan catalogue\n// Apps mount this at their `/settings` route; feature toggles hide sections\n// that a given user's role cannot access.\n// =============================================================================\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { SegmentedControl, InlineSpinner } from '@ui/index'\nimport type { AdminClient, AuthOrganization } from '@datatechsolutions/shared-domain'\n\nimport { useAuth } from '../../_auth'\nimport { UserProfile } from '../auth/user-profile'\nimport { AdminOrganizationDetail } from '../admin/admin-organization-detail'\nimport { BillingPanel, type BillingPanelProps } from '../billing/billing-panel'\n\nexport type PlatformSettingsSection = 'account' | 'organization' | 'billing'\n\nexport interface PlatformSettingsProps {\n /**\n * Sections to surface to the current user. The host app is responsible for\n * picking the right set based on RBAC — e.g. hide `organization` for users\n * without `org:manage` and hide `billing` for users without `billing:read`.\n * Defaults to all three.\n */\n sections?: PlatformSettingsSection[]\n /** Starting section. Defaults to the first item in `sections`. */\n defaultSection?: PlatformSettingsSection\n /**\n * Windsock admin API client. Required when `organization` is in `sections`.\n * Create it once with `createAdminClient({ issuer, authClient })` and reuse.\n */\n adminClient?: AdminClient\n /**\n * Current organization id (usually `ctx.organizationId` from the JWT).\n * Required when `organization` is in `sections`.\n */\n organizationId?: string\n /** Forwarded to `<BillingPanel>` — e.g. redirect handler, billing interval. */\n billing?: BillingPanelProps\n}\n\nconst DEFAULT_SECTIONS: PlatformSettingsSection[] = ['account', 'organization', 'billing']\n\nexport function PlatformSettings({\n sections = DEFAULT_SECTIONS,\n defaultSection,\n adminClient,\n organizationId,\n billing,\n}: PlatformSettingsProps) {\n const t = useTranslations('windsock')\n const { status } = useAuth()\n\n const visibleSections = useMemo(() => {\n // Drop `organization` if the caller didn't pass an admin client + org id.\n return sections.filter((section) => {\n if (section === 'organization') {\n return Boolean(adminClient && organizationId)\n }\n return true\n })\n }, [sections, adminClient, organizationId])\n\n const initialSection: PlatformSettingsSection = (\n defaultSection && visibleSections.includes(defaultSection)\n ? defaultSection\n : visibleSections[0] ?? 'account'\n )\n\n const [activeSection, setActiveSection] = useState<PlatformSettingsSection>(initialSection)\n const [organization, setOrganization] = useState<AuthOrganization | null>(null)\n const [orgLoadError, setOrgLoadError] = useState<string | null>(null)\n\n // Resolve the org detail record (AdminOrganizationDetail needs the full\n // AuthOrganization, not just the id). Fires once the organization tab is\n // first selected so the listOrganizations round-trip is lazy.\n useEffect(() => {\n if (activeSection !== 'organization') return\n if (!adminClient || !organizationId) return\n if (organization?.id === organizationId) return\n\n let cancelled = false\n setOrgLoadError(null)\n void adminClient.listOrganizations()\n .then((orgs) => {\n if (cancelled) return\n const match = orgs.find((org) => org.id === organizationId)\n if (match) {\n setOrganization(match)\n } else {\n setOrgLoadError('Organization not found')\n }\n })\n .catch((loadError: unknown) => {\n if (cancelled) return\n setOrgLoadError(loadError instanceof Error ? loadError.message : String(loadError))\n })\n return () => {\n cancelled = true\n }\n }, [activeSection, adminClient, organizationId, organization?.id])\n\n if (status === 'loading') {\n return (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n }\n\n if (status !== 'authenticated') {\n return null\n }\n\n if (visibleSections.length === 0) {\n return null\n }\n\n const segments = visibleSections.map((section) => ({\n value: section,\n label: t(`platformSettings.sections.${section}`),\n }))\n\n return (\n <div className=\"space-y-6\">\n {visibleSections.length > 1 && (\n <SegmentedControl\n segments={segments}\n value={activeSection}\n onChange={(value: string) => setActiveSection(value as PlatformSettingsSection)}\n fullWidth\n />\n )}\n\n {activeSection === 'account' && <UserProfile />}\n\n {activeSection === 'organization' && adminClient && organizationId && (\n organization ? (\n <AdminOrganizationDetail\n client={adminClient}\n organization={organization}\n />\n ) : orgLoadError ? (\n <div\n role=\"alert\"\n className=\"rounded-xl border border-red-300/40 bg-red-50/80 px-4 py-3 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-300\"\n >\n {orgLoadError}\n </div>\n ) : (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n )}\n\n {activeSection === 'billing' && <BillingPanel {...billing} />}\n </div>\n )\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkFSBR4RCK_js = require('./chunk-FSBR4RCK.js');
4
+ var chunkAWDH6WNA_js = require('./chunk-AWDH6WNA.js');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
7
7
  function OtpInput({
@@ -120,7 +120,7 @@ function SocialLoginButtons({
120
120
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-2.5", children: providers.map((provider) => {
121
121
  const { label, Icon } = PROVIDER_CONFIG[provider];
122
122
  return /* @__PURE__ */ jsxRuntime.jsxs(
123
- chunkFSBR4RCK_js.Button,
123
+ chunkAWDH6WNA_js.Button,
124
124
  {
125
125
  type: "button",
126
126
  color: "ios-glass-blue",
@@ -144,5 +144,5 @@ exports.BackupCodeGrid = BackupCodeGrid;
144
144
  exports.OtpInput = OtpInput;
145
145
  exports.PasswordStrengthMeter = PasswordStrengthMeter;
146
146
  exports.SocialLoginButtons = SocialLoginButtons;
147
- //# sourceMappingURL=chunk-45QAUEYT.js.map
148
- //# sourceMappingURL=chunk-45QAUEYT.js.map
147
+ //# sourceMappingURL=chunk-CY2MBKVG.js.map
148
+ //# sourceMappingURL=chunk-CY2MBKVG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/auth/components.tsx"],"names":["jsxs","jsx","Button"],"mappings":"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","file":"chunk-45QAUEYT.js","sourcesContent":["import React, { type ReactNode } from 'react'\nimport { Button } from '@ui/index'\n\n// =============================================================================\n// Stub UI components for windsock auth flows\n// These components are not exported by @datatechsolutions/ui and are defined\n// locally with minimal implementations.\n// =============================================================================\n\n// ── SocialProvider type ─────────────────────────────────────────────────────\n\nexport type SocialProvider = 'google' | 'github' | 'discord' | 'microsoft' | 'apple' | 'amazon'\n\n// ── OtpInput ────────────────────────────────────────────────────────────────\n\nexport interface OtpInputProps {\n value: string\n onChange: (value: string) => void\n onComplete?: (code: string) => void\n error?: string\n disabled?: boolean\n autoFocus?: boolean\n length?: number\n}\n\nexport function OtpInput({\n value,\n onChange,\n onComplete,\n error,\n disabled = false,\n autoFocus = false,\n length = 6,\n}: OtpInputProps) {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value.replace(/\\D/g, '').slice(0, length)\n onChange(newValue)\n if (newValue.length === length && onComplete) {\n onComplete(newValue)\n }\n }\n\n return (\n <div className=\"space-y-1\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={length}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n autoFocus={autoFocus}\n className={`w-full rounded-xl border px-4 py-3 text-center font-mono text-2xl tracking-[0.5em] transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 ${\n error\n ? 'border-red-500 bg-red-50 dark:border-red-400 dark:bg-red-900/20'\n : 'border-gray-300 bg-white dark:border-white/20 dark:bg-white/5'\n } ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n aria-invalid={!!error}\n />\n {error && (\n <p className=\"text-xs text-red-600 dark:text-red-400 text-center\">{error}</p>\n )}\n </div>\n )\n}\n\n// ── PasswordStrengthMeter ───────────────────────────────────────────────────\n\nexport interface PasswordStrengthMeterProps {\n password: string\n policy?: unknown\n showRequirements?: boolean\n}\n\nexport function PasswordStrengthMeter({\n password,\n showRequirements = false,\n}: PasswordStrengthMeterProps) {\n const strength = Math.min(4, Math.floor(password.length / 3))\n const colors = ['bg-red-500', 'bg-orange-500', 'bg-yellow-500', 'bg-lime-500', 'bg-green-500']\n const labels = ['Very weak', 'Weak', 'Fair', 'Strong', 'Very strong']\n\n if (!password) return null\n\n return (\n <div className=\"space-y-1.5\">\n <div className=\"flex gap-1\">\n {Array.from({ length: 4 }, (_, index) => (\n <div\n key={index}\n className={`h-1 flex-1 rounded-full transition-colors ${\n index <= strength - 1 ? colors[strength] : 'bg-gray-200 dark:bg-white/10'\n }`}\n />\n ))}\n </div>\n {showRequirements && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400\">{labels[strength]}</p>\n )}\n </div>\n )\n}\n\n// ── BackupCodeGrid ──────────────────────────────────────────────────────────\n\nexport interface BackupCodeGridProps {\n codes: string[]\n revealed?: boolean\n}\n\nexport function BackupCodeGrid({ codes, revealed = false }: BackupCodeGridProps) {\n return (\n <div className=\"grid grid-cols-2 gap-2\">\n {codes.map((code, index) => (\n <div\n key={index}\n className=\"rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 text-center font-mono text-sm dark:border-white/10 dark:bg-white/5\"\n >\n {revealed ? code : '\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022'}\n </div>\n ))}\n </div>\n )\n}\n\n// ── AuthLayout ──────────────────────────────────────────────────────────────\n\nexport interface AuthLayoutProps {\n children: ReactNode\n heroPanel?: unknown\n}\n\nexport function AuthLayout({ children }: AuthLayoutProps) {\n return (\n <div className=\"w-full max-w-md mx-auto\">\n {children}\n </div>\n )\n}\n\n// ── SocialLoginButtons ──────────────────────────────────────────────────────\n\nexport interface SocialLoginButtonsProps {\n providers: SocialProvider[]\n onProviderClick: (provider: SocialProvider) => void\n loading?: SocialProvider | null\n disabled?: boolean\n}\n\nfunction GoogleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z\" fill=\"#4285F4\" />\n <path d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\" fill=\"#34A853\" />\n <path d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\" fill=\"#FBBC05\" />\n <path d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" fill=\"#EA4335\" />\n </svg>\n )\n}\n\nfunction GitHubIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z\" />\n </svg>\n )\n}\n\nfunction MicrosoftIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </svg>\n )\n}\n\nfunction AppleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />\n </svg>\n )\n}\n\nfunction AmazonIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M13.958 10.09c0 1.232.029 2.256-.591 3.351-.502.891-1.301 1.438-2.186 1.438-1.214 0-1.922-.924-1.922-2.292 0-2.692 2.415-3.182 4.7-3.182v.685zm3.186 7.705a.66.66 0 0 1-.753.077c-1.06-.876-1.25-1.283-1.828-2.119-1.748 1.783-2.986 2.317-5.249 2.317-2.681 0-4.768-1.653-4.768-4.96 0-2.583 1.4-4.34 3.392-5.2 1.727-.753 4.14-.886 5.98-1.094v-.408c0-.748.058-1.634-.383-2.28-.383-.579-1.117-.816-1.765-.816-1.2 0-2.266.615-2.527 1.89a.556.556 0 0 1-.481.482l-2.7-.291c-.224-.05-.474-.231-.41-.574C6.41 1.62 9.647.5 12.564.5c1.476 0 3.406.393 4.573 1.51 1.476 1.38 1.336 3.224 1.336 5.229v4.736c0 1.423.59 2.047 1.145 2.816.196.275.24.604-.01.807-.626.524-1.74 1.499-2.352 2.044l-.112.062z\" fill=\"#FF9900\" />\n <path d=\"M21.558 18.494c-1.94 1.432-4.753 2.195-7.178 2.195-3.396 0-6.453-1.255-8.765-3.344-.182-.164-.02-.389.199-.261 2.497 1.453 5.584 2.328 8.773 2.328 2.152 0 4.517-.446 6.694-1.37.328-.14.603.216.277.452z\" fill=\"#FF9900\" />\n <path d=\"M22.323 17.168c-.247-.317-1.636-.15-2.261-.076-.19.022-.219-.142-.048-.261 1.107-.777 2.923-.553 3.134-.293.212.264-.055 2.087-1.095 2.959-.16.134-.312.063-.241-.114.234-.583.758-1.899.511-2.215z\" fill=\"#FF9900\" />\n </svg>\n )\n}\n\nfunction DiscordIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\" fill=\"#5865F2\" />\n </svg>\n )\n}\n\nconst PROVIDER_CONFIG: Record<SocialProvider, { label: string; Icon: React.FC }> = {\n google: { label: 'Google', Icon: GoogleIcon },\n github: { label: 'GitHub', Icon: GitHubIcon },\n microsoft: { label: 'Microsoft', Icon: MicrosoftIcon },\n apple: { label: 'Apple', Icon: AppleIcon },\n amazon: { label: 'Amazon', Icon: AmazonIcon },\n discord: { label: 'Discord', Icon: DiscordIcon },\n}\n\nexport function SocialLoginButtons({\n providers,\n onProviderClick,\n loading,\n disabled = false,\n}: SocialLoginButtonsProps) {\n return (\n <div className=\"flex flex-col gap-2.5\">\n {providers.map((provider) => {\n const { label, Icon } = PROVIDER_CONFIG[provider]\n return (\n <Button\n key={provider}\n type=\"button\"\n color=\"ios-glass-blue\"\n size=\"lg\"\n fullWidth\n onClick={() => onProviderClick(provider)}\n disabled={disabled || (loading != null && loading !== provider)}\n loading={loading === provider}\n >\n {loading !== provider && <Icon />}\n {label}\n </Button>\n )\n })}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/auth/components.tsx"],"names":["jsxs","jsx","Button"],"mappings":"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","file":"chunk-CY2MBKVG.js","sourcesContent":["import React, { type ReactNode } from 'react'\nimport { Button } from '@ui/index'\n\n// =============================================================================\n// Stub UI components for windsock auth flows\n// These components are not exported by @datatechsolutions/ui and are defined\n// locally with minimal implementations.\n// =============================================================================\n\n// ── SocialProvider type ─────────────────────────────────────────────────────\n\nexport type SocialProvider = 'google' | 'github' | 'discord' | 'microsoft' | 'apple' | 'amazon'\n\n// ── OtpInput ────────────────────────────────────────────────────────────────\n\nexport interface OtpInputProps {\n value: string\n onChange: (value: string) => void\n onComplete?: (code: string) => void\n error?: string\n disabled?: boolean\n autoFocus?: boolean\n length?: number\n}\n\nexport function OtpInput({\n value,\n onChange,\n onComplete,\n error,\n disabled = false,\n autoFocus = false,\n length = 6,\n}: OtpInputProps) {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value.replace(/\\D/g, '').slice(0, length)\n onChange(newValue)\n if (newValue.length === length && onComplete) {\n onComplete(newValue)\n }\n }\n\n return (\n <div className=\"space-y-1\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={length}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n autoFocus={autoFocus}\n className={`w-full rounded-xl border px-4 py-3 text-center font-mono text-2xl tracking-[0.5em] transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 ${\n error\n ? 'border-red-500 bg-red-50 dark:border-red-400 dark:bg-red-900/20'\n : 'border-gray-300 bg-white dark:border-white/20 dark:bg-white/5'\n } ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n aria-invalid={!!error}\n />\n {error && (\n <p className=\"text-xs text-red-600 dark:text-red-400 text-center\">{error}</p>\n )}\n </div>\n )\n}\n\n// ── PasswordStrengthMeter ───────────────────────────────────────────────────\n\nexport interface PasswordStrengthMeterProps {\n password: string\n policy?: unknown\n showRequirements?: boolean\n}\n\nexport function PasswordStrengthMeter({\n password,\n showRequirements = false,\n}: PasswordStrengthMeterProps) {\n const strength = Math.min(4, Math.floor(password.length / 3))\n const colors = ['bg-red-500', 'bg-orange-500', 'bg-yellow-500', 'bg-lime-500', 'bg-green-500']\n const labels = ['Very weak', 'Weak', 'Fair', 'Strong', 'Very strong']\n\n if (!password) return null\n\n return (\n <div className=\"space-y-1.5\">\n <div className=\"flex gap-1\">\n {Array.from({ length: 4 }, (_, index) => (\n <div\n key={index}\n className={`h-1 flex-1 rounded-full transition-colors ${\n index <= strength - 1 ? colors[strength] : 'bg-gray-200 dark:bg-white/10'\n }`}\n />\n ))}\n </div>\n {showRequirements && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400\">{labels[strength]}</p>\n )}\n </div>\n )\n}\n\n// ── BackupCodeGrid ──────────────────────────────────────────────────────────\n\nexport interface BackupCodeGridProps {\n codes: string[]\n revealed?: boolean\n}\n\nexport function BackupCodeGrid({ codes, revealed = false }: BackupCodeGridProps) {\n return (\n <div className=\"grid grid-cols-2 gap-2\">\n {codes.map((code, index) => (\n <div\n key={index}\n className=\"rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 text-center font-mono text-sm dark:border-white/10 dark:bg-white/5\"\n >\n {revealed ? code : '\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022'}\n </div>\n ))}\n </div>\n )\n}\n\n// ── AuthLayout ──────────────────────────────────────────────────────────────\n\nexport interface AuthLayoutProps {\n children: ReactNode\n heroPanel?: unknown\n}\n\nexport function AuthLayout({ children }: AuthLayoutProps) {\n return (\n <div className=\"w-full max-w-md mx-auto\">\n {children}\n </div>\n )\n}\n\n// ── SocialLoginButtons ──────────────────────────────────────────────────────\n\nexport interface SocialLoginButtonsProps {\n providers: SocialProvider[]\n onProviderClick: (provider: SocialProvider) => void\n loading?: SocialProvider | null\n disabled?: boolean\n}\n\nfunction GoogleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z\" fill=\"#4285F4\" />\n <path d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\" fill=\"#34A853\" />\n <path d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\" fill=\"#FBBC05\" />\n <path d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" fill=\"#EA4335\" />\n </svg>\n )\n}\n\nfunction GitHubIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z\" />\n </svg>\n )\n}\n\nfunction MicrosoftIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </svg>\n )\n}\n\nfunction AppleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />\n </svg>\n )\n}\n\nfunction AmazonIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M13.958 10.09c0 1.232.029 2.256-.591 3.351-.502.891-1.301 1.438-2.186 1.438-1.214 0-1.922-.924-1.922-2.292 0-2.692 2.415-3.182 4.7-3.182v.685zm3.186 7.705a.66.66 0 0 1-.753.077c-1.06-.876-1.25-1.283-1.828-2.119-1.748 1.783-2.986 2.317-5.249 2.317-2.681 0-4.768-1.653-4.768-4.96 0-2.583 1.4-4.34 3.392-5.2 1.727-.753 4.14-.886 5.98-1.094v-.408c0-.748.058-1.634-.383-2.28-.383-.579-1.117-.816-1.765-.816-1.2 0-2.266.615-2.527 1.89a.556.556 0 0 1-.481.482l-2.7-.291c-.224-.05-.474-.231-.41-.574C6.41 1.62 9.647.5 12.564.5c1.476 0 3.406.393 4.573 1.51 1.476 1.38 1.336 3.224 1.336 5.229v4.736c0 1.423.59 2.047 1.145 2.816.196.275.24.604-.01.807-.626.524-1.74 1.499-2.352 2.044l-.112.062z\" fill=\"#FF9900\" />\n <path d=\"M21.558 18.494c-1.94 1.432-4.753 2.195-7.178 2.195-3.396 0-6.453-1.255-8.765-3.344-.182-.164-.02-.389.199-.261 2.497 1.453 5.584 2.328 8.773 2.328 2.152 0 4.517-.446 6.694-1.37.328-.14.603.216.277.452z\" fill=\"#FF9900\" />\n <path d=\"M22.323 17.168c-.247-.317-1.636-.15-2.261-.076-.19.022-.219-.142-.048-.261 1.107-.777 2.923-.553 3.134-.293.212.264-.055 2.087-1.095 2.959-.16.134-.312.063-.241-.114.234-.583.758-1.899.511-2.215z\" fill=\"#FF9900\" />\n </svg>\n )\n}\n\nfunction DiscordIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\" fill=\"#5865F2\" />\n </svg>\n )\n}\n\nconst PROVIDER_CONFIG: Record<SocialProvider, { label: string; Icon: React.FC }> = {\n google: { label: 'Google', Icon: GoogleIcon },\n github: { label: 'GitHub', Icon: GitHubIcon },\n microsoft: { label: 'Microsoft', Icon: MicrosoftIcon },\n apple: { label: 'Apple', Icon: AppleIcon },\n amazon: { label: 'Amazon', Icon: AmazonIcon },\n discord: { label: 'Discord', Icon: DiscordIcon },\n}\n\nexport function SocialLoginButtons({\n providers,\n onProviderClick,\n loading,\n disabled = false,\n}: SocialLoginButtonsProps) {\n return (\n <div className=\"flex flex-col gap-2.5\">\n {providers.map((provider) => {\n const { label, Icon } = PROVIDER_CONFIG[provider]\n return (\n <Button\n key={provider}\n type=\"button\"\n color=\"ios-glass-blue\"\n size=\"lg\"\n fullWidth\n onClick={() => onProviderClick(provider)}\n disabled={disabled || (loading != null && loading !== provider)}\n loading={loading === provider}\n >\n {loading !== provider && <Icon />}\n {label}\n </Button>\n )\n })}\n </div>\n )\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkYV7F7IXG_js = require('./chunk-YV7F7IXG.js');
5
- var chunkERCDMBRT_js = require('./chunk-ERCDMBRT.js');
4
+ var chunkV5VBYOF5_js = require('./chunk-V5VBYOF5.js');
5
+ var chunk74MHWEDC_js = require('./chunk-74MHWEDC.js');
6
6
  var chunkDJDZIRM6_js = require('./chunk-DJDZIRM6.js');
7
- var chunkM7KSEUZR_js = require('./chunk-M7KSEUZR.js');
8
- var chunkFSBR4RCK_js = require('./chunk-FSBR4RCK.js');
9
- var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
7
+ var chunkQSMPKL27_js = require('./chunk-QSMPKL27.js');
8
+ var chunkAWDH6WNA_js = require('./chunk-AWDH6WNA.js');
10
9
  var chunkSY4MUT5V_js = require('./chunk-SY4MUT5V.js');
10
+ var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
11
11
  var react = require('react');
12
12
  var reactRouter = require('react-router');
13
13
  var outline = require('@heroicons/react/24/outline');
@@ -180,9 +180,9 @@ function applyWorkflowExecutionEventToStore(actions, event) {
180
180
  }
181
181
  }
182
182
  function useWorkflowRunPresentation(events, status) {
183
- const clearNodeResults = chunkM7KSEUZR_js.useWorkflowStore((state) => state.clearNodeResults);
184
- const setIsRunning = chunkM7KSEUZR_js.useWorkflowStore((state) => state.setIsRunning);
185
- const setNodeResult = chunkM7KSEUZR_js.useWorkflowStore((state) => state.setNodeResult);
183
+ const clearNodeResults = chunkQSMPKL27_js.useWorkflowStore((state) => state.clearNodeResults);
184
+ const setIsRunning = chunkQSMPKL27_js.useWorkflowStore((state) => state.setIsRunning);
185
+ const setNodeResult = chunkQSMPKL27_js.useWorkflowStore((state) => state.setNodeResult);
186
186
  react.useEffect(() => {
187
187
  if (status === "idle") {
188
188
  resetWorkflowRunPresentation({ clearNodeResults, setIsRunning, setNodeResult });
@@ -205,9 +205,9 @@ function useWorkflowExecution(workflowId) {
205
205
  const [activeRunId, setActiveRunId] = react.useState(null);
206
206
  const [isLaunching, setIsLaunching] = react.useState(false);
207
207
  const stream = useRunEvents(workflowId || null, activeRunId);
208
- const clearNodeResults = chunkM7KSEUZR_js.useWorkflowStore((state) => state.clearNodeResults);
209
- const setIsRunning = chunkM7KSEUZR_js.useWorkflowStore((state) => state.setIsRunning);
210
- const setNodeResult = chunkM7KSEUZR_js.useWorkflowStore((state) => state.setNodeResult);
208
+ const clearNodeResults = chunkQSMPKL27_js.useWorkflowStore((state) => state.clearNodeResults);
209
+ const setIsRunning = chunkQSMPKL27_js.useWorkflowStore((state) => state.setIsRunning);
210
+ const setNodeResult = chunkQSMPKL27_js.useWorkflowStore((state) => state.setNodeResult);
211
211
  useWorkflowRunPresentation(stream.events, activeRunId ? stream.status : "idle");
212
212
  react.useEffect(() => {
213
213
  if (stream.status === "completed" || stream.status === "failed" || stream.status === "error") {
@@ -332,7 +332,7 @@ function AgentsWorkspace({ workflowId, messages }) {
332
332
  const tWorkflow = chunkYXN2K77G_js.useTranslations("agents.workflow");
333
333
  const tCommon = chunkYXN2K77G_js.useTranslations("common");
334
334
  const datasourceLabels = useDatasourceLabels();
335
- const { error: notifyError, success: notifySuccess } = chunkFSBR4RCK_js.useNotifications();
335
+ const { error: notifyError, success: notifySuccess } = chunkAWDH6WNA_js.useNotifications();
336
336
  const showSuccess = react.useCallback((title, message) => {
337
337
  notifySuccess(title, message);
338
338
  }, [notifySuccess]);
@@ -356,20 +356,20 @@ function AgentsWorkspace({ workflowId, messages }) {
356
356
  const [datasources, setDatasources] = react.useState([]);
357
357
  const [modelConnections, setModelConnections] = react.useState([]);
358
358
  const [showDatasourceModal, setShowDatasourceModal] = react.useState(false);
359
- const openPipelineSettingsModal = chunkM7KSEUZR_js.useModalStore((s) => s.openPipelineSettingsModal);
359
+ const openPipelineSettingsModal = chunkQSMPKL27_js.useModalStore((s) => s.openPipelineSettingsModal);
360
360
  const [showRunInputDialog, setShowRunInputDialog] = react.useState(false);
361
361
  const [showPreviewPanel, setShowPreviewPanel] = react.useState(false);
362
362
  const [isCreatingAgent, setIsCreatingAgent] = react.useState(false);
363
- const openSubworkflowModal = chunkERCDMBRT_js.useSubworkflowStore((s) => s.openModal);
364
- const closeSubworkflowModal = chunkERCDMBRT_js.useSubworkflowStore((s) => s.closeModal);
363
+ const openSubworkflowModal = chunk74MHWEDC_js.useSubworkflowStore((s) => s.openModal);
364
+ const closeSubworkflowModal = chunk74MHWEDC_js.useSubworkflowStore((s) => s.closeModal);
365
365
  const [deleteTarget, setDeleteTarget] = react.useState(null);
366
366
  const [saveStatus, setSaveStatus] = react.useState("idle");
367
367
  const latestGraphRef = react.useRef(null);
368
368
  const saveTimerRef = react.useRef(null);
369
369
  const skipInitialAutoSaveRef = react.useRef(true);
370
- const showRunPanel = chunkM7KSEUZR_js.useWorkflowStore((state) => state.showRunPanel);
371
- const toggleRunPanel = chunkM7KSEUZR_js.useWorkflowStore((state) => state.toggleRunPanel);
372
- const workflowNodes = chunkM7KSEUZR_js.useWorkflowStore((state) => state.nodes);
370
+ const showRunPanel = chunkQSMPKL27_js.useWorkflowStore((state) => state.showRunPanel);
371
+ const toggleRunPanel = chunkQSMPKL27_js.useWorkflowStore((state) => state.toggleRunPanel);
372
+ const workflowNodes = chunkQSMPKL27_js.useWorkflowStore((state) => state.nodes);
373
373
  const { execute: executeWorkflowRun, stop: stopWorkflowRun, isRunning } = useWorkflowExecution(workflowId);
374
374
  const loadWorkspaceData = react.useCallback(async () => {
375
375
  setIsLoading(true);
@@ -652,7 +652,7 @@ function AgentsWorkspace({ workflowId, messages }) {
652
652
  }
653
653
  if (!workflow) {
654
654
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-[calc(100vh-120px)] items-center justify-center", children: loadError ? /* @__PURE__ */ jsxRuntime.jsx(
655
- chunkFSBR4RCK_js.PageErrorState,
655
+ chunkAWDH6WNA_js.PageErrorState,
656
656
  {
657
657
  statusCode: 500,
658
658
  title: tCommon("serverError"),
@@ -663,7 +663,7 @@ function AgentsWorkspace({ workflowId, messages }) {
663
663
  retryLabel: tCommon("retry")
664
664
  }
665
665
  ) : /* @__PURE__ */ jsxRuntime.jsx(
666
- chunkFSBR4RCK_js.PageEmptyState,
666
+ chunkAWDH6WNA_js.PageEmptyState,
667
667
  {
668
668
  title: tWorkflow("emptyTitle"),
669
669
  message: tWorkflow("emptyDescription"),
@@ -671,7 +671,7 @@ function AgentsWorkspace({ workflowId, messages }) {
671
671
  }
672
672
  ) });
673
673
  }
674
- return /* @__PURE__ */ jsxRuntime.jsx(chunkM7KSEUZR_js.WorkflowBuilderProvider, { publishableKey: getPublishableKey(), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[calc(100vh-120px)] flex-col", "data-testid": "agents-workspace", children: [
674
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkQSMPKL27_js.WorkflowBuilderProvider, { publishableKey: getPublishableKey(), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[calc(100vh-120px)] flex-col", "data-testid": "agents-workspace", children: [
675
675
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface flex h-full flex-col overflow-hidden rounded-2xl", children: [
676
676
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-shrink-0 items-center justify-between px-5 py-3", children: [
677
677
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -693,13 +693,13 @@ function AgentsWorkspace({ workflowId, messages }) {
693
693
  children: workflow.name || tWorkflow("title")
694
694
  }
695
695
  ),
696
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.CopyableId, { id: workflowId, className: "text-[10px]" }),
696
+ /* @__PURE__ */ jsxRuntime.jsx(chunkAWDH6WNA_js.CopyableId, { id: workflowId, className: "text-[10px]" }),
697
697
  workflow.isDraft ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center rounded-full bg-amber-100 px-2.5 py-0.5 text-[10px] font-semibold text-amber-800 dark:bg-amber-900/30 dark:text-amber-300", children: tWorkflow("draftBadge") }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-[10px] font-semibold text-green-800 dark:bg-green-900/30 dark:text-green-300", children: tWorkflow("published") }),
698
- /* @__PURE__ */ jsxRuntime.jsx(chunkERCDMBRT_js.SaveStatusBadge, { status: saveStatus })
698
+ /* @__PURE__ */ jsxRuntime.jsx(chunk74MHWEDC_js.SaveStatusBadge, { status: saveStatus })
699
699
  ] }),
700
700
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
701
701
  /* @__PURE__ */ jsxRuntime.jsx(
702
- chunkFSBR4RCK_js.Button,
702
+ chunkAWDH6WNA_js.Button,
703
703
  {
704
704
  size: "xs",
705
705
  plain: true,
@@ -708,11 +708,11 @@ function AgentsWorkspace({ workflowId, messages }) {
708
708
  children: /* @__PURE__ */ jsxRuntime.jsx(outline.ChartBarIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" })
709
709
  }
710
710
  ),
711
- isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(chunkFSBR4RCK_js.Button, { size: "xs", outline: true, onClick: stopWorkflowRun, children: [
711
+ isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(chunkAWDH6WNA_js.Button, { size: "xs", outline: true, onClick: stopWorkflowRun, children: [
712
712
  /* @__PURE__ */ jsxRuntime.jsx(outline.StopIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
713
713
  tWorkflow("runPanel.stop")
714
714
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs(
715
- chunkFSBR4RCK_js.Button,
715
+ chunkAWDH6WNA_js.Button,
716
716
  {
717
717
  size: "xs",
718
718
  outline: true,
@@ -725,7 +725,7 @@ function AgentsWorkspace({ workflowId, messages }) {
725
725
  ]
726
726
  }
727
727
  ),
728
- /* @__PURE__ */ jsxRuntime.jsxs(chunkFSBR4RCK_js.Button, { gradient: true, size: "xs", onClick: () => {
728
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkAWDH6WNA_js.Button, { gradient: true, size: "xs", onClick: () => {
729
729
  void handlePublish();
730
730
  }, disabled: isPublishing, children: [
731
731
  /* @__PURE__ */ jsxRuntime.jsx(outline.DocumentCheckIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
@@ -735,7 +735,7 @@ function AgentsWorkspace({ workflowId, messages }) {
735
735
  ] }),
736
736
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-divider border-t" }),
737
737
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
738
- chunkERCDMBRT_js.WorkflowListBar,
738
+ chunk74MHWEDC_js.WorkflowListBar,
739
739
  {
740
740
  workflows,
741
741
  activeWorkflowId: workflowId,
@@ -751,7 +751,7 @@ function AgentsWorkspace({ workflowId, messages }) {
751
751
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-divider border-t" }),
752
752
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: [
753
753
  /* @__PURE__ */ jsxRuntime.jsx(
754
- chunkERCDMBRT_js.NodePalette,
754
+ chunk74MHWEDC_js.NodePalette,
755
755
  {
756
756
  agents,
757
757
  tools,
@@ -773,7 +773,7 @@ function AgentsWorkspace({ workflowId, messages }) {
773
773
  }
774
774
  ),
775
775
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
776
- chunkERCDMBRT_js.AutoSaveWorkspace,
776
+ chunk74MHWEDC_js.AutoSaveWorkspace,
777
777
  {
778
778
  workflowId,
779
779
  className: "h-full w-full",
@@ -801,7 +801,7 @@ function AgentsWorkspace({ workflowId, messages }) {
801
801
  latestGraphRef.current = graph;
802
802
  },
803
803
  renderAgentModal: (props) => /* @__PURE__ */ jsxRuntime.jsx(
804
- chunkERCDMBRT_js.AgentModal,
804
+ chunk74MHWEDC_js.AgentModal,
805
805
  {
806
806
  ...props,
807
807
  onSaved: () => {
@@ -842,7 +842,7 @@ function AgentsWorkspace({ workflowId, messages }) {
842
842
  ] })
843
843
  ] }),
844
844
  /* @__PURE__ */ jsxRuntime.jsx(
845
- chunkERCDMBRT_js.PipelineSettingsModal,
845
+ chunk74MHWEDC_js.PipelineSettingsModal,
846
846
  {
847
847
  onSave: async (changes) => {
848
848
  const metadata = {
@@ -859,7 +859,7 @@ function AgentsWorkspace({ workflowId, messages }) {
859
859
  }
860
860
  ),
861
861
  /* @__PURE__ */ jsxRuntime.jsx(
862
- chunkERCDMBRT_js.SubworkflowModal,
862
+ chunk74MHWEDC_js.SubworkflowModal,
863
863
  {
864
864
  onMaximize: (subworkflowId) => {
865
865
  closeSubworkflowModal();
@@ -883,7 +883,7 @@ function AgentsWorkspace({ workflowId, messages }) {
883
883
  }
884
884
  ),
885
885
  /* @__PURE__ */ jsxRuntime.jsx(
886
- chunkERCDMBRT_js.RunPanel,
886
+ chunk74MHWEDC_js.RunPanel,
887
887
  {
888
888
  open: showRunPanel,
889
889
  onClose: toggleRunPanel,
@@ -892,7 +892,7 @@ function AgentsWorkspace({ workflowId, messages }) {
892
892
  }
893
893
  ),
894
894
  /* @__PURE__ */ jsxRuntime.jsx(
895
- chunkERCDMBRT_js.RunInputDialog,
895
+ chunk74MHWEDC_js.RunInputDialog,
896
896
  {
897
897
  open: showRunInputDialog,
898
898
  onClose: () => setShowRunInputDialog(false),
@@ -905,7 +905,7 @@ function AgentsWorkspace({ workflowId, messages }) {
905
905
  }
906
906
  ),
907
907
  /* @__PURE__ */ jsxRuntime.jsx(
908
- chunkERCDMBRT_js.PreviewPanel,
908
+ chunk74MHWEDC_js.PreviewPanel,
909
909
  {
910
910
  open: showPreviewPanel,
911
911
  onClose: () => setShowPreviewPanel(false),
@@ -914,7 +914,7 @@ function AgentsWorkspace({ workflowId, messages }) {
914
914
  }
915
915
  ),
916
916
  /* @__PURE__ */ jsxRuntime.jsx(
917
- chunkYV7F7IXG_js.DatasourceFormModal,
917
+ chunkV5VBYOF5_js.DatasourceFormModal,
918
918
  {
919
919
  open: showDatasourceModal,
920
920
  onClose: () => setShowDatasourceModal(false),
@@ -925,7 +925,7 @@ function AgentsWorkspace({ workflowId, messages }) {
925
925
  }
926
926
  ),
927
927
  /* @__PURE__ */ jsxRuntime.jsx(
928
- chunkFSBR4RCK_js.DynamicIslandConfirm,
928
+ chunkAWDH6WNA_js.DynamicIslandConfirm,
929
929
  {
930
930
  open: deleteTarget !== null,
931
931
  onClose: () => setDeleteTarget(null),
@@ -944,5 +944,5 @@ exports.resetWorkflowRunPresentation = resetWorkflowRunPresentation;
944
944
  exports.useRunEvents = useRunEvents;
945
945
  exports.useWorkflowExecution = useWorkflowExecution;
946
946
  exports.useWorkflowRunPresentation = useWorkflowRunPresentation;
947
- //# sourceMappingURL=chunk-PGVZKMOA.js.map
948
- //# sourceMappingURL=chunk-PGVZKMOA.js.map
947
+ //# sourceMappingURL=chunk-FK3WDELF.js.map
948
+ //# sourceMappingURL=chunk-FK3WDELF.js.map