Skip to content

Commit b8c32b9

Browse files
committed
Added settings and project list to the sidebar.
1 parent 1ff0db8 commit b8c32b9

File tree

1 file changed

+41
-1
lines changed
  • src/Exceptionless.Web/ClientApp/src/routes/(app)/(components)/layouts

1 file changed

+41
-1
lines changed

src/Exceptionless.Web/ClientApp/src/routes/(app)/(components)/layouts/sidebar.svelte

+41-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
import type { ComponentProps, Snippet } from 'svelte';
33
44
import { page } from '$app/state';
5+
import * as Collapsible from '$comp/ui/collapsible';
56
import * as Sidebar from '$comp/ui/sidebar';
67
import { useSidebar } from '$comp/ui/sidebar';
8+
import ChevronRight from '@lucide/svelte/icons/chevron-right';
9+
import Settings from '@lucide/svelte/icons/settings-2';
710
811
import type { NavigationItem } from '../../../routes.svelte';
912
@@ -14,7 +17,9 @@
1417
};
1518
1619
let { footer, header, routes, ...props }: Props = $props();
17-
const dashboardRoutes = routes.filter((route) => route.group === 'Dashboards');
20+
const dashboardRoutes = $derived(routes.filter((route) => route.group === 'Dashboards'));
21+
const settingsRoutes = $derived(routes.filter((route) => route.group === 'Settings'));
22+
const settingsIsActive = $derived(settingsRoutes.some((route) => route.href === page.url.pathname));
1823
1924
const sidebar = useSidebar();
2025
@@ -49,6 +54,41 @@
4954
{/each}
5055
</Sidebar.Menu>
5156
</Sidebar.Group>
57+
58+
<Sidebar.Group>
59+
<Sidebar.Menu>
60+
<Collapsible.Root open={settingsIsActive} class="group/collapsible">
61+
{#snippet child({ props })}
62+
<Sidebar.MenuItem {...props}>
63+
<Collapsible.Trigger>
64+
{#snippet child({ props })}
65+
<Sidebar.MenuButton {...props}>
66+
<Settings />
67+
<span>Settings</span>
68+
<ChevronRight class="ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" />
69+
</Sidebar.MenuButton>
70+
{/snippet}
71+
</Collapsible.Trigger>
72+
<Collapsible.Content>
73+
<Sidebar.MenuSub>
74+
{#each settingsRoutes as subItem (subItem.href)}
75+
<Sidebar.MenuSubItem>
76+
<Sidebar.MenuSubButton isActive={subItem.href === page.url.pathname}>
77+
{#snippet child({ props })}
78+
<a href={subItem.href} title={subItem.title} onclick={onMenuClick} {...props}>
79+
<span>{subItem.title}</span>
80+
</a>
81+
{/snippet}
82+
</Sidebar.MenuSubButton>
83+
</Sidebar.MenuSubItem>
84+
{/each}
85+
</Sidebar.MenuSub>
86+
</Collapsible.Content>
87+
</Sidebar.MenuItem>
88+
{/snippet}
89+
</Collapsible.Root>
90+
</Sidebar.Menu>
91+
</Sidebar.Group>
5292
</Sidebar.Content>
5393
<Sidebar.Rail />
5494
<Sidebar.Footer>

0 commit comments

Comments
 (0)