diff --git a/src/components/Projects/ListProjectSolutions.tsx b/src/components/Projects/ListProjectSolutions.tsx
index 7e10ebd8a..d361854f2 100644
--- a/src/components/Projects/ListProjectSolutions.tsx
+++ b/src/components/Projects/ListProjectSolutions.tsx
@@ -213,6 +213,13 @@ export function ListProjectSolutions(props: ListProjectSolutionsProps) {
const selectedLanguage = pageState.language;
+ const setSelectedLanguage = (language: string) => {
+ setPageState((prev) => ({
+ ...prev,
+ language: prev.language === language ? '' : language,
+ }));
+ };
+
return (
{leavingRoadmapModal}
@@ -221,7 +228,9 @@ export function ListProjectSolutions(props: ListProjectSolutionsProps) {
{projectData.title} Solutions
-
{projectData.description}
+
+ Solutions submitted by the community
+
{!isLoading && (
@@ -260,6 +269,7 @@ export function ListProjectSolutions(props: ListProjectSolutionsProps) {
counter={counter}
onVote={handleSubmitVote}
onVisitSolution={setShowLeavingRoadmapModal}
+ onLanguageClick={setSelectedLanguage}
/>
))}
diff --git a/src/components/Projects/ProjectSolutionRow.tsx b/src/components/Projects/ProjectSolutionRow.tsx
index 45934cd8e..5420cc2db 100644
--- a/src/components/Projects/ProjectSolutionRow.tsx
+++ b/src/components/Projects/ProjectSolutionRow.tsx
@@ -43,69 +43,95 @@ type ProjectSolutionRowProps = {
counter: number;
onVote: (solutionId: string, voteType: AllowedVoteType) => void;
onVisitSolution: (solution: ProjectSolutionRowProps['solution']) => void;
+ onLanguageClick?: (language: string) => void;
};
export function ProjectSolutionRow(props: ProjectSolutionRowProps) {
- const { solution, counter, onVote, onVisitSolution } = props;
+ const { solution, counter, onVote, onVisitSolution, onLanguageClick } = props;
const avatar = solution.user.avatar || '';
return (
-
-
-
-

-
{solution.user.name}
-
- {submittedAlternatives[counter % submittedAlternatives.length] ||
- 'submitted their solution'}
- {' '}
-
- {getRelativeTimeString(solution?.submittedAt!)}
-
-
+
+
+

+
+
+
+ {solution.user.name}
+
+
+ {submittedAlternatives[counter % submittedAlternatives.length] ||
+ 'submitted their solution'}
+
+
+ ยท {getRelativeTimeString(solution?.submittedAt!)}
+
+
-
-
-
+
+
+ {
+ onVote(solution._id!, 'upvote');
+ }}
+ />
+
+ {
+ onVote(solution._id!, 'downvote');
+ }}
+ />
+
+
+
+
-
-
+ >
+
+
Visit Solution
+
+
+
+
+ {solution.languages && solution.languages.length > 0 && (
+
+ {solution.languages.slice(0, 2).map((lang) => (
+
+ ))}
+
+ )}
+
);
}