From 4e146f0075b4e38aa60d8e4e744ffa176fa9f28a Mon Sep 17 00:00:00 2001 From: Dotta Date: Mon, 16 Mar 2026 08:27:21 -0500 Subject: [PATCH] feat: make skill pills clickable in company export preview Clicking a skill pill in the frontmatter card now navigates to the corresponding skills//SKILL.md file in the export tree, expanding parent directories as needed. No page reload required. Co-Authored-By: Paperclip --- ui/src/pages/CompanyExport.tsx | 40 +++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/ui/src/pages/CompanyExport.tsx b/ui/src/pages/CompanyExport.tsx index 3a888d44..416ea1f3 100644 --- a/ui/src/pages/CompanyExport.tsx +++ b/ui/src/pages/CompanyExport.tsx @@ -501,7 +501,13 @@ const FRONTMATTER_FIELD_LABELS: Record = { targetDate: "Target date", }; -function FrontmatterCard({ data }: { data: FrontmatterData }) { +function FrontmatterCard({ + data, + onSkillClick, +}: { + data: FrontmatterData; + onSkillClick?: (skill: string) => void; +}) { return (
@@ -514,12 +520,17 @@ function FrontmatterCard({ data }: { data: FrontmatterData }) { {Array.isArray(value) ? (
{value.map((item) => ( - key === "skills" && onSkillClick?.(item)} > {item} - + ))}
) : ( @@ -538,9 +549,11 @@ function FrontmatterCard({ data }: { data: FrontmatterData }) { function ExportPreviewPane({ selectedFile, content, + onSkillClick, }: { selectedFile: string | null; content: string | null; + onSkillClick?: (skill: string) => void; }) { if (!selectedFile || content === null) { return ( @@ -559,7 +572,7 @@ function ExportPreviewPane({
{parsed ? ( <> - + {parsed.body.trim() && {parsed.body}} ) : isMarkdown ? ( @@ -737,6 +750,21 @@ export function CompanyExport() { } } + function handleSkillClick(skillSlug: string) { + if (!exportData) return; + // Find the SKILL.md file for this skill slug + const skillPath = `skills/${skillSlug}/SKILL.md`; + if (!(skillPath in exportData.files)) return; + // Select the file and expand parent dirs + setSelectedFile(skillPath); + setExpandedDirs((prev) => { + const next = new Set(prev); + next.add("skills"); + next.add(`skills/${skillSlug}`); + return next; + }); + } + function handleDownload() { if (!exportData) return; downloadTar(exportData, checkedFiles); @@ -841,7 +869,7 @@ export function CompanyExport() {
- +