22
33#![ allow( dead_code) ]
44
5- use colored:: Colorize ;
65use prism_core:: types:: report:: TransactionContext ;
76use prism_core:: types:: trace:: ResourceProfile ;
87use tabled:: { Table , Tabled } ;
8+ use crate :: output:: theme:: ColorPalette ;
99
1010const BAR_WIDTH : usize = 10 ;
1111const HEAT_BLOCKS : [ & str ; 4 ] = [ "░" , "▒" , "▓" , "█" ] ;
@@ -31,8 +31,9 @@ impl<'a> SectionHeader<'a> {
3131 let border = format ! ( "+{}+" , "-" . repeat( inner. chars( ) . count( ) ) ) ;
3232 let middle = format ! ( "|{}|" , inner) ;
3333
34- let border = border. cyan ( ) . bold ( ) . to_string ( ) ;
35- let middle = middle. white ( ) . bold ( ) . to_string ( ) ;
34+ let palette = ColorPalette :: default ( ) ;
35+ let border = palette. metadata_text ( & border) ;
36+ let middle = palette. accent_text ( & middle) ;
3637
3738 format ! ( "{}\n {}\n {}" , border, middle, border)
3839 }
@@ -61,12 +62,13 @@ impl BudgetBar {
6162 let empty = BAR_WIDTH . saturating_sub ( filled) ;
6263 let bar_str = format ! ( "{}{}" , "█" . repeat( filled) , "░" . repeat( empty) ) ;
6364
65+ let palette = ColorPalette :: default ( ) ;
6466 let colored_bar = if pct >= 0.9 {
65- bar_str . red ( ) . bold ( ) . to_string ( )
67+ palette . error_text ( & bar_str )
6668 } else if pct >= 0.7 {
67- bar_str . yellow ( ) . to_string ( )
69+ palette . warning_text ( & bar_str )
6870 } else {
69- bar_str . green ( ) . to_string ( )
71+ palette . success_text ( & bar_str )
7072 } ;
7173
7274 format ! (
@@ -95,24 +97,26 @@ fn heat_cell(intensity: f64) -> String {
9597 let empty = BAR_WIDTH . saturating_sub ( filled) ;
9698 let cell = format ! ( "{}{}" , block. repeat( filled) , "░" . repeat( empty) ) ;
9799
100+ let palette = ColorPalette :: default ( ) ;
98101 if intensity >= 0.75 {
99- cell . red ( ) . bold ( ) . to_string ( )
102+ palette . error_text ( & cell )
100103 } else if intensity >= 0.5 {
101- cell . yellow ( ) . to_string ( )
104+ palette . warning_text ( & cell )
102105 } else if intensity >= 0.25 {
103- cell . cyan ( ) . to_string ( )
106+ palette . metadata_text ( & cell )
104107 } else {
105- cell . dimmed ( ) . to_string ( )
108+ palette . muted_text ( & cell )
106109 }
107110}
108111
109112/// Render a resource heatmap grid from a `ResourceProfile`.
110113pub fn render_heatmap ( profile : & ResourceProfile ) -> String {
111114 if profile. hotspots . is_empty ( ) {
115+ let palette = ColorPalette :: default ( ) ;
112116 return format ! (
113117 "{}\n {}\n " ,
114118 render_section_header( "Resource Heatmap" ) ,
115- "No hotspot data available." . dimmed ( )
119+ palette . muted_text ( "No hotspot data available." )
116120 ) ;
117121 }
118122
@@ -186,12 +190,13 @@ pub fn render_heatmap(profile: &ResourceProfile) -> String {
186190 }
187191
188192 out. push ( '\n' ) ;
193+ let palette = ColorPalette :: default ( ) ;
189194 out. push_str ( & format ! (
190195 " Legend: {} cold {} low {} medium {} hot\n " ,
191- "░░░░░░░░░░" . dimmed ( ) ,
192- "▒▒▒▒▒▒▒▒▒▒" . cyan ( ) ,
193- "▓▓▓▓▓▓▓▓▓▓" . yellow ( ) ,
194- "██████████" . red ( ) . bold ( ) ,
196+ palette . muted_text ( "░░░░░░░░░░" ) ,
197+ palette . metadata_text ( "▒▒▒▒▒▒▒▒▒▒" ) ,
198+ palette . warning_text ( "▓▓▓▓▓▓▓▓▓▓" ) ,
199+ palette . error_text ( "██████████" ) ,
195200 ) ) ;
196201
197202 out
0 commit comments