@stigmer/react 3.12.1 → 3.12.3
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/access/ManageAccessDialog.d.ts.map +1 -1
- package/access/ManageAccessDialog.js +8 -19
- package/access/ManageAccessDialog.js.map +1 -1
- package/activity/format-relative-time.d.ts +11 -9
- package/activity/format-relative-time.d.ts.map +1 -1
- package/activity/format-relative-time.js +11 -9
- package/activity/format-relative-time.js.map +1 -1
- package/agent/steps/CapabilitiesStep.js +5 -2
- package/agent/steps/CapabilitiesStep.js.map +1 -1
- package/agent/steps/IdentityStep.d.ts.map +1 -1
- package/agent/steps/IdentityStep.js +6 -5
- package/agent/steps/IdentityStep.js.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js +15 -20
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
- package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
- package/api-key/ApiKeyCreatedAlert.js +12 -20
- package/api-key/ApiKeyCreatedAlert.js.map +1 -1
- package/api-key/ApiKeyListPanel.d.ts.map +1 -1
- package/api-key/ApiKeyListPanel.js +3 -23
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.d.ts.map +1 -1
- package/api-key/CreateApiKeyForm.js +6 -10
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/approval-defaults-context.d.ts +47 -0
- package/approval-defaults-context.d.ts.map +1 -0
- package/approval-defaults-context.js +27 -0
- package/approval-defaults-context.js.map +1 -0
- package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
- package/attachment/AttachmentImageLightbox.js +8 -23
- package/attachment/AttachmentImageLightbox.js.map +1 -1
- package/attachment/index.d.ts +2 -0
- package/attachment/index.d.ts.map +1 -1
- package/attachment/index.js +1 -0
- package/attachment/index.js.map +1 -1
- package/attachment/vision-preflight.d.ts +113 -0
- package/attachment/vision-preflight.d.ts.map +1 -0
- package/attachment/vision-preflight.js +143 -0
- package/attachment/vision-preflight.js.map +1 -0
- package/billing/AutoRechargeCard.d.ts.map +1 -1
- package/billing/AutoRechargeCard.js +3 -2
- package/billing/AutoRechargeCard.js.map +1 -1
- package/billing/BillingSection.d.ts.map +1 -1
- package/billing/BillingSection.js +3 -2
- package/billing/BillingSection.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +6 -21
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
- package/channel/ChannelCredentialsDialog.js +10 -21
- package/channel/ChannelCredentialsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +7 -22
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ConnectSlackDialog.d.ts.map +1 -1
- package/channel/ConnectSlackDialog.js +10 -23
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
- package/channel/ConnectWhatsAppDialog.js +10 -23
- package/channel/ConnectWhatsAppDialog.js.map +1 -1
- package/channel/useChannelSessions.d.ts.map +1 -1
- package/channel/useChannelSessions.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
- package/channel-app/ChannelAppDetailPanel.js +8 -5
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
- package/channel-app/CreateChannelAppForm.js +12 -7
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/channel-app/internal.d.ts +0 -1
- package/channel-app/internal.d.ts.map +1 -1
- package/channel-app/internal.js +5 -10
- package/channel-app/internal.js.map +1 -1
- package/composer/ComposerToolbar.js +2 -1
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +120 -13
- package/composer/SessionComposer.js.map +1 -1
- package/composer/icons.d.ts +0 -1
- package/composer/icons.d.ts.map +1 -1
- package/composer/icons.js +0 -3
- package/composer/icons.js.map +1 -1
- package/conversation/ConversationAttentionBanner.d.ts +23 -6
- package/conversation/ConversationAttentionBanner.d.ts.map +1 -1
- package/conversation/ConversationAttentionBanner.js +25 -10
- package/conversation/ConversationAttentionBanner.js.map +1 -1
- package/conversation/ConversationComposer.js +1 -1
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationListPane.d.ts.map +1 -1
- package/conversation/ConversationListPane.js +28 -8
- package/conversation/ConversationListPane.js.map +1 -1
- package/conversation/ConversationsWorkbench.d.ts.map +1 -1
- package/conversation/ConversationsWorkbench.js +1 -1
- package/conversation/ConversationsWorkbench.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +3 -14
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
- package/dashboard/DashboardFailedRuns.js +2 -14
- package/dashboard/DashboardFailedRuns.js.map +1 -1
- package/environment/CreateEnvironmentForm.d.ts.map +1 -1
- package/environment/CreateEnvironmentForm.js +4 -8
- package/environment/CreateEnvironmentForm.js.map +1 -1
- package/environment/EnvVarForm.d.ts.map +1 -1
- package/environment/EnvVarForm.js +2 -4
- package/environment/EnvVarForm.js.map +1 -1
- package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
- package/environment/EnvironmentVariableEditor.js +5 -7
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/execution/ApprovalCard.d.ts.map +1 -1
- package/execution/ApprovalCard.js +13 -3
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ArtifactApplyButton.d.ts.map +1 -1
- package/execution/ArtifactApplyButton.js +2 -4
- package/execution/ArtifactApplyButton.js.map +1 -1
- package/execution/ArtifactPreviewModal.d.ts.map +1 -1
- package/execution/ArtifactPreviewModal.js +11 -17
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/ExecutionErrorNotice.d.ts +36 -0
- package/execution/ExecutionErrorNotice.d.ts.map +1 -0
- package/execution/ExecutionErrorNotice.js +39 -0
- package/execution/ExecutionErrorNotice.js.map +1 -0
- package/execution/FilePathLink.d.ts.map +1 -1
- package/execution/FilePathLink.js +5 -8
- package/execution/FilePathLink.js.map +1 -1
- package/execution/FileReviewCard.d.ts.map +1 -1
- package/execution/FileReviewCard.js +1 -6
- package/execution/FileReviewCard.js.map +1 -1
- package/execution/FollowUpInput.d.ts.map +1 -1
- package/execution/FollowUpInput.js +1 -3
- package/execution/FollowUpInput.js.map +1 -1
- package/execution/LivenessStatusLine.d.ts +40 -0
- package/execution/LivenessStatusLine.d.ts.map +1 -0
- package/execution/LivenessStatusLine.js +34 -0
- package/execution/LivenessStatusLine.js.map +1 -0
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +31 -3
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +25 -0
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +51 -36
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts.map +1 -1
- package/execution/SetupProgress.js +1 -1
- package/execution/SetupProgress.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +9 -7
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/TerminalSession.d.ts +30 -0
- package/execution/TerminalSession.d.ts.map +1 -1
- package/execution/TerminalSession.js +37 -1
- package/execution/TerminalSession.js.map +1 -1
- package/execution/ToolCallDetail.d.ts +9 -0
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +16 -0
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallItem.d.ts +23 -7
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +120 -35
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/ToolRunGroup.d.ts.map +1 -1
- package/execution/ToolRunGroup.js +11 -11
- package/execution/ToolRunGroup.js.map +1 -1
- package/execution/WriteBackCard.d.ts.map +1 -1
- package/execution/WriteBackCard.js +5 -20
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/index.d.ts +7 -3
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +4 -2
- package/execution/index.js.map +1 -1
- package/execution/tool-categories.d.ts +93 -7
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +141 -5
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-presenter.d.ts +32 -1
- package/execution/tool-presenter.d.ts.map +1 -1
- package/execution/tool-presenter.js +10 -2
- package/execution/tool-presenter.js.map +1 -1
- package/execution/useArtifactInspection.d.ts.map +1 -1
- package/execution/useArtifactInspection.js +4 -7
- package/execution/useArtifactInspection.js.map +1 -1
- package/iam-policy/GrantAccessForm.d.ts.map +1 -1
- package/iam-policy/GrantAccessForm.js +2 -4
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
- package/iam-policy/OrgMembersPanel.js +3 -5
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/RoleSelector.d.ts.map +1 -1
- package/iam-policy/RoleSelector.js +7 -1
- package/iam-policy/RoleSelector.js.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +6 -9
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +17 -26
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +2 -4
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +8 -7
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/SsoLoginPrompt.js +5 -6
- package/identity-provider/SsoLoginPrompt.js.map +1 -1
- package/index.d.ts +9 -8
- package/index.d.ts.map +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +1 -6
- package/internal/DecisionButton.js.map +1 -1
- package/internal/DialogShell.d.ts +77 -0
- package/internal/DialogShell.d.ts.map +1 -0
- package/internal/DialogShell.js +77 -0
- package/internal/DialogShell.js.map +1 -0
- package/internal/SpinnerIcon.d.ts +22 -0
- package/internal/SpinnerIcon.d.ts.map +1 -0
- package/internal/SpinnerIcon.js +23 -0
- package/internal/SpinnerIcon.js.map +1 -0
- package/internal/select-element-text.d.ts +11 -0
- package/internal/select-element-text.d.ts.map +1 -0
- package/internal/select-element-text.js +19 -0
- package/internal/select-element-text.js.map +1 -0
- package/internal/thread-card/ThreadCardShell.d.ts +27 -10
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
- package/internal/thread-card/ThreadCardShell.js +11 -5
- package/internal/thread-card/ThreadCardShell.js.map +1 -1
- package/internal/thread-card/glyphs.d.ts +11 -2
- package/internal/thread-card/glyphs.d.ts.map +1 -1
- package/internal/thread-card/glyphs.js +9 -3
- package/internal/thread-card/glyphs.js.map +1 -1
- package/internal/thread-card/index.d.ts +1 -1
- package/internal/thread-card/index.d.ts.map +1 -1
- package/internal/thread-card/index.js.map +1 -1
- package/internal/useCopyFeedback.d.ts +28 -0
- package/internal/useCopyFeedback.d.ts.map +1 -0
- package/internal/useCopyFeedback.js +40 -0
- package/internal/useCopyFeedback.js.map +1 -0
- package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
- package/invitation/InvitationCreatedAlert.js +12 -19
- package/invitation/InvitationCreatedAlert.js.map +1 -1
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +14 -21
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.d.ts.map +1 -1
- package/invitation/InvitationRedemption.js +2 -4
- package/invitation/InvitationRedemption.js.map +1 -1
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +16 -27
- package/library/useExportResource.js.map +1 -1
- package/manifest/ApplyManifestDialog.d.ts.map +1 -1
- package/manifest/ApplyManifestDialog.js +7 -17
- package/manifest/ApplyManifestDialog.js.map +1 -1
- package/manifest/EditResourceYamlDialog.d.ts.map +1 -1
- package/manifest/EditResourceYamlDialog.js +3 -19
- package/manifest/EditResourceYamlDialog.js.map +1 -1
- package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
- package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
- package/mcp-server/DefinitionDriftNotice.js +52 -0
- package/mcp-server/DefinitionDriftNotice.js.map +1 -0
- package/mcp-server/McpServerConnectDialog.d.ts.map +1 -1
- package/mcp-server/McpServerConnectDialog.js +8 -20
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +50 -28
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/OAuthAppForm.d.ts.map +1 -1
- package/mcp-server/OAuthAppForm.js +2 -4
- package/mcp-server/OAuthAppForm.js.map +1 -1
- package/mcp-server/internal/definitionDrift.d.ts +39 -0
- package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
- package/mcp-server/internal/definitionDrift.js +122 -0
- package/mcp-server/internal/definitionDrift.js.map +1 -0
- package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
- package/mcp-server/internal/mcpServerToInput.js +3 -0
- package/mcp-server/internal/mcpServerToInput.js.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +5 -4
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/useMcpServerConnect.d.ts +1 -1
- package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
- package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
- package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
- package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
- package/models/ModelRegistryContext.d.ts +7 -1
- package/models/ModelRegistryContext.d.ts.map +1 -1
- package/models/ModelRegistryContext.js.map +1 -1
- package/models/ModelSelector.js +9 -1
- package/models/ModelSelector.js.map +1 -1
- package/models/index.d.ts +2 -2
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -1
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +88 -6
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +133 -27
- package/models/registry.js.map +1 -1
- package/models/useModelRegistry.d.ts +7 -1
- package/models/useModelRegistry.d.ts.map +1 -1
- package/models/useModelRegistry.js +3 -2
- package/models/useModelRegistry.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +4 -5
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +5 -6
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/organization/CreateOrganizationForm.d.ts.map +1 -1
- package/organization/CreateOrganizationForm.js +5 -9
- package/organization/CreateOrganizationForm.js.map +1 -1
- package/organization/OrgProfilePanel.d.ts.map +1 -1
- package/organization/OrgProfilePanel.js +7 -16
- package/organization/OrgProfilePanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
- package/platform-client/CreatePlatformClientForm.js +5 -6
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +6 -7
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +2 -4
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
- package/platform-client/PlatformClientSecretAlert.js +18 -25
- package/platform-client/PlatformClientSecretAlert.js.map +1 -1
- package/provider.d.ts +34 -1
- package/provider.d.ts.map +1 -1
- package/provider.js +14 -7
- package/provider.js.map +1 -1
- package/resource-creation/WizardNav.d.ts.map +1 -1
- package/resource-creation/WizardNav.js +2 -4
- package/resource-creation/WizardNav.js.map +1 -1
- package/resource-detail/ConfirmDialog.d.ts +2 -3
- package/resource-detail/ConfirmDialog.d.ts.map +1 -1
- package/resource-detail/ConfirmDialog.js +8 -20
- package/resource-detail/ConfirmDialog.js.map +1 -1
- package/resource-detail/useCopyResource.d.ts +4 -3
- package/resource-detail/useCopyResource.d.ts.map +1 -1
- package/resource-detail/useCopyResource.js +10 -19
- package/resource-detail/useCopyResource.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +2 -4
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.d.ts.map +1 -1
- package/schedule/ScheduleForm.js +6 -7
- package/schedule/ScheduleForm.js.map +1 -1
- package/session/NewSessionViewer.d.ts +52 -2
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +21 -6
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts +63 -2
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +43 -17
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +17 -0
- package/session/audience.d.ts.map +1 -1
- package/session/index.d.ts +2 -1
- package/session/index.d.ts.map +1 -1
- package/session/index.js.map +1 -1
- package/session/run-config.d.ts +50 -0
- package/session/run-config.d.ts.map +1 -0
- package/session/run-config.js +15 -0
- package/session/run-config.js.map +1 -0
- package/session/useNewSessionFlow.d.ts +11 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +29 -2
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +7 -7
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +2 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +18 -4
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +33 -6
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +37 -2
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +44 -10
- package/session/useSessionPanel.js.map +1 -1
- package/settings/ApiKeysSection.d.ts.map +1 -1
- package/settings/ApiKeysSection.js +3 -2
- package/settings/ApiKeysSection.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts.map +1 -1
- package/settings/ChannelAppsSection.js +3 -2
- package/settings/ChannelAppsSection.js.map +1 -1
- package/settings/EnvironmentsSection.js +5 -3
- package/settings/EnvironmentsSection.js.map +1 -1
- package/settings/IdentityProvidersSection.d.ts.map +1 -1
- package/settings/IdentityProvidersSection.js +3 -2
- package/settings/IdentityProvidersSection.js.map +1 -1
- package/settings/InvitationsSection.d.ts.map +1 -1
- package/settings/InvitationsSection.js +3 -1
- package/settings/InvitationsSection.js.map +1 -1
- package/settings/MembersSection.d.ts.map +1 -1
- package/settings/MembersSection.js +3 -1
- package/settings/MembersSection.js.map +1 -1
- package/settings/OAuthAppsSection.d.ts.map +1 -1
- package/settings/OAuthAppsSection.js +3 -2
- package/settings/OAuthAppsSection.js.map +1 -1
- package/settings/OrgProfileSection.d.ts.map +1 -1
- package/settings/OrgProfileSection.js +3 -2
- package/settings/OrgProfileSection.js.map +1 -1
- package/settings/PlatformClientsSection.d.ts.map +1 -1
- package/settings/PlatformClientsSection.js +3 -2
- package/settings/PlatformClientsSection.js.map +1 -1
- package/settings/UsageSection.d.ts.map +1 -1
- package/settings/UsageSection.js +3 -1
- package/settings/UsageSection.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +19 -26
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/sidebar/chrome.d.ts +3 -4
- package/sidebar/chrome.d.ts.map +1 -1
- package/sidebar/chrome.js +5 -4
- package/sidebar/chrome.js.map +1 -1
- package/skill/SkillDiffDialog.d.ts.map +1 -1
- package/skill/SkillDiffDialog.js +5 -21
- package/skill/SkillDiffDialog.js.map +1 -1
- package/src/access/ManageAccessDialog.tsx +14 -28
- package/src/activity/format-relative-time.ts +11 -9
- package/src/agent/steps/CapabilitiesStep.tsx +6 -3
- package/src/agent/steps/IdentityStep.tsx +19 -12
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +29 -33
- package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
- package/src/api-key/ApiKeyListPanel.tsx +3 -39
- package/src/api-key/CreateApiKeyForm.tsx +12 -26
- package/src/approval-defaults-context.ts +56 -0
- package/src/attachment/AttachmentImageLightbox.tsx +13 -36
- package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
- package/src/attachment/index.ts +12 -0
- package/src/attachment/vision-preflight.ts +236 -0
- package/src/billing/AutoRechargeCard.tsx +5 -4
- package/src/billing/BillingSection.tsx +4 -3
- package/src/channel/ChannelConversationsDialog.tsx +14 -29
- package/src/channel/ChannelCredentialsDialog.tsx +19 -29
- package/src/channel/ChannelTemplatesDialog.tsx +16 -31
- package/src/channel/ConnectSlackDialog.tsx +19 -31
- package/src/channel/ConnectWhatsAppDialog.tsx +19 -31
- package/src/channel/useChannelSessions.ts +3 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
- package/src/channel-app/CreateChannelAppForm.tsx +17 -12
- package/src/channel-app/internal.tsx +5 -25
- package/src/composer/ComposerToolbar.tsx +1 -1
- package/src/composer/SessionComposer.tsx +160 -13
- package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
- package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
- package/src/composer/icons.tsx +0 -18
- package/src/conversation/ConversationAttentionBanner.tsx +64 -19
- package/src/conversation/ConversationComposer.tsx +1 -1
- package/src/conversation/ConversationListPane.tsx +46 -20
- package/src/conversation/ConversationsWorkbench.tsx +1 -0
- package/src/conversation/__tests__/ConversationAttentionBanner.test.tsx +76 -2
- package/src/conversation/__tests__/ConversationListPane.test.tsx +15 -4
- package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
- package/src/dashboard/DashboardFailedRuns.tsx +2 -12
- package/src/environment/CreateEnvironmentForm.tsx +8 -27
- package/src/environment/EnvVarForm.tsx +2 -18
- package/src/environment/EnvironmentVariableEditor.tsx +5 -21
- package/src/execution/ApprovalCard.tsx +23 -2
- package/src/execution/ArtifactApplyButton.tsx +2 -17
- package/src/execution/ArtifactPreviewModal.tsx +15 -27
- package/src/execution/ExecutionErrorNotice.tsx +99 -0
- package/src/execution/FilePathLink.tsx +5 -9
- package/src/execution/FileReviewCard.tsx +1 -20
- package/src/execution/FollowUpInput.tsx +1 -16
- package/src/execution/LivenessStatusLine.tsx +59 -0
- package/src/execution/MessageEntry.tsx +136 -25
- package/src/execution/MessageThread.tsx +84 -83
- package/src/execution/SetupProgress.tsx +5 -1
- package/src/execution/SubAgentSection.tsx +9 -20
- package/src/execution/TerminalSession.tsx +97 -10
- package/src/execution/ToolCallDetail.tsx +19 -0
- package/src/execution/ToolCallItem.tsx +175 -44
- package/src/execution/ToolRunGroup.tsx +30 -32
- package/src/execution/WriteBackCard.tsx +5 -24
- package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
- package/src/execution/__tests__/MessageThread.test.tsx +97 -0
- package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
- package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
- package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
- package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
- package/src/execution/__tests__/intent-title.test.tsx +221 -0
- package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
- package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
- package/src/execution/index.ts +11 -2
- package/src/execution/tool-categories.ts +195 -9
- package/src/execution/tool-presenter.ts +44 -2
- package/src/execution/useArtifactInspection.ts +4 -8
- package/src/iam-policy/GrantAccessForm.tsx +2 -18
- package/src/iam-policy/OrgMembersPanel.tsx +3 -19
- package/src/iam-policy/RoleSelector.tsx +8 -1
- package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
- package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
- package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
- package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
- package/src/index.ts +26 -1
- package/src/internal/DecisionButton.tsx +1 -20
- package/src/internal/DialogShell.tsx +169 -0
- package/src/internal/SpinnerIcon.tsx +42 -0
- package/src/internal/__tests__/DialogShell.test.tsx +223 -0
- package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
- package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
- package/src/internal/select-element-text.ts +17 -0
- package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
- package/src/internal/thread-card/glyphs.tsx +24 -3
- package/src/internal/thread-card/index.ts +1 -0
- package/src/internal/useCopyFeedback.ts +61 -0
- package/src/invitation/InvitationCreatedAlert.tsx +10 -18
- package/src/invitation/InvitationManager.tsx +23 -34
- package/src/invitation/InvitationRedemption.tsx +2 -18
- package/src/library/useExportResource.ts +15 -29
- package/src/manifest/ApplyManifestDialog.tsx +8 -26
- package/src/manifest/EditResourceYamlDialog.tsx +4 -31
- package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
- package/src/mcp-server/McpServerConnectDialog.tsx +15 -29
- package/src/mcp-server/McpServerDetailView.tsx +69 -49
- package/src/mcp-server/OAuthAppForm.tsx +2 -18
- package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
- package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
- package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
- package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
- package/src/mcp-server/internal/definitionDrift.ts +158 -0
- package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
- package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
- package/src/mcp-server/useMcpServerConnect.ts +1 -1
- package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
- package/src/models/ModelRegistryContext.ts +7 -1
- package/src/models/ModelSelector.tsx +37 -0
- package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
- package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
- package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
- package/src/models/index.ts +2 -2
- package/src/models/registry.ts +196 -29
- package/src/models/useModelRegistry.ts +10 -2
- package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
- package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
- package/src/organization/CreateOrganizationForm.tsx +10 -29
- package/src/organization/OrgProfilePanel.tsx +13 -44
- package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
- package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
- package/src/platform-client/PlatformClientListPanel.tsx +2 -18
- package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
- package/src/provider.tsx +76 -33
- package/src/resource-creation/WizardNav.tsx +2 -18
- package/src/resource-detail/ConfirmDialog.tsx +9 -30
- package/src/resource-detail/useCopyResource.ts +17 -23
- package/src/schedule/ScheduleDetailView.tsx +2 -18
- package/src/schedule/ScheduleForm.tsx +19 -34
- package/src/session/NewSessionViewer.tsx +85 -7
- package/src/session/SessionViewer.tsx +120 -17
- package/src/session/__tests__/audienceWiring.test.tsx +76 -0
- package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
- package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
- package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
- package/src/session/__tests__/useSessionPanel.test.ts +114 -0
- package/src/session/audience.ts +18 -0
- package/src/session/index.ts +2 -1
- package/src/session/run-config.ts +59 -0
- package/src/session/useNewSessionFlow.ts +39 -2
- package/src/session/useSessionConversation.ts +10 -8
- package/src/session/useSessionPageFlow.ts +51 -10
- package/src/session/useSessionPanel.ts +91 -10
- package/src/settings/ApiKeysSection.tsx +4 -3
- package/src/settings/ChannelAppsSection.tsx +4 -3
- package/src/settings/EnvironmentsSection.tsx +8 -5
- package/src/settings/IdentityProvidersSection.tsx +4 -3
- package/src/settings/InvitationsSection.tsx +4 -2
- package/src/settings/MembersSection.tsx +4 -2
- package/src/settings/OAuthAppsSection.tsx +4 -3
- package/src/settings/OrgProfileSection.tsx +4 -3
- package/src/settings/PlatformClientsSection.tsx +4 -3
- package/src/settings/UsageSection.tsx +4 -2
- package/src/sharing/ShareAgentDialog.tsx +33 -37
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
- package/src/sidebar/chrome.tsx +6 -6
- package/src/skill/SkillDiffDialog.tsx +13 -36
- package/src/styles.css +43 -0
- package/src/version-history/VersionTimelineEntry.tsx +1 -21
- package/src/workflow/FailedRunsWidget.tsx +2 -9
- package/src/workflow/PendingApprovalsWidget.tsx +2 -9
- package/src/workflow/ViewYamlDialog.tsx +21 -55
- package/src/workflow/WorkflowArchitectDialog.tsx +17 -68
- package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
- package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
- package/src/workflow/WorkflowCanvasInner.tsx +14 -1
- package/src/workflow/WorkflowDiffGraph.tsx +7 -1
- package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
- package/src/workflow/WorkflowExplainDialog.tsx +18 -60
- package/src/workflow/WorkflowGraphFullscreenDialog.tsx +14 -26
- package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
- package/src/workflow/WorkflowRefinePanel.tsx +2 -18
- package/src/workflow/WorkflowRepairCard.tsx +2 -18
- package/src/workflow/WorkflowRunDialog.tsx +23 -70
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
- package/src/workflow/WorkflowVersionBadge.tsx +4 -13
- package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
- package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
- package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
- package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
- package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +20 -41
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
- package/src/workflow/index.ts +1 -0
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +14 -27
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workflow/picker/BranchAddPopover.tsx +4 -3
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +18 -28
- package/src/workflow/useApprovalBoundary.ts +1 -1
- package/src/workflow/useWorkflowCanvas.ts +114 -11
- package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
- package/styles.css +1 -1
- package/version-history/VersionTimelineEntry.d.ts.map +1 -1
- package/version-history/VersionTimelineEntry.js +1 -23
- package/version-history/VersionTimelineEntry.js.map +1 -1
- package/workflow/CanvasTransitionEdge.d.ts +1 -1
- package/workflow/FailedRunsWidget.d.ts.map +1 -1
- package/workflow/FailedRunsWidget.js +2 -11
- package/workflow/FailedRunsWidget.js.map +1 -1
- package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
- package/workflow/PendingApprovalsWidget.js +2 -11
- package/workflow/PendingApprovalsWidget.js.map +1 -1
- package/workflow/ViewYamlDialog.d.ts.map +1 -1
- package/workflow/ViewYamlDialog.js +14 -49
- package/workflow/ViewYamlDialog.js.map +1 -1
- package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
- package/workflow/WorkflowArchitectDialog.js +10 -33
- package/workflow/WorkflowArchitectDialog.js.map +1 -1
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
- package/workflow/WorkflowArtifactDocument.js +5 -8
- package/workflow/WorkflowArtifactDocument.js.map +1 -1
- package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
- package/workflow/WorkflowCanvasEditor.js +1 -1
- package/workflow/WorkflowCanvasEditor.js.map +1 -1
- package/workflow/WorkflowCanvasInner.d.ts +4 -2
- package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
- package/workflow/WorkflowCanvasInner.js +7 -3
- package/workflow/WorkflowCanvasInner.js.map +1 -1
- package/workflow/WorkflowDiffGraph.js +6 -2
- package/workflow/WorkflowDiffGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +51 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +23 -6
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
- package/workflow/WorkflowExplainDialog.js +10 -28
- package/workflow/WorkflowExplainDialog.js.map +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.d.ts.map +1 -1
- package/workflow/WorkflowGraphFullscreenDialog.js +11 -17
- package/workflow/WorkflowGraphFullscreenDialog.js.map +1 -1
- package/workflow/WorkflowOverviewGraph.js +8 -2
- package/workflow/WorkflowOverviewGraph.js.map +1 -1
- package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
- package/workflow/WorkflowRefinePanel.js +2 -4
- package/workflow/WorkflowRefinePanel.js.map +1 -1
- package/workflow/WorkflowRepairCard.d.ts.map +1 -1
- package/workflow/WorkflowRepairCard.js +2 -4
- package/workflow/WorkflowRepairCard.js.map +1 -1
- package/workflow/WorkflowRunDialog.d.ts.map +1 -1
- package/workflow/WorkflowRunDialog.js +14 -35
- package/workflow/WorkflowRunDialog.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +2 -4
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
- package/workflow/WorkflowVersionBadge.js +4 -13
- package/workflow/WorkflowVersionBadge.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +1 -26
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.js +14 -40
- package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
- package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
- package/workflow/index.d.ts +1 -1
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +7 -20
- package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
- package/workflow/picker/BranchAddPopover.js +3 -2
- package/workflow/picker/BranchAddPopover.js.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.d.ts +1 -1
- package/workflow/templates/WorkflowTemplatePreview.d.ts.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.js +10 -22
- package/workflow/templates/WorkflowTemplatePreview.js.map +1 -1
- package/workflow/useApprovalBoundary.d.ts +1 -1
- package/workflow/useApprovalBoundary.js +1 -1
- package/workflow/useWorkflowCanvas.d.ts +5 -1
- package/workflow/useWorkflowCanvas.d.ts.map +1 -1
- package/workflow/useWorkflowCanvas.js +99 -13
- package/workflow/useWorkflowCanvas.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionPanel.js +46 -13
- package/workflow/useWorkflowExecutionPanel.js.map +1 -1
|
@@ -24,6 +24,7 @@ import { useCreateIamPolicy } from "./useCreateIamPolicy.js";
|
|
|
24
24
|
import { useDeleteIamPolicy } from "./useDeleteIamPolicy.js";
|
|
25
25
|
import { RoleSelector } from "./RoleSelector.js";
|
|
26
26
|
import { ProviderBadge } from "./ProviderBadge.js";
|
|
27
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
27
28
|
|
|
28
29
|
// ---------------------------------------------------------------------------
|
|
29
30
|
// Public API
|
|
@@ -368,7 +369,7 @@ function RemoveConfirmation({
|
|
|
368
369
|
"stg:disabled:pointer-events-none stg:disabled:opacity-50",
|
|
369
370
|
)}
|
|
370
371
|
>
|
|
371
|
-
{isRevoking && <SpinnerIcon />}
|
|
372
|
+
{isRevoking && <SpinnerIcon size={12} />}
|
|
372
373
|
Remove
|
|
373
374
|
</button>
|
|
374
375
|
<button
|
|
@@ -499,7 +500,7 @@ function ChangeRoleRow({
|
|
|
499
500
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
500
501
|
)}
|
|
501
502
|
>
|
|
502
|
-
{isWorking && <SpinnerIcon />}
|
|
503
|
+
{isWorking && <SpinnerIcon size={12} />}
|
|
503
504
|
{isWorking ? "Changing role…" : "Confirm"}
|
|
504
505
|
</button>
|
|
505
506
|
<button
|
|
@@ -562,20 +563,3 @@ function TrashIcon() {
|
|
|
562
563
|
);
|
|
563
564
|
}
|
|
564
565
|
|
|
565
|
-
function SpinnerIcon() {
|
|
566
|
-
return (
|
|
567
|
-
<svg
|
|
568
|
-
width="12"
|
|
569
|
-
height="12"
|
|
570
|
-
viewBox="0 0 16 16"
|
|
571
|
-
fill="none"
|
|
572
|
-
stroke="currentColor"
|
|
573
|
-
strokeWidth="2"
|
|
574
|
-
strokeLinecap="round"
|
|
575
|
-
className="stg:animate-spin"
|
|
576
|
-
aria-hidden="true"
|
|
577
|
-
>
|
|
578
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
579
|
-
</svg>
|
|
580
|
-
);
|
|
581
|
-
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
import { useId } from "react";
|
|
3
4
|
import type { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
4
5
|
import type { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
5
6
|
import { cn } from "@stigmer/theme";
|
|
@@ -47,6 +48,12 @@ export function RoleSelector({
|
|
|
47
48
|
disabled = false,
|
|
48
49
|
className,
|
|
49
50
|
}: RoleSelectorProps) {
|
|
51
|
+
// Instance-scoped radio-group name (oss#593): a hardcoded name would make
|
|
52
|
+
// every mounted RoleSelector share ONE radio group — with two copies on a
|
|
53
|
+
// page (e.g. zone-cached detail pages), keyboard selection escapes into
|
|
54
|
+
// the other, possibly aria-hidden, copy.
|
|
55
|
+
const groupName = useId();
|
|
56
|
+
|
|
50
57
|
const { options, selected: internalSelected, select } = useRoleSelector(
|
|
51
58
|
kind,
|
|
52
59
|
defaultRole,
|
|
@@ -84,7 +91,7 @@ export function RoleSelector({
|
|
|
84
91
|
>
|
|
85
92
|
<input
|
|
86
93
|
type="radio"
|
|
87
|
-
name=
|
|
94
|
+
name={groupName}
|
|
88
95
|
value={opt.value}
|
|
89
96
|
checked={isChecked}
|
|
90
97
|
disabled={disabled}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback,
|
|
3
|
+
import { type FormEvent, useCallback, useId, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import { getUserMessage } from "@stigmer/sdk";
|
|
6
6
|
import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
|
|
7
7
|
import { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
8
8
|
import { useCreateIdentityProvider } from "./useCreateIdentityProvider.js";
|
|
9
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
9
10
|
|
|
10
11
|
/** Props for {@link CreateIdentityProviderForm}. */
|
|
11
12
|
export interface CreateIdentityProviderFormProps {
|
|
@@ -50,6 +51,7 @@ export function CreateIdentityProviderForm({
|
|
|
50
51
|
onCancel,
|
|
51
52
|
className,
|
|
52
53
|
}: CreateIdentityProviderFormProps) {
|
|
54
|
+
const baseId = useId();
|
|
53
55
|
const { create, isCreating, error, clearError } =
|
|
54
56
|
useCreateIdentityProvider();
|
|
55
57
|
|
|
@@ -155,7 +157,7 @@ export function CreateIdentityProviderForm({
|
|
|
155
157
|
<form onSubmit={handleSubmit} className={cn("stg:space-y-3", className)}>
|
|
156
158
|
<div className="stg:space-y-3">
|
|
157
159
|
<FormField
|
|
158
|
-
id=
|
|
160
|
+
id={`${baseId}-name`}
|
|
159
161
|
label="Name"
|
|
160
162
|
value={name}
|
|
161
163
|
onChange={setName}
|
|
@@ -165,7 +167,7 @@ export function CreateIdentityProviderForm({
|
|
|
165
167
|
/>
|
|
166
168
|
|
|
167
169
|
<FormField
|
|
168
|
-
id=
|
|
170
|
+
id={`${baseId}-jwks`}
|
|
169
171
|
label="JWKS URI"
|
|
170
172
|
value={jwksUri}
|
|
171
173
|
onChange={setJwksUri}
|
|
@@ -175,7 +177,7 @@ export function CreateIdentityProviderForm({
|
|
|
175
177
|
/>
|
|
176
178
|
|
|
177
179
|
<FormField
|
|
178
|
-
id=
|
|
180
|
+
id={`${baseId}-issuers`}
|
|
179
181
|
label="Allowed issuers"
|
|
180
182
|
value={issuers}
|
|
181
183
|
onChange={setIssuers}
|
|
@@ -186,7 +188,7 @@ export function CreateIdentityProviderForm({
|
|
|
186
188
|
/>
|
|
187
189
|
|
|
188
190
|
<FormField
|
|
189
|
-
id=
|
|
191
|
+
id={`${baseId}-audience`}
|
|
190
192
|
label="Expected audience"
|
|
191
193
|
value={audience}
|
|
192
194
|
onChange={setAudience}
|
|
@@ -223,7 +225,7 @@ export function CreateIdentityProviderForm({
|
|
|
223
225
|
|
|
224
226
|
{isSso && (
|
|
225
227
|
<FormField
|
|
226
|
-
id=
|
|
228
|
+
id={`${baseId}-client-id`}
|
|
227
229
|
label="OIDC client ID"
|
|
228
230
|
value={oidcClientId}
|
|
229
231
|
onChange={setOidcClientId}
|
|
@@ -265,7 +267,7 @@ export function CreateIdentityProviderForm({
|
|
|
265
267
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
266
268
|
)}
|
|
267
269
|
>
|
|
268
|
-
{isCreating && <SpinnerIcon />}
|
|
270
|
+
{isCreating && <SpinnerIcon size={12} />}
|
|
269
271
|
Create identity provider
|
|
270
272
|
</button>
|
|
271
273
|
|
|
@@ -372,6 +374,7 @@ function JitSection({
|
|
|
372
374
|
onTenantOrgClaimChange: (v: string) => void;
|
|
373
375
|
disabled: boolean;
|
|
374
376
|
}) {
|
|
377
|
+
const baseId = useId();
|
|
375
378
|
if (isSso) {
|
|
376
379
|
return (
|
|
377
380
|
<div className="stg:rounded-md stg:border stg:border-border-muted stg:bg-muted-faint stg:px-3 stg:py-2">
|
|
@@ -415,13 +418,13 @@ function JitSection({
|
|
|
415
418
|
<>
|
|
416
419
|
<div className="stg:space-y-1">
|
|
417
420
|
<label
|
|
418
|
-
htmlFor=
|
|
421
|
+
htmlFor={`${baseId}-grant-role`}
|
|
419
422
|
className="stg:text-xs stg:font-medium stg:text-foreground"
|
|
420
423
|
>
|
|
421
424
|
Auto-grant role
|
|
422
425
|
</label>
|
|
423
426
|
<select
|
|
424
|
-
id=
|
|
427
|
+
id={`${baseId}-grant-role`}
|
|
425
428
|
value={String(autoGrantRole)}
|
|
426
429
|
onChange={(e) => onAutoGrantRoleChange(Number(e.target.value) as IamRole)}
|
|
427
430
|
disabled={disabled}
|
|
@@ -443,7 +446,7 @@ function JitSection({
|
|
|
443
446
|
</div>
|
|
444
447
|
|
|
445
448
|
<FormField
|
|
446
|
-
id=
|
|
449
|
+
id={`${baseId}-tenant-claim`}
|
|
447
450
|
label="Tenant org claim"
|
|
448
451
|
value={tenantOrgClaim}
|
|
449
452
|
onChange={onTenantOrgClaimChange}
|
|
@@ -505,24 +508,3 @@ function ToggleSwitch({
|
|
|
505
508
|
);
|
|
506
509
|
}
|
|
507
510
|
|
|
508
|
-
// ---------------------------------------------------------------------------
|
|
509
|
-
// Icons
|
|
510
|
-
// ---------------------------------------------------------------------------
|
|
511
|
-
|
|
512
|
-
function SpinnerIcon() {
|
|
513
|
-
return (
|
|
514
|
-
<svg
|
|
515
|
-
width="12"
|
|
516
|
-
height="12"
|
|
517
|
-
viewBox="0 0 16 16"
|
|
518
|
-
fill="none"
|
|
519
|
-
stroke="currentColor"
|
|
520
|
-
strokeWidth="2"
|
|
521
|
-
strokeLinecap="round"
|
|
522
|
-
className="stg:animate-spin"
|
|
523
|
-
aria-hidden="true"
|
|
524
|
-
>
|
|
525
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
526
|
-
</svg>
|
|
527
|
-
);
|
|
528
|
-
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback,
|
|
3
|
+
import { type FormEvent, useCallback, useId, useRef, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import { getUserMessage } from "@stigmer/sdk";
|
|
6
6
|
import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
|
|
7
7
|
import { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
8
8
|
import { timestampDate, type Timestamp } from "@bufbuild/protobuf/wkt";
|
|
9
9
|
import { useUpdateIdentityProvider } from "./useUpdateIdentityProvider.js";
|
|
10
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
11
|
+
import { selectElementText } from "../internal/select-element-text.js";
|
|
12
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
10
13
|
|
|
11
14
|
/** Props for {@link IdentityProviderDetailPanel}. */
|
|
12
15
|
export interface IdentityProviderDetailPanelProps {
|
|
@@ -55,6 +58,7 @@ export function IdentityProviderDetailPanel({
|
|
|
55
58
|
ssoLoginUrl,
|
|
56
59
|
className,
|
|
57
60
|
}: IdentityProviderDetailPanelProps) {
|
|
61
|
+
const baseId = useId();
|
|
58
62
|
const spec = identityProvider.spec;
|
|
59
63
|
const meta = identityProvider.metadata;
|
|
60
64
|
|
|
@@ -230,7 +234,7 @@ export function IdentityProviderDetailPanel({
|
|
|
230
234
|
) : (
|
|
231
235
|
<form onSubmit={handleSave} className="stg:space-y-3">
|
|
232
236
|
<FieldInput
|
|
233
|
-
id=
|
|
237
|
+
id={`${baseId}-name`}
|
|
234
238
|
label="Display name"
|
|
235
239
|
value={displayName}
|
|
236
240
|
onChange={setDisplayName}
|
|
@@ -239,7 +243,7 @@ export function IdentityProviderDetailPanel({
|
|
|
239
243
|
required
|
|
240
244
|
/>
|
|
241
245
|
<FieldInput
|
|
242
|
-
id=
|
|
246
|
+
id={`${baseId}-jwks`}
|
|
243
247
|
label="JWKS URI"
|
|
244
248
|
value={jwksUri}
|
|
245
249
|
onChange={setJwksUri}
|
|
@@ -248,7 +252,7 @@ export function IdentityProviderDetailPanel({
|
|
|
248
252
|
required
|
|
249
253
|
/>
|
|
250
254
|
<FieldInput
|
|
251
|
-
id=
|
|
255
|
+
id={`${baseId}-issuers`}
|
|
252
256
|
label="Allowed issuers"
|
|
253
257
|
value={issuers}
|
|
254
258
|
onChange={setIssuers}
|
|
@@ -258,7 +262,7 @@ export function IdentityProviderDetailPanel({
|
|
|
258
262
|
required
|
|
259
263
|
/>
|
|
260
264
|
<FieldInput
|
|
261
|
-
id=
|
|
265
|
+
id={`${baseId}-audience`}
|
|
262
266
|
label="Expected audience"
|
|
263
267
|
value={audience}
|
|
264
268
|
onChange={setAudience}
|
|
@@ -267,7 +271,7 @@ export function IdentityProviderDetailPanel({
|
|
|
267
271
|
required
|
|
268
272
|
/>
|
|
269
273
|
<FieldInput
|
|
270
|
-
id=
|
|
274
|
+
id={`${baseId}-userinfo`}
|
|
271
275
|
label="Userinfo endpoint"
|
|
272
276
|
value={userinfoEndpoint}
|
|
273
277
|
onChange={setUserinfoEndpoint}
|
|
@@ -304,7 +308,7 @@ export function IdentityProviderDetailPanel({
|
|
|
304
308
|
|
|
305
309
|
{isSso && (
|
|
306
310
|
<FieldInput
|
|
307
|
-
id=
|
|
311
|
+
id={`${baseId}-client-id`}
|
|
308
312
|
label="OIDC client ID"
|
|
309
313
|
value={oidcClientId}
|
|
310
314
|
onChange={setOidcClientId}
|
|
@@ -345,7 +349,7 @@ export function IdentityProviderDetailPanel({
|
|
|
345
349
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
346
350
|
)}
|
|
347
351
|
>
|
|
348
|
-
{isUpdating && <SpinnerIcon />}
|
|
352
|
+
{isUpdating && <SpinnerIcon size={12} />}
|
|
349
353
|
Save changes
|
|
350
354
|
</button>
|
|
351
355
|
<button
|
|
@@ -488,8 +492,6 @@ function Field({
|
|
|
488
492
|
// View mode — copyable field
|
|
489
493
|
// ---------------------------------------------------------------------------
|
|
490
494
|
|
|
491
|
-
const COPIED_FEEDBACK_MS = 2000;
|
|
492
|
-
|
|
493
495
|
function CopyableField({
|
|
494
496
|
label,
|
|
495
497
|
value,
|
|
@@ -499,25 +501,14 @@ function CopyableField({
|
|
|
499
501
|
value: string;
|
|
500
502
|
hint?: string;
|
|
501
503
|
}) {
|
|
502
|
-
const
|
|
503
|
-
const
|
|
504
|
+
const { copy, copied } = useCopyFeedback();
|
|
505
|
+
const revealRef = useRef<HTMLElement>(null);
|
|
504
506
|
|
|
505
507
|
const handleCopy = useCallback(async () => {
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
} catch {
|
|
511
|
-
const el = document.getElementById(valueId);
|
|
512
|
-
if (el) {
|
|
513
|
-
const selection = window.getSelection();
|
|
514
|
-
const range = document.createRange();
|
|
515
|
-
range.selectNodeContents(el);
|
|
516
|
-
selection?.removeAllRanges();
|
|
517
|
-
selection?.addRange(range);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
}, [value]);
|
|
508
|
+
if (await copy(value)) return;
|
|
509
|
+
// Rejected write: select the revealed value so the user can copy manually.
|
|
510
|
+
if (revealRef.current) selectElementText(revealRef.current);
|
|
511
|
+
}, [copy, value]);
|
|
521
512
|
|
|
522
513
|
return (
|
|
523
514
|
<div>
|
|
@@ -527,14 +518,14 @@ function CopyableField({
|
|
|
527
518
|
<dd className="stg:mt-0.5">
|
|
528
519
|
<div className="stg:flex stg:items-center stg:gap-2">
|
|
529
520
|
<span
|
|
530
|
-
|
|
521
|
+
ref={revealRef}
|
|
531
522
|
className="stg:text-foreground stg:break-all stg:font-mono stg:text-xs stg:select-all"
|
|
532
523
|
>
|
|
533
524
|
{value}
|
|
534
525
|
</span>
|
|
535
526
|
<button
|
|
536
527
|
type="button"
|
|
537
|
-
onClick={handleCopy}
|
|
528
|
+
onClick={() => void handleCopy()}
|
|
538
529
|
className={cn(
|
|
539
530
|
"stg:shrink-0 stg:rounded stg:px-1.5 stg:py-0.5 stg:text-[0.6rem]",
|
|
540
531
|
"stg:text-muted-foreground stg:hover:text-foreground stg:hover:bg-accent-hover",
|
|
@@ -669,6 +660,7 @@ function JitEditSection({
|
|
|
669
660
|
onTenantOrgClaimChange: (v: string) => void;
|
|
670
661
|
disabled?: boolean;
|
|
671
662
|
}) {
|
|
663
|
+
const baseId = useId();
|
|
672
664
|
if (isSso) {
|
|
673
665
|
return (
|
|
674
666
|
<div className="stg:rounded-md stg:border stg:border-border-muted stg:bg-muted-faint stg:px-3 stg:py-2">
|
|
@@ -712,13 +704,13 @@ function JitEditSection({
|
|
|
712
704
|
<>
|
|
713
705
|
<div className="stg:space-y-1">
|
|
714
706
|
<label
|
|
715
|
-
htmlFor=
|
|
707
|
+
htmlFor={`${baseId}-grant-role`}
|
|
716
708
|
className="stg:text-xs stg:font-medium stg:text-foreground"
|
|
717
709
|
>
|
|
718
710
|
Auto-grant role
|
|
719
711
|
</label>
|
|
720
712
|
<select
|
|
721
|
-
id=
|
|
713
|
+
id={`${baseId}-grant-role`}
|
|
722
714
|
value={String(autoGrantRole)}
|
|
723
715
|
onChange={(e) => onAutoGrantRoleChange(Number(e.target.value) as IamRole)}
|
|
724
716
|
disabled={disabled}
|
|
@@ -740,7 +732,7 @@ function JitEditSection({
|
|
|
740
732
|
</div>
|
|
741
733
|
|
|
742
734
|
<FieldInput
|
|
743
|
-
id=
|
|
735
|
+
id={`${baseId}-tenant-claim`}
|
|
744
736
|
label="Tenant org claim"
|
|
745
737
|
value={tenantOrgClaim}
|
|
746
738
|
onChange={onTenantOrgClaimChange}
|
|
@@ -846,20 +838,3 @@ function ArrowLeftIcon() {
|
|
|
846
838
|
);
|
|
847
839
|
}
|
|
848
840
|
|
|
849
|
-
function SpinnerIcon() {
|
|
850
|
-
return (
|
|
851
|
-
<svg
|
|
852
|
-
width="12"
|
|
853
|
-
height="12"
|
|
854
|
-
viewBox="0 0 16 16"
|
|
855
|
-
fill="none"
|
|
856
|
-
stroke="currentColor"
|
|
857
|
-
strokeWidth="2"
|
|
858
|
-
strokeLinecap="round"
|
|
859
|
-
className="stg:animate-spin"
|
|
860
|
-
aria-hidden="true"
|
|
861
|
-
>
|
|
862
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
863
|
-
</svg>
|
|
864
|
-
);
|
|
865
|
-
}
|
|
@@ -8,6 +8,7 @@ import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identitypr
|
|
|
8
8
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
|
|
9
9
|
import { useIdentityProviderList } from "./useIdentityProviderList.js";
|
|
10
10
|
import { useDeleteIdentityProvider } from "./useDeleteIdentityProvider.js";
|
|
11
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
11
12
|
|
|
12
13
|
/** Props for {@link IdentityProviderListPanel}. */
|
|
13
14
|
export interface IdentityProviderListPanelProps {
|
|
@@ -197,7 +198,7 @@ function IdpRow({
|
|
|
197
198
|
"stg:disabled:pointer-events-none stg:disabled:opacity-50",
|
|
198
199
|
)}
|
|
199
200
|
>
|
|
200
|
-
{isDeleting && <SpinnerIcon />}
|
|
201
|
+
{isDeleting && <SpinnerIcon size={12} />}
|
|
201
202
|
Delete
|
|
202
203
|
</button>
|
|
203
204
|
<button
|
|
@@ -366,20 +367,3 @@ function TrashIcon() {
|
|
|
366
367
|
);
|
|
367
368
|
}
|
|
368
369
|
|
|
369
|
-
function SpinnerIcon() {
|
|
370
|
-
return (
|
|
371
|
-
<svg
|
|
372
|
-
width="12"
|
|
373
|
-
height="12"
|
|
374
|
-
viewBox="0 0 16 16"
|
|
375
|
-
fill="none"
|
|
376
|
-
stroke="currentColor"
|
|
377
|
-
strokeWidth="2"
|
|
378
|
-
strokeLinecap="round"
|
|
379
|
-
className="stg:animate-spin"
|
|
380
|
-
aria-hidden="true"
|
|
381
|
-
>
|
|
382
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
383
|
-
</svg>
|
|
384
|
-
);
|
|
385
|
-
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
useCallback,
|
|
5
|
-
useState,
|
|
6
|
-
type FormEvent,
|
|
7
|
-
} from "react";
|
|
3
|
+
import { type FormEvent, useCallback, useId, useState } from "react";
|
|
8
4
|
import { cn } from "@stigmer/theme";
|
|
9
5
|
import { getUserMessage } from "@stigmer/sdk";
|
|
10
6
|
import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
|
|
@@ -13,6 +9,7 @@ import { ProviderPicker } from "./ProviderPicker.js";
|
|
|
13
9
|
import { useCreateIdentityProvider } from "./useCreateIdentityProvider.js";
|
|
14
10
|
import { useOidcDiscovery } from "./useOidcDiscovery.js";
|
|
15
11
|
import type { ProviderPreset, ProviderConfig } from "./presets.js";
|
|
12
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
16
13
|
|
|
17
14
|
/** Props for {@link IdentityProviderWizard}. */
|
|
18
15
|
export interface IdentityProviderWizardProps {
|
|
@@ -365,6 +362,7 @@ function ConfigureStep({
|
|
|
365
362
|
onContinue: () => void;
|
|
366
363
|
onCancel?: () => void;
|
|
367
364
|
}) {
|
|
365
|
+
const baseId = useId();
|
|
368
366
|
const allVarsFilled = preset.variables.every(
|
|
369
367
|
(v) => (vars[v.key] ?? "").trim() !== "",
|
|
370
368
|
);
|
|
@@ -402,7 +400,7 @@ function ConfigureStep({
|
|
|
402
400
|
|
|
403
401
|
{/* Common fields */}
|
|
404
402
|
<FieldInput
|
|
405
|
-
id=
|
|
403
|
+
id={`${baseId}-name`}
|
|
406
404
|
label="Display name"
|
|
407
405
|
value={name}
|
|
408
406
|
onChange={onNameChange}
|
|
@@ -412,7 +410,7 @@ function ConfigureStep({
|
|
|
412
410
|
/>
|
|
413
411
|
|
|
414
412
|
<FieldInput
|
|
415
|
-
id=
|
|
413
|
+
id={`${baseId}-audience`}
|
|
416
414
|
label="Expected audience"
|
|
417
415
|
value={audience}
|
|
418
416
|
onChange={onAudienceChange}
|
|
@@ -438,7 +436,7 @@ function ConfigureStep({
|
|
|
438
436
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
439
437
|
)}
|
|
440
438
|
>
|
|
441
|
-
{isLoading && <SpinnerIcon />}
|
|
439
|
+
{isLoading && <SpinnerIcon size={12} />}
|
|
442
440
|
Continue
|
|
443
441
|
</button>
|
|
444
442
|
<TextButton onClick={onBack} disabled={isLoading}>
|
|
@@ -507,6 +505,7 @@ function ReviewStep({
|
|
|
507
505
|
onSubmit: (e: FormEvent) => void;
|
|
508
506
|
onCancel?: () => void;
|
|
509
507
|
}) {
|
|
508
|
+
const baseId = useId();
|
|
510
509
|
const canSubmit =
|
|
511
510
|
jwksUri.trim() !== "" &&
|
|
512
511
|
issuers.trim() !== "" &&
|
|
@@ -530,7 +529,7 @@ function ReviewStep({
|
|
|
530
529
|
</p>
|
|
531
530
|
|
|
532
531
|
<FieldInput
|
|
533
|
-
id=
|
|
532
|
+
id={`${baseId}-jwks`}
|
|
534
533
|
label="JWKS URI"
|
|
535
534
|
value={jwksUri}
|
|
536
535
|
onChange={onJwksUriChange}
|
|
@@ -540,7 +539,7 @@ function ReviewStep({
|
|
|
540
539
|
/>
|
|
541
540
|
|
|
542
541
|
<FieldInput
|
|
543
|
-
id=
|
|
542
|
+
id={`${baseId}-issuers`}
|
|
544
543
|
label="Allowed issuers"
|
|
545
544
|
value={issuers}
|
|
546
545
|
onChange={onIssuersChange}
|
|
@@ -551,7 +550,7 @@ function ReviewStep({
|
|
|
551
550
|
/>
|
|
552
551
|
|
|
553
552
|
<FieldInput
|
|
554
|
-
id=
|
|
553
|
+
id={`${baseId}-userinfo`}
|
|
555
554
|
label="Userinfo endpoint"
|
|
556
555
|
value={userinfoEndpoint}
|
|
557
556
|
onChange={onUserinfoEndpointChange}
|
|
@@ -570,7 +569,7 @@ function ReviewStep({
|
|
|
570
569
|
|
|
571
570
|
{isSso && (
|
|
572
571
|
<FieldInput
|
|
573
|
-
id=
|
|
572
|
+
id={`${baseId}-client-id`}
|
|
574
573
|
label="OIDC client ID"
|
|
575
574
|
value={oidcClientId}
|
|
576
575
|
onChange={onOidcClientIdChange}
|
|
@@ -611,7 +610,7 @@ function ReviewStep({
|
|
|
611
610
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
612
611
|
)}
|
|
613
612
|
>
|
|
614
|
-
{isCreating && <SpinnerIcon />}
|
|
613
|
+
{isCreating && <SpinnerIcon size={12} />}
|
|
615
614
|
Create identity provider
|
|
616
615
|
</button>
|
|
617
616
|
<TextButton onClick={onBack} disabled={isCreating}>
|
|
@@ -825,6 +824,7 @@ function JitProvisioningSection({
|
|
|
825
824
|
onTenantOrgClaimChange: (v: string) => void;
|
|
826
825
|
disabled?: boolean;
|
|
827
826
|
}) {
|
|
827
|
+
const baseId = useId();
|
|
828
828
|
if (isSso) {
|
|
829
829
|
return (
|
|
830
830
|
<div className="stg:rounded-md stg:border stg:border-border-muted stg:bg-muted-faint stg:px-3 stg:py-2">
|
|
@@ -867,7 +867,7 @@ function JitProvisioningSection({
|
|
|
867
867
|
{autoGrant && (
|
|
868
868
|
<>
|
|
869
869
|
<FieldInput
|
|
870
|
-
id=
|
|
870
|
+
id={`${baseId}-grant-role`}
|
|
871
871
|
label="Auto-grant role"
|
|
872
872
|
value={String(autoGrantRole)}
|
|
873
873
|
onChange={(v) => onAutoGrantRoleChange(Number(v) as IamRole)}
|
|
@@ -879,7 +879,7 @@ function JitProvisioningSection({
|
|
|
879
879
|
/>
|
|
880
880
|
|
|
881
881
|
<FieldInput
|
|
882
|
-
id=
|
|
882
|
+
id={`${baseId}-tenant-claim`}
|
|
883
883
|
label="Tenant org claim"
|
|
884
884
|
value={tenantOrgClaim}
|
|
885
885
|
onChange={onTenantOrgClaimChange}
|
|
@@ -980,20 +980,3 @@ function CancelButton({
|
|
|
980
980
|
);
|
|
981
981
|
}
|
|
982
982
|
|
|
983
|
-
function SpinnerIcon() {
|
|
984
|
-
return (
|
|
985
|
-
<svg
|
|
986
|
-
width="12"
|
|
987
|
-
height="12"
|
|
988
|
-
viewBox="0 0 16 16"
|
|
989
|
-
fill="none"
|
|
990
|
-
stroke="currentColor"
|
|
991
|
-
strokeWidth="2"
|
|
992
|
-
strokeLinecap="round"
|
|
993
|
-
className="stg:animate-spin"
|
|
994
|
-
aria-hidden="true"
|
|
995
|
-
>
|
|
996
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
997
|
-
</svg>
|
|
998
|
-
);
|
|
999
|
-
}
|
|
@@ -184,7 +184,8 @@ function resolvePhase(
|
|
|
184
184
|
// Sub-components
|
|
185
185
|
// ---------------------------------------------------------------------------
|
|
186
186
|
|
|
187
|
-
import { forwardRef } from "react";
|
|
187
|
+
import { forwardRef, useId } from "react";
|
|
188
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
188
189
|
|
|
189
190
|
interface OrgInputFormProps {
|
|
190
191
|
readonly value: string;
|
|
@@ -194,17 +195,18 @@ interface OrgInputFormProps {
|
|
|
194
195
|
|
|
195
196
|
const OrgInputForm = forwardRef<HTMLInputElement, OrgInputFormProps>(
|
|
196
197
|
function OrgInputForm({ value, onChange, onSubmit }, ref) {
|
|
198
|
+
const inputId = useId();
|
|
197
199
|
return (
|
|
198
200
|
<form onSubmit={onSubmit} className="stg:space-y-3">
|
|
199
201
|
<label
|
|
200
|
-
htmlFor=
|
|
202
|
+
htmlFor={inputId}
|
|
201
203
|
className="stg:block stg:text-sm stg:font-medium stg:text-foreground"
|
|
202
204
|
>
|
|
203
205
|
Organization
|
|
204
206
|
</label>
|
|
205
207
|
<input
|
|
206
208
|
ref={ref}
|
|
207
|
-
id=
|
|
209
|
+
id={inputId}
|
|
208
210
|
type="text"
|
|
209
211
|
value={value}
|
|
210
212
|
onChange={(e) => onChange(e.target.value)}
|
|
@@ -244,7 +246,7 @@ function LoadingState({ org }: { org: string }) {
|
|
|
244
246
|
aria-busy="true"
|
|
245
247
|
aria-label={`Looking up SSO provider for ${org}`}
|
|
246
248
|
>
|
|
247
|
-
<SpinnerIcon />
|
|
249
|
+
<SpinnerIcon size={20} className="stg:text-muted-foreground" />
|
|
248
250
|
<p className="stg:text-sm stg:text-muted-foreground">
|
|
249
251
|
Looking up <span className="stg:font-medium stg:text-foreground">{org}</span>…
|
|
250
252
|
</p>
|
|
@@ -366,23 +368,6 @@ function ErrorState({
|
|
|
366
368
|
// Icons
|
|
367
369
|
// ---------------------------------------------------------------------------
|
|
368
370
|
|
|
369
|
-
function SpinnerIcon() {
|
|
370
|
-
return (
|
|
371
|
-
<svg
|
|
372
|
-
width="20"
|
|
373
|
-
height="20"
|
|
374
|
-
viewBox="0 0 16 16"
|
|
375
|
-
fill="none"
|
|
376
|
-
stroke="currentColor"
|
|
377
|
-
strokeWidth="2"
|
|
378
|
-
strokeLinecap="round"
|
|
379
|
-
className="stg:animate-spin stg:text-muted-foreground"
|
|
380
|
-
aria-hidden="true"
|
|
381
|
-
>
|
|
382
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
383
|
-
</svg>
|
|
384
|
-
);
|
|
385
|
-
}
|
|
386
371
|
|
|
387
372
|
function SsoShieldIcon() {
|
|
388
373
|
return (
|