From c70c32a3bdf81beba16dc5fe25ef99760be096d8 Mon Sep 17 00:00:00 2001 From: Waleed Date: Sat, 18 Oct 2025 15:37:12 -0700 Subject: [PATCH] fix(settings-ui): fix settings ui, add upload status (#1691) --- .../components/copilot/copilot.tsx | 59 ++++++++----------- .../components/environment/environment.tsx | 9 ++- .../components/file-uploads/file-uploads.tsx | 19 ++++-- .../settings-navigation.tsx | 2 +- .../cancel-subscription.tsx | 7 ++- .../remove-member-dialog.tsx | 5 +- .../components/team-members/team-members.tsx | 2 +- 7 files changed, 58 insertions(+), 45 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx index f4c403e0e8..7725c1992d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx @@ -238,7 +238,7 @@ export function Copilot() {
{/* Sticky Header with API Keys (only for hosted) */} {isHosted && ( -
+
{/* API Keys Header */}
@@ -273,27 +273,25 @@ export function Copilot() {
) : ( keys.map((k) => ( -
-
- - {k.displayKey} - +
+
+
+
+ {k.displayKey} +
+
+
- -
)) )} @@ -308,15 +306,6 @@ export function Copilot() { {/* Models Header */}

Models

-
- {isModelsLoading ? ( - - ) : ( - - {enabledCount} of {totalCount} enabled - - )} -
{/* Models List */} @@ -473,9 +462,13 @@ export function Copilot() { function CopilotKeySkeleton() { return ( -
- - +
+
+
+ +
+ +
) } diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx index 30418679df..9115869201 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx @@ -707,7 +707,10 @@ export function EnvironmentVariables({ - + Discard Changes {hasConflicts ? ( @@ -715,7 +718,7 @@ export function EnvironmentVariables({ Save Changes @@ -725,7 +728,7 @@ export function EnvironmentVariables({ ) : ( Save Changes diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/file-uploads/file-uploads.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/file-uploads/file-uploads.tsx index 49c7fb8dda..06518e0d0e 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/file-uploads/file-uploads.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/file-uploads/file-uploads.tsx @@ -1,7 +1,7 @@ 'use client' import { useEffect, useMemo, useRef, useState } from 'react' -import { Download, Search, Trash2, Upload } from 'lucide-react' +import { Download, Search, Trash2 } from 'lucide-react' import { useParams } from 'next/navigation' import { Input } from '@/components/ui' import { Button } from '@/components/ui/button' @@ -46,6 +46,7 @@ export function FileUploads() { const [uploading, setUploading] = useState(false) const [deletingFileId, setDeletingFileId] = useState(null) const [uploadError, setUploadError] = useState(null) + const [uploadProgress, setUploadProgress] = useState({ completed: 0, total: 0 }) const fileInputRef = useRef(null) const { permissions: workspacePermissions, loading: permissionsLoading } = @@ -94,9 +95,12 @@ export function FileUploads() { if (!ok) unsupported.push(f.name) return ok }) + + setUploadProgress({ completed: 0, total: allowedFiles.length }) let lastError: string | null = null - for (const selectedFile of allowedFiles) { + for (let i = 0; i < allowedFiles.length; i++) { + const selectedFile = allowedFiles[i] try { const formData = new FormData() formData.append('file', selectedFile) @@ -109,6 +113,8 @@ export function FileUploads() { const data = await response.json() if (!data.success) { lastError = data.error || 'Upload failed' + } else { + setUploadProgress({ completed: i + 1, total: allowedFiles.length }) } } catch (err) { logger.error('Error uploading file:', err) @@ -127,6 +133,7 @@ export function FileUploads() { setTimeout(() => setUploadError(null), 5000) } finally { setUploading(false) + setUploadProgress({ completed: 0, total: 0 }) if (fileInputRef.current) { fileInputRef.current.value = '' } @@ -225,6 +232,7 @@ export function FileUploads() { onChange={handleFileChange} disabled={uploading} accept={ACCEPT_ATTR} + multiple />
)} diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/settings-navigation/settings-navigation.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/settings-navigation/settings-navigation.tsx index 6fe6fa06d8..e19a335534 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/settings-navigation/settings-navigation.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/settings-navigation/settings-navigation.tsx @@ -203,7 +203,7 @@ export function SettingsNavigation({ return (
-
+
{navigationItems.map((item) => (
diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/team-members/team-members.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/team-members/team-members.tsx index 4ad6f22b36..a5fed3d737 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/team-members/team-members.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/team-members/team-members.tsx @@ -279,7 +279,7 @@ export function TeamMembers({ } onRemoveMember(currentUserMember) }} - className='w-full text-red-600 hover:bg-red-50 hover:text-red-700 dark:hover:bg-red-950/20' + className='w-full hover:bg-muted' > Leave Organization