@burdenoff/fluidgrids-fe-sdk 2026.922.9 → 2026.922.11
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/{ExecutionDetailPage-V3LXDOAT.js → ExecutionDetailPage-OSDL7NDT.js} +4 -4
- package/dist/{ExecutionDetailPage-V3LXDOAT.js.map → ExecutionDetailPage-OSDL7NDT.js.map} +1 -1
- package/dist/{WorkflowBuilder-DS4EK7JE.js → WorkflowBuilder-D7RKU4UK.js} +5 -5
- package/dist/{WorkflowBuilder-DS4EK7JE.js.map → WorkflowBuilder-D7RKU4UK.js.map} +1 -1
- package/dist/{WorkflowsList-DUCKDRKC.js → WorkflowsList-JHM7Q5HE.js} +4 -4
- package/dist/{WorkflowsList-DUCKDRKC.js.map → WorkflowsList-JHM7Q5HE.js.map} +1 -1
- package/dist/{chunk-C4HOB3JQ.js → chunk-5IAMVAGX.js} +3 -3
- package/dist/{chunk-C4HOB3JQ.js.map → chunk-5IAMVAGX.js.map} +1 -1
- package/dist/{chunk-NOOLXG62.js → chunk-GWRX2T3K.js} +11 -6
- package/dist/chunk-GWRX2T3K.js.map +1 -0
- package/dist/{chunk-XC7A7NLP.js → chunk-IPVHC2DM.js} +3 -3
- package/dist/{chunk-XC7A7NLP.js.map → chunk-IPVHC2DM.js.map} +1 -1
- package/dist/{chunk-KLWMUV2N.js → chunk-MTWEYC2W.js} +3 -3
- package/dist/{chunk-KLWMUV2N.js.map → chunk-MTWEYC2W.js.map} +1 -1
- package/dist/{chunk-YP6P5E6M.js → chunk-RJQJAN6J.js} +3 -3
- package/dist/{chunk-YP6P5E6M.js.map → chunk-RJQJAN6J.js.map} +1 -1
- package/dist/{chunk-UIY2HBWA.js → chunk-W23ZXNKU.js} +12 -2
- package/dist/chunk-W23ZXNKU.js.map +1 -0
- package/dist/{chunk-5XUOENLH.js → chunk-XQYAM47Y.js} +3 -3
- package/dist/{chunk-5XUOENLH.js.map → chunk-XQYAM47Y.js.map} +1 -1
- package/dist/executions.js +2 -2
- package/dist/index.d.ts +124 -1
- package/dist/index.js +897 -30
- package/dist/index.js.map +1 -1
- package/dist/templates.js +3 -3
- package/dist/workflow-builder.js +4 -4
- package/dist/workflows-list.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-NOOLXG62.js.map +0 -1
- package/dist/chunk-UIY2HBWA.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export { Label } from './chunk-6QCBKN3P.js';
|
|
2
2
|
import './chunk-RXMBIJ5Z.js';
|
|
3
3
|
export { ExecutionsListPage } from './chunk-R6JFXZXN.js';
|
|
4
|
-
export { ExecutionDetailPage } from './chunk-
|
|
4
|
+
export { ExecutionDetailPage } from './chunk-5IAMVAGX.js';
|
|
5
5
|
import './chunk-EUZZLC3N.js';
|
|
6
6
|
export { HistoryPage } from './chunk-UNW4I442.js';
|
|
7
7
|
export { NodesPage, fetchAllNodesWithManifests, useLazyNodeManifest, useNodeEndpoint, useNodeEndpoints, useNodeManifest } from './chunk-ISS73LG3.js';
|
|
8
8
|
export { SettingsPage } from './chunk-PTGKDQ5K.js';
|
|
9
|
-
import { ThemeProvider, extractTemplateGraph } from './chunk-
|
|
10
|
-
export { A2AMessagePriority, A2AMessageStatus, A2ATrustLevel, ActionExecutionStatus, ActionSourceType, ActionStatus, ActionStyle, ActionTriggerType, ActionType, ActivityCategory, ActivityType, ActorType, AgentVisibility, AiPromptCategory, AiPromptStatus, AlertSeverity, AnalyticsEntityType, AnalyticsEventSeverity, AnalyticsGranularity, AnalyticsInsightSeverity, AppCategory, AppInstallationState, AppPermission, AppStatus, AppType, AppVisibility, ApprovalStatus, ArtifactType, AssetBudgetStatus, AssetCondition, AssetStatus, AssignmentSource, AttendeeRole, AuthType, AuthorType, AutomationExecutionStatus, AutomationStatus, AutomationTriggerType, BackoffStrategy, BatchDownloadStatus, BigConsoleConflictResolution, BillingType, BoardColumnType, BoardType, BookingFormFieldType, BookingPageType, BookingStatus, BotAppStatus, BotAppType, BotAppVisibility, BotlitAgentCapability, BotlitAgentStatus, BotlitAgentType, BotlitHealthStatus, BotlitLlmProviderType, BudgetStatus, BulkConversationAction, CalendarEventStatus, CalendarExecutionStatus, CalendarExportFormat, CalendarPromptStatus, CalendarResourceType, CalendarType, CallParticipantChangeType, CallState, CallType, CatalogVisibility, ChangeRisk, ChangeStatus, ChannelMessageStatus, ChannelPlatform, ChannelStatus, ChannelType, ChatRole, CheckInStatus, ChunkingMethod, CircuitState, CohortType, CollaboratorRole, CollectionActivityType, CollectionItemSortField, CollectionSortField, CollectionType, CollectionVisibility, CommentExportFormat, CommentScheduleType, CommentStatus, CommentVisibility, ComparisonOperator, ComplianceStatus, ComponentLifecycle, ComponentType, ConfigScope, ConflictResolution, ConnectionCredentialSource, ConnectionQuality, ConnectionStatus, ContentSearchEngine, ContentSearchStatus, ContentType, ConversationPermission, ConversationSortField, ConversationState, ConversationType, ConversationVisibility, ConversationsExportFormat, CustomFieldType, DashboardCategory, DashboardLayout, DashboardSortField, DashboardStatus, DashboardStyleType, DashboardVisibility, DataSinkRefreshType, DataSinkSetupState, DataSinkSourceType, DataSinkStatus, DataSinkUpdateEventType, DataSourceTestStatus, DataSourceType, DayOfWeek, DeliveryChannelType, DependencyStatus, DependencyType, DiscoveryJobStatus, DlqStatus, DocumentStatus, DriverStatus, EncryptionAlgorithm, EnergyLevel, EntityStatus, ErrorType, EventStatus, EventType, EventValidationStatus, EventVisibility, EventfullymanagedConfigScope, EventfullymanagedSessionStatus, EventfullymanagedSessionType, EventfullymanagedVibeStatus, EventfullymanagedVibeType, ExecutionStatus, ExecutionType, ExecutorType, ExpenseOrderByField, ExpenseStatus, ExportArchiveFormat, ExportFormat, ExportJobStatus, ExportScope, ExportSortField, ExternalCalendarSyncDirection, ExternalCalendarSyncStatus, ExternalProviderType, FeatureRequestStatus, FieldMaskStrategy, FileEventType, FileMetadataSortField, FileShareAccessLevel, FileShareType, FileSortField, FileStatus, FileVisibility, FilterDataType, FilterOperator, FilterType, FluidGridsEventType, FluidGridsWorkflowStatus, FolderSortField, FolderStatus, FunnelStepOrder, GeneratedLayoutType, GenerationStatus, GeofenceEventType, GeofenceTrigger, GgnomadBookingStatus, GgnomadBookingType, GgnomadListingStatus, GitopsProviderType, GitopsSnapshotType, GraphMetadataOperator, GraphSearchMode, GraphSearchSortBy, GroupCompositionMode, GroupExportFormat, GroupScope, GroupSortField, GroupStatus, GroupType, GroupVisibility, GroupsExportFormat, HeadshotmarketingAdCampaignStatus, HeadshotmarketingAdCreativeStatus, HeadshotmarketingAdCreativeType, HeadshotmarketingAdPlatform, HeadshotmarketingAiToolCategory, HeadshotmarketingAiToolExecutionStatus, HeadshotmarketingAssetType, HeadshotmarketingCampaignStatus, HeadshotmarketingCampaignType, HeadshotmarketingContactStatus, HeadshotmarketingContentItemStatus, HeadshotmarketingContentItemType, HeadshotmarketingDateRangePreset, HeadshotmarketingDealStatus, HeadshotmarketingEventRegistrationStatus, HeadshotmarketingEventStatus, HeadshotmarketingEventType, HeadshotmarketingInfluencerCampaignStatus, HeadshotmarketingInfluencerRelationshipStatus, HeadshotmarketingInfluencerTier, HeadshotmarketingLandingPageSectionType, HeadshotmarketingLandingPageStatus, HeadshotmarketingLeadSource, HeadshotmarketingLeadStatus, HeadshotmarketingMetricType, HeadshotmarketingReportStatus, HeadshotmarketingReportType, HeadshotmarketingSeoAuditSeverity, HeadshotmarketingSeoAuditStatus, HeadshotmarketingSeoKeywordStatus, HeadshotmarketingSocialAccountStatus, HeadshotmarketingSocialPlatform, HeadshotmarketingSocialPostStatus, HeadshotmarketingWorkflowExecutionStatus, HeadshotmarketingWorkflowStatus, HeadshotmarketingWorkflowTriggerType, HttpMethod, IncidentStatus, IndexStatus, InstallMode, InventoryTransactionType, InvitationStatus, InviteStatus, InvoiceStatus, IssueTokenErrorCode, JobStatus, KadaikodiInvestmentStatus, KadaikodiOfferingKind, KadaikodiOrderStatus, KadaikodiPaymentStatus, KadaikodiProviderStatus, KadaikodiRiskLevel, KadaikodiServiceCategory, KeyStatus, KeyType, KnowledgeArticleStatus, LocationType, LockType, LogAction, LogLevel, McpConnectionStatus, McpResourceType, McpToolStatus, MeetingActionItemStatus, MeetingOrderByField, MeetingParticipantRole, MeetingParticipantStatus, MeetingProvider, MeetingType, MemberPresenceStatus, MembershipRole, MembershipSource, MembershipStatus, MembershipType, MentionType, MessageContentType, MessageReportResolutionAction, MessageReportStatus, MessageStatus, MessageType, MetadataValueType, MetricAggregation, MetricAggregationField, MetricType, MilestoneStatus, MisfirePolicy, Mood, NatsFilterType, NavigationMode, NodeConfigStatus, NodeStatus, NotificationLevel, OrderDirection, OrderPriority, OrderStatus, OrderType, OverrideType, PackageKind, PageLayout, ParserStatus, ParserType, ParticipantChangeType, ParticipantRole, PipelineExecutionStatus, PipelineStatus, PlanmagnetProjectStatus, PlanmagnetSyncDirection, PlanmagnetSyncProvider, PlanmagnetSyncStatus, PluginStatus, PolicyStatus, PolicyType, PomodoroGoalPeriod, PomodoroGoalType, PomodoroSessionOrderByField, PomodoroSessionType, PortfolioStatus, PresenceStatus, Priority, ProblemStatus, ProductType, ProjectMethodology, ProjectOrderField, ProjectStatus, PromptGenerationStatus, PromptPriority, PromptStatus, PropertyStatus, PropertyType, ProviderCategory, PublishType, QualityGateStatus, RbacChangeType, ReactionChangeType, RecordingMode, ReleaseStatus, ReminderChannel, ReminderType, ReportFormat, ReportScheduleStatus, ResourceBookingStatus, RetrievalMode, RiskSeverity, RiskStatus, RoadmapItemStatus, RoadmapType, RoleLevel, RouteStatus, RoutingStrategy, RsvpStatus, RuleActionType, RuleConditionOperator, RuleRunMode, RunLogLevel, RunLogStream, RunMode, RunStatus, SandboxChangeType, SandboxExportFormat, SandboxExportJobStatus, SandboxKind, SandboxMode, SandboxSource, SandboxStatus, SandboxTemplate, SchedulePriority, ScheduleType, ScorecardMetricStatus, ScorecardMetricType, ScorecardOwnerType, SecretStatus, SecretType, SecurityExportFormat, SecuritySeverity, SecuritySubscriptionEvent, SegmentVisibility, SessionSharePermission, SettingsCategory, SharePermission, ShareRecipientType, ShareSortField, ShareStatus, ShareTokenType, ShipmentStatus, SmartCollectionConditionField, SmartCollectionConditionOperator, SmartCollectionOperator, SortDirection, SortOrder, SprintStatus, StageErrorHandling, StageExecutionStatus, StorageMode, StrategicAlignment, StressLevel, SubmissionStatus, SuggestedDataSourceType, SyncDirection, SyncFromGlobalOperation, SyncProvider, SystemEventType, TagCardinality, TagDataType, TagFilterOperator, TagRelationType, TagScope, TagsExportFormat, TargetType, TaskOrderField, TaskPriority, TaskStatus, TemplateAuthorType, TemplateCategory, TemplateComplexity, TemplatePreview, TemplateStatus, TemplateVisibility, TemplatesPage, TimeBucket, TimeCampusChannelType, TimeCampusConfigScope, TimeCampusProjectStatus, TimeCampusSortDirection, TimeEntryOrderField, TimeEntryStatus, TimeGrain, TimeRange, TlsMode, ToolRiskLevel, TrackingEventType, TransactionStatus, TransactionType, TraversalDirection, TunnelDomainType, TunnelDomainVerificationStatus, TunnelEnvironment, TunnelProtocol, TunnelProviderKey, TunnelSessionStatus, TunnelShardStatus, TunnelStatus, UpdateScope, UploadStatus, UploadType, UsageStatus, ValidationMethod, VaultIncidentSeverity, VaultIncidentStatus, VaultMemberRole, VaultRotationStatus, VaultScope, VaultSecurityEventSeverity, VaultSecurityEventType, VaultStatus, VaultSyncStatus, VehicleStatus, VehicleType, VersionStatus, VibeAuditAction, VibeAuditExportFormat, VibeAuditResourceType, VibeAuditStatus, VibeCalendarExecutionStatus, VibeCalendarTaskStatus, VibeDeckButtonActionType, VibeDeckSharePermission, VibeDeckShareStatus, VibeDeckShareVisibility, VibeStatus, VibeType, VibecontrolsActionType, VibecontrolsDocsBuildImagePullPolicy, VibecontrolsDocsBuildImageScanStatus, VibecontrolsDocsBuildImageStatus, VibecontrolsDocsBuildRuntime, VibecontrolsDocsPageStatus, VibecontrolsDocsRevisionStatus, VibecontrolsDocsSiteOwnerType, VibecontrolsDocsSiteVisibility, VibecontrolsSessionStatus, VibecontrolsSessionType, VibecontrolsTemplateCategory, VibecontrolsTemplateStatus, Visibility, VisibilityType, VocabularyKind, VocabularyScope, WarehouseType, WebhookAuthType, WidgetConfidence, WidgetRenderer, WidgetType, WorkItemPriority, WorkItemStatus, WorkItemType, WorkOrderStatus, WorkOrderType, WorkPatternInsightType, WorkflowStatus, WorkspaceResourceStatus, WorkspaceResourceType, WorkspaceStatus, WorkspaceType, WorkspacesExportFormat } from './chunk-
|
|
11
|
-
export { WorkflowBuilder, WorkflowBuilderCore, WorkflowSearchRedirect } from './chunk-
|
|
12
|
-
export { WorkflowBuilder as WorkflowBuilderPage } from './chunk-
|
|
13
|
-
import { FluidGridsProvider, FlowBuilderPage } from './chunk-
|
|
14
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConnectionFormDialog, ConnectionSelector, EntityTagPicker, FLUIDGRIDS_ENTITY_TYPES, FluidGridsProvider, ProviderPicker, SchemaConnectionForm, ScopePicker, listCustomBlocks, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, tagLabel, useAvailableTags, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useCreateTag, useDraftEntityTags, useEntityTags, useFluidGridsContext, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity } from './chunk-
|
|
9
|
+
import { ThemeProvider, extractTemplateGraph } from './chunk-RJQJAN6J.js';
|
|
10
|
+
export { A2AMessagePriority, A2AMessageStatus, A2ATrustLevel, ActionExecutionStatus, ActionSourceType, ActionStatus, ActionStyle, ActionTriggerType, ActionType, ActivityCategory, ActivityType, ActorType, AgentVisibility, AiPromptCategory, AiPromptStatus, AlertSeverity, AnalyticsEntityType, AnalyticsEventSeverity, AnalyticsGranularity, AnalyticsInsightSeverity, AppCategory, AppInstallationState, AppPermission, AppStatus, AppType, AppVisibility, ApprovalStatus, ArtifactType, AssetBudgetStatus, AssetCondition, AssetStatus, AssignmentSource, AttendeeRole, AuthType, AuthorType, AutomationExecutionStatus, AutomationStatus, AutomationTriggerType, BackoffStrategy, BatchDownloadStatus, BigConsoleConflictResolution, BillingType, BoardColumnType, BoardType, BookingFormFieldType, BookingPageType, BookingStatus, BotAppStatus, BotAppType, BotAppVisibility, BotlitAgentCapability, BotlitAgentStatus, BotlitAgentType, BotlitHealthStatus, BotlitLlmProviderType, BudgetStatus, BulkConversationAction, CalendarEventStatus, CalendarExecutionStatus, CalendarExportFormat, CalendarPromptStatus, CalendarResourceType, CalendarType, CallParticipantChangeType, CallState, CallType, CatalogVisibility, ChangeRisk, ChangeStatus, ChannelMessageStatus, ChannelPlatform, ChannelStatus, ChannelType, ChatRole, CheckInStatus, ChunkingMethod, CircuitState, CohortType, CollaboratorRole, CollectionActivityType, CollectionItemSortField, CollectionSortField, CollectionType, CollectionVisibility, CommentExportFormat, CommentScheduleType, CommentStatus, CommentVisibility, ComparisonOperator, ComplianceStatus, ComponentLifecycle, ComponentType, ConfigScope, ConflictResolution, ConnectionCredentialSource, ConnectionQuality, ConnectionStatus, ContentSearchEngine, ContentSearchStatus, ContentType, ConversationPermission, ConversationSortField, ConversationState, ConversationType, ConversationVisibility, ConversationsExportFormat, CustomFieldType, DashboardCategory, DashboardLayout, DashboardSortField, DashboardStatus, DashboardStyleType, DashboardVisibility, DataSinkRefreshType, DataSinkSetupState, DataSinkSourceType, DataSinkStatus, DataSinkUpdateEventType, DataSourceTestStatus, DataSourceType, DayOfWeek, DeliveryChannelType, DependencyStatus, DependencyType, DiscoveryJobStatus, DlqStatus, DocumentStatus, DriverStatus, EncryptionAlgorithm, EnergyLevel, EntityStatus, ErrorType, EventStatus, EventType, EventValidationStatus, EventVisibility, EventfullymanagedConfigScope, EventfullymanagedSessionStatus, EventfullymanagedSessionType, EventfullymanagedVibeStatus, EventfullymanagedVibeType, ExecutionStatus, ExecutionType, ExecutorType, ExpenseOrderByField, ExpenseStatus, ExportArchiveFormat, ExportFormat, ExportJobStatus, ExportScope, ExportSortField, ExternalCalendarSyncDirection, ExternalCalendarSyncStatus, ExternalProviderType, FeatureRequestStatus, FieldMaskStrategy, FileEventType, FileMetadataSortField, FileShareAccessLevel, FileShareType, FileSortField, FileStatus, FileVisibility, FilterDataType, FilterOperator, FilterType, FluidGridsEventType, FluidGridsWorkflowStatus, FolderSortField, FolderStatus, FunnelStepOrder, GeneratedLayoutType, GenerationStatus, GeofenceEventType, GeofenceTrigger, GgnomadBookingStatus, GgnomadBookingType, GgnomadListingStatus, GitopsProviderType, GitopsSnapshotType, GraphMetadataOperator, GraphSearchMode, GraphSearchSortBy, GroupCompositionMode, GroupExportFormat, GroupScope, GroupSortField, GroupStatus, GroupType, GroupVisibility, GroupsExportFormat, HeadshotmarketingAdCampaignStatus, HeadshotmarketingAdCreativeStatus, HeadshotmarketingAdCreativeType, HeadshotmarketingAdPlatform, HeadshotmarketingAiToolCategory, HeadshotmarketingAiToolExecutionStatus, HeadshotmarketingAssetType, HeadshotmarketingCampaignStatus, HeadshotmarketingCampaignType, HeadshotmarketingContactStatus, HeadshotmarketingContentItemStatus, HeadshotmarketingContentItemType, HeadshotmarketingDateRangePreset, HeadshotmarketingDealStatus, HeadshotmarketingEventRegistrationStatus, HeadshotmarketingEventStatus, HeadshotmarketingEventType, HeadshotmarketingInfluencerCampaignStatus, HeadshotmarketingInfluencerRelationshipStatus, HeadshotmarketingInfluencerTier, HeadshotmarketingLandingPageSectionType, HeadshotmarketingLandingPageStatus, HeadshotmarketingLeadSource, HeadshotmarketingLeadStatus, HeadshotmarketingMetricType, HeadshotmarketingReportStatus, HeadshotmarketingReportType, HeadshotmarketingSeoAuditSeverity, HeadshotmarketingSeoAuditStatus, HeadshotmarketingSeoKeywordStatus, HeadshotmarketingSocialAccountStatus, HeadshotmarketingSocialPlatform, HeadshotmarketingSocialPostStatus, HeadshotmarketingWorkflowExecutionStatus, HeadshotmarketingWorkflowStatus, HeadshotmarketingWorkflowTriggerType, HttpMethod, IncidentStatus, IndexStatus, InstallMode, InventoryTransactionType, InvitationStatus, InviteStatus, InvoiceStatus, IssueTokenErrorCode, JobStatus, KadaikodiInvestmentStatus, KadaikodiOfferingKind, KadaikodiOrderStatus, KadaikodiPaymentStatus, KadaikodiProviderStatus, KadaikodiRiskLevel, KadaikodiServiceCategory, KeyStatus, KeyType, KnowledgeArticleStatus, LocationType, LockType, LogAction, LogLevel, McpConnectionStatus, McpResourceType, McpToolStatus, MeetingActionItemStatus, MeetingOrderByField, MeetingParticipantRole, MeetingParticipantStatus, MeetingProvider, MeetingType, MemberPresenceStatus, MembershipRole, MembershipSource, MembershipStatus, MembershipType, MentionType, MessageContentType, MessageReportResolutionAction, MessageReportStatus, MessageStatus, MessageType, MetadataValueType, MetricAggregation, MetricAggregationField, MetricType, MilestoneStatus, MisfirePolicy, Mood, NatsFilterType, NavigationMode, NodeConfigStatus, NodeStatus, NotificationLevel, OrderDirection, OrderPriority, OrderStatus, OrderType, OverrideType, PackageKind, PageLayout, ParserStatus, ParserType, ParticipantChangeType, ParticipantRole, PipelineExecutionStatus, PipelineStatus, PlanmagnetProjectStatus, PlanmagnetSyncDirection, PlanmagnetSyncProvider, PlanmagnetSyncStatus, PluginStatus, PolicyStatus, PolicyType, PomodoroGoalPeriod, PomodoroGoalType, PomodoroSessionOrderByField, PomodoroSessionType, PortfolioStatus, PresenceStatus, Priority, ProblemStatus, ProductType, ProjectMethodology, ProjectOrderField, ProjectStatus, PromptGenerationStatus, PromptPriority, PromptStatus, PropertyStatus, PropertyType, ProviderCategory, PublishType, QualityGateStatus, RbacChangeType, ReactionChangeType, RecordingMode, ReleaseStatus, ReminderChannel, ReminderType, ReportFormat, ReportScheduleStatus, ResourceBookingStatus, RetrievalMode, RiskSeverity, RiskStatus, RoadmapItemStatus, RoadmapType, RoleLevel, RouteStatus, RoutingStrategy, RsvpStatus, RuleActionType, RuleConditionOperator, RuleRunMode, RunLogLevel, RunLogStream, RunMode, RunStatus, SandboxChangeType, SandboxExportFormat, SandboxExportJobStatus, SandboxKind, SandboxMode, SandboxSource, SandboxStatus, SandboxTemplate, SchedulePriority, ScheduleType, ScorecardMetricStatus, ScorecardMetricType, ScorecardOwnerType, SecretStatus, SecretType, SecurityExportFormat, SecuritySeverity, SecuritySubscriptionEvent, SegmentVisibility, SessionSharePermission, SettingsCategory, SharePermission, ShareRecipientType, ShareSortField, ShareStatus, ShareTokenType, ShipmentStatus, SmartCollectionConditionField, SmartCollectionConditionOperator, SmartCollectionOperator, SortDirection, SortOrder, SprintStatus, StageErrorHandling, StageExecutionStatus, StorageMode, StrategicAlignment, StressLevel, SubmissionStatus, SuggestedDataSourceType, SyncDirection, SyncFromGlobalOperation, SyncProvider, SystemEventType, TagCardinality, TagDataType, TagFilterOperator, TagRelationType, TagScope, TagsExportFormat, TargetType, TaskOrderField, TaskPriority, TaskStatus, TemplateAuthorType, TemplateCategory, TemplateComplexity, TemplatePreview, TemplateStatus, TemplateVisibility, TemplatesPage, TimeBucket, TimeCampusChannelType, TimeCampusConfigScope, TimeCampusProjectStatus, TimeCampusSortDirection, TimeEntryOrderField, TimeEntryStatus, TimeGrain, TimeRange, TlsMode, ToolRiskLevel, TrackingEventType, TransactionStatus, TransactionType, TraversalDirection, TunnelDomainType, TunnelDomainVerificationStatus, TunnelEnvironment, TunnelProtocol, TunnelProviderKey, TunnelSessionStatus, TunnelShardStatus, TunnelStatus, UpdateScope, UploadStatus, UploadType, UsageStatus, ValidationMethod, VaultIncidentSeverity, VaultIncidentStatus, VaultMemberRole, VaultRotationStatus, VaultScope, VaultSecurityEventSeverity, VaultSecurityEventType, VaultStatus, VaultSyncStatus, VehicleStatus, VehicleType, VersionStatus, VibeAuditAction, VibeAuditExportFormat, VibeAuditResourceType, VibeAuditStatus, VibeCalendarExecutionStatus, VibeCalendarTaskStatus, VibeDeckButtonActionType, VibeDeckSharePermission, VibeDeckShareStatus, VibeDeckShareVisibility, VibeStatus, VibeType, VibecontrolsActionType, VibecontrolsDocsBuildImagePullPolicy, VibecontrolsDocsBuildImageScanStatus, VibecontrolsDocsBuildImageStatus, VibecontrolsDocsBuildRuntime, VibecontrolsDocsPageStatus, VibecontrolsDocsRevisionStatus, VibecontrolsDocsSiteOwnerType, VibecontrolsDocsSiteVisibility, VibecontrolsSessionStatus, VibecontrolsSessionType, VibecontrolsTemplateCategory, VibecontrolsTemplateStatus, Visibility, VisibilityType, VocabularyKind, VocabularyScope, WarehouseType, WebhookAuthType, WidgetConfidence, WidgetRenderer, WidgetType, WorkItemPriority, WorkItemStatus, WorkItemType, WorkOrderStatus, WorkOrderType, WorkPatternInsightType, WorkflowStatus, WorkspaceResourceStatus, WorkspaceResourceType, WorkspaceStatus, WorkspaceType, WorkspacesExportFormat } from './chunk-RJQJAN6J.js';
|
|
11
|
+
export { WorkflowBuilder, WorkflowBuilderCore, WorkflowSearchRedirect } from './chunk-MTWEYC2W.js';
|
|
12
|
+
export { WorkflowBuilder as WorkflowBuilderPage } from './chunk-XQYAM47Y.js';
|
|
13
|
+
import { FluidGridsProvider, FlowBuilderPage } from './chunk-GWRX2T3K.js';
|
|
14
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConnectionFormDialog, ConnectionSelector, EntityTagPicker, FLUIDGRIDS_ENTITY_TYPES, FluidGridsProvider, ProviderPicker, SchemaConnectionForm, ScopePicker, listCustomBlocks, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, tagLabel, useAvailableTags, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useCreateTag, useDraftEntityTags, useEntityTags, useFluidGridsContext, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity } from './chunk-GWRX2T3K.js';
|
|
15
15
|
export { Input } from './chunk-P5PKRQAO.js';
|
|
16
16
|
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './chunk-NH5YCY37.js';
|
|
17
17
|
export { Badge, Button, badgeVariants, buttonVariants } from './chunk-DBOMRIP5.js';
|
|
@@ -19,26 +19,32 @@ import { createGlobalStoreClient } from './chunk-BQXHJIER.js';
|
|
|
19
19
|
export { createGlobalStoreClient, getGlobalStoreClient, resetGlobalStoreClient, setGlobalStoreClient } from './chunk-BQXHJIER.js';
|
|
20
20
|
import './chunk-6LXMUIR3.js';
|
|
21
21
|
import './chunk-XQP33UJR.js';
|
|
22
|
-
export { WorkflowsList } from './chunk-
|
|
22
|
+
export { WorkflowsList } from './chunk-IPVHC2DM.js';
|
|
23
23
|
import './chunk-AANIWER2.js';
|
|
24
|
-
export { ALLOW_ALL_PERMISSIONS, FLUIDGRIDS_PERMISSIONS, FluidGridsPermissionsProvider, SdkPermissionButton, SdkPermissionGate, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, evaluatePermissionCheck, useFluidGridsPermission } from './chunk-
|
|
24
|
+
export { ALLOW_ALL_PERMISSIONS, FLUIDGRIDS_PERMISSIONS, FluidGridsPermissionsProvider, SdkPermissionButton, SdkPermissionGate, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, evaluatePermissionCheck, useFluidGridsPermission } from './chunk-W23ZXNKU.js';
|
|
25
25
|
import { cn } from './chunk-3ZYUGTIT.js';
|
|
26
26
|
export { cn } from './chunk-3ZYUGTIT.js';
|
|
27
27
|
export { useActivateWorkflow, useCreateWorkflow, useCreateWorkflowVersion, useDashboardSummary, useDeactivateWorkflow, useDeleteWorkflow, useDuplicateWorkflow, useLazyWorkflowDefinition, useRestoreWorkflowVersion, useTriggerWorkflow, useUpdateWorkflow, useWorkflowDefinition, useWorkflowDefinitions, useWorkflowRun, useWorkflowRuns, useWorkflowVersions } from './chunk-CVVNQCFM.js';
|
|
28
|
+
import { throwIfResultError } from './chunk-LMO5ASOE.js';
|
|
28
29
|
export { describeOperationError, throwIfResultError } from './chunk-LMO5ASOE.js';
|
|
29
30
|
export { config, getFluidGridsConfig, getGraphQLEndpoint, resetFluidGridsConfig, setFluidGridsConfig } from './chunk-WWU2O2SR.js';
|
|
30
|
-
import { createFluidGridsClient } from './chunk-5BDQNSP3.js';
|
|
31
|
+
import { getFluidGridsClient, createFluidGridsClient } from './chunk-5BDQNSP3.js';
|
|
31
32
|
export { createFluidGridsClient, getFluidGridsClient, getFluidGridsClientSafe, isFluidGridsClientReady, resetFluidGridsClient, setFluidGridsClient, waitForFluidGridsClient } from './chunk-5BDQNSP3.js';
|
|
32
33
|
export { useFlowStore } from './chunk-YMD3T6J2.js';
|
|
33
34
|
export { ActivateWorkflowDefinitionDocument, ActiveExecutionsDocument, AvailableFluidgridsTagsDocument, CancelExecutionDocument, CreateFluidgridsTagDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, DashboardSummaryDocument, DeactivateWorkflowDefinitionDocument, DeleteWorkflowDefinitionDocument, DuplicateWorkflowDocument, EventRegistrationsDocument, ExecutionDetailDocument, ExecutionLogsDocument, ExecutionStatsDocument, ExecutionsListDocument, FluidgridsAvailableTagFieldsFragmentDoc, FluidgridsEntityTagsDocument, FluidgridsTagAssignmentFieldsFragmentDoc, ImportWorkflowTemplateDocument, NodeEndpointConfigDocument, NodeEndpointConfigsDocument, NodeManifestDocument, NodeSchemaIntrospectionDocument, NodeStatesDocument, NodeUsageStatusDocument, PauseExecutionDocument, PinNodeDataDocument, RegisterNodeDocument, RemoveNodeFromWorkflowsDocument, ReplaceFluidgridsEntityTagsDocument, RestoreWorkflowVersionDocument, ResumeExecutionDocument, RetryNodeDocument, RunFromNodeDocument, RunLogAppendedDocument, RunLogLineFieldsFragmentDoc, RunLogsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, TerminateExecutionDocument, TriggerWorkflowDocument, UnpinNodeDataDocument, UntagFluidgridsEntityDocument, UpdateWorkflowDefinitionDocument, UsageTimeSeriesDocument, WorkflowDefinitionDocument, WorkflowDefinitionsDocument, WorkflowDefinitionsTagsDocument, WorkflowPinnedDataDocument, WorkflowRunDocument, WorkflowRunsDocument, WorkflowVersionsDocument, useActivateWorkflowDefinitionMutation, useActiveExecutionsLazyQuery, useActiveExecutionsQuery, useActiveExecutionsSuspenseQuery, useAvailableFluidgridsTagsLazyQuery, useAvailableFluidgridsTagsQuery, useAvailableFluidgridsTagsSuspenseQuery, useCancelExecutionMutation, useCreateFluidgridsTagMutation, useCreateWorkflowDefinitionMutation, useCreateWorkflowVersionMutation, useDashboardSummaryLazyQuery, useDashboardSummaryQuery, useDashboardSummarySuspenseQuery, useDeactivateWorkflowDefinitionMutation, useDeleteWorkflowDefinitionMutation, useDuplicateWorkflowMutation, useEventRegistrationsLazyQuery, useEventRegistrationsQuery, useEventRegistrationsSuspenseQuery, useExecutionDetailLazyQuery, useExecutionDetailQuery, useExecutionDetailSuspenseQuery, useExecutionLogsLazyQuery, useExecutionLogsQuery, useExecutionLogsSuspenseQuery, useExecutionStatsLazyQuery, useExecutionStatsQuery, useExecutionStatsSuspenseQuery, useExecutionsListLazyQuery, useExecutionsListQuery, useExecutionsListSuspenseQuery, useFluidgridsEntityTagsLazyQuery, useFluidgridsEntityTagsQuery, useFluidgridsEntityTagsSuspenseQuery, useImportWorkflowTemplateMutation, useNodeEndpointConfigLazyQuery, useNodeEndpointConfigQuery, useNodeEndpointConfigSuspenseQuery, useNodeEndpointConfigsLazyQuery, useNodeEndpointConfigsQuery, useNodeEndpointConfigsSuspenseQuery, useNodeManifestLazyQuery, useNodeManifestQuery, useNodeManifestSuspenseQuery, useNodeSchemaIntrospectionLazyQuery, useNodeSchemaIntrospectionQuery, useNodeSchemaIntrospectionSuspenseQuery, useNodeStatesLazyQuery, useNodeStatesQuery, useNodeStatesSuspenseQuery, useNodeUsageStatusLazyQuery, useNodeUsageStatusQuery, useNodeUsageStatusSuspenseQuery, usePauseExecutionMutation, usePinNodeDataMutation, useRegisterNodeMutation, useRemoveNodeFromWorkflowsMutation, useReplaceFluidgridsEntityTagsMutation, useRestoreWorkflowVersionMutation, useResumeExecutionMutation, useRetryNodeMutation, useRunFromNodeMutation, useRunLogAppendedSubscription, useRunLogsLazyQuery, useRunLogsQuery, useRunLogsSuspenseQuery, useSearchFluidgridsTagsLazyQuery, useSearchFluidgridsTagsQuery, useSearchFluidgridsTagsSuspenseQuery, useTagFluidgridsEntityMutation, useTerminateExecutionMutation, useTriggerWorkflowMutation, useUnpinNodeDataMutation, useUntagFluidgridsEntityMutation, useUpdateWorkflowDefinitionMutation, useUsageTimeSeriesLazyQuery, useUsageTimeSeriesQuery, useUsageTimeSeriesSuspenseQuery, useWorkflowDefinitionLazyQuery, useWorkflowDefinitionQuery, useWorkflowDefinitionSuspenseQuery, useWorkflowDefinitionsLazyQuery, useWorkflowDefinitionsQuery, useWorkflowDefinitionsSuspenseQuery, useWorkflowDefinitionsTagsLazyQuery, useWorkflowDefinitionsTagsQuery, useWorkflowDefinitionsTagsSuspenseQuery, useWorkflowPinnedDataLazyQuery, useWorkflowPinnedDataQuery, useWorkflowPinnedDataSuspenseQuery, useWorkflowRunLazyQuery, useWorkflowRunQuery, useWorkflowRunSuspenseQuery, useWorkflowRunsLazyQuery, useWorkflowRunsQuery, useWorkflowRunsSuspenseQuery, useWorkflowVersionsLazyQuery, useWorkflowVersionsQuery, useWorkflowVersionsSuspenseQuery } from './chunk-BHITFSOK.js';
|
|
35
|
+
import { useTr } from './chunk-7YWBH2A5.js';
|
|
34
36
|
export { ENGLISH_FALLBACK_TRANSLATOR, FluidGridsTranslationProvider, useTr } from './chunk-7YWBH2A5.js';
|
|
35
37
|
import * as React4 from 'react';
|
|
36
|
-
import { lazy, Suspense, useMemo, useState, useEffect } from 'react';
|
|
37
|
-
import { Routes, Route, Navigate } from 'react-router';
|
|
38
|
+
import { lazy, Suspense, useMemo, useState, useEffect, useCallback } from 'react';
|
|
39
|
+
import { Routes, Route, Navigate, useNavigate } from 'react-router';
|
|
38
40
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
39
41
|
import { Icon } from '@iconify/react';
|
|
40
42
|
import { ErrorBoundary } from '@burdenoff/fe-libs/shared/components';
|
|
41
43
|
import '@xyflow/react/dist/style.css';
|
|
44
|
+
import { Button } from '@burdenoff/fe-libs/button';
|
|
45
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent, Card, Table, TableHeader, TableRow, TableHead, TableBody, TableCell, Badge, CardHeader, Label, Input, Switch, Dialog, DialogContent, DialogHeader, DialogTitle, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, DialogFooter } from '@burdenoff/fe-libs/ui';
|
|
46
|
+
import { toast } from 'sonner';
|
|
47
|
+
import { gql } from '@apollo/client';
|
|
42
48
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
43
49
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
44
50
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
@@ -50,10 +56,10 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
|
|
|
50
56
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
51
57
|
|
|
52
58
|
var WorkflowsList2 = lazy(
|
|
53
|
-
() => import('./WorkflowsList-
|
|
59
|
+
() => import('./WorkflowsList-JHM7Q5HE.js').then((m) => ({ default: m.WorkflowsList }))
|
|
54
60
|
);
|
|
55
61
|
var WorkflowBuilder3 = lazy(
|
|
56
|
-
() => import('./WorkflowBuilder-
|
|
62
|
+
() => import('./WorkflowBuilder-D7RKU4UK.js').then((m) => ({
|
|
57
63
|
default: m.WorkflowBuilder
|
|
58
64
|
}))
|
|
59
65
|
);
|
|
@@ -63,7 +69,7 @@ var ExecutionsListPage2 = lazy(
|
|
|
63
69
|
}))
|
|
64
70
|
);
|
|
65
71
|
var ExecutionDetailPage2 = lazy(
|
|
66
|
-
() => import('./ExecutionDetailPage-
|
|
72
|
+
() => import('./ExecutionDetailPage-OSDL7NDT.js').then((m) => ({
|
|
67
73
|
default: m.ExecutionDetailPage
|
|
68
74
|
}))
|
|
69
75
|
);
|
|
@@ -306,6 +312,867 @@ function postToParent(payload) {
|
|
|
306
312
|
if (window.parent === window) return;
|
|
307
313
|
window.parent.postMessage(payload, "*");
|
|
308
314
|
}
|
|
315
|
+
var VARIABLE_FIELDS = gql`
|
|
316
|
+
fragment WorkflowVariableFields on WorkflowVariable {
|
|
317
|
+
id
|
|
318
|
+
scope
|
|
319
|
+
workspaceId
|
|
320
|
+
projectId
|
|
321
|
+
key
|
|
322
|
+
description
|
|
323
|
+
isSecret
|
|
324
|
+
externalProvider
|
|
325
|
+
externalRef
|
|
326
|
+
value
|
|
327
|
+
createdAt
|
|
328
|
+
updatedAt
|
|
329
|
+
createdBy
|
|
330
|
+
updatedBy
|
|
331
|
+
}
|
|
332
|
+
`;
|
|
333
|
+
var GET_WORKFLOW_VARIABLES = gql`
|
|
334
|
+
${VARIABLE_FIELDS}
|
|
335
|
+
query GetWorkflowVariables($scope: VariableScope, $projectId: ID) {
|
|
336
|
+
workflowVariables(scope: $scope, projectId: $projectId) {
|
|
337
|
+
variables {
|
|
338
|
+
...WorkflowVariableFields
|
|
339
|
+
}
|
|
340
|
+
total
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
`;
|
|
344
|
+
var CREATE_WORKFLOW_VARIABLE = gql`
|
|
345
|
+
${VARIABLE_FIELDS}
|
|
346
|
+
mutation CreateWorkflowVariable($input: CreateWorkflowVariableInput!) {
|
|
347
|
+
createWorkflowVariable(input: $input) {
|
|
348
|
+
success
|
|
349
|
+
message
|
|
350
|
+
variable {
|
|
351
|
+
...WorkflowVariableFields
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
`;
|
|
356
|
+
var UPDATE_WORKFLOW_VARIABLE = gql`
|
|
357
|
+
${VARIABLE_FIELDS}
|
|
358
|
+
mutation UpdateWorkflowVariable(
|
|
359
|
+
$id: ID!
|
|
360
|
+
$input: UpdateWorkflowVariableInput!
|
|
361
|
+
) {
|
|
362
|
+
updateWorkflowVariable(id: $id, input: $input) {
|
|
363
|
+
success
|
|
364
|
+
message
|
|
365
|
+
variable {
|
|
366
|
+
...WorkflowVariableFields
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
`;
|
|
371
|
+
var DELETE_WORKFLOW_VARIABLE = gql`
|
|
372
|
+
mutation DeleteWorkflowVariable($id: ID!) {
|
|
373
|
+
deleteWorkflowVariable(id: $id) {
|
|
374
|
+
success
|
|
375
|
+
message
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
`;
|
|
379
|
+
var REVEAL_WORKFLOW_VARIABLE_VALUE = gql`
|
|
380
|
+
mutation RevealWorkflowVariableValue($id: ID!) {
|
|
381
|
+
revealWorkflowVariableValue(id: $id) {
|
|
382
|
+
success
|
|
383
|
+
message
|
|
384
|
+
value
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
`;
|
|
388
|
+
var GET_SECRETS_PROVIDER_CONFIGS = gql`
|
|
389
|
+
query GetSecretsProviderConfigs {
|
|
390
|
+
secretsProviderConfigs {
|
|
391
|
+
id
|
|
392
|
+
workspaceId
|
|
393
|
+
provider
|
|
394
|
+
awsSecretsManagerPrefix
|
|
395
|
+
awsRegion
|
|
396
|
+
vaultAddress
|
|
397
|
+
vaultMountPath
|
|
398
|
+
azureKeyVaultUri
|
|
399
|
+
gcpProjectId
|
|
400
|
+
isEnabled
|
|
401
|
+
lastTestedAt
|
|
402
|
+
lastTestStatus
|
|
403
|
+
lastTestMessage
|
|
404
|
+
createdAt
|
|
405
|
+
updatedAt
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
`;
|
|
409
|
+
var SAVE_SECRETS_PROVIDER_CONFIG = gql`
|
|
410
|
+
mutation SaveSecretsProviderConfig($input: SaveSecretsProviderConfigInput!) {
|
|
411
|
+
saveSecretsProviderConfig(input: $input) {
|
|
412
|
+
success
|
|
413
|
+
message
|
|
414
|
+
config {
|
|
415
|
+
id
|
|
416
|
+
provider
|
|
417
|
+
awsSecretsManagerPrefix
|
|
418
|
+
awsRegion
|
|
419
|
+
isEnabled
|
|
420
|
+
lastTestedAt
|
|
421
|
+
lastTestStatus
|
|
422
|
+
lastTestMessage
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
`;
|
|
427
|
+
var TEST_SECRETS_PROVIDER_CONNECTION = gql`
|
|
428
|
+
mutation TestSecretsProviderConnection($provider: SecretProviderType!) {
|
|
429
|
+
testSecretsProviderConnection(provider: $provider) {
|
|
430
|
+
success
|
|
431
|
+
message
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
`;
|
|
435
|
+
function useVariables(filter) {
|
|
436
|
+
const [variables, setVariables] = useState([]);
|
|
437
|
+
const [total, setTotal] = useState(0);
|
|
438
|
+
const [loading, setLoading] = useState(true);
|
|
439
|
+
const [error, setError] = useState(null);
|
|
440
|
+
const scope = filter?.scope;
|
|
441
|
+
const projectId = filter?.projectId;
|
|
442
|
+
const fetchData = useCallback(async () => {
|
|
443
|
+
setLoading(true);
|
|
444
|
+
setError(null);
|
|
445
|
+
try {
|
|
446
|
+
const client = getFluidGridsClient();
|
|
447
|
+
const result = await client.query({
|
|
448
|
+
query: GET_WORKFLOW_VARIABLES,
|
|
449
|
+
variables: { scope, projectId },
|
|
450
|
+
fetchPolicy: "network-only"
|
|
451
|
+
});
|
|
452
|
+
setVariables(result.data?.workflowVariables?.variables ?? []);
|
|
453
|
+
setTotal(result.data?.workflowVariables?.total ?? 0);
|
|
454
|
+
} catch (err) {
|
|
455
|
+
setError(err);
|
|
456
|
+
} finally {
|
|
457
|
+
setLoading(false);
|
|
458
|
+
}
|
|
459
|
+
}, [scope, projectId]);
|
|
460
|
+
useEffect(() => {
|
|
461
|
+
fetchData();
|
|
462
|
+
}, [fetchData]);
|
|
463
|
+
return { variables, total, loading, error, refetch: fetchData };
|
|
464
|
+
}
|
|
465
|
+
function useCreateVariable() {
|
|
466
|
+
const [loading, setLoading] = useState(false);
|
|
467
|
+
const [error, setError] = useState(null);
|
|
468
|
+
const createVariable = useCallback(
|
|
469
|
+
async (input) => {
|
|
470
|
+
setLoading(true);
|
|
471
|
+
setError(null);
|
|
472
|
+
try {
|
|
473
|
+
const client = getFluidGridsClient();
|
|
474
|
+
const result = throwIfResultError(
|
|
475
|
+
await client.mutate({ mutation: CREATE_WORKFLOW_VARIABLE, variables: { input } })
|
|
476
|
+
);
|
|
477
|
+
const response = result.data?.createWorkflowVariable;
|
|
478
|
+
if (!response?.success)
|
|
479
|
+
throw new Error(response?.message ?? "Failed to create variable");
|
|
480
|
+
return response.variable;
|
|
481
|
+
} catch (err) {
|
|
482
|
+
setError(err);
|
|
483
|
+
throw err;
|
|
484
|
+
} finally {
|
|
485
|
+
setLoading(false);
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
[]
|
|
489
|
+
);
|
|
490
|
+
return { createVariable, loading, error };
|
|
491
|
+
}
|
|
492
|
+
function useUpdateVariable() {
|
|
493
|
+
const [loading, setLoading] = useState(false);
|
|
494
|
+
const [error, setError] = useState(null);
|
|
495
|
+
const updateVariable = useCallback(
|
|
496
|
+
async (id, input) => {
|
|
497
|
+
setLoading(true);
|
|
498
|
+
setError(null);
|
|
499
|
+
try {
|
|
500
|
+
const client = getFluidGridsClient();
|
|
501
|
+
const result = throwIfResultError(
|
|
502
|
+
await client.mutate({ mutation: UPDATE_WORKFLOW_VARIABLE, variables: { id, input } })
|
|
503
|
+
);
|
|
504
|
+
const response = result.data?.updateWorkflowVariable;
|
|
505
|
+
if (!response?.success)
|
|
506
|
+
throw new Error(response?.message ?? "Failed to update variable");
|
|
507
|
+
return response.variable;
|
|
508
|
+
} catch (err) {
|
|
509
|
+
setError(err);
|
|
510
|
+
throw err;
|
|
511
|
+
} finally {
|
|
512
|
+
setLoading(false);
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
[]
|
|
516
|
+
);
|
|
517
|
+
return { updateVariable, loading, error };
|
|
518
|
+
}
|
|
519
|
+
function useDeleteVariable() {
|
|
520
|
+
const [loading, setLoading] = useState(false);
|
|
521
|
+
const [error, setError] = useState(null);
|
|
522
|
+
const deleteVariable = useCallback(async (id) => {
|
|
523
|
+
setLoading(true);
|
|
524
|
+
setError(null);
|
|
525
|
+
try {
|
|
526
|
+
const client = getFluidGridsClient();
|
|
527
|
+
const result = throwIfResultError(
|
|
528
|
+
await client.mutate({
|
|
529
|
+
mutation: DELETE_WORKFLOW_VARIABLE,
|
|
530
|
+
variables: { id }
|
|
531
|
+
})
|
|
532
|
+
);
|
|
533
|
+
const response = result.data?.deleteWorkflowVariable;
|
|
534
|
+
if (!response?.success)
|
|
535
|
+
throw new Error(response?.message ?? "Failed to delete variable");
|
|
536
|
+
return true;
|
|
537
|
+
} catch (err) {
|
|
538
|
+
setError(err);
|
|
539
|
+
throw err;
|
|
540
|
+
} finally {
|
|
541
|
+
setLoading(false);
|
|
542
|
+
}
|
|
543
|
+
}, []);
|
|
544
|
+
return { deleteVariable, loading, error };
|
|
545
|
+
}
|
|
546
|
+
function useRevealVariableValue() {
|
|
547
|
+
const [loading, setLoading] = useState(false);
|
|
548
|
+
const [error, setError] = useState(null);
|
|
549
|
+
const revealValue = useCallback(async (id) => {
|
|
550
|
+
setLoading(true);
|
|
551
|
+
setError(null);
|
|
552
|
+
try {
|
|
553
|
+
const client = getFluidGridsClient();
|
|
554
|
+
const result = throwIfResultError(
|
|
555
|
+
await client.mutate({ mutation: REVEAL_WORKFLOW_VARIABLE_VALUE, variables: { id } })
|
|
556
|
+
);
|
|
557
|
+
const response = result.data?.revealWorkflowVariableValue;
|
|
558
|
+
if (!response?.success)
|
|
559
|
+
throw new Error(response?.message ?? "Failed to reveal value");
|
|
560
|
+
return response.value ?? "";
|
|
561
|
+
} catch (err) {
|
|
562
|
+
setError(err);
|
|
563
|
+
throw err;
|
|
564
|
+
} finally {
|
|
565
|
+
setLoading(false);
|
|
566
|
+
}
|
|
567
|
+
}, []);
|
|
568
|
+
return { revealValue, loading, error };
|
|
569
|
+
}
|
|
570
|
+
function useSecretsProviderConfigs() {
|
|
571
|
+
const [configs, setConfigs] = useState([]);
|
|
572
|
+
const [loading, setLoading] = useState(true);
|
|
573
|
+
const [error, setError] = useState(null);
|
|
574
|
+
const fetchData = useCallback(async () => {
|
|
575
|
+
setLoading(true);
|
|
576
|
+
setError(null);
|
|
577
|
+
try {
|
|
578
|
+
const client = getFluidGridsClient();
|
|
579
|
+
const result = await client.query({
|
|
580
|
+
query: GET_SECRETS_PROVIDER_CONFIGS,
|
|
581
|
+
fetchPolicy: "network-only"
|
|
582
|
+
});
|
|
583
|
+
setConfigs(result.data?.secretsProviderConfigs ?? []);
|
|
584
|
+
} catch (err) {
|
|
585
|
+
setError(err);
|
|
586
|
+
} finally {
|
|
587
|
+
setLoading(false);
|
|
588
|
+
}
|
|
589
|
+
}, []);
|
|
590
|
+
useEffect(() => {
|
|
591
|
+
fetchData();
|
|
592
|
+
}, [fetchData]);
|
|
593
|
+
return { configs, loading, error, refetch: fetchData };
|
|
594
|
+
}
|
|
595
|
+
function useSaveSecretsProviderConfig() {
|
|
596
|
+
const [loading, setLoading] = useState(false);
|
|
597
|
+
const [error, setError] = useState(null);
|
|
598
|
+
const saveConfig = useCallback(
|
|
599
|
+
async (input) => {
|
|
600
|
+
setLoading(true);
|
|
601
|
+
setError(null);
|
|
602
|
+
try {
|
|
603
|
+
const client = getFluidGridsClient();
|
|
604
|
+
const result = throwIfResultError(
|
|
605
|
+
await client.mutate({ mutation: SAVE_SECRETS_PROVIDER_CONFIG, variables: { input } })
|
|
606
|
+
);
|
|
607
|
+
const response = result.data?.saveSecretsProviderConfig;
|
|
608
|
+
if (!response?.success)
|
|
609
|
+
throw new Error(
|
|
610
|
+
response?.message ?? "Failed to save provider configuration"
|
|
611
|
+
);
|
|
612
|
+
return response.config;
|
|
613
|
+
} catch (err) {
|
|
614
|
+
setError(err);
|
|
615
|
+
throw err;
|
|
616
|
+
} finally {
|
|
617
|
+
setLoading(false);
|
|
618
|
+
}
|
|
619
|
+
},
|
|
620
|
+
[]
|
|
621
|
+
);
|
|
622
|
+
return { saveConfig, loading, error };
|
|
623
|
+
}
|
|
624
|
+
function useTestSecretsProviderConnection() {
|
|
625
|
+
const [loading, setLoading] = useState(false);
|
|
626
|
+
const [error, setError] = useState(null);
|
|
627
|
+
const testConnection = useCallback(async (provider) => {
|
|
628
|
+
setLoading(true);
|
|
629
|
+
setError(null);
|
|
630
|
+
try {
|
|
631
|
+
const client = getFluidGridsClient();
|
|
632
|
+
const result = throwIfResultError(
|
|
633
|
+
await client.mutate({
|
|
634
|
+
mutation: TEST_SECRETS_PROVIDER_CONNECTION,
|
|
635
|
+
variables: { provider }
|
|
636
|
+
})
|
|
637
|
+
);
|
|
638
|
+
return result.data?.testSecretsProviderConnection ?? {
|
|
639
|
+
success: false,
|
|
640
|
+
message: "Unknown error"
|
|
641
|
+
};
|
|
642
|
+
} catch (err) {
|
|
643
|
+
setError(err);
|
|
644
|
+
throw err;
|
|
645
|
+
} finally {
|
|
646
|
+
setLoading(false);
|
|
647
|
+
}
|
|
648
|
+
}, []);
|
|
649
|
+
return { testConnection, loading, error };
|
|
650
|
+
}
|
|
651
|
+
function VariableValueCell({ variable }) {
|
|
652
|
+
const tr = useTr();
|
|
653
|
+
const { revealValue, loading } = useRevealVariableValue();
|
|
654
|
+
const [revealed, setRevealed] = useState(null);
|
|
655
|
+
const isMasked = variable.isSecret || variable.externalProvider !== "NONE";
|
|
656
|
+
const handleReveal = useCallback(async () => {
|
|
657
|
+
try {
|
|
658
|
+
const value = await revealValue(variable.id);
|
|
659
|
+
setRevealed(value);
|
|
660
|
+
setTimeout(() => setRevealed(null), 15e3);
|
|
661
|
+
} catch (err) {
|
|
662
|
+
toast.error(
|
|
663
|
+
err instanceof Error ? err.message : tr("fluidgrids.variables.revealFailed", "Failed to reveal value")
|
|
664
|
+
);
|
|
665
|
+
}
|
|
666
|
+
}, [revealValue, variable.id, tr]);
|
|
667
|
+
if (variable.externalProvider !== "NONE" && revealed === null) {
|
|
668
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
669
|
+
/* @__PURE__ */ jsx(Badge, { variant: "outline", className: "font-mono text-xs", children: variable.externalProvider }),
|
|
670
|
+
variable.externalRef && /* @__PURE__ */ jsx(
|
|
671
|
+
"span",
|
|
672
|
+
{
|
|
673
|
+
className: "text-xs text-text-secondary truncate max-w-[160px]",
|
|
674
|
+
title: variable.externalRef,
|
|
675
|
+
children: variable.externalRef
|
|
676
|
+
}
|
|
677
|
+
),
|
|
678
|
+
/* @__PURE__ */ jsx(
|
|
679
|
+
"button",
|
|
680
|
+
{
|
|
681
|
+
onClick: handleReveal,
|
|
682
|
+
disabled: loading,
|
|
683
|
+
className: "text-xs text-text-secondary hover:text-text-primary underline",
|
|
684
|
+
children: tr("fluidgrids.variables.reveal", "Reveal")
|
|
685
|
+
}
|
|
686
|
+
)
|
|
687
|
+
] });
|
|
688
|
+
}
|
|
689
|
+
if (!isMasked) {
|
|
690
|
+
return /* @__PURE__ */ jsx("code", { className: "text-sm text-text-primary", children: variable.value ?? "" });
|
|
691
|
+
}
|
|
692
|
+
if (revealed !== null) {
|
|
693
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
694
|
+
/* @__PURE__ */ jsx("code", { className: "text-sm text-text-primary break-all", children: revealed }),
|
|
695
|
+
/* @__PURE__ */ jsx(
|
|
696
|
+
"button",
|
|
697
|
+
{
|
|
698
|
+
onClick: () => setRevealed(null),
|
|
699
|
+
className: "text-xs text-text-secondary hover:text-text-primary underline shrink-0",
|
|
700
|
+
children: tr("fluidgrids.variables.hide", "Hide")
|
|
701
|
+
}
|
|
702
|
+
)
|
|
703
|
+
] });
|
|
704
|
+
}
|
|
705
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
706
|
+
/* @__PURE__ */ jsx("span", { className: "tracking-widest text-text-secondary select-none", children: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" }),
|
|
707
|
+
/* @__PURE__ */ jsx(
|
|
708
|
+
"button",
|
|
709
|
+
{
|
|
710
|
+
onClick: handleReveal,
|
|
711
|
+
disabled: loading,
|
|
712
|
+
className: "text-xs text-text-secondary hover:text-text-primary underline",
|
|
713
|
+
children: loading ? tr("fluidgrids.variables.revealing", "Revealing\u2026") : tr("fluidgrids.variables.reveal", "Reveal")
|
|
714
|
+
}
|
|
715
|
+
)
|
|
716
|
+
] });
|
|
717
|
+
}
|
|
718
|
+
function VariableFormDialog({
|
|
719
|
+
open,
|
|
720
|
+
onOpenChange,
|
|
721
|
+
variable,
|
|
722
|
+
onSaved
|
|
723
|
+
}) {
|
|
724
|
+
const tr = useTr();
|
|
725
|
+
const { createVariable, loading: creating } = useCreateVariable();
|
|
726
|
+
const { updateVariable, loading: updating } = useUpdateVariable();
|
|
727
|
+
const isEdit = !!variable;
|
|
728
|
+
const [key, setKey] = useState(variable?.key ?? "");
|
|
729
|
+
const [description, setDescription] = useState(variable?.description ?? "");
|
|
730
|
+
const [isSecret, setIsSecret] = useState(variable?.isSecret ?? false);
|
|
731
|
+
const [value, setValue] = useState("");
|
|
732
|
+
const [scope, setScope] = useState(
|
|
733
|
+
variable?.scope ?? "WORKSPACE"
|
|
734
|
+
);
|
|
735
|
+
const resetForm = useCallback(() => {
|
|
736
|
+
setKey(variable?.key ?? "");
|
|
737
|
+
setDescription(variable?.description ?? "");
|
|
738
|
+
setIsSecret(variable?.isSecret ?? false);
|
|
739
|
+
setValue("");
|
|
740
|
+
setScope(variable?.scope ?? "WORKSPACE");
|
|
741
|
+
}, [variable]);
|
|
742
|
+
const handleSubmit = useCallback(async () => {
|
|
743
|
+
try {
|
|
744
|
+
if (isEdit && variable) {
|
|
745
|
+
await updateVariable(variable.id, {
|
|
746
|
+
description: description || void 0,
|
|
747
|
+
isSecret,
|
|
748
|
+
...value ? { value } : {}
|
|
749
|
+
});
|
|
750
|
+
toast.success(tr("fluidgrids.variables.updated", "Variable updated"));
|
|
751
|
+
} else {
|
|
752
|
+
if (!key.trim()) {
|
|
753
|
+
toast.error(
|
|
754
|
+
tr("fluidgrids.variables.keyRequired", "Key is required")
|
|
755
|
+
);
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
await createVariable({
|
|
759
|
+
key: key.trim(),
|
|
760
|
+
description: description || void 0,
|
|
761
|
+
isSecret,
|
|
762
|
+
value,
|
|
763
|
+
scope
|
|
764
|
+
});
|
|
765
|
+
toast.success(tr("fluidgrids.variables.created", "Variable created"));
|
|
766
|
+
}
|
|
767
|
+
onSaved();
|
|
768
|
+
onOpenChange(false);
|
|
769
|
+
} catch (err) {
|
|
770
|
+
toast.error(
|
|
771
|
+
err instanceof Error ? err.message : tr("fluidgrids.variables.saveFailed", "Failed to save variable")
|
|
772
|
+
);
|
|
773
|
+
}
|
|
774
|
+
}, [
|
|
775
|
+
isEdit,
|
|
776
|
+
variable,
|
|
777
|
+
key,
|
|
778
|
+
description,
|
|
779
|
+
isSecret,
|
|
780
|
+
value,
|
|
781
|
+
scope,
|
|
782
|
+
createVariable,
|
|
783
|
+
updateVariable,
|
|
784
|
+
onSaved,
|
|
785
|
+
onOpenChange,
|
|
786
|
+
tr
|
|
787
|
+
]);
|
|
788
|
+
return /* @__PURE__ */ jsx(
|
|
789
|
+
Dialog,
|
|
790
|
+
{
|
|
791
|
+
open,
|
|
792
|
+
onOpenChange: (next) => {
|
|
793
|
+
if (next) resetForm();
|
|
794
|
+
onOpenChange(next);
|
|
795
|
+
},
|
|
796
|
+
children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-md", children: [
|
|
797
|
+
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: isEdit ? tr("fluidgrids.variables.editTitle", "Edit variable") : tr("fluidgrids.variables.createTitle", "New variable") }) }),
|
|
798
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-4 py-2", children: [
|
|
799
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
800
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "variable-key", children: tr("fluidgrids.variables.keyLabel", "Key") }),
|
|
801
|
+
/* @__PURE__ */ jsx(
|
|
802
|
+
Input,
|
|
803
|
+
{
|
|
804
|
+
id: "variable-key",
|
|
805
|
+
value: key,
|
|
806
|
+
onChange: (e) => setKey(e.target.value),
|
|
807
|
+
disabled: isEdit,
|
|
808
|
+
placeholder: "API_URL"
|
|
809
|
+
}
|
|
810
|
+
),
|
|
811
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: tr(
|
|
812
|
+
"fluidgrids.variables.keyHint",
|
|
813
|
+
"Use it in expressions as {{ $vars.KEY }} or ${vars.KEY}"
|
|
814
|
+
) })
|
|
815
|
+
] }),
|
|
816
|
+
!isEdit && /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
817
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "variable-scope", children: tr("fluidgrids.variables.scopeLabel", "Scope") }),
|
|
818
|
+
/* @__PURE__ */ jsxs(
|
|
819
|
+
Select,
|
|
820
|
+
{
|
|
821
|
+
value: scope,
|
|
822
|
+
onValueChange: (v) => setScope(v),
|
|
823
|
+
children: [
|
|
824
|
+
/* @__PURE__ */ jsx(SelectTrigger, { id: "variable-scope", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
|
|
825
|
+
/* @__PURE__ */ jsxs(SelectContent, { children: [
|
|
826
|
+
/* @__PURE__ */ jsx(SelectItem, { value: "WORKSPACE", children: tr("fluidgrids.variables.scopeWorkspace", "Workspace") }),
|
|
827
|
+
/* @__PURE__ */ jsx(SelectItem, { value: "PROJECT", children: tr("fluidgrids.variables.scopeProject", "Project") })
|
|
828
|
+
] })
|
|
829
|
+
]
|
|
830
|
+
}
|
|
831
|
+
)
|
|
832
|
+
] }),
|
|
833
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
834
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "variable-description", children: tr("fluidgrids.variables.descriptionLabel", "Description") }),
|
|
835
|
+
/* @__PURE__ */ jsx(
|
|
836
|
+
Input,
|
|
837
|
+
{
|
|
838
|
+
id: "variable-description",
|
|
839
|
+
value: description,
|
|
840
|
+
onChange: (e) => setDescription(e.target.value),
|
|
841
|
+
placeholder: tr(
|
|
842
|
+
"fluidgrids.variables.descriptionPlaceholder",
|
|
843
|
+
"Optional"
|
|
844
|
+
)
|
|
845
|
+
}
|
|
846
|
+
)
|
|
847
|
+
] }),
|
|
848
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1", children: [
|
|
849
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
850
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "variable-secret", children: tr("fluidgrids.variables.secretLabel", "Secret value") }),
|
|
851
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: tr(
|
|
852
|
+
"fluidgrids.variables.secretHint",
|
|
853
|
+
"Masked in the UI and never printed to run logs"
|
|
854
|
+
) })
|
|
855
|
+
] }),
|
|
856
|
+
/* @__PURE__ */ jsx(
|
|
857
|
+
Switch,
|
|
858
|
+
{
|
|
859
|
+
id: "variable-secret",
|
|
860
|
+
checked: isSecret,
|
|
861
|
+
onCheckedChange: setIsSecret
|
|
862
|
+
}
|
|
863
|
+
)
|
|
864
|
+
] }),
|
|
865
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
866
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "variable-value", children: tr("fluidgrids.variables.valueLabel", "Value") }),
|
|
867
|
+
/* @__PURE__ */ jsx(
|
|
868
|
+
Input,
|
|
869
|
+
{
|
|
870
|
+
id: "variable-value",
|
|
871
|
+
type: isSecret ? "password" : "text",
|
|
872
|
+
value,
|
|
873
|
+
onChange: (e) => setValue(e.target.value),
|
|
874
|
+
placeholder: isEdit ? tr(
|
|
875
|
+
"fluidgrids.variables.valueLeaveBlank",
|
|
876
|
+
"Leave blank to keep the current value"
|
|
877
|
+
) : ""
|
|
878
|
+
}
|
|
879
|
+
)
|
|
880
|
+
] })
|
|
881
|
+
] }),
|
|
882
|
+
/* @__PURE__ */ jsxs(DialogFooter, { children: [
|
|
883
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), children: tr("fluidgrids.variables.cancel", "Cancel") }),
|
|
884
|
+
/* @__PURE__ */ jsx(Button, { onClick: handleSubmit, disabled: creating || updating, children: creating || updating ? tr("fluidgrids.variables.saving", "Saving\u2026") : tr("fluidgrids.variables.save", "Save") })
|
|
885
|
+
] })
|
|
886
|
+
] })
|
|
887
|
+
}
|
|
888
|
+
);
|
|
889
|
+
}
|
|
890
|
+
function VariablesTab() {
|
|
891
|
+
const tr = useTr();
|
|
892
|
+
const { variables, loading, refetch } = useVariables();
|
|
893
|
+
const { deleteVariable } = useDeleteVariable();
|
|
894
|
+
const [dialogOpen, setDialogOpen] = useState(false);
|
|
895
|
+
const [editing, setEditing] = useState(null);
|
|
896
|
+
const handleCreate = useCallback(() => {
|
|
897
|
+
setEditing(null);
|
|
898
|
+
setDialogOpen(true);
|
|
899
|
+
}, []);
|
|
900
|
+
const handleEdit = useCallback((variable) => {
|
|
901
|
+
setEditing(variable);
|
|
902
|
+
setDialogOpen(true);
|
|
903
|
+
}, []);
|
|
904
|
+
const handleDelete = useCallback(
|
|
905
|
+
async (variable) => {
|
|
906
|
+
if (!window.confirm(
|
|
907
|
+
tr(
|
|
908
|
+
"fluidgrids.variables.confirmDelete",
|
|
909
|
+
`Delete variable "${variable.key}"?`
|
|
910
|
+
)
|
|
911
|
+
))
|
|
912
|
+
return;
|
|
913
|
+
try {
|
|
914
|
+
await deleteVariable(variable.id);
|
|
915
|
+
toast.success(tr("fluidgrids.variables.deleted", "Variable deleted"));
|
|
916
|
+
refetch();
|
|
917
|
+
} catch (err) {
|
|
918
|
+
toast.error(
|
|
919
|
+
err instanceof Error ? err.message : tr(
|
|
920
|
+
"fluidgrids.variables.deleteFailed",
|
|
921
|
+
"Failed to delete variable"
|
|
922
|
+
)
|
|
923
|
+
);
|
|
924
|
+
}
|
|
925
|
+
},
|
|
926
|
+
[deleteVariable, refetch, tr]
|
|
927
|
+
);
|
|
928
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
929
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
930
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-text-secondary", children: tr(
|
|
931
|
+
"fluidgrids.variables.tabDescription",
|
|
932
|
+
"Reference these in any node parameter as {{ $vars.KEY }} (new expressions) or ${vars.KEY} (legacy)."
|
|
933
|
+
) }),
|
|
934
|
+
/* @__PURE__ */ jsxs(Button, { onClick: handleCreate, size: "sm", children: [
|
|
935
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:plus", className: "mr-1.5", width: 16 }),
|
|
936
|
+
tr("fluidgrids.variables.newVariable", "New Variable")
|
|
937
|
+
] })
|
|
938
|
+
] }),
|
|
939
|
+
/* @__PURE__ */ jsx(Card, { className: "border border-border-secondary bg-background-secondary", children: /* @__PURE__ */ jsxs(Table, { children: [
|
|
940
|
+
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
941
|
+
/* @__PURE__ */ jsx(TableHead, { children: tr("fluidgrids.variables.colKey", "Key") }),
|
|
942
|
+
/* @__PURE__ */ jsx(TableHead, { children: tr("fluidgrids.variables.colScope", "Scope") }),
|
|
943
|
+
/* @__PURE__ */ jsx(TableHead, { children: tr("fluidgrids.variables.colValue", "Value") }),
|
|
944
|
+
/* @__PURE__ */ jsx(TableHead, { className: "text-right", children: tr("fluidgrids.variables.colActions", "Actions") })
|
|
945
|
+
] }) }),
|
|
946
|
+
/* @__PURE__ */ jsxs(TableBody, { children: [
|
|
947
|
+
loading && /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
|
|
948
|
+
TableCell,
|
|
949
|
+
{
|
|
950
|
+
colSpan: 4,
|
|
951
|
+
className: "text-center text-text-secondary py-8",
|
|
952
|
+
children: tr("fluidgrids.variables.loading", "Loading\u2026")
|
|
953
|
+
}
|
|
954
|
+
) }),
|
|
955
|
+
!loading && variables.length === 0 && /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
|
|
956
|
+
TableCell,
|
|
957
|
+
{
|
|
958
|
+
colSpan: 4,
|
|
959
|
+
className: "text-center text-text-secondary py-8",
|
|
960
|
+
children: tr("fluidgrids.variables.empty", "No variables yet")
|
|
961
|
+
}
|
|
962
|
+
) }),
|
|
963
|
+
variables.map((variable) => /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
964
|
+
/* @__PURE__ */ jsxs(TableCell, { children: [
|
|
965
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
966
|
+
/* @__PURE__ */ jsx("code", { className: "text-sm font-medium text-text-primary", children: variable.key }),
|
|
967
|
+
variable.isSecret && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "text-[10px]", children: tr("fluidgrids.variables.secretBadge", "SECRET") })
|
|
968
|
+
] }),
|
|
969
|
+
variable.description && /* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary mt-0.5", children: variable.description })
|
|
970
|
+
] }),
|
|
971
|
+
/* @__PURE__ */ jsx(TableCell, { className: "text-text-secondary text-sm", children: variable.scope }),
|
|
972
|
+
/* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(VariableValueCell, { variable }) }),
|
|
973
|
+
/* @__PURE__ */ jsx(TableCell, { className: "text-right", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-1", children: [
|
|
974
|
+
/* @__PURE__ */ jsx(
|
|
975
|
+
"button",
|
|
976
|
+
{
|
|
977
|
+
onClick: () => handleEdit(variable),
|
|
978
|
+
className: "p-1.5 rounded hover:bg-background-tertiary text-text-secondary hover:text-text-primary",
|
|
979
|
+
title: tr("fluidgrids.variables.edit", "Edit"),
|
|
980
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:pencil-outline", width: 16 })
|
|
981
|
+
}
|
|
982
|
+
),
|
|
983
|
+
/* @__PURE__ */ jsx(
|
|
984
|
+
"button",
|
|
985
|
+
{
|
|
986
|
+
onClick: () => handleDelete(variable),
|
|
987
|
+
className: "p-1.5 rounded hover:bg-background-tertiary text-text-secondary hover:text-red-400",
|
|
988
|
+
title: tr("fluidgrids.variables.delete", "Delete"),
|
|
989
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:trash-can-outline", width: 16 })
|
|
990
|
+
}
|
|
991
|
+
)
|
|
992
|
+
] }) })
|
|
993
|
+
] }, variable.id))
|
|
994
|
+
] })
|
|
995
|
+
] }) }),
|
|
996
|
+
/* @__PURE__ */ jsx(
|
|
997
|
+
VariableFormDialog,
|
|
998
|
+
{
|
|
999
|
+
open: dialogOpen,
|
|
1000
|
+
onOpenChange: setDialogOpen,
|
|
1001
|
+
variable: editing,
|
|
1002
|
+
onSaved: refetch
|
|
1003
|
+
}
|
|
1004
|
+
)
|
|
1005
|
+
] });
|
|
1006
|
+
}
|
|
1007
|
+
function ExternalProvidersTab() {
|
|
1008
|
+
const tr = useTr();
|
|
1009
|
+
const { configs, loading, refetch } = useSecretsProviderConfigs();
|
|
1010
|
+
const { saveConfig, loading: saving } = useSaveSecretsProviderConfig();
|
|
1011
|
+
const { testConnection, loading: testing } = useTestSecretsProviderConnection();
|
|
1012
|
+
const awsConfig = configs.find((c) => c.provider === "AWS_SECRETS_MANAGER");
|
|
1013
|
+
const [prefix, setPrefix] = useState(
|
|
1014
|
+
awsConfig?.awsSecretsManagerPrefix ?? ""
|
|
1015
|
+
);
|
|
1016
|
+
const [region, setRegion] = useState(awsConfig?.awsRegion ?? "ap-south-1");
|
|
1017
|
+
const [enabled, setEnabled] = useState(awsConfig?.isEnabled ?? false);
|
|
1018
|
+
const [lastTest, setLastTest] = useState(
|
|
1019
|
+
awsConfig?.lastTestStatus ? {
|
|
1020
|
+
success: awsConfig.lastTestStatus === "SUCCESS",
|
|
1021
|
+
message: awsConfig.lastTestMessage ?? ""
|
|
1022
|
+
} : null
|
|
1023
|
+
);
|
|
1024
|
+
const handleSave = useCallback(async () => {
|
|
1025
|
+
try {
|
|
1026
|
+
await saveConfig({
|
|
1027
|
+
provider: "AWS_SECRETS_MANAGER",
|
|
1028
|
+
awsSecretsManagerPrefix: prefix || void 0,
|
|
1029
|
+
awsRegion: region || void 0,
|
|
1030
|
+
isEnabled: enabled
|
|
1031
|
+
});
|
|
1032
|
+
toast.success(
|
|
1033
|
+
tr(
|
|
1034
|
+
"fluidgrids.variables.providerSaved",
|
|
1035
|
+
"Provider configuration saved"
|
|
1036
|
+
)
|
|
1037
|
+
);
|
|
1038
|
+
refetch();
|
|
1039
|
+
} catch (err) {
|
|
1040
|
+
toast.error(
|
|
1041
|
+
err instanceof Error ? err.message : tr("fluidgrids.variables.providerSaveFailed", "Failed to save")
|
|
1042
|
+
);
|
|
1043
|
+
}
|
|
1044
|
+
}, [saveConfig, prefix, region, enabled, refetch, tr]);
|
|
1045
|
+
const handleTest = useCallback(async () => {
|
|
1046
|
+
try {
|
|
1047
|
+
const result = await testConnection(
|
|
1048
|
+
"AWS_SECRETS_MANAGER"
|
|
1049
|
+
);
|
|
1050
|
+
setLastTest(result);
|
|
1051
|
+
if (result.success) {
|
|
1052
|
+
toast.success(result.message);
|
|
1053
|
+
} else {
|
|
1054
|
+
toast.error(result.message);
|
|
1055
|
+
}
|
|
1056
|
+
} catch (err) {
|
|
1057
|
+
toast.error(
|
|
1058
|
+
err instanceof Error ? err.message : tr("fluidgrids.variables.testFailed", "Connection test failed")
|
|
1059
|
+
);
|
|
1060
|
+
}
|
|
1061
|
+
}, [testConnection, tr]);
|
|
1062
|
+
if (loading) {
|
|
1063
|
+
return /* @__PURE__ */ jsx("p", { className: "text-text-secondary text-sm", children: tr("fluidgrids.variables.loading", "Loading\u2026") });
|
|
1064
|
+
}
|
|
1065
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4 max-w-xl", children: [
|
|
1066
|
+
/* @__PURE__ */ jsx(Card, { className: "border border-border-secondary bg-background-secondary", children: /* @__PURE__ */ jsxs(CardHeader, { className: "pb-3 space-y-4", children: [
|
|
1067
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1068
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:aws", width: 20, className: "text-text-secondary" }),
|
|
1069
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-text-primary", children: tr(
|
|
1070
|
+
"fluidgrids.variables.awsProviderTitle",
|
|
1071
|
+
"AWS Secrets Manager"
|
|
1072
|
+
) })
|
|
1073
|
+
] }),
|
|
1074
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: tr(
|
|
1075
|
+
"fluidgrids.variables.awsProviderDescription",
|
|
1076
|
+
"A variable can reference a secret stored in AWS Secrets Manager instead of storing its own value. Only secrets under the prefix below are reachable."
|
|
1077
|
+
) }),
|
|
1078
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
1079
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "aws-prefix", children: tr(
|
|
1080
|
+
"fluidgrids.variables.awsPrefixLabel",
|
|
1081
|
+
"Secrets Manager prefix"
|
|
1082
|
+
) }),
|
|
1083
|
+
/* @__PURE__ */ jsx(
|
|
1084
|
+
Input,
|
|
1085
|
+
{
|
|
1086
|
+
id: "aws-prefix",
|
|
1087
|
+
value: prefix,
|
|
1088
|
+
onChange: (e) => setPrefix(e.target.value),
|
|
1089
|
+
placeholder: "boff/prod/wspace/workflow/vars/"
|
|
1090
|
+
}
|
|
1091
|
+
)
|
|
1092
|
+
] }),
|
|
1093
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
1094
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "aws-region", children: tr("fluidgrids.variables.awsRegionLabel", "Region") }),
|
|
1095
|
+
/* @__PURE__ */ jsx(
|
|
1096
|
+
Input,
|
|
1097
|
+
{
|
|
1098
|
+
id: "aws-region",
|
|
1099
|
+
value: region,
|
|
1100
|
+
onChange: (e) => setRegion(e.target.value)
|
|
1101
|
+
}
|
|
1102
|
+
)
|
|
1103
|
+
] }),
|
|
1104
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1105
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "aws-enabled", children: tr("fluidgrids.variables.awsEnabledLabel", "Enabled") }),
|
|
1106
|
+
/* @__PURE__ */ jsx(
|
|
1107
|
+
Switch,
|
|
1108
|
+
{
|
|
1109
|
+
id: "aws-enabled",
|
|
1110
|
+
checked: enabled,
|
|
1111
|
+
onCheckedChange: setEnabled
|
|
1112
|
+
}
|
|
1113
|
+
)
|
|
1114
|
+
] }),
|
|
1115
|
+
lastTest && /* @__PURE__ */ jsx(
|
|
1116
|
+
"div",
|
|
1117
|
+
{
|
|
1118
|
+
className: `text-xs rounded-md px-3 py-2 border ${lastTest.success ? "border-emerald-500/30 bg-emerald-500/10 text-emerald-400" : "border-red-500/30 bg-red-500/10 text-red-400"}`,
|
|
1119
|
+
children: lastTest.message
|
|
1120
|
+
}
|
|
1121
|
+
),
|
|
1122
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 pt-1", children: [
|
|
1123
|
+
/* @__PURE__ */ jsx(Button, { onClick: handleSave, disabled: saving, size: "sm", children: saving ? tr("fluidgrids.variables.saving", "Saving\u2026") : tr("fluidgrids.variables.save", "Save") }),
|
|
1124
|
+
/* @__PURE__ */ jsx(
|
|
1125
|
+
Button,
|
|
1126
|
+
{
|
|
1127
|
+
onClick: handleTest,
|
|
1128
|
+
disabled: testing,
|
|
1129
|
+
variant: "outline",
|
|
1130
|
+
size: "sm",
|
|
1131
|
+
children: testing ? tr("fluidgrids.variables.testing", "Testing\u2026") : tr("fluidgrids.variables.testConnection", "Test connection")
|
|
1132
|
+
}
|
|
1133
|
+
)
|
|
1134
|
+
] })
|
|
1135
|
+
] }) }),
|
|
1136
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: tr(
|
|
1137
|
+
"fluidgrids.variables.otherProvidersNote",
|
|
1138
|
+
"HashiCorp Vault, Azure Key Vault, and GCP Secret Manager are not available yet."
|
|
1139
|
+
) })
|
|
1140
|
+
] });
|
|
1141
|
+
}
|
|
1142
|
+
function VariablesPage() {
|
|
1143
|
+
const tr = useTr();
|
|
1144
|
+
const navigate = useNavigate();
|
|
1145
|
+
const [activeTab, setActiveTab] = useState("variables");
|
|
1146
|
+
return /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6 bg-background-primary min-h-screen", children: [
|
|
1147
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6", children: [
|
|
1148
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
1149
|
+
/* @__PURE__ */ jsx("h1", { className: "text-2xl sm:text-3xl font-bold text-text-primary", children: tr("fluidgrids.variables.pageTitle", "Variables") }),
|
|
1150
|
+
/* @__PURE__ */ jsx("p", { className: "text-text-secondary mt-1", children: tr(
|
|
1151
|
+
"fluidgrids.variables.pageSubtitle",
|
|
1152
|
+
"Reusable values workflows can reference as $vars"
|
|
1153
|
+
) })
|
|
1154
|
+
] }),
|
|
1155
|
+
/* @__PURE__ */ jsxs(Button, { variant: "outline", onClick: () => navigate("../list"), children: [
|
|
1156
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:arrow-left", className: "mr-2", width: 16 }),
|
|
1157
|
+
tr("fluidgrids.variables.backToWorkflows", "Back to Workflows")
|
|
1158
|
+
] })
|
|
1159
|
+
] }),
|
|
1160
|
+
/* @__PURE__ */ jsxs(Tabs, { value: activeTab, onValueChange: setActiveTab, className: "w-full", children: [
|
|
1161
|
+
/* @__PURE__ */ jsxs(TabsList, { className: "bg-background-secondary border border-border-secondary mb-6", children: [
|
|
1162
|
+
/* @__PURE__ */ jsxs(TabsTrigger, { value: "variables", className: "gap-1.5", children: [
|
|
1163
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:variable", width: 16 }),
|
|
1164
|
+
tr("fluidgrids.variables.variablesTab", "Variables")
|
|
1165
|
+
] }),
|
|
1166
|
+
/* @__PURE__ */ jsxs(TabsTrigger, { value: "providers", className: "gap-1.5", children: [
|
|
1167
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mdi:key-chain-variant", width: 16 }),
|
|
1168
|
+
tr("fluidgrids.variables.providersTab", "External Providers")
|
|
1169
|
+
] })
|
|
1170
|
+
] }),
|
|
1171
|
+
/* @__PURE__ */ jsx(TabsContent, { value: "variables", children: /* @__PURE__ */ jsx(VariablesTab, {}) }),
|
|
1172
|
+
/* @__PURE__ */ jsx(TabsContent, { value: "providers", children: /* @__PURE__ */ jsx(ExternalProvidersTab, {}) })
|
|
1173
|
+
] })
|
|
1174
|
+
] });
|
|
1175
|
+
}
|
|
309
1176
|
|
|
310
1177
|
// src/graphql/client-helpers.ts
|
|
311
1178
|
function createFluidGridsClients(config2) {
|
|
@@ -385,7 +1252,7 @@ var Textarea = React4.forwardRef(
|
|
|
385
1252
|
}
|
|
386
1253
|
);
|
|
387
1254
|
Textarea.displayName = "Textarea";
|
|
388
|
-
function
|
|
1255
|
+
function Tabs2({
|
|
389
1256
|
className,
|
|
390
1257
|
...props
|
|
391
1258
|
}) {
|
|
@@ -398,7 +1265,7 @@ function Tabs({
|
|
|
398
1265
|
}
|
|
399
1266
|
);
|
|
400
1267
|
}
|
|
401
|
-
function
|
|
1268
|
+
function TabsList2({
|
|
402
1269
|
className,
|
|
403
1270
|
...props
|
|
404
1271
|
}) {
|
|
@@ -414,7 +1281,7 @@ function TabsList({
|
|
|
414
1281
|
}
|
|
415
1282
|
);
|
|
416
1283
|
}
|
|
417
|
-
function
|
|
1284
|
+
function TabsTrigger2({
|
|
418
1285
|
className,
|
|
419
1286
|
...props
|
|
420
1287
|
}) {
|
|
@@ -430,7 +1297,7 @@ function TabsTrigger({
|
|
|
430
1297
|
}
|
|
431
1298
|
);
|
|
432
1299
|
}
|
|
433
|
-
function
|
|
1300
|
+
function TabsContent2({
|
|
434
1301
|
className,
|
|
435
1302
|
...props
|
|
436
1303
|
}) {
|
|
@@ -513,10 +1380,10 @@ var Separator = React4.forwardRef(
|
|
|
513
1380
|
)
|
|
514
1381
|
);
|
|
515
1382
|
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
516
|
-
var
|
|
1383
|
+
var Select2 = SelectPrimitive.Root;
|
|
517
1384
|
var SelectGroup = SelectPrimitive.Group;
|
|
518
|
-
var
|
|
519
|
-
var
|
|
1385
|
+
var SelectValue2 = SelectPrimitive.Value;
|
|
1386
|
+
var SelectTrigger2 = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
520
1387
|
SelectPrimitive.Trigger,
|
|
521
1388
|
{
|
|
522
1389
|
ref,
|
|
@@ -531,7 +1398,7 @@ var SelectTrigger = React4.forwardRef(({ className, children, ...props }, ref) =
|
|
|
531
1398
|
]
|
|
532
1399
|
}
|
|
533
1400
|
));
|
|
534
|
-
|
|
1401
|
+
SelectTrigger2.displayName = SelectPrimitive.Trigger.displayName;
|
|
535
1402
|
var SelectScrollUpButton = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
536
1403
|
SelectPrimitive.ScrollUpButton,
|
|
537
1404
|
{
|
|
@@ -558,7 +1425,7 @@ var SelectScrollDownButton = React4.forwardRef(({ className, ...props }, ref) =>
|
|
|
558
1425
|
}
|
|
559
1426
|
));
|
|
560
1427
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
561
|
-
var
|
|
1428
|
+
var SelectContent2 = React4.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
562
1429
|
SelectPrimitive.Content,
|
|
563
1430
|
{
|
|
564
1431
|
ref,
|
|
@@ -585,7 +1452,7 @@ var SelectContent = React4.forwardRef(({ className, children, position = "popper
|
|
|
585
1452
|
]
|
|
586
1453
|
}
|
|
587
1454
|
) }));
|
|
588
|
-
|
|
1455
|
+
SelectContent2.displayName = SelectPrimitive.Content.displayName;
|
|
589
1456
|
var SelectLabel = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
590
1457
|
SelectPrimitive.Label,
|
|
591
1458
|
{
|
|
@@ -595,7 +1462,7 @@ var SelectLabel = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
595
1462
|
}
|
|
596
1463
|
));
|
|
597
1464
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
598
|
-
var
|
|
1465
|
+
var SelectItem2 = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
599
1466
|
SelectPrimitive.Item,
|
|
600
1467
|
{
|
|
601
1468
|
ref,
|
|
@@ -610,7 +1477,7 @@ var SelectItem = React4.forwardRef(({ className, children, ...props }, ref) => /
|
|
|
610
1477
|
]
|
|
611
1478
|
}
|
|
612
1479
|
));
|
|
613
|
-
|
|
1480
|
+
SelectItem2.displayName = SelectPrimitive.Item.displayName;
|
|
614
1481
|
var SelectSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
615
1482
|
SelectPrimitive.Separator,
|
|
616
1483
|
{
|
|
@@ -768,7 +1635,7 @@ var Checkbox = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
768
1635
|
}
|
|
769
1636
|
));
|
|
770
1637
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
771
|
-
var
|
|
1638
|
+
var Switch2 = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
772
1639
|
SwitchPrimitives.Root,
|
|
773
1640
|
{
|
|
774
1641
|
className: cn(
|
|
@@ -787,7 +1654,7 @@ var Switch = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
787
1654
|
)
|
|
788
1655
|
}
|
|
789
1656
|
));
|
|
790
|
-
|
|
1657
|
+
Switch2.displayName = SwitchPrimitives.Root.displayName;
|
|
791
1658
|
var Popover = PopoverPrimitive.Root;
|
|
792
1659
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
793
1660
|
var PopoverContent = React4.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
@@ -805,6 +1672,6 @@ var PopoverContent = React4.forwardRef(({ className, align = "center", sideOffse
|
|
|
805
1672
|
) }));
|
|
806
1673
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
807
1674
|
|
|
808
|
-
export { Checkbox, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FluidGridsRoot, NODE_STATUS_CONFIG, Popover, PopoverContent, PopoverTrigger, RUN_STATUS_CONFIG, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, WorkflowEmbedPage, createFluidGridsClients };
|
|
1675
|
+
export { Checkbox, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FluidGridsRoot, NODE_STATUS_CONFIG, Popover, PopoverContent, PopoverTrigger, RUN_STATUS_CONFIG, ScrollArea, ScrollBar, Select2 as Select, SelectContent2 as SelectContent, SelectGroup, SelectItem2 as SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger2 as SelectTrigger, SelectValue2 as SelectValue, Separator, Switch2 as Switch, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Textarea, VariablesPage, WorkflowEmbedPage, createFluidGridsClients, useCreateVariable, useDeleteVariable, useRevealVariableValue, useSaveSecretsProviderConfig, useSecretsProviderConfigs, useTestSecretsProviderConnection, useUpdateVariable, useVariables };
|
|
809
1676
|
//# sourceMappingURL=index.js.map
|
|
810
1677
|
//# sourceMappingURL=index.js.map
|