+layout.svelte 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <script>
  2. import '../app.css';
  3. import favicon from '#lib/assets/favicon.svg';
  4. import { page } from '$app/state';
  5. let { children } = $props();
  6. const isHome = $derived(page.url.pathname === '/');
  7. const isProjects = $derived(page.url.pathname === '/projects');
  8. const isGalleryMap = $derived(page.url.pathname === '/gallery');
  9. const isGallery = $derived(isGalleryMap || page.url.pathname.startsWith('/gallery/'));
  10. const isResume = $derived(page.url.pathname === '/resume');
  11. </script>
  12. <svelte:head>
  13. <link rel="icon" href={favicon} />
  14. <meta name="theme-color" content="#0A0A0A" />
  15. <meta name="color-scheme" content="dark" />
  16. </svelte:head>
  17. <a class="skip" href="#main">Skip to content</a>
  18. <div class="shell">
  19. <aside class="rail">
  20. <div class="rail-top">
  21. <div class="identity">
  22. {#if isHome}
  23. <h1><a class="wordmark" href="/">Lee Morgan</a></h1>
  24. {:else}
  25. <p class="site-name"><a class="wordmark" href="/">Lee Morgan</a></p>
  26. {/if}
  27. <p class="role">Web developer &amp; systems administrator</p>
  28. </div>
  29. <p class="status">
  30. <span class="status-dot" aria-hidden="true"></span>
  31. Available for work
  32. </p>
  33. <p class="place">Murrells Inlet, SC</p>
  34. <nav aria-label="Site">
  35. <ul class="menu">
  36. <li>
  37. <a href="/projects" aria-current={isProjects ? 'page' : undefined}>Projects</a>
  38. </li>
  39. <li>
  40. <a href="/gallery" aria-current={isGallery ? 'page' : undefined}>Gallery</a>
  41. </li>
  42. <li><a href="/">Currency</a></li>
  43. <li>
  44. <a href="/resume" data-sveltekit-reload aria-current={isResume ? 'page' : undefined}
  45. >Resume/CV</a
  46. >
  47. </li>
  48. <li><a href="/">Git</a></li>
  49. <li><a href="/">LinkedIn</a></li>
  50. </ul>
  51. </nav>
  52. <a class="btn" href="mailto:lee@leemorgan.dev">Get in touch</a>
  53. </div>
  54. <div class="rail-bottom">
  55. <a href="mailto:lee@leemorgan.dev">lee@leemorgan.dev</a>
  56. </div>
  57. </aside>
  58. <div class="page" class:page-flush={isGalleryMap || isResume}>
  59. <main id="main" class="site-main">
  60. {@render children()}
  61. </main>
  62. </div>
  63. </div>