MCPcopy Create free account
hub / github.com/GCWing/BitFun / render_skill_line

Method render_skill_line

src/apps/cli/src/ui/skill_selector.rs:337–385  ·  view source on GitHub ↗
(
        &self,
        skill: &SkillItem,
        theme: &Theme,
        include_checkbox: bool,
    )

Source from the content-addressed store, hash-verified

335 }
336
337 fn render_skill_line(
338 &self,
339 skill: &SkillItem,
340 theme: &Theme,
341 include_checkbox: bool,
342 ) -> ListItem<'static> {
343 let level_marker = match skill.level.as_str() {
344 "project" => "P",
345 "user" => "U",
346 _ => "?",
347 };
348 let level_style = match skill.level.as_str() {
349 "project" => theme.style(StyleKind::Info),
350 _ => theme.style(StyleKind::Muted),
351 };
352 let name_style = theme.style(StyleKind::Primary).add_modifier(Modifier::BOLD);
353 let desc_style = theme.style(StyleKind::Muted);
354 let status = if skill.is_shadowed {
355 " shadowed"
356 } else if include_checkbox && skill.enabled && !skill.selected_for_runtime {
357 " enabled"
358 } else {
359 ""
360 };
361
362 let mut spans = Vec::new();
363 if include_checkbox {
364 spans.push(Span::styled(
365 if skill.enabled { "[x] " } else { "[ ] " },
366 if skill.enabled {
367 theme.style(StyleKind::Success)
368 } else {
369 theme.style(StyleKind::Muted)
370 },
371 ));
372 }
373 spans.push(Span::styled(format!("[{}] ", level_marker), level_style));
374 spans.push(Span::styled(skill.name.clone(), name_style));
375 if !status.is_empty() {
376 spans.push(Span::styled(
377 status.to_string(),
378 theme.style(StyleKind::Muted),
379 ));
380 }
381 spans.push(Span::raw(" "));
382 spans.push(Span::styled(skill.description.clone(), desc_style));
383
384 ListItem::new(Line::from(spans))
385 }
386}

Callers 1

render_itemsMethod · 0.80

Calls 5

styleMethod · 0.80
as_strMethod · 0.45
pushMethod · 0.45
cloneMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected