diff --git a/.gitignore b/.gitignore index 42a6339..0de9358 100644 --- a/.gitignore +++ b/.gitignore @@ -33,8 +33,4 @@ coverage /cypress/screenshots/ # Vitest -__screenshots__/ - -# Local AI instructions -.github/copilot-instructions.md -*.agent.md \ No newline at end of file +__screenshots__/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a63d533..bfa6e01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,14 +12,15 @@ "@tanstack/vue-table": "^8.21.3", "@unyt/datex": "0.0.13", "@unyt/speck": "0.0.12", - "@vueuse/core": "^14.1.0", + "@vueuse/core": "^14.2.1", "ag-grid-community": "^35.0.0", "ag-grid-vue3": "^35.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-vue-next": "^0.548.0", "markdown-it": "^14.1.1", - "reka-ui": "^2.7.0", + "modern-monaco": "^0.3.7", + "reka-ui": "^2.8.2", "search-query-parser": "^1.6.0", "shadcn": "^3.5.0", "shadcn-ui": "^0.9.5", @@ -7214,6 +7215,15 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/modern-monaco": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/modern-monaco/-/modern-monaco-0.3.8.tgz", + "integrity": "sha512-vQ6tlYorvHJs9FzlOBOqErDyJ3D1sAkm9EcOUUASvpqpUaAsj71vh8kH5WruC+jNQAD2BlTsyw04m0Eo0+RpqA==", + "license": "MIT", + "peerDependencies": { + "typescript": ">= 5.0.0" + } + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -9385,7 +9395,6 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index cfa4dfb..eb3b962 100644 --- a/package.json +++ b/package.json @@ -22,17 +22,18 @@ "@tanstack/vue-table": "^8.21.3", "@unyt/datex": "0.0.13", "@unyt/speck": "0.0.12", - "@vueuse/core": "^14.1.0", "ag-grid-community": "^35.0.0", "ag-grid-vue3": "^35.0.0", + "@vueuse/core": "^14.2.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-vue-next": "^0.548.0", "markdown-it": "^14.1.1", - "reka-ui": "^2.7.0", "search-query-parser": "^1.6.0", "shadcn": "^3.5.0", "shadcn-ui": "^0.9.5", + "modern-monaco": "^0.3.7", + "reka-ui": "^2.8.2", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.16", "tw-animate-css": "^1.4.0", diff --git a/src/components/Editor/EditorSidebar.vue b/src/components/Editor/EditorSidebar.vue new file mode 100644 index 0000000..c1f5857 --- /dev/null +++ b/src/components/Editor/EditorSidebar.vue @@ -0,0 +1,479 @@ + + + diff --git a/src/components/Editor/EditorTabs.vue b/src/components/Editor/EditorTabs.vue new file mode 100644 index 0000000..1378931 --- /dev/null +++ b/src/components/Editor/EditorTabs.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/src/components/Editor/FileTreeItem.vue b/src/components/Editor/FileTreeItem.vue new file mode 100644 index 0000000..8aa1107 --- /dev/null +++ b/src/components/Editor/FileTreeItem.vue @@ -0,0 +1,378 @@ + + + diff --git a/src/components/Editor/FolderContextMenu.vue b/src/components/Editor/FolderContextMenu.vue new file mode 100644 index 0000000..15dcdcf --- /dev/null +++ b/src/components/Editor/FolderContextMenu.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/components/ui/resizable/ResizableHandle.vue b/src/components/ui/resizable/ResizableHandle.vue new file mode 100644 index 0000000..1ba7af1 --- /dev/null +++ b/src/components/ui/resizable/ResizableHandle.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/ui/resizable/ResizablePanelGroup.vue b/src/components/ui/resizable/ResizablePanelGroup.vue new file mode 100644 index 0000000..a555d40 --- /dev/null +++ b/src/components/ui/resizable/ResizablePanelGroup.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/components/ui/resizable/index.ts b/src/components/ui/resizable/index.ts new file mode 100644 index 0000000..c2826b7 --- /dev/null +++ b/src/components/ui/resizable/index.ts @@ -0,0 +1,3 @@ +export { default as ResizableHandle } from "./ResizableHandle.vue" +export { default as ResizablePanelGroup } from "./ResizablePanelGroup.vue" +export { SplitterPanel as ResizablePanel } from "reka-ui" diff --git a/src/components/ui/scroll-area/ScrollArea.vue b/src/components/ui/scroll-area/ScrollArea.vue index 4bae71b..ef4126e 100644 --- a/src/components/ui/scroll-area/ScrollArea.vue +++ b/src/components/ui/scroll-area/ScrollArea.vue @@ -1,14 +1,13 @@ + + + + diff --git a/src/views/Editor/EditorViewWrapper.vue b/src/views/Editor/EditorViewWrapper.vue new file mode 100644 index 0000000..8abad79 --- /dev/null +++ b/src/views/Editor/EditorViewWrapper.vue @@ -0,0 +1,7 @@ + + +