diff --git a/src/components/islands/loading-component.jsx b/src/components/islands/loading-component.jsx
new file mode 100644
index 0000000..53620a0
--- /dev/null
+++ b/src/components/islands/loading-component.jsx
@@ -0,0 +1,26 @@
+
+
+export default function LoadingComponent() {
+
+
+ return (
+
+
+
+
+
+ {/* List of recent searches or placeholders */}
+
+ {[...Array(5)].map((_, i) => (
+ -
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/src/components/islands/recent-searches.jsx b/src/components/islands/recent-searches.jsx
index fcb4006..7a98c0e 100644
--- a/src/components/islands/recent-searches.jsx
+++ b/src/components/islands/recent-searches.jsx
@@ -1,32 +1,35 @@
-import { useEffect } from "react";
-import { useStore } from "@nanostores/react";
+import { useEffect, useState } from 'react';
+import { useStore } from '@nanostores/react';
import { $recentSearches } from "../../lib/stores/search.js";
-/**
- * Recent Searches Component - An Island that displays a user's last 5 searches
- *
- * @todo implement a default list instead of `null` when no `$recentSearch` is found
- * @todo implement loading component to avoid flickering UI
- */
export default function RecentSearches() {
const recentSearches = useStore($recentSearches);
-
+
useEffect(() => {
- $recentSearches.set({...JSON.parse(localStorage.getItem("jargons.dev:recent_searches"))})
+ const savedSearches = JSON.parse(localStorage.getItem("jargons.dev:recent_searches"));
+ if (savedSearches) {
+ $recentSearches.set(savedSearches);
+ }
+
+ const loader = document.querySelector(".loading");
+ if (loader) loader.remove();
+
}, []);
+
+
return Object.values(recentSearches).length ? (
+
+
) : null;
-}
\ No newline at end of file
+}
diff --git a/src/components/recent-searches.astro b/src/components/recent-searches.astro
new file mode 100644
index 0000000..482d473
--- /dev/null
+++ b/src/components/recent-searches.astro
@@ -0,0 +1,7 @@
+---
+import RecentSearch from "./islands/recent-searches";
+import LoadingComponent from "./islands/loading-component";
+---
+
+
+
\ No newline at end of file
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 89ec8ba..e37f29d 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -2,37 +2,39 @@
import { getCollection } from "astro:content";
import BaseLayout from "../layouts/base.astro";
import Search from "../components/islands/search.jsx";
-import RecentSearches from "../components/islands/recent-searches.jsx";
-
+import RecentSearches from "../components/recent-searches.astro";
const dictionary = await getCollection("dictionary");
---
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-