@stigmer/react 0.0.91 → 0.0.93
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/README.md +57 -12
- package/agent/AgentDetailView.js +7 -7
- package/agent/AgentDetailView.js.map +1 -1
- package/agent/AgentPicker.js +3 -3
- package/agent/AgentPicker.js.map +1 -1
- package/api-key/ApiKeyCreatedAlert.js +1 -1
- package/api-key/ApiKeyCreatedAlert.js.map +1 -1
- package/api-key/ApiKeyListPanel.js +4 -4
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.js +1 -1
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/attachment/AttachmentChipList.js +2 -2
- package/attachment/AttachmentChipList.js.map +1 -1
- package/color-mode.d.ts +48 -0
- package/color-mode.d.ts.map +1 -0
- package/color-mode.js +53 -0
- package/color-mode.js.map +1 -0
- package/composer/ComposerToolbar.d.ts +6 -2
- package/composer/ComposerToolbar.d.ts.map +1 -1
- package/composer/ComposerToolbar.js +5 -3
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/ConfigureMenu.js +3 -3
- package/composer/ConfigureMenu.js.map +1 -1
- package/composer/ContextChip.js +1 -1
- package/composer/ContextChip.js.map +1 -1
- package/composer/ContextPopover.js +1 -1
- package/composer/ContextPopover.js.map +1 -1
- package/composer/SessionComposer.d.ts +24 -3
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +5 -4
- package/composer/SessionComposer.js.map +1 -1
- package/environment/CreateEnvironmentForm.js +1 -1
- package/environment/CreateEnvironmentForm.js.map +1 -1
- package/environment/EnvVarForm.js +2 -2
- package/environment/EnvVarForm.js.map +1 -1
- package/environment/EnvironmentListPanel.js +2 -2
- package/environment/EnvironmentListPanel.js.map +1 -1
- package/environment/EnvironmentVariableEditor.js +6 -6
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/error/ErrorMessage.js +1 -1
- package/error/ErrorMessage.js.map +1 -1
- package/execution/ApprovalCard.js +4 -4
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ArtifactCard.js +1 -1
- package/execution/ArtifactCard.js.map +1 -1
- package/execution/ArtifactPreviewModal.js +4 -4
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/FollowUpInput.js +1 -1
- package/execution/FollowUpInput.js.map +1 -1
- package/execution/McpToolDetail.js +4 -4
- package/execution/McpToolDetail.js.map +1 -1
- package/execution/MessageEntry.js +1 -1
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.js +1 -1
- package/execution/MessageThread.js.map +1 -1
- package/execution/SessionVariablesInput.js +4 -4
- package/execution/SessionVariablesInput.js.map +1 -1
- package/execution/SubAgentSection.js +2 -2
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ToolCallDetail.js +2 -2
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallGroup.js +1 -1
- package/execution/ToolCallGroup.js.map +1 -1
- package/execution/ToolCallItem.js +2 -2
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/WriteBackCard.js +3 -3
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/tool-rendering-primitives.js +3 -3
- package/execution/tool-rendering-primitives.js.map +1 -1
- package/github/GitHubRepoPicker.js +5 -5
- package/github/GitHubRepoPicker.js.map +1 -1
- package/iam-policy/GrantAccessForm.js +1 -1
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.js +5 -5
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +3 -3
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +5 -5
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +3 -3
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +7 -7
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/ProviderPicker.js +2 -2
- package/identity-provider/ProviderPicker.js.map +1 -1
- package/index.d.ts +8 -4
- package/index.d.ts.map +1 -1
- package/index.js +7 -3
- package/index.js.map +1 -1
- package/internal/CloudFeatureNotice.js +1 -1
- package/internal/CloudFeatureNotice.js.map +1 -1
- package/internal/Tabs.js +1 -1
- package/internal/Tabs.js.map +1 -1
- package/internal/markdown-components.js +2 -2
- package/internal/markdown-components.js.map +1 -1
- package/invitation/InvitationCreatedAlert.js +1 -1
- package/invitation/InvitationCreatedAlert.js.map +1 -1
- package/invitation/InvitationManager.js +5 -5
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.js +4 -4
- package/invitation/InvitationRedemption.js.map +1 -1
- package/library/ResourceCountCard.js +1 -1
- package/library/ResourceCountCard.js.map +1 -1
- package/library/ResourceListView.js +5 -5
- package/library/ResourceListView.js.map +1 -1
- package/mcp-server/McpServerConfigPanel.js +5 -5
- package/mcp-server/McpServerConfigPanel.js.map +1 -1
- package/mcp-server/McpServerConnectDialog.js +4 -4
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.js +14 -14
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/McpServerPicker.js +4 -4
- package/mcp-server/McpServerPicker.js.map +1 -1
- package/mcp-server/McpToolSelector.js +3 -3
- package/mcp-server/McpToolSelector.js.map +1 -1
- package/mcp-server/OAuthAppForm.js +1 -1
- package/mcp-server/OAuthAppForm.js.map +1 -1
- package/models/ModelSelector.js +1 -1
- package/models/ModelSelector.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +1 -1
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +3 -3
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/oauth-app/OAuthAppListPanel.js +2 -2
- package/oauth-app/OAuthAppListPanel.js.map +1 -1
- package/organization/CreateOrganizationForm.js +1 -1
- package/organization/CreateOrganizationForm.js.map +1 -1
- package/organization/OrgProfilePanel.js +3 -3
- package/organization/OrgProfilePanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.js +2 -2
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +4 -4
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.js +3 -3
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/PlatformClientSecretAlert.js +2 -2
- package/platform-client/PlatformClientSecretAlert.js.map +1 -1
- package/provider.d.ts +39 -2
- package/provider.d.ts.map +1 -1
- package/provider.js +11 -3
- package/provider.js.map +1 -1
- package/runner/RunnerListPanel.d.ts +65 -0
- package/runner/RunnerListPanel.d.ts.map +1 -0
- package/runner/RunnerListPanel.js +237 -0
- package/runner/RunnerListPanel.js.map +1 -0
- package/runner/RunnerPicker.d.ts +54 -0
- package/runner/RunnerPicker.d.ts.map +1 -0
- package/runner/RunnerPicker.js +133 -0
- package/runner/RunnerPicker.js.map +1 -0
- package/runner/__tests__/useDeleteRunner.test.d.ts +2 -0
- package/runner/__tests__/useDeleteRunner.test.d.ts.map +1 -0
- package/runner/__tests__/useDeleteRunner.test.js +108 -0
- package/runner/__tests__/useDeleteRunner.test.js.map +1 -0
- package/runner/__tests__/useLaunchLocalRunner.test.d.ts +2 -0
- package/runner/__tests__/useLaunchLocalRunner.test.d.ts.map +1 -0
- package/runner/__tests__/useLaunchLocalRunner.test.js +143 -0
- package/runner/__tests__/useLaunchLocalRunner.test.js.map +1 -0
- package/runner/__tests__/useStopRunner.test.d.ts +2 -0
- package/runner/__tests__/useStopRunner.test.d.ts.map +1 -0
- package/runner/__tests__/useStopRunner.test.js +114 -0
- package/runner/__tests__/useStopRunner.test.js.map +1 -0
- package/runner/index.d.ts +14 -0
- package/runner/index.d.ts.map +1 -0
- package/runner/index.js +8 -0
- package/runner/index.js.map +1 -0
- package/runner/phase.d.ts +30 -0
- package/runner/phase.d.ts.map +1 -0
- package/runner/phase.js +58 -0
- package/runner/phase.js.map +1 -0
- package/runner/useDeleteRunner.d.ts +36 -0
- package/runner/useDeleteRunner.d.ts.map +1 -0
- package/runner/useDeleteRunner.js +42 -0
- package/runner/useDeleteRunner.js.map +1 -0
- package/runner/useLaunchLocalRunner.d.ts +84 -0
- package/runner/useLaunchLocalRunner.d.ts.map +1 -0
- package/runner/useLaunchLocalRunner.js +75 -0
- package/runner/useLaunchLocalRunner.js.map +1 -0
- package/runner/useRunnerList.d.ts +49 -0
- package/runner/useRunnerList.d.ts.map +1 -0
- package/runner/useRunnerList.js +70 -0
- package/runner/useRunnerList.js.map +1 -0
- package/runner/useStopRunner.d.ts +53 -0
- package/runner/useStopRunner.d.ts.map +1 -0
- package/runner/useStopRunner.js +50 -0
- package/runner/useStopRunner.js.map +1 -0
- package/session/draft.d.ts +53 -0
- package/session/draft.d.ts.map +1 -0
- package/session/draft.js +45 -0
- package/session/draft.js.map +1 -0
- package/session/index.d.ts +10 -0
- package/session/index.d.ts.map +1 -1
- package/session/index.js +5 -0
- package/session/index.js.map +1 -1
- package/session/useCreateSession.d.ts +8 -0
- package/session/useCreateSession.d.ts.map +1 -1
- package/session/useCreateSession.js +1 -0
- package/session/useCreateSession.js.map +1 -1
- package/session/useEditSessionPrep.d.ts +26 -0
- package/session/useEditSessionPrep.d.ts.map +1 -0
- package/session/useEditSessionPrep.js +83 -0
- package/session/useEditSessionPrep.js.map +1 -0
- package/session/useNewSessionFlow.d.ts +110 -0
- package/session/useNewSessionFlow.d.ts.map +1 -0
- package/session/useNewSessionFlow.js +184 -0
- package/session/useNewSessionFlow.js.map +1 -0
- package/session/usePersistedModel.d.ts +18 -0
- package/session/usePersistedModel.d.ts.map +1 -0
- package/session/usePersistedModel.js +31 -0
- package/session/usePersistedModel.js.map +1 -0
- package/session/useSessionPageFlow.d.ts +104 -0
- package/session/useSessionPageFlow.d.ts.map +1 -0
- package/session/useSessionPageFlow.js +172 -0
- package/session/useSessionPageFlow.js.map +1 -0
- package/skill/SkillDetailView.js +3 -3
- package/skill/SkillDetailView.js.map +1 -1
- package/skill/SkillPicker.js +3 -3
- package/skill/SkillPicker.js.map +1 -1
- package/src/agent/AgentDetailView.tsx +8 -8
- package/src/agent/AgentPicker.tsx +3 -3
- package/src/api-key/ApiKeyCreatedAlert.tsx +2 -2
- package/src/api-key/ApiKeyListPanel.tsx +6 -6
- package/src/api-key/CreateApiKeyForm.tsx +2 -2
- package/src/attachment/AttachmentChipList.tsx +3 -3
- package/src/color-mode.ts +75 -0
- package/src/composer/ComposerToolbar.tsx +29 -7
- package/src/composer/ConfigureMenu.tsx +6 -6
- package/src/composer/ContextChip.tsx +1 -1
- package/src/composer/ContextPopover.tsx +2 -2
- package/src/composer/SessionComposer.tsx +34 -5
- package/src/environment/CreateEnvironmentForm.tsx +3 -3
- package/src/environment/EnvVarForm.tsx +6 -6
- package/src/environment/EnvironmentListPanel.tsx +3 -3
- package/src/environment/EnvironmentVariableEditor.tsx +7 -7
- package/src/error/ErrorMessage.tsx +5 -5
- package/src/execution/ApprovalCard.tsx +5 -5
- package/src/execution/ArtifactCard.tsx +2 -2
- package/src/execution/ArtifactPreviewModal.tsx +4 -4
- package/src/execution/FollowUpInput.tsx +2 -2
- package/src/execution/McpToolDetail.tsx +4 -4
- package/src/execution/MessageEntry.tsx +1 -1
- package/src/execution/MessageThread.tsx +1 -1
- package/src/execution/SessionVariablesInput.tsx +7 -7
- package/src/execution/SubAgentSection.tsx +5 -5
- package/src/execution/ToolCallDetail.tsx +2 -2
- package/src/execution/ToolCallGroup.tsx +3 -3
- package/src/execution/ToolCallItem.tsx +4 -4
- package/src/execution/WriteBackCard.tsx +5 -5
- package/src/execution/tool-rendering-primitives.tsx +5 -5
- package/src/github/GitHubRepoPicker.tsx +5 -5
- package/src/iam-policy/GrantAccessForm.tsx +2 -2
- package/src/iam-policy/OrgMembersPanel.tsx +11 -11
- package/src/identity-provider/CreateIdentityProviderForm.tsx +4 -4
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +7 -7
- package/src/identity-provider/IdentityProviderListPanel.tsx +7 -7
- package/src/identity-provider/IdentityProviderWizard.tsx +8 -8
- package/src/identity-provider/ProviderPicker.tsx +2 -2
- package/src/index.ts +46 -7
- package/src/internal/CloudFeatureNotice.tsx +1 -1
- package/src/internal/Tabs.tsx +1 -1
- package/src/internal/markdown-components.tsx +2 -2
- package/src/invitation/InvitationCreatedAlert.tsx +2 -2
- package/src/invitation/InvitationManager.tsx +9 -9
- package/src/invitation/InvitationRedemption.tsx +11 -11
- package/src/library/ResourceCountCard.tsx +1 -1
- package/src/library/ResourceListView.tsx +7 -7
- package/src/mcp-server/McpServerConfigPanel.tsx +7 -7
- package/src/mcp-server/McpServerConnectDialog.tsx +5 -5
- package/src/mcp-server/McpServerDetailView.tsx +19 -19
- package/src/mcp-server/McpServerPicker.tsx +6 -6
- package/src/mcp-server/McpToolSelector.tsx +4 -4
- package/src/mcp-server/OAuthAppForm.tsx +3 -3
- package/src/models/ModelSelector.tsx +1 -1
- package/src/oauth-app/CreateOAuthAppForm.tsx +3 -3
- package/src/oauth-app/OAuthAppDetailPanel.tsx +7 -7
- package/src/oauth-app/OAuthAppListPanel.tsx +3 -3
- package/src/organization/CreateOrganizationForm.tsx +3 -3
- package/src/organization/OrgProfilePanel.tsx +4 -5
- package/src/platform-client/CreatePlatformClientForm.tsx +6 -6
- package/src/platform-client/PlatformClientDetailPanel.tsx +19 -19
- package/src/platform-client/PlatformClientListPanel.tsx +7 -7
- package/src/platform-client/PlatformClientSecretAlert.tsx +2 -2
- package/src/provider.tsx +52 -2
- package/src/runner/RunnerListPanel.tsx +725 -0
- package/src/runner/RunnerPicker.tsx +319 -0
- package/src/runner/__tests__/useDeleteRunner.test.tsx +150 -0
- package/src/runner/__tests__/useLaunchLocalRunner.test.tsx +223 -0
- package/src/runner/__tests__/useStopRunner.test.tsx +154 -0
- package/src/runner/index.ts +34 -0
- package/src/runner/phase.ts +62 -0
- package/src/runner/useDeleteRunner.ts +67 -0
- package/src/runner/useLaunchLocalRunner.ts +139 -0
- package/src/runner/useRunnerList.ts +114 -0
- package/src/runner/useStopRunner.ts +92 -0
- package/src/session/draft.ts +82 -0
- package/src/session/index.ts +28 -0
- package/src/session/useCreateSession.ts +9 -0
- package/src/session/useEditSessionPrep.ts +111 -0
- package/src/session/useNewSessionFlow.ts +283 -0
- package/src/session/usePersistedModel.ts +41 -0
- package/src/session/useSessionPageFlow.ts +280 -0
- package/src/skill/SkillDetailView.tsx +5 -5
- package/src/skill/SkillPicker.tsx +3 -3
- package/src/styles.css +25 -1
- package/src/usage/OrgUsagePanel.tsx +4 -4
- package/src/workspace/WorkspaceEditor.tsx +78 -66
- package/src/workspace/index.ts +0 -8
- package/styles.css +1 -1
- package/usage/OrgUsagePanel.js +2 -2
- package/usage/OrgUsagePanel.js.map +1 -1
- package/workspace/WorkspaceEditor.d.ts +28 -3
- package/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/workspace/WorkspaceEditor.js +24 -25
- package/workspace/WorkspaceEditor.js.map +1 -1
- package/workspace/index.d.ts +0 -4
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +0 -2
- package/workspace/index.js.map +1 -1
- package/src/workspace/FolderBrowser.tsx +0 -579
- package/src/workspace/useFolderListing.ts +0 -164
- package/workspace/FolderBrowser.d.ts +0 -37
- package/workspace/FolderBrowser.d.ts.map +0 -1
- package/workspace/FolderBrowser.js +0 -188
- package/workspace/FolderBrowser.js.map +0 -1
- package/workspace/useFolderListing.d.ts +0 -73
- package/workspace/useFolderListing.d.ts.map +0 -1
- package/workspace/useFolderListing.js +0 -110
- package/workspace/useFolderListing.js.map +0 -1
|
@@ -212,7 +212,7 @@ export function OAuthAppDetailPanel({
|
|
|
212
212
|
onClick={enterEdit}
|
|
213
213
|
className={cn(
|
|
214
214
|
"shrink-0 rounded-md px-2.5 py-1.5 text-xs font-medium",
|
|
215
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
215
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
216
216
|
"transition-colors",
|
|
217
217
|
)}
|
|
218
218
|
>
|
|
@@ -226,7 +226,7 @@ export function OAuthAppDetailPanel({
|
|
|
226
226
|
}}
|
|
227
227
|
className={cn(
|
|
228
228
|
"shrink-0 rounded-md px-2.5 py-1.5 text-xs font-medium",
|
|
229
|
-
"text-destructive
|
|
229
|
+
"text-destructive-muted hover:text-destructive hover:bg-destructive-subtle",
|
|
230
230
|
"transition-colors",
|
|
231
231
|
)}
|
|
232
232
|
>
|
|
@@ -239,7 +239,7 @@ export function OAuthAppDetailPanel({
|
|
|
239
239
|
{/* Inline delete confirmation */}
|
|
240
240
|
{confirmingDelete && (
|
|
241
241
|
<div
|
|
242
|
-
className="rounded-md border border-destructive/30 bg-destructive
|
|
242
|
+
className="rounded-md border border-destructive/30 bg-destructive-subtle p-3"
|
|
243
243
|
role="alert"
|
|
244
244
|
>
|
|
245
245
|
<p className="text-foreground mb-2 text-xs font-medium">
|
|
@@ -261,7 +261,7 @@ export function OAuthAppDetailPanel({
|
|
|
261
261
|
disabled={isDeleting}
|
|
262
262
|
className={cn(
|
|
263
263
|
"inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
|
|
264
|
-
"bg-destructive text-destructive-foreground hover:bg-destructive
|
|
264
|
+
"bg-destructive text-destructive-foreground hover:bg-destructive-hover",
|
|
265
265
|
"disabled:pointer-events-none disabled:opacity-40",
|
|
266
266
|
)}
|
|
267
267
|
>
|
|
@@ -277,7 +277,7 @@ export function OAuthAppDetailPanel({
|
|
|
277
277
|
disabled={isDeleting}
|
|
278
278
|
className={cn(
|
|
279
279
|
"rounded-md px-2.5 py-1.5 text-xs",
|
|
280
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
280
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
281
281
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
282
282
|
)}
|
|
283
283
|
>
|
|
@@ -421,7 +421,7 @@ export function OAuthAppDetailPanel({
|
|
|
421
421
|
disabled={!canSave}
|
|
422
422
|
className={cn(
|
|
423
423
|
"inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
|
|
424
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
424
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
425
425
|
"disabled:pointer-events-none disabled:opacity-40",
|
|
426
426
|
)}
|
|
427
427
|
>
|
|
@@ -434,7 +434,7 @@ export function OAuthAppDetailPanel({
|
|
|
434
434
|
disabled={isUpdating}
|
|
435
435
|
className={cn(
|
|
436
436
|
"rounded-md px-2.5 py-1.5 text-xs",
|
|
437
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
437
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
438
438
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
439
439
|
)}
|
|
440
440
|
>
|
|
@@ -73,7 +73,7 @@ export function OAuthAppListPanel({
|
|
|
73
73
|
{Array.from({ length: 2 }, (_, i) => (
|
|
74
74
|
<div
|
|
75
75
|
key={i}
|
|
76
|
-
className="bg-muted
|
|
76
|
+
className="bg-muted-subtle h-14 animate-pulse rounded-lg"
|
|
77
77
|
/>
|
|
78
78
|
))}
|
|
79
79
|
</div>
|
|
@@ -136,7 +136,7 @@ function OAuthAppRow({
|
|
|
136
136
|
return (
|
|
137
137
|
<div
|
|
138
138
|
role="listitem"
|
|
139
|
-
className="flex items-center gap-3 rounded-lg border border-border
|
|
139
|
+
className="flex items-center gap-3 rounded-lg border border-border-muted px-3 py-2.5 transition-colors hover:border-border"
|
|
140
140
|
>
|
|
141
141
|
<OAuthIcon />
|
|
142
142
|
|
|
@@ -166,7 +166,7 @@ function OAuthAppRow({
|
|
|
166
166
|
aria-label={`Edit ${provider}`}
|
|
167
167
|
className={cn(
|
|
168
168
|
"shrink-0 rounded p-1",
|
|
169
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
169
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
170
170
|
"transition-colors",
|
|
171
171
|
)}
|
|
172
172
|
>
|
|
@@ -190,7 +190,7 @@ export function CreateOrganizationForm({
|
|
|
190
190
|
className="text-xs font-medium text-muted-foreground"
|
|
191
191
|
>
|
|
192
192
|
Description{" "}
|
|
193
|
-
<span className="text-muted-foreground
|
|
193
|
+
<span className="text-muted-foreground-subtle">(optional)</span>
|
|
194
194
|
</label>
|
|
195
195
|
<input
|
|
196
196
|
id="stgm-new-org-desc"
|
|
@@ -221,7 +221,7 @@ export function CreateOrganizationForm({
|
|
|
221
221
|
disabled={!canSubmit}
|
|
222
222
|
className={cn(
|
|
223
223
|
"inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
|
|
224
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
224
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
225
225
|
"disabled:pointer-events-none disabled:opacity-40",
|
|
226
226
|
)}
|
|
227
227
|
>
|
|
@@ -236,7 +236,7 @@ export function CreateOrganizationForm({
|
|
|
236
236
|
disabled={isCreating}
|
|
237
237
|
className={cn(
|
|
238
238
|
"rounded-md px-3 py-1.5 text-xs",
|
|
239
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
239
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
240
240
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
241
241
|
)}
|
|
242
242
|
>
|
|
@@ -181,7 +181,7 @@ export function OrgProfilePanel({
|
|
|
181
181
|
onClick={refetch}
|
|
182
182
|
className={cn(
|
|
183
183
|
"rounded-md px-3 py-1.5 text-xs font-medium",
|
|
184
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
184
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
185
185
|
)}
|
|
186
186
|
>
|
|
187
187
|
Retry
|
|
@@ -317,7 +317,7 @@ export function OrgProfilePanel({
|
|
|
317
317
|
disabled={!canSubmit}
|
|
318
318
|
className={cn(
|
|
319
319
|
"inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
|
|
320
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
320
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
321
321
|
"disabled:pointer-events-none disabled:opacity-40",
|
|
322
322
|
)}
|
|
323
323
|
>
|
|
@@ -331,7 +331,7 @@ export function OrgProfilePanel({
|
|
|
331
331
|
onClick={handleDiscard}
|
|
332
332
|
className={cn(
|
|
333
333
|
"rounded-md px-3 py-1.5 text-xs",
|
|
334
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
334
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
335
335
|
)}
|
|
336
336
|
>
|
|
337
337
|
Discard
|
|
@@ -385,7 +385,7 @@ function ReadOnlyField({
|
|
|
385
385
|
onClick={handleCopy}
|
|
386
386
|
className={cn(
|
|
387
387
|
"rounded px-1.5 py-0.5 text-[0.6rem]",
|
|
388
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
388
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
389
389
|
"transition-colors",
|
|
390
390
|
)}
|
|
391
391
|
aria-label={`Copy ${label}`}
|
|
@@ -412,7 +412,6 @@ function LogoPreview({ url }: { url: string }) {
|
|
|
412
412
|
|
|
413
413
|
return (
|
|
414
414
|
<div className="mt-2">
|
|
415
|
-
{/* eslint-disable-next-line @next/next/no-img-element */}
|
|
416
415
|
<img
|
|
417
416
|
src={url}
|
|
418
417
|
alt="Organization logo preview"
|
|
@@ -206,7 +206,7 @@ export function CreatePlatformClientForm({
|
|
|
206
206
|
|
|
207
207
|
{/* JIT provisioning */}
|
|
208
208
|
<fieldset className="space-y-2.5" disabled={isCreating}>
|
|
209
|
-
<hr className="border-border
|
|
209
|
+
<hr className="border-border-muted" />
|
|
210
210
|
<legend className="text-xs font-medium text-foreground">
|
|
211
211
|
JIT provisioning
|
|
212
212
|
</legend>
|
|
@@ -267,7 +267,7 @@ export function CreatePlatformClientForm({
|
|
|
267
267
|
|
|
268
268
|
{/* Allowed origins */}
|
|
269
269
|
<fieldset className="space-y-2" disabled={isCreating}>
|
|
270
|
-
<hr className="border-border
|
|
270
|
+
<hr className="border-border-muted" />
|
|
271
271
|
<legend className="text-xs font-medium text-foreground">
|
|
272
272
|
Allowed origins
|
|
273
273
|
</legend>
|
|
@@ -300,7 +300,7 @@ export function CreatePlatformClientForm({
|
|
|
300
300
|
disabled={isCreating || !originInput.trim()}
|
|
301
301
|
className={cn(
|
|
302
302
|
"shrink-0 rounded-md px-2.5 py-1.5 text-xs font-medium",
|
|
303
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
303
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
304
304
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
305
305
|
"transition-colors",
|
|
306
306
|
)}
|
|
@@ -314,7 +314,7 @@ export function CreatePlatformClientForm({
|
|
|
314
314
|
{origins.map((origin) => (
|
|
315
315
|
<span
|
|
316
316
|
key={origin}
|
|
317
|
-
className="inline-flex items-center gap-1 rounded-full border border-border
|
|
317
|
+
className="inline-flex items-center gap-1 rounded-full border border-border-muted bg-muted-subtle px-2 py-0.5 text-[0.65rem] font-mono text-foreground"
|
|
318
318
|
>
|
|
319
319
|
{origin}
|
|
320
320
|
<button
|
|
@@ -344,7 +344,7 @@ export function CreatePlatformClientForm({
|
|
|
344
344
|
disabled={!canSubmit}
|
|
345
345
|
className={cn(
|
|
346
346
|
"inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
|
|
347
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
347
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
348
348
|
"disabled:pointer-events-none disabled:opacity-40",
|
|
349
349
|
)}
|
|
350
350
|
>
|
|
@@ -359,7 +359,7 @@ export function CreatePlatformClientForm({
|
|
|
359
359
|
disabled={isCreating}
|
|
360
360
|
className={cn(
|
|
361
361
|
"rounded-md px-3 py-1.5 text-xs",
|
|
362
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
362
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
363
363
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
364
364
|
)}
|
|
365
365
|
>
|
|
@@ -276,7 +276,7 @@ export function PlatformClientDetailPanel({
|
|
|
276
276
|
onClick={enterEdit}
|
|
277
277
|
className={cn(
|
|
278
278
|
"shrink-0 rounded-md px-2.5 py-1.5 text-xs font-medium",
|
|
279
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
279
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
280
280
|
"transition-colors",
|
|
281
281
|
)}
|
|
282
282
|
>
|
|
@@ -295,7 +295,7 @@ export function PlatformClientDetailPanel({
|
|
|
295
295
|
) : (
|
|
296
296
|
<form onSubmit={handleSave} className="space-y-3">
|
|
297
297
|
{/* Read-only credential info */}
|
|
298
|
-
<div className="rounded-md border border-border
|
|
298
|
+
<div className="rounded-md border border-border-muted bg-muted-faint px-3 py-2 space-y-1">
|
|
299
299
|
<p className="text-[0.65rem] font-medium text-muted-foreground">
|
|
300
300
|
Client ID
|
|
301
301
|
</p>
|
|
@@ -341,7 +341,7 @@ export function PlatformClientDetailPanel({
|
|
|
341
341
|
|
|
342
342
|
{/* JIT provisioning */}
|
|
343
343
|
<fieldset className="space-y-2.5" disabled={isUpdating}>
|
|
344
|
-
<hr className="border-border
|
|
344
|
+
<hr className="border-border-muted" />
|
|
345
345
|
<legend className="text-xs font-medium text-foreground">
|
|
346
346
|
JIT provisioning
|
|
347
347
|
</legend>
|
|
@@ -397,7 +397,7 @@ export function PlatformClientDetailPanel({
|
|
|
397
397
|
|
|
398
398
|
{/* Allowed origins */}
|
|
399
399
|
<fieldset className="space-y-2" disabled={isUpdating}>
|
|
400
|
-
<hr className="border-border
|
|
400
|
+
<hr className="border-border-muted" />
|
|
401
401
|
<legend className="text-xs font-medium text-foreground">
|
|
402
402
|
Allowed origins
|
|
403
403
|
</legend>
|
|
@@ -430,7 +430,7 @@ export function PlatformClientDetailPanel({
|
|
|
430
430
|
disabled={isUpdating || !originInput.trim()}
|
|
431
431
|
className={cn(
|
|
432
432
|
"shrink-0 rounded-md px-2.5 py-1.5 text-xs font-medium",
|
|
433
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
433
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
434
434
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
435
435
|
"transition-colors",
|
|
436
436
|
)}
|
|
@@ -444,7 +444,7 @@ export function PlatformClientDetailPanel({
|
|
|
444
444
|
{origins.map((origin) => (
|
|
445
445
|
<span
|
|
446
446
|
key={origin}
|
|
447
|
-
className="inline-flex items-center gap-1 rounded-full border border-border
|
|
447
|
+
className="inline-flex items-center gap-1 rounded-full border border-border-muted bg-muted-subtle px-2 py-0.5 text-[0.65rem] font-mono text-foreground"
|
|
448
448
|
>
|
|
449
449
|
{origin}
|
|
450
450
|
<button
|
|
@@ -474,7 +474,7 @@ export function PlatformClientDetailPanel({
|
|
|
474
474
|
disabled={isUpdating}
|
|
475
475
|
className={cn(
|
|
476
476
|
"inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
|
|
477
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
477
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
478
478
|
"disabled:pointer-events-none disabled:opacity-40",
|
|
479
479
|
)}
|
|
480
480
|
>
|
|
@@ -487,7 +487,7 @@ export function PlatformClientDetailPanel({
|
|
|
487
487
|
disabled={isUpdating}
|
|
488
488
|
className={cn(
|
|
489
489
|
"rounded-md px-2.5 py-1.5 text-xs",
|
|
490
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
490
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
491
491
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
492
492
|
)}
|
|
493
493
|
>
|
|
@@ -500,7 +500,7 @@ export function PlatformClientDetailPanel({
|
|
|
500
500
|
{/* Actions bar (view mode only) */}
|
|
501
501
|
{mode === "view" && (
|
|
502
502
|
<div className="space-y-2 pt-2">
|
|
503
|
-
<hr className="border-border
|
|
503
|
+
<hr className="border-border-muted" />
|
|
504
504
|
|
|
505
505
|
{/* Rotate Secret */}
|
|
506
506
|
{confirmingRotate ? (
|
|
@@ -516,7 +516,7 @@ export function PlatformClientDetailPanel({
|
|
|
516
516
|
disabled={isBusy}
|
|
517
517
|
className={cn(
|
|
518
518
|
"inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
|
|
519
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
519
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
520
520
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
521
521
|
)}
|
|
522
522
|
>
|
|
@@ -532,7 +532,7 @@ export function PlatformClientDetailPanel({
|
|
|
532
532
|
disabled={isBusy}
|
|
533
533
|
className={cn(
|
|
534
534
|
"rounded-md px-2.5 py-1 text-xs",
|
|
535
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
535
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
536
536
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
537
537
|
)}
|
|
538
538
|
>
|
|
@@ -547,7 +547,7 @@ export function PlatformClientDetailPanel({
|
|
|
547
547
|
disabled={isBusy}
|
|
548
548
|
className={cn(
|
|
549
549
|
"rounded-md px-2.5 py-1.5 text-xs font-medium",
|
|
550
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
550
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
551
551
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
552
552
|
"transition-colors",
|
|
553
553
|
)}
|
|
@@ -563,7 +563,7 @@ export function PlatformClientDetailPanel({
|
|
|
563
563
|
|
|
564
564
|
{/* Delete */}
|
|
565
565
|
{confirmingDelete ? (
|
|
566
|
-
<div className="flex items-center justify-between rounded-md border border-destructive/30 bg-destructive
|
|
566
|
+
<div className="flex items-center justify-between rounded-md border border-destructive/30 bg-destructive-subtle px-3 py-2">
|
|
567
567
|
<div className="min-w-0 flex-1">
|
|
568
568
|
<p className="text-xs text-foreground">
|
|
569
569
|
Delete{" "}
|
|
@@ -583,7 +583,7 @@ export function PlatformClientDetailPanel({
|
|
|
583
583
|
disabled={isBusy}
|
|
584
584
|
className={cn(
|
|
585
585
|
"inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
|
|
586
|
-
"bg-destructive text-destructive-foreground hover:bg-destructive
|
|
586
|
+
"bg-destructive text-destructive-foreground hover:bg-destructive-hover",
|
|
587
587
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
588
588
|
)}
|
|
589
589
|
>
|
|
@@ -596,7 +596,7 @@ export function PlatformClientDetailPanel({
|
|
|
596
596
|
disabled={isBusy}
|
|
597
597
|
className={cn(
|
|
598
598
|
"rounded-md px-2.5 py-1 text-xs",
|
|
599
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
599
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
600
600
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
601
601
|
)}
|
|
602
602
|
>
|
|
@@ -611,7 +611,7 @@ export function PlatformClientDetailPanel({
|
|
|
611
611
|
disabled={isBusy}
|
|
612
612
|
className={cn(
|
|
613
613
|
"rounded-md px-2.5 py-1.5 text-xs font-medium",
|
|
614
|
-
"text-destructive hover:text-destructive-foreground hover:bg-destructive
|
|
614
|
+
"text-destructive hover:text-destructive-foreground hover:bg-destructive-hover",
|
|
615
615
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
616
616
|
"transition-colors",
|
|
617
617
|
)}
|
|
@@ -662,7 +662,7 @@ function ViewMode({
|
|
|
662
662
|
) : null}
|
|
663
663
|
|
|
664
664
|
{/* JIT provisioning */}
|
|
665
|
-
<hr className="border-border
|
|
665
|
+
<hr className="border-border-muted" />
|
|
666
666
|
<Field
|
|
667
667
|
label="Auto-provision accounts"
|
|
668
668
|
value={spec?.autoProvisionAccounts ? "Enabled" : "Disabled"}
|
|
@@ -681,7 +681,7 @@ function ViewMode({
|
|
|
681
681
|
{/* Allowed origins */}
|
|
682
682
|
{(spec?.allowedOrigins.length ?? 0) > 0 && (
|
|
683
683
|
<>
|
|
684
|
-
<hr className="border-border
|
|
684
|
+
<hr className="border-border-muted" />
|
|
685
685
|
<div>
|
|
686
686
|
<dt className="text-muted-foreground text-[0.65rem] font-medium">
|
|
687
687
|
Allowed origins
|
|
@@ -690,7 +690,7 @@ function ViewMode({
|
|
|
690
690
|
{spec!.allowedOrigins.map((origin) => (
|
|
691
691
|
<span
|
|
692
692
|
key={origin}
|
|
693
|
-
className="inline-block rounded-full border border-border
|
|
693
|
+
className="inline-block rounded-full border border-border-muted bg-muted-subtle px-2 py-0.5 text-[0.65rem] font-mono text-foreground"
|
|
694
694
|
>
|
|
695
695
|
{origin}
|
|
696
696
|
</span>
|
|
@@ -71,7 +71,7 @@ export function PlatformClientListPanel({
|
|
|
71
71
|
{Array.from({ length: 2 }, (_, i) => (
|
|
72
72
|
<div
|
|
73
73
|
key={i}
|
|
74
|
-
className="bg-muted
|
|
74
|
+
className="bg-muted-subtle h-14 animate-pulse rounded-lg"
|
|
75
75
|
/>
|
|
76
76
|
))}
|
|
77
77
|
</div>
|
|
@@ -169,7 +169,7 @@ function PlatformClientRow({
|
|
|
169
169
|
return (
|
|
170
170
|
<div
|
|
171
171
|
role="listitem"
|
|
172
|
-
className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive
|
|
172
|
+
className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive-subtle px-3 py-2.5"
|
|
173
173
|
>
|
|
174
174
|
<div className="min-w-0 flex-1">
|
|
175
175
|
<p className="text-xs text-foreground">
|
|
@@ -195,7 +195,7 @@ function PlatformClientRow({
|
|
|
195
195
|
disabled={isDeleting}
|
|
196
196
|
className={cn(
|
|
197
197
|
"inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
|
|
198
|
-
"bg-destructive text-destructive-foreground hover:bg-destructive
|
|
198
|
+
"bg-destructive text-destructive-foreground hover:bg-destructive-hover",
|
|
199
199
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
200
200
|
)}
|
|
201
201
|
>
|
|
@@ -208,7 +208,7 @@ function PlatformClientRow({
|
|
|
208
208
|
disabled={isDeleting}
|
|
209
209
|
className={cn(
|
|
210
210
|
"rounded-md px-2.5 py-1 text-xs",
|
|
211
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
211
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
212
212
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
213
213
|
)}
|
|
214
214
|
>
|
|
@@ -222,7 +222,7 @@ function PlatformClientRow({
|
|
|
222
222
|
return (
|
|
223
223
|
<div
|
|
224
224
|
role="listitem"
|
|
225
|
-
className="flex items-center gap-3 rounded-lg border border-border
|
|
225
|
+
className="flex items-center gap-3 rounded-lg border border-border-muted px-3 py-2.5 hover:border-border transition-colors"
|
|
226
226
|
>
|
|
227
227
|
<KeyIcon />
|
|
228
228
|
|
|
@@ -267,7 +267,7 @@ function PlatformClientRow({
|
|
|
267
267
|
aria-label={`Edit ${name}`}
|
|
268
268
|
className={cn(
|
|
269
269
|
"shrink-0 rounded p-1",
|
|
270
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
270
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
271
271
|
"transition-colors",
|
|
272
272
|
)}
|
|
273
273
|
>
|
|
@@ -280,7 +280,7 @@ function PlatformClientRow({
|
|
|
280
280
|
aria-label={`Delete ${name}`}
|
|
281
281
|
className={cn(
|
|
282
282
|
"shrink-0 rounded p-1",
|
|
283
|
-
"text-muted-foreground hover:text-destructive hover:bg-destructive
|
|
283
|
+
"text-muted-foreground hover:text-destructive hover:bg-destructive-subtle",
|
|
284
284
|
"transition-colors",
|
|
285
285
|
)}
|
|
286
286
|
>
|
|
@@ -104,7 +104,7 @@ export function PlatformClientSecretAlert({
|
|
|
104
104
|
aria-label="Dismiss"
|
|
105
105
|
className={cn(
|
|
106
106
|
"shrink-0 rounded p-1",
|
|
107
|
-
"text-muted-foreground hover:text-foreground hover:bg-accent
|
|
107
|
+
"text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
108
108
|
"transition-colors",
|
|
109
109
|
)}
|
|
110
110
|
>
|
|
@@ -181,7 +181,7 @@ function CopyableField({
|
|
|
181
181
|
aria-label={`Copy ${label}`}
|
|
182
182
|
className={cn(
|
|
183
183
|
"inline-flex shrink-0 items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
|
|
184
|
-
"bg-primary text-primary-foreground hover:bg-primary
|
|
184
|
+
"bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
185
185
|
"transition-colors",
|
|
186
186
|
)}
|
|
187
187
|
>
|
package/src/provider.tsx
CHANGED
|
@@ -6,6 +6,8 @@ import { cn, resolvePresetClass } from "@stigmer/theme";
|
|
|
6
6
|
import type { ThemePresetId } from "@stigmer/theme";
|
|
7
7
|
import { StigmerContext } from "./context";
|
|
8
8
|
import { DeploymentModeContext } from "./deployment-mode";
|
|
9
|
+
import type { ColorMode, ResolvedColorMode } from "./color-mode";
|
|
10
|
+
import { ColorModeContext, useSystemColorMode } from "./color-mode";
|
|
9
11
|
|
|
10
12
|
/** Props for {@link StigmerProvider}. */
|
|
11
13
|
export interface StigmerProviderProps {
|
|
@@ -45,6 +47,37 @@ export interface StigmerProviderProps {
|
|
|
45
47
|
* The container always includes the `stgm` class for style isolation.
|
|
46
48
|
*/
|
|
47
49
|
readonly className?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Controls the color mode for all descendant Stigmer components.
|
|
52
|
+
*
|
|
53
|
+
* - `"light"` — light design tokens (default).
|
|
54
|
+
* - `"dark"` — dark design tokens.
|
|
55
|
+
* - `"system"` — follows the user's OS preference via
|
|
56
|
+
* `prefers-color-scheme`. Resolved to `"light"` or `"dark"`
|
|
57
|
+
* before reaching CSS or React context.
|
|
58
|
+
*
|
|
59
|
+
* The resolved value is set as `data-stgm-color-mode` on the
|
|
60
|
+
* scoping container and exposed via {@link useColorMode}.
|
|
61
|
+
* Host applications pass their own theme state directly —
|
|
62
|
+
* no ancestor CSS class conventions are required.
|
|
63
|
+
*
|
|
64
|
+
* @default "light"
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```tsx
|
|
68
|
+
* // Explicit dark mode
|
|
69
|
+
* <StigmerProvider client={client} colorMode="dark">
|
|
70
|
+
* <ChatWidget />
|
|
71
|
+
* </StigmerProvider>
|
|
72
|
+
*
|
|
73
|
+
* // Bridge from MUI
|
|
74
|
+
* const muiMode = useTheme().palette.mode;
|
|
75
|
+
* <StigmerProvider client={client} colorMode={muiMode}>
|
|
76
|
+
* <ChatWidget />
|
|
77
|
+
* </StigmerProvider>
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
readonly colorMode?: ColorMode;
|
|
48
81
|
}
|
|
49
82
|
|
|
50
83
|
/**
|
|
@@ -56,6 +89,11 @@ export interface StigmerProviderProps {
|
|
|
56
89
|
* `@stigmer/react/styles.css` get isolated styles that do not
|
|
57
90
|
* leak into the host application.
|
|
58
91
|
*
|
|
92
|
+
* The `colorMode` prop controls dark/light appearance via a
|
|
93
|
+
* `data-stgm-color-mode` attribute on the scoping container.
|
|
94
|
+
* Host applications pass their theme state directly — no ancestor
|
|
95
|
+
* `.dark` class or Tailwind convention is required.
|
|
96
|
+
*
|
|
59
97
|
* Pass {@link StigmerProviderProps.preset | preset} to apply a
|
|
60
98
|
* built-in theme, or use {@link StigmerProviderProps.className | className}
|
|
61
99
|
* for custom styling.
|
|
@@ -67,7 +105,7 @@ export interface StigmerProviderProps {
|
|
|
67
105
|
* [getAccessToken],
|
|
68
106
|
* );
|
|
69
107
|
*
|
|
70
|
-
* <StigmerProvider client={client} preset="fintech">
|
|
108
|
+
* <StigmerProvider client={client} preset="fintech" colorMode="dark">
|
|
71
109
|
* <App />
|
|
72
110
|
* </StigmerProvider>
|
|
73
111
|
* ```
|
|
@@ -78,13 +116,25 @@ export function StigmerProvider({
|
|
|
78
116
|
deploymentMode = "cloud",
|
|
79
117
|
preset,
|
|
80
118
|
className,
|
|
119
|
+
colorMode = "light",
|
|
81
120
|
}: StigmerProviderProps) {
|
|
121
|
+
const systemMode = useSystemColorMode();
|
|
122
|
+
const resolvedMode: ResolvedColorMode =
|
|
123
|
+
colorMode === "system" ? systemMode : colorMode;
|
|
124
|
+
|
|
82
125
|
const presetClass = preset ? resolvePresetClass(preset) : "";
|
|
83
126
|
|
|
84
127
|
return (
|
|
85
128
|
<StigmerContext.Provider value={client}>
|
|
86
129
|
<DeploymentModeContext.Provider value={deploymentMode}>
|
|
87
|
-
<
|
|
130
|
+
<ColorModeContext.Provider value={resolvedMode}>
|
|
131
|
+
<div
|
|
132
|
+
className={cn("stgm", presetClass, className)}
|
|
133
|
+
data-stgm-color-mode={resolvedMode}
|
|
134
|
+
>
|
|
135
|
+
{children}
|
|
136
|
+
</div>
|
|
137
|
+
</ColorModeContext.Provider>
|
|
88
138
|
</DeploymentModeContext.Provider>
|
|
89
139
|
</StigmerContext.Provider>
|
|
90
140
|
);
|