diff --git a/src/components/ReactIcons/DropdownIcon.tsx b/src/components/ReactIcons/DropdownIcon.tsx
new file mode 100644
index 000000000..29780768e
--- /dev/null
+++ b/src/components/ReactIcons/DropdownIcon.tsx
@@ -0,0 +1,26 @@
+import { cn } from '../../lib/classname';
+
+type DropdownIconProps = {
+ className?: string;
+};
+
+export function DropdownIcon(props: DropdownIconProps) {
+ const { className } = props;
+
+ return (
+
+ );
+}
diff --git a/src/components/TeamVersions/TeamVersions.tsx b/src/components/TeamVersions/TeamVersions.tsx
index 541290fe9..256163e00 100644
--- a/src/components/TeamVersions/TeamVersions.tsx
+++ b/src/components/TeamVersions/TeamVersions.tsx
@@ -2,7 +2,7 @@ import { useState, useEffect, useRef } from 'react';
import type { TeamDocument } from '../CreateTeam/CreateTeamForm';
import type { TeamResourceConfig } from '../CreateTeam/RoadmapSelector';
import { httpGet } from '../../lib/http';
-import DropdownIcon from '../../icons/dropdown.svg';
+// import DropdownIcon from '../../icons/dropdown.svg';
import {
clearResourceProgress,
refreshProgressCounters,
@@ -15,6 +15,7 @@ import { useKeydown } from '../../hooks/use-keydown';
import { isLoggedIn } from '../../lib/jwt';
import { useAuth } from '../../hooks/use-auth';
import { useToast } from '../../hooks/use-toast';
+import { DropdownIcon } from '../ReactIcons/DropdownIcon';
type TeamVersionsProps = {
resourceId: string;
@@ -75,7 +76,7 @@ export function TeamVersions(props: TeamVersionsProps) {
}/v1-get-team-versions?${new URLSearchParams({
resourceId,
resourceType,
- })}`
+ })}`,
);
if (error || !response) {
@@ -142,11 +143,7 @@ export function TeamVersions(props: TeamVersionsProps) {
{selectedTeamVersion?.team.name || 'Team Versions'}
-
+
{shouldShowAvatar ? (
diff --git a/src/components/TopicDetail/TopicDetail.tsx b/src/components/TopicDetail/TopicDetail.tsx
index 4dd8e18d8..2dfa984c4 100644
--- a/src/components/TopicDetail/TopicDetail.tsx
+++ b/src/components/TopicDetail/TopicDetail.tsx
@@ -1,6 +1,4 @@
import { useEffect, useMemo, useRef, useState } from 'react';
-import CloseIcon from '../../icons/close.svg';
-import SpinnerIcon from '../../icons/spinner.svg';
import { useKeydown } from '../../hooks/use-keydown';
import { useLoadTopic } from '../../hooks/use-load-topic';
@@ -26,8 +24,9 @@ import type {
} from '../CustomRoadmap/CustomRoadmap';
import { markdownToHtml } from '../../lib/markdown';
import { cn } from '../../lib/classname';
-import { Ban, FileText } from 'lucide-react';
+import { Ban, FileText, X } from 'lucide-react';
import { getUrlParams } from '../../lib/browser';
+import { Spinner } from '../ReactIcons/Spinner';
type TopicDetailProps = {
canSubmitContribution: boolean;
@@ -203,10 +202,10 @@ export function TopicDetail(props: TopicDetailProps) {
>
{isLoading && (
-
)}
@@ -249,7 +248,7 @@ export function TopicDetail(props: TopicDetailProps) {
setIsContributing(false);
}}
>
-

+
@@ -339,7 +338,7 @@ export function TopicDetail(props: TopicDetailProps) {
setIsContributing(false);
}}
>
-
+
diff --git a/src/components/TopicDetail/TopicProgressButton.tsx b/src/components/TopicDetail/TopicProgressButton.tsx
index 3b9a63a68..dcebcd4e2 100644
--- a/src/components/TopicDetail/TopicProgressButton.tsx
+++ b/src/components/TopicDetail/TopicProgressButton.tsx
@@ -1,8 +1,6 @@
import { useEffect, useMemo, useRef, useState } from 'react';
import { useKeydown } from '../../hooks/use-keydown';
import { useOutsideClick } from '../../hooks/use-outside-click';
-import DownIcon from '../../icons/down.svg';
-import SpinnerIcon from '../../icons/spinner.svg';
import { isLoggedIn } from '../../lib/jwt';
import {
getTopicStatus,
@@ -10,9 +8,14 @@ import {
renderTopicProgress,
updateResourceProgress,
} from '../../lib/resource-progress';
-import type { ResourceProgressType, ResourceType } from '../../lib/resource-progress';
+import type {
+ ResourceProgressType,
+ ResourceType,
+} from '../../lib/resource-progress';
import { showLoginPopup } from '../../lib/popup';
import { useToast } from '../../hooks/use-toast';
+import { Spinner } from '../ReactIcons/Spinner';
+import { ChevronDown } from 'lucide-react';
type TopicProgressButtonProps = {
topicId: string;
@@ -27,7 +30,7 @@ const statusColors: Record
= {
learning: 'bg-yellow-500',
pending: 'bg-gray-300',
skipped: 'bg-black',
- removed: ''
+ removed: '',
};
export function TopicProgressButton(props: TopicProgressButtonProps) {
@@ -71,7 +74,7 @@ export function TopicProgressButton(props: TopicProgressButtonProps) {
handleUpdateResourceProgress('done');
},
- [progress]
+ [progress],
);
// Mark as learning
@@ -85,7 +88,7 @@ export function TopicProgressButton(props: TopicProgressButtonProps) {
handleUpdateResourceProgress('learning');
},
- [progress]
+ [progress],
);
// Mark as learning
@@ -99,7 +102,7 @@ export function TopicProgressButton(props: TopicProgressButtonProps) {
handleUpdateResourceProgress('skipped');
},
- [progress]
+ [progress],
);
// Mark as pending
@@ -114,7 +117,7 @@ export function TopicProgressButton(props: TopicProgressButtonProps) {
handleUpdateResourceProgress('pending');
},
- [progress]
+ [progress],
);
const handleUpdateResourceProgress = (progress: ResourceProgressType) => {
@@ -131,7 +134,7 @@ export function TopicProgressButton(props: TopicProgressButtonProps) {
resourceId,
resourceType,
},
- progress
+ progress,
)
.then(() => {
setProgress(progress);
@@ -149,22 +152,22 @@ export function TopicProgressButton(props: TopicProgressButtonProps) {
};
const allowMarkingSkipped = ['pending', 'learning', 'done'].includes(
- progress
+ progress,
);
const allowMarkingDone = ['skipped', 'pending', 'learning'].includes(
- progress
+ progress,
);
const allowMarkingLearning = ['done', 'skipped', 'pending'].includes(
- progress
+ progress,
);
const allowMarkingPending = ['skipped', 'done', 'learning'].includes(
- progress
+ progress,
);
if (isUpdatingProgress) {
return (
);
@@ -188,7 +191,7 @@ export function TopicProgressButton(props: TopicProgressButtonProps) {
onClick={() => setShowChangeStatus(true)}
>
Update Status
-
+
{showChangeStatus && (