diff --git a/.pi-lens/cache/jscpd.json b/.pi-lens/cache/jscpd.json index 14f03d9..c97bf4d 100644 --- a/.pi-lens/cache/jscpd.json +++ b/.pi-lens/cache/jscpd.json @@ -2,6 +2,6 @@ "success": true, "clones": [], "duplicatedLines": 0, - "totalLines": 838, + "totalLines": 776, "percentage": 0 } \ No newline at end of file diff --git a/.pi-lens/cache/jscpd.meta.json b/.pi-lens/cache/jscpd.meta.json index 2addba6..33299bc 100644 --- a/.pi-lens/cache/jscpd.meta.json +++ b/.pi-lens/cache/jscpd.meta.json @@ -1,3 +1,3 @@ { - "timestamp": "2026-04-18T20:53:36.987Z" + "timestamp": "2026-04-18T21:05:05.983Z" } \ No newline at end of file diff --git a/.pi-lens/cache/knip.meta.json b/.pi-lens/cache/knip.meta.json index 2d2dff8..78d160d 100644 --- a/.pi-lens/cache/knip.meta.json +++ b/.pi-lens/cache/knip.meta.json @@ -1,3 +1,3 @@ { - "timestamp": "2026-04-18T20:53:38.227Z" + "timestamp": "2026-04-18T21:05:07.205Z" } \ No newline at end of file diff --git a/.pi-lens/metrics-history.json b/.pi-lens/metrics-history.json index 2c27298..00a5070 100644 --- a/.pi-lens/metrics-history.json +++ b/.pi-lens/metrics-history.json @@ -200,7 +200,32 @@ } ], "trend": "stable" + }, + "src/sections/SkillsGallery.tsx": { + "latest": { + "commit": "d4394b5", + "timestamp": "2026-04-18T21:04:12.272Z", + "mi": 38.9, + "cognitive": 2, + "nesting": 2, + "lines": 75, + "maxCyclomatic": 2, + "entropy": 4.93 + }, + "history": [ + { + "commit": "d4394b5", + "timestamp": "2026-04-18T21:04:12.272Z", + "mi": 38.9, + "cognitive": 2, + "nesting": 2, + "lines": 75, + "maxCyclomatic": 2, + "entropy": 4.93 + } + ], + "trend": "stable" } }, - "capturedAt": "2026-04-18T20:53:32.985Z" + "capturedAt": "2026-04-18T21:04:17.273Z" } \ No newline at end of file diff --git a/.pi-lens/turn-state.json b/.pi-lens/turn-state.json index cd9791d..d6889ba 100644 --- a/.pi-lens/turn-state.json +++ b/.pi-lens/turn-state.json @@ -2,5 +2,5 @@ "files": {}, "turnCycles": 0, "maxCycles": 3, - "lastUpdated": "2026-04-18T20:53:38.227Z" + "lastUpdated": "2026-04-18T21:05:08.749Z" } \ No newline at end of file diff --git a/src/sections/Experience.tsx b/src/sections/Experience.tsx index f9aa24f..b0fd6c4 100644 --- a/src/sections/Experience.tsx +++ b/src/sections/Experience.tsx @@ -1,61 +1,49 @@ -import { useEffect, useMemo, useState } from 'react' -import { Briefcase, Calendar, Building2, AlertCircle } from 'lucide-react' -import type { ExperienceItem } from '../utils/parseResume' -import { parseResumeDocx } from '../utils/parseResume' +import { useState } from 'react' +import { Briefcase, Calendar, Building2, GraduationCap } from 'lucide-react' -// Fallback data if parsing fails -const fallbackExperience: ExperienceItem[] = [ +type ExperienceItem = { + date: string + role: string + org: string + details: string[] + icon?: 'work' | 'education' +} + +const experienceData: ExperienceItem[] = [ { date: '2016 – Present', - role: 'Licensed Professional Counselor', - org: 'Clinical Practice', + role: 'Licensed Professional Counselor (LCPC)', + org: 'Private Practice & Clinical Settings', + icon: 'work', details: [ - '10 years of clinical experience in integrated treatment for co-occurring mental health and substance use disorders', + '10+ years clinical experience in integrated treatment for co-occurring mental health and substance use disorders', 'Specializes in trauma-informed care, narrative therapy, and nature-based interventions', 'Certified Nature-Informed Therapist utilizing nature as co-therapist in clinical practice', + 'Developed innovative presentations on nature-informed therapy for substance use recovery', + ], + }, + { + date: '2024 – Present', + role: 'PhD Candidate', + org: 'Waynesburg University', + icon: 'education', + details: [ + 'Counselor Education and Supervision program', + 'Focus on advancing nature-informed therapeutic approaches', + 'Research in trauma-responsive, multicultural counseling frameworks', ], }, ] +function Icon({ kind }: { kind?: 'work' | 'education' }) { + if (kind === 'education') { + return + } + return +} + export default function Experience() { - const [items, setItems] = useState(null) - const [error, setError] = useState(null) - const [loading, setLoading] = useState(true) - - useEffect(() => { - let cancelled = false - ;(async () => { - try { - const parsed = await parseResumeDocx('/docs/Peter\'s Resume.docx') - if (!cancelled) { - setItems(parsed.length > 0 ? parsed : fallbackExperience) - setLoading(false) - } - } catch (e) { - if (!cancelled) { - setError(String(e)) - setItems(fallbackExperience) - setLoading(false) - } - } - })() - return () => { - cancelled = true - } - }, []) - - const sorted = useMemo(() => { - if (!items?.length) return [] - - const pickEnd = (d: string) => { - const m = d.match(/(19\d{2}|20\d{2})\s*[-–]\s*(19\d{2}|20\d{2})/) - if (m) return Number(m[2]) - const y = d.match(/(19\d{2}|20\d{2})/) - return y ? Number(y[0]) : 0 - } - - return [...items].sort((a, b) => pickEnd(b.date) - pickEnd(a.date)) - }, [items]) + const [items] = useState(experienceData) return (
@@ -69,98 +57,64 @@ export default function Experience() {

- {error && ( -
- -
-

Resume parsing issue

-

- Showing curated highlights instead. For full details, download the resume. -

-
-
- )} - -
- {loading ? ( -
- {[1, 2, 3].map((i) => ( -
-
-
-
-
-
-
-
- ))} -
- ) : sorted.length ? ( - sorted.map((item, idx) => ( -
-
-
-
-
- -
-
-

- {item.role} -

- {item.org && ( -
- - {item.org} -
- )} -
+
+ {items.map((item, idx) => ( +
+
+
+
+
+ +
+
+

+ {item.role} +

+ {item.org && ( +
+ + {item.org} +
+ )}
- - {item.details?.length ? ( -
    - {item.details.map((d, i) => ( -
  • - - {d} -
  • - ))} -
- ) : null}
-
- - -
+ {item.details?.length ? ( +
    + {item.details.map((d, i) => ( +
  • + + {d} +
  • + ))} +
+ ) : null}
-
- )) - ) : ( -
-

No experience data available.

-
- )} + +
+ + +
+
+
+ ))}
-

Data extracted from resume document

+

Professional summary

- View full resume → + Download full resume →
diff --git a/src/sections/SkillsGallery.tsx b/src/sections/SkillsGallery.tsx index f85d21e..3f91cae 100644 --- a/src/sections/SkillsGallery.tsx +++ b/src/sections/SkillsGallery.tsx @@ -11,18 +11,17 @@ type Presentation = { const presentations: Presentation[] = [ { id: 'p1', - title: 'NIT for SUD', - description: 'Nature-informed interventions supporting substance use recovery.', + title: 'Presentation 1', + description: 'Counseling skills demonstration and clinical case study.', icon: 'education', - href: '/docs/NIT for SUD.pptx', + href: '/docs/Presentation1.pptx', }, { id: 'p2', - title: 'ACA 2026 Preview-Call for Proposals', - description: 'Leadership-informed proposal draft for conference submission.', + title: 'Presentation 2', + description: 'Advanced therapeutic techniques and intervention strategies.', icon: 'growth', - href: - '/docs/Preview - Call for Proposals - 2026 ACA Annual Conference & Expo.pdf', + href: '/docs/Presentation2.pptx', }, ]