// interfaces import { TIssueLayout, TIssueLayoutViews, TIssueFilterKeys, TIssueFilterPriority, TIssueFilterPriorityObject, TIssueFilterState, TIssueFilterStateObject, } from "types/issue"; // issue filters export const ISSUE_DISPLAY_FILTERS_BY_LAYOUT: { [key in TIssueLayout]: Record<"filters", TIssueFilterKeys[]> } = { list: { filters: ["priority", "state", "labels"], }, kanban: { filters: ["priority", "state", "labels"], }, calendar: { filters: ["priority", "state", "labels"], }, spreadsheet: { filters: ["priority", "state", "labels"], }, gantt: { filters: ["priority", "state", "labels"], }, }; export const issueLayoutViews: Partial = { list: { title: "List View", icon: "format_list_bulleted", className: "", }, kanban: { title: "Board View", icon: "grid_view", className: "", }, }; // issue priority filters export const issuePriorityFilters: TIssueFilterPriorityObject[] = [ { key: "urgent", title: "Urgent", className: "bg-red-500 border-red-500 text-white", icon: "error", }, { key: "high", title: "High", className: "text-orange-500 border-custom-border-300", icon: "signal_cellular_alt", }, { key: "medium", title: "Medium", className: "text-yellow-500 border-custom-border-300", icon: "signal_cellular_alt_2_bar", }, { key: "low", title: "Low", className: "text-green-500 border-custom-border-300", icon: "signal_cellular_alt_1_bar", }, { key: "none", title: "None", className: "text-gray-500 border-custom-border-300", icon: "block", }, ]; export const issuePriorityFilter = (priorityKey: TIssueFilterPriority): TIssueFilterPriorityObject | undefined => { const currentIssuePriority: TIssueFilterPriorityObject | undefined = issuePriorityFilters && issuePriorityFilters.length > 0 ? issuePriorityFilters.find((_priority) => _priority.key === priorityKey) : undefined; if (currentIssuePriority) return currentIssuePriority; return undefined; }; // issue group filters export const issueGroupColors: { [key in TIssueFilterState]: string; } = { backlog: "#d9d9d9", unstarted: "#3f76ff", started: "#f59e0b", completed: "#16a34a", cancelled: "#dc2626", }; export const issueGroups: TIssueFilterStateObject[] = [ { key: "backlog", title: "Backlog", color: "#d9d9d9", className: `text-[#d9d9d9] bg-[#d9d9d9]/10`, }, { key: "unstarted", title: "Unstarted", color: "#3f76ff", className: `text-[#3f76ff] bg-[#3f76ff]/10`, }, { key: "started", title: "Started", color: "#f59e0b", className: `text-[#f59e0b] bg-[#f59e0b]/10`, }, { key: "completed", title: "Completed", color: "#16a34a", className: `text-[#16a34a] bg-[#16a34a]/10`, }, { key: "cancelled", title: "Cancelled", color: "#dc2626", className: `text-[#dc2626] bg-[#dc2626]/10`, }, ]; export const issueGroupFilter = (issueKey: TIssueFilterState): TIssueFilterStateObject | undefined => { const currentIssueStateGroup: TIssueFilterStateObject | undefined = issueGroups && issueGroups.length > 0 ? issueGroups.find((group) => group.key === issueKey) : undefined; if (currentIssueStateGroup) return currentIssueStateGroup; return undefined; };