From 8f199a7cca429c7ec3e3832d4b15494b679bcafb Mon Sep 17 00:00:00 2001 From: "$@#il" Date: Mon, 23 Jun 2025 23:46:45 +0530 Subject: [PATCH] started working with monaco ui --- package-lock.json | 49 +++ package.json | 4 +- src/App.jsx | 8 +- src/components/NavBar.jsx | 4 +- .../codeEditor/CodeEditorLayout.jsx | 296 ++++++++++++++++++ src/components/codeEditor/Editor.jsx | 152 +++++++++ src/components/codeEditor/FileExplorer.jsx | 158 ++++++++++ src/components/pages/CodeEditorPage.jsx | 70 +++++ src/components/pages/SingleProjectDetails.css | 123 +++++--- src/components/pages/SingleProjectDetails.jsx | 212 ++++++++----- src/components/ui/alert.jsx | 39 +++ src/components/ui/resizable.jsx | 66 ++++ yarn.lock | 33 +- 13 files changed, 1093 insertions(+), 121 deletions(-) create mode 100644 src/components/codeEditor/CodeEditorLayout.jsx create mode 100644 src/components/codeEditor/Editor.jsx create mode 100644 src/components/codeEditor/FileExplorer.jsx create mode 100644 src/components/pages/CodeEditorPage.jsx create mode 100644 src/components/ui/alert.jsx create mode 100644 src/components/ui/resizable.jsx diff --git a/package-lock.json b/package-lock.json index 308a4ce..f04e1f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,9 +7,11 @@ "": { "name": "vite-project", "version": "0.0.0", + "license": "UNLICENSED", "dependencies": { "@fortawesome/fontawesome-free": "^6.7.2", "@heroicons/react": "^2.2.0", + "@monaco-editor/react": "^4.7.0", "@radix-ui/react-avatar": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.4", "@radix-ui/react-icons": "^1.3.2", @@ -27,11 +29,13 @@ "gsap": "^3.12.7", "jwt-decode": "^4.0.0", "lucide-react": "^0.460.0", + "monaco-editor": "^0.52.2", "path": "^0.12.7", "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.4.0", "react-intersection-observer": "^9.15.1", + "react-resizable-panels": "^3.0.3", "react-router-dom": "^6.28.0", "react-type-animation": "^3.2.0", "recharts": "^2.15.0", @@ -1216,6 +1220,29 @@ "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==", "license": "Apache-2.0" }, + "node_modules/@monaco-editor/loader": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.5.0.tgz", + "integrity": "sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", + "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.5.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@monogrid/gainmap-js": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.1.0.tgz", @@ -6613,6 +6640,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/monaco-editor": { + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", + "license": "MIT" + }, "node_modules/motion-dom": { "version": "11.18.1", "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", @@ -7550,6 +7583,16 @@ } } }, + "node_modules/react-resizable-panels": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-3.0.3.tgz", + "integrity": "sha512-7HA8THVBHTzhDK4ON0tvlGXyMAJN1zBeRpuyyremSikgYh2ku6ltD7tsGQOcXx4NKPrZtYCm/5CBr+dkruTGQw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, "node_modules/react-router": { "version": "6.28.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz", @@ -8157,6 +8200,12 @@ "node": ">=0.10.0" } }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + }, "node_modules/stats-gl": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.4.2.tgz", diff --git a/package.json b/package.json index 61b1853..ff98f09 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "^6.7.2", "@heroicons/react": "^2.2.0", + "@monaco-editor/react": "^4.7.0", "@radix-ui/react-avatar": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.4", "@radix-ui/react-icons": "^1.3.2", @@ -30,11 +31,13 @@ "gsap": "^3.12.7", "jwt-decode": "^4.0.0", "lucide-react": "^0.460.0", + "monaco-editor": "^0.52.2", "path": "^0.12.7", "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.4.0", "react-intersection-observer": "^9.15.1", + "react-resizable-panels": "^3.0.3", "react-router-dom": "^6.28.0", "react-type-animation": "^3.2.0", "recharts": "^2.15.0", @@ -59,4 +62,3 @@ "vite": "^5.4.10" } } - diff --git a/src/App.jsx b/src/App.jsx index 4d31bef..6a03eec 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -14,6 +14,7 @@ import DeploymentProgress from './components/pages/DeploymentProgress'; import DeployForm from './components/pages/DeployForm'; import LoginPage from './components/LoginPage'; import ProjectLister from './components/pages/ProjectLister'; +import CodeEditorPage from './components/pages/CodeEditorPage'; import NavBar from './components/NavBar'; import Footer from './components/Footer'; import { useUser } from './context/userContext'; @@ -55,9 +56,14 @@ function AppContent() { } /> } /> + + + // + } /> - {location.pathname !== '/login' &&