--- template/app/src/landing-page/components/RoadmapStatusColumn.tsx +++ opensaas-sh/app/src/landing-page/components/RoadmapStatusColumn.tsx @@ -0,0 +1,92 @@ +import { cn } from "../../client/utils"; +import type { GithubEpic } from "../operations"; +import { GithubEpicStatus } from "../operations"; +import { RoadmapEpicAddIssueCard, RoadmapEpicCard } from "./RoadmapEpicCard"; + +type RoadmapStatusColumnProps = { + status: GithubEpicStatus; + epics: GithubEpic[]; +}; + +export function RoadmapStatusColumn({ + status, + epics, +}: RoadmapStatusColumnProps) { + const borderColor = getBorderColor(status); + const statusBgColor = getStatusBgColor(status); + const statusTextColor = getStatusTextColor(status); + + return ( +
+
+

{status}

+ ({epics.length}) +
+ +
+ {epics.map((epic) => ( + + ))} + + {epics.length === 0 && ( +
+ No epics +
+ )} + + {status === GithubEpicStatus.Ideas && } +
+
+ ); +} + +const getStatusBgColor = (status: GithubEpicStatus) => { + switch (status) { + case GithubEpicStatus.Ideas: + return "bg-blue-100 dark:bg-blue-900/30"; + case GithubEpicStatus.Planned: + return "bg-green-100 dark:bg-green-900/30"; + case GithubEpicStatus.InProgress: + return "bg-yellow-100 dark:bg-yellow-900/30"; + case GithubEpicStatus.Done: + return "bg-purple-100 dark:bg-purple-900/30"; + default: + return "bg-gray-100 dark:bg-gray-800"; + } +}; + +const getStatusTextColor = (status: GithubEpicStatus) => { + switch (status) { + case GithubEpicStatus.Ideas: + return "text-blue-700 dark:text-blue-300"; + case GithubEpicStatus.Planned: + return "text-green-700 dark:text-green-300"; + case GithubEpicStatus.InProgress: + return "text-yellow-700 dark:text-yellow-300"; + case GithubEpicStatus.Done: + return "text-purple-700 dark:text-purple-300"; + default: + return "text-gray-700 dark:text-gray-300"; + } +}; + +const getBorderColor = (status: GithubEpicStatus) => { + switch (status) { + case GithubEpicStatus.Ideas: + return "border-blue-200 dark:border-blue-800"; + case GithubEpicStatus.Planned: + return "border-green-200 dark:border-green-800"; + case GithubEpicStatus.InProgress: + return "border-yellow-200 dark:border-yellow-800"; + case GithubEpicStatus.Done: + return "border-purple-200 dark:border-purple-800"; + default: + return "border-gray-200 dark:border-gray-700"; + } +};