diff --git a/src/lib/components/ComponentIndex/Card.svelte b/src/lib/components/ComponentIndex/Card.svelte
index 151d10c..baecdc7 100644
--- a/src/lib/components/ComponentIndex/Card.svelte
+++ b/src/lib/components/ComponentIndex/Card.svelte
@@ -1,5 +1,7 @@
diff --git a/src/routes/components/index.svelte b/src/routes/components/index.svelte
index 9935ed3..823cdd4 100644
--- a/src/routes/components/index.svelte
+++ b/src/routes/components/index.svelte
@@ -7,16 +7,15 @@
import Button from '$components/ComponentIndex/ArrowButton.svelte';
import components from './components.json';
import { compare, selectSortItems } from '$lib/utils/sort';
+ import { extractUnique } from '$lib/utils/extractUnique';
import Select from '$components/Select.svelte';
let searchValue;
- const tags = Array.from(new Set(components.map((item) => item.tags).flat()));
- const tagItems = tags.map((t) => ({ label: t, value: t }));
+ const tagItems = extractUnique(components, 'tags');
let filterTag = [];
let selectedTags = null;
- const allCategories = Array.from(new Set(components.map((item) => item.category).flat()));
const categoryItems = [
{ label: 'All', value: null },
- ...allCategories.filter((cat) => cat !== '').map((cat) => ({ label: cat, value: cat }))
+ ...extractUnique(components, 'category').filter((cat) => cat.value !== '')
];
let selectedCategory = null;
let filterCategory = null;
@@ -45,7 +44,7 @@
return true;
})
.sort(compare(sorting));
- $: categories = Array.from(new Set(dataToDisplay.map((item) => item.category)));
+ $: categories = extractUnique(dataToDisplay, 'category');
$: filterTag = selectedTags?.map((obj) => obj.value) || [];
@@ -101,8 +100,8 @@
{#each categories as category}
-
- {#each dataToDisplay.filter((d) => d.category === category) as data}
+
+ {#each dataToDisplay.filter((d) => d.category === category.value) as data}
{/each}
diff --git a/src/routes/templates/index.svelte b/src/routes/templates/index.svelte
index d3eed4a..ab12f58 100644
--- a/src/routes/templates/index.svelte
+++ b/src/routes/templates/index.svelte
@@ -3,21 +3,17 @@
import List from '$lib/components/ComponentIndex/CardList.svelte';
import components from './templates.json';
import { compare, selectSortItems } from '$lib/utils/sort';
+ import { extractUnique } from '$lib/utils/extractUnique';
import Select from '$lib/components/Select.svelte';
import SearchLayout from '$lib/layouts/SearchLayout.svelte';
let searchValue;
- const tags = Array.from(new Set(components.map((item) => item.tags).flat()));
- const tagItems = tags.map((t) => ({ label: t, value: t }));
+ const tagItems = extractUnique(components, 'tags');
let filterTag = [];
let selectedTags = null;
- const allCategories = Array.from(new Set(components.map((item) => item.category).flat()));
- const categoryItems = [
- { label: 'all', value: null },
- ...allCategories.map((cat) => ({ label: cat, value: cat }))
- ];
+ const categoryItems = [{ label: 'all', value: null }, ...extractUnique(components, 'category')];
let selectedCategory = null;
let filterCategory = null;
@@ -49,7 +45,7 @@
})
.sort(compare(sorting));
- $: categories = Array.from(new Set(dataToDisplay.map((item) => item.category)));
+ $: categories = extractUnique(dataToDisplay, 'category');
$: filterTag = selectedTags?.map((obj) => obj.value) || [];
@@ -92,8 +88,8 @@
{#each categories as category}
-
- {#each dataToDisplay.filter((d) => d.category === category) as data}
+
+ {#each dataToDisplay.filter((d) => d.category === category.value) as data}
{/each}
diff --git a/src/routes/tooling/index.svelte b/src/routes/tooling/index.svelte
index 8c6ec0b..ef4a535 100644
--- a/src/routes/tooling/index.svelte
+++ b/src/routes/tooling/index.svelte
@@ -4,20 +4,17 @@
import SearchLayout from '$layouts/SearchLayout.svelte';
import tools from './tools.json';
import Select from '$lib/components/Select.svelte';
+ import { extractUnique } from '$lib/utils/extractUnique';
import { compare, selectSortItems } from '$lib/utils/sort';
+ import components from '../templates/templates.json';
let searchValue;
- const tags = Array.from(new Set(tools.map((item) => item.tags).flat()));
- const tagItems = tags.map((t) => ({ label: t, value: t }));
+ const tagItems = extractUnique(tools, 'tags');
let filterTag = [];
let selectedTags = null;
- const allCategories = Array.from(new Set(tools.map((item) => item.category).flat()));
- const categoryItems = [
- { label: 'all', value: null },
- ...allCategories.map((cat) => ({ label: cat, value: cat }))
- ];
+ const categoryItems = [{ label: 'all', value: null }, ...extractUnique(components, 'category')];
let selectedCategory = null;
let filterCategory = null;
@@ -48,7 +45,7 @@
})
.sort(compare(sorting));
- $: categories = Array.from(new Set(dataToDisplay.map((item) => item.category)));
+ $: categories = extractUnique(dataToDisplay, 'category');
$: filterTag = selectedTags?.map((obj) => obj.value) || [];
@@ -90,8 +87,8 @@
{#each categories as category}
-
- {#each dataToDisplay.filter((d) => d.category === category) as data}
+
+ {#each dataToDisplay.filter((d) => d.category === category.value) as data}
{/each}