diff --git a/frontend/src/components/Settings.js b/frontend/src/components/Settings.js
index 21a32ac..18cba57 100644
--- a/frontend/src/components/Settings.js
+++ b/frontend/src/components/Settings.js
@@ -1,11 +1,21 @@
import React, { useReducer, useEffect, useCallback, useRef } from 'react';
-import { Modal, Badge, Button, Group, Title } from '@mantine/core';
+import {
+ Modal,
+ Badge,
+ Button,
+ Group,
+ Title,
+ Stack,
+ Divider,
+} from '@mantine/core';
import { notifications } from '@mantine/notifications';
import { useWorkspace } from '../contexts/WorkspaceContext';
import AppearanceSettings from './settings/AppearanceSettings';
import EditorSettings from './settings/EditorSettings';
import GitSettings from './settings/GitSettings';
+import GeneralSettings from './settings/GeneralSettings';
import { useModalContext } from '../contexts/ModalContext';
+import DangerZoneSettings from './settings/DangerZoneSettings';
const initialState = {
localSettings: {},
@@ -100,34 +110,47 @@ const Settings = () => {
centered
size="lg"
>
- {state.hasUnsavedChanges && (
-
- Unsaved Changes
-
- )}
- handleInputChange('theme', newTheme)}
- />
- handleInputChange('autoSave', value)}
- />
-
-
-
-
-
+
+ {state.hasUnsavedChanges && (
+
+ Unsaved Changes
+
+ )}
+
+
+
+
+ handleInputChange('theme', newTheme)}
+ />
+
+
+ handleInputChange('autoSave', value)}
+ />
+
+
+
+
+
+
+
+
+
+
+
);
};
diff --git a/frontend/src/components/modals/DeleteWorkspaceModal.js b/frontend/src/components/modals/DeleteWorkspaceModal.js
new file mode 100644
index 0000000..8effeeb
--- /dev/null
+++ b/frontend/src/components/modals/DeleteWorkspaceModal.js
@@ -0,0 +1,35 @@
+import React from 'react';
+import { Modal, Text, Button, Group, Stack } from '@mantine/core';
+
+const DeleteWorkspaceModal = ({
+ opened,
+ onClose,
+ onConfirm,
+ workspaceName,
+}) => (
+
+
+
+ Are you sure you want to delete workspace "{workspaceName}"? This action
+ cannot be undone and all files in this workspace will be permanently
+ deleted.
+
+
+
+
+
+
+
+);
+
+export default DeleteWorkspaceModal;
diff --git a/frontend/src/components/settings/DangerZoneSettings.js b/frontend/src/components/settings/DangerZoneSettings.js
new file mode 100644
index 0000000..8c328e9
--- /dev/null
+++ b/frontend/src/components/settings/DangerZoneSettings.js
@@ -0,0 +1,40 @@
+import React, { useState } from 'react';
+import { Box, Button, Title } from '@mantine/core';
+import DeleteWorkspaceModal from '../modals/DeleteWorkspaceModal';
+import { useWorkspace } from '../../contexts/WorkspaceContext';
+
+const DangerZoneSettings = () => {
+ const { currentWorkspace } = useWorkspace();
+ const [deleteModalOpened, setDeleteModalOpened] = useState(false);
+
+ const handleDelete = () => {
+ // TODO: Implement delete functionality
+ setDeleteModalOpened(false);
+ };
+
+ return (
+
+
+ Danger Zone
+
+
+
+
+ setDeleteModalOpened(false)}
+ onConfirm={handleDelete}
+ workspaceName={currentWorkspace?.name}
+ />
+
+ );
+};
+
+export default DangerZoneSettings;
diff --git a/frontend/src/components/settings/GeneralSettings.js b/frontend/src/components/settings/GeneralSettings.js
new file mode 100644
index 0000000..e1f916e
--- /dev/null
+++ b/frontend/src/components/settings/GeneralSettings.js
@@ -0,0 +1,32 @@
+import React from 'react';
+import { Title, Box, TextInput, Text, Grid } from '@mantine/core';
+import { useWorkspace } from '../../contexts/WorkspaceContext';
+
+const GeneralSettings = ({ onInputChange }) => {
+ const { currentWorkspace } = useWorkspace();
+
+ return (
+
+
+ General
+
+
+
+
+ Workspace Name
+
+
+
+ onInputChange('name', event.currentTarget.value)
+ }
+ placeholder="Enter workspace name"
+ />
+
+
+
+ );
+};
+
+export default GeneralSettings;
diff --git a/frontend/src/contexts/WorkspaceContext.js b/frontend/src/contexts/WorkspaceContext.js
index 8110ce8..2bae145 100644
--- a/frontend/src/contexts/WorkspaceContext.js
+++ b/frontend/src/contexts/WorkspaceContext.js
@@ -61,11 +61,6 @@ export const WorkspaceProvider = ({ children }) => {
setLoading(true);
await updateLastWorkspace(workspaceId);
await loadWorkspaceData(workspaceId);
- notifications.show({
- title: 'Success',
- message: 'Workspace switched successfully',
- color: 'green',
- });
} catch (error) {
console.error('Failed to switch workspace:', error);
notifications.show({