@datatechsolutions/ui 2.11.86 → 2.11.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/billing-panel-DsHhhJqG.d.mts +18 -0
- package/dist/billing-panel-DsHhhJqG.d.ts +18 -0
- package/dist/chunk-4667D2ZT.mjs +61 -0
- package/dist/chunk-4667D2ZT.mjs.map +1 -0
- package/dist/chunk-5HXDJBVX.mjs +1330 -0
- package/dist/chunk-5HXDJBVX.mjs.map +1 -0
- package/dist/chunk-DJ33CSGJ.mjs +126 -0
- package/dist/chunk-DJ33CSGJ.mjs.map +1 -0
- package/dist/chunk-F4TOOARV.mjs +503 -0
- package/dist/chunk-F4TOOARV.mjs.map +1 -0
- package/dist/chunk-GEUGFYLO.mjs +237 -0
- package/dist/chunk-GEUGFYLO.mjs.map +1 -0
- package/dist/chunk-LBALE4JX.js +1342 -0
- package/dist/chunk-LBALE4JX.js.map +1 -0
- package/dist/chunk-MXFEU7A6.js +148 -0
- package/dist/chunk-MXFEU7A6.js.map +1 -0
- package/dist/chunk-NBCOVUQP.mjs +142 -0
- package/dist/chunk-NBCOVUQP.mjs.map +1 -0
- package/dist/chunk-P4RVGMZL.js +128 -0
- package/dist/chunk-P4RVGMZL.js.map +1 -0
- package/dist/chunk-Q2MG7S2E.js +239 -0
- package/dist/chunk-Q2MG7S2E.js.map +1 -0
- package/dist/chunk-RV555OEO.mjs +1009 -0
- package/dist/chunk-RV555OEO.mjs.map +1 -0
- package/dist/chunk-SAYVWIMJ.js +63 -0
- package/dist/chunk-SAYVWIMJ.js.map +1 -0
- package/dist/chunk-SUHNSUMH.mjs +1021 -0
- package/dist/chunk-SUHNSUMH.mjs.map +1 -0
- package/dist/chunk-TOEMSC4P.mjs +99 -0
- package/dist/chunk-TOEMSC4P.mjs.map +1 -0
- package/dist/chunk-UUHV5KHF.js +505 -0
- package/dist/chunk-UUHV5KHF.js.map +1 -0
- package/dist/chunk-UVEPTYZC.js +101 -0
- package/dist/chunk-UVEPTYZC.js.map +1 -0
- package/dist/chunk-X2KCCQPL.js +1049 -0
- package/dist/chunk-X2KCCQPL.js.map +1 -0
- package/dist/chunk-ZARCUQA6.js +1015 -0
- package/dist/chunk-ZARCUQA6.js.map +1 -0
- package/dist/platform/admin/index.d.mts +17 -0
- package/dist/platform/admin/index.d.ts +17 -0
- package/dist/platform/admin/index.js +39 -0
- package/dist/platform/admin/index.js.map +1 -0
- package/dist/platform/admin/index.mjs +10 -0
- package/dist/platform/admin/index.mjs.map +1 -0
- package/dist/platform/auth/index.d.mts +73 -0
- package/dist/platform/auth/index.d.ts +73 -0
- package/dist/platform/auth/index.js +107 -0
- package/dist/platform/auth/index.js.map +1 -0
- package/dist/platform/auth/index.mjs +10 -0
- package/dist/platform/auth/index.mjs.map +1 -0
- package/dist/platform/billing/index.d.mts +29 -0
- package/dist/platform/billing/index.d.ts +29 -0
- package/dist/platform/billing/index.js +22 -0
- package/dist/platform/billing/index.js.map +1 -0
- package/dist/platform/billing/index.mjs +9 -0
- package/dist/platform/billing/index.mjs.map +1 -0
- package/dist/platform/impersonation/index.d.mts +19 -0
- package/dist/platform/impersonation/index.d.ts +19 -0
- package/dist/platform/impersonation/index.js +17 -0
- package/dist/platform/impersonation/index.js.map +1 -0
- package/dist/platform/impersonation/index.mjs +8 -0
- package/dist/platform/impersonation/index.mjs.map +1 -0
- package/dist/platform/index.d.mts +8 -1
- package/dist/platform/index.d.ts +8 -1
- package/dist/platform/index.js +141 -0
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +9 -0
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/settings/index.d.mts +31 -0
- package/dist/platform/settings/index.d.ts +31 -0
- package/dist/platform/settings/index.js +21 -0
- package/dist/platform/settings/index.js.map +1 -0
- package/dist/platform/settings/index.mjs +12 -0
- package/dist/platform/settings/index.mjs.map +1 -0
- package/package.json +26 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { B as BillingPanel, a as BillingPanelProps } from '../../billing-panel-DsHhhJqG.js';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import { ReactNode } from 'react';
|
|
4
|
+
import { SubscriptionTier } from '@datatechsolutions/shared-domain';
|
|
5
|
+
|
|
6
|
+
interface UpgradePromptProps {
|
|
7
|
+
/** The user's current subscription tier */
|
|
8
|
+
currentTier: SubscriptionTier;
|
|
9
|
+
/** The minimum tier required for access (shown in the prompt) */
|
|
10
|
+
requiredTier?: SubscriptionTier;
|
|
11
|
+
/** Feature name that triggered the prompt */
|
|
12
|
+
feature?: string;
|
|
13
|
+
/** Called when the user clicks "Upgrade Now" */
|
|
14
|
+
onUpgrade?: () => void;
|
|
15
|
+
/** Called when the user dismisses the prompt */
|
|
16
|
+
onDismiss?: () => void;
|
|
17
|
+
/** Optional custom content to render inside the card */
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A glassmorphism-styled upgrade prompt shown when users hit subscription
|
|
22
|
+
* limits or try to access features above their current tier.
|
|
23
|
+
*
|
|
24
|
+
* Renders a card with the current tier, the required tier (or feature name),
|
|
25
|
+
* and action buttons for upgrading or dismissing.
|
|
26
|
+
*/
|
|
27
|
+
declare function UpgradePrompt({ currentTier, requiredTier, feature, onUpgrade, onDismiss, children, }: UpgradePromptProps): react_jsx_runtime.JSX.Element;
|
|
28
|
+
|
|
29
|
+
export { UpgradePrompt, type UpgradePromptProps };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkP4RVGMZL_js = require('../../chunk-P4RVGMZL.js');
|
|
5
|
+
var chunkQ2MG7S2E_js = require('../../chunk-Q2MG7S2E.js');
|
|
6
|
+
require('../../chunk-KNXAOJAK.js');
|
|
7
|
+
require('../../chunk-UZ3CMNUJ.js');
|
|
8
|
+
require('../../chunk-YXN2K77G.js');
|
|
9
|
+
require('../../chunk-S7KHTUHA.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
Object.defineProperty(exports, "UpgradePrompt", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return chunkP4RVGMZL_js.UpgradePrompt; }
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, "BillingPanel", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return chunkQ2MG7S2E_js.BillingPanel; }
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { UpgradePrompt } from '../../chunk-DJ33CSGJ.mjs';
|
|
3
|
+
export { BillingPanel } from '../../chunk-GEUGFYLO.mjs';
|
|
4
|
+
import '../../chunk-ZJQ5RLGK.mjs';
|
|
5
|
+
import '../../chunk-D2JF6C3E.mjs';
|
|
6
|
+
import '../../chunk-7VJ7CMMT.mjs';
|
|
7
|
+
import '../../chunk-QWG2FMUN.mjs';
|
|
8
|
+
//# sourceMappingURL=index.mjs.map
|
|
9
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ImpersonationBannerProps {
|
|
4
|
+
/**
|
|
5
|
+
* Callback fired after the impersonation session ends (after the admin
|
|
6
|
+
* token is restored). Useful for refreshing the UI or navigating home.
|
|
7
|
+
*/
|
|
8
|
+
onExit?: () => void;
|
|
9
|
+
/** Optional extra classes on the outer bar. */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Persistent banner shown while the current session is an impersonation
|
|
14
|
+
* session. Shows the admin's identity + target, and an Exit button that
|
|
15
|
+
* terminates the session. Invisible when not impersonating.
|
|
16
|
+
*/
|
|
17
|
+
declare function ImpersonationBanner({ onExit, className }: ImpersonationBannerProps): react_jsx_runtime.JSX.Element | null;
|
|
18
|
+
|
|
19
|
+
export { ImpersonationBanner, type ImpersonationBannerProps };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ImpersonationBannerProps {
|
|
4
|
+
/**
|
|
5
|
+
* Callback fired after the impersonation session ends (after the admin
|
|
6
|
+
* token is restored). Useful for refreshing the UI or navigating home.
|
|
7
|
+
*/
|
|
8
|
+
onExit?: () => void;
|
|
9
|
+
/** Optional extra classes on the outer bar. */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Persistent banner shown while the current session is an impersonation
|
|
14
|
+
* session. Shows the admin's identity + target, and an Exit button that
|
|
15
|
+
* terminates the session. Invisible when not impersonating.
|
|
16
|
+
*/
|
|
17
|
+
declare function ImpersonationBanner({ onExit, className }: ImpersonationBannerProps): react_jsx_runtime.JSX.Element | null;
|
|
18
|
+
|
|
19
|
+
export { ImpersonationBanner, type ImpersonationBannerProps };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkSAYVWIMJ_js = require('../../chunk-SAYVWIMJ.js');
|
|
5
|
+
require('../../chunk-KNXAOJAK.js');
|
|
6
|
+
require('../../chunk-UZ3CMNUJ.js');
|
|
7
|
+
require('../../chunk-YXN2K77G.js');
|
|
8
|
+
require('../../chunk-S7KHTUHA.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Object.defineProperty(exports, "ImpersonationBanner", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkSAYVWIMJ_js.ImpersonationBanner; }
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { ImpersonationBanner } from '../../chunk-4667D2ZT.mjs';
|
|
3
|
+
import '../../chunk-ZJQ5RLGK.mjs';
|
|
4
|
+
import '../../chunk-D2JF6C3E.mjs';
|
|
5
|
+
import '../../chunk-7VJ7CMMT.mjs';
|
|
6
|
+
import '../../chunk-QWG2FMUN.mjs';
|
|
7
|
+
//# sourceMappingURL=index.mjs.map
|
|
8
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -12,6 +12,13 @@ export { WorkflowCanvasShell } from './workflow-canvas-shell.mjs';
|
|
|
12
12
|
export { AgentsWorkspace, AgentsWorkspaceProps } from './agents-workspace.mjs';
|
|
13
13
|
export { CreateSecretInput, SecretDetail, SecretSummary, UpdateSecretInput, addOrganizationDomain, addOrganizationMember, createOrganization, createOrganizationInvitation, createPermission, createSecret, createUser, deleteOrganization, deletePermission, deleteUser, disableSecret, getSecret, getUserPermissions, listOrganizationDomains, listOrganizationInvitations, listOrganizationMembers, listOrganizations, listPermissions, listSecrets, listUsers, removeOrganizationMember, resetUserPassword, rotateSecret, setUserPermissions, setWindsockAdminClient, updateOrganization, updatePermission, updateUser, verifyOrganizationDomain } from './windsock-admin-client.mjs';
|
|
14
14
|
import { AdminUserSummary, AuthOrganization } from '@datatechsolutions/shared-domain';
|
|
15
|
+
export { AdminClient, AdminCreateInvitationInput, AdminCreateOrganizationInput, AdminCreatePermissionInput, AdminCreateUserInput, AdminListParams, AdminListResult, AdminOrganizationDetailProps, AdminOrganizationDetailTab, AdminOrganizationFormProps, AdminOrganizationListProps, AdminOrganizationMember, AdminPermissionListProps, AdminUpdateOrganizationInput, AdminUpdatePermissionInput, AdminUpdateUserInput, AdminUserFormProps, AdminUserListProps, AdminUserSummary, ConsentScreenProps, ForgotPasswordProps, MfaChallengeProps, MfaManageProps, MfaSetupProps, PasswordlessSignInProps, ResetPasswordProps, SignInProps, SignUpProps, SsoConnector, SsoConnectorListProps, SsoEmailFormProps, UserButtonProps, UserProfileProps, VerifyEmailProps } from '@datatechsolutions/shared-domain';
|
|
16
|
+
export { AuthLayout, AuthLayoutProps, BackupCodeGrid, BackupCodeGridProps, ConsentScreen, ForgotPassword, LinkedAccountsTabContent, MfaChallenge, MfaManage, MfaSetup, OtpInput, OtpInputProps, PasswordStrengthMeter, PasswordStrengthMeterProps, PasswordlessSignIn, ProfileTabContent, ResetPassword, SecurityTabContent, SessionsTabContent, SignIn, SignUp, SocialLoginButtons, SocialLoginButtonsProps, SocialProvider, SsoConnectorList, SsoEmailForm, UserButton, UserProfile, VerifyEmail } from './auth/index.mjs';
|
|
17
|
+
export { B as BillingPanel, a as BillingPanelProps } from '../billing-panel-DsHhhJqG.mjs';
|
|
18
|
+
export { UpgradePrompt, UpgradePromptProps } from './billing/index.mjs';
|
|
19
|
+
export { ImpersonationBanner, ImpersonationBannerProps } from './impersonation/index.mjs';
|
|
20
|
+
export { AdminOrganizationDetail, AdminOrganizationForm, AdminOrganizationList, AdminPermissionList, AdminUserForm, AdminUserList } from './admin/index.mjs';
|
|
21
|
+
export { PlatformSettings, PlatformSettingsProps, PlatformSettingsSection } from './settings/index.mjs';
|
|
15
22
|
import 'zustand';
|
|
16
23
|
import '@xyflow/react';
|
|
17
24
|
import '../layout-engine-YZcVr20M.mjs';
|
|
@@ -83,7 +90,7 @@ declare function useWorkflowExecution(workflowId: string): {
|
|
|
83
90
|
execute: (inputVariables?: Record<string, VariableValue>) => Promise<void>;
|
|
84
91
|
stop: () => void;
|
|
85
92
|
runId: string | null;
|
|
86
|
-
runStatus: "error" | "idle" | "
|
|
93
|
+
runStatus: "error" | "idle" | "completed" | "failed" | "streaming";
|
|
87
94
|
};
|
|
88
95
|
|
|
89
96
|
type RunEventStreamState = {
|
package/dist/platform/index.d.ts
CHANGED
|
@@ -12,6 +12,13 @@ export { WorkflowCanvasShell } from './workflow-canvas-shell.js';
|
|
|
12
12
|
export { AgentsWorkspace, AgentsWorkspaceProps } from './agents-workspace.js';
|
|
13
13
|
export { CreateSecretInput, SecretDetail, SecretSummary, UpdateSecretInput, addOrganizationDomain, addOrganizationMember, createOrganization, createOrganizationInvitation, createPermission, createSecret, createUser, deleteOrganization, deletePermission, deleteUser, disableSecret, getSecret, getUserPermissions, listOrganizationDomains, listOrganizationInvitations, listOrganizationMembers, listOrganizations, listPermissions, listSecrets, listUsers, removeOrganizationMember, resetUserPassword, rotateSecret, setUserPermissions, setWindsockAdminClient, updateOrganization, updatePermission, updateUser, verifyOrganizationDomain } from './windsock-admin-client.js';
|
|
14
14
|
import { AdminUserSummary, AuthOrganization } from '@datatechsolutions/shared-domain';
|
|
15
|
+
export { AdminClient, AdminCreateInvitationInput, AdminCreateOrganizationInput, AdminCreatePermissionInput, AdminCreateUserInput, AdminListParams, AdminListResult, AdminOrganizationDetailProps, AdminOrganizationDetailTab, AdminOrganizationFormProps, AdminOrganizationListProps, AdminOrganizationMember, AdminPermissionListProps, AdminUpdateOrganizationInput, AdminUpdatePermissionInput, AdminUpdateUserInput, AdminUserFormProps, AdminUserListProps, AdminUserSummary, ConsentScreenProps, ForgotPasswordProps, MfaChallengeProps, MfaManageProps, MfaSetupProps, PasswordlessSignInProps, ResetPasswordProps, SignInProps, SignUpProps, SsoConnector, SsoConnectorListProps, SsoEmailFormProps, UserButtonProps, UserProfileProps, VerifyEmailProps } from '@datatechsolutions/shared-domain';
|
|
16
|
+
export { AuthLayout, AuthLayoutProps, BackupCodeGrid, BackupCodeGridProps, ConsentScreen, ForgotPassword, LinkedAccountsTabContent, MfaChallenge, MfaManage, MfaSetup, OtpInput, OtpInputProps, PasswordStrengthMeter, PasswordStrengthMeterProps, PasswordlessSignIn, ProfileTabContent, ResetPassword, SecurityTabContent, SessionsTabContent, SignIn, SignUp, SocialLoginButtons, SocialLoginButtonsProps, SocialProvider, SsoConnectorList, SsoEmailForm, UserButton, UserProfile, VerifyEmail } from './auth/index.js';
|
|
17
|
+
export { B as BillingPanel, a as BillingPanelProps } from '../billing-panel-DsHhhJqG.js';
|
|
18
|
+
export { UpgradePrompt, UpgradePromptProps } from './billing/index.js';
|
|
19
|
+
export { ImpersonationBanner, ImpersonationBannerProps } from './impersonation/index.js';
|
|
20
|
+
export { AdminOrganizationDetail, AdminOrganizationForm, AdminOrganizationList, AdminPermissionList, AdminUserForm, AdminUserList } from './admin/index.js';
|
|
21
|
+
export { PlatformSettings, PlatformSettingsProps, PlatformSettingsSection } from './settings/index.js';
|
|
15
22
|
import 'zustand';
|
|
16
23
|
import '@xyflow/react';
|
|
17
24
|
import '../layout-engine-YZcVr20M.js';
|
|
@@ -83,7 +90,7 @@ declare function useWorkflowExecution(workflowId: string): {
|
|
|
83
90
|
execute: (inputVariables?: Record<string, VariableValue>) => Promise<void>;
|
|
84
91
|
stop: () => void;
|
|
85
92
|
runId: string | null;
|
|
86
|
-
runStatus: "error" | "idle" | "
|
|
93
|
+
runStatus: "error" | "idle" | "completed" | "failed" | "streaming";
|
|
87
94
|
};
|
|
88
95
|
|
|
89
96
|
type RunEventStreamState = {
|
package/dist/platform/index.js
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunk3YVQXDKJ_js = require('../chunk-3YVQXDKJ.js');
|
|
5
|
+
var chunkZARCUQA6_js = require('../chunk-ZARCUQA6.js');
|
|
6
|
+
var chunkLBALE4JX_js = require('../chunk-LBALE4JX.js');
|
|
7
|
+
var chunkSAYVWIMJ_js = require('../chunk-SAYVWIMJ.js');
|
|
8
|
+
var chunkP4RVGMZL_js = require('../chunk-P4RVGMZL.js');
|
|
5
9
|
var chunkK26RY4EQ_js = require('../chunk-K26RY4EQ.js');
|
|
10
|
+
var chunkUVEPTYZC_js = require('../chunk-UVEPTYZC.js');
|
|
11
|
+
var chunkUUHV5KHF_js = require('../chunk-UUHV5KHF.js');
|
|
12
|
+
var chunkX2KCCQPL_js = require('../chunk-X2KCCQPL.js');
|
|
13
|
+
var chunkMXFEU7A6_js = require('../chunk-MXFEU7A6.js');
|
|
14
|
+
var chunkQ2MG7S2E_js = require('../chunk-Q2MG7S2E.js');
|
|
6
15
|
var chunkURDQSUW6_js = require('../chunk-URDQSUW6.js');
|
|
7
16
|
require('../chunk-SV4SMITM.js');
|
|
8
17
|
var chunk2URBM4LA_js = require('../chunk-2URBM4LA.js');
|
|
@@ -552,10 +561,142 @@ Object.defineProperty(exports, "WorkflowCanvasShell", {
|
|
|
552
561
|
enumerable: true,
|
|
553
562
|
get: function () { return chunk3YVQXDKJ_js.WorkflowCanvasShell; }
|
|
554
563
|
});
|
|
564
|
+
Object.defineProperty(exports, "AdminOrganizationForm", {
|
|
565
|
+
enumerable: true,
|
|
566
|
+
get: function () { return chunkZARCUQA6_js.AdminOrganizationForm; }
|
|
567
|
+
});
|
|
568
|
+
Object.defineProperty(exports, "AdminOrganizationList", {
|
|
569
|
+
enumerable: true,
|
|
570
|
+
get: function () { return chunkZARCUQA6_js.AdminOrganizationList; }
|
|
571
|
+
});
|
|
572
|
+
Object.defineProperty(exports, "AdminPermissionList", {
|
|
573
|
+
enumerable: true,
|
|
574
|
+
get: function () { return chunkZARCUQA6_js.AdminPermissionList; }
|
|
575
|
+
});
|
|
576
|
+
Object.defineProperty(exports, "AdminUserForm", {
|
|
577
|
+
enumerable: true,
|
|
578
|
+
get: function () { return chunkZARCUQA6_js.AdminUserForm; }
|
|
579
|
+
});
|
|
580
|
+
Object.defineProperty(exports, "AdminUserList", {
|
|
581
|
+
enumerable: true,
|
|
582
|
+
get: function () { return chunkZARCUQA6_js.AdminUserList; }
|
|
583
|
+
});
|
|
584
|
+
Object.defineProperty(exports, "ConsentScreen", {
|
|
585
|
+
enumerable: true,
|
|
586
|
+
get: function () { return chunkLBALE4JX_js.ConsentScreen; }
|
|
587
|
+
});
|
|
588
|
+
Object.defineProperty(exports, "ForgotPassword", {
|
|
589
|
+
enumerable: true,
|
|
590
|
+
get: function () { return chunkLBALE4JX_js.ForgotPassword; }
|
|
591
|
+
});
|
|
592
|
+
Object.defineProperty(exports, "MfaChallenge", {
|
|
593
|
+
enumerable: true,
|
|
594
|
+
get: function () { return chunkLBALE4JX_js.MfaChallenge; }
|
|
595
|
+
});
|
|
596
|
+
Object.defineProperty(exports, "PasswordlessSignIn", {
|
|
597
|
+
enumerable: true,
|
|
598
|
+
get: function () { return chunkLBALE4JX_js.PasswordlessSignIn; }
|
|
599
|
+
});
|
|
600
|
+
Object.defineProperty(exports, "ResetPassword", {
|
|
601
|
+
enumerable: true,
|
|
602
|
+
get: function () { return chunkLBALE4JX_js.ResetPassword; }
|
|
603
|
+
});
|
|
604
|
+
Object.defineProperty(exports, "SignIn", {
|
|
605
|
+
enumerable: true,
|
|
606
|
+
get: function () { return chunkLBALE4JX_js.SignIn; }
|
|
607
|
+
});
|
|
608
|
+
Object.defineProperty(exports, "SignUp", {
|
|
609
|
+
enumerable: true,
|
|
610
|
+
get: function () { return chunkLBALE4JX_js.SignUp; }
|
|
611
|
+
});
|
|
612
|
+
Object.defineProperty(exports, "SsoConnectorList", {
|
|
613
|
+
enumerable: true,
|
|
614
|
+
get: function () { return chunkLBALE4JX_js.SsoConnectorList; }
|
|
615
|
+
});
|
|
616
|
+
Object.defineProperty(exports, "SsoEmailForm", {
|
|
617
|
+
enumerable: true,
|
|
618
|
+
get: function () { return chunkLBALE4JX_js.SsoEmailForm; }
|
|
619
|
+
});
|
|
620
|
+
Object.defineProperty(exports, "UserButton", {
|
|
621
|
+
enumerable: true,
|
|
622
|
+
get: function () { return chunkLBALE4JX_js.UserButton; }
|
|
623
|
+
});
|
|
624
|
+
Object.defineProperty(exports, "VerifyEmail", {
|
|
625
|
+
enumerable: true,
|
|
626
|
+
get: function () { return chunkLBALE4JX_js.VerifyEmail; }
|
|
627
|
+
});
|
|
628
|
+
Object.defineProperty(exports, "ImpersonationBanner", {
|
|
629
|
+
enumerable: true,
|
|
630
|
+
get: function () { return chunkSAYVWIMJ_js.ImpersonationBanner; }
|
|
631
|
+
});
|
|
632
|
+
Object.defineProperty(exports, "UpgradePrompt", {
|
|
633
|
+
enumerable: true,
|
|
634
|
+
get: function () { return chunkP4RVGMZL_js.UpgradePrompt; }
|
|
635
|
+
});
|
|
555
636
|
Object.defineProperty(exports, "WorkflowWorkspace", {
|
|
556
637
|
enumerable: true,
|
|
557
638
|
get: function () { return chunkK26RY4EQ_js.WorkflowWorkspace; }
|
|
558
639
|
});
|
|
640
|
+
Object.defineProperty(exports, "PlatformSettings", {
|
|
641
|
+
enumerable: true,
|
|
642
|
+
get: function () { return chunkUVEPTYZC_js.PlatformSettings; }
|
|
643
|
+
});
|
|
644
|
+
Object.defineProperty(exports, "AdminOrganizationDetail", {
|
|
645
|
+
enumerable: true,
|
|
646
|
+
get: function () { return chunkUUHV5KHF_js.AdminOrganizationDetail; }
|
|
647
|
+
});
|
|
648
|
+
Object.defineProperty(exports, "LinkedAccountsTabContent", {
|
|
649
|
+
enumerable: true,
|
|
650
|
+
get: function () { return chunkX2KCCQPL_js.LinkedAccountsTabContent; }
|
|
651
|
+
});
|
|
652
|
+
Object.defineProperty(exports, "MfaManage", {
|
|
653
|
+
enumerable: true,
|
|
654
|
+
get: function () { return chunkX2KCCQPL_js.MfaManage; }
|
|
655
|
+
});
|
|
656
|
+
Object.defineProperty(exports, "MfaSetup", {
|
|
657
|
+
enumerable: true,
|
|
658
|
+
get: function () { return chunkX2KCCQPL_js.MfaSetup; }
|
|
659
|
+
});
|
|
660
|
+
Object.defineProperty(exports, "ProfileTabContent", {
|
|
661
|
+
enumerable: true,
|
|
662
|
+
get: function () { return chunkX2KCCQPL_js.ProfileTabContent; }
|
|
663
|
+
});
|
|
664
|
+
Object.defineProperty(exports, "SecurityTabContent", {
|
|
665
|
+
enumerable: true,
|
|
666
|
+
get: function () { return chunkX2KCCQPL_js.SecurityTabContent; }
|
|
667
|
+
});
|
|
668
|
+
Object.defineProperty(exports, "SessionsTabContent", {
|
|
669
|
+
enumerable: true,
|
|
670
|
+
get: function () { return chunkX2KCCQPL_js.SessionsTabContent; }
|
|
671
|
+
});
|
|
672
|
+
Object.defineProperty(exports, "UserProfile", {
|
|
673
|
+
enumerable: true,
|
|
674
|
+
get: function () { return chunkX2KCCQPL_js.UserProfile; }
|
|
675
|
+
});
|
|
676
|
+
Object.defineProperty(exports, "AuthLayout", {
|
|
677
|
+
enumerable: true,
|
|
678
|
+
get: function () { return chunkMXFEU7A6_js.AuthLayout; }
|
|
679
|
+
});
|
|
680
|
+
Object.defineProperty(exports, "BackupCodeGrid", {
|
|
681
|
+
enumerable: true,
|
|
682
|
+
get: function () { return chunkMXFEU7A6_js.BackupCodeGrid; }
|
|
683
|
+
});
|
|
684
|
+
Object.defineProperty(exports, "OtpInput", {
|
|
685
|
+
enumerable: true,
|
|
686
|
+
get: function () { return chunkMXFEU7A6_js.OtpInput; }
|
|
687
|
+
});
|
|
688
|
+
Object.defineProperty(exports, "PasswordStrengthMeter", {
|
|
689
|
+
enumerable: true,
|
|
690
|
+
get: function () { return chunkMXFEU7A6_js.PasswordStrengthMeter; }
|
|
691
|
+
});
|
|
692
|
+
Object.defineProperty(exports, "SocialLoginButtons", {
|
|
693
|
+
enumerable: true,
|
|
694
|
+
get: function () { return chunkMXFEU7A6_js.SocialLoginButtons; }
|
|
695
|
+
});
|
|
696
|
+
Object.defineProperty(exports, "BillingPanel", {
|
|
697
|
+
enumerable: true,
|
|
698
|
+
get: function () { return chunkQ2MG7S2E_js.BillingPanel; }
|
|
699
|
+
});
|
|
559
700
|
Object.defineProperty(exports, "AgentsWorkspace", {
|
|
560
701
|
enumerable: true,
|
|
561
702
|
get: function () { return chunkURDQSUW6_js.AgentsWorkspace; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/platform/session-switcher.tsx","../../src/platform/dock-container.tsx","../../src/hooks/use-locale-switcher.ts","../../src/platform/preferences-controls.tsx","../../src/platform/windsock-mappers.ts","../../src/platform/admin-settings-sections.tsx","../../src/platform/ai-workflow-generate-modal.tsx","../../src/platform/workflow-template-modal.tsx"],"names":["useTranslations","jsxs","jsx","Select","Button","usePathname","useRouter","useAuth","usePlatformPreferences","useState","useMemo","filterByPermission","useCallback","Fragment","AppNavigation","GlassModal","useLocale","client","useWindsockAuth","applyClientLocale","LOCALE_TO_SHORT","SUPPORTED_LOCALES","LANGUAGE_META","IconButton","SunIcon","MoonIcon","usePlatformState","useNotifications","listUsers","useEffect","UsersPageView","createUser","RolesPageView","addOrganizationMember","listModelProviderConnections","aiGenerateWorkflow","createWorkflow","saveWorkflowDraft","Textarea","listWorkflowTemplates","createWorkflowFromTemplate"],"mappings":"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","file":"index.js","sourcesContent":["import { Select, Button } from '@ui/index'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport type { SessionSwitcherProps } from '@datatechsolutions/shared-domain/common'\n\nexport function SessionSwitcher({\n organizations,\n users,\n organizationId,\n userEmail,\n onOrganizationChange,\n onUserChange,\n}: SessionSwitcherProps) {\n const tSession = useTranslations('platform.session')\n const tCommon = useTranslations('common')\n\n return (\n <div className=\"session-switcher\">\n <Select\n value={organizationId}\n aria-label={tSession('organization')}\n onChange={(event) => {\n onOrganizationChange(event.target.value)\n }}\n options={organizations}\n placeholder={tSession('organization')}\n />\n <Select\n value={userEmail}\n aria-label={tSession('user')}\n onChange={(event) => {\n onUserChange(event.target.value)\n }}\n options={users}\n placeholder={tSession('user')}\n />\n <Button outline onClick={() => globalThis.location.reload()}>\n {tCommon('refresh')}\n </Button>\n </div>\n )\n}\n","import { useMemo, useState, useCallback } from 'react'\nimport { useAuth, usePlatformPreferences } from '@datatechsolutions/windsock/client'\nimport type { AuthUser } from '@datatechsolutions/windsock/client'\nimport {\n AppNavigation,\n filterByPermission,\n GlassModal,\n type NavigationItem,\n} from '@ui/index'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { usePathname, useRouter } from '@ui/lib/router-context'\n\nexport type PlatformDockContainerProps = {\n /** JWT-derived actor used for permission filtering. */\n actor: AuthUser | null\n /** App-specific navigation items (already translated). */\n navigationItems: NavigationItem[]\n /**\n * Pathname where the dock should be hidden (defaults to `/dashboard`).\n * The dashboard typically owns its own navigation chrome.\n */\n dashboardPath?: string\n /** Path to redirect to on sign-out (defaults to `/login`). */\n signOutPath?: string\n}\n\n/**\n * Floating dock + profile-modal trigger shared by every platform app.\n * Reads the active route from ui's router context and uses windsock for\n * preferences + sign-out, so the consumer only has to wire up navigation\n * items + an optional dashboard/sign-out path.\n */\nexport function PlatformDockContainer({\n actor,\n navigationItems,\n dashboardPath = '/dashboard',\n signOutPath = '/login',\n}: PlatformDockContainerProps) {\n const pathname = usePathname()\n const router = useRouter()\n const { logout } = useAuth()\n const tCommon = useTranslations('common')\n const {\n dockPosition,\n dockAutoHide,\n dockEnabled,\n } = usePlatformPreferences()\n const [profileOpen, setProfileOpen] = useState(false)\n\n const filteredItems = useMemo(\n () => filterByPermission(navigationItems, (actor as { permissions?: string[] } | null)?.permissions ?? []),\n [navigationItems, actor],\n )\n\n const handleNavigate = useCallback((href: string) => router.push(href), [router])\n const handleSignOut = useCallback(() => { void logout(signOutPath) }, [logout, signOutPath])\n\n if (pathname === dashboardPath) return null\n\n return (\n <>\n <AppNavigation\n items={filteredItems}\n pathname={pathname}\n dockEnabled={dockEnabled}\n dockPosition={dockPosition as 'left' | 'right' | 'bottom'}\n dockAutoHide={dockAutoHide}\n showLaunchpad={false}\n onNavigate={handleNavigate}\n onOpenProfile={() => setProfileOpen(true)}\n onSignOut={handleSignOut}\n labels={{\n home: tCommon('home'),\n profile: tCommon('profile'),\n signOut: tCommon('signOut'),\n }}\n />\n <GlassModal\n open={profileOpen}\n onClose={() => setProfileOpen(false)}\n title={tCommon('profile')}\n >\n <div />\n </GlassModal>\n </>\n )\n}\n","import { useCallback } from 'react'\nimport { useAuth as useWindsockAuth } from '@datatechsolutions/windsock/client'\nimport type { LocaleCode } from '@datatechsolutions/shared-domain/common'\nimport {\n applyClientLocale,\n LOCALE_TO_SHORT,\n SUPPORTED_LOCALES,\n} from '@datatechsolutions/shared-domain/i18n'\nimport { useLocale } from '@ui/lib/i18n-context'\n\n/**\n * Locale switcher hook — reads the current locale from the i18n context and\n * pushes the user's choice through windsock so the next session inherits it.\n *\n * Lifted from astrlabe; consumers (astrlabe, kori-erp) wrap their tree in\n * `<I18nProvider>` + windsock's `<AuthProvider>` and import this directly.\n */\nexport function useLocaleSwitcher() {\n const locale = useLocale() as LocaleCode\n const { client } = useWindsockAuth()\n\n const setLocale = useCallback(\n (newLocale: LocaleCode | string) => {\n const resolved = applyClientLocale(newLocale)\n client.updateLocale(resolved)\n },\n [client],\n )\n\n return {\n locale,\n shortCode: LOCALE_TO_SHORT[locale] || 'pt',\n setLocale,\n locales: SUPPORTED_LOCALES,\n }\n}\n","import { MoonIcon, SunIcon } from '@heroicons/react/24/outline'\nimport { Select, IconButton } from '@ui/index'\nimport { SUPPORTED_LOCALES, LANGUAGE_META } from '@datatechsolutions/shared-domain/i18n'\nimport { usePlatformPreferences } from '@datatechsolutions/windsock/client'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { useLocaleSwitcher } from '@ui/hooks/use-locale-switcher'\n\nconst LOCALE_OPTIONS = SUPPORTED_LOCALES.map((code) => ({\n value: code,\n label: LANGUAGE_META[code].nativeName,\n}))\n\n/**\n * Locale + theme controls used inside the platform preferences drawer.\n * Reads the active locale from the i18n context and the theme/dock\n * preferences from windsock — both shared providers consuming apps must\n * mount above this component.\n */\nexport function PreferencesControls() {\n const { locale, setLocale } = useLocaleSwitcher()\n const { theme, setTheme } = usePlatformPreferences()\n const toggleTheme = () => setTheme(theme === 'dark' ? 'light' : 'dark')\n const t = useTranslations('platform.preferences')\n\n return (\n <div className=\"preferences-controls\">\n <Select\n value={locale}\n options={LOCALE_OPTIONS}\n onChange={(event) => setLocale(event.target.value)}\n />\n <IconButton\n label={t('theme')}\n icon={theme === 'dark' ? <SunIcon /> : <MoonIcon />}\n onClick={toggleTheme}\n variant=\"outline\"\n />\n </div>\n )\n}\n","import type {\n AdminUserSummary,\n AuthOrganization,\n} from '@datatechsolutions/shared-domain'\nimport type { ManagedUser, Organization, UserRole } from '@datatechsolutions/shared-domain/common'\n\n/** Maps a windsock AuthOrganization to the app-level Organization shape used by UI pages. */\nexport function mapAuthOrg(raw: AuthOrganization): Organization {\n return {\n id: raw.id,\n name: raw.displayName ?? raw.name,\n currency: 'BRL',\n country: 'BR',\n } as Organization\n}\n\n/**\n * Maps a windsock AdminUserSummary to the app-level ManagedUser shape.\n * Takes `normalizeRole` as a parameter so each consuming app can plug in\n * the role normalizer produced by its own `createPlatformRbac()` call —\n * we deliberately don't hardcode an app-specific role enum here.\n */\nexport function mapAdminUser(\n row: AdminUserSummary,\n normalizeRole: (input: unknown) => string,\n): ManagedUser {\n return {\n id: row.id,\n email: row.email,\n name: row.name ?? row.email,\n role: normalizeRole(row.role) as UserRole,\n active: row.status === 'active',\n }\n}\n\n/** Maps an app-level UserRole to a windsock AuthOrganizationRole. */\nexport const ORG_ROLE_MAP: Record<string, 'owner' | 'admin' | 'member' | 'viewer'> = {\n owner: 'owner',\n admin: 'admin',\n manager: 'admin',\n analyst: 'member',\n operator: 'member',\n viewer: 'viewer',\n finance: 'member',\n sales: 'member',\n support: 'member',\n member: 'member',\n}\n\nexport function mapRoleToOrgRole(role: string): 'owner' | 'admin' | 'member' | 'viewer' {\n return ORG_ROLE_MAP[role] ?? 'member'\n}\n","import { useEffect, useState } from 'react'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { useNotifications } from '@ui/components/notifications'\nimport type { ManagedUser } from '@datatechsolutions/shared-domain/common'\nimport {\n listUsers,\n createUser as createUserApi,\n addOrganizationMember,\n} from './windsock-admin-client'\nimport { mapAdminUser, mapRoleToOrgRole } from './windsock-mappers'\nimport { UsersPageView } from './pages/users-page-view'\nimport { RolesPageView } from './pages/roles-page-view'\nimport { usePlatformState } from './platform-state-provider'\nimport type { PlatformRoleDefinition } from './rbac'\n\nexport type UsersSettingsSectionProps = {\n /**\n * Role normalizer produced by each app's `createPlatformRbac()` call.\n * Used to coerce JWT role strings into the app's canonical role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport type RolesSettingsSectionProps = UsersSettingsSectionProps & {\n /** App-defined role definitions (from `createPlatformRbac`). */\n roleDefinitions: Record<string, PlatformRoleDefinition<string>>\n /** Display options for the role-assignment select. */\n roleOptions: Array<{ value: string; label: string }>\n}\n\nexport function UsersSettingsSection({ normalizeRole }: UsersSettingsSectionProps) {\n const t = useTranslations('platform.users')\n const { currentOrganizationId } = usePlatformState()\n const { error: notifyError, success: notifySuccess } = useNotifications()\n const [users, setUsers] = useState<ManagedUser[]>([])\n const [loading, setLoading] = useState(true)\n\n const reload = async () => {\n try {\n const result = await listUsers({ organizationId: currentOrganizationId })\n setUsers(result.items.map((row) => mapAdminUser(row, normalizeRole)))\n } catch (error) {\n notifyError((error as Error).message)\n } finally {\n setLoading(false)\n }\n }\n\n useEffect(() => {\n void reload()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentOrganizationId])\n\n return (\n <UsersPageView\n labels={{\n title: t('title'),\n subtitle: t('subtitle'),\n create: t('create'),\n list: t('list'),\n add: t('add'),\n statusActive: t('statusActive'),\n statusInactive: t('statusInactive'),\n name: t('name'),\n email: t('email'),\n role: t('role'),\n status: t('status'),\n save: t('save'),\n userNamePlaceholder: t('userNamePlaceholder'),\n userEmailPlaceholder: t('userEmailPlaceholder'),\n }}\n users={loading ? [] : users}\n onCreateUser={async ({ name, email, role }) => {\n try {\n await createUserApi({ name, email, role: role as never, organizationId: currentOrganizationId })\n notifySuccess(t('add'))\n await reload()\n } catch (error) {\n notifyError((error as Error).message)\n }\n }}\n onUpdateRole={() => {\n notifyError(t('reassignInRolesTab'))\n }}\n />\n )\n}\n\nexport function RolesSettingsSection({ roleDefinitions, roleOptions, normalizeRole }: RolesSettingsSectionProps) {\n const t = useTranslations('platform.roles')\n const { currentOrganizationId } = usePlatformState()\n const { error: notifyError, success: notifySuccess } = useNotifications()\n const [users, setUsers] = useState<ManagedUser[]>([])\n\n useEffect(() => {\n listUsers({ organizationId: currentOrganizationId })\n .then((result) => setUsers(result.items.map((row) => mapAdminUser(row, normalizeRole))))\n .catch((error: Error) => notifyError(error.message))\n }, [currentOrganizationId, notifyError, normalizeRole])\n\n return (\n <RolesPageView\n roleDefinitions={roleDefinitions}\n roleOptions={roleOptions}\n labels={{\n title: t('title'),\n subtitle: t('subtitle'),\n definitions: t('definitions'),\n assign: t('assign'),\n current: t('current'),\n permissionsEnabled: t('permissionsEnabled'),\n apply: t('apply'),\n role: t('role'),\n description: t('description'),\n user: t('user'),\n email: t('email'),\n userEmail: t('userEmail'),\n }}\n users={users}\n onAssignRole={async ({ email, role }) => {\n const target = users.find((user) => user.email.toLowerCase() === email.toLowerCase())\n if (!target) {\n notifyError(t('userNotFound'))\n return\n }\n try {\n await addOrganizationMember(currentOrganizationId, target.id, mapRoleToOrgRole(role))\n notifySuccess(t('apply'))\n } catch (error) {\n notifyError((error as Error).message)\n }\n }}\n />\n )\n}\n","import { useEffect, useState } from 'react'\nimport { GlassModal, Textarea } from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport type { Workflow } from '@ui/astrlabe/contracts'\nimport {\n aiGenerateWorkflow,\n createWorkflow,\n listModelProviderConnections,\n saveWorkflowDraft,\n type ModelProviderConnection,\n} from './workflow-api-client'\n\ninterface Props {\n open: boolean\n onClose: () => void\n onGenerated: (workflow: Workflow) => void\n}\n\n/**\n * Minimal NL → graph generator surface. Lets the user pick one of the\n * org's model provider connections, enter a prompt, and produces a\n * Workflow row whose `graph` is the LLM's output. The caller navigates\n * the editor to the new workflow once generation succeeds — validation\n * issues are surfaced as notifications so the user can iterate.\n */\nexport function AiWorkflowGenerateModal({ open, onClose, onGenerated }: Props) {\n const { error: notifyError, success: notifySuccess } = useNotifications()\n const t = useTranslations('agents.workflow')\n const [connections, setConnections] = useState<ModelProviderConnection[]>([])\n const [connectionId, setConnectionId] = useState('')\n const [prompt, setPrompt] = useState('')\n const [busy, setBusy] = useState(false)\n\n useEffect(() => {\n if (!open) return\n listModelProviderConnections()\n .then((items) => {\n setConnections(items)\n const firstEnabled = items.find((item) => item.enabled) ?? items[0]\n setConnectionId(firstEnabled?.id ?? '')\n })\n .catch((error: Error) => notifyError(error.message))\n }, [open, notifyError])\n\n async function handleSubmit() {\n if (!connectionId) { notifyError(t('aiErrorMissingConnection')); return }\n if (prompt.trim().length === 0) { notifyError(t('aiErrorMissingPrompt')); return }\n setBusy(true)\n try {\n const generation = await aiGenerateWorkflow({ prompt: prompt.trim(), connectionId })\n const workflow = await createWorkflow({ name: deriveWorkflowName(prompt) })\n const saved = await saveWorkflowDraft(workflow.id, generation.graph, { name: workflow.name })\n if (!generation.ok) {\n notifyError(\n t('aiWarnValidation'),\n [...generation.structuralIssues, ...generation.nodeIssues.map((issue) => `${issue.nodeId}: ${issue.message}`)].join('\\n'),\n )\n } else {\n notifySuccess(t('aiSuccessGenerated'))\n }\n onGenerated(saved)\n onClose()\n setPrompt('')\n } catch (error) {\n notifyError((error as Error).message)\n } finally {\n setBusy(false)\n }\n }\n\n return (\n <GlassModal\n open={open}\n onClose={onClose}\n title={t('aiTitle')}\n subtitle={t('aiSubtitle')}\n onSubmit={handleSubmit}\n showFormFooter\n submitLabel={busy ? t('aiGenerateBusy') : t('aiGenerate')}\n cancelLabel={t('aiCancel')}\n submitDisabled={busy}\n isLoading={busy}\n >\n <div className=\"space-y-4\">\n <label className=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">\n {t('aiConnection')}\n <select\n className=\"mt-1 w-full rounded-lg border border-slate-200 bg-white px-3 py-2 text-sm text-slate-900 dark:border-white/10 dark:bg-white/5 dark:text-slate-100\"\n value={connectionId}\n onChange={(event) => setConnectionId(event.target.value)}\n disabled={busy}\n >\n <option value=\"\">{t('aiConnectionPlaceholder')}</option>\n {connections.map((connection) => (\n <option key={connection.id} value={connection.id}>\n {connection.name} {connection.enabled ? '' : t('aiDisabledSuffix')}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">\n {t('aiPromptLabel')}\n <Textarea\n rows={6}\n className=\"mt-1 w-full\"\n placeholder={t('aiPromptPlaceholder')}\n value={prompt}\n onChange={(event) => setPrompt(event.target.value)}\n disabled={busy}\n />\n </label>\n\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">\n {t('aiFooterNote')}\n </p>\n </div>\n </GlassModal>\n )\n}\n\nfunction deriveWorkflowName(prompt: string): string {\n const trimmed = prompt.trim().replace(/\\s+/g, ' ')\n if (trimmed.length <= 60) return trimmed\n return `${trimmed.slice(0, 57)}…`\n}\n","/**\n * WorkflowTemplateModal\n * =====================\n *\n * Lets the user instantiate a pre-built workflow template (e.g. the\n * fuel-pricing dashboard flow) from the workflows list page. The template\n * requires a `connectionId` that references one of the org's\n * `model_provider_connections` rows — we load the list on open so the\n * picker is always fresh.\n *\n * Why not inline in `workflows-page-client.tsx`? Two reasons:\n * 1. Keeps the modal focused: one component, one responsibility.\n * 2. Makes the flow testable end-to-end without mounting the whole page.\n */\n\n'use client'\n\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { GlassModal } from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport {\n createWorkflowFromTemplate,\n listModelProviderConnections,\n listWorkflowTemplates,\n type ModelProviderConnection,\n type WorkflowTemplateSummary,\n} from './workflow-api-client'\nimport type { Workflow } from '@ui/astrlabe/contracts'\n\nexport interface WorkflowTemplateModalProps {\n open: boolean\n onClose: () => void\n onCreated: (workflow: Workflow) => void\n}\n\nexport function WorkflowTemplateModal({ open, onClose, onCreated }: WorkflowTemplateModalProps) {\n const tWorkflow = useTranslations('agents.workflow')\n const tCommon = useTranslations('common')\n const { error: notifyError, success: notifySuccess } = useNotifications()\n\n const [templates, setTemplates] = useState<WorkflowTemplateSummary[]>([])\n const [connections, setConnections] = useState<ModelProviderConnection[]>([])\n const [templateId, setTemplateId] = useState<string>('')\n const [connectionId, setConnectionId] = useState<string>('')\n const [name, setName] = useState<string>('')\n const [isLoading, setIsLoading] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n // Load templates + connections when the modal opens. Clear prior state so\n // reopening feels fresh.\n useEffect(() => {\n if (!open) return\n let cancelled = false\n setIsLoading(true)\n setTemplateId('')\n setConnectionId('')\n setName('')\n ;(async () => {\n try {\n const [tpls, conns] = await Promise.all([\n listWorkflowTemplates(),\n listModelProviderConnections(),\n ])\n if (cancelled) return\n setTemplates(tpls)\n setConnections(conns)\n if (tpls.length > 0) {\n const firstTemplate = tpls[0]\n if (firstTemplate) setTemplateId(firstTemplate.id)\n }\n if (conns.length > 0) {\n const firstConnection = conns[0]\n if (firstConnection) setConnectionId(firstConnection.id)\n }\n } catch (error) {\n if (!cancelled) notifyError((error as Error).message)\n } finally {\n if (!cancelled) setIsLoading(false)\n }\n })()\n return () => {\n cancelled = true\n }\n }, [open, notifyError])\n\n const selectedTemplate = useMemo(\n () => templates.find((t) => t.id === templateId),\n [templates, templateId],\n )\n\n const canSubmit =\n !isLoading && !isSubmitting && templateId.length > 0 && connectionId.length > 0\n\n const handleSubmit = useCallback(async () => {\n if (!canSubmit) return\n setIsSubmitting(true)\n try {\n const created = await createWorkflowFromTemplate(templateId, {\n connectionId,\n name: name.trim().length > 0 ? name.trim() : undefined,\n })\n notifySuccess(tWorkflow('templateCreatedSuccess'))\n onCreated(created)\n onClose()\n } catch (error) {\n notifyError((error as Error).message)\n } finally {\n setIsSubmitting(false)\n }\n }, [canSubmit, templateId, connectionId, name, onCreated, onClose, notifySuccess, notifyError, tWorkflow])\n\n return (\n <GlassModal\n open={open}\n onClose={onClose}\n title={tWorkflow('createFromTemplate')}\n subtitle={selectedTemplate?.description ?? tWorkflow('createFromTemplateSubtitle')}\n gradient=\"from-indigo-500 to-purple-600\"\n showFormFooter\n onSubmit={(event) => {\n event.preventDefault()\n void handleSubmit()\n }}\n isLoading={isSubmitting}\n submitDisabled={!canSubmit}\n submitLabel={tCommon('create')}\n cancelLabel={tCommon('cancel')}\n maxWidth=\"lg\"\n >\n <div className=\"space-y-4\">\n {isLoading ? (\n <div className=\"shimmer h-32 w-full rounded-xl\" />\n ) : templates.length === 0 ? (\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\n {tWorkflow('noTemplatesAvailable')}\n </p>\n ) : (\n <>\n <label className=\"block\">\n <span className=\"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300\">\n {tWorkflow('template')}\n </span>\n <select\n className=\"w-full rounded-lg border border-white/20 bg-white/70 px-3 py-2 text-sm text-gray-900 shadow-sm backdrop-blur dark:bg-gray-800/70 dark:text-gray-100\"\n value={templateId}\n onChange={(event) => setTemplateId(event.target.value)}\n >\n {templates.map((template) => (\n <option key={template.id} value={template.id}>\n {template.name}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"block\">\n <span className=\"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300\">\n {tWorkflow('llmConnection')}\n </span>\n {connections.length === 0 ? (\n <p className=\"rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200\">\n {tWorkflow('noConnectionsHint')}\n </p>\n ) : (\n <select\n className=\"w-full rounded-lg border border-white/20 bg-white/70 px-3 py-2 text-sm text-gray-900 shadow-sm backdrop-blur dark:bg-gray-800/70 dark:text-gray-100\"\n value={connectionId}\n onChange={(event) => setConnectionId(event.target.value)}\n >\n {connections.map((connection) => (\n <option key={connection.id} value={connection.id}>\n {connection.name}\n {connection.providerSlug ? ` · ${connection.providerSlug}` : ''}\n </option>\n ))}\n </select>\n )}\n </label>\n\n <label className=\"block\">\n <span className=\"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300\">\n {tWorkflow('workflowName')}\n <span className=\"ml-1 text-[10px] text-gray-400\">\n ({tCommon('optional')})\n </span>\n </span>\n <input\n type=\"text\"\n value={name}\n placeholder={selectedTemplate?.name ?? ''}\n onChange={(event) => setName(event.target.value)}\n className=\"w-full rounded-lg border border-white/20 bg-white/70 px-3 py-2 text-sm text-gray-900 shadow-sm backdrop-blur dark:bg-gray-800/70 dark:text-gray-100\"\n />\n </label>\n\n {selectedTemplate && selectedTemplate.tags.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n {selectedTemplate.tags.map((tag) => (\n <span\n key={tag}\n className=\"rounded-full bg-indigo-500/10 px-2 py-0.5 text-[10px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300\"\n >\n {tag}\n </span>\n ))}\n </div>\n ) : null}\n </>\n )}\n </div>\n </GlassModal>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/platform/session-switcher.tsx","../../src/platform/dock-container.tsx","../../src/hooks/use-locale-switcher.ts","../../src/platform/preferences-controls.tsx","../../src/platform/windsock-mappers.ts","../../src/platform/admin-settings-sections.tsx","../../src/platform/ai-workflow-generate-modal.tsx","../../src/platform/workflow-template-modal.tsx"],"names":["useTranslations","jsxs","jsx","Select","Button","usePathname","useRouter","useAuth","usePlatformPreferences","useState","useMemo","filterByPermission","useCallback","Fragment","AppNavigation","GlassModal","useLocale","client","useWindsockAuth","applyClientLocale","LOCALE_TO_SHORT","SUPPORTED_LOCALES","LANGUAGE_META","IconButton","SunIcon","MoonIcon","usePlatformState","useNotifications","listUsers","useEffect","UsersPageView","createUser","RolesPageView","addOrganizationMember","listModelProviderConnections","aiGenerateWorkflow","createWorkflow","saveWorkflowDraft","Textarea","listWorkflowTemplates","createWorkflowFromTemplate"],"mappings":"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","file":"index.js","sourcesContent":["import { Select, Button } from '@ui/index'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport type { SessionSwitcherProps } from '@datatechsolutions/shared-domain/common'\n\nexport function SessionSwitcher({\n organizations,\n users,\n organizationId,\n userEmail,\n onOrganizationChange,\n onUserChange,\n}: SessionSwitcherProps) {\n const tSession = useTranslations('platform.session')\n const tCommon = useTranslations('common')\n\n return (\n <div className=\"session-switcher\">\n <Select\n value={organizationId}\n aria-label={tSession('organization')}\n onChange={(event) => {\n onOrganizationChange(event.target.value)\n }}\n options={organizations}\n placeholder={tSession('organization')}\n />\n <Select\n value={userEmail}\n aria-label={tSession('user')}\n onChange={(event) => {\n onUserChange(event.target.value)\n }}\n options={users}\n placeholder={tSession('user')}\n />\n <Button outline onClick={() => globalThis.location.reload()}>\n {tCommon('refresh')}\n </Button>\n </div>\n )\n}\n","import { useMemo, useState, useCallback } from 'react'\nimport { useAuth, usePlatformPreferences } from '@datatechsolutions/windsock/client'\nimport type { AuthUser } from '@datatechsolutions/windsock/client'\nimport {\n AppNavigation,\n filterByPermission,\n GlassModal,\n type NavigationItem,\n} from '@ui/index'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { usePathname, useRouter } from '@ui/lib/router-context'\n\nexport type PlatformDockContainerProps = {\n /** JWT-derived actor used for permission filtering. */\n actor: AuthUser | null\n /** App-specific navigation items (already translated). */\n navigationItems: NavigationItem[]\n /**\n * Pathname where the dock should be hidden (defaults to `/dashboard`).\n * The dashboard typically owns its own navigation chrome.\n */\n dashboardPath?: string\n /** Path to redirect to on sign-out (defaults to `/login`). */\n signOutPath?: string\n}\n\n/**\n * Floating dock + profile-modal trigger shared by every platform app.\n * Reads the active route from ui's router context and uses windsock for\n * preferences + sign-out, so the consumer only has to wire up navigation\n * items + an optional dashboard/sign-out path.\n */\nexport function PlatformDockContainer({\n actor,\n navigationItems,\n dashboardPath = '/dashboard',\n signOutPath = '/login',\n}: PlatformDockContainerProps) {\n const pathname = usePathname()\n const router = useRouter()\n const { logout } = useAuth()\n const tCommon = useTranslations('common')\n const {\n dockPosition,\n dockAutoHide,\n dockEnabled,\n } = usePlatformPreferences()\n const [profileOpen, setProfileOpen] = useState(false)\n\n const filteredItems = useMemo(\n () => filterByPermission(navigationItems, (actor as { permissions?: string[] } | null)?.permissions ?? []),\n [navigationItems, actor],\n )\n\n const handleNavigate = useCallback((href: string) => router.push(href), [router])\n const handleSignOut = useCallback(() => { void logout(signOutPath) }, [logout, signOutPath])\n\n if (pathname === dashboardPath) return null\n\n return (\n <>\n <AppNavigation\n items={filteredItems}\n pathname={pathname}\n dockEnabled={dockEnabled}\n dockPosition={dockPosition as 'left' | 'right' | 'bottom'}\n dockAutoHide={dockAutoHide}\n showLaunchpad={false}\n onNavigate={handleNavigate}\n onOpenProfile={() => setProfileOpen(true)}\n onSignOut={handleSignOut}\n labels={{\n home: tCommon('home'),\n profile: tCommon('profile'),\n signOut: tCommon('signOut'),\n }}\n />\n <GlassModal\n open={profileOpen}\n onClose={() => setProfileOpen(false)}\n title={tCommon('profile')}\n >\n <div />\n </GlassModal>\n </>\n )\n}\n","import { useCallback } from 'react'\nimport { useAuth as useWindsockAuth } from '@datatechsolutions/windsock/client'\nimport type { LocaleCode } from '@datatechsolutions/shared-domain/common'\nimport {\n applyClientLocale,\n LOCALE_TO_SHORT,\n SUPPORTED_LOCALES,\n} from '@datatechsolutions/shared-domain/i18n'\nimport { useLocale } from '@ui/lib/i18n-context'\n\n/**\n * Locale switcher hook — reads the current locale from the i18n context and\n * pushes the user's choice through windsock so the next session inherits it.\n *\n * Lifted from astrlabe; consumers (astrlabe, kori-erp) wrap their tree in\n * `<I18nProvider>` + windsock's `<AuthProvider>` and import this directly.\n */\nexport function useLocaleSwitcher() {\n const locale = useLocale() as LocaleCode\n const { client } = useWindsockAuth()\n\n const setLocale = useCallback(\n (newLocale: LocaleCode | string) => {\n const resolved = applyClientLocale(newLocale)\n client.updateLocale(resolved)\n },\n [client],\n )\n\n return {\n locale,\n shortCode: LOCALE_TO_SHORT[locale] || 'pt',\n setLocale,\n locales: SUPPORTED_LOCALES,\n }\n}\n","import { MoonIcon, SunIcon } from '@heroicons/react/24/outline'\nimport { Select, IconButton } from '@ui/index'\nimport { SUPPORTED_LOCALES, LANGUAGE_META } from '@datatechsolutions/shared-domain/i18n'\nimport { usePlatformPreferences } from '@datatechsolutions/windsock/client'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { useLocaleSwitcher } from '@ui/hooks/use-locale-switcher'\n\nconst LOCALE_OPTIONS = SUPPORTED_LOCALES.map((code) => ({\n value: code,\n label: LANGUAGE_META[code].nativeName,\n}))\n\n/**\n * Locale + theme controls used inside the platform preferences drawer.\n * Reads the active locale from the i18n context and the theme/dock\n * preferences from windsock — both shared providers consuming apps must\n * mount above this component.\n */\nexport function PreferencesControls() {\n const { locale, setLocale } = useLocaleSwitcher()\n const { theme, setTheme } = usePlatformPreferences()\n const toggleTheme = () => setTheme(theme === 'dark' ? 'light' : 'dark')\n const t = useTranslations('platform.preferences')\n\n return (\n <div className=\"preferences-controls\">\n <Select\n value={locale}\n options={LOCALE_OPTIONS}\n onChange={(event) => setLocale(event.target.value)}\n />\n <IconButton\n label={t('theme')}\n icon={theme === 'dark' ? <SunIcon /> : <MoonIcon />}\n onClick={toggleTheme}\n variant=\"outline\"\n />\n </div>\n )\n}\n","import type {\n AdminUserSummary,\n AuthOrganization,\n} from '@datatechsolutions/shared-domain'\nimport type { ManagedUser, Organization, UserRole } from '@datatechsolutions/shared-domain/common'\n\n/** Maps a windsock AuthOrganization to the app-level Organization shape used by UI pages. */\nexport function mapAuthOrg(raw: AuthOrganization): Organization {\n return {\n id: raw.id,\n name: raw.displayName ?? raw.name,\n currency: 'BRL',\n country: 'BR',\n } as Organization\n}\n\n/**\n * Maps a windsock AdminUserSummary to the app-level ManagedUser shape.\n * Takes `normalizeRole` as a parameter so each consuming app can plug in\n * the role normalizer produced by its own `createPlatformRbac()` call —\n * we deliberately don't hardcode an app-specific role enum here.\n */\nexport function mapAdminUser(\n row: AdminUserSummary,\n normalizeRole: (input: unknown) => string,\n): ManagedUser {\n return {\n id: row.id,\n email: row.email,\n name: row.name ?? row.email,\n role: normalizeRole(row.role) as UserRole,\n active: row.status === 'active',\n }\n}\n\n/** Maps an app-level UserRole to a windsock AuthOrganizationRole. */\nexport const ORG_ROLE_MAP: Record<string, 'owner' | 'admin' | 'member' | 'viewer'> = {\n owner: 'owner',\n admin: 'admin',\n manager: 'admin',\n analyst: 'member',\n operator: 'member',\n viewer: 'viewer',\n finance: 'member',\n sales: 'member',\n support: 'member',\n member: 'member',\n}\n\nexport function mapRoleToOrgRole(role: string): 'owner' | 'admin' | 'member' | 'viewer' {\n return ORG_ROLE_MAP[role] ?? 'member'\n}\n","import { useEffect, useState } from 'react'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { useNotifications } from '@ui/components/notifications'\nimport type { ManagedUser } from '@datatechsolutions/shared-domain/common'\nimport {\n listUsers,\n createUser as createUserApi,\n addOrganizationMember,\n} from './windsock-admin-client'\nimport { mapAdminUser, mapRoleToOrgRole } from './windsock-mappers'\nimport { UsersPageView } from './pages/users-page-view'\nimport { RolesPageView } from './pages/roles-page-view'\nimport { usePlatformState } from './platform-state-provider'\nimport type { PlatformRoleDefinition } from './rbac'\n\nexport type UsersSettingsSectionProps = {\n /**\n * Role normalizer produced by each app's `createPlatformRbac()` call.\n * Used to coerce JWT role strings into the app's canonical role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport type RolesSettingsSectionProps = UsersSettingsSectionProps & {\n /** App-defined role definitions (from `createPlatformRbac`). */\n roleDefinitions: Record<string, PlatformRoleDefinition<string>>\n /** Display options for the role-assignment select. */\n roleOptions: Array<{ value: string; label: string }>\n}\n\nexport function UsersSettingsSection({ normalizeRole }: UsersSettingsSectionProps) {\n const t = useTranslations('platform.users')\n const { currentOrganizationId } = usePlatformState()\n const { error: notifyError, success: notifySuccess } = useNotifications()\n const [users, setUsers] = useState<ManagedUser[]>([])\n const [loading, setLoading] = useState(true)\n\n const reload = async () => {\n try {\n const result = await listUsers({ organizationId: currentOrganizationId })\n setUsers(result.items.map((row) => mapAdminUser(row, normalizeRole)))\n } catch (error) {\n notifyError((error as Error).message)\n } finally {\n setLoading(false)\n }\n }\n\n useEffect(() => {\n void reload()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentOrganizationId])\n\n return (\n <UsersPageView\n labels={{\n title: t('title'),\n subtitle: t('subtitle'),\n create: t('create'),\n list: t('list'),\n add: t('add'),\n statusActive: t('statusActive'),\n statusInactive: t('statusInactive'),\n name: t('name'),\n email: t('email'),\n role: t('role'),\n status: t('status'),\n save: t('save'),\n userNamePlaceholder: t('userNamePlaceholder'),\n userEmailPlaceholder: t('userEmailPlaceholder'),\n }}\n users={loading ? [] : users}\n onCreateUser={async ({ name, email, role }) => {\n try {\n await createUserApi({ name, email, role: role as never, organizationId: currentOrganizationId })\n notifySuccess(t('add'))\n await reload()\n } catch (error) {\n notifyError((error as Error).message)\n }\n }}\n onUpdateRole={() => {\n notifyError(t('reassignInRolesTab'))\n }}\n />\n )\n}\n\nexport function RolesSettingsSection({ roleDefinitions, roleOptions, normalizeRole }: RolesSettingsSectionProps) {\n const t = useTranslations('platform.roles')\n const { currentOrganizationId } = usePlatformState()\n const { error: notifyError, success: notifySuccess } = useNotifications()\n const [users, setUsers] = useState<ManagedUser[]>([])\n\n useEffect(() => {\n listUsers({ organizationId: currentOrganizationId })\n .then((result) => setUsers(result.items.map((row) => mapAdminUser(row, normalizeRole))))\n .catch((error: Error) => notifyError(error.message))\n }, [currentOrganizationId, notifyError, normalizeRole])\n\n return (\n <RolesPageView\n roleDefinitions={roleDefinitions}\n roleOptions={roleOptions}\n labels={{\n title: t('title'),\n subtitle: t('subtitle'),\n definitions: t('definitions'),\n assign: t('assign'),\n current: t('current'),\n permissionsEnabled: t('permissionsEnabled'),\n apply: t('apply'),\n role: t('role'),\n description: t('description'),\n user: t('user'),\n email: t('email'),\n userEmail: t('userEmail'),\n }}\n users={users}\n onAssignRole={async ({ email, role }) => {\n const target = users.find((user) => user.email.toLowerCase() === email.toLowerCase())\n if (!target) {\n notifyError(t('userNotFound'))\n return\n }\n try {\n await addOrganizationMember(currentOrganizationId, target.id, mapRoleToOrgRole(role))\n notifySuccess(t('apply'))\n } catch (error) {\n notifyError((error as Error).message)\n }\n }}\n />\n )\n}\n","import { useEffect, useState } from 'react'\nimport { GlassModal, Textarea } from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport type { Workflow } from '@ui/astrlabe/contracts'\nimport {\n aiGenerateWorkflow,\n createWorkflow,\n listModelProviderConnections,\n saveWorkflowDraft,\n type ModelProviderConnection,\n} from './workflow-api-client'\n\ninterface Props {\n open: boolean\n onClose: () => void\n onGenerated: (workflow: Workflow) => void\n}\n\n/**\n * Minimal NL → graph generator surface. Lets the user pick one of the\n * org's model provider connections, enter a prompt, and produces a\n * Workflow row whose `graph` is the LLM's output. The caller navigates\n * the editor to the new workflow once generation succeeds — validation\n * issues are surfaced as notifications so the user can iterate.\n */\nexport function AiWorkflowGenerateModal({ open, onClose, onGenerated }: Props) {\n const { error: notifyError, success: notifySuccess } = useNotifications()\n const t = useTranslations('agents.workflow')\n const [connections, setConnections] = useState<ModelProviderConnection[]>([])\n const [connectionId, setConnectionId] = useState('')\n const [prompt, setPrompt] = useState('')\n const [busy, setBusy] = useState(false)\n\n useEffect(() => {\n if (!open) return\n listModelProviderConnections()\n .then((items) => {\n setConnections(items)\n const firstEnabled = items.find((item) => item.enabled) ?? items[0]\n setConnectionId(firstEnabled?.id ?? '')\n })\n .catch((error: Error) => notifyError(error.message))\n }, [open, notifyError])\n\n async function handleSubmit() {\n if (!connectionId) { notifyError(t('aiErrorMissingConnection')); return }\n if (prompt.trim().length === 0) { notifyError(t('aiErrorMissingPrompt')); return }\n setBusy(true)\n try {\n const generation = await aiGenerateWorkflow({ prompt: prompt.trim(), connectionId })\n const workflow = await createWorkflow({ name: deriveWorkflowName(prompt) })\n const saved = await saveWorkflowDraft(workflow.id, generation.graph, { name: workflow.name })\n if (!generation.ok) {\n notifyError(\n t('aiWarnValidation'),\n [...generation.structuralIssues, ...generation.nodeIssues.map((issue) => `${issue.nodeId}: ${issue.message}`)].join('\\n'),\n )\n } else {\n notifySuccess(t('aiSuccessGenerated'))\n }\n onGenerated(saved)\n onClose()\n setPrompt('')\n } catch (error) {\n notifyError((error as Error).message)\n } finally {\n setBusy(false)\n }\n }\n\n return (\n <GlassModal\n open={open}\n onClose={onClose}\n title={t('aiTitle')}\n subtitle={t('aiSubtitle')}\n onSubmit={handleSubmit}\n showFormFooter\n submitLabel={busy ? t('aiGenerateBusy') : t('aiGenerate')}\n cancelLabel={t('aiCancel')}\n submitDisabled={busy}\n isLoading={busy}\n >\n <div className=\"space-y-4\">\n <label className=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">\n {t('aiConnection')}\n <select\n className=\"mt-1 w-full rounded-lg border border-slate-200 bg-white px-3 py-2 text-sm text-slate-900 dark:border-white/10 dark:bg-white/5 dark:text-slate-100\"\n value={connectionId}\n onChange={(event) => setConnectionId(event.target.value)}\n disabled={busy}\n >\n <option value=\"\">{t('aiConnectionPlaceholder')}</option>\n {connections.map((connection) => (\n <option key={connection.id} value={connection.id}>\n {connection.name} {connection.enabled ? '' : t('aiDisabledSuffix')}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">\n {t('aiPromptLabel')}\n <Textarea\n rows={6}\n className=\"mt-1 w-full\"\n placeholder={t('aiPromptPlaceholder')}\n value={prompt}\n onChange={(event) => setPrompt(event.target.value)}\n disabled={busy}\n />\n </label>\n\n <p className=\"text-xs text-slate-500 dark:text-slate-400\">\n {t('aiFooterNote')}\n </p>\n </div>\n </GlassModal>\n )\n}\n\nfunction deriveWorkflowName(prompt: string): string {\n const trimmed = prompt.trim().replace(/\\s+/g, ' ')\n if (trimmed.length <= 60) return trimmed\n return `${trimmed.slice(0, 57)}…`\n}\n","/**\n * WorkflowTemplateModal\n * =====================\n *\n * Lets the user instantiate a pre-built workflow template (e.g. the\n * fuel-pricing dashboard flow) from the workflows list page. The template\n * requires a `connectionId` that references one of the org's\n * `model_provider_connections` rows — we load the list on open so the\n * picker is always fresh.\n *\n * Why not inline in `workflows-page-client.tsx`? Two reasons:\n * 1. Keeps the modal focused: one component, one responsibility.\n * 2. Makes the flow testable end-to-end without mounting the whole page.\n */\n\n'use client'\n\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { GlassModal } from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport {\n createWorkflowFromTemplate,\n listModelProviderConnections,\n listWorkflowTemplates,\n type ModelProviderConnection,\n type WorkflowTemplateSummary,\n} from './workflow-api-client'\nimport type { Workflow } from '@ui/astrlabe/contracts'\n\nexport interface WorkflowTemplateModalProps {\n open: boolean\n onClose: () => void\n onCreated: (workflow: Workflow) => void\n}\n\nexport function WorkflowTemplateModal({ open, onClose, onCreated }: WorkflowTemplateModalProps) {\n const tWorkflow = useTranslations('agents.workflow')\n const tCommon = useTranslations('common')\n const { error: notifyError, success: notifySuccess } = useNotifications()\n\n const [templates, setTemplates] = useState<WorkflowTemplateSummary[]>([])\n const [connections, setConnections] = useState<ModelProviderConnection[]>([])\n const [templateId, setTemplateId] = useState<string>('')\n const [connectionId, setConnectionId] = useState<string>('')\n const [name, setName] = useState<string>('')\n const [isLoading, setIsLoading] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n // Load templates + connections when the modal opens. Clear prior state so\n // reopening feels fresh.\n useEffect(() => {\n if (!open) return\n let cancelled = false\n setIsLoading(true)\n setTemplateId('')\n setConnectionId('')\n setName('')\n ;(async () => {\n try {\n const [tpls, conns] = await Promise.all([\n listWorkflowTemplates(),\n listModelProviderConnections(),\n ])\n if (cancelled) return\n setTemplates(tpls)\n setConnections(conns)\n if (tpls.length > 0) {\n const firstTemplate = tpls[0]\n if (firstTemplate) setTemplateId(firstTemplate.id)\n }\n if (conns.length > 0) {\n const firstConnection = conns[0]\n if (firstConnection) setConnectionId(firstConnection.id)\n }\n } catch (error) {\n if (!cancelled) notifyError((error as Error).message)\n } finally {\n if (!cancelled) setIsLoading(false)\n }\n })()\n return () => {\n cancelled = true\n }\n }, [open, notifyError])\n\n const selectedTemplate = useMemo(\n () => templates.find((t) => t.id === templateId),\n [templates, templateId],\n )\n\n const canSubmit =\n !isLoading && !isSubmitting && templateId.length > 0 && connectionId.length > 0\n\n const handleSubmit = useCallback(async () => {\n if (!canSubmit) return\n setIsSubmitting(true)\n try {\n const created = await createWorkflowFromTemplate(templateId, {\n connectionId,\n name: name.trim().length > 0 ? name.trim() : undefined,\n })\n notifySuccess(tWorkflow('templateCreatedSuccess'))\n onCreated(created)\n onClose()\n } catch (error) {\n notifyError((error as Error).message)\n } finally {\n setIsSubmitting(false)\n }\n }, [canSubmit, templateId, connectionId, name, onCreated, onClose, notifySuccess, notifyError, tWorkflow])\n\n return (\n <GlassModal\n open={open}\n onClose={onClose}\n title={tWorkflow('createFromTemplate')}\n subtitle={selectedTemplate?.description ?? tWorkflow('createFromTemplateSubtitle')}\n gradient=\"from-indigo-500 to-purple-600\"\n showFormFooter\n onSubmit={(event) => {\n event.preventDefault()\n void handleSubmit()\n }}\n isLoading={isSubmitting}\n submitDisabled={!canSubmit}\n submitLabel={tCommon('create')}\n cancelLabel={tCommon('cancel')}\n maxWidth=\"lg\"\n >\n <div className=\"space-y-4\">\n {isLoading ? (\n <div className=\"shimmer h-32 w-full rounded-xl\" />\n ) : templates.length === 0 ? (\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\n {tWorkflow('noTemplatesAvailable')}\n </p>\n ) : (\n <>\n <label className=\"block\">\n <span className=\"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300\">\n {tWorkflow('template')}\n </span>\n <select\n className=\"w-full rounded-lg border border-white/20 bg-white/70 px-3 py-2 text-sm text-gray-900 shadow-sm backdrop-blur dark:bg-gray-800/70 dark:text-gray-100\"\n value={templateId}\n onChange={(event) => setTemplateId(event.target.value)}\n >\n {templates.map((template) => (\n <option key={template.id} value={template.id}>\n {template.name}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"block\">\n <span className=\"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300\">\n {tWorkflow('llmConnection')}\n </span>\n {connections.length === 0 ? (\n <p className=\"rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200\">\n {tWorkflow('noConnectionsHint')}\n </p>\n ) : (\n <select\n className=\"w-full rounded-lg border border-white/20 bg-white/70 px-3 py-2 text-sm text-gray-900 shadow-sm backdrop-blur dark:bg-gray-800/70 dark:text-gray-100\"\n value={connectionId}\n onChange={(event) => setConnectionId(event.target.value)}\n >\n {connections.map((connection) => (\n <option key={connection.id} value={connection.id}>\n {connection.name}\n {connection.providerSlug ? ` · ${connection.providerSlug}` : ''}\n </option>\n ))}\n </select>\n )}\n </label>\n\n <label className=\"block\">\n <span className=\"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300\">\n {tWorkflow('workflowName')}\n <span className=\"ml-1 text-[10px] text-gray-400\">\n ({tCommon('optional')})\n </span>\n </span>\n <input\n type=\"text\"\n value={name}\n placeholder={selectedTemplate?.name ?? ''}\n onChange={(event) => setName(event.target.value)}\n className=\"w-full rounded-lg border border-white/20 bg-white/70 px-3 py-2 text-sm text-gray-900 shadow-sm backdrop-blur dark:bg-gray-800/70 dark:text-gray-100\"\n />\n </label>\n\n {selectedTemplate && selectedTemplate.tags.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n {selectedTemplate.tags.map((tag) => (\n <span\n key={tag}\n className=\"rounded-full bg-indigo-500/10 px-2 py-0.5 text-[10px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300\"\n >\n {tag}\n </span>\n ))}\n </div>\n ) : null}\n </>\n )}\n </div>\n </GlassModal>\n )\n}\n"]}
|
package/dist/platform/index.mjs
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
export { WorkflowCanvasShell } from '../chunk-TLDVFFAK.mjs';
|
|
3
|
+
export { AdminOrganizationForm, AdminOrganizationList, AdminPermissionList, AdminUserForm, AdminUserList } from '../chunk-RV555OEO.mjs';
|
|
4
|
+
export { ConsentScreen, ForgotPassword, MfaChallenge, PasswordlessSignIn, ResetPassword, SignIn, SignUp, SsoConnectorList, SsoEmailForm, UserButton, VerifyEmail } from '../chunk-5HXDJBVX.mjs';
|
|
5
|
+
export { ImpersonationBanner } from '../chunk-4667D2ZT.mjs';
|
|
6
|
+
export { UpgradePrompt } from '../chunk-DJ33CSGJ.mjs';
|
|
3
7
|
import { UsersPageView, RolesPageView } from '../chunk-JUTOBBBI.mjs';
|
|
4
8
|
export { WorkflowWorkspace } from '../chunk-JUTOBBBI.mjs';
|
|
9
|
+
export { PlatformSettings } from '../chunk-TOEMSC4P.mjs';
|
|
10
|
+
export { AdminOrganizationDetail } from '../chunk-F4TOOARV.mjs';
|
|
11
|
+
export { LinkedAccountsTabContent, MfaManage, MfaSetup, ProfileTabContent, SecurityTabContent, SessionsTabContent, UserProfile } from '../chunk-SUHNSUMH.mjs';
|
|
12
|
+
export { AuthLayout, BackupCodeGrid, OtpInput, PasswordStrengthMeter, SocialLoginButtons } from '../chunk-NBCOVUQP.mjs';
|
|
13
|
+
export { BillingPanel } from '../chunk-GEUGFYLO.mjs';
|
|
5
14
|
export { AgentsWorkspace, applyWorkflowExecutionEventToStore, resetWorkflowRunPresentation, useRunEvents, useWorkflowExecution, useWorkflowRunPresentation } from '../chunk-NAQ32ZPG.mjs';
|
|
6
15
|
import '../chunk-G7DZU3NM.mjs';
|
|
7
16
|
import { usePlatformState } from '../chunk-XOZMUCMF.mjs';
|