diff --git a/app.vue b/app.vue index 5caf4b5..034fb67 100644 --- a/app.vue +++ b/app.vue @@ -3,7 +3,7 @@ -
+
@@ -16,4 +16,26 @@ provideToaster(); const { list } = useToast(); - \ No newline at end of file + + + \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index b030e64..57e99ac 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/components/Editor.vue b/components/Editor.vue new file mode 100644 index 0000000..4aed655 --- /dev/null +++ b/components/Editor.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/components/Markdown.vue b/components/Markdown.vue new file mode 100644 index 0000000..59bea96 --- /dev/null +++ b/components/Markdown.vue @@ -0,0 +1,23 @@ + + + \ No newline at end of file diff --git a/components/MarkdownRenderer.vue b/components/MarkdownRenderer.vue new file mode 100644 index 0000000..0a0cf14 --- /dev/null +++ b/components/MarkdownRenderer.vue @@ -0,0 +1,111 @@ + \ No newline at end of file diff --git a/components/base/Dialog.vue b/components/base/Dialog.vue index 9efa49e..30e7509 100644 --- a/components/base/Dialog.vue +++ b/components/base/Dialog.vue @@ -1,6 +1,6 @@ + + \ No newline at end of file diff --git a/components/prose/ProseBlockquote.vue b/components/prose/ProseBlockquote.vue index 830fee9..7cfa02d 100644 --- a/components/prose/ProseBlockquote.vue +++ b/components/prose/ProseBlockquote.vue @@ -4,7 +4,7 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/composables/useMarkdown.ts b/composables/useMarkdown.ts new file mode 100644 index 0000000..69b5178 --- /dev/null +++ b/composables/useMarkdown.ts @@ -0,0 +1,29 @@ +import { unified, type Processor } from "unified"; +import type { Root } from 'hast'; +import RemarkParse from "remark-parse"; + +import RemarkRehype from 'remark-rehype'; +import RemarkOfm from 'remark-ofm'; +import RemarkBreaks from 'remark-breaks' +import RemarkGfm from 'remark-gfm'; +import RemarkFrontmatter from 'remark-frontmatter'; +import RehypeRaw from 'rehype-raw'; + +export default function useMarkdown(): (md: string) => Root +{ + let processor: Processor; + + const parse = (markdown: string) => { + if (!processor) + { + processor = unified().use([RemarkParse, RemarkGfm , RemarkOfm , RemarkBreaks, RemarkFrontmatter]); + processor.use(RemarkRehype, { allowDangerousHtml: true }); + processor.use(RehypeRaw); + } + + const processed = processor.runSync(processor.parse(markdown)) as Root; + return processed; + } + + return parse; +} \ No newline at end of file diff --git a/db.sqlite b/db.sqlite index 658ba1b..7d9f34a 100644 Binary files a/db.sqlite and b/db.sqlite differ diff --git a/db.sqlite-shm b/db.sqlite-shm index e58aa6b..9ae3046 100644 Binary files a/db.sqlite-shm and b/db.sqlite-shm differ diff --git a/db.sqlite-wal b/db.sqlite-wal index e90d54e..15cdd94 100644 Binary files a/db.sqlite-wal and b/db.sqlite-wal differ diff --git a/layouts/default.vue b/layouts/default.vue index 4d68008..4be9a6d 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -1,6 +1,6 @@ + + \ No newline at end of file diff --git a/pages/explore/edit/[...path].vue b/pages/explore/edit/[...path].vue new file mode 100644 index 0000000..49a9565 --- /dev/null +++ b/pages/explore/edit/[...path].vue @@ -0,0 +1,75 @@ + + + \ No newline at end of file diff --git a/pages/legal.vue b/pages/legal.vue index 27e0f69..759b22f 100644 --- a/pages/legal.vue +++ b/pages/legal.vue @@ -1,3 +1,33 @@ \ No newline at end of file diff --git a/pages/user/profile.vue b/pages/user/profile.vue index 03acf1d..52ec001 100644 --- a/pages/user/profile.vue +++ b/pages/user/profile.vue @@ -3,28 +3,63 @@ definePageMeta({ guestsGoesTo: '/user/login', }) let { user, clear } = useUserSession(); + +const deleting = ref(false);