diff --git a/src/lib/components/EditableItem.svelte b/src/lib/components/EditableItem.svelte
new file mode 100644
index 0000000..ada2542
--- /dev/null
+++ b/src/lib/components/EditableItem.svelte
@@ -0,0 +1,123 @@
+
+
+
+
+ {#if editing}
+
+ {:else}
+ {value}
+ {#if !editing && editable}
+
+
+ {/if}
+ {/if}
+
+ {#if editing && errors}
+
{errors[0]}
+ {/if}
+
diff --git a/src/lib/components/ListItem.svelte b/src/lib/components/ListItem.svelte
deleted file mode 100644
index 0b5f0e8..0000000
--- a/src/lib/components/ListItem.svelte
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
-
-
- {#if admin}
-
{
- editName();
- }}
- />
-
-
-
-
- {:else}
-
- {item.name}
-
- {/if}
-
-
{shortenFileSize(item.size)}
-
-
-
-
3D Tatort
-
-
- Zuletzt geändert
-
-
-
diff --git a/src/lib/helper/error-utils.ts b/src/lib/helper/error-utils.ts
new file mode 100644
index 0000000..eabfb86
--- /dev/null
+++ b/src/lib/helper/error-utils.ts
@@ -0,0 +1,9 @@
+export function validateInput(oldValue:string, value: string, options: { minLength?: number; existingNames?: string[] }) {
+ const errors: string[] = [];
+
+ if (!value.trim()) errors.push('Feld darf nicht leer sein');
+ if (options.existingNames?.includes(value) && oldValue !== value)
+ errors.push('Name existiert bereits');
+
+ return errors;
+}
diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte
index b730a95..2635462 100644
--- a/src/routes/(angemeldet)/list/+page.svelte
+++ b/src/routes/(angemeldet)/list/+page.svelte
@@ -1,11 +1,17 @@