Files
immich/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte

153 lines
4.7 KiB
Svelte
Raw Normal View History

<script lang="ts">
2025-08-07 05:00:42 -07:00
import { resolve } from '$app/paths';
2025-05-14 15:11:31 -04:00
import BottomInfo from '$lib/components/shared-components/side-bar/bottom-info.svelte';
import RecentAlbums from '$lib/components/shared-components/side-bar/recent-albums.svelte';
import Sidebar from '$lib/components/sidebar/sidebar.svelte';
import { recentAlbumsDropdown } from '$lib/stores/preferences.store';
2023-10-25 09:48:25 -04:00
import { featureFlags } from '$lib/stores/server-config.store';
2025-05-14 15:11:31 -04:00
import { preferences } from '$lib/stores/user.store';
2023-10-25 09:48:25 -04:00
import {
mdiAccount,
mdiAccountMultiple,
mdiAccountMultipleOutline,
2025-05-14 15:11:31 -04:00
mdiAccountOutline,
mdiArchiveArrowDown,
2023-10-25 09:48:25 -04:00
mdiArchiveArrowDownOutline,
2025-05-14 15:11:31 -04:00
mdiFolderOutline,
mdiHeart,
mdiHeartOutline,
2023-10-25 09:48:25 -04:00
mdiImageAlbum,
mdiImageMultiple,
mdiImageMultipleOutline,
2025-05-14 15:11:31 -04:00
mdiLink,
mdiLock,
mdiLockOutline,
2023-10-25 09:48:25 -04:00
mdiMagnify,
mdiMap,
mdiMapOutline,
2025-05-14 15:11:31 -04:00
mdiTagMultipleOutline,
2024-05-23 12:57:25 -05:00
mdiToolbox,
mdiToolboxOutline,
2025-05-14 15:11:31 -04:00
mdiTrashCan,
mdiTrashCanOutline,
2023-10-25 09:48:25 -04:00
} from '@mdi/js';
feat(web): translations (#9854) * First test * Added translation using Weblate (French) * Translated using Weblate (German) Currently translated at 100.0% (4 of 4 strings) Translation: immich/web Translate-URL: http://familie-mach.net/projects/immich/web/de/ * Translated using Weblate (French) Currently translated at 100.0% (4 of 4 strings) Translation: immich/web Translate-URL: http://familie-mach.net/projects/immich/web/fr/ * Further testing * Further testing * Translated using Weblate (German) Currently translated at 100.0% (18 of 18 strings) Translation: immich/web Translate-URL: http://familie-mach.net/projects/immich/web/de/ * Further work * Update string file. * More strings * Automatically changed strings * Add automatically translated german file for testing purposes * Fix merge-face-selector component * Make server stats strings uppercase * Fix uppercase string * Fix some strings in jobs-panel * Fix lower and uppercase strings. Add a few additional string. Fix a few unnecessary replacements * Update german test translations * Fix typo in locales file * Change string keys * Extract more strings * Extract and replace some more strings * Update testtranslationfile * Change translation keys * Fix rebase errors * Fix one more rebase error * Remove german translation file * Co-authored-by: Daniel Dietzler <danieldietzler@users.noreply.github.com> * chore: clean up translations * chore: add new line * fix formatting * chore: fixes * fix: loading and tests --------- Co-authored-by: root <root@Blacki> Co-authored-by: admin <admin@example.com> Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2024-06-04 21:53:00 +02:00
import { t } from 'svelte-i18n';
import { fly } from 'svelte/transition';
2025-05-14 15:11:31 -04:00
import SideBarLink from './side-bar-link.svelte';
let isArchiveSelected: boolean = $state(false);
let isFavoritesSelected: boolean = $state(false);
let isMapSelected: boolean = $state(false);
let isPeopleSelected: boolean = $state(false);
let isPhotosSelected: boolean = $state(false);
let isSharingSelected: boolean = $state(false);
let isTrashSelected: boolean = $state(false);
let isUtilitiesSelected: boolean = $state(false);
let isLockedFolderSelected: boolean = $state(false);
</script>
2025-05-14 15:11:31 -04:00
<Sidebar ariaLabel={$t('primary')}>
<SideBarLink
title={$t('photos')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/photos')}
bind:isSelected={isPhotosSelected}
icon={isPhotosSelected ? mdiImageMultiple : mdiImageMultipleOutline}
></SideBarLink>
{#if $featureFlags.search}
2025-08-07 05:00:42 -07:00
<SideBarLink title={$t('explore')} href={resolve('/(user)/explore')} icon={mdiMagnify} />
{/if}
{#if $featureFlags.map}
<SideBarLink
title={$t('map')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/map')}
bind:isSelected={isMapSelected}
icon={isMapSelected ? mdiMap : mdiMapOutline}
/>
{/if}
{#if $preferences.people.enabled && $preferences.people.sidebarWeb}
<SideBarLink
title={$t('people')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/people')}
bind:isSelected={isPeopleSelected}
icon={isPeopleSelected ? mdiAccount : mdiAccountOutline}
/>
{/if}
{#if $preferences.sharedLinks.enabled && $preferences.sharedLinks.sidebarWeb}
2025-08-07 05:00:42 -07:00
<SideBarLink title={$t('shared_links')} href={resolve('/(user)/shared-links')} icon={mdiLink} />
{/if}
<SideBarLink
title={$t('sharing')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/sharing')}
icon={isSharingSelected ? mdiAccountMultiple : mdiAccountMultipleOutline}
bind:isSelected={isSharingSelected}
></SideBarLink>
<p class="text-xs p-6 dark:text-immich-dark-fg uppercase">{$t('library')}</p>
<SideBarLink
title={$t('favorites')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/favorites')}
icon={isFavoritesSelected ? mdiHeart : mdiHeartOutline}
bind:isSelected={isFavoritesSelected}
></SideBarLink>
<SideBarLink
title={$t('albums')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/albums')}
icon={mdiImageAlbum}
flippedLogo
bind:dropdownOpen={$recentAlbumsDropdown}
>
{#snippet dropDownContent()}
<span in:fly={{ y: -20 }} class="hidden md:block">
<RecentAlbums />
</span>
{/snippet}
</SideBarLink>
{#if $preferences.tags.enabled && $preferences.tags.sidebarWeb}
2025-08-07 05:00:42 -07:00
<SideBarLink title={$t('tags')} href={resolve('/(user)/tags')} icon={mdiTagMultipleOutline} flippedLogo />
{/if}
{#if $preferences.folders.enabled && $preferences.folders.sidebarWeb}
2025-08-07 05:00:42 -07:00
<SideBarLink title={$t('folders')} href={resolve('/(user)/folders')} icon={mdiFolderOutline} flippedLogo />
{/if}
<SideBarLink
title={$t('utilities')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/utilities')}
bind:isSelected={isUtilitiesSelected}
icon={isUtilitiesSelected ? mdiToolbox : mdiToolboxOutline}
></SideBarLink>
<SideBarLink
title={$t('archive')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/archive')}
bind:isSelected={isArchiveSelected}
icon={isArchiveSelected ? mdiArchiveArrowDown : mdiArchiveArrowDownOutline}
></SideBarLink>
<SideBarLink
title={$t('locked_folder')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/locked')}
bind:isSelected={isLockedFolderSelected}
icon={isLockedFolderSelected ? mdiLock : mdiLockOutline}
></SideBarLink>
{#if $featureFlags.trash}
<SideBarLink
title={$t('trash')}
2025-08-07 05:00:42 -07:00
href={resolve('/(user)/trash')}
bind:isSelected={isTrashSelected}
icon={isTrashSelected ? mdiTrashCan : mdiTrashCanOutline}
></SideBarLink>
{/if}
2024-07-18 10:56:27 -05:00
<BottomInfo />
2025-05-14 15:11:31 -04:00
</Sidebar>