Commit a046bd7

HPCesia <me@hpcesia.com>
2025-02-13 06:40:59
refactor: move global component to GlobalLayout
1 parent 7b54325
Changed files (2)
src/layouts/GlobalLayout.astro
@@ -1,7 +1,11 @@
 ---
-import { profileConfig, siteConfig } from '@/config';
+import { profileConfig, searchConfig, siteConfig } from '@/config';
 import '@/styles/global.css';
 import type { Favicon } from '@/types/config';
+import Navbar from '@components/Navbar.astro';
+import PageFooter from '@components/PageFooter.astro';
+import Search from '@components/Search.astro';
+import SideToolBar from '@components/SideToolBar.astro';
 import { defaultFavicons } from '@constants/icon';
 
 interface Props {
@@ -71,7 +75,15 @@ const favicons: Favicon[] =
     <slot name="head" />
   </head>
   <body class="bg-base-100 text-base-content flex min-h-screen flex-col">
-    <slot />
+    <SideToolBar />
+    <Navbar>
+      <slot name="header" />
+      <div id="body-wrap" class="w-full items-center md:px-4">
+        <slot />
+      </div>
+    </Navbar>
+    {searchConfig.enable && <Search />}
+    <PageFooter />
   </body>
 </html>
 
src/layouts/MainLayout.astro
@@ -1,9 +1,4 @@
 ---
-import { searchConfig } from '@/config';
-import Navbar from '@components/Navbar.astro';
-import PageFooter from '@components/PageFooter.astro';
-import Search from '@components/Search.astro';
-import SideToolBar from '@components/SideToolBar.astro';
 import GlobalLayout from './GlobalLayout.astro';
 
 interface Props {
@@ -16,27 +11,20 @@ const { title, description, lang } = Astro.props;
 
 <GlobalLayout title={title} description={description} lang={lang}>
   <slot slot="head" name="head" />
-  <SideToolBar />
-  <Navbar>
-    <slot name="header" />
-    <div id="body-wrap" class="w-full items-center md:px-4">
-      <!-- Main content -->
-      <main class="mx-auto flex max-w-(--breakpoint-xl) flex-col gap-4">
-        <slot name="header-content" />
-        <div class="flex gap-4">
-          <div id="main-content" class="my-4 w-full">
-            <slot />
-          </div>
-          <div id="aside-content" class="my-4 flex w-96 flex-col gap-4 max-xl:hidden">
-            <slot name="aside-fixed" />
-            <div class="sticky top-20 flex flex-col gap-4">
-              <slot name="aside-sticky" />
-            </div>
-          </div>
+  <slot slot="header" name="header" />
+  <!-- Main content -->
+  <main class="mx-auto flex max-w-(--breakpoint-xl) flex-col gap-4">
+    <slot name="header-content" />
+    <div class="flex gap-4">
+      <div id="main-content" class="my-4 w-full">
+        <slot />
+      </div>
+      <div id="aside-content" class="my-4 flex w-96 flex-col gap-4 max-xl:hidden">
+        <slot name="aside-fixed" />
+        <div class="sticky top-20 flex flex-col gap-4">
+          <slot name="aside-sticky" />
         </div>
-      </main>
+      </div>
     </div>
-  </Navbar>
-  {searchConfig.enable && <Search />}
-  <PageFooter />
+  </main>
 </GlobalLayout>