+
+
+
+
+
+
+ $emit('addCell', e)"
+ />
+
+
+
+
\ No newline at end of file
diff --git a/zt_frontend/src/components/cells/base/CellActionButtons.vue b/zt_frontend/src/components/cells/base/CellActionButtons.vue
new file mode 100644
index 00000000..cfeed03b
--- /dev/null
+++ b/zt_frontend/src/components/cells/base/CellActionButtons.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+ {{
+ numberOfComments
+ }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zt_frontend/src/components/cells/base/CellHeader.vue b/zt_frontend/src/components/cells/base/CellHeader.vue
new file mode 100644
index 00000000..67fb5209
--- /dev/null
+++ b/zt_frontend/src/components/cells/base/CellHeader.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zt_frontend/src/components/cells/base/CellMenu.vue b/zt_frontend/src/components/cells/base/CellMenu.vue
new file mode 100644
index 00000000..f6363dda
--- /dev/null
+++ b/zt_frontend/src/components/cells/base/CellMenu.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+ Non-Reactive
+
+
+
+
+
+
+ Hide Cell
+
+
+
+
+
+
+ Hide Code
+
+
+
+
+
+
+ Expand Code
+
+
+
+
+
+
+ Show Table
+
+
+
+
+
+
+ Delete Cell
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zt_frontend/src/components/cells/base/CellNameEditor.vue b/zt_frontend/src/components/cells/base/CellNameEditor.vue
new file mode 100644
index 00000000..3dc0cd2b
--- /dev/null
+++ b/zt_frontend/src/components/cells/base/CellNameEditor.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+ {{ modelValue }}
+
+
+
+
+ { if (!focused) save(); }"
+ />
+
+
+
+ {{ modelValue }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zt_frontend/src/components/CodeCellManager.vue b/zt_frontend/src/components/cells/base/CodeCellManager.vue
similarity index 94%
rename from zt_frontend/src/components/CodeCellManager.vue
rename to zt_frontend/src/components/cells/base/CodeCellManager.vue
index 28e3ce65..b22e6c53 100644
--- a/zt_frontend/src/components/CodeCellManager.vue
+++ b/zt_frontend/src/components/cells/base/CodeCellManager.vue
@@ -50,12 +50,12 @@
\ No newline at end of file
diff --git a/zt_frontend/src/components/cells/code/HeaderTitleComponent.vue b/zt_frontend/src/components/cells/code/HeaderTitleComponent.vue
new file mode 100644
index 00000000..62c58de2
--- /dev/null
+++ b/zt_frontend/src/components/cells/code/HeaderTitleComponent.vue
@@ -0,0 +1,51 @@
+
+
+
+ {{ cellData.cellName }}
+
+
+
+
+
+ {{ cellData.cellName }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zt_frontend/src/components/cells/code/OutcomeComponent.vue b/zt_frontend/src/components/cells/code/OutcomeComponent.vue
new file mode 100644
index 00000000..e8cc9ea0
--- /dev/null
+++ b/zt_frontend/src/components/cells/code/OutcomeComponent.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ output }}
+
+
+
+
+
diff --git a/zt_frontend/src/components/MarkdownComponent.vue b/zt_frontend/src/components/cells/markdown/MarkdownComponent.vue
similarity index 98%
rename from zt_frontend/src/components/MarkdownComponent.vue
rename to zt_frontend/src/components/cells/markdown/MarkdownComponent.vue
index 8348d00e..36b8fad7 100644
--- a/zt_frontend/src/components/MarkdownComponent.vue
+++ b/zt_frontend/src/components/cells/markdown/MarkdownComponent.vue
@@ -41,9 +41,9 @@ import { markdown } from '@codemirror/lang-markdown'
import { oneDark } from '@codemirror/theme-one-dark'
import { autocompletion } from '@codemirror/autocomplete'
import { CodeCell } from "@/types/notebook";
-import AddCell from '@/components/AddCell.vue'
+import AddCell from '@/components/cells/base/AddCell.vue'
import { useRoute } from 'vue-router'
-import Cell from '@/components/Cell.vue'
+import Cell from '@/components/cells/base/Cell.vue'
import {EditorView, keymap} from "@codemirror/view";
import {Prec} from "@codemirror/state";
diff --git a/zt_frontend/src/components/SQLComponent.vue b/zt_frontend/src/components/cells/sql/SQLComponent.vue
similarity index 99%
rename from zt_frontend/src/components/SQLComponent.vue
rename to zt_frontend/src/components/cells/sql/SQLComponent.vue
index 701f8c0c..c76066de 100644
--- a/zt_frontend/src/components/SQLComponent.vue
+++ b/zt_frontend/src/components/cells/sql/SQLComponent.vue
@@ -102,7 +102,7 @@ import {
} from "@codemirror/autocomplete";
import { CodeCell } from "@/types/notebook";
import { useRoute } from "vue-router";
-import Cell from '@/components/Cell.vue'
+import Cell from '@/components/cells/base/Cell.vue'
export default {
components: {
diff --git a/zt_frontend/src/components/EditorComponent.vue b/zt_frontend/src/components/cells/text/EditorComponent.vue
similarity index 99%
rename from zt_frontend/src/components/EditorComponent.vue
rename to zt_frontend/src/components/cells/text/EditorComponent.vue
index d3184fb9..4f7d72b1 100644
--- a/zt_frontend/src/components/EditorComponent.vue
+++ b/zt_frontend/src/components/cells/text/EditorComponent.vue
@@ -43,7 +43,7 @@ import "tinymce/plugins/image";
import Editor from "@tinymce/tinymce-vue";
import { CodeCell } from "@/types/notebook";
import { useRoute } from "vue-router";
-import Cell from "@/components/Cell.vue";
+import Cell from "@/components/cells/base/Cell.vue";
export default {
components: {
diff --git a/zt_frontend/src/components/FileExplorer.vue b/zt_frontend/src/components/file-system/FileExplorer.vue
similarity index 92%
rename from zt_frontend/src/components/FileExplorer.vue
rename to zt_frontend/src/components/file-system/FileExplorer.vue
index 66383019..2a890828 100644
--- a/zt_frontend/src/components/FileExplorer.vue
+++ b/zt_frontend/src/components/file-system/FileExplorer.vue
@@ -77,13 +77,13 @@