Skip to content

Commit 18a751a

Browse files
committed
next: reworked accounts page to use new layout components
1 parent eb5170f commit 18a751a

File tree

10 files changed

+62
-46
lines changed

10 files changed

+62
-46
lines changed
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
<script lang="ts">
2-
import type { Snippet } from "svelte";
2+
import type { Snippet } from 'svelte';
33
import type { HTMLAttributes } from 'svelte/elements';
44
5-
import { cn } from '$lib/utils';
6-
75
interface Props extends HTMLAttributes<HTMLDivElement> {
86
children: Snippet;
97
class?: string;
@@ -12,12 +10,6 @@
1210
let { children, class: className, ...props }: Props = $props();
1311
</script>
1412

15-
<div
16-
class={cn(
17-
"flex-1",
18-
className
19-
)}
20-
{...props}
21-
>
13+
<div class={['flex-1', className]} {...props}>
2214
{@render children()}
2315
</div>
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
<script lang="ts">
2-
import type { Snippet } from "svelte";
2+
import type { Snippet } from 'svelte';
33
import type { HTMLAttributes } from 'svelte/elements';
44
5-
import { cn } from '$lib/utils';
6-
75
interface Props extends HTMLAttributes<HTMLDivElement> {
86
children: Snippet;
97
class?: string;
@@ -12,12 +10,6 @@
1210
let { children, class: className, ...props }: Props = $props();
1311
</script>
1412

15-
<div
16-
class={cn(
17-
"flex flex-col space-y-8 lg:flex-row lg:space-y-0 lg:space-x-12",
18-
className
19-
)}
20-
{...props}
21-
>
13+
<div class={['flex flex-col space-y-8 lg:flex-row lg:space-y-0 lg:space-x-12', className]} {...props}>
2214
{@render children()}
2315
</div>
Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
<script lang="ts">
2-
import type { Snippet } from "svelte";
2+
import type { Snippet } from 'svelte';
33
import type { HTMLAttributes } from 'svelte/elements';
44
5-
import { cn } from '$lib/utils';
6-
75
interface Props extends HTMLAttributes<HTMLElement> {
86
children: Snippet;
97
width?: 'default' | 'narrow' | 'wide';
@@ -18,13 +16,6 @@
1816
};
1917
</script>
2018

21-
<aside
22-
class={cn(
23-
"w-full",
24-
widthClasses[width],
25-
className
26-
)}
27-
{...props}
28-
>
19+
<aside class={['w-full', widthClasses[width], className]} {...props}>
2920
{@render children()}
3021
</aside>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import NavContainer from './nav-container.svelte';
2+
import NavItem from './nav-item.svelte';
3+
4+
export {
5+
NavContainer as Container,
6+
//
7+
NavItem as Item,
8+
NavContainer,
9+
NavItem
10+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script lang="ts">
2+
import type { Snippet } from 'svelte';
3+
import type { HTMLAttributes } from 'svelte/elements';
4+
5+
interface Props extends HTMLAttributes<HTMLElement> {
6+
children: Snippet;
7+
}
8+
9+
let { children, class: className, ...props }: Props = $props();
10+
</script>
11+
12+
<nav class={['flex space-x-2 lg:flex-col lg:space-y-1 lg:space-x-0', className]} {...props}>
13+
{@render children()}
14+
</nav>

src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/navigation/nav-item.svelte

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,7 @@
1919
});
2020
</script>
2121

22-
<Button
23-
class={[!isActive && 'hover:underline', 'relative justify-start hover:bg-transparent', className]}
24-
data-sveltekit-noscroll
25-
{href}
26-
variant="ghost"
27-
>
22+
<Button class={[!isActive && 'hover:underline', 'relative justify-start hover:bg-transparent', className]} data-sveltekit-noscroll {href} variant="ghost">
2823
{#if isActive}
2924
<div class="bg-muted absolute inset-0 rounded-md" in:send={{ key: 'active-sidebar-tab' }} out:receive={{ key: 'active-sidebar-tab' }}></div>
3025
{/if}

src/Exceptionless.Web/ClientApp/src/lib/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { type ClassValue, clsx } from 'clsx';
22
import { twMerge } from 'tailwind-merge';
33

4+
// TODO: Convert to https://svelte.dev/docs/svelte/class#The-class:-directive
45
export function cn(...inputs: ClassValue[]) {
56
return twMerge(clsx(inputs));
67
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<script lang="ts">
2+
import type { HTMLAttributes } from 'svelte/elements';
3+
4+
import * as Navigation from '$lib/features/shared/components/navigation';
5+
6+
import type { NavigationItem } from '../../routes';
7+
8+
interface Props extends HTMLAttributes<HTMLElement> {
9+
routes: NavigationItem[];
10+
}
11+
12+
let { routes, ...props }: Props = $props();
13+
</script>
14+
15+
<Navigation.Container {...props}>
16+
{#each routes as route (route.href)}
17+
<Navigation.Item href={route.href} title={route.title} />
18+
{/each}
19+
</Navigation.Container>

src/Exceptionless.Web/ClientApp/src/routes/(app)/account/+layout.svelte

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
import * as Card from '$comp/ui/card';
33
import { Separator } from '$comp/ui/separator';
44
import { accessToken } from '$features/auth/index.svelte';
5+
import * as SplitLayout from '$features/shared/components/layouts/split-layout';
56
import { getMeQuery } from '$features/users/api.svelte';
67
78
import type { NavigationItemContext } from '../../routes';
89
9-
import SidebarNav from './(components)/sidebar-nav.svelte';
10+
import SidebarNav from '../(components)/sidebar-nav.svelte';
1011
import { routes } from './routes';
1112
1213
let { children } = $props();
@@ -19,21 +20,21 @@
1920
});
2021
</script>
2122

22-
<Card.Root
23-
><Card.Header>
23+
<Card.Root>
24+
<Card.Header>
2425
<Card.Title class="text-2xl" level={2}>Settings</Card.Title>
2526
<Card.Description>Manage your account settings and set e-mail preferences.</Card.Description>
2627
</Card.Header>
2728
<Separator class="mx-6 my-6 w-auto" />
2829

2930
<Card.Content>
30-
<div class="flex flex-col space-y-8 lg:flex-row lg:space-y-0 lg:space-x-12">
31-
<aside class="-mx-4 lg:w-1/5">
31+
<SplitLayout.Root>
32+
<SplitLayout.Sidebar>
3233
<SidebarNav routes={filteredRoutes} />
33-
</aside>
34-
<div class="flex-1">
34+
</SplitLayout.Sidebar>
35+
<SplitLayout.Content>
3536
{@render children()}
36-
</div>
37-
</div>
37+
</SplitLayout.Content>
38+
</SplitLayout.Root>
3839
</Card.Content>
3940
</Card.Root>

src/Exceptionless.Web/ClientApp/src/routes/(app)/event/[id]/+page.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import { watch } from 'runed';
1212
import { toast } from 'svelte-sonner';
1313
14+
// TODO: Have this happen automatically when the organization changes.
1415
watch(
1516
() => organization.current,
1617
() => {

0 commit comments

Comments
 (0)