diff --git a/.prettierrc b/.prettierrc
index 1fcfb4fe8..26059e6f1 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -3,5 +3,6 @@
"printWidth": 80,
"proseWrap": "never",
"singleQuote": true,
- "trailingComma": "all"
+ "trailingComma": "all",
+ "plugins": ["prettier-plugin-tailwindcss"]
}
diff --git a/apps/web/src/components/projects/challenges/lists/ProjectsChallengeFilterContext.tsx b/apps/web/src/components/projects/challenges/lists/ProjectsChallengeFilterContext.tsx
index 711ea4ed8..30f6f0adc 100644
--- a/apps/web/src/components/projects/challenges/lists/ProjectsChallengeFilterContext.tsx
+++ b/apps/web/src/components/projects/challenges/lists/ProjectsChallengeFilterContext.tsx
@@ -10,6 +10,8 @@ import { useIntl } from 'react-intl';
import useFilterSearchParams from '~/hooks/useFilterSearchParams';
+import type { PopoverContentWidth } from '~/components/ui/Popover';
+
export type ProjectsChallengeFilterType = 'checkbox' | 'skill-selection';
export type ProjectsChallengeFilter = {
id: ProjectsChallengeFilterKey;
@@ -21,6 +23,7 @@ export type ProjectsChallengeFilter = {
}>;
tooltip: string;
type: ProjectsChallengeFilterType;
+ width?: PopoverContentWidth;
};
export type ProjectsChallengeFilterKey =
@@ -51,6 +54,7 @@ function useFilters() {
id: '03TVln',
}),
type: 'checkbox',
+ width: 'md',
},
{
id: 'skills',
diff --git a/apps/web/src/components/projects/challenges/lists/ProjectsChallengeGridListWithFilters.tsx b/apps/web/src/components/projects/challenges/lists/ProjectsChallengeGridListWithFilters.tsx
index ab5262a9d..59e63d8f0 100644
--- a/apps/web/src/components/projects/challenges/lists/ProjectsChallengeGridListWithFilters.tsx
+++ b/apps/web/src/components/projects/challenges/lists/ProjectsChallengeGridListWithFilters.tsx
@@ -31,7 +31,7 @@ import ProjectsChallengeFilterContextProvider, {
useProjectsChallengeFilterContext,
} from './ProjectsChallengeFilterContext';
import ProjectsChallengeFilterSlideOut from './ProjectsChallengeFilterSlideOut';
-import ProjectsListFilterDropdown from './ProjectsListFilterDropdown';
+import ProjectsChallengeListFilter from './ProjectsChallengeListFilter';
import type { ProjectsChallengeItem } from '../types';
type Props = Readonly<{
@@ -220,8 +220,8 @@ function ProjectsChallengeGridListWithFiltersImpl({ challenges }: Props) {
}}
/>
-
-
+
+
-
+
{filters.map((filter) => (
-
+
))}
{sortAndFilterButton}
-
{sortAndFilterButton}
+
{sortAndFilterButton}
{currentPageChallenges.length === 0 ? (
@@ -282,7 +282,7 @@ function ProjectsChallengeGridListWithFiltersImpl({ challenges }: Props) {
)}
{totalPages > 1 && (
-
+
;
+
+export default function ProjectsChallengeListFilter({ filter }: Props) {
+ return filter.type === 'skill-selection' ? (
+
+ ) : (
+
+ );
+}
diff --git a/apps/web/src/components/projects/challenges/lists/ProjectsListFilterDropdown.tsx b/apps/web/src/components/projects/challenges/lists/ProjectsListFilterDropdown.tsx
deleted file mode 100644
index 4a10790f9..000000000
--- a/apps/web/src/components/projects/challenges/lists/ProjectsListFilterDropdown.tsx
+++ /dev/null
@@ -1,83 +0,0 @@
-import { useState } from 'react';
-import { RiArrowDownSLine } from 'react-icons/ri';
-
-import {
- type ProjectsChallengeFilter,
- useProjectsChallengeFilterState,
-} from '~/components/projects/challenges/lists/ProjectsChallengeFilterContext';
-import ProjectsSkillRoadmapSelectionDialog from '~/components/projects/skills/form/ProjectsSkillRoadmapSelectionDialog';
-import Button from '~/components/ui/Button';
-import CheckboxInput from '~/components/ui/CheckboxInput';
-import Popover from '~/components/ui/Popover';
-
-type Props = Readonly<{
- filter: ProjectsChallengeFilter;
-}>;
-
-export default function ProjectsListFilterDropdown({ filter }: Props) {
- const [selectedOptions, setSelectedOptions] = useProjectsChallengeFilterState(
- filter.id,
- );
- const [showSkillsRoadmapDialog, setShowSkillsRoadmapDialog] = useState(false);
-
- const onChange = (value: string) => {
- const newFilters = new Set(selectedOptions);
-
- if (newFilters.has(value)) {
- newFilters.delete(value);
- } else {
- newFilters.add(value);
- }
-
- setSelectedOptions(Array.from(newFilters));
- };
-
- return (
- <>
- {filter.id === 'skills' ? (
-