|
1 | 1 | <script lang="ts"> |
2 | 2 | import PanelLeft from '@lucide/svelte/icons/panel-left'; |
| 3 | + import { goto } from '$app/navigation'; |
3 | 4 | import { PUBLIC_DISCORD_INVITE_URL, PUBLIC_GITHUB_PROJECT_URL } from '$env/static/public'; |
4 | 5 | import LightSwitch from '$lib/components/LightSwitch.svelte'; |
| 6 | + import DiscordIcon from '$lib/components/svg/DiscordIcon.svelte'; |
| 7 | + import GithubIcon from '$lib/components/svg/GithubIcon.svelte'; |
5 | 8 | import * as Breadcrumb from '$lib/components/ui/breadcrumb'; |
6 | 9 | import { Button } from '$lib/components/ui/button'; |
7 | 10 | import * as DropdownMenu from '$lib/components/ui/dropdown-menu'; |
8 | 11 | import { useSidebar } from '$lib/components/ui/sidebar'; |
9 | 12 | import { BreadCrumbStore } from '$lib/stores/BreadCrumbStore'; |
10 | 13 | import { UserStore } from '$lib/stores/UserStore'; |
| 14 | + import { cn } from '$lib/utils'; |
11 | 15 |
|
12 | 16 | let sidebar = useSidebar(); |
13 | 17 | </script> |
14 | 18 |
|
15 | | -{#snippet item(text: string, href: string)} |
| 19 | +{#snippet dropdownItem(name: string, url: string)} |
| 20 | + <DropdownMenu.Item class="cursor-pointer" onclick={() => goto(url)}> |
| 21 | + {name} |
| 22 | + </DropdownMenu.Item> |
| 23 | +{/snippet} |
| 24 | +{#snippet headerItem(text: string, href: string)} |
16 | 25 | <Button {href}>{text}</Button> |
17 | 26 | {/snippet} |
18 | 27 |
|
19 | 28 | <header |
20 | 29 | class="border-border/40 bg-background/95 supports-backdrop-filter:bg-background/60 sticky top-0 z-50 flex h-12 w-full flex-row items-center border-b px-2 backdrop-blur-sm" |
21 | 30 | > |
22 | | - <Button |
23 | | - variant="ghost" |
24 | | - class="size-8" |
25 | | - onclick={() => { |
26 | | - sidebar.toggle(); |
27 | | - }} |
28 | | - > |
| 31 | + <Button variant="ghost" class="size-8" onclick={() => sidebar.toggle()}> |
29 | 32 | <PanelLeft size={24} class="m-0 text-gray-600 dark:text-gray-300" /> |
30 | 33 | </Button> |
31 | 34 | {#if $BreadCrumbStore.length > 0} |
|
49 | 52 | </Breadcrumb.Root> |
50 | 53 | {/if} |
51 | 54 | <div |
52 | | - class={`flex flex-1 flex-row items-center justify-between space-x-2 py-2 ${$UserStore.self ? 'pr-2' : 'px-2'}`} |
| 55 | + class={cn( |
| 56 | + 'flex flex-1 flex-row items-center justify-between space-x-2 py-2', |
| 57 | + $UserStore.self !== null ? 'pr-2' : 'px-2' |
| 58 | + )} |
53 | 59 | > |
54 | 60 | <div class="flex-1"></div> |
55 | 61 |
|
|
69 | 75 | </DropdownMenu.Trigger> |
70 | 76 | <DropdownMenu.Content> |
71 | 77 | <DropdownMenu.Group> |
72 | | - <DropdownMenu.Item>Profile</DropdownMenu.Item> |
73 | | - <DropdownMenu.Item>Settings</DropdownMenu.Item> |
74 | | - <DropdownMenu.Item>Logout</DropdownMenu.Item> |
| 78 | + {@render dropdownItem('Profile', '/profile')} |
| 79 | + {@render dropdownItem('Settings', '/settings/account')} |
| 80 | + {@render dropdownItem('Logout', '/logout')} |
75 | 81 | </DropdownMenu.Group> |
76 | 82 | </DropdownMenu.Content> |
77 | 83 | </DropdownMenu.Root> |
78 | 84 | {:else} |
79 | | - {@render item('Login', '/login')} |
80 | | - {@render item('Sign Up', '/signup')} |
| 85 | + {@render headerItem('Login', '/login')} |
| 86 | + {@render headerItem('Sign Up', '/signup')} |
81 | 87 | <div class="hidden sm:flex sm:flex-row"> |
82 | 88 | <a href={PUBLIC_GITHUB_PROJECT_URL} class="p-2" aria-label="GitHub"> |
83 | | - <svg |
84 | | - role="img" |
85 | | - viewBox="0 0 24 24" |
86 | | - xmlns="http://www.w3.org/2000/svg" |
87 | | - class="size-6 fill-black dark:fill-white" |
88 | | - ><title>GitHub</title><path |
89 | | - d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" |
90 | | - /></svg |
91 | | - > |
| 89 | + <GithubIcon class="size-6 fill-black dark:fill-white" /> |
92 | 90 | </a> |
93 | 91 | <a href={PUBLIC_DISCORD_INVITE_URL} class="p-2" aria-label="Discord"> |
94 | | - <svg |
95 | | - role="img" |
96 | | - viewBox="0 0 24 24" |
97 | | - xmlns="http://www.w3.org/2000/svg" |
98 | | - class="size-6 fill-black dark:fill-white" |
99 | | - ><title>Discord</title><path |
100 | | - d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z" |
101 | | - /></svg |
102 | | - > |
| 92 | + <DiscordIcon class="size-6 fill-black dark:fill-white" /> |
103 | 93 | </a> |
104 | 94 | </div> |
105 | 95 | {/if} |
|
0 commit comments