diff --git a/components/project/project-filters-bar.tsx b/components/project/project-filters-bar.tsx
index e76b439..8f25e06 100644
--- a/components/project/project-filters-bar.tsx
+++ b/components/project/project-filters-bar.tsx
@@ -13,6 +13,7 @@ import {
} from "@/state/useProjectFiltersState"
import { useDebounce } from "react-use"
+import { ProjectStatusType } from "@/lib/types"
import { cn, queryStringToObject } from "@/lib/utils"
import { Icons } from "../icons"
@@ -58,12 +59,33 @@ export const ThemesButtonMapping: Record<
},
}
+export const ThemesStatusMapping: Record<
+ ProjectStatusType,
+ {
+ label: string
+ icon: any
+ }
+> = {
+ active: {
+ label: "Active",
+ icon: ,
+ },
+ archived: {
+ label: "Archived",
+ icon: ,
+ },
+ inactive: {
+ label: "Inactive",
+ icon: ,
+ },
+}
+
const FilterButtons = ({
searchQuery,
}: {
searchQuery?: string
}): JSX.Element => {
- const { toggleFilter, activeFilters } = useProjectFiltersState(
+ const { activeFilters, onSelectTheme } = useProjectFiltersState(
(state) => state
)
@@ -78,7 +100,7 @@ const FilterButtons = ({
variant={variant}
size="lg"
onClick={() => {
- toggleFilter({ tag: "themes", value: key, searchQuery })
+ onSelectTheme(key, searchQuery ?? "")
}}
>
diff --git a/components/project/project-list.tsx b/components/project/project-list.tsx
index dfe533d..1c9d60b 100644
--- a/components/project/project-list.tsx
+++ b/components/project/project-list.tsx
@@ -42,7 +42,7 @@ export default function ProjectList() {
/>
-
+
{tags?.themes?.map((theme, index) => {
const { label } = ThemesButtonMapping?.[theme]
const icon = TagsIconMapping?.[theme]
diff --git a/state/useProjectFiltersState.ts b/state/useProjectFiltersState.ts
index e9445a5..0fa6577 100644
--- a/state/useProjectFiltersState.ts
+++ b/state/useProjectFiltersState.ts
@@ -40,6 +40,7 @@ interface ProjectActionsProps {
toggleFilter: ({ tag, value, searchQuery }: toggleFilterProps) => void
setFilterFromQueryString: (filters: Partial) => void
onFilterProject: (searchPattern: string) => void
+ onSelectTheme: (theme: string, searchPattern?: string) => void
}
const createURLQueryString = (params: Partial): string => {
@@ -176,6 +177,25 @@ export const useProjectFiltersState = create<
projects: filteredProjects,
}
}),
+ onSelectTheme: (theme: string, searchQuery = "") => {
+ set((state: any) => {
+ const activeFilters = {
+ ...state.activeFilters,
+ themes: [theme],
+ }
+
+ const filteredProjects = filterProjects({
+ searchPattern: searchQuery ?? "",
+ activeFilters,
+ })
+
+ return {
+ ...state,
+ activeFilters,
+ projects: filteredProjects,
+ }
+ })
+ },
onFilterProject: (searchPattern: string) => {
set((state: any) => {
const filteredProjects = filterProjects({