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

143 lines
4.4 KiB
Svelte
Raw Normal View History

<script lang="ts">
import { sidebarSettings } from '$lib/stores/preferences.store';
2023-10-25 09:48:25 -04:00
import { featureFlags } from '$lib/stores/server-config.store';
import {
mdiAccount,
mdiAccountOutline,
2023-10-25 09:48:25 -04:00
mdiAccountMultiple,
mdiAccountMultipleOutline,
mdiArchiveArrowDown,
2023-10-25 09:48:25 -04:00
mdiArchiveArrowDownOutline,
mdiHeart,
mdiHeartOutline,
2023-10-25 09:48:25 -04:00
mdiImageAlbum,
mdiImageMultiple,
mdiImageMultipleOutline,
mdiMagnify,
mdiMap,
mdiMapOutline,
mdiTrashCan,
2023-10-25 09:48:25 -04:00
mdiTrashCanOutline,
2024-05-23 12:57:25 -05:00
mdiToolbox,
mdiToolboxOutline,
2023-10-25 09:48:25 -04:00
} from '@mdi/js';
import StatusBox from '../status-box.svelte';
import SideBarSection from './side-bar-section.svelte';
import SideBarLink from './side-bar-link.svelte';
import MoreInformationAssets from '$lib/components/shared-components/side-bar/more-information-assets.svelte';
import MoreInformationAlbums from '$lib/components/shared-components/side-bar/more-information-albums.svelte';
let isArchiveSelected: boolean;
let isFavoritesSelected: boolean;
let isMapSelected: boolean;
let isPeopleSelected: boolean;
let isPhotosSelected: boolean;
let isSharingSelected: boolean;
let isTrashSelected: boolean;
2024-05-23 12:57:25 -05:00
let isUtilitiesSelected: boolean;
</script>
<SideBarSection>
<nav aria-label="Primary">
<SideBarLink
title="Photos"
routeId="/(user)/photos"
bind:isSelected={isPhotosSelected}
2023-10-25 09:48:25 -04:00
icon={isPhotosSelected ? mdiImageMultiple : mdiImageMultipleOutline}
>
<svelte:fragment slot="moreInformation">
<MoreInformationAssets assetStats={{ isArchived: false }} />
</svelte:fragment>
</SideBarLink>
{#if $featureFlags.search}
<SideBarLink title="Explore" routeId="/(user)/explore" icon={mdiMagnify} />
{/if}
{#if $featureFlags.map}
<SideBarLink
title="Map"
routeId="/(user)/map"
bind:isSelected={isMapSelected}
icon={isMapSelected ? mdiMap : mdiMapOutline}
/>
{/if}
{#if $sidebarSettings.people}
<SideBarLink
title="People"
routeId="/(user)/people"
bind:isSelected={isPeopleSelected}
icon={isPeopleSelected ? mdiAccount : mdiAccountOutline}
/>
{/if}
{#if $sidebarSettings.sharing}
<SideBarLink
title="Sharing"
routeId="/(user)/sharing"
icon={isSharingSelected ? mdiAccountMultiple : mdiAccountMultipleOutline}
bind:isSelected={isSharingSelected}
>
<svelte:fragment slot="moreInformation">
<MoreInformationAlbums albumCountType="shared" />
</svelte:fragment>
</SideBarLink>
{/if}
<div class="text-xs transition-all duration-200 dark:text-immich-dark-fg">
<p class="hidden p-6 group-hover:sm:block md:block">LIBRARY</p>
<hr class="mx-4 mb-[31px] mt-8 block group-hover:sm:hidden md:hidden" />
</div>
<SideBarLink
title="Favorites"
routeId="/(user)/favorites"
icon={isFavoritesSelected ? mdiHeart : mdiHeartOutline}
bind:isSelected={isFavoritesSelected}
>
<svelte:fragment slot="moreInformation">
<MoreInformationAssets assetStats={{ isFavorite: true }} />
</svelte:fragment>
</SideBarLink>
<SideBarLink title="Albums" routeId="/(user)/albums" icon={mdiImageAlbum} flippedLogo>
<svelte:fragment slot="moreInformation">
<MoreInformationAlbums albumCountType="owned" />
</svelte:fragment>
</SideBarLink>
2024-05-23 12:57:25 -05:00
<SideBarLink
title="Utilities"
routeId="/(user)/utilities"
bind:isSelected={isUtilitiesSelected}
icon={isUtilitiesSelected ? mdiToolbox : mdiToolboxOutline}
></SideBarLink>
<SideBarLink
title="Archive"
routeId="/(user)/archive"
bind:isSelected={isArchiveSelected}
icon={isArchiveSelected ? mdiArchiveArrowDown : mdiArchiveArrowDownOutline}
>
<svelte:fragment slot="moreInformation">
<MoreInformationAssets assetStats={{ isArchived: true }} />
</svelte:fragment>
</SideBarLink>
{#if $featureFlags.trash}
<SideBarLink
title="Trash"
routeId="/(user)/trash"
bind:isSelected={isTrashSelected}
icon={isTrashSelected ? mdiTrashCan : mdiTrashCanOutline}
>
<svelte:fragment slot="moreInformation">
<MoreInformationAssets assetStats={{ isTrashed: true }} />
</svelte:fragment>
</SideBarLink>
{/if}
</nav>
<!-- Status Box -->
<div class="mb-6 mt-auto">
<StatusBox />
</div>
</SideBarSection>