> = $props();
+
+
+
+ {@render children?.()}
+
diff --git a/packages/frontend/src/lib/components/ui/empty/empty-description.svelte b/packages/frontend/src/lib/components/ui/empty/empty-description.svelte
new file mode 100644
index 0000000..85a866c
--- /dev/null
+++ b/packages/frontend/src/lib/components/ui/empty/empty-description.svelte
@@ -0,0 +1,23 @@
+
+
+a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4",
+ className
+ )}
+ {...restProps}
+>
+ {@render children?.()}
+
diff --git a/packages/frontend/src/lib/components/ui/empty/empty-header.svelte b/packages/frontend/src/lib/components/ui/empty/empty-header.svelte
new file mode 100644
index 0000000..296eaf8
--- /dev/null
+++ b/packages/frontend/src/lib/components/ui/empty/empty-header.svelte
@@ -0,0 +1,20 @@
+
+
+
+ {@render children?.()}
+
diff --git a/packages/frontend/src/lib/components/ui/empty/empty-media.svelte b/packages/frontend/src/lib/components/ui/empty/empty-media.svelte
new file mode 100644
index 0000000..0b4e45d
--- /dev/null
+++ b/packages/frontend/src/lib/components/ui/empty/empty-media.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
+ {@render children?.()}
+
diff --git a/packages/frontend/src/lib/components/ui/empty/empty-title.svelte b/packages/frontend/src/lib/components/ui/empty/empty-title.svelte
new file mode 100644
index 0000000..8c237aa
--- /dev/null
+++ b/packages/frontend/src/lib/components/ui/empty/empty-title.svelte
@@ -0,0 +1,20 @@
+
+
+
+ {@render children?.()}
+
diff --git a/packages/frontend/src/lib/components/ui/empty/empty.svelte b/packages/frontend/src/lib/components/ui/empty/empty.svelte
new file mode 100644
index 0000000..4ccf060
--- /dev/null
+++ b/packages/frontend/src/lib/components/ui/empty/empty.svelte
@@ -0,0 +1,23 @@
+
+
+
+ {@render children?.()}
+
diff --git a/packages/frontend/src/lib/components/ui/empty/index.ts b/packages/frontend/src/lib/components/ui/empty/index.ts
new file mode 100644
index 0000000..ae4c106
--- /dev/null
+++ b/packages/frontend/src/lib/components/ui/empty/index.ts
@@ -0,0 +1,22 @@
+import Root from "./empty.svelte";
+import Header from "./empty-header.svelte";
+import Media from "./empty-media.svelte";
+import Title from "./empty-title.svelte";
+import Description from "./empty-description.svelte";
+import Content from "./empty-content.svelte";
+
+export {
+ Root,
+ Header,
+ Media,
+ Title,
+ Description,
+ Content,
+ //
+ Root as Empty,
+ Header as EmptyHeader,
+ Media as EmptyMedia,
+ Title as EmptyTitle,
+ Description as EmptyDescription,
+ Content as EmptyContent,
+};
diff --git a/packages/frontend/src/lib/i18n/locales/en.ts b/packages/frontend/src/lib/i18n/locales/en.ts
index 84725b0..f4cfcdd 100644
--- a/packages/frontend/src/lib/i18n/locales/en.ts
+++ b/packages/frontend/src/lib/i18n/locales/en.ts
@@ -96,8 +96,8 @@ export default {
security: "Security",
recordings: "Recordings",
analytics: "Analytics",
- back_to_site: "← Back to site",
- back_mobile: "← Back",
+ back_to_site: "Back to site",
+ back_mobile: "Back",
},
analytics: {
title: "Analytics",
@@ -922,8 +922,8 @@ export default {
},
admin: {
nav: {
- back_to_site: "← Back to site",
- back_mobile: "← Back",
+ back_to_site: "Back to site",
+ back_mobile: "Back",
title: "Admin",
users: "Users",
videos: "Videos",
diff --git a/packages/frontend/src/routes/admin/+layout.svelte b/packages/frontend/src/routes/admin/+layout.svelte
index 876c85c..8d49a30 100644
--- a/packages/frontend/src/routes/admin/+layout.svelte
+++ b/packages/frontend/src/routes/admin/+layout.svelte
@@ -1,8 +1,17 @@