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' ? ( -