feat(tui): add two-step SkillsHub overlay component

New SkillsHub mirrors ModelPicker's category → item → actions flow with
paginated 12-line lists, 1-9/0 quick-pick, Esc-back navigation, and
lazy skills.manage inspect/install calls. Mount it from appOverlays
when overlay.skillsHub is true.
This commit is contained in:
Brooklyn Nicholson 2026-04-18 09:27:48 -05:00
parent 6fbfae8f42
commit ef284e021a
2 changed files with 298 additions and 1 deletions

View file

@ -11,6 +11,7 @@ import { MaskedPrompt } from './maskedPrompt.js'
import { ModelPicker } from './modelPicker.js'
import { ApprovalPrompt, ClarifyPrompt } from './prompts.js'
import { SessionPicker } from './sessionPicker.js'
import { SkillsHub } from './skillsHub.js'
export function PromptZone({
cols,
@ -82,7 +83,7 @@ export function FloatingOverlays({
const overlay = useStore($overlayState)
const ui = useStore($uiState)
const hasAny = overlay.modelPicker || overlay.pager || overlay.picker || completions.length
const hasAny = overlay.modelPicker || overlay.pager || overlay.picker || overlay.skillsHub || completions.length
if (!hasAny) {
return null
@ -115,6 +116,12 @@ export function FloatingOverlays({
</FloatBox>
)}
{overlay.skillsHub && (
<FloatBox color={ui.theme.color.bronze}>
<SkillsHub gw={gw} onClose={() => patchOverlayState({ skillsHub: false })} t={ui.theme} />
</FloatBox>
)}
{overlay.pager && (
<FloatBox color={ui.theme.color.bronze}>
<Box flexDirection="column" paddingX={1} paddingY={1}>