From 26f23f7e5b7d9f9de02152cdb5757f91b7ebc425 Mon Sep 17 00:00:00 2001 From: pheralb Date: Thu, 4 Sep 2025 10:45:56 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20extension=20page,=20create=20?= =?UTF-8?q?extension=20component=20for=20displaying=20items=20&=20add=20se?= =?UTF-8?q?arch=20functionality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/extension.svelte | 67 +++++++++++++++ src/routes/extensions/+page.svelte | 127 +++++++++++++++++++++++++++++ src/routes/extensions/+page.ts | 22 +++++ 3 files changed, 216 insertions(+) create mode 100644 src/components/extension.svelte create mode 100644 src/routes/extensions/+page.svelte create mode 100644 src/routes/extensions/+page.ts diff --git a/src/components/extension.svelte b/src/components/extension.svelte new file mode 100644 index 0000000..ec329fb --- /dev/null +++ b/src/components/extension.svelte @@ -0,0 +1,67 @@ + + +
+
+ +

{data.name}

+

+ {data.description} +

+
+ +
diff --git a/src/routes/extensions/+page.svelte b/src/routes/extensions/+page.svelte new file mode 100644 index 0000000..7d84dc8 --- /dev/null +++ b/src/routes/extensions/+page.svelte @@ -0,0 +1,127 @@ + + + + Extensions - Svgl + + + + + +
+ +

Extensions

+
+
+
+

+ Extensions +

+
+

+ Integrate SVGL with your favorite tools and apps to streamline your + workflow. Created by the community. +

+ +
+
+ +
+ +
+ + {#each filteredExtensions as extension (extension.id)} + + {/each} + +
+
diff --git a/src/routes/extensions/+page.ts b/src/routes/extensions/+page.ts new file mode 100644 index 0000000..a78a65d --- /dev/null +++ b/src/routes/extensions/+page.ts @@ -0,0 +1,22 @@ +import type { Load } from "@sveltejs/kit"; + +import { extensionsData } from "@/data"; +import { searchExtensionsWithFuse } from "@/utils/searchWithFuse"; + +export const load: Load = ({ url }) => { + const searchParam = url.searchParams.get("search") || ""; + let filteredExtensions = [...extensionsData]; + + if (searchParam) { + const fuseSearch = searchExtensionsWithFuse(extensionsData); + filteredExtensions = fuseSearch + .search(searchParam) + .map((result) => result.item); + } + + return { + searchTerm: searchParam, + initialExtensions: filteredExtensions, + allExtensions: extensionsData, + }; +};