diff --git a/app/components/@settings/tabs/connections/components/PushToGitHubDialog.tsx b/app/components/@settings/tabs/connections/components/PushToGitHubDialog.tsx
index 5346964d..3a571109 100644
--- a/app/components/@settings/tabs/connections/components/PushToGitHubDialog.tsx
+++ b/app/components/@settings/tabs/connections/components/PushToGitHubDialog.tsx
@@ -13,7 +13,7 @@ import type { FileMap, File } from '~/lib/stores/files';
import { Octokit } from '@octokit/rest';
// Import UI components
-import { Badge, EmptyState, StatusIndicator, SearchInput } from '~/components/ui';
+import { Badge, EmptyState, StatusIndicator, SearchInput, CloseButton } from '~/components/ui';
interface PushToGitHubDialogProps {
isOpen: boolean;
@@ -303,11 +303,8 @@ export function PushToGitHubDialog({ isOpen, onClose, onPush }: PushToGitHubDial
-
-
+
+
@@ -414,11 +411,8 @@ export function PushToGitHubDialog({ isOpen, onClose, onPush }: PushToGitHubDial
aria-describedby="connection-required-description"
>
-
-
+
+
diff --git a/app/components/@settings/tabs/connections/components/RepositoryDialogContext.tsx b/app/components/@settings/tabs/connections/components/RepositoryDialogContext.tsx
index 6ca74ff7..8a0490e2 100644
--- a/app/components/@settings/tabs/connections/components/RepositoryDialogContext.tsx
+++ b/app/components/@settings/tabs/connections/components/RepositoryDialogContext.tsx
@@ -6,7 +6,9 @@ export interface RepositoryDialogContextType {
}
// Default context value with a no-op function
-// eslint-disable-next-line @typescript-eslint/no-empty-function
export const RepositoryDialogContext = createContext({
- setShowAuthDialog: () => {},
+ // This is intentionally empty as it will be overridden by the provider
+ setShowAuthDialog: () => {
+ // No operation
+ },
});
diff --git a/app/components/ui/CloseButton.tsx b/app/components/ui/CloseButton.tsx
new file mode 100644
index 00000000..5c8fff5e
--- /dev/null
+++ b/app/components/ui/CloseButton.tsx
@@ -0,0 +1,49 @@
+import React from 'react';
+import { motion } from 'framer-motion';
+import { classNames } from '~/utils/classNames';
+
+interface CloseButtonProps {
+ onClick?: () => void;
+ className?: string;
+ size?: 'sm' | 'md' | 'lg';
+}
+
+/**
+ * CloseButton component
+ *
+ * A button with an X icon used for closing dialogs, modals, etc.
+ * The button has a transparent background and only shows a background on hover.
+ */
+export function CloseButton({ onClick, className, size = 'md' }: CloseButtonProps) {
+ const sizeClasses = {
+ sm: 'p-1',
+ md: 'p-2',
+ lg: 'p-3',
+ };
+
+ const iconSizeClasses = {
+ sm: 'w-3 h-3',
+ md: 'w-4 h-4',
+ lg: 'w-5 h-5',
+ };
+
+ return (
+
+
+
+ );
+}
diff --git a/app/components/ui/index.ts b/app/components/ui/index.ts
index b3b884e0..15ade2f2 100644
--- a/app/components/ui/index.ts
+++ b/app/components/ui/index.ts
@@ -21,6 +21,7 @@ export * from './LoadingOverlay';
// New components
export * from './Breadcrumbs';
+export * from './CloseButton';
export * from './CodeBlock';
export * from './EmptyState';
export * from './FileIcon';