diff --git a/services/platform/app/components/ui/forms/file-upload.tsx b/services/platform/app/components/ui/forms/file-upload.tsx index cfe916d4d..7f4585772 100644 --- a/services/platform/app/components/ui/forms/file-upload.tsx +++ b/services/platform/app/components/ui/forms/file-upload.tsx @@ -92,7 +92,13 @@ function DropZone({ (e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); - setIsDragOver(false); + const { relatedTarget } = e; + if ( + !(relatedTarget instanceof Node) || + !e.currentTarget.contains(relatedTarget) + ) { + setIsDragOver(false); + } }, [setIsDragOver], ); diff --git a/services/platform/app/components/ui/navigation/navigation.tsx b/services/platform/app/components/ui/navigation/navigation.tsx index 5b491ac8d..8fd9d7135 100644 --- a/services/platform/app/components/ui/navigation/navigation.tsx +++ b/services/platform/app/components/ui/navigation/navigation.tsx @@ -139,7 +139,7 @@ export function Navigation({ organizationId, role }: NavigationProps) { -
+
{navigationItems.map((item) => ( diff --git a/services/platform/app/features/settings/integrations/components/integration-upload/steps/preview-step.tsx b/services/platform/app/features/settings/integrations/components/integration-upload/steps/preview-step.tsx index d5f6e43c9..5687640ed 100644 --- a/services/platform/app/features/settings/integrations/components/integration-upload/steps/preview-step.tsx +++ b/services/platform/app/features/settings/integrations/components/integration-upload/steps/preview-step.tsx @@ -1,7 +1,7 @@ 'use client'; import { Code, Database, Key, Globe, Pencil, Puzzle, Zap } from 'lucide-react'; -import { useCallback, useEffect, useMemo, useRef } from 'react'; +import { useCallback, useMemo, useRef } from 'react'; import { Image } from '@/app/components/ui/data-display/image'; import { Badge } from '@/app/components/ui/feedback/badge'; @@ -37,14 +37,6 @@ export function PreviewStep({ parsedPackage, onIconChange }: PreviewStepProps) { [iconFile], ); - useEffect(() => { - return () => { - if (iconPreviewUrl) { - URL.revokeObjectURL(iconPreviewUrl); - } - }; - }, [iconPreviewUrl]); - const handleIconUpload = useCallback( (e: React.ChangeEvent) => { const file = e.target.files?.[0]; diff --git a/services/platform/app/features/settings/integrations/components/integration-upload/steps/upload-step.tsx b/services/platform/app/features/settings/integrations/components/integration-upload/steps/upload-step.tsx index 410b48a48..a6e240ac6 100644 --- a/services/platform/app/features/settings/integrations/components/integration-upload/steps/upload-step.tsx +++ b/services/platform/app/features/settings/integrations/components/integration-upload/steps/upload-step.tsx @@ -59,10 +59,14 @@ export function UploadStep({ onPackageParsed }: UploadStepProps) { inputId="integration-package-upload" aria-label={t('integrations.upload.dropZoneLabel')} className={cn( - 'border-border hover:border-primary/50 flex flex-col items-center justify-center gap-3 rounded-lg border-2 border-dashed p-8 transition-colors', + 'border-border hover:border-primary/50 relative flex flex-col items-center justify-center gap-3 rounded-lg border-2 border-dashed p-8 transition-colors', isParsing && 'pointer-events-none opacity-50', )} > +

@@ -75,7 +79,6 @@ export function UploadStep({ onPackageParsed }: UploadStepProps) {

- {error && ( diff --git a/services/platform/app/features/settings/organization/components/organization-settings-client.tsx b/services/platform/app/features/settings/organization/components/organization-settings-client.tsx index 593c8b55b..cc6a7afb1 100644 --- a/services/platform/app/features/settings/organization/components/organization-settings-client.tsx +++ b/services/platform/app/features/settings/organization/components/organization-settings-client.tsx @@ -117,7 +117,7 @@ export function OrganizationSettingsClient({ id="org-name" label={tSettings('organization.title')} {...register('name')} - className="max-w-sm flex-1" + wrapperClassName="max-w-sm flex-1" />