diff --git a/web/src/lib/components/BreadcrumbActionPage.svelte b/web/src/lib/components/BreadcrumbActionPage.svelte
index cdde67b725..3e373b5d0e 100644
--- a/web/src/lib/components/BreadcrumbActionPage.svelte
+++ b/web/src/lib/components/BreadcrumbActionPage.svelte
@@ -3,11 +3,9 @@
import {
Breadcrumbs,
Button,
- Container,
ContextMenuButton,
HStack,
MenuItemType,
- Scrollable,
isMenuItemType,
type BreadcrumbItem,
} from '@immich/ui';
@@ -55,7 +53,5 @@
{/if}
-
-
-
+ {@render children?.()}
diff --git a/web/src/lib/components/PageContent.svelte b/web/src/lib/components/PageContent.svelte
new file mode 100644
index 0000000000..e6206c262c
--- /dev/null
+++ b/web/src/lib/components/PageContent.svelte
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/web/src/lib/components/layouts/AdminPageLayout.svelte b/web/src/lib/components/layouts/AdminPageLayout.svelte
index 7106eb557a..498170a2af 100644
--- a/web/src/lib/components/layouts/AdminPageLayout.svelte
+++ b/web/src/lib/components/layouts/AdminPageLayout.svelte
@@ -1,5 +1,6 @@
+
+
+
+
+
+
+ {#if sidebar}
+ {@render sidebar()}
+ {:else}
+
+
+
+
+
+
+
+ {/if}
+
+
+ {@render children?.()}
+
+
diff --git a/web/src/lib/components/layouts/user-page-layout.svelte b/web/src/lib/components/layouts/user-page-layout.svelte
index 614b1377fb..fc2cdde111 100644
--- a/web/src/lib/components/layouts/user-page-layout.svelte
+++ b/web/src/lib/components/layouts/user-page-layout.svelte
@@ -1,11 +1,10 @@
-
-
-
+
-
-
-
-
-
diff --git a/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte b/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte
index 7d2e247bf3..a3d325f3bf 100644
--- a/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte
+++ b/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte
@@ -1,7 +1,5 @@
-
-
+
- {#if featureFlagsManager.value.search}
-
- {/if}
+{#if featureFlagsManager.value.search}
+
+{/if}
- {#if featureFlagsManager.value.map}
-
- {/if}
+{#if featureFlagsManager.value.map}
+
+{/if}
- {#if $preferences.people.enabled && $preferences.people.sidebarWeb}
-
- {/if}
+{#if $preferences.people.enabled && $preferences.people.sidebarWeb}
+
+{/if}
- {#if $preferences.sharedLinks.enabled && $preferences.sharedLinks.sidebarWeb}
-
- {/if}
+{#if $preferences.sharedLinks.enabled && $preferences.sharedLinks.sidebarWeb}
+
+{/if}
-
+
-
+
-
+
-
- {#snippet items()}
-
-
-
- {/snippet}
-
+
+ {#snippet items()}
+
+
+
+ {/snippet}
+
- {#if $preferences.tags.enabled && $preferences.tags.sidebarWeb}
-
- {/if}
+{#if $preferences.tags.enabled && $preferences.tags.sidebarWeb}
+
+{/if}
- {#if $preferences.folders.enabled && $preferences.folders.sidebarWeb}
-
- {/if}
+{#if $preferences.folders.enabled && $preferences.folders.sidebarWeb}
+
+{/if}
-
+
-
+
-
+
- {#if featureFlagsManager.value.trash}
-
- {/if}
-
-
-
+{#if featureFlagsManager.value.trash}
+
+{/if}
diff --git a/web/src/lib/components/utilities-page/utilities-menu.svelte b/web/src/lib/components/utilities-page/utilities-menu.svelte
deleted file mode 100644
index 8aad18b3a9..0000000000
--- a/web/src/lib/components/utilities-page/utilities-menu.svelte
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
{$t('organize_your_library')}
-
- {#each links as link (link.href)}
-
-
- {link.label}
-
- {/each}
-
-
-
-
{$t('download')}
-
-
-
diff --git a/web/src/lib/constants.ts b/web/src/lib/constants.ts
index 1cac17df91..50a8955a93 100644
--- a/web/src/lib/constants.ts
+++ b/web/src/lib/constants.ts
@@ -397,3 +397,5 @@ export enum ToggleVisibility {
}
export const assetViewerFadeDuration: number = 150;
+
+export const headerId = 'user-page-header';
diff --git a/web/src/routes/(user)/buy/+page.svelte b/web/src/routes/(user)/buy/+page.svelte
index 305b994730..b9b56ca602 100644
--- a/web/src/routes/(user)/buy/+page.svelte
+++ b/web/src/routes/(user)/buy/+page.svelte
@@ -1,28 +1,29 @@
-
-
-
+
+
+
{#if data.isActivated === false}
{/if}
@@ -41,5 +42,5 @@
/>
{/if}
-
+
diff --git a/web/src/routes/(user)/explore/+page.svelte b/web/src/routes/(user)/explore/+page.svelte
index 580d84e888..a6ff77d950 100644
--- a/web/src/routes/(user)/explore/+page.svelte
+++ b/web/src/routes/(user)/explore/+page.svelte
@@ -1,6 +1,7 @@
- {#if hasPeople}
-
- {/if}
-
- {#if places.length > 0}
-
+ {/if}
- {#if !hasPeople && places.length === 0}
-
- {/if}
+ {#if places.length > 0}
+
+
+
+ {#snippet children({ itemCount })}
+ {#each places.slice(0, itemCount) as item (item.data.id)}
+
+
+

+
+
+ {item.value}
+
+
+ {/each}
+ {/snippet}
+
+
+ {/if}
+
+ {#if !hasPeople && places.length === 0}
+
+ {/if}
+
diff --git a/web/src/routes/(user)/folders/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/folders/[[photos=photos]]/[[assetId=id]]/+page.svelte
index 43ea39ff55..40ddc14067 100644
--- a/web/src/routes/(user)/folders/[[photos=photos]]/[[assetId=id]]/+page.svelte
+++ b/web/src/routes/(user)/folders/[[photos=photos]]/[[assetId=id]]/+page.svelte
@@ -1,6 +1,6 @@
-
-
+
+
{#if data.partners.length > 0}
-
+
diff --git a/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte
index 25c054c08f..5d2b7b3651 100644
--- a/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte
+++ b/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte
@@ -1,12 +1,11 @@
-
- {#snippet buttons()}
- modalManager.show(ShortcutsModal, {})}
- />
- {/snippet}
-
+
+
+
+
-
+
diff --git a/web/src/routes/(user)/utilities/+page.svelte b/web/src/routes/(user)/utilities/+page.svelte
index 6713fe4a4b..0645276a8d 100644
--- a/web/src/routes/(user)/utilities/+page.svelte
+++ b/web/src/routes/(user)/utilities/+page.svelte
@@ -1,7 +1,27 @@
-
-
-
+
+
+
{$t('organize_your_library')}
+
+ {#each links as link (link.href)}
+
+
+ {link.label}
+
+ {/each}
-
+
+
+
{$t('download')}
+
+
+
+
diff --git a/web/src/routes/(user)/utilities/large-files/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/utilities/large-files/[[photos=photos]]/[[assetId=id]]/+page.svelte
index f668e6e970..dd965926cd 100644
--- a/web/src/routes/(user)/utilities/large-files/[[photos=photos]]/[[assetId=id]]/+page.svelte
+++ b/web/src/routes/(user)/utilities/large-files/[[photos=photos]]/[[assetId=id]]/+page.svelte
@@ -1,6 +1,7 @@
-
-
- {#if assets && data.assets.length > 0}
- {#each assets as asset (asset.id)}
-
- {/each}
- {:else}
-
- {$t('no_assets_to_show')}
-
- {/if}
-
+
+
+
+ {#if assets && data.assets.length > 0}
+ {#each assets as asset (asset.id)}
+
+ {/each}
+ {:else}
+
+ {$t('no_assets_to_show')}
+
+ {/if}
+
+
{#if $showAssetViewer}
diff --git a/web/src/routes/(user)/utilities/workflows/+page.svelte b/web/src/routes/(user)/utilities/workflows/+page.svelte
index 637858ac9c..2f28e6f9ce 100644
--- a/web/src/routes/(user)/utilities/workflows/+page.svelte
+++ b/web/src/routes/(user)/utilities/workflows/+page.svelte
@@ -1,8 +1,9 @@