diff --git a/src/lib/components/ui/command/command-input.svelte b/src/lib/components/ui/command/command-input.svelte
index 18c3408b..7d12dcb3 100644
--- a/src/lib/components/ui/command/command-input.svelte
+++ b/src/lib/components/ui/command/command-input.svelte
@@ -3,21 +3,28 @@
import { Search } from 'lucide-svelte';
import { cn } from '$lib/utils';
- type $$Props = CommandPrimitive.InputProps;
+ type $$Props = CommandPrimitive.InputProps & { wrapperClass: any };
let className: string | undefined | null = undefined;
export { className as class };
export let value: string = '';
+ export let wrapperClass;
-
-
+
+
+
+
diff --git a/src/lib/components/ui/input/input.svelte b/src/lib/components/ui/input/input.svelte
index 031cdd6a..5e846cbb 100644
--- a/src/lib/components/ui/input/input.svelte
+++ b/src/lib/components/ui/input/input.svelte
@@ -13,7 +13,7 @@
import { goto } from '$app/navigation';
- import { redirect } from '@sveltejs/kit';
goto('workspace/home');
diff --git a/src/routes/workspace/editor/FileEditor.svelte b/src/routes/workspace/editor/FileEditor.svelte
index 33509114..39daf616 100644
--- a/src/routes/workspace/editor/FileEditor.svelte
+++ b/src/routes/workspace/editor/FileEditor.svelte
@@ -1,5 +1,5 @@
+
+
+
+
{
+ focused = true;
+ }}
+ on:blur={() => {
+ focused = false;
+ }}
+ bind:value
+ wrapperClass={focused ? 'border-b' : 'border-none'}
+ >
+ {#each selectedMembers as member}
+
+
+
+
+
+ {member}
+
+
+
+ {/each}
+
+ {#if focused}
+
+
+
+ No results found.
+
+ {#each groups as group}
+ addMember(group)}>{group}
+ {/each}
+
+
+
+ {#each members as member}
+ addMember(member)} onSelect={() => addMember(member)}
+ >{member}
+ {/each}
+
+
+ {/if}
+
+
+
+
diff --git a/src/routes/workspace/editor/tiptap/extensions/MetaSettings.svelte b/src/routes/workspace/editor/tiptap/extensions/MetaSettings.svelte
new file mode 100644
index 00000000..27cbb29b
--- /dev/null
+++ b/src/routes/workspace/editor/tiptap/extensions/MetaSettings.svelte
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
kl.
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/workspace/editor/tiptap/extensions/MetaSettingsExtension.ts b/src/routes/workspace/editor/tiptap/extensions/MetaSettingsExtension.ts
new file mode 100644
index 00000000..8c9939cc
--- /dev/null
+++ b/src/routes/workspace/editor/tiptap/extensions/MetaSettingsExtension.ts
@@ -0,0 +1,62 @@
+import { Editor, Node, mergeAttributes } from '@tiptap/core';
+import { SvelteNodeViewRenderer } from 'svelte-tiptap';
+import { Plugin, PluginKey } from '@tiptap/pm/state';
+import MetaSettings from './MetaSettings.svelte';
+
+let editor: Editor;
+export const MetaSettingsExtension = Node.create({
+ name: 'metaSettings',
+ group: 'block',
+ atom: true,
+
+ selectable: false,
+ // draggable: true, // Optional: to make the node draggable
+ // inline: false,
+ // isolating: true,
+ // allowGapCursor: true,
+ onTransaction: function ({ transaction }) {
+ // editor = this.editor;
+ // console.log(transaction);
+ // console.log(this.editor);
+ // console.log(transaction.curSelection.$anchor.path[1]);
+ },
+ addProseMirrorPlugins() {
+ const editor = this.editor;
+ return [
+ new Plugin({
+ key: new PluginKey('eventHandler'),
+ props: {
+ handleKeyDown(view, event) {
+ const selection = view.state.selection;
+ if (event.key === 'Backspace') {
+ if (selection.$anchor.pos != view.state.selection.$head.pos) return;
+ if (selection.$anchor.parentOffset !== 0) return;
+ if (selection.$anchor.path[1] !== 2) return;
+ editor
+ .chain()
+ .deleteCurrentNode()
+ .setTextSelection(selection.$anchor.pos - 3)
+ .run();
+ event.preventDefault();
+ } else if (event.key == 'Enter') {
+ if (selection.$anchor.path[1] !== 0) return;
+ if (selection.$anchor.path[3].content.size + 1 !== selection.$anchor.pos) return;
+ editor.commands.setTextSelection(selection.$anchor.pos + 2);
+ }
+ }
+ }
+ })
+ ];
+ },
+ parseHTML() {
+ return [{ tag: 'meta-settings-component' }];
+ },
+
+ renderHTML({ HTMLAttributes }) {
+ return ['meta-settings-component', mergeAttributes(HTMLAttributes)];
+ },
+
+ addNodeView() {
+ return SvelteNodeViewRenderer(MetaSettings);
+ }
+});
diff --git a/src/lib/editor/extensions/title.ts b/src/routes/workspace/editor/tiptap/extensions/title.ts
similarity index 100%
rename from src/lib/editor/extensions/title.ts
rename to src/routes/workspace/editor/tiptap/extensions/title.ts
diff --git a/src/routes/workspace/sidebar/SidebarAssignment.svelte b/src/routes/workspace/sidebar/SidebarAssignment.svelte
index 8a8a2fc8..c9512479 100644
--- a/src/routes/workspace/sidebar/SidebarAssignment.svelte
+++ b/src/routes/workspace/sidebar/SidebarAssignment.svelte
@@ -7,7 +7,7 @@
import type { Readable } from 'svelte/store';
import { EditorExtensions } from '@/editor/extensions';
import Document from '@tiptap/extension-document';
- import { Title } from '@/editor/extensions/title';
+ import { Title } from '../editor/tiptap/extensions/title';
import ApiHandler from '@/api';
export let sidebarVisible: boolean;
diff --git a/src/routes/workspace/tiptap-test/+page.svelte b/src/routes/workspace/tiptap-test/+page.svelte
new file mode 100644
index 00000000..d4b4fb0f
--- /dev/null
+++ b/src/routes/workspace/tiptap-test/+page.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/static/themes/light.css b/static/themes/light.css
index 35d322ab..b27143fc 100644
--- a/static/themes/light.css
+++ b/static/themes/light.css
@@ -9,7 +9,7 @@
--color-theme-1: #56c7e0;
--color-theme-2: #ff3e00;
--color-text-0-t: rgba(0, 0, 0, 0.8);
- --color-text-1-t: rgba(0, 0, 0, 0.7);
+ --color-text-1-t: rgba(0, 0, 0, 0.6);
--color-text-2-t: rgba(0, 0, 0, 0.4);
--color-text-0: hsl(0, 0%, 20%);
--color-text-1: hsl(0, 0%, 30%);
@@ -52,7 +52,8 @@
--destructive: 0 72.2% 50.6%;
--destructive-foreground: 0 0% 98%;
- --ring: 240 10% 70%;
+ /* --ring: 240 10% 70%; */
+ --ring: 217 90% 80%;
}
.float-panel {