From 0184e5ce381fe900df481db79af99ca6918f1fa4 Mon Sep 17 00:00:00 2001
From: hobokenchicken
Date: Sat, 18 Apr 2026 17:05:13 -0400
Subject: [PATCH] Fix SkillsGallery to use Presentation 1 & 2, simplify
Experience to curated data
---
.pi-lens/cache/jscpd.json | 2 +-
.pi-lens/cache/jscpd.meta.json | 2 +-
.pi-lens/cache/knip.meta.json | 2 +-
.pi-lens/metrics-history.json | 27 ++++-
.pi-lens/turn-state.json | 2 +-
src/sections/Experience.tsx | 206 +++++++++++++--------------------
src/sections/SkillsGallery.tsx | 13 +--
7 files changed, 116 insertions(+), 138 deletions(-)
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.
-
- )}
+
+
+
+
+
+
+
+ ))}
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',
},
]