| 1 | //! Color token constants — RGB tuples and semantic `Color` roles. |
| 2 | |
| 3 | use ratatui::style::Color; |
| 4 | |
| 5 | // Codewhale Whale palette. Semantic colors own state, never decoration alone. |
| 6 | pub const WHALE_BG_RGB: (u8, u8, u8) = (3, 7, 13); // #03070D Deep field |
| 7 | pub const WHALE_CHROME_RGB: (u8, u8, u8) = (8, 17, 28); // #08111C Ink / chrome |
| 8 | pub const WHALE_PANEL_RGB: (u8, u8, u8) = (14, 23, 41); // #0E1729 Panel surface |
| 9 | pub const WHALE_COMPOSER_RGB: (u8, u8, u8) = (22, 34, 56); // #162238 Plate |
| 10 | pub const WHALE_ELEVATED_RGB: (u8, u8, u8) = (24, 39, 66); // #182742 Raised |
| 11 | pub const WHALE_SELECTION_RGB: (u8, u8, u8) = (31, 50, 77); // #1F324D Action-blue tint |
| 12 | pub const WHALE_TEXT_BODY_RGB: (u8, u8, u8) = (246, 242, 232); // #F6F2E8 Whale Ivory |
| 13 | pub const WHALE_TEXT_SOFT_RGB: (u8, u8, u8) = (182, 192, 212); // #B6C0D4 |
| 14 | pub const WHALE_TEXT_MUTED_RGB: (u8, u8, u8) = (147, 160, 184); // #93A0B8 |
| 15 | pub const WHALE_TEXT_HINT_RGB: (u8, u8, u8) = (132, 145, 170); // #8491AA |
| 16 | #[allow(dead_code)] |
| 17 | pub const WHALE_TEXT_DIM_RGB: (u8, u8, u8) = (105, 119, 145); // #697791 |
| 18 | pub const WHALE_ACTION_RGB: (u8, u8, u8) = (106, 174, 242); // #6AAEF2 Blue — owns interaction on dark |
| 19 | #[allow(dead_code)] |
| 20 | pub const WHALE_COBALT_RGB: (u8, u8, u8) = (49, 95, 216); // #315FD8 Cobalt — light-mode action |
| 21 | #[allow(dead_code)] |
| 22 | pub const WHALE_ICE_RGB: (u8, u8, u8) = (209, 235, 244); // #D1EBF4 Ice — structure on dark |
| 23 | #[allow(dead_code)] |
| 24 | pub const WHALE_CYAN_RGB: (u8, u8, u8) = (72, 215, 255); // #48D7FF Cyan — bounded accents only |
| 25 | pub const WHALE_ACCENT_SECONDARY_RGB: (u8, u8, u8) = (79, 209, 197); // #4FD1C5 Seafoam |
| 26 | pub const WHALE_HUMAN_RGB: (u8, u8, u8) = (246, 196, 83); // #F6C453 Signal Gold |
| 27 | /// Blue Stage grammar: the primary accent is the interaction blue. Signal Gold |
| 28 | /// is reserved for the whale mark and human-attention roles |
| 29 | /// ([`WHALE_HUMAN_RGB`]), never for general interaction. |
| 30 | pub const WHALE_ACCENT_PRIMARY_RGB: (u8, u8, u8) = WHALE_ACTION_RGB; |
| 31 | pub const WHALE_WORKING_GREEN_RGB: (u8, u8, u8) = (155, 214, 111); // #9BD66F Working Green |
| 32 | #[allow(dead_code)] |
| 33 | pub const WHALE_ACCENT_ACTION_RGB: (u8, u8, u8) = WHALE_ACTION_RGB; |
| 34 | pub const WHALE_ERROR_RGB: (u8, u8, u8) = (255, 134, 178); // #FF86B2 Rose danger |
| 35 | pub const WHALE_ERROR_HOVER_RGB: (u8, u8, u8) = (255, 156, 194); // #FF9CC2 |
| 36 | pub const WHALE_ERROR_SURFACE_RGB: (u8, u8, u8) = (43, 21, 34); // #2B1522 |
| 37 | pub const WHALE_ERROR_BORDER_RGB: (u8, u8, u8) = WHALE_ERROR_RGB; |
| 38 | pub const WHALE_ERROR_TEXT_RGB: (u8, u8, u8) = (255, 219, 232); // #FFDBE8 |
| 39 | pub const WHALE_WARNING_RGB: (u8, u8, u8) = (255, 122, 89); // #FF7A59 Coral warning |
| 40 | pub const WHALE_SUCCESS_RGB: (u8, u8, u8) = WHALE_WORKING_GREEN_RGB; // completed / verified |
| 41 | pub const WHALE_INFO_RGB: (u8, u8, u8) = WHALE_ACTION_RGB; |
| 42 | pub const WHALE_BORDER_RGB: (u8, u8, u8) = (38, 62, 92); // #263E5C, blue at 25% on stage |
| 43 | pub const WHALE_REASONING_TEXT_RGB: (u8, u8, u8) = (224, 153, 72); // #E09948 |
| 44 | pub const WHALE_REASONING_SURFACE_RGB: (u8, u8, u8) = (42, 34, 24); // #2A2218 |
| 45 | pub const WHALE_REASONING_TINT_RGB: (u8, u8, u8) = (24, 36, 52); // #182434 |
| 46 | |
| 47 | // Solarized Light palette RGB tuples |
| 48 | pub const SOLARIZED_BASE03_RGB: (u8, u8, u8) = (0x00, 0x2B, 0x36); |
| 49 | pub const SOLARIZED_BASE02_RGB: (u8, u8, u8) = (0x07, 0x36, 0x42); |
| 50 | pub const SOLARIZED_BASE01_RGB: (u8, u8, u8) = (0x52, 0x66, 0x6D); // lifted for 4.5:1 muted text |
| 51 | pub const SOLARIZED_BASE00_RGB: (u8, u8, u8) = (0x65, 0x7B, 0x83); |
| 52 | pub const SOLARIZED_BASE0_RGB: (u8, u8, u8) = (0x72, 0x81, 0x82); // lifted for 3:1 hint text |
| 53 | pub const SOLARIZED_BASE1_RGB: (u8, u8, u8) = (0x93, 0xA1, 0xA1); |
| 54 | #[allow(dead_code)] |
| 55 | pub const SOLARIZED_BASE2_RGB: (u8, u8, u8) = (0xEE, 0xE8, 0xD5); |
| 56 | pub const SOLARIZED_BASE3_RGB: (u8, u8, u8) = (0xFD, 0xF6, 0xE3); |
| 57 | pub const SOLARIZED_YELLOW_RGB: (u8, u8, u8) = (0xB4, 0x88, 0x00); // lifted for 3:1 on ivory |
| 58 | pub const SOLARIZED_ORANGE_RGB: (u8, u8, u8) = (0xCB, 0x4B, 0x16); |
| 59 | pub const SOLARIZED_RED_RGB: (u8, u8, u8) = (0xDC, 0x32, 0x2F); |
| 60 | pub const SOLARIZED_BLUE_RGB: (u8, u8, u8) = (0x26, 0x8B, 0xD2); |
| 61 | pub const SOLARIZED_CYAN_RGB: (u8, u8, u8) = (0x29, 0x9E, 0x96); // lifted for 3:1 on ivory |
| 62 | pub const SOLARIZED_GREEN_RGB: (u8, u8, u8) = (0x7F, 0x92, 0x00); // lifted for 3:1 on ivory/diff bg |
| 63 | pub const SOLARIZED_PANEL_RGB: (u8, u8, u8) = (0xF0, 0xED, 0xE7); |
| 64 | pub const SOLARIZED_ELEVATED_RGB: (u8, u8, u8) = (0xE4, 0xDF, 0xCF); |
| 65 | pub const SOLARIZED_SELECT_RGB: (u8, u8, u8) = (0xD6, 0xD2, 0xC9); |
| 66 | |
| 67 | pub const WHALE_DIFF_ADDED_RGB: (u8, u8, u8) = (87, 199, 133); // #57C785 |
| 68 | #[allow(dead_code)] |
| 69 | pub const WHALE_DIFF_DELETED_RGB: (u8, u8, u8) = WHALE_ERROR_RGB; |
| 70 | pub const WHALE_DIFF_ADDED_BG_RGB: (u8, u8, u8) = (18, 42, 34); // #122A22 |
| 71 | // Raw colors that are remapped by equality must remain distinct across roles. |
| 72 | // These stay in the same perceptual families as action, danger, and human asks |
| 73 | // while preserving mode identity for Terminal and community themes. |
| 74 | pub const WHALE_DIFF_DELETED_BG_RGB: (u8, u8, u8) = (52, 24, 39); // #341827 |
| 75 | pub const WHALE_MODE_AGENT_RGB: (u8, u8, u8) = (118, 181, 245); // #76B5F5 |
| 76 | pub const WHALE_MODE_YOLO_RGB: (u8, u8, u8) = (255, 112, 160); // #FF70A0 |
| 77 | pub const WHALE_MODE_PLAN_RGB: (u8, u8, u8) = (185, 220, 236); // #B9DCEC Structural Ice |
| 78 | pub const WHALE_MODE_OPERATE_RGB: (u8, u8, u8) = (173, 136, 255); // #AD88FF |
| 79 | pub const WHALE_TOOL_LIVE_RGB: (u8, u8, u8) = WHALE_ACCENT_SECONDARY_RGB; |
| 80 | pub const WHALE_TOOL_ISSUE_RGB: (u8, u8, u8) = WHALE_ERROR_RGB; |
| 81 | pub const WHALE_TOOL_OUTPUT_RGB: (u8, u8, u8) = WHALE_TEXT_SOFT_RGB; |
| 82 | pub const WHALE_TOOL_SURFACE_RGB: (u8, u8, u8) = (18, 29, 50); // #121D32 |
| 83 | pub const WHALE_TOOL_ACTIVE_RGB: (u8, u8, u8) = (27, 44, 68); // #1B2C44 |
| 84 | |
| 85 | pub const LIGHT_SURFACE_RGB: (u8, u8, u8) = (244, 247, 251); // #F4F7FB |
| 86 | pub const LIGHT_PANEL_RGB: (u8, u8, u8) = (255, 253, 248); // #FFFDF8 |
| 87 | pub const LIGHT_ELEVATED_RGB: (u8, u8, u8) = (232, 238, 248); // #E8EEF8 |
| 88 | pub const LIGHT_REASONING_RGB: (u8, u8, u8) = (255, 246, 214); // #FFF6D6 |
| 89 | pub const LIGHT_SUCCESS_RGB: (u8, u8, u8) = (223, 247, 231); // #DFF7E7 |
| 90 | pub const LIGHT_SUCCESS_FG_RGB: (u8, u8, u8) = (20, 118, 61); // #14763D, readable on every light surface |
| 91 | pub const LIGHT_ERROR_RGB: (u8, u8, u8) = (252, 235, 242); // #FCEBF2 |
| 92 | pub const LIGHT_TEXT_BODY_RGB: (u8, u8, u8) = (20, 33, 58); // #14213A |
| 93 | pub const LIGHT_TEXT_MUTED_RGB: (u8, u8, u8) = (91, 103, 128); // #5B6780 |
| 94 | pub const LIGHT_TEXT_HINT_RGB: (u8, u8, u8) = (95, 107, 129); // #5F6B81 |
| 95 | pub const LIGHT_TEXT_SOFT_RGB: (u8, u8, u8) = (69, 81, 104); // #455168 |
| 96 | pub const LIGHT_ACTION_RGB: (u8, u8, u8) = (49, 95, 216); // #315FD8 Cobalt |
| 97 | pub const LIGHT_LIVE_RGB: (u8, u8, u8) = (8, 118, 109); // #08766D |
| 98 | pub const LIGHT_HUMAN_RGB: (u8, u8, u8) = (122, 85, 0); // #7A5500 |
| 99 | pub const LIGHT_WARNING_RGB: (u8, u8, u8) = (169, 71, 36); // #A94724 |
| 100 | pub const LIGHT_DANGER_RGB: (u8, u8, u8) = (180, 35, 90); // #B4235A |
| 101 | // Mode shades stay in their parent semantic families while remaining distinct |
| 102 | // inputs to the render backend. A `Cell` carries only a `Color`, so reusing the |
| 103 | // exact action/human/danger value here would erase the mode role before ANSI |
| 104 | // adaptation can preserve it. |
| 105 | pub const LIGHT_MODE_AGENT_RGB: (u8, u8, u8) = (50, 95, 216); // #325FD8 |
| 106 | pub const LIGHT_MODE_YOLO_RGB: (u8, u8, u8) = (181, 35, 90); // #B5235A |
| 107 | pub const LIGHT_MODE_PLAN_RGB: (u8, u8, u8) = (52, 92, 128); // #345C80 Structural steel-blue |
| 108 | pub const LIGHT_OPERATE_RGB: (u8, u8, u8) = (112, 71, 184); // #7047B8 |
| 109 | |
| 110 | // Solarized Light palette colors |
| 111 | pub const SOLARIZED_TEXT_DIM: Color = Color::Rgb( |
| 112 | SOLARIZED_BASE00_RGB.0, |
| 113 | SOLARIZED_BASE00_RGB.1, |
| 114 | SOLARIZED_BASE00_RGB.2, |
| 115 | ); |
| 116 | pub const SOLARIZED_TEXT_HINT: Color = Color::Rgb( |
| 117 | SOLARIZED_BASE0_RGB.0, |
| 118 | SOLARIZED_BASE0_RGB.1, |
| 119 | SOLARIZED_BASE0_RGB.2, |
| 120 | ); |
| 121 | pub const SOLARIZED_TEXT_MUTED: Color = Color::Rgb( |
| 122 | SOLARIZED_BASE01_RGB.0, |
| 123 | SOLARIZED_BASE01_RGB.1, |
| 124 | SOLARIZED_BASE01_RGB.2, |
| 125 | ); |
| 126 | pub const SOLARIZED_TEXT_BODY: Color = Color::Rgb( |
| 127 | SOLARIZED_BASE03_RGB.0, |
| 128 | SOLARIZED_BASE03_RGB.1, |
| 129 | SOLARIZED_BASE03_RGB.2, |
| 130 | ); |
| 131 | pub const SOLARIZED_TEXT_SOFT: Color = Color::Rgb( |
| 132 | SOLARIZED_BASE02_RGB.0, |
| 133 | SOLARIZED_BASE02_RGB.1, |
| 134 | SOLARIZED_BASE02_RGB.2, |
| 135 | ); |
| 136 | pub const SOLARIZED_BORDER: Color = Color::Rgb( |
| 137 | SOLARIZED_BASE1_RGB.0, |
| 138 | SOLARIZED_BASE1_RGB.1, |
| 139 | SOLARIZED_BASE1_RGB.2, |
| 140 | ); |
| 141 | pub const SOLARIZED_BLUE: Color = Color::Rgb( |
| 142 | SOLARIZED_BLUE_RGB.0, |
| 143 | SOLARIZED_BLUE_RGB.1, |
| 144 | SOLARIZED_BLUE_RGB.2, |
| 145 | ); |
| 146 | pub const SOLARIZED_CYAN: Color = Color::Rgb( |
| 147 | SOLARIZED_CYAN_RGB.0, |
| 148 | SOLARIZED_CYAN_RGB.1, |
| 149 | SOLARIZED_CYAN_RGB.2, |
| 150 | ); |
| 151 | pub const SOLARIZED_RED: Color = Color::Rgb( |
| 152 | SOLARIZED_RED_RGB.0, |
| 153 | SOLARIZED_RED_RGB.1, |
| 154 | SOLARIZED_RED_RGB.2, |
| 155 | ); |
| 156 | pub const SOLARIZED_ORANGE: Color = Color::Rgb( |
| 157 | SOLARIZED_ORANGE_RGB.0, |
| 158 | SOLARIZED_ORANGE_RGB.1, |
| 159 | SOLARIZED_ORANGE_RGB.2, |
| 160 | ); |
| 161 | pub const SOLARIZED_YELLOW: Color = Color::Rgb( |
| 162 | SOLARIZED_YELLOW_RGB.0, |
| 163 | SOLARIZED_YELLOW_RGB.1, |
| 164 | SOLARIZED_YELLOW_RGB.2, |
| 165 | ); |
| 166 | pub const SOLARIZED_GREEN: Color = Color::Rgb( |
| 167 | SOLARIZED_GREEN_RGB.0, |
| 168 | SOLARIZED_GREEN_RGB.1, |
| 169 | SOLARIZED_GREEN_RGB.2, |
| 170 | ); |
| 171 | pub const SOLARIZED_SURFACE: Color = Color::Rgb( |
| 172 | SOLARIZED_BASE3_RGB.0, |
| 173 | SOLARIZED_BASE3_RGB.1, |
| 174 | SOLARIZED_BASE3_RGB.2, |
| 175 | ); |
| 176 | pub const SOLARIZED_PANEL: Color = Color::Rgb( |
| 177 | SOLARIZED_PANEL_RGB.0, |
| 178 | SOLARIZED_PANEL_RGB.1, |
| 179 | SOLARIZED_PANEL_RGB.2, |
| 180 | ); |
| 181 | pub const SOLARIZED_ELEVATED: Color = Color::Rgb( |
| 182 | SOLARIZED_ELEVATED_RGB.0, |
| 183 | SOLARIZED_ELEVATED_RGB.1, |
| 184 | SOLARIZED_ELEVATED_RGB.2, |
| 185 | ); |
| 186 | pub const SOLARIZED_SELECT_BG: Color = Color::Rgb( |
| 187 | SOLARIZED_SELECT_RGB.0, |
| 188 | SOLARIZED_SELECT_RGB.1, |
| 189 | SOLARIZED_SELECT_RGB.2, |
| 190 | ); |
| 191 | pub const SOLARIZED_DIFF_ADDED_BG: Color = Color::Rgb(0xEA, 0xF2, 0xE0); |
| 192 | pub const SOLARIZED_ERROR_SURFACE: Color = Color::Rgb(0xFD, 0xEE, 0xEB); |
| 193 | /// Same tone as the error surface; kept as a distinct alias for diff context. |
| 194 | pub const SOLARIZED_DIFF_DELETED_BG: Color = SOLARIZED_ERROR_SURFACE; |
| 195 | pub const SOLARIZED_ERROR_TEXT: Color = Color::Rgb(0x8B, 0x00, 0x00); |
| 196 | pub const SOLARIZED_ERROR_HOVER: Color = Color::Rgb(0xE0, 0x55, 0x52); |
| 197 | pub const SOLARIZED_COMPOSER: Color = Color::Rgb( |
| 198 | SOLARIZED_PANEL_RGB.0, |
| 199 | SOLARIZED_PANEL_RGB.1, |
| 200 | SOLARIZED_PANEL_RGB.2, |
| 201 | ); |
| 202 | |
| 203 | pub const LIGHT_BORDER_RGB: (u8, u8, u8) = (169, 184, 207); // #A9B8CF |
| 204 | pub const LIGHT_SELECTION_RGB: (u8, u8, u8) = (238, 246, 255); // #EEF6FF |
| 205 | pub const GRAYSCALE_SURFACE_RGB: (u8, u8, u8) = (10, 10, 10); // #0A0A0A |
| 206 | pub const GRAYSCALE_PANEL_RGB: (u8, u8, u8) = (18, 18, 18); // #121212 |
| 207 | pub const GRAYSCALE_ELEVATED_RGB: (u8, u8, u8) = (31, 31, 31); // #1F1F1F |
| 208 | pub const GRAYSCALE_REASONING_RGB: (u8, u8, u8) = (38, 38, 38); // #262626 |
| 209 | pub const GRAYSCALE_SUCCESS_RGB: (u8, u8, u8) = (34, 34, 34); // #222222 |
| 210 | pub const GRAYSCALE_ERROR_RGB: (u8, u8, u8) = (42, 42, 42); // #2A2A2A |
| 211 | pub const GRAYSCALE_TEXT_BODY_RGB: (u8, u8, u8) = (236, 236, 236); // #ECECEC |
| 212 | pub const GRAYSCALE_TEXT_MUTED_RGB: (u8, u8, u8) = (180, 180, 180); // #B4B4B4 |
| 213 | pub const GRAYSCALE_TEXT_HINT_RGB: (u8, u8, u8) = (138, 138, 138); // #8A8A8A |
| 214 | pub const GRAYSCALE_TEXT_SOFT_RGB: (u8, u8, u8) = (220, 220, 220); // #DCDCDC |
| 215 | pub const GRAYSCALE_BORDER_RGB: (u8, u8, u8) = (96, 96, 96); // #606060 |
| 216 | pub const GRAYSCALE_SELECTION_RGB: (u8, u8, u8) = (62, 62, 62); // #3E3E3E |
| 217 | |
| 218 | pub const MATRIX_SURFACE_RGB: (u8, u8, u8) = (0, 10, 0); // #000A00 |
| 219 | pub const MATRIX_ELEVATED_RGB: (u8, u8, u8) = (0, 51, 0); // #003300 |
| 220 | pub const MATRIX_SELECTION_RGB: (u8, u8, u8) = (0, 51, 0); // #003300 |
| 221 | pub const MATRIX_TEXT_BODY_RGB: (u8, u8, u8) = (136, 255, 136); // #88FF88 |
| 222 | pub const MATRIX_TEXT_MUTED_RGB: (u8, u8, u8) = (0, 169, 0); // #00A900, lifted for 4.5:1 |
| 223 | pub const MATRIX_TEXT_HINT_RGB: (u8, u8, u8) = (0, 135, 0); // #008700, lifted for 3:1 |
| 224 | pub const MATRIX_TEXT_SOFT_RGB: (u8, u8, u8) = (221, 255, 221); // #DDFFDD |
| 225 | pub const MATRIX_TEXT_DIM_RGB: (u8, u8, u8) = (0, 108, 0); // #006C00, lifted for 3:1 |
| 226 | pub const MATRIX_BORDER_RGB: (u8, u8, u8) = (0, 204, 0); // #00CC00 |
| 227 | |
| 228 | // Semantic colors |
| 229 | pub const BORDER_COLOR_RGB: (u8, u8, u8) = WHALE_BORDER_RGB; |
| 230 | |
| 231 | pub const WHALE_ACCENT_PRIMARY: Color = Color::Rgb( |
| 232 | WHALE_ACCENT_PRIMARY_RGB.0, |
| 233 | WHALE_ACCENT_PRIMARY_RGB.1, |
| 234 | WHALE_ACCENT_PRIMARY_RGB.2, |
| 235 | ); |
| 236 | pub const WHALE_ACTION: Color = |
| 237 | Color::Rgb(WHALE_ACTION_RGB.0, WHALE_ACTION_RGB.1, WHALE_ACTION_RGB.2); |
| 238 | pub const WHALE_LIVE: Color = Color::Rgb( |
| 239 | WHALE_ACCENT_SECONDARY_RGB.0, |
| 240 | WHALE_ACCENT_SECONDARY_RGB.1, |
| 241 | WHALE_ACCENT_SECONDARY_RGB.2, |
| 242 | ); |
| 243 | pub const WHALE_HUMAN: Color = Color::Rgb(WHALE_HUMAN_RGB.0, WHALE_HUMAN_RGB.1, WHALE_HUMAN_RGB.2); |
| 244 | pub const WHALE_INFO: Color = Color::Rgb(WHALE_INFO_RGB.0, WHALE_INFO_RGB.1, WHALE_INFO_RGB.2); |
| 245 | pub const WHALE_BG: Color = Color::Rgb(WHALE_BG_RGB.0, WHALE_BG_RGB.1, WHALE_BG_RGB.2); |
| 246 | pub const WHALE_CHROME: Color = |
| 247 | Color::Rgb(WHALE_CHROME_RGB.0, WHALE_CHROME_RGB.1, WHALE_CHROME_RGB.2); |
| 248 | pub const WHALE_PANEL: Color = Color::Rgb(WHALE_PANEL_RGB.0, WHALE_PANEL_RGB.1, WHALE_PANEL_RGB.2); |
| 249 | pub const WHALE_COMPOSER: Color = Color::Rgb( |
| 250 | WHALE_COMPOSER_RGB.0, |
| 251 | WHALE_COMPOSER_RGB.1, |
| 252 | WHALE_COMPOSER_RGB.2, |
| 253 | ); |
| 254 | pub const WHALE_ERROR: Color = Color::Rgb(WHALE_ERROR_RGB.0, WHALE_ERROR_RGB.1, WHALE_ERROR_RGB.2); |
| 255 | |
| 256 | pub const LIGHT_SURFACE: Color = Color::Rgb( |
| 257 | LIGHT_SURFACE_RGB.0, |
| 258 | LIGHT_SURFACE_RGB.1, |
| 259 | LIGHT_SURFACE_RGB.2, |
| 260 | ); |
| 261 | pub const LIGHT_PANEL: Color = Color::Rgb(LIGHT_PANEL_RGB.0, LIGHT_PANEL_RGB.1, LIGHT_PANEL_RGB.2); |
| 262 | pub const LIGHT_ELEVATED: Color = Color::Rgb( |
| 263 | LIGHT_ELEVATED_RGB.0, |
| 264 | LIGHT_ELEVATED_RGB.1, |
| 265 | LIGHT_ELEVATED_RGB.2, |
| 266 | ); |
| 267 | pub const LIGHT_REASONING: Color = Color::Rgb( |
| 268 | LIGHT_REASONING_RGB.0, |
| 269 | LIGHT_REASONING_RGB.1, |
| 270 | LIGHT_REASONING_RGB.2, |
| 271 | ); |
| 272 | pub const LIGHT_SUCCESS: Color = Color::Rgb( |
| 273 | LIGHT_SUCCESS_RGB.0, |
| 274 | LIGHT_SUCCESS_RGB.1, |
| 275 | LIGHT_SUCCESS_RGB.2, |
| 276 | ); |
| 277 | pub const LIGHT_SUCCESS_FG: Color = Color::Rgb( |
| 278 | LIGHT_SUCCESS_FG_RGB.0, |
| 279 | LIGHT_SUCCESS_FG_RGB.1, |
| 280 | LIGHT_SUCCESS_FG_RGB.2, |
| 281 | ); |
| 282 | pub const LIGHT_ERROR: Color = Color::Rgb(LIGHT_ERROR_RGB.0, LIGHT_ERROR_RGB.1, LIGHT_ERROR_RGB.2); |
| 283 | pub const LIGHT_TEXT_BODY: Color = Color::Rgb( |
| 284 | LIGHT_TEXT_BODY_RGB.0, |
| 285 | LIGHT_TEXT_BODY_RGB.1, |
| 286 | LIGHT_TEXT_BODY_RGB.2, |
| 287 | ); |
| 288 | pub const LIGHT_TEXT_MUTED: Color = Color::Rgb( |
| 289 | LIGHT_TEXT_MUTED_RGB.0, |
| 290 | LIGHT_TEXT_MUTED_RGB.1, |
| 291 | LIGHT_TEXT_MUTED_RGB.2, |
| 292 | ); |
| 293 | pub const LIGHT_TEXT_HINT: Color = Color::Rgb( |
| 294 | LIGHT_TEXT_HINT_RGB.0, |
| 295 | LIGHT_TEXT_HINT_RGB.1, |
| 296 | LIGHT_TEXT_HINT_RGB.2, |
| 297 | ); |
| 298 | pub const LIGHT_TEXT_SOFT: Color = Color::Rgb( |
| 299 | LIGHT_TEXT_SOFT_RGB.0, |
| 300 | LIGHT_TEXT_SOFT_RGB.1, |
| 301 | LIGHT_TEXT_SOFT_RGB.2, |
| 302 | ); |
| 303 | pub const LIGHT_ACTION: Color = |
| 304 | Color::Rgb(LIGHT_ACTION_RGB.0, LIGHT_ACTION_RGB.1, LIGHT_ACTION_RGB.2); |
| 305 | pub const LIGHT_LIVE: Color = Color::Rgb(LIGHT_LIVE_RGB.0, LIGHT_LIVE_RGB.1, LIGHT_LIVE_RGB.2); |
| 306 | pub const LIGHT_HUMAN: Color = Color::Rgb(LIGHT_HUMAN_RGB.0, LIGHT_HUMAN_RGB.1, LIGHT_HUMAN_RGB.2); |
| 307 | pub const LIGHT_WARNING: Color = Color::Rgb( |
| 308 | LIGHT_WARNING_RGB.0, |
| 309 | LIGHT_WARNING_RGB.1, |
| 310 | LIGHT_WARNING_RGB.2, |
| 311 | ); |
| 312 | pub const LIGHT_DANGER: Color = |
| 313 | Color::Rgb(LIGHT_DANGER_RGB.0, LIGHT_DANGER_RGB.1, LIGHT_DANGER_RGB.2); |
| 314 | pub const LIGHT_MODE_AGENT: Color = Color::Rgb( |
| 315 | LIGHT_MODE_AGENT_RGB.0, |
| 316 | LIGHT_MODE_AGENT_RGB.1, |
| 317 | LIGHT_MODE_AGENT_RGB.2, |
| 318 | ); |
| 319 | pub const LIGHT_MODE_YOLO: Color = Color::Rgb( |
| 320 | LIGHT_MODE_YOLO_RGB.0, |
| 321 | LIGHT_MODE_YOLO_RGB.1, |
| 322 | LIGHT_MODE_YOLO_RGB.2, |
| 323 | ); |
| 324 | pub const LIGHT_MODE_PLAN: Color = Color::Rgb( |
| 325 | LIGHT_MODE_PLAN_RGB.0, |
| 326 | LIGHT_MODE_PLAN_RGB.1, |
| 327 | LIGHT_MODE_PLAN_RGB.2, |
| 328 | ); |
| 329 | pub const LIGHT_OPERATE: Color = Color::Rgb( |
| 330 | LIGHT_OPERATE_RGB.0, |
| 331 | LIGHT_OPERATE_RGB.1, |
| 332 | LIGHT_OPERATE_RGB.2, |
| 333 | ); |
| 334 | pub const LIGHT_BORDER: Color = |
| 335 | Color::Rgb(LIGHT_BORDER_RGB.0, LIGHT_BORDER_RGB.1, LIGHT_BORDER_RGB.2); |
| 336 | pub const LIGHT_SELECTION_BG: Color = Color::Rgb( |
| 337 | LIGHT_SELECTION_RGB.0, |
| 338 | LIGHT_SELECTION_RGB.1, |
| 339 | LIGHT_SELECTION_RGB.2, |
| 340 | ); |
| 341 | pub const GRAYSCALE_SURFACE: Color = Color::Rgb( |
| 342 | GRAYSCALE_SURFACE_RGB.0, |
| 343 | GRAYSCALE_SURFACE_RGB.1, |
| 344 | GRAYSCALE_SURFACE_RGB.2, |
| 345 | ); |
| 346 | pub const GRAYSCALE_PANEL: Color = Color::Rgb( |
| 347 | GRAYSCALE_PANEL_RGB.0, |
| 348 | GRAYSCALE_PANEL_RGB.1, |
| 349 | GRAYSCALE_PANEL_RGB.2, |
| 350 | ); |
| 351 | pub const GRAYSCALE_ELEVATED: Color = Color::Rgb( |
| 352 | GRAYSCALE_ELEVATED_RGB.0, |
| 353 | GRAYSCALE_ELEVATED_RGB.1, |
| 354 | GRAYSCALE_ELEVATED_RGB.2, |
| 355 | ); |
| 356 | pub const GRAYSCALE_REASONING: Color = Color::Rgb( |
| 357 | GRAYSCALE_REASONING_RGB.0, |
| 358 | GRAYSCALE_REASONING_RGB.1, |
| 359 | GRAYSCALE_REASONING_RGB.2, |
| 360 | ); |
| 361 | pub const GRAYSCALE_SUCCESS: Color = Color::Rgb( |
| 362 | GRAYSCALE_SUCCESS_RGB.0, |
| 363 | GRAYSCALE_SUCCESS_RGB.1, |
| 364 | GRAYSCALE_SUCCESS_RGB.2, |
| 365 | ); |
| 366 | pub const GRAYSCALE_ERROR: Color = Color::Rgb( |
| 367 | GRAYSCALE_ERROR_RGB.0, |
| 368 | GRAYSCALE_ERROR_RGB.1, |
| 369 | GRAYSCALE_ERROR_RGB.2, |
| 370 | ); |
| 371 | pub const GRAYSCALE_TEXT_BODY: Color = Color::Rgb( |
| 372 | GRAYSCALE_TEXT_BODY_RGB.0, |
| 373 | GRAYSCALE_TEXT_BODY_RGB.1, |
| 374 | GRAYSCALE_TEXT_BODY_RGB.2, |
| 375 | ); |
| 376 | pub const GRAYSCALE_TEXT_MUTED: Color = Color::Rgb( |
| 377 | GRAYSCALE_TEXT_MUTED_RGB.0, |
| 378 | GRAYSCALE_TEXT_MUTED_RGB.1, |
| 379 | GRAYSCALE_TEXT_MUTED_RGB.2, |
| 380 | ); |
| 381 | pub const GRAYSCALE_TEXT_HINT: Color = Color::Rgb( |
| 382 | GRAYSCALE_TEXT_HINT_RGB.0, |
| 383 | GRAYSCALE_TEXT_HINT_RGB.1, |
| 384 | GRAYSCALE_TEXT_HINT_RGB.2, |
| 385 | ); |
| 386 | pub const GRAYSCALE_TEXT_SOFT: Color = Color::Rgb( |
| 387 | GRAYSCALE_TEXT_SOFT_RGB.0, |
| 388 | GRAYSCALE_TEXT_SOFT_RGB.1, |
| 389 | GRAYSCALE_TEXT_SOFT_RGB.2, |
| 390 | ); |
| 391 | pub const GRAYSCALE_BORDER: Color = Color::Rgb( |
| 392 | GRAYSCALE_BORDER_RGB.0, |
| 393 | GRAYSCALE_BORDER_RGB.1, |
| 394 | GRAYSCALE_BORDER_RGB.2, |
| 395 | ); |
| 396 | pub const GRAYSCALE_SELECTION_BG: Color = Color::Rgb( |
| 397 | GRAYSCALE_SELECTION_RGB.0, |
| 398 | GRAYSCALE_SELECTION_RGB.1, |
| 399 | GRAYSCALE_SELECTION_RGB.2, |
| 400 | ); |
| 401 | |
| 402 | pub const TEXT_BODY: Color = Color::Rgb( |
| 403 | WHALE_TEXT_BODY_RGB.0, |
| 404 | WHALE_TEXT_BODY_RGB.1, |
| 405 | WHALE_TEXT_BODY_RGB.2, |
| 406 | ); |
| 407 | pub const TEXT_SECONDARY: Color = Color::Rgb( |
| 408 | WHALE_TEXT_MUTED_RGB.0, |
| 409 | WHALE_TEXT_MUTED_RGB.1, |
| 410 | WHALE_TEXT_MUTED_RGB.2, |
| 411 | ); |
| 412 | pub const TEXT_HINT: Color = Color::Rgb( |
| 413 | WHALE_TEXT_HINT_RGB.0, |
| 414 | WHALE_TEXT_HINT_RGB.1, |
| 415 | WHALE_TEXT_HINT_RGB.2, |
| 416 | ); |
| 417 | pub const TEXT_ACCENT: Color = Color::Rgb( |
| 418 | WHALE_ACCENT_SECONDARY_RGB.0, |
| 419 | WHALE_ACCENT_SECONDARY_RGB.1, |
| 420 | WHALE_ACCENT_SECONDARY_RGB.2, |
| 421 | ); |
| 422 | pub const SELECTION_TEXT: Color = Color::Rgb( |
| 423 | WHALE_TEXT_BODY_RGB.0, |
| 424 | WHALE_TEXT_BODY_RGB.1, |
| 425 | WHALE_TEXT_BODY_RGB.2, |
| 426 | ); // Ivory — softer than pure white |
| 427 | pub const TEXT_SOFT: Color = Color::Rgb( |
| 428 | WHALE_TEXT_SOFT_RGB.0, |
| 429 | WHALE_TEXT_SOFT_RGB.1, |
| 430 | WHALE_TEXT_SOFT_RGB.2, |
| 431 | ); |
| 432 | pub const TEXT_REASONING: Color = Color::Rgb( |
| 433 | WHALE_REASONING_TEXT_RGB.0, |
| 434 | WHALE_REASONING_TEXT_RGB.1, |
| 435 | WHALE_REASONING_TEXT_RGB.2, |
| 436 | ); |
| 437 | |
| 438 | // Compatibility aliases for existing call sites. |
| 439 | pub const TEXT_PRIMARY: Color = TEXT_BODY; |
| 440 | pub const TEXT_MUTED: Color = TEXT_SECONDARY; |
| 441 | pub const TEXT_DIM: Color = TEXT_HINT; |
| 442 | pub const USER_BODY: Color = Color::Rgb(74, 222, 128); // #4ADE80 green |
| 443 | pub const LIGHT_USER_BODY: Color = LIGHT_SUCCESS_FG; |
| 444 | |
| 445 | // Compatibility semantic colors for UI theming |
| 446 | pub const BORDER_COLOR: Color = |
| 447 | Color::Rgb(BORDER_COLOR_RGB.0, BORDER_COLOR_RGB.1, BORDER_COLOR_RGB.2); |
| 448 | #[allow(dead_code)] |
| 449 | pub const ACCENT_PRIMARY: Color = Color::Rgb( |
| 450 | WHALE_ACCENT_PRIMARY_RGB.0, |
| 451 | WHALE_ACCENT_PRIMARY_RGB.1, |
| 452 | WHALE_ACCENT_PRIMARY_RGB.2, |
| 453 | ); |
| 454 | #[allow(dead_code)] |
| 455 | pub const ACCENT_SECONDARY: Color = Color::Rgb( |
| 456 | WHALE_ACCENT_SECONDARY_RGB.0, |
| 457 | WHALE_ACCENT_SECONDARY_RGB.1, |
| 458 | WHALE_ACCENT_SECONDARY_RGB.2, |
| 459 | ); |
| 460 | #[allow(dead_code)] |
| 461 | pub const BACKGROUND_DARK: Color = Color::Rgb(WHALE_BG_RGB.0, WHALE_BG_RGB.1, WHALE_BG_RGB.2); |
| 462 | #[allow(dead_code)] |
| 463 | pub const STATUS_NEUTRAL: Color = TEXT_MUTED; |
| 464 | #[allow(dead_code)] |
| 465 | pub const SURFACE_PANEL: Color = |
| 466 | Color::Rgb(WHALE_PANEL_RGB.0, WHALE_PANEL_RGB.1, WHALE_PANEL_RGB.2); |
| 467 | #[allow(dead_code)] |
| 468 | pub const SURFACE_ELEVATED: Color = Color::Rgb( |
| 469 | WHALE_ELEVATED_RGB.0, |
| 470 | WHALE_ELEVATED_RGB.1, |
| 471 | WHALE_ELEVATED_RGB.2, |
| 472 | ); |
| 473 | pub const SURFACE_REASONING: Color = Color::Rgb( |
| 474 | WHALE_REASONING_SURFACE_RGB.0, |
| 475 | WHALE_REASONING_SURFACE_RGB.1, |
| 476 | WHALE_REASONING_SURFACE_RGB.2, |
| 477 | ); |
| 478 | pub const SURFACE_REASONING_TINT: Color = Color::Rgb( |
| 479 | WHALE_REASONING_TINT_RGB.0, |
| 480 | WHALE_REASONING_TINT_RGB.1, |
| 481 | WHALE_REASONING_TINT_RGB.2, |
| 482 | ); |
| 483 | #[allow(dead_code)] |
| 484 | pub const SURFACE_REASONING_ACTIVE: Color = Color::Rgb(58, 46, 32); |
| 485 | #[allow(dead_code)] |
| 486 | pub const SURFACE_TOOL: Color = Color::Rgb( |
| 487 | WHALE_TOOL_SURFACE_RGB.0, |
| 488 | WHALE_TOOL_SURFACE_RGB.1, |
| 489 | WHALE_TOOL_SURFACE_RGB.2, |
| 490 | ); |
| 491 | pub const SURFACE_TOOL_ACTIVE: Color = Color::Rgb( |
| 492 | WHALE_TOOL_ACTIVE_RGB.0, |
| 493 | WHALE_TOOL_ACTIVE_RGB.1, |
| 494 | WHALE_TOOL_ACTIVE_RGB.2, |
| 495 | ); |
| 496 | #[allow(dead_code)] |
| 497 | pub const SURFACE_SUCCESS: Color = Color::Rgb(18, 42, 37); // dark teal tint |
| 498 | #[allow(dead_code)] |
| 499 | pub const SURFACE_ERROR: Color = Color::Rgb( |
| 500 | WHALE_ERROR_SURFACE_RGB.0, |
| 501 | WHALE_ERROR_SURFACE_RGB.1, |
| 502 | WHALE_ERROR_SURFACE_RGB.2, |
| 503 | ); |
| 504 | pub const DIFF_ADDED_BG: Color = Color::Rgb( |
| 505 | WHALE_DIFF_ADDED_BG_RGB.0, |
| 506 | WHALE_DIFF_ADDED_BG_RGB.1, |
| 507 | WHALE_DIFF_ADDED_BG_RGB.2, |
| 508 | ); |
| 509 | pub const DIFF_DELETED_BG: Color = Color::Rgb( |
| 510 | WHALE_DIFF_DELETED_BG_RGB.0, |
| 511 | WHALE_DIFF_DELETED_BG_RGB.1, |
| 512 | WHALE_DIFF_DELETED_BG_RGB.2, |
| 513 | ); |
| 514 | pub const DIFF_ADDED: Color = Color::Rgb( |
| 515 | WHALE_DIFF_ADDED_RGB.0, |
| 516 | WHALE_DIFF_ADDED_RGB.1, |
| 517 | WHALE_DIFF_ADDED_RGB.2, |
| 518 | ); |
| 519 | pub const ACCENT_REASONING_LIVE: Color = Color::Rgb( |
| 520 | WHALE_REASONING_TEXT_RGB.0, |
| 521 | WHALE_REASONING_TEXT_RGB.1, |
| 522 | WHALE_REASONING_TEXT_RGB.2, |
| 523 | ); |
| 524 | pub const ACCENT_TOOL_LIVE: Color = Color::Rgb( |
| 525 | WHALE_TOOL_LIVE_RGB.0, |
| 526 | WHALE_TOOL_LIVE_RGB.1, |
| 527 | WHALE_TOOL_LIVE_RGB.2, |
| 528 | ); |
| 529 | pub const ACCENT_TOOL_ISSUE: Color = Color::Rgb( |
| 530 | WHALE_TOOL_ISSUE_RGB.0, |
| 531 | WHALE_TOOL_ISSUE_RGB.1, |
| 532 | WHALE_TOOL_ISSUE_RGB.2, |
| 533 | ); |
| 534 | pub const TEXT_TOOL_OUTPUT: Color = Color::Rgb( |
| 535 | WHALE_TOOL_OUTPUT_RGB.0, |
| 536 | WHALE_TOOL_OUTPUT_RGB.1, |
| 537 | WHALE_TOOL_OUTPUT_RGB.2, |
| 538 | ); |
| 539 | |
| 540 | // Legacy status colors - keep for backward compatibility |
| 541 | pub const STATUS_SUCCESS: Color = Color::Rgb( |
| 542 | WHALE_SUCCESS_RGB.0, |
| 543 | WHALE_SUCCESS_RGB.1, |
| 544 | WHALE_SUCCESS_RGB.2, |
| 545 | ); |
| 546 | pub const STATUS_WARNING: Color = Color::Rgb( |
| 547 | WHALE_WARNING_RGB.0, |
| 548 | WHALE_WARNING_RGB.1, |
| 549 | WHALE_WARNING_RGB.2, |
| 550 | ); |
| 551 | pub const STATUS_ERROR: Color = Color::Rgb(WHALE_ERROR_RGB.0, WHALE_ERROR_RGB.1, WHALE_ERROR_RGB.2); |
| 552 | #[allow(dead_code)] |
| 553 | pub const STATUS_INFO: Color = Color::Rgb(WHALE_INFO_RGB.0, WHALE_INFO_RGB.1, WHALE_INFO_RGB.2); |
| 554 | |
| 555 | // Mode-specific accent colors for mode badges |
| 556 | pub const MODE_AGENT: Color = Color::Rgb( |
| 557 | WHALE_MODE_AGENT_RGB.0, |
| 558 | WHALE_MODE_AGENT_RGB.1, |
| 559 | WHALE_MODE_AGENT_RGB.2, |
| 560 | ); |
| 561 | pub const MODE_YOLO: Color = Color::Rgb( |
| 562 | WHALE_MODE_YOLO_RGB.0, |
| 563 | WHALE_MODE_YOLO_RGB.1, |
| 564 | WHALE_MODE_YOLO_RGB.2, |
| 565 | ); |
| 566 | pub const MODE_PLAN: Color = Color::Rgb( |
| 567 | WHALE_MODE_PLAN_RGB.0, |
| 568 | WHALE_MODE_PLAN_RGB.1, |
| 569 | WHALE_MODE_PLAN_RGB.2, |
| 570 | ); |
| 571 | pub const MODE_OPERATE: Color = Color::Rgb( |
| 572 | WHALE_MODE_OPERATE_RGB.0, |
| 573 | WHALE_MODE_OPERATE_RGB.1, |
| 574 | WHALE_MODE_OPERATE_RGB.2, |
| 575 | ); |
| 576 | |
| 577 | pub const SELECTION_BG: Color = Color::Rgb( |
| 578 | WHALE_SELECTION_RGB.0, |
| 579 | WHALE_SELECTION_RGB.1, |
| 580 | WHALE_SELECTION_RGB.2, |
| 581 | ); |
| 582 | #[allow(dead_code)] |
| 583 | pub const COMPOSER_BG: Color = WHALE_COMPOSER; |
| 584 |