import { component$ } from "@builder.io/qwik"; import Icon from "~/components/core/icon"; import type { Priority, Section } from '../../types/PSC'; import { marked } from "marked"; import { useLocalStorage } from "~/hooks/useLocalStorage"; export default component$((props: { section: Section }) => { const [completed, setCompleted] = useLocalStorage('PSC_PROGRESS', {}); const [ignored, setIgnored] = useLocalStorage('PSC_IGNORED', {}); const getBadgeClass = (priority: Priority, precedeClass: string = '') => { switch (priority.toLocaleLowerCase()) { case 'recommended': return `${precedeClass}success`; case 'optional': return `${precedeClass}warning`; case 'advanced': return `${precedeClass}error`; default: return `${precedeClass}neutral`; } }; const generateId = (title: string) => { return title.toLowerCase().replace(/ /g, '-'); }; const parseMarkdown = (text: string | undefined): string => { return marked.parse(text || '', { async: false }) as string || ''; }; const isIgnored = (pointId: string) => { return ignored.value[pointId] || false; }; const isChecked = (pointId: string) => { if (isIgnored(pointId)) return false; return completed.value[pointId] || false; }; return ( <>
{/* Filter by completion */}

Show

{/* Filter by level */}

Filter

{props.section.checklist.map((item, index) => { const badgeColor = getBadgeClass(item.priority); const itemId = generateId(item.point); const isItemCompleted = isChecked(itemId); const isItemIgnored = isIgnored(itemId); return ( )} )}
Done? Advice Level Details
{ const data = completed.value; data[itemId] = !data[itemId]; setCompleted(data); }} /> { const ignoredData = ignored.value; ignoredData[itemId] = !ignoredData[itemId]; setIgnored(ignoredData); const completedData = completed.value; completedData[itemId] = false; setCompleted(completedData); }} />
{item.priority}
); });