diff --git a/src/lib/components/editor.svelte b/src/lib/components/editor.svelte
index 1c2c6a2..4c828ea 100644
--- a/src/lib/components/editor.svelte
+++ b/src/lib/components/editor.svelte
@@ -1,56 +1,319 @@
-
-
{formatDate(entry.date)}
+
+
+
+
{formatDate(entry.date)}
+
+ {#if !edit}
+
+ {:else}
+
+
+
+ {/if}
+
+
+
+
+ {#if error}
+
+ {error}
+
+ {/if}
+
+
{#if !edit}
-
+
+
+ {#if entry.image}
+
+ {:else}
+
+ No image
+
+ {/if}
+
+
+ {#if entry.content}
+
+ {:else}
+
+ No content yet
+
+ {/if}
+
+
+
{:else}
-
-
-
+
+
+
+
+
+ {#if previewImage}
+
+ {:else}
+
{
+ if (e.key === "Enter" || e.key === " ") {
+ fileInput?.click();
+ }
+ }}
+ onclick={() => fileInput?.click()}
+ >
+
+
+ Click to upload or drag and drop
+
+
+ PNG, JPG, GIF up to 5MB
+
+
+ {/if}
+
+
+
+
+
+
+
+
+
+ {editingEntry.content.length} characters
+
+
+
{/if}
-
diff --git a/src/lib/components/ui/input/index.ts b/src/lib/components/ui/input/index.ts
new file mode 100644
index 0000000..ed380dd
--- /dev/null
+++ b/src/lib/components/ui/input/index.ts
@@ -0,0 +1,2 @@
+export { default as Input } from "./input.svelte";
+export type { InputProps } from "./input.svelte";
diff --git a/src/lib/components/ui/input/input.svelte b/src/lib/components/ui/input/input.svelte
new file mode 100644
index 0000000..678dee7
--- /dev/null
+++ b/src/lib/components/ui/input/input.svelte
@@ -0,0 +1,25 @@
+
+
+
+
+
diff --git a/src/lib/components/ui/textarea/index.ts b/src/lib/components/ui/textarea/index.ts
new file mode 100644
index 0000000..9cfe382
--- /dev/null
+++ b/src/lib/components/ui/textarea/index.ts
@@ -0,0 +1,2 @@
+export { default as Textarea } from "./textarea.svelte";
+export type { TextareaProps } from "./textarea.svelte";
diff --git a/src/lib/components/ui/textarea/textarea.svelte b/src/lib/components/ui/textarea/textarea.svelte
new file mode 100644
index 0000000..d671e1b
--- /dev/null
+++ b/src/lib/components/ui/textarea/textarea.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+