[READ-ONLY] Mirror of https://github.com/bombshell-dev/clack. Effortlessly build beautiful command-line apps bomb.sh/docs/clack/basics/getting-started/
cli command-line command-line-app node prompt prompts
5

Configure Feed

Select the types of activity you want to include in your feed.

test(prompts): update snapshots

Nate Moore (Mar 26, 2026, 10:56 PM EDT) 017be501 6d091755

+4599 -4599
+461 -461
packages/prompts/src/__snapshots__/autocomplete.test.ts.snap
··· 3 3 exports[`autocomplete > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ foo 8 - │ 9 - │ Search: _ 10 - │ ● Apple 11 - │ ○ Banana 12 - │ ○ Cherry 13 - │ ○ Grape 14 - │ ○ Orange 15 - │ ↑/↓ to select • Enter: confirm • Type: to search 16 - └", 6 + "<dim>│</fg> 7 + <cyan>◆</fg> foo 8 + <cyan>│</fg> 9 + <cyan>│</fg> <dim>Search:</bold> _ 10 + <cyan>│</fg> <green>●</fg> Apple 11 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 12 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 13 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 14 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 15 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 16 + <cyan>└</fg>", 17 17 " 18 18 ", 19 19 "<cursor.show>", ··· 23 23 exports[`autocomplete > cannot select disabled options when only one left 1`] = ` 24 24 [ 25 25 "<cursor.hide>", 26 - "│ 27 - ◆ Select a fruit 28 - │ 29 - │ Search: _ 30 - │ ● Apple 31 - │ ○ Banana 32 - │ ○ Cherry 33 - │ ○ Grape 34 - │ ○ Orange 35 - │ ○ Kiwi 36 - │ ↑/↓ to select • Enter: confirm • Type: to search 37 - └", 26 + "<dim>│</fg> 27 + <cyan>◆</fg> Select a fruit 28 + <cyan>│</fg> 29 + <cyan>│</fg> <dim>Search:</bold> _ 30 + <cyan>│</fg> <green>●</fg> Apple 31 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 32 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 33 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 34 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 35 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 36 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 37 + <cyan>└</fg>", 38 38 "<cursor.backward count=999><cursor.up count=11>", 39 39 "<cursor.down count=3>", 40 40 "<erase.down>", 41 - "│ Search: k█ (1 match) 42 - │ ○ Kiwi 43 - │ ↑/↓ to select • Enter: confirm • Type: to search 44 - └", 41 + "<cyan>│</fg> <dim>Search:</bold> k█<dim> (1 match)</bold> 42 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 43 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 44 + <cyan>└</fg>", 45 45 "<cursor.backward count=999><cursor.up count=6>", 46 46 "<cursor.down count=1>", 47 47 "<erase.down>", 48 - "◇ Select a fruit 49 - │", 48 + "<green>◇</fg> Select a fruit 49 + <dim>│</fg>", 50 50 " 51 51 ", 52 52 "<cursor.show>", ··· 56 56 exports[`autocomplete > displays disabled options correctly 1`] = ` 57 57 [ 58 58 "<cursor.hide>", 59 - "│ 60 - ◆ Select a fruit 61 - │ 62 - │ Search: _ 63 - │ ● Apple 64 - │ ○ Banana 65 - │ ○ Cherry 66 - │ ○ Grape 67 - │ ○ Orange 68 - │ ○ Kiwi 69 - │ ↑/↓ to select • Enter: confirm • Type: to search 70 - └", 59 + "<dim>│</fg> 60 + <cyan>◆</fg> Select a fruit 61 + <cyan>│</fg> 62 + <cyan>│</fg> <dim>Search:</bold> _ 63 + <cyan>│</fg> <green>●</fg> Apple 64 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 65 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 66 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 67 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 68 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 69 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 70 + <cyan>└</fg>", 71 71 "<cursor.backward count=999><cursor.up count=11>", 72 72 "<cursor.down count=3>", 73 73 "<erase.down>", 74 - "│ Search: 75 - │ ○ Apple 76 - │ ● Banana 77 - │ ○ Cherry 78 - │ ○ Grape 79 - │ ○ Orange 80 - │ ○ Kiwi 81 - │ ↑/↓ to select • Enter: confirm • Type: to search 82 - └", 74 + "<cyan>│</fg> <dim>Search:</bold> 75 + <cyan>│</fg> <dim>○</bold> <dim>Apple</bold> 76 + <cyan>│</fg> <green>●</fg> Banana 77 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 78 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 79 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 80 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 81 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 82 + <cyan>└</fg>", 83 83 "<cursor.backward count=999><cursor.up count=11>", 84 84 "<cursor.down count=5>", 85 85 "<erase.down>", 86 - "│ ○ Banana 87 - │ ● Cherry 88 - │ ○ Grape 89 - │ ○ Orange 90 - │ ○ Kiwi 91 - │ ↑/↓ to select • Enter: confirm • Type: to search 92 - └", 86 + "<cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 87 + <cyan>│</fg> <green>●</fg> Cherry 88 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 89 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 90 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 91 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 92 + <cyan>└</fg>", 93 93 "<cursor.backward count=999><cursor.up count=11>", 94 94 "<cursor.down count=6>", 95 95 "<erase.down>", 96 - "│ ○ Cherry 97 - │ ● Grape 98 - │ ○ Orange 99 - │ ○ Kiwi 100 - │ ↑/↓ to select • Enter: confirm • Type: to search 101 - └", 96 + "<cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 97 + <cyan>│</fg> <green>●</fg> Grape 98 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 99 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 100 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 101 + <cyan>└</fg>", 102 102 "<cursor.backward count=999><cursor.up count=11>", 103 103 "<cursor.down count=7>", 104 104 "<erase.down>", 105 - "│ ○ Grape 106 - │ ● Orange 107 - │ ○ Kiwi 108 - │ ↑/↓ to select • Enter: confirm • Type: to search 109 - └", 105 + "<cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 106 + <cyan>│</fg> <green>●</fg> Orange 107 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 108 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 109 + <cyan>└</fg>", 110 110 "<cursor.backward count=999><cursor.up count=11>", 111 111 "<cursor.down count=4>", 112 112 "<erase.down>", 113 - "│ ● Apple 114 - │ ○ Banana 115 - │ ○ Cherry 116 - │ ○ Grape 117 - │ ○ Orange 118 - │ ○ Kiwi 119 - │ ↑/↓ to select • Enter: confirm • Type: to search 120 - └", 113 + "<cyan>│</fg> <green>●</fg> Apple 114 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 115 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 116 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 117 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 118 + <cyan>│</fg> <dim>○</fg> <dim>Kiwi</fg> 119 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 120 + <cyan>└</fg>", 121 121 "<cursor.backward count=999><cursor.up count=11>", 122 122 "<cursor.down count=1>", 123 123 "<erase.down>", 124 - "◇ Select a fruit 125 - │ Apple", 124 + "<green>◇</fg> Select a fruit 125 + <dim>│</fg> <dim>Apple</bold>", 126 126 " 127 127 ", 128 128 "<cursor.show>", ··· 132 132 exports[`autocomplete > limits displayed options when maxItems is set 1`] = ` 133 133 [ 134 134 "<cursor.hide>", 135 - "│ 136 - ◆ Select an option 137 - │ 138 - │ Search: _ 139 - │ ● Option 0 140 - │ ○ Option 1 141 - │ ○ Option 2 142 - │ ○ Option 3 143 - │ ○ Option 4 144 - │ ... 145 - │ ↑/↓ to select • Enter: confirm • Type: to search 146 - └", 135 + "<dim>│</fg> 136 + <cyan>◆</fg> Select an option 137 + <cyan>│</fg> 138 + <cyan>│</fg> <dim>Search:</bold> _ 139 + <cyan>│</fg> <green>●</fg> Option 0 140 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 141 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 142 + <cyan>│</fg> <dim>○</bold> <dim>Option 3</bold> 143 + <cyan>│</fg> <dim>○</bold> <dim>Option 4</bold> 144 + <cyan>│</fg> <dim>...</bold> 145 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 146 + <cyan>└</fg>", 147 147 "<cursor.backward count=999><cursor.up count=11>", 148 148 "<cursor.down count=1>", 149 149 "<erase.down>", 150 - "◇ Select an option 151 - │ Option 0", 150 + "<green>◇</fg> Select an option 151 + <dim>│</fg> <dim>Option 0</bold>", 152 152 " 153 153 ", 154 154 "<cursor.show>", ··· 158 158 exports[`autocomplete > placeholder is shown if set 1`] = ` 159 159 [ 160 160 "<cursor.hide>", 161 - "│ 162 - ◆ Select a fruit 163 - │ 164 - │ Search: Type to search... 165 - │ ● Apple 166 - │ ○ Banana 167 - │ ○ Cherry 168 - │ ○ Grape 169 - │ ○ Orange 170 - │ ↑/↓ to select • Enter: confirm • Type: to search 171 - └", 161 + "<dim>│</fg> 162 + <cyan>◆</fg> Select a fruit 163 + <cyan>│</fg> 164 + <cyan>│</fg> <dim>Search:</bold> <dim>Type to search...</bold> 165 + <cyan>│</fg> <green>●</fg> Apple 166 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 167 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 168 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 169 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 170 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 171 + <cyan>└</fg>", 172 172 "<cursor.backward count=999><cursor.up count=10>", 173 173 "<cursor.down count=3>", 174 174 "<erase.down>", 175 - "│ Search: g█ (2 matches) 176 - │ ● Grape 177 - │ ○ Orange 178 - │ ↑/↓ to select • Enter: confirm • Type: to search 179 - └", 175 + "<cyan>│</fg> <dim>Search:</bold> g█<dim> (2 matches)</bold> 176 + <cyan>│</fg> <green>●</fg> Grape 177 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 178 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 179 + <cyan>└</fg>", 180 180 "<cursor.backward count=999><cursor.up count=7>", 181 181 "<cursor.down count=1>", 182 182 "<erase.down>", 183 - "◇ Select a fruit 184 - │ Grape", 183 + "<green>◇</fg> Select a fruit 184 + <dim>│</fg> <dim>Grape</bold>", 185 185 " 186 186 ", 187 187 "<cursor.show>", ··· 191 191 exports[`autocomplete > renders bottom ellipsis when items do not fit 1`] = ` 192 192 [ 193 193 "<cursor.hide>", 194 - "│ 195 - ◆ Select an option 196 - │ 197 - │ Search: _ 198 - │ ● Line 0 199 - │ Line 1 200 - │ Line 2 201 - │ Line 3 202 - │ ... 203 - │ ↑/↓ to select • Enter: confirm • Type: to search 204 - └", 194 + "<dim>│</fg> 195 + <cyan>◆</fg> Select an option 196 + <cyan>│</fg> 197 + <cyan>│</fg> <dim>Search:</bold> _ 198 + <cyan>│</fg> <green>●</fg> Line 0 199 + <cyan>│</fg> Line 1 200 + <cyan>│</fg> Line 2 201 + <cyan>│</fg> Line 3 202 + <cyan>│</fg> <dim>...</bold> 203 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 204 + <cyan>└</fg>", 205 205 "<cursor.backward count=999><cursor.up count=10>", 206 206 "<erase.down>", 207 - "◇ Select an option 208 - │ Line 0 207 + "<green>◇</fg> Select an option 208 + <dim>│</fg> <dim>Line 0 209 209 Line 1 210 210 Line 2 211 - Line 3", 211 + Line 3</bold>", 212 212 " 213 213 ", 214 214 "<cursor.show>", ··· 218 218 exports[`autocomplete > renders initial UI with message and instructions 1`] = ` 219 219 [ 220 220 "<cursor.hide>", 221 - "│ 222 - ◆ Select a fruit 223 - │ 224 - │ Search: _ 225 - │ ● Apple 226 - │ ○ Banana 227 - │ ○ Cherry 228 - │ ○ Grape 229 - │ ○ Orange 230 - │ ↑/↓ to select • Enter: confirm • Type: to search 231 - └", 221 + "<dim>│</fg> 222 + <cyan>◆</fg> Select a fruit 223 + <cyan>│</fg> 224 + <cyan>│</fg> <dim>Search:</bold> _ 225 + <cyan>│</fg> <green>●</fg> Apple 226 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 227 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 228 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 229 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 230 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 231 + <cyan>└</fg>", 232 232 "<cursor.backward count=999><cursor.up count=10>", 233 233 "<cursor.down count=1>", 234 234 "<erase.down>", 235 - "◇ Select a fruit 236 - │ Apple", 235 + "<green>◇</fg> Select a fruit 236 + <dim>│</fg> <dim>Apple</bold>", 237 237 " 238 238 ", 239 239 "<cursor.show>", ··· 243 243 exports[`autocomplete > renders placeholder if set 1`] = ` 244 244 [ 245 245 "<cursor.hide>", 246 - "│ 247 - ◆ Select a fruit 248 - │ 249 - │ Search: Type to search... 250 - │ ● Apple 251 - │ ○ Banana 252 - │ ○ Cherry 253 - │ ○ Grape 254 - │ ○ Orange 255 - │ ↑/↓ to select • Enter: confirm • Type: to search 256 - └", 246 + "<dim>│</fg> 247 + <cyan>◆</fg> Select a fruit 248 + <cyan>│</fg> 249 + <cyan>│</fg> <dim>Search:</bold> <dim>Type to search...</bold> 250 + <cyan>│</fg> <green>●</fg> Apple 251 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 252 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 253 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 254 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 255 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 256 + <cyan>└</fg>", 257 257 "<cursor.backward count=999><cursor.up count=10>", 258 258 "<cursor.down count=1>", 259 259 "<erase.down>", 260 - "◇ Select a fruit 261 - │ Apple", 260 + "<green>◇</fg> Select a fruit 261 + <dim>│</fg> <dim>Apple</bold>", 262 262 " 263 263 ", 264 264 "<cursor.show>", ··· 268 268 exports[`autocomplete > renders top ellipsis when scrolled down and its do not fit 1`] = ` 269 269 [ 270 270 "<cursor.hide>", 271 - "│ 272 - ◆ Select an option 273 - │ 274 - │ Search: _ 275 - │ ... 276 - │ ● Option 2 277 - │ ↑/↓ to select • Enter: confirm • Type: to search 278 - └", 271 + "<dim>│</fg> 272 + <cyan>◆</fg> Select an option 273 + <cyan>│</fg> 274 + <cyan>│</fg> <dim>Search:</bold> _ 275 + <cyan>│</fg> <dim>...</bold> 276 + <cyan>│</fg> <green>●</fg> Option 2 277 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 278 + <cyan>└</fg>", 279 279 "<cursor.backward count=999><cursor.up count=7>", 280 280 "<erase.down>", 281 - "│ 282 - ◇ Select an option 283 - │ Option 2", 281 + "<dim>│</fg> 282 + <green>◇</fg> Select an option 283 + <dim>│</fg> <dim>Option 2</bold>", 284 284 " 285 285 ", 286 286 "<cursor.show>", ··· 290 290 exports[`autocomplete > shows hint when option has hint and is focused 1`] = ` 291 291 [ 292 292 "<cursor.hide>", 293 - "│ 294 - ◆ Select a fruit 295 - │ 296 - │ Search: _ 297 - │ ● Apple 298 - │ ○ Banana 299 - │ ○ Cherry 300 - │ ○ Grape 301 - │ ○ Orange 302 - │ ○ Kiwi 303 - │ ↑/↓ to select • Enter: confirm • Type: to search 304 - └", 293 + "<dim>│</fg> 294 + <cyan>◆</fg> Select a fruit 295 + <cyan>│</fg> 296 + <cyan>│</fg> <dim>Search:</bold> _ 297 + <cyan>│</fg> <green>●</fg> Apple 298 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 299 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 300 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 301 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 302 + <cyan>│</fg> <dim>○</bold> <dim>Kiwi</bold> 303 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 304 + <cyan>└</fg>", 305 305 "<cursor.backward count=999><cursor.up count=11>", 306 306 "<cursor.down count=3>", 307 307 "<erase.down>", 308 - "│ Search: 309 - │ ○ Apple 310 - │ ● Banana 311 - │ ○ Cherry 312 - │ ○ Grape 313 - │ ○ Orange 314 - │ ○ Kiwi 315 - │ ↑/↓ to select • Enter: confirm • Type: to search 316 - └", 308 + "<cyan>│</fg> <dim>Search:</bold> 309 + <cyan>│</fg> <dim>○</bold> <dim>Apple</bold> 310 + <cyan>│</fg> <green>●</fg> Banana 311 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 312 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 313 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 314 + <cyan>│</fg> <dim>○</bold> <dim>Kiwi</bold> 315 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 316 + <cyan>└</fg>", 317 317 "<cursor.backward count=999><cursor.up count=11>", 318 318 "<cursor.down count=5>", 319 319 "<erase.down>", 320 - "│ ○ Banana 321 - │ ● Cherry 322 - │ ○ Grape 323 - │ ○ Orange 324 - │ ○ Kiwi 325 - │ ↑/↓ to select • Enter: confirm • Type: to search 326 - └", 320 + "<cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 321 + <cyan>│</fg> <green>●</fg> Cherry 322 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 323 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 324 + <cyan>│</fg> <dim>○</bold> <dim>Kiwi</bold> 325 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 326 + <cyan>└</fg>", 327 327 "<cursor.backward count=999><cursor.up count=11>", 328 328 "<cursor.down count=6>", 329 329 "<erase.down>", 330 - "│ ○ Cherry 331 - │ ● Grape 332 - │ ○ Orange 333 - │ ○ Kiwi 334 - │ ↑/↓ to select • Enter: confirm • Type: to search 335 - └", 330 + "<cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 331 + <cyan>│</fg> <green>●</fg> Grape 332 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 333 + <cyan>│</fg> <dim>○</bold> <dim>Kiwi</bold> 334 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 335 + <cyan>└</fg>", 336 336 "<cursor.backward count=999><cursor.up count=11>", 337 337 "<cursor.down count=7>", 338 338 "<erase.down>", 339 - "│ ○ Grape 340 - │ ● Orange 341 - │ ○ Kiwi 342 - │ ↑/↓ to select • Enter: confirm • Type: to search 343 - └", 339 + "<cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 340 + <cyan>│</fg> <green>●</fg> Orange 341 + <cyan>│</fg> <dim>○</bold> <dim>Kiwi</bold> 342 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 343 + <cyan>└</fg>", 344 344 "<cursor.backward count=999><cursor.up count=11>", 345 345 "<cursor.down count=8>", 346 346 "<erase.down>", 347 - "│ ○ Orange 348 - │ ● Kiwi (New Zealand) 349 - │ ↑/↓ to select • Enter: confirm • Type: to search 350 - └", 347 + "<cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 348 + <cyan>│</fg> <green>●</fg> Kiwi<dim> (New Zealand)</bold> 349 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 350 + <cyan>└</fg>", 351 351 "<cursor.backward count=999><cursor.up count=11>", 352 352 "<cursor.down count=1>", 353 353 "<erase.down>", 354 - "◇ Select a fruit 355 - │ Kiwi", 354 + "<green>◇</fg> Select a fruit 355 + <dim>│</fg> <dim>Kiwi</bold>", 356 356 " 357 357 ", 358 358 "<cursor.show>", ··· 362 362 exports[`autocomplete > shows no matches message when search has no results 1`] = ` 363 363 [ 364 364 "<cursor.hide>", 365 - "│ 366 - ◆ Select a fruit 367 - │ 368 - │ Search: _ 369 - │ ● Apple 370 - │ ○ Banana 371 - │ ○ Cherry 372 - │ ○ Grape 373 - │ ○ Orange 374 - │ ↑/↓ to select • Enter: confirm • Type: to search 375 - └", 365 + "<dim>│</fg> 366 + <cyan>◆</fg> Select a fruit 367 + <cyan>│</fg> 368 + <cyan>│</fg> <dim>Search:</bold> _ 369 + <cyan>│</fg> <green>●</fg> Apple 370 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 371 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 372 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 373 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 374 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 375 + <cyan>└</fg>", 376 376 "<cursor.backward count=999><cursor.up count=10>", 377 377 "<cursor.down count=3>", 378 378 "<erase.down>", 379 - "│ Search: z█ (0 matches) 380 - │ No matches found 381 - │ ↑/↓ to select • Enter: confirm • Type: to search 382 - └", 379 + "<cyan>│</fg> <dim>Search:</bold> z█<dim> (0 matches)</bold> 380 + <cyan>│</fg> <yellow>No matches found</fg> 381 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 382 + <cyan>└</fg>", 383 383 "<cursor.backward count=999><cursor.up count=6>", 384 384 "<cursor.down count=1>", 385 385 "<erase.down>", 386 - "◇ Select a fruit 387 - │", 386 + "<green>◇</fg> Select a fruit 387 + <dim>│</fg>", 388 388 " 389 389 ", 390 390 "<cursor.show>", ··· 394 394 exports[`autocomplete > shows selected value in submit state 1`] = ` 395 395 [ 396 396 "<cursor.hide>", 397 - "│ 398 - ◆ Select a fruit 399 - │ 400 - │ Search: _ 401 - │ ● Apple 402 - │ ○ Banana 403 - │ ○ Cherry 404 - │ ○ Grape 405 - │ ○ Orange 406 - │ ↑/↓ to select • Enter: confirm • Type: to search 407 - └", 397 + "<dim>│</fg> 398 + <cyan>◆</fg> Select a fruit 399 + <cyan>│</fg> 400 + <cyan>│</fg> <dim>Search:</bold> _ 401 + <cyan>│</fg> <green>●</fg> Apple 402 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 403 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 404 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 405 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 406 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 407 + <cyan>└</fg>", 408 408 "<cursor.backward count=999><cursor.up count=10>", 409 409 "<cursor.down count=3>", 410 410 "<erase.down>", 411 - "│ Search: 412 - │ ○ Apple 413 - │ ● Banana 414 - │ ○ Cherry 415 - │ ○ Grape 416 - │ ○ Orange 417 - │ ↑/↓ to select • Enter: confirm • Type: to search 418 - └", 411 + "<cyan>│</fg> <dim>Search:</bold> 412 + <cyan>│</fg> <dim>○</bold> <dim>Apple</bold> 413 + <cyan>│</fg> <green>●</fg> Banana 414 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 415 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 416 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 417 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 418 + <cyan>└</fg>", 419 419 "<cursor.backward count=999><cursor.up count=10>", 420 420 "<cursor.down count=1>", 421 421 "<erase.down>", 422 - "◇ Select a fruit 423 - │ Banana", 422 + "<green>◇</fg> Select a fruit 423 + <dim>│</fg> <dim>Banana</bold>", 424 424 " 425 425 ", 426 426 "<cursor.show>", ··· 430 430 exports[`autocomplete > shows strikethrough in cancel state 1`] = ` 431 431 [ 432 432 "<cursor.hide>", 433 - "│ 434 - ◆ Select a fruit 435 - │ 436 - │ Search: _ 437 - │ ● Apple 438 - │ ○ Banana 439 - │ ○ Cherry 440 - │ ○ Grape 441 - │ ○ Orange 442 - │ ↑/↓ to select • Enter: confirm • Type: to search 443 - └", 433 + "<dim>│</fg> 434 + <cyan>◆</fg> Select a fruit 435 + <cyan>│</fg> 436 + <cyan>│</fg> <dim>Search:</bold> _ 437 + <cyan>│</fg> <green>●</fg> Apple 438 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 439 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 440 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 441 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 442 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 443 + <cyan>└</fg>", 444 444 "<cursor.backward count=999><cursor.up count=10>", 445 445 "<cursor.down count=1>", 446 446 "<erase.down>", 447 - "■ Select a fruit 448 - │", 447 + "<red>■</fg> Select a fruit 448 + <dim>│</fg>", 449 449 " 450 450 ", 451 451 "<cursor.show>", ··· 455 455 exports[`autocomplete > supports initialValue 1`] = ` 456 456 [ 457 457 "<cursor.hide>", 458 - "│ 459 - ◆ Select a fruit 460 - │ 461 - │ Search: _ 462 - │ ○ Apple 463 - │ ○ Banana 464 - │ ● Cherry 465 - │ ○ Grape 466 - │ ○ Orange 467 - │ ↑/↓ to select • Enter: confirm • Type: to search 468 - └", 458 + "<dim>│</fg> 459 + <cyan>◆</fg> Select a fruit 460 + <cyan>│</fg> 461 + <cyan>│</fg> <dim>Search:</bold> _ 462 + <cyan>│</fg> <dim>○</bold> <dim>Apple</bold> 463 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 464 + <cyan>│</fg> <green>●</fg> Cherry 465 + <cyan>│</fg> <dim>○</bold> <dim>Grape</bold> 466 + <cyan>│</fg> <dim>○</bold> <dim>Orange</bold> 467 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 468 + <cyan>└</fg>", 469 469 "<cursor.backward count=999><cursor.up count=10>", 470 470 "<cursor.down count=1>", 471 471 "<erase.down>", 472 - "◇ Select a fruit 473 - │ Cherry", 472 + "<green>◇</fg> Select a fruit 473 + <dim>│</fg> <dim>Cherry</bold>", 474 474 " 475 475 ", 476 476 "<cursor.show>", ··· 480 480 exports[`autocomplete with custom filter > falls back to default filter when not provided 1`] = ` 481 481 [ 482 482 "<cursor.hide>", 483 - "│ 484 - ◆ Select a fruit 485 - │ 486 - │ Search: _ 487 - │ ● Apple 488 - │ ○ Banana 489 - │ ○ Cherry 490 - │ ↑/↓ to select • Enter: confirm • Type: to search 491 - └", 483 + "<dim>│</fg> 484 + <cyan>◆</fg> Select a fruit 485 + <cyan>│</fg> 486 + <cyan>│</fg> <dim>Search:</bold> _ 487 + <cyan>│</fg> <green>●</fg> Apple 488 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 489 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 490 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 491 + <cyan>└</fg>", 492 492 "<cursor.backward count=999><cursor.up count=8>", 493 493 "<cursor.down count=3>", 494 494 "<erase.down>", 495 - "│ Search: a█ (2 matches) 496 - │ ● Apple 497 - │ ○ Banana 498 - │ ↑/↓ to select • Enter: confirm • Type: to search 499 - └", 495 + "<cyan>│</fg> <dim>Search:</bold> a█<dim> (2 matches)</bold> 496 + <cyan>│</fg> <green>●</fg> Apple 497 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 498 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 499 + <cyan>└</fg>", 500 500 "<cursor.backward count=999><cursor.up count=7>", 501 501 "<cursor.down count=1>", 502 502 "<erase.down>", 503 - "◇ Select a fruit 504 - │ Apple", 503 + "<green>◇</fg> Select a fruit 504 + <dim>│</fg> <dim>Apple</bold>", 505 505 " 506 506 ", 507 507 "<cursor.show>", ··· 511 511 exports[`autocomplete with custom filter > uses custom filter function when provided 1`] = ` 512 512 [ 513 513 "<cursor.hide>", 514 - "│ 515 - ◆ Select a fruit 516 - │ 517 - │ Search: _ 518 - │ ● Apple 519 - │ ○ Banana 520 - │ ○ Cherry 521 - │ ↑/↓ to select • Enter: confirm • Type: to search 522 - └", 514 + "<dim>│</fg> 515 + <cyan>◆</fg> Select a fruit 516 + <cyan>│</fg> 517 + <cyan>│</fg> <dim>Search:</bold> _ 518 + <cyan>│</fg> <green>●</fg> Apple 519 + <cyan>│</fg> <dim>○</bold> <dim>Banana</bold> 520 + <cyan>│</fg> <dim>○</bold> <dim>Cherry</bold> 521 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 522 + <cyan>└</fg>", 523 523 "<cursor.backward count=999><cursor.up count=8>", 524 524 "<cursor.down count=3>", 525 525 "<erase.down>", 526 - "│ Search: a█ (1 match) 527 - │ ● Apple 528 - │ ↑/↓ to select • Enter: confirm • Type: to search 529 - └", 526 + "<cyan>│</fg> <dim>Search:</bold> a█<dim> (1 match)</bold> 527 + <cyan>│</fg> <green>●</fg> Apple 528 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 529 + <cyan>└</fg>", 530 530 "<cursor.backward count=999><cursor.up count=6>", 531 531 "<cursor.down count=1>", 532 532 "<erase.down>", 533 - "◇ Select a fruit 534 - │ Apple", 533 + "<green>◇</fg> Select a fruit 534 + <dim>│</fg> <dim>Apple</bold>", 535 535 " 536 536 ", 537 537 "<cursor.show>", ··· 541 541 exports[`autocompleteMultiselect > can be aborted by a signal 1`] = ` 542 542 [ 543 543 "<cursor.hide>", 544 - "│ 545 - ◆ foo 546 - │ 547 - │ Search: _ 548 - │ ◻ Apple 549 - │ ◻ Banana 550 - │ ◻ Cherry 551 - │ ◻ Grape 552 - │ ◻ Orange 553 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 554 - └", 544 + "<dim>│</fg> 545 + <cyan>◆</fg> foo 546 + <cyan>│</fg> 547 + <cyan>│</fg> <dim>Search:</bold> _ 548 + <cyan>│</fg> <dim>◻</bold> Apple 549 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 550 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 551 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 552 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 553 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 554 + <cyan>└</fg>", 555 555 " 556 556 ", 557 557 "<cursor.show>", ··· 561 561 exports[`autocompleteMultiselect > can use navigation keys to select options 1`] = ` 562 562 [ 563 563 "<cursor.hide>", 564 - "│ 565 - ◆ Select fruits 566 - │ 567 - │ Search: _ 568 - │ ◻ Apple 569 - │ ◻ Banana 570 - │ ◻ Cherry 571 - │ ◻ Grape 572 - │ ◻ Orange 573 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 574 - └", 564 + "<dim>│</fg> 565 + <cyan>◆</fg> Select fruits 566 + <cyan>│</fg> 567 + <cyan>│</fg> <dim>Search:</bold> _ 568 + <cyan>│</fg> <dim>◻</bold> Apple 569 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 570 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 571 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 572 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 573 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 574 + <cyan>└</fg>", 575 575 "<cursor.backward count=999><cursor.up count=10>", 576 576 "<cursor.down count=3>", 577 577 "<erase.down>", 578 - "│ Search:  579 - │ ◻ Apple 580 - │ ◻ Banana 581 - │ ◻ Cherry 582 - │ ◻ Grape 583 - │ ◻ Orange 584 - │ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search 585 - └", 578 + "<cyan>│</fg> <dim>Search:</bold> <dim></bold> 579 + <cyan>│</fg> <dim>◻</bold> <dim>Apple</bold> 580 + <cyan>│</fg> <dim>◻</bold> Banana 581 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 582 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 583 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 584 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Space/Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 585 + <cyan>└</fg>", 586 586 "<cursor.backward count=999><cursor.up count=10>", 587 587 "<cursor.down count=5>", 588 588 "<erase.line><cursor.left count=1>", 589 - "│ ◼ Banana", 589 + "<cyan>│</fg> <green>◼</fg> Banana", 590 590 "<cursor.down count=5>", 591 591 "<cursor.backward count=999><cursor.up count=10>", 592 592 "<cursor.down count=5>", 593 593 "<erase.down>", 594 - "│ ◼ Banana 595 - │ ◻ Cherry 596 - │ ◻ Grape 597 - │ ◻ Orange 598 - │ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search 599 - └", 594 + "<cyan>│</fg> <green>◼</fg> <dim>Banana</bold> 595 + <cyan>│</fg> <dim>◻</bold> Cherry 596 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 597 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 598 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Space/Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 599 + <cyan>└</fg>", 600 600 "<cursor.backward count=999><cursor.up count=10>", 601 601 "<cursor.down count=6>", 602 602 "<erase.line><cursor.left count=1>", 603 - "│ ◼ Cherry", 603 + "<cyan>│</fg> <green>◼</fg> Cherry", 604 604 "<cursor.down count=4>", 605 605 "<cursor.backward count=999><cursor.up count=10>", 606 606 "<cursor.down count=1>", 607 607 "<erase.down>", 608 - "◇ Select fruits 609 - │ 2 items selected", 608 + "<green>◇</fg> Select fruits 609 + <dim>│</fg> <dim>2 items selected</bold>", 610 610 " 611 611 ", 612 612 "<cursor.show>", ··· 616 616 exports[`autocompleteMultiselect > cannot select disabled options when only one left 1`] = ` 617 617 [ 618 618 "<cursor.hide>", 619 - "│ 620 - ◆ Select a fruit 621 - │ 622 - │ Search: _ 623 - │ ◻ Apple 624 - │ ◻ Banana 625 - │ ◻ Cherry 626 - │ ◻ Grape 627 - │ ◻ Orange 628 - │ ◻ Kiwi 629 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 630 - └", 619 + "<dim>│</fg> 620 + <cyan>◆</fg> Select a fruit 621 + <cyan>│</fg> 622 + <cyan>│</fg> <dim>Search:</bold> _ 623 + <cyan>│</fg> <dim>◻</bold> Apple 624 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 625 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 626 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 627 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 628 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 629 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 630 + <cyan>└</fg>", 631 631 "<cursor.backward count=999><cursor.up count=11>", 632 632 "<cursor.down count=3>", 633 633 "<erase.down>", 634 - "│ Search: k█ (1 match) 635 - │ ◻ Kiwi 636 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 637 - └", 634 + "<cyan>│</fg> <dim>Search:</bold> k█<dim> (1 match)</bold> 635 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 636 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 637 + <cyan>└</fg>", 638 638 "<cursor.backward count=999><cursor.up count=6>", 639 639 "<cursor.down count=1>", 640 640 "<erase.down>", 641 - "◇ Select a fruit 642 - │ 0 items selected", 641 + "<green>◇</fg> Select a fruit 642 + <dim>│</fg> <dim>0 items selected</bold>", 643 643 " 644 644 ", 645 645 "<cursor.show>", ··· 649 649 exports[`autocompleteMultiselect > displays disabled options correctly 1`] = ` 650 650 [ 651 651 "<cursor.hide>", 652 - "│ 653 - ◆ Select a fruit 654 - │ 655 - │ Search: _ 656 - │ ◻ Apple 657 - │ ◻ Banana 658 - │ ◻ Cherry 659 - │ ◻ Grape 660 - │ ◻ Orange 661 - │ ◻ Kiwi 662 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 663 - └", 652 + "<dim>│</fg> 653 + <cyan>◆</fg> Select a fruit 654 + <cyan>│</fg> 655 + <cyan>│</fg> <dim>Search:</bold> _ 656 + <cyan>│</fg> <dim>◻</bold> Apple 657 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 658 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 659 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 660 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 661 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 662 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 663 + <cyan>└</fg>", 664 664 "<cursor.backward count=999><cursor.up count=11>", 665 665 "<cursor.down count=3>", 666 666 "<erase.down>", 667 - "│ Search:  668 - │ ◻ Apple 669 - │ ◻ Banana 670 - │ ◻ Cherry 671 - │ ◻ Grape 672 - │ ◻ Orange 673 - │ ◻ Kiwi 674 - │ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search 675 - └", 667 + "<cyan>│</fg> <dim>Search:</bold> <dim></bold> 668 + <cyan>│</fg> <dim>◻</bold> <dim>Apple</bold> 669 + <cyan>│</fg> <dim>◻</bold> Banana 670 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 671 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 672 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 673 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 674 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Space/Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 675 + <cyan>└</fg>", 676 676 "<cursor.backward count=999><cursor.up count=11>", 677 677 "<cursor.down count=5>", 678 678 "<erase.down>", 679 - "│ ◻ Banana 680 - │ ◻ Cherry 681 - │ ◻ Grape 682 - │ ◻ Orange 683 - │ ◻ Kiwi 684 - │ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search 685 - └", 679 + "<cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 680 + <cyan>│</fg> <dim>◻</bold> Cherry 681 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 682 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 683 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 684 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Space/Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 685 + <cyan>└</fg>", 686 686 "<cursor.backward count=999><cursor.up count=11>", 687 687 "<cursor.down count=6>", 688 688 "<erase.down>", 689 - "│ ◻ Cherry 690 - │ ◻ Grape 691 - │ ◻ Orange 692 - │ ◻ Kiwi 693 - │ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search 694 - └", 689 + "<cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 690 + <cyan>│</fg> <dim>◻</bold> Grape 691 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 692 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 693 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Space/Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 694 + <cyan>└</fg>", 695 695 "<cursor.backward count=999><cursor.up count=11>", 696 696 "<cursor.down count=7>", 697 697 "<erase.down>", 698 - "│ ◻ Grape 699 - │ ◻ Orange 700 - │ ◻ Kiwi 701 - │ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search 702 - └", 698 + "<cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 699 + <cyan>│</fg> <dim>◻</bold> Orange 700 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 701 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Space/Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 702 + <cyan>└</fg>", 703 703 "<cursor.backward count=999><cursor.up count=11>", 704 704 "<cursor.down count=4>", 705 705 "<erase.down>", 706 - "│ ◻ Apple 707 - │ ◻ Banana 708 - │ ◻ Cherry 709 - │ ◻ Grape 710 - │ ◻ Orange 711 - │ ◻ Kiwi 712 - │ ↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search 713 - └", 706 + "<cyan>│</fg> <dim>◻</bold> Apple 707 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 708 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 709 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 710 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 711 + <cyan>│</fg> <dim>◻</fg> <dim>Kiwi</fg> 712 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Space/Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 713 + <cyan>└</fg>", 714 714 "<cursor.backward count=999><cursor.up count=11>", 715 715 "<cursor.down count=4>", 716 716 "<erase.line><cursor.left count=1>", 717 - "│ ◼ Apple", 717 + "<cyan>│</fg> <green>◼</fg> Apple", 718 718 "<cursor.down count=7>", 719 719 "<cursor.backward count=999><cursor.up count=11>", 720 720 "<cursor.down count=1>", 721 721 "<erase.down>", 722 - "◇ Select a fruit 723 - │ 1 items selected", 722 + "<green>◇</fg> Select a fruit 723 + <dim>│</fg> <dim>1 items selected</bold>", 724 724 " 725 725 ", 726 726 "<cursor.show>", ··· 730 730 exports[`autocompleteMultiselect > renders error when empty selection & required is true 1`] = ` 731 731 [ 732 732 "<cursor.hide>", 733 - "│ 734 - ◆ Select a fruit 735 - │ 736 - │ Search: _ 737 - │ ◻ Apple 738 - │ ◻ Banana 739 - │ ◻ Cherry 740 - │ ◻ Grape 741 - │ ◻ Orange 742 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 743 - └", 733 + "<dim>│</fg> 734 + <cyan>◆</fg> Select a fruit 735 + <cyan>│</fg> 736 + <cyan>│</fg> <dim>Search:</bold> _ 737 + <cyan>│</fg> <dim>◻</bold> Apple 738 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 739 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 740 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 741 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 742 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 743 + <cyan>└</fg>", 744 744 "<cursor.backward count=999><cursor.up count=10>", 745 745 "<cursor.down count=1>", 746 746 "<erase.down>", 747 - "▲ Select a fruit 748 - │ 749 - │ Search: _ 750 - │ Please select at least one item 751 - │ ◻ Apple 752 - │ ◻ Banana 753 - │ ◻ Cherry 754 - │ ◻ Grape 755 - │ ◻ Orange 756 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 757 - └", 747 + "<yellow>▲</fg> Select a fruit 748 + <yellow>│</fg> 749 + <yellow>│</fg> <dim>Search:</bold> _ 750 + <yellow>│</fg> <yellow>Please select at least one item</fg> 751 + <yellow>│</fg> <dim>◻</bold> Apple 752 + <yellow>│</fg> <dim>◻</bold> <dim>Banana</bold> 753 + <yellow>│</fg> <dim>◻</bold> <dim>Cherry</bold> 754 + <yellow>│</fg> <dim>◻</bold> <dim>Grape</bold> 755 + <yellow>│</fg> <dim>◻</bold> <dim>Orange</bold> 756 + <yellow>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 757 + <yellow>└</fg>", 758 758 "<cursor.backward count=999><cursor.up count=11>", 759 759 "<cursor.down count=1>", 760 760 "<erase.down>", 761 - "◆ Select a fruit 762 - │ 763 - │ Search: _ 764 - │ ◼ Apple 765 - │ ◻ Banana 766 - │ ◻ Cherry 767 - │ ◻ Grape 768 - │ ◻ Orange 769 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 770 - └", 761 + "<cyan>◆</fg> Select a fruit 762 + <cyan>│</fg> 763 + <cyan>│</fg> <dim>Search:</bold> _ 764 + <cyan>│</fg> <green>◼</fg> Apple 765 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 766 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 767 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 768 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 769 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 770 + <cyan>└</fg>", 771 771 "<cursor.backward count=999><cursor.up count=10>", 772 772 "<cursor.down count=1>", 773 773 "<erase.down>", 774 - "◇ Select a fruit 775 - │ 1 items selected", 774 + "<green>◇</fg> Select a fruit 775 + <dim>│</fg> <dim>1 items selected</bold>", 776 776 " 777 777 ", 778 778 "<cursor.show>", ··· 782 782 exports[`autocompleteMultiselect > supports custom filter function 1`] = ` 783 783 [ 784 784 "<cursor.hide>", 785 - "│ 786 - ◆ Select fruits 787 - │ 788 - │ Search: _ 789 - │ ◻ Apple 790 - │ ◻ Banana 791 - │ ◻ Cherry 792 - │ ◻ Grape 793 - │ ◻ Orange 794 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 795 - └", 785 + "<dim>│</fg> 786 + <cyan>◆</fg> Select fruits 787 + <cyan>│</fg> 788 + <cyan>│</fg> <dim>Search:</bold> _ 789 + <cyan>│</fg> <dim>◻</bold> Apple 790 + <cyan>│</fg> <dim>◻</bold> <dim>Banana</bold> 791 + <cyan>│</fg> <dim>◻</bold> <dim>Cherry</bold> 792 + <cyan>│</fg> <dim>◻</bold> <dim>Grape</bold> 793 + <cyan>│</fg> <dim>◻</bold> <dim>Orange</bold> 794 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 795 + <cyan>└</fg>", 796 796 "<cursor.backward count=999><cursor.up count=10>", 797 797 "<cursor.down count=3>", 798 798 "<erase.down>", 799 - "│ Search: a█ (1 match) 800 - │ ◻ Apple 801 - │ ↑/↓ to navigate • Tab: select • Enter: confirm • Type: to search 802 - └", 799 + "<cyan>│</fg> <dim>Search:</bold> a█<dim> (1 match)</bold> 800 + <cyan>│</fg> <dim>◻</bold> Apple 801 + <cyan>│</fg> <dim>↑/↓</bold> to navigate • <dim>Tab:</bold> select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 802 + <cyan>└</fg>", 803 803 "<cursor.backward count=999><cursor.up count=6>", 804 804 "<cursor.down count=4>", 805 805 "<erase.line><cursor.left count=1>", 806 - "│ ◼ Apple", 806 + "<cyan>│</fg> <green>◼</fg> Apple", 807 807 "<cursor.down count=2>", 808 808 "<cursor.backward count=999><cursor.up count=6>", 809 809 "<cursor.down count=1>", 810 810 "<erase.down>", 811 - "◇ Select fruits 812 - │ 1 items selected", 811 + "<green>◇</fg> Select fruits 812 + <dim>│</fg> <dim>1 items selected</bold>", 813 813 " 814 814 ", 815 815 "<cursor.show>",
+6 -6
packages/prompts/src/__snapshots__/box.test.ts.snap
··· 225 225 226 226 exports[`box (isCI = false) > renders with formatBorder formatting 1`] = ` 227 227 [ 228 - "│ ┌─title──────┐ 228 + "│ <red>┌</fg><red>─</fg>title<red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>┐</fg> 229 229 ", 230 - "│ │ message │ 230 + "│ <red>│</fg> message <red>│</fg> 231 231 ", 232 - "│ └────────────┘ 232 + "│ <red>└</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>┘</fg> 233 233 ", 234 234 ] 235 235 `; ··· 500 500 501 501 exports[`box (isCI = true) > renders with formatBorder formatting 1`] = ` 502 502 [ 503 - "│ ┌─title──────┐ 503 + "│ <red>┌</fg><red>─</fg>title<red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>┐</fg> 504 504 ", 505 - "│ │ message │ 505 + "│ <red>│</fg> message <red>│</fg> 506 506 ", 507 - "│ └────────────┘ 507 + "│ <red>└</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>─</fg><red>┘</fg> 508 508 ", 509 509 ] 510 510 `;
+130 -130
packages/prompts/src/__snapshots__/confirm.test.ts.snap
··· 3 3 exports[`confirm (isCI = false) > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ yes? 8 - │ ● Yes / ○ No 9 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> yes? 8 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 9 + <cyan>└</fg> 10 10 ", 11 11 " 12 12 ", ··· 17 17 exports[`confirm (isCI = false) > can cancel 1`] = ` 18 18 [ 19 19 "<cursor.hide>", 20 - "│ 21 - ◆ foo 22 - │ ● Yes / ○ No 23 - └ 20 + "<dim>│</fg> 21 + <cyan>◆</fg> foo 22 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 23 + <cyan>└</fg> 24 24 ", 25 25 "<cursor.backward count=999><cursor.up count=4>", 26 26 "<cursor.down count=1>", 27 27 "<erase.down>", 28 - "■ foo 29 - │ No 30 - │", 28 + "<red>■</fg> foo 29 + <dim>│</fg> <dim>No</bold> 30 + <dim>│</fg>", 31 31 " 32 32 ", 33 33 "<cursor.show>", ··· 37 37 exports[`confirm (isCI = false) > can set initialValue 1`] = ` 38 38 [ 39 39 "<cursor.hide>", 40 - "│ 41 - ◆ foo 42 - │ ○ Yes / ● No 43 - └ 40 + "<dim>│</fg> 41 + <cyan>◆</fg> foo 42 + <cyan>│</fg> <dim>○</bold> <dim>Yes</bold> <dim>/</bold> <green>●</fg> No 43 + <cyan>└</fg> 44 44 ", 45 45 "<cursor.backward count=999><cursor.up count=4>", 46 46 "<cursor.down count=1>", 47 47 "<erase.down>", 48 - "◇ foo 49 - │ No", 48 + "<green>◇</fg> foo 49 + <dim>│</fg> <dim>No</bold>", 50 50 " 51 51 ", 52 52 "<cursor.show>", ··· 56 56 exports[`confirm (isCI = false) > global withGuide: false removes guide 1`] = ` 57 57 [ 58 58 "<cursor.hide>", 59 - "◆ foo 60 - ● Yes / ○ No 59 + "<cyan>◆</fg> foo 60 + <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 61 61 62 62 ", 63 63 "<cursor.backward count=999><cursor.up count=3>", 64 64 "<erase.down>", 65 - "◇ foo 66 - Yes", 65 + "<green>◇</fg> foo 66 + <dim>Yes</bold>", 67 67 " 68 68 ", 69 69 "<cursor.show>", ··· 73 73 exports[`confirm (isCI = false) > left arrow moves to previous choice 1`] = ` 74 74 [ 75 75 "<cursor.hide>", 76 - "│ 77 - ◆ foo 78 - │ ● Yes / ○ No 79 - └ 76 + "<dim>│</fg> 77 + <cyan>◆</fg> foo 78 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 79 + <cyan>└</fg> 80 80 ", 81 81 "<cursor.backward count=999><cursor.up count=4>", 82 82 "<cursor.down count=2>", 83 83 "<erase.line><cursor.left count=1>", 84 - "│ ○ Yes / ● No", 84 + "<cyan>│</fg> <dim>○</bold> <dim>Yes</bold> <dim>/</bold> <green>●</fg> No", 85 85 "<cursor.down count=2>", 86 86 "<cursor.backward count=999><cursor.up count=4>", 87 87 "<cursor.down count=2>", 88 88 "<erase.line><cursor.left count=1>", 89 - "│ ● Yes / ○ No", 89 + "<cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold>", 90 90 "<cursor.down count=2>", 91 91 "<cursor.backward count=999><cursor.up count=4>", 92 92 "<cursor.down count=1>", 93 93 "<erase.down>", 94 - "◇ foo 95 - │ Yes", 94 + "<green>◇</fg> foo 95 + <dim>│</fg> <dim>Yes</bold>", 96 96 " 97 97 ", 98 98 "<cursor.show>", ··· 102 102 exports[`confirm (isCI = false) > renders custom active choice 1`] = ` 103 103 [ 104 104 "<cursor.hide>", 105 - "│ 106 - ◆ foo 107 - │ ● bleep / ○ No 108 - └ 105 + "<dim>│</fg> 106 + <cyan>◆</fg> foo 107 + <cyan>│</fg> <green>●</fg> bleep <dim>/</bold> <dim>○</bold> <dim>No</bold> 108 + <cyan>└</fg> 109 109 ", 110 110 "<cursor.backward count=999><cursor.up count=4>", 111 111 "<cursor.down count=1>", 112 112 "<erase.down>", 113 - "◇ foo 114 - │ bleep", 113 + "<green>◇</fg> foo 114 + <dim>│</fg> <dim>bleep</bold>", 115 115 " 116 116 ", 117 117 "<cursor.show>", ··· 121 121 exports[`confirm (isCI = false) > renders custom inactive choice 1`] = ` 122 122 [ 123 123 "<cursor.hide>", 124 - "│ 125 - ◆ foo 126 - │ ● Yes / ○ bleep 127 - └ 124 + "<dim>│</fg> 125 + <cyan>◆</fg> foo 126 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>bleep</bold> 127 + <cyan>└</fg> 128 128 ", 129 129 "<cursor.backward count=999><cursor.up count=4>", 130 130 "<cursor.down count=1>", 131 131 "<erase.down>", 132 - "◇ foo 133 - │ Yes", 132 + "<green>◇</fg> foo 133 + <dim>│</fg> <dim>Yes</bold>", 134 134 " 135 135 ", 136 136 "<cursor.show>", ··· 140 140 exports[`confirm (isCI = false) > renders message with choices 1`] = ` 141 141 [ 142 142 "<cursor.hide>", 143 - "│ 144 - ◆ foo 145 - │ ● Yes / ○ No 146 - └ 143 + "<dim>│</fg> 144 + <cyan>◆</fg> foo 145 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 146 + <cyan>└</fg> 147 147 ", 148 148 "<cursor.backward count=999><cursor.up count=4>", 149 149 "<cursor.down count=1>", 150 150 "<erase.down>", 151 - "◇ foo 152 - │ Yes", 151 + "<green>◇</fg> foo 152 + <dim>│</fg> <dim>Yes</bold>", 153 153 " 154 154 ", 155 155 "<cursor.show>", ··· 159 159 exports[`confirm (isCI = false) > renders options in vertical alignment 1`] = ` 160 160 [ 161 161 "<cursor.hide>", 162 - "│ 163 - ◆ foo 164 - │ ● Yes 165 - │ ○ No 166 - └ 162 + "<dim>│</fg> 163 + <cyan>◆</fg> foo 164 + <cyan>│</fg> <green>●</fg> Yes 165 + <cyan>│</fg> <dim>○</bold> <dim>No</bold> 166 + <cyan>└</fg> 167 167 ", 168 168 "<cursor.backward count=999><cursor.up count=5>", 169 169 "<cursor.down count=1>", 170 170 "<erase.down>", 171 - "◇ foo 172 - │ Yes", 171 + "<green>◇</fg> foo 172 + <dim>│</fg> <dim>Yes</bold>", 173 173 " 174 174 ", 175 175 "<cursor.show>", ··· 179 179 exports[`confirm (isCI = false) > right arrow moves to next choice 1`] = ` 180 180 [ 181 181 "<cursor.hide>", 182 - "│ 183 - ◆ foo 184 - │ ● Yes / ○ No 185 - └ 182 + "<dim>│</fg> 183 + <cyan>◆</fg> foo 184 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 185 + <cyan>└</fg> 186 186 ", 187 187 "<cursor.backward count=999><cursor.up count=4>", 188 188 "<cursor.down count=2>", 189 189 "<erase.line><cursor.left count=1>", 190 - "│ ○ Yes / ● No", 190 + "<cyan>│</fg> <dim>○</bold> <dim>Yes</bold> <dim>/</bold> <green>●</fg> No", 191 191 "<cursor.down count=2>", 192 192 "<cursor.backward count=999><cursor.up count=4>", 193 193 "<cursor.down count=1>", 194 194 "<erase.down>", 195 - "◇ foo 196 - │ No", 195 + "<green>◇</fg> foo 196 + <dim>│</fg> <dim>No</bold>", 197 197 " 198 198 ", 199 199 "<cursor.show>", ··· 203 203 exports[`confirm (isCI = false) > withGuide: false removes guide 1`] = ` 204 204 [ 205 205 "<cursor.hide>", 206 - "◆ foo 207 - ● Yes / ○ No 206 + "<cyan>◆</fg> foo 207 + <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 208 208 209 209 ", 210 210 "<cursor.backward count=999><cursor.up count=3>", 211 211 "<erase.down>", 212 - "◇ foo 213 - Yes", 212 + "<green>◇</fg> foo 213 + <dim>Yes</bold>", 214 214 " 215 215 ", 216 216 "<cursor.show>", ··· 220 220 exports[`confirm (isCI = true) > can be aborted by a signal 1`] = ` 221 221 [ 222 222 "<cursor.hide>", 223 - "│ 224 - ◆ yes? 225 - │ ● Yes / ○ No 226 - └ 223 + "<dim>│</fg> 224 + <cyan>◆</fg> yes? 225 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 226 + <cyan>└</fg> 227 227 ", 228 228 " 229 229 ", ··· 234 234 exports[`confirm (isCI = true) > can cancel 1`] = ` 235 235 [ 236 236 "<cursor.hide>", 237 - "│ 238 - ◆ foo 239 - │ ● Yes / ○ No 240 - └ 237 + "<dim>│</fg> 238 + <cyan>◆</fg> foo 239 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 240 + <cyan>└</fg> 241 241 ", 242 242 "<cursor.backward count=999><cursor.up count=4>", 243 243 "<cursor.down count=1>", 244 244 "<erase.down>", 245 - "■ foo 246 - │ No 247 - │", 245 + "<red>■</fg> foo 246 + <dim>│</fg> <dim>No</bold> 247 + <dim>│</fg>", 248 248 " 249 249 ", 250 250 "<cursor.show>", ··· 254 254 exports[`confirm (isCI = true) > can set initialValue 1`] = ` 255 255 [ 256 256 "<cursor.hide>", 257 - "│ 258 - ◆ foo 259 - │ ○ Yes / ● No 260 - └ 257 + "<dim>│</fg> 258 + <cyan>◆</fg> foo 259 + <cyan>│</fg> <dim>○</bold> <dim>Yes</bold> <dim>/</bold> <green>●</fg> No 260 + <cyan>└</fg> 261 261 ", 262 262 "<cursor.backward count=999><cursor.up count=4>", 263 263 "<cursor.down count=1>", 264 264 "<erase.down>", 265 - "◇ foo 266 - │ No", 265 + "<green>◇</fg> foo 266 + <dim>│</fg> <dim>No</bold>", 267 267 " 268 268 ", 269 269 "<cursor.show>", ··· 273 273 exports[`confirm (isCI = true) > global withGuide: false removes guide 1`] = ` 274 274 [ 275 275 "<cursor.hide>", 276 - "◆ foo 277 - ● Yes / ○ No 276 + "<cyan>◆</fg> foo 277 + <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 278 278 279 279 ", 280 280 "<cursor.backward count=999><cursor.up count=3>", 281 281 "<erase.down>", 282 - "◇ foo 283 - Yes", 282 + "<green>◇</fg> foo 283 + <dim>Yes</bold>", 284 284 " 285 285 ", 286 286 "<cursor.show>", ··· 290 290 exports[`confirm (isCI = true) > left arrow moves to previous choice 1`] = ` 291 291 [ 292 292 "<cursor.hide>", 293 - "│ 294 - ◆ foo 295 - │ ● Yes / ○ No 296 - └ 293 + "<dim>│</fg> 294 + <cyan>◆</fg> foo 295 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 296 + <cyan>└</fg> 297 297 ", 298 298 "<cursor.backward count=999><cursor.up count=4>", 299 299 "<cursor.down count=2>", 300 300 "<erase.line><cursor.left count=1>", 301 - "│ ○ Yes / ● No", 301 + "<cyan>│</fg> <dim>○</bold> <dim>Yes</bold> <dim>/</bold> <green>●</fg> No", 302 302 "<cursor.down count=2>", 303 303 "<cursor.backward count=999><cursor.up count=4>", 304 304 "<cursor.down count=2>", 305 305 "<erase.line><cursor.left count=1>", 306 - "│ ● Yes / ○ No", 306 + "<cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold>", 307 307 "<cursor.down count=2>", 308 308 "<cursor.backward count=999><cursor.up count=4>", 309 309 "<cursor.down count=1>", 310 310 "<erase.down>", 311 - "◇ foo 312 - │ Yes", 311 + "<green>◇</fg> foo 312 + <dim>│</fg> <dim>Yes</bold>", 313 313 " 314 314 ", 315 315 "<cursor.show>", ··· 319 319 exports[`confirm (isCI = true) > renders custom active choice 1`] = ` 320 320 [ 321 321 "<cursor.hide>", 322 - "│ 323 - ◆ foo 324 - │ ● bleep / ○ No 325 - └ 322 + "<dim>│</fg> 323 + <cyan>◆</fg> foo 324 + <cyan>│</fg> <green>●</fg> bleep <dim>/</bold> <dim>○</bold> <dim>No</bold> 325 + <cyan>└</fg> 326 326 ", 327 327 "<cursor.backward count=999><cursor.up count=4>", 328 328 "<cursor.down count=1>", 329 329 "<erase.down>", 330 - "◇ foo 331 - │ bleep", 330 + "<green>◇</fg> foo 331 + <dim>│</fg> <dim>bleep</bold>", 332 332 " 333 333 ", 334 334 "<cursor.show>", ··· 338 338 exports[`confirm (isCI = true) > renders custom inactive choice 1`] = ` 339 339 [ 340 340 "<cursor.hide>", 341 - "│ 342 - ◆ foo 343 - │ ● Yes / ○ bleep 344 - └ 341 + "<dim>│</fg> 342 + <cyan>◆</fg> foo 343 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>bleep</bold> 344 + <cyan>└</fg> 345 345 ", 346 346 "<cursor.backward count=999><cursor.up count=4>", 347 347 "<cursor.down count=1>", 348 348 "<erase.down>", 349 - "◇ foo 350 - │ Yes", 349 + "<green>◇</fg> foo 350 + <dim>│</fg> <dim>Yes</bold>", 351 351 " 352 352 ", 353 353 "<cursor.show>", ··· 357 357 exports[`confirm (isCI = true) > renders message with choices 1`] = ` 358 358 [ 359 359 "<cursor.hide>", 360 - "│ 361 - ◆ foo 362 - │ ● Yes / ○ No 363 - └ 360 + "<dim>│</fg> 361 + <cyan>◆</fg> foo 362 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 363 + <cyan>└</fg> 364 364 ", 365 365 "<cursor.backward count=999><cursor.up count=4>", 366 366 "<cursor.down count=1>", 367 367 "<erase.down>", 368 - "◇ foo 369 - │ Yes", 368 + "<green>◇</fg> foo 369 + <dim>│</fg> <dim>Yes</bold>", 370 370 " 371 371 ", 372 372 "<cursor.show>", ··· 376 376 exports[`confirm (isCI = true) > renders options in vertical alignment 1`] = ` 377 377 [ 378 378 "<cursor.hide>", 379 - "│ 380 - ◆ foo 381 - │ ● Yes 382 - │ ○ No 383 - └ 379 + "<dim>│</fg> 380 + <cyan>◆</fg> foo 381 + <cyan>│</fg> <green>●</fg> Yes 382 + <cyan>│</fg> <dim>○</bold> <dim>No</bold> 383 + <cyan>└</fg> 384 384 ", 385 385 "<cursor.backward count=999><cursor.up count=5>", 386 386 "<cursor.down count=1>", 387 387 "<erase.down>", 388 - "◇ foo 389 - │ Yes", 388 + "<green>◇</fg> foo 389 + <dim>│</fg> <dim>Yes</bold>", 390 390 " 391 391 ", 392 392 "<cursor.show>", ··· 396 396 exports[`confirm (isCI = true) > right arrow moves to next choice 1`] = ` 397 397 [ 398 398 "<cursor.hide>", 399 - "│ 400 - ◆ foo 401 - │ ● Yes / ○ No 402 - └ 399 + "<dim>│</fg> 400 + <cyan>◆</fg> foo 401 + <cyan>│</fg> <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 402 + <cyan>└</fg> 403 403 ", 404 404 "<cursor.backward count=999><cursor.up count=4>", 405 405 "<cursor.down count=2>", 406 406 "<erase.line><cursor.left count=1>", 407 - "│ ○ Yes / ● No", 407 + "<cyan>│</fg> <dim>○</bold> <dim>Yes</bold> <dim>/</bold> <green>●</fg> No", 408 408 "<cursor.down count=2>", 409 409 "<cursor.backward count=999><cursor.up count=4>", 410 410 "<cursor.down count=1>", 411 411 "<erase.down>", 412 - "◇ foo 413 - │ No", 412 + "<green>◇</fg> foo 413 + <dim>│</fg> <dim>No</bold>", 414 414 " 415 415 ", 416 416 "<cursor.show>", ··· 420 420 exports[`confirm (isCI = true) > withGuide: false removes guide 1`] = ` 421 421 [ 422 422 "<cursor.hide>", 423 - "◆ foo 424 - ● Yes / ○ No 423 + "<cyan>◆</fg> foo 424 + <green>●</fg> Yes <dim>/</bold> <dim>○</bold> <dim>No</bold> 425 425 426 426 ", 427 427 "<cursor.backward count=999><cursor.up count=3>", 428 428 "<erase.down>", 429 - "◇ foo 430 - Yes", 429 + "<green>◇</fg> foo 430 + <dim>Yes</bold>", 431 431 " 432 432 ", 433 433 "<cursor.show>",
+80 -80
packages/prompts/src/__snapshots__/date.test.ts.snap
··· 3 3 exports[`date (isCI = false) > can cancel 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ Pick a date 8 - │  yyy/mm/dd 9 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> Pick a date 8 + <cyan>│</fg>  <dim>y</bold><dim>y</bold><dim>y</bold><dim>/</fg><dim>mm</bold><dim>/</fg><dim>dd</bold> 9 + <cyan>└</fg> 10 10 ", 11 11 "<cursor.backward count=999><cursor.up count=4>", 12 12 "<cursor.down count=1>", 13 13 "<erase.down>", 14 - "■ Pick a date 15 - │", 14 + "<red>■</fg> Pick a date 15 + <dim>│</fg>", 16 16 " 17 17 ", 18 18 "<cursor.show>", ··· 22 22 exports[`date (isCI = false) > defaultValue used when empty submit 1`] = ` 23 23 [ 24 24 "<cursor.hide>", 25 - "│ 26 - ◆ Pick a date 27 - │ 2025/12/25 28 - └ 25 + "<dim>│</fg> 26 + <cyan>◆</fg> Pick a date 27 + <cyan>│</fg> 2025<dim>/</fg>12<dim>/</fg>25 28 + <cyan>└</fg> 29 29 ", 30 30 "<cursor.backward count=999><cursor.up count=4>", 31 31 "<cursor.down count=1>", 32 32 "<erase.down>", 33 - "◇ Pick a date 34 - │ 2025/12/25", 33 + "<green>◇</fg> Pick a date 34 + <dim>│</fg> <dim>2025/12/24</bold>", 35 35 " 36 36 ", 37 37 "<cursor.show>", ··· 41 41 exports[`date (isCI = false) > renders initial value 1`] = ` 42 42 [ 43 43 "<cursor.hide>", 44 - "│ 45 - ◆ Pick a date 46 - │ 2025/01/15 47 - └ 44 + "<dim>│</fg> 45 + <cyan>◆</fg> Pick a date 46 + <cyan>│</fg> 2025<dim>/</fg>01<dim>/</fg>15 47 + <cyan>└</fg> 48 48 ", 49 49 "<cursor.backward count=999><cursor.up count=4>", 50 50 "<cursor.down count=1>", 51 51 "<erase.down>", 52 - "◇ Pick a date 53 - │ 2025/01/15", 52 + "<green>◇</fg> Pick a date 53 + <dim>│</fg> <dim>2025/01/14</bold>", 54 54 " 55 55 ", 56 56 "<cursor.show>", ··· 60 60 exports[`date (isCI = false) > renders message 1`] = ` 61 61 [ 62 62 "<cursor.hide>", 63 - "│ 64 - ◆ Pick a date 65 - │ 2025/01/15 66 - └ 63 + "<dim>│</fg> 64 + <cyan>◆</fg> Pick a date 65 + <cyan>│</fg> 2025<dim>/</fg>01<dim>/</fg>15 66 + <cyan>└</fg> 67 67 ", 68 68 "<cursor.backward count=999><cursor.up count=4>", 69 69 "<cursor.down count=1>", 70 70 "<erase.down>", 71 - "◇ Pick a date 72 - │ 2025/01/15", 71 + "<green>◇</fg> Pick a date 72 + <dim>│</fg> <dim>2025/01/14</bold>", 73 73 " 74 74 ", 75 75 "<cursor.show>", ··· 79 79 exports[`date (isCI = false) > renders submitted value 1`] = ` 80 80 [ 81 81 "<cursor.hide>", 82 - "│ 83 - ◆ Pick a date 84 - │ 2025/06/15 85 - └ 82 + "<dim>│</fg> 83 + <cyan>◆</fg> Pick a date 84 + <cyan>│</fg> 2025<dim>/</fg>06<dim>/</fg>15 85 + <cyan>└</fg> 86 86 ", 87 87 "<cursor.backward count=999><cursor.up count=4>", 88 88 "<cursor.down count=1>", 89 89 "<erase.down>", 90 - "◇ Pick a date 91 - │ 2025/06/15", 90 + "<green>◇</fg> Pick a date 91 + <dim>│</fg> <dim>2025/06/14</bold>", 92 92 " 93 93 ", 94 94 "<cursor.show>", ··· 98 98 exports[`date (isCI = false) > supports MM/DD/YYYY format 1`] = ` 99 99 [ 100 100 "<cursor.hide>", 101 - "│ 102 - ◆ Pick a date 103 - │ 01/15/2025 104 - └ 101 + "<dim>│</fg> 102 + <cyan>◆</fg> Pick a date 103 + <cyan>│</fg> 01<dim>/</fg>15<dim>/</fg>2025 104 + <cyan>└</fg> 105 105 ", 106 106 "<cursor.backward count=999><cursor.up count=4>", 107 107 "<cursor.down count=1>", 108 108 "<erase.down>", 109 - "◇ Pick a date 110 - │ 01/15/2025", 109 + "<green>◇</fg> Pick a date 110 + <dim>│</fg> <dim>01/14/2025</bold>", 111 111 " 112 112 ", 113 113 "<cursor.show>", ··· 117 117 exports[`date (isCI = false) > withGuide: false removes guide 1`] = ` 118 118 [ 119 119 "<cursor.hide>", 120 - "◆ Pick a date 121 - 2025/01/15 120 + "<cyan>◆</fg> Pick a date 121 + 2025<dim>/</fg>01<dim>/</fg>15 122 122 123 123 ", 124 124 "<cursor.backward count=999><cursor.up count=3>", 125 125 "<erase.down>", 126 - "◇ Pick a date 127 - 2025/01/15", 126 + "<green>◇</fg> Pick a date 127 + <dim>2025/01/14</bold>", 128 128 " 129 129 ", 130 130 "<cursor.show>", ··· 134 134 exports[`date (isCI = true) > can cancel 1`] = ` 135 135 [ 136 136 "<cursor.hide>", 137 - "│ 138 - ◆ Pick a date 139 - │  yyy/mm/dd 140 - └ 137 + "<dim>│</fg> 138 + <cyan>◆</fg> Pick a date 139 + <cyan>│</fg>  <dim>y</bold><dim>y</bold><dim>y</bold><dim>/</fg><dim>mm</bold><dim>/</fg><dim>dd</bold> 140 + <cyan>└</fg> 141 141 ", 142 142 "<cursor.backward count=999><cursor.up count=4>", 143 143 "<cursor.down count=1>", 144 144 "<erase.down>", 145 - "■ Pick a date 146 - │", 145 + "<red>■</fg> Pick a date 146 + <dim>│</fg>", 147 147 " 148 148 ", 149 149 "<cursor.show>", ··· 153 153 exports[`date (isCI = true) > defaultValue used when empty submit 1`] = ` 154 154 [ 155 155 "<cursor.hide>", 156 - "│ 157 - ◆ Pick a date 158 - │ 2025/12/25 159 - └ 156 + "<dim>│</fg> 157 + <cyan>◆</fg> Pick a date 158 + <cyan>│</fg> 2025<dim>/</fg>12<dim>/</fg>25 159 + <cyan>└</fg> 160 160 ", 161 161 "<cursor.backward count=999><cursor.up count=4>", 162 162 "<cursor.down count=1>", 163 163 "<erase.down>", 164 - "◇ Pick a date 165 - │ 2025/12/25", 164 + "<green>◇</fg> Pick a date 165 + <dim>│</fg> <dim>2025/12/24</bold>", 166 166 " 167 167 ", 168 168 "<cursor.show>", ··· 172 172 exports[`date (isCI = true) > renders initial value 1`] = ` 173 173 [ 174 174 "<cursor.hide>", 175 - "│ 176 - ◆ Pick a date 177 - │ 2025/01/15 178 - └ 175 + "<dim>│</fg> 176 + <cyan>◆</fg> Pick a date 177 + <cyan>│</fg> 2025<dim>/</fg>01<dim>/</fg>15 178 + <cyan>└</fg> 179 179 ", 180 180 "<cursor.backward count=999><cursor.up count=4>", 181 181 "<cursor.down count=1>", 182 182 "<erase.down>", 183 - "◇ Pick a date 184 - │ 2025/01/15", 183 + "<green>◇</fg> Pick a date 184 + <dim>│</fg> <dim>2025/01/14</bold>", 185 185 " 186 186 ", 187 187 "<cursor.show>", ··· 191 191 exports[`date (isCI = true) > renders message 1`] = ` 192 192 [ 193 193 "<cursor.hide>", 194 - "│ 195 - ◆ Pick a date 196 - │ 2025/01/15 197 - └ 194 + "<dim>│</fg> 195 + <cyan>◆</fg> Pick a date 196 + <cyan>│</fg> 2025<dim>/</fg>01<dim>/</fg>15 197 + <cyan>└</fg> 198 198 ", 199 199 "<cursor.backward count=999><cursor.up count=4>", 200 200 "<cursor.down count=1>", 201 201 "<erase.down>", 202 - "◇ Pick a date 203 - │ 2025/01/15", 202 + "<green>◇</fg> Pick a date 203 + <dim>│</fg> <dim>2025/01/14</bold>", 204 204 " 205 205 ", 206 206 "<cursor.show>", ··· 210 210 exports[`date (isCI = true) > renders submitted value 1`] = ` 211 211 [ 212 212 "<cursor.hide>", 213 - "│ 214 - ◆ Pick a date 215 - │ 2025/06/15 216 - └ 213 + "<dim>│</fg> 214 + <cyan>◆</fg> Pick a date 215 + <cyan>│</fg> 2025<dim>/</fg>06<dim>/</fg>15 216 + <cyan>└</fg> 217 217 ", 218 218 "<cursor.backward count=999><cursor.up count=4>", 219 219 "<cursor.down count=1>", 220 220 "<erase.down>", 221 - "◇ Pick a date 222 - │ 2025/06/15", 221 + "<green>◇</fg> Pick a date 222 + <dim>│</fg> <dim>2025/06/14</bold>", 223 223 " 224 224 ", 225 225 "<cursor.show>", ··· 229 229 exports[`date (isCI = true) > supports MM/DD/YYYY format 1`] = ` 230 230 [ 231 231 "<cursor.hide>", 232 - "│ 233 - ◆ Pick a date 234 - │ 01/15/2025 235 - └ 232 + "<dim>│</fg> 233 + <cyan>◆</fg> Pick a date 234 + <cyan>│</fg> 01<dim>/</fg>15<dim>/</fg>2025 235 + <cyan>└</fg> 236 236 ", 237 237 "<cursor.backward count=999><cursor.up count=4>", 238 238 "<cursor.down count=1>", 239 239 "<erase.down>", 240 - "◇ Pick a date 241 - │ 01/15/2025", 240 + "<green>◇</fg> Pick a date 241 + <dim>│</fg> <dim>01/14/2025</bold>", 242 242 " 243 243 ", 244 244 "<cursor.show>", ··· 248 248 exports[`date (isCI = true) > withGuide: false removes guide 1`] = ` 249 249 [ 250 250 "<cursor.hide>", 251 - "◆ Pick a date 252 - 2025/01/15 251 + "<cyan>◆</fg> Pick a date 252 + 2025<dim>/</fg>01<dim>/</fg>15 253 253 254 254 ", 255 255 "<cursor.backward count=999><cursor.up count=3>", 256 256 "<erase.down>", 257 - "◇ Pick a date 258 - 2025/01/15", 257 + "<green>◇</fg> Pick a date 258 + <dim>2025/01/14</bold>", 259 259 " 260 260 ", 261 261 "<cursor.show>",
+452 -452
packages/prompts/src/__snapshots__/group-multi-select.test.ts.snap
··· 3 3 exports[`groupMultiselect (isCI = false) > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ Select a fruit 8 - │ ◻ group1 9 - │ └ ◻ group1value0 10 - │ ◻ group2 11 - │ └ ◻ group2value0 12 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> Select a fruit 8 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 9 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value0</bold> 10 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 11 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 12 + <cyan>└</fg> 13 13 ", 14 14 " 15 15 ", ··· 20 20 exports[`groupMultiselect (isCI = false) > can deselect an option 1`] = ` 21 21 [ 22 22 "<cursor.hide>", 23 - "│ 24 - ◆ foo 25 - │ ◻ group1 26 - │ │ ◻ group1value0 27 - │ └ ◻ group1value1 28 - └ 23 + "<dim>│</fg> 24 + <cyan>◆</fg> foo 25 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 26 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 27 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 28 + <cyan>└</fg> 29 29 ", 30 30 "<cursor.backward count=999><cursor.up count=6>", 31 31 "<cursor.down count=2>", 32 32 "<erase.down>", 33 - "│ ◻ group1 34 - │ │ ◻ group1value0 35 - │ └ ◻ group1value1 36 - └ 33 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 34 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 35 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 36 + <cyan>└</fg> 37 37 ", 38 38 "<cursor.backward count=999><cursor.up count=6>", 39 39 "<cursor.down count=3>", 40 40 "<erase.line><cursor.left count=1>", 41 - "│ │ ◼ group1value0", 41 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 42 42 "<cursor.down count=3>", 43 43 "<cursor.backward count=999><cursor.up count=6>", 44 44 "<cursor.down count=3>", 45 45 "<erase.down>", 46 - "│ │ ◼ group1value0 47 - │ └ ◻ group1value1 48 - └ 46 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 47 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 48 + <cyan>└</fg> 49 49 ", 50 50 "<cursor.backward count=999><cursor.up count=6>", 51 51 "<cursor.down count=2>", 52 52 "<erase.down>", 53 - "│ ◼ group1 54 - │ │ ◼ group1value0 55 - │ └ ◼ group1value1 56 - └ 53 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 54 + <cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 55 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value1 56 + <cyan>└</fg> 57 57 ", 58 58 "<cursor.backward count=999><cursor.up count=6>", 59 59 "<cursor.down count=2>", 60 60 "<erase.down>", 61 - "│ ◻ group1 62 - │ │ ◼ group1value0 63 - │ └ ◻ group1value1 64 - └ 61 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 62 + <cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 63 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 64 + <cyan>└</fg> 65 65 ", 66 66 "<cursor.backward count=999><cursor.up count=6>", 67 67 "<cursor.down count=1>", 68 68 "<erase.down>", 69 - "◇ foo 70 - │ group1value0", 69 + "<green>◇</fg> foo 70 + <dim>│</fg> <dim>group1value0</bold>", 71 71 " 72 72 ", 73 73 "<cursor.show>", ··· 77 77 exports[`groupMultiselect (isCI = false) > can select a group 1`] = ` 78 78 [ 79 79 "<cursor.hide>", 80 - "│ 81 - ◆ foo 82 - │ ◻ group1 83 - │ │ ◻ group1value0 84 - │ └ ◻ group1value1 85 - └ 80 + "<dim>│</fg> 81 + <cyan>◆</fg> foo 82 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 83 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 84 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 85 + <cyan>└</fg> 86 86 ", 87 87 "<cursor.backward count=999><cursor.up count=6>", 88 88 "<cursor.down count=2>", 89 89 "<erase.down>", 90 - "│ ◼ group1 91 - │ │ ◼ group1value0 92 - │ └ ◼ group1value1 93 - └ 90 + "<cyan>│</fg> <dim></bold><green>◼</fg> group1 91 + <cyan>│</fg> │ <green>◼</fg> <dim>group1value0</bold> 92 + <cyan>│</fg> └ <green>◼</fg> <dim>group1value1</bold> 93 + <cyan>└</fg> 94 94 ", 95 95 "<cursor.backward count=999><cursor.up count=6>", 96 96 "<cursor.down count=1>", 97 97 "<erase.down>", 98 - "◇ foo 99 - │ group1value0, group1value1", 98 + "<green>◇</fg> foo 99 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 100 100 " 101 101 ", 102 102 "<cursor.show>", ··· 106 106 exports[`groupMultiselect (isCI = false) > can select a group by selecting all members 1`] = ` 107 107 [ 108 108 "<cursor.hide>", 109 - "│ 110 - ◆ foo 111 - │ ◻ group1 112 - │ │ ◻ group1value0 113 - │ └ ◻ group1value1 114 - └ 109 + "<dim>│</fg> 110 + <cyan>◆</fg> foo 111 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 112 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 113 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 114 + <cyan>└</fg> 115 115 ", 116 116 "<cursor.backward count=999><cursor.up count=6>", 117 117 "<cursor.down count=2>", 118 118 "<erase.down>", 119 - "│ ◻ group1 120 - │ │ ◻ group1value0 121 - │ └ ◻ group1value1 122 - └ 119 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 120 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 121 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 122 + <cyan>└</fg> 123 123 ", 124 124 "<cursor.backward count=999><cursor.up count=6>", 125 125 "<cursor.down count=3>", 126 126 "<erase.line><cursor.left count=1>", 127 - "│ │ ◼ group1value0", 127 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 128 128 "<cursor.down count=3>", 129 129 "<cursor.backward count=999><cursor.up count=6>", 130 130 "<cursor.down count=3>", 131 131 "<erase.down>", 132 - "│ │ ◼ group1value0 133 - │ └ ◻ group1value1 134 - └ 132 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 133 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 134 + <cyan>└</fg> 135 135 ", 136 136 "<cursor.backward count=999><cursor.up count=6>", 137 137 "<cursor.down count=2>", 138 138 "<erase.down>", 139 - "│ ◼ group1 140 - │ │ ◼ group1value0 141 - │ └ ◼ group1value1 142 - └ 139 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 140 + <cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 141 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value1 142 + <cyan>└</fg> 143 143 ", 144 144 "<cursor.backward count=999><cursor.up count=6>", 145 145 "<cursor.down count=1>", 146 146 "<erase.down>", 147 - "◇ foo 148 - │ group1value0, group1value1", 147 + "<green>◇</fg> foo 148 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 149 149 " 150 150 ", 151 151 "<cursor.show>", ··· 155 155 exports[`groupMultiselect (isCI = false) > can select multiple options 1`] = ` 156 156 [ 157 157 "<cursor.hide>", 158 - "│ 159 - ◆ foo 160 - │ ◻ group1 161 - │ │ ◻ group1value0 162 - │ │ ◻ group1value1 163 - │ └ ◻ group1value2 164 - └ 158 + "<dim>│</fg> 159 + <cyan>◆</fg> foo 160 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 161 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 162 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value1</bold> 163 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value2</bold> 164 + <cyan>└</fg> 165 165 ", 166 166 "<cursor.backward count=999><cursor.up count=7>", 167 167 "<cursor.down count=2>", 168 168 "<erase.down>", 169 - "│ ◻ group1 170 - │ │ ◻ group1value0 171 - │ │ ◻ group1value1 172 - │ └ ◻ group1value2 173 - └ 169 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 170 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 171 + <cyan>│</fg> <dim>│ </bold><dim>◻</bold> <dim>group1value1</bold> 172 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value2</bold> 173 + <cyan>└</fg> 174 174 ", 175 175 "<cursor.backward count=999><cursor.up count=7>", 176 176 "<cursor.down count=3>", 177 177 "<erase.line><cursor.left count=1>", 178 - "│ │ ◼ group1value0", 178 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 179 179 "<cursor.down count=4>", 180 180 "<cursor.backward count=999><cursor.up count=7>", 181 181 "<cursor.down count=3>", 182 182 "<erase.down>", 183 - "│ │ ◼ group1value0 184 - │ │ ◻ group1value1 185 - │ └ ◻ group1value2 186 - └ 183 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 184 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value1 185 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value2</bold> 186 + <cyan>└</fg> 187 187 ", 188 188 "<cursor.backward count=999><cursor.up count=7>", 189 189 "<cursor.down count=4>", 190 190 "<erase.line><cursor.left count=1>", 191 - "│ │ ◼ group1value1", 191 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value1", 192 192 "<cursor.down count=3>", 193 193 "<cursor.backward count=999><cursor.up count=7>", 194 194 "<cursor.down count=1>", 195 195 "<erase.down>", 196 - "◇ foo 197 - │ group1value0, group1value1", 196 + "<green>◇</fg> foo 197 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 198 198 " 199 199 ", 200 200 "<cursor.show>", ··· 204 204 exports[`groupMultiselect (isCI = false) > can submit empty selection when require = false 1`] = ` 205 205 [ 206 206 "<cursor.hide>", 207 - "│ 208 - ◆ foo 209 - │ ◻ group1 210 - │ │ ◻ group1value0 211 - │ └ ◻ group1value1 212 - └ 207 + "<dim>│</fg> 208 + <cyan>◆</fg> foo 209 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 210 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 211 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 212 + <cyan>└</fg> 213 213 ", 214 214 "<cursor.backward count=999><cursor.up count=6>", 215 215 "<cursor.down count=1>", 216 216 "<erase.down>", 217 - "◇ foo 218 - │", 217 + "<green>◇</fg> foo 218 + <dim>│</fg>", 219 219 " 220 220 ", 221 221 "<cursor.show>", ··· 225 225 exports[`groupMultiselect (isCI = false) > cursorAt sets initial selection 1`] = ` 226 226 [ 227 227 "<cursor.hide>", 228 - "│ 229 - ◆ foo 230 - │ ◻ group1 231 - │ │ ◻ group1value0 232 - │ └ ◻ group1value1 233 - └ 228 + "<dim>│</fg> 229 + <cyan>◆</fg> foo 230 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 231 + <cyan>│</fg> <dim>│ </bold><dim>◻</bold> <dim>group1value0</bold> 232 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 233 + <cyan>└</fg> 234 234 ", 235 235 "<cursor.backward count=999><cursor.up count=6>", 236 236 "<cursor.down count=4>", 237 237 "<erase.line><cursor.left count=1>", 238 - "│ └ ◼ group1value1", 238 + "<cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value1", 239 239 "<cursor.down count=2>", 240 240 "<cursor.backward count=999><cursor.up count=6>", 241 241 "<cursor.down count=1>", 242 242 "<erase.down>", 243 - "◇ foo 244 - │ group1value1", 243 + "<green>◇</fg> foo 244 + <dim>│</fg> <dim>group1value1</bold>", 245 245 " 246 246 ", 247 247 "<cursor.show>", ··· 251 251 exports[`groupMultiselect (isCI = false) > groupSpacing > negative spacing is ignored 1`] = ` 252 252 [ 253 253 "<cursor.hide>", 254 - "│ 255 - ◆ foo 256 - │ ◻ group1 257 - │ └ ◻ group1value0 258 - │ ◻ group2 259 - │ └ ◻ group2value0 260 - └ 254 + "<dim>│</fg> 255 + <cyan>◆</fg> foo 256 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 257 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value0</bold> 258 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 259 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 260 + <cyan>└</fg> 261 261 ", 262 262 "<cursor.backward count=999><cursor.up count=7>", 263 263 "<cursor.down count=2>", 264 264 "<erase.down>", 265 - "│ ◻ group1 266 - │ └ ◻ group1value0 267 - │ ◻ group2 268 - │ └ ◻ group2value0 269 - └ 265 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 266 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value0 267 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 268 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 269 + <cyan>└</fg> 270 270 ", 271 271 "<cursor.backward count=999><cursor.up count=7>", 272 272 "<cursor.down count=2>", 273 273 "<erase.down>", 274 - "│ ◼ group1 275 - │ └ ◼ group1value0 276 - │ ◻ group2 277 - │ └ ◻ group2value0 278 - └ 274 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 275 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value0 276 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 277 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 278 + <cyan>└</fg> 279 279 ", 280 280 "<cursor.backward count=999><cursor.up count=7>", 281 281 "<cursor.down count=1>", 282 282 "<erase.down>", 283 - "◇ foo 284 - │ group1value0", 283 + "<green>◇</fg> foo 284 + <dim>│</fg> <dim>group1value0</bold>", 285 285 " 286 286 ", 287 287 "<cursor.show>", ··· 291 291 exports[`groupMultiselect (isCI = false) > groupSpacing > renders spaced groups 1`] = ` 292 292 [ 293 293 "<cursor.hide>", 294 - "│ 295 - ◆ foo 296 - │ 297 - │ 298 - │ ◻ group1 299 - │ └ ◻ group1value0 300 - │ 301 - │ 302 - │ ◻ group2 303 - │ └ ◻ group2value0 304 - └ 294 + "<dim>│</fg> 295 + <cyan>◆</fg> foo 296 + <cyan>│</fg> 297 + <cyan>│</fg> 298 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 299 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value0</bold> 300 + <cyan>│</fg> 301 + <cyan>│</fg> 302 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 303 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 304 + <cyan>└</fg> 305 305 ", 306 306 "<cursor.backward count=999><cursor.up count=11>", 307 307 "<cursor.down count=4>", 308 308 "<erase.down>", 309 - "│ ◻ group1 310 - │ └ ◻ group1value0 311 - │ 312 - │ 313 - │ ◻ group2 314 - │ └ ◻ group2value0 315 - └ 309 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 310 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value0 311 + <cyan>│</fg> 312 + <cyan>│</fg> 313 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 314 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 315 + <cyan>└</fg> 316 316 ", 317 317 "<cursor.backward count=999><cursor.up count=11>", 318 318 "<cursor.down count=4>", 319 319 "<erase.down>", 320 - "│ ◼ group1 321 - │ └ ◼ group1value0 322 - │ 323 - │ 324 - │ ◻ group2 325 - │ └ ◻ group2value0 326 - └ 320 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 321 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value0 322 + <cyan>│</fg> 323 + <cyan>│</fg> 324 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 325 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 326 + <cyan>└</fg> 327 327 ", 328 328 "<cursor.backward count=999><cursor.up count=11>", 329 329 "<cursor.down count=1>", 330 330 "<erase.down>", 331 - "◇ foo 332 - │ group1value0", 331 + "<green>◇</fg> foo 332 + <dim>│</fg> <dim>group1value0</bold>", 333 333 " 334 334 ", 335 335 "<cursor.show>", ··· 339 339 exports[`groupMultiselect (isCI = false) > initial values can be set 1`] = ` 340 340 [ 341 341 "<cursor.hide>", 342 - "│ 343 - ◆ foo 344 - │ ◻ group1 345 - │ │ ◻ group1value0 346 - │ └ ◼ group1value1 347 - └ 342 + "<dim>│</fg> 343 + <cyan>◆</fg> foo 344 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 345 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 346 + <cyan>│</fg> └ <green>◼</fg> <dim>group1value1</bold> 347 + <cyan>└</fg> 348 348 ", 349 349 "<cursor.backward count=999><cursor.up count=6>", 350 350 "<cursor.down count=1>", 351 351 "<erase.down>", 352 - "◇ foo 353 - │ group1value1", 352 + "<green>◇</fg> foo 353 + <dim>│</fg> <dim>group1value1</bold>", 354 354 " 355 355 ", 356 356 "<cursor.show>", ··· 360 360 exports[`groupMultiselect (isCI = false) > renders error when nothing selected 1`] = ` 361 361 [ 362 362 "<cursor.hide>", 363 - "│ 364 - ◆ foo 365 - │ ◻ group1 366 - │ │ ◻ group1value0 367 - │ └ ◻ group1value1 368 - └ 363 + "<dim>│</fg> 364 + <cyan>◆</fg> foo 365 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 366 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 367 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 368 + <cyan>└</fg> 369 369 ", 370 370 "<cursor.backward count=999><cursor.up count=6>", 371 371 "<cursor.down count=1>", 372 372 "<erase.down>", 373 - "▲ foo 374 - │ ◻ group1 375 - │ │ ◻ group1value0 376 - │ └ ◻ group1value1 377 - └ Please select at least one option. 378 - Press  space  to select,  enter  to submit 373 + "<yellow>▲</fg> foo 374 + <yellow>│</fg> <dim></bold><cyan>◻</fg> group1 375 + <yellow>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 376 + <yellow>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 377 + <yellow>└</fg> <yellow>Please select at least one option.</fg> 378 + </><dim>Press <dim><bg:white> space </bg></fg> to select, <dim><bg:white> enter </bg></fg> to submit</bold></> 379 379 ", 380 380 "<cursor.backward count=999><cursor.up count=7>", 381 381 "<cursor.down count=1>", 382 382 "<erase.down>", 383 - "◆ foo 384 - │ ◻ group1 385 - │ │ ◻ group1value0 386 - │ └ ◻ group1value1 387 - └ 383 + "<cyan>◆</fg> foo 384 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 385 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 386 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 387 + <cyan>└</fg> 388 388 ", 389 389 "<cursor.backward count=999><cursor.up count=6>", 390 390 "<cursor.down count=3>", 391 391 "<erase.line><cursor.left count=1>", 392 - "│ │ ◼ group1value0", 392 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 393 393 "<cursor.down count=3>", 394 394 "<cursor.backward count=999><cursor.up count=6>", 395 395 "<cursor.down count=1>", 396 396 "<erase.down>", 397 - "◇ foo 398 - │ group1value0", 397 + "<green>◇</fg> foo 398 + <dim>│</fg> <dim>group1value0</bold>", 399 399 " 400 400 ", 401 401 "<cursor.show>", ··· 405 405 exports[`groupMultiselect (isCI = false) > renders message with options 1`] = ` 406 406 [ 407 407 "<cursor.hide>", 408 - "│ 409 - ◆ foo 410 - │ ◻ group1 411 - │ │ ◻ group1value0 412 - │ └ ◻ group1value1 413 - │ ◻ group2 414 - │ └ ◻ group2value0 415 - └ 408 + "<dim>│</fg> 409 + <cyan>◆</fg> foo 410 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 411 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 412 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 413 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 414 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 415 + <cyan>└</fg> 416 416 ", 417 417 "<cursor.backward count=999><cursor.up count=8>", 418 418 "<cursor.down count=2>", 419 419 "<erase.down>", 420 - "│ ◻ group1 421 - │ │ ◻ group1value0 422 - │ └ ◻ group1value1 423 - │ ◻ group2 424 - │ └ ◻ group2value0 425 - └ 420 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 421 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 422 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 423 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 424 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 425 + <cyan>└</fg> 426 426 ", 427 427 "<cursor.backward count=999><cursor.up count=8>", 428 428 "<cursor.down count=3>", 429 429 "<erase.line><cursor.left count=1>", 430 - "│ │ ◼ group1value0", 430 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 431 431 "<cursor.down count=5>", 432 432 "<cursor.backward count=999><cursor.up count=8>", 433 433 "<cursor.down count=1>", 434 434 "<erase.down>", 435 - "◇ foo 436 - │ group1value0", 435 + "<green>◇</fg> foo 436 + <dim>│</fg> <dim>group1value0</bold>", 437 437 " 438 438 ", 439 439 "<cursor.show>", ··· 443 443 exports[`groupMultiselect (isCI = false) > selectableGroups = false > cannot select groups 1`] = ` 444 444 [ 445 445 "<cursor.hide>", 446 - "│ 447 - ◆ foo 448 - │  group1 449 - │  ◻ group1value0 450 - │  ◻ group1value1 451 - └ 446 + "<dim>│</fg> 447 + <cyan>◆</fg> foo 448 + <cyan>│</fg> <dim></bold> <dim>group1</bold> 449 + <cyan>│</fg> <dim> </bold><cyan>◻</fg> group1value0 450 + <cyan>│</fg> <dim> </bold><dim>◻</bold> <dim>group1value1</bold> 451 + <cyan>└</fg> 452 452 ", 453 453 "<cursor.backward count=999><cursor.up count=6>", 454 454 "<cursor.down count=3>", 455 455 "<erase.line><cursor.left count=1>", 456 - "│  ◼ group1value0", 456 + "<cyan>│</fg> <dim> </bold><green>◼</fg> group1value0", 457 457 "<cursor.down count=3>", 458 458 "<cursor.backward count=999><cursor.up count=6>", 459 459 "<cursor.down count=1>", 460 460 "<erase.down>", 461 - "◇ foo 462 - │ group1value0", 461 + "<green>◇</fg> foo 462 + <dim>│</fg> <dim>group1value0</bold>", 463 463 " 464 464 ", 465 465 "<cursor.show>", ··· 469 469 exports[`groupMultiselect (isCI = false) > selectableGroups = false > selecting all members of group does not select group 1`] = ` 470 470 [ 471 471 "<cursor.hide>", 472 - "│ 473 - ◆ foo 474 - │  group1 475 - │  ◻ group1value0 476 - │  ◻ group1value1 477 - └ 472 + "<dim>│</fg> 473 + <cyan>◆</fg> foo 474 + <cyan>│</fg> <dim></bold> <dim>group1</bold> 475 + <cyan>│</fg> <dim> </bold><cyan>◻</fg> group1value0 476 + <cyan>│</fg> <dim> </bold><dim>◻</bold> <dim>group1value1</bold> 477 + <cyan>└</fg> 478 478 ", 479 479 "<cursor.backward count=999><cursor.up count=6>", 480 480 "<cursor.down count=3>", 481 481 "<erase.line><cursor.left count=1>", 482 - "│  ◼ group1value0", 482 + "<cyan>│</fg> <dim> </bold><green>◼</fg> group1value0", 483 483 "<cursor.down count=3>", 484 484 "<cursor.backward count=999><cursor.up count=6>", 485 485 "<cursor.down count=3>", 486 486 "<erase.down>", 487 - "│  ◼ group1value0 488 - │  ◻ group1value1 489 - └ 487 + "<cyan>│</fg> <dim> </bold><green>◼</fg> <dim>group1value0</bold> 488 + <cyan>│</fg> <dim> </bold><cyan>◻</fg> group1value1 489 + <cyan>└</fg> 490 490 ", 491 491 "<cursor.backward count=999><cursor.up count=6>", 492 492 "<cursor.down count=4>", 493 493 "<erase.line><cursor.left count=1>", 494 - "│  ◼ group1value1", 494 + "<cyan>│</fg> <dim> </bold><green>◼</fg> group1value1", 495 495 "<cursor.down count=2>", 496 496 "<cursor.backward count=999><cursor.up count=6>", 497 497 "<cursor.down count=1>", 498 498 "<erase.down>", 499 - "◇ foo 500 - │ group1value0, group1value1", 499 + "<green>◇</fg> foo 500 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 501 501 " 502 502 ", 503 503 "<cursor.show>", ··· 507 507 exports[`groupMultiselect (isCI = false) > values can be non-primitive 1`] = ` 508 508 [ 509 509 "<cursor.hide>", 510 - "│ 511 - ◆ foo 512 - │ ◻ group1 513 - │ │ ◻ value0 514 - │ └ ◻ value1 515 - └ 510 + "<dim>│</fg> 511 + <cyan>◆</fg> foo 512 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 513 + <cyan>│</fg> │ <cyan>◻</fg> <dim>value0</bold> 514 + <cyan>│</fg> └ <cyan>◻</fg> <dim>value1</bold> 515 + <cyan>└</fg> 516 516 ", 517 517 "<cursor.backward count=999><cursor.up count=6>", 518 518 "<cursor.down count=2>", 519 519 "<erase.down>", 520 - "│ ◻ group1 521 - │ │ ◻ value0 522 - │ └ ◻ value1 523 - └ 520 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 521 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> value0 522 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>value1</bold> 523 + <cyan>└</fg> 524 524 ", 525 525 "<cursor.backward count=999><cursor.up count=6>", 526 526 "<cursor.down count=3>", 527 527 "<erase.line><cursor.left count=1>", 528 - "│ │ ◼ value0", 528 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> value0", 529 529 "<cursor.down count=3>", 530 530 "<cursor.backward count=999><cursor.up count=6>", 531 531 "<cursor.down count=1>", 532 532 "<erase.down>", 533 - "◇ foo 534 - │ value0", 533 + "<green>◇</fg> foo 534 + <dim>│</fg> <dim>value0</bold>", 535 535 " 536 536 ", 537 537 "<cursor.show>", ··· 541 541 exports[`groupMultiselect (isCI = true) > can be aborted by a signal 1`] = ` 542 542 [ 543 543 "<cursor.hide>", 544 - "│ 545 - ◆ Select a fruit 546 - │ ◻ group1 547 - │ └ ◻ group1value0 548 - │ ◻ group2 549 - │ └ ◻ group2value0 550 - └ 544 + "<dim>│</fg> 545 + <cyan>◆</fg> Select a fruit 546 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 547 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value0</bold> 548 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 549 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 550 + <cyan>└</fg> 551 551 ", 552 552 " 553 553 ", ··· 558 558 exports[`groupMultiselect (isCI = true) > can deselect an option 1`] = ` 559 559 [ 560 560 "<cursor.hide>", 561 - "│ 562 - ◆ foo 563 - │ ◻ group1 564 - │ │ ◻ group1value0 565 - │ └ ◻ group1value1 566 - └ 561 + "<dim>│</fg> 562 + <cyan>◆</fg> foo 563 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 564 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 565 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 566 + <cyan>└</fg> 567 567 ", 568 568 "<cursor.backward count=999><cursor.up count=6>", 569 569 "<cursor.down count=2>", 570 570 "<erase.down>", 571 - "│ ◻ group1 572 - │ │ ◻ group1value0 573 - │ └ ◻ group1value1 574 - └ 571 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 572 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 573 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 574 + <cyan>└</fg> 575 575 ", 576 576 "<cursor.backward count=999><cursor.up count=6>", 577 577 "<cursor.down count=3>", 578 578 "<erase.line><cursor.left count=1>", 579 - "│ │ ◼ group1value0", 579 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 580 580 "<cursor.down count=3>", 581 581 "<cursor.backward count=999><cursor.up count=6>", 582 582 "<cursor.down count=3>", 583 583 "<erase.down>", 584 - "│ │ ◼ group1value0 585 - │ └ ◻ group1value1 586 - └ 584 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 585 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 586 + <cyan>└</fg> 587 587 ", 588 588 "<cursor.backward count=999><cursor.up count=6>", 589 589 "<cursor.down count=2>", 590 590 "<erase.down>", 591 - "│ ◼ group1 592 - │ │ ◼ group1value0 593 - │ └ ◼ group1value1 594 - └ 591 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 592 + <cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 593 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value1 594 + <cyan>└</fg> 595 595 ", 596 596 "<cursor.backward count=999><cursor.up count=6>", 597 597 "<cursor.down count=2>", 598 598 "<erase.down>", 599 - "│ ◻ group1 600 - │ │ ◼ group1value0 601 - │ └ ◻ group1value1 602 - └ 599 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 600 + <cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 601 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 602 + <cyan>└</fg> 603 603 ", 604 604 "<cursor.backward count=999><cursor.up count=6>", 605 605 "<cursor.down count=1>", 606 606 "<erase.down>", 607 - "◇ foo 608 - │ group1value0", 607 + "<green>◇</fg> foo 608 + <dim>│</fg> <dim>group1value0</bold>", 609 609 " 610 610 ", 611 611 "<cursor.show>", ··· 615 615 exports[`groupMultiselect (isCI = true) > can select a group 1`] = ` 616 616 [ 617 617 "<cursor.hide>", 618 - "│ 619 - ◆ foo 620 - │ ◻ group1 621 - │ │ ◻ group1value0 622 - │ └ ◻ group1value1 623 - └ 618 + "<dim>│</fg> 619 + <cyan>◆</fg> foo 620 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 621 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 622 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 623 + <cyan>└</fg> 624 624 ", 625 625 "<cursor.backward count=999><cursor.up count=6>", 626 626 "<cursor.down count=2>", 627 627 "<erase.down>", 628 - "│ ◼ group1 629 - │ │ ◼ group1value0 630 - │ └ ◼ group1value1 631 - └ 628 + "<cyan>│</fg> <dim></bold><green>◼</fg> group1 629 + <cyan>│</fg> │ <green>◼</fg> <dim>group1value0</bold> 630 + <cyan>│</fg> └ <green>◼</fg> <dim>group1value1</bold> 631 + <cyan>└</fg> 632 632 ", 633 633 "<cursor.backward count=999><cursor.up count=6>", 634 634 "<cursor.down count=1>", 635 635 "<erase.down>", 636 - "◇ foo 637 - │ group1value0, group1value1", 636 + "<green>◇</fg> foo 637 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 638 638 " 639 639 ", 640 640 "<cursor.show>", ··· 644 644 exports[`groupMultiselect (isCI = true) > can select a group by selecting all members 1`] = ` 645 645 [ 646 646 "<cursor.hide>", 647 - "│ 648 - ◆ foo 649 - │ ◻ group1 650 - │ │ ◻ group1value0 651 - │ └ ◻ group1value1 652 - └ 647 + "<dim>│</fg> 648 + <cyan>◆</fg> foo 649 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 650 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 651 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 652 + <cyan>└</fg> 653 653 ", 654 654 "<cursor.backward count=999><cursor.up count=6>", 655 655 "<cursor.down count=2>", 656 656 "<erase.down>", 657 - "│ ◻ group1 658 - │ │ ◻ group1value0 659 - │ └ ◻ group1value1 660 - └ 657 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 658 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 659 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 660 + <cyan>└</fg> 661 661 ", 662 662 "<cursor.backward count=999><cursor.up count=6>", 663 663 "<cursor.down count=3>", 664 664 "<erase.line><cursor.left count=1>", 665 - "│ │ ◼ group1value0", 665 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 666 666 "<cursor.down count=3>", 667 667 "<cursor.backward count=999><cursor.up count=6>", 668 668 "<cursor.down count=3>", 669 669 "<erase.down>", 670 - "│ │ ◼ group1value0 671 - │ └ ◻ group1value1 672 - └ 670 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 671 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 672 + <cyan>└</fg> 673 673 ", 674 674 "<cursor.backward count=999><cursor.up count=6>", 675 675 "<cursor.down count=2>", 676 676 "<erase.down>", 677 - "│ ◼ group1 678 - │ │ ◼ group1value0 679 - │ └ ◼ group1value1 680 - └ 677 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 678 + <cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 679 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value1 680 + <cyan>└</fg> 681 681 ", 682 682 "<cursor.backward count=999><cursor.up count=6>", 683 683 "<cursor.down count=1>", 684 684 "<erase.down>", 685 - "◇ foo 686 - │ group1value0, group1value1", 685 + "<green>◇</fg> foo 686 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 687 687 " 688 688 ", 689 689 "<cursor.show>", ··· 693 693 exports[`groupMultiselect (isCI = true) > can select multiple options 1`] = ` 694 694 [ 695 695 "<cursor.hide>", 696 - "│ 697 - ◆ foo 698 - │ ◻ group1 699 - │ │ ◻ group1value0 700 - │ │ ◻ group1value1 701 - │ └ ◻ group1value2 702 - └ 696 + "<dim>│</fg> 697 + <cyan>◆</fg> foo 698 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 699 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 700 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value1</bold> 701 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value2</bold> 702 + <cyan>└</fg> 703 703 ", 704 704 "<cursor.backward count=999><cursor.up count=7>", 705 705 "<cursor.down count=2>", 706 706 "<erase.down>", 707 - "│ ◻ group1 708 - │ │ ◻ group1value0 709 - │ │ ◻ group1value1 710 - │ └ ◻ group1value2 711 - └ 707 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 708 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 709 + <cyan>│</fg> <dim>│ </bold><dim>◻</bold> <dim>group1value1</bold> 710 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value2</bold> 711 + <cyan>└</fg> 712 712 ", 713 713 "<cursor.backward count=999><cursor.up count=7>", 714 714 "<cursor.down count=3>", 715 715 "<erase.line><cursor.left count=1>", 716 - "│ │ ◼ group1value0", 716 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 717 717 "<cursor.down count=4>", 718 718 "<cursor.backward count=999><cursor.up count=7>", 719 719 "<cursor.down count=3>", 720 720 "<erase.down>", 721 - "│ │ ◼ group1value0 722 - │ │ ◻ group1value1 723 - │ └ ◻ group1value2 724 - └ 721 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> <dim>group1value0</bold> 722 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value1 723 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value2</bold> 724 + <cyan>└</fg> 725 725 ", 726 726 "<cursor.backward count=999><cursor.up count=7>", 727 727 "<cursor.down count=4>", 728 728 "<erase.line><cursor.left count=1>", 729 - "│ │ ◼ group1value1", 729 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value1", 730 730 "<cursor.down count=3>", 731 731 "<cursor.backward count=999><cursor.up count=7>", 732 732 "<cursor.down count=1>", 733 733 "<erase.down>", 734 - "◇ foo 735 - │ group1value0, group1value1", 734 + "<green>◇</fg> foo 735 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 736 736 " 737 737 ", 738 738 "<cursor.show>", ··· 742 742 exports[`groupMultiselect (isCI = true) > can submit empty selection when require = false 1`] = ` 743 743 [ 744 744 "<cursor.hide>", 745 - "│ 746 - ◆ foo 747 - │ ◻ group1 748 - │ │ ◻ group1value0 749 - │ └ ◻ group1value1 750 - └ 745 + "<dim>│</fg> 746 + <cyan>◆</fg> foo 747 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 748 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 749 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 750 + <cyan>└</fg> 751 751 ", 752 752 "<cursor.backward count=999><cursor.up count=6>", 753 753 "<cursor.down count=1>", 754 754 "<erase.down>", 755 - "◇ foo 756 - │", 755 + "<green>◇</fg> foo 756 + <dim>│</fg>", 757 757 " 758 758 ", 759 759 "<cursor.show>", ··· 763 763 exports[`groupMultiselect (isCI = true) > cursorAt sets initial selection 1`] = ` 764 764 [ 765 765 "<cursor.hide>", 766 - "│ 767 - ◆ foo 768 - │ ◻ group1 769 - │ │ ◻ group1value0 770 - │ └ ◻ group1value1 771 - └ 766 + "<dim>│</fg> 767 + <cyan>◆</fg> foo 768 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 769 + <cyan>│</fg> <dim>│ </bold><dim>◻</bold> <dim>group1value0</bold> 770 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value1 771 + <cyan>└</fg> 772 772 ", 773 773 "<cursor.backward count=999><cursor.up count=6>", 774 774 "<cursor.down count=4>", 775 775 "<erase.line><cursor.left count=1>", 776 - "│ └ ◼ group1value1", 776 + "<cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value1", 777 777 "<cursor.down count=2>", 778 778 "<cursor.backward count=999><cursor.up count=6>", 779 779 "<cursor.down count=1>", 780 780 "<erase.down>", 781 - "◇ foo 782 - │ group1value1", 781 + "<green>◇</fg> foo 782 + <dim>│</fg> <dim>group1value1</bold>", 783 783 " 784 784 ", 785 785 "<cursor.show>", ··· 789 789 exports[`groupMultiselect (isCI = true) > groupSpacing > negative spacing is ignored 1`] = ` 790 790 [ 791 791 "<cursor.hide>", 792 - "│ 793 - ◆ foo 794 - │ ◻ group1 795 - │ └ ◻ group1value0 796 - │ ◻ group2 797 - │ └ ◻ group2value0 798 - └ 792 + "<dim>│</fg> 793 + <cyan>◆</fg> foo 794 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 795 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value0</bold> 796 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 797 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 798 + <cyan>└</fg> 799 799 ", 800 800 "<cursor.backward count=999><cursor.up count=7>", 801 801 "<cursor.down count=2>", 802 802 "<erase.down>", 803 - "│ ◻ group1 804 - │ └ ◻ group1value0 805 - │ ◻ group2 806 - │ └ ◻ group2value0 807 - └ 803 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 804 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value0 805 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 806 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 807 + <cyan>└</fg> 808 808 ", 809 809 "<cursor.backward count=999><cursor.up count=7>", 810 810 "<cursor.down count=2>", 811 811 "<erase.down>", 812 - "│ ◼ group1 813 - │ └ ◼ group1value0 814 - │ ◻ group2 815 - │ └ ◻ group2value0 816 - └ 812 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 813 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value0 814 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 815 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 816 + <cyan>└</fg> 817 817 ", 818 818 "<cursor.backward count=999><cursor.up count=7>", 819 819 "<cursor.down count=1>", 820 820 "<erase.down>", 821 - "◇ foo 822 - │ group1value0", 821 + "<green>◇</fg> foo 822 + <dim>│</fg> <dim>group1value0</bold>", 823 823 " 824 824 ", 825 825 "<cursor.show>", ··· 829 829 exports[`groupMultiselect (isCI = true) > groupSpacing > renders spaced groups 1`] = ` 830 830 [ 831 831 "<cursor.hide>", 832 - "│ 833 - ◆ foo 834 - │ 835 - │ 836 - │ ◻ group1 837 - │ └ ◻ group1value0 838 - │ 839 - │ 840 - │ ◻ group2 841 - │ └ ◻ group2value0 842 - └ 832 + "<dim>│</fg> 833 + <cyan>◆</fg> foo 834 + <cyan>│</fg> 835 + <cyan>│</fg> 836 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 837 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value0</bold> 838 + <cyan>│</fg> 839 + <cyan>│</fg> 840 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 841 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 842 + <cyan>└</fg> 843 843 ", 844 844 "<cursor.backward count=999><cursor.up count=11>", 845 845 "<cursor.down count=4>", 846 846 "<erase.down>", 847 - "│ ◻ group1 848 - │ └ ◻ group1value0 849 - │ 850 - │ 851 - │ ◻ group2 852 - │ └ ◻ group2value0 853 - └ 847 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 848 + <cyan>│</fg> <dim>└ </bold><cyan>◻</fg> group1value0 849 + <cyan>│</fg> 850 + <cyan>│</fg> 851 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 852 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 853 + <cyan>└</fg> 854 854 ", 855 855 "<cursor.backward count=999><cursor.up count=11>", 856 856 "<cursor.down count=4>", 857 857 "<erase.down>", 858 - "│ ◼ group1 859 - │ └ ◼ group1value0 860 - │ 861 - │ 862 - │ ◻ group2 863 - │ └ ◻ group2value0 864 - └ 858 + "<cyan>│</fg> <dim></bold><green>◼</fg> <dim>group1</bold> 859 + <cyan>│</fg> <dim>└ </bold><green>◼</fg> group1value0 860 + <cyan>│</fg> 861 + <cyan>│</fg> 862 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 863 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 864 + <cyan>└</fg> 865 865 ", 866 866 "<cursor.backward count=999><cursor.up count=11>", 867 867 "<cursor.down count=1>", 868 868 "<erase.down>", 869 - "◇ foo 870 - │ group1value0", 869 + "<green>◇</fg> foo 870 + <dim>│</fg> <dim>group1value0</bold>", 871 871 " 872 872 ", 873 873 "<cursor.show>", ··· 877 877 exports[`groupMultiselect (isCI = true) > initial values can be set 1`] = ` 878 878 [ 879 879 "<cursor.hide>", 880 - "│ 881 - ◆ foo 882 - │ ◻ group1 883 - │ │ ◻ group1value0 884 - │ └ ◼ group1value1 885 - └ 880 + "<dim>│</fg> 881 + <cyan>◆</fg> foo 882 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 883 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 884 + <cyan>│</fg> └ <green>◼</fg> <dim>group1value1</bold> 885 + <cyan>└</fg> 886 886 ", 887 887 "<cursor.backward count=999><cursor.up count=6>", 888 888 "<cursor.down count=1>", 889 889 "<erase.down>", 890 - "◇ foo 891 - │ group1value1", 890 + "<green>◇</fg> foo 891 + <dim>│</fg> <dim>group1value1</bold>", 892 892 " 893 893 ", 894 894 "<cursor.show>", ··· 898 898 exports[`groupMultiselect (isCI = true) > renders error when nothing selected 1`] = ` 899 899 [ 900 900 "<cursor.hide>", 901 - "│ 902 - ◆ foo 903 - │ ◻ group1 904 - │ │ ◻ group1value0 905 - │ └ ◻ group1value1 906 - └ 901 + "<dim>│</fg> 902 + <cyan>◆</fg> foo 903 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 904 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 905 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 906 + <cyan>└</fg> 907 907 ", 908 908 "<cursor.backward count=999><cursor.up count=6>", 909 909 "<cursor.down count=1>", 910 910 "<erase.down>", 911 - "▲ foo 912 - │ ◻ group1 913 - │ │ ◻ group1value0 914 - │ └ ◻ group1value1 915 - └ Please select at least one option. 916 - Press  space  to select,  enter  to submit 911 + "<yellow>▲</fg> foo 912 + <yellow>│</fg> <dim></bold><cyan>◻</fg> group1 913 + <yellow>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 914 + <yellow>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 915 + <yellow>└</fg> <yellow>Please select at least one option.</fg> 916 + </><dim>Press <dim><bg:white> space </bg></fg> to select, <dim><bg:white> enter </bg></fg> to submit</bold></> 917 917 ", 918 918 "<cursor.backward count=999><cursor.up count=7>", 919 919 "<cursor.down count=1>", 920 920 "<erase.down>", 921 - "◆ foo 922 - │ ◻ group1 923 - │ │ ◻ group1value0 924 - │ └ ◻ group1value1 925 - └ 921 + "<cyan>◆</fg> foo 922 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 923 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 924 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 925 + <cyan>└</fg> 926 926 ", 927 927 "<cursor.backward count=999><cursor.up count=6>", 928 928 "<cursor.down count=3>", 929 929 "<erase.line><cursor.left count=1>", 930 - "│ │ ◼ group1value0", 930 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 931 931 "<cursor.down count=3>", 932 932 "<cursor.backward count=999><cursor.up count=6>", 933 933 "<cursor.down count=1>", 934 934 "<erase.down>", 935 - "◇ foo 936 - │ group1value0", 935 + "<green>◇</fg> foo 936 + <dim>│</fg> <dim>group1value0</bold>", 937 937 " 938 938 ", 939 939 "<cursor.show>", ··· 943 943 exports[`groupMultiselect (isCI = true) > renders message with options 1`] = ` 944 944 [ 945 945 "<cursor.hide>", 946 - "│ 947 - ◆ foo 948 - │ ◻ group1 949 - │ │ ◻ group1value0 950 - │ └ ◻ group1value1 951 - │ ◻ group2 952 - │ └ ◻ group2value0 953 - └ 946 + "<dim>│</fg> 947 + <cyan>◆</fg> foo 948 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 949 + <cyan>│</fg> │ <cyan>◻</fg> <dim>group1value0</bold> 950 + <cyan>│</fg> └ <cyan>◻</fg> <dim>group1value1</bold> 951 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 952 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 953 + <cyan>└</fg> 954 954 ", 955 955 "<cursor.backward count=999><cursor.up count=8>", 956 956 "<cursor.down count=2>", 957 957 "<erase.down>", 958 - "│ ◻ group1 959 - │ │ ◻ group1value0 960 - │ └ ◻ group1value1 961 - │ ◻ group2 962 - │ └ ◻ group2value0 963 - └ 958 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 959 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> group1value0 960 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group1value1</bold> 961 + <cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group2</bold> 962 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>group2value0</bold> 963 + <cyan>└</fg> 964 964 ", 965 965 "<cursor.backward count=999><cursor.up count=8>", 966 966 "<cursor.down count=3>", 967 967 "<erase.line><cursor.left count=1>", 968 - "│ │ ◼ group1value0", 968 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> group1value0", 969 969 "<cursor.down count=5>", 970 970 "<cursor.backward count=999><cursor.up count=8>", 971 971 "<cursor.down count=1>", 972 972 "<erase.down>", 973 - "◇ foo 974 - │ group1value0", 973 + "<green>◇</fg> foo 974 + <dim>│</fg> <dim>group1value0</bold>", 975 975 " 976 976 ", 977 977 "<cursor.show>", ··· 981 981 exports[`groupMultiselect (isCI = true) > selectableGroups = false > cannot select groups 1`] = ` 982 982 [ 983 983 "<cursor.hide>", 984 - "│ 985 - ◆ foo 986 - │  group1 987 - │  ◻ group1value0 988 - │  ◻ group1value1 989 - └ 984 + "<dim>│</fg> 985 + <cyan>◆</fg> foo 986 + <cyan>│</fg> <dim></bold> <dim>group1</bold> 987 + <cyan>│</fg> <dim> </bold><cyan>◻</fg> group1value0 988 + <cyan>│</fg> <dim> </bold><dim>◻</bold> <dim>group1value1</bold> 989 + <cyan>└</fg> 990 990 ", 991 991 "<cursor.backward count=999><cursor.up count=6>", 992 992 "<cursor.down count=3>", 993 993 "<erase.line><cursor.left count=1>", 994 - "│  ◼ group1value0", 994 + "<cyan>│</fg> <dim> </bold><green>◼</fg> group1value0", 995 995 "<cursor.down count=3>", 996 996 "<cursor.backward count=999><cursor.up count=6>", 997 997 "<cursor.down count=1>", 998 998 "<erase.down>", 999 - "◇ foo 1000 - │ group1value0", 999 + "<green>◇</fg> foo 1000 + <dim>│</fg> <dim>group1value0</bold>", 1001 1001 " 1002 1002 ", 1003 1003 "<cursor.show>", ··· 1007 1007 exports[`groupMultiselect (isCI = true) > selectableGroups = false > selecting all members of group does not select group 1`] = ` 1008 1008 [ 1009 1009 "<cursor.hide>", 1010 - "│ 1011 - ◆ foo 1012 - │  group1 1013 - │  ◻ group1value0 1014 - │  ◻ group1value1 1015 - └ 1010 + "<dim>│</fg> 1011 + <cyan>◆</fg> foo 1012 + <cyan>│</fg> <dim></bold> <dim>group1</bold> 1013 + <cyan>│</fg> <dim> </bold><cyan>◻</fg> group1value0 1014 + <cyan>│</fg> <dim> </bold><dim>◻</bold> <dim>group1value1</bold> 1015 + <cyan>└</fg> 1016 1016 ", 1017 1017 "<cursor.backward count=999><cursor.up count=6>", 1018 1018 "<cursor.down count=3>", 1019 1019 "<erase.line><cursor.left count=1>", 1020 - "│  ◼ group1value0", 1020 + "<cyan>│</fg> <dim> </bold><green>◼</fg> group1value0", 1021 1021 "<cursor.down count=3>", 1022 1022 "<cursor.backward count=999><cursor.up count=6>", 1023 1023 "<cursor.down count=3>", 1024 1024 "<erase.down>", 1025 - "│  ◼ group1value0 1026 - │  ◻ group1value1 1027 - └ 1025 + "<cyan>│</fg> <dim> </bold><green>◼</fg> <dim>group1value0</bold> 1026 + <cyan>│</fg> <dim> </bold><cyan>◻</fg> group1value1 1027 + <cyan>└</fg> 1028 1028 ", 1029 1029 "<cursor.backward count=999><cursor.up count=6>", 1030 1030 "<cursor.down count=4>", 1031 1031 "<erase.line><cursor.left count=1>", 1032 - "│  ◼ group1value1", 1032 + "<cyan>│</fg> <dim> </bold><green>◼</fg> group1value1", 1033 1033 "<cursor.down count=2>", 1034 1034 "<cursor.backward count=999><cursor.up count=6>", 1035 1035 "<cursor.down count=1>", 1036 1036 "<erase.down>", 1037 - "◇ foo 1038 - │ group1value0, group1value1", 1037 + "<green>◇</fg> foo 1038 + <dim>│</fg> <dim>group1value0</bold><dim>, </bold><dim>group1value1</bold>", 1039 1039 " 1040 1040 ", 1041 1041 "<cursor.show>", ··· 1045 1045 exports[`groupMultiselect (isCI = true) > values can be non-primitive 1`] = ` 1046 1046 [ 1047 1047 "<cursor.hide>", 1048 - "│ 1049 - ◆ foo 1050 - │ ◻ group1 1051 - │ │ ◻ value0 1052 - │ └ ◻ value1 1053 - └ 1048 + "<dim>│</fg> 1049 + <cyan>◆</fg> foo 1050 + <cyan>│</fg> <dim></bold><cyan>◻</fg> group1 1051 + <cyan>│</fg> │ <cyan>◻</fg> <dim>value0</bold> 1052 + <cyan>│</fg> └ <cyan>◻</fg> <dim>value1</bold> 1053 + <cyan>└</fg> 1054 1054 ", 1055 1055 "<cursor.backward count=999><cursor.up count=6>", 1056 1056 "<cursor.down count=2>", 1057 1057 "<erase.down>", 1058 - "│ ◻ group1 1059 - │ │ ◻ value0 1060 - │ └ ◻ value1 1061 - └ 1058 + "<cyan>│</fg> <dim></bold><dim>◻</bold> <dim>group1</bold> 1059 + <cyan>│</fg> <dim>│ </bold><cyan>◻</fg> value0 1060 + <cyan>│</fg> <dim>└ </bold><dim>◻</bold> <dim>value1</bold> 1061 + <cyan>└</fg> 1062 1062 ", 1063 1063 "<cursor.backward count=999><cursor.up count=6>", 1064 1064 "<cursor.down count=3>", 1065 1065 "<erase.line><cursor.left count=1>", 1066 - "│ │ ◼ value0", 1066 + "<cyan>│</fg> <dim>│ </bold><green>◼</fg> value0", 1067 1067 "<cursor.down count=3>", 1068 1068 "<cursor.backward count=999><cursor.up count=6>", 1069 1069 "<cursor.down count=1>", 1070 1070 "<erase.down>", 1071 - "◇ foo 1072 - │ value0", 1071 + "<green>◇</fg> foo 1072 + <dim>│</fg> <dim>value0</bold>", 1073 1073 " 1074 1074 ", 1075 1075 "<cursor.show>",
+66 -66
packages/prompts/src/__snapshots__/log.test.ts.snap
··· 2 2 3 3 exports[`log (isCI = false) > error > renders error message 1`] = ` 4 4 [ 5 - "│ 6 - ■ error message 5 + "<dim>│</fg> 6 + <red>■</fg> error message 7 7 ", 8 8 ] 9 9 `; 10 10 11 11 exports[`log (isCI = false) > info > renders info message 1`] = ` 12 12 [ 13 - "│ 14 - ● info message 13 + "<dim>│</fg> 14 + <blue>●</fg> info message 15 15 ", 16 16 ] 17 17 `; 18 18 19 19 exports[`log (isCI = false) > message > renders empty lines correctly 1`] = ` 20 20 [ 21 - "│ 22 - │ foo 23 - │ 24 - │ bar 21 + "<dim>│</fg> 22 + <dim>│</fg> foo 23 + <dim>│</fg> 24 + <dim>│</fg> bar 25 25 ", 26 26 ] 27 27 `; ··· 38 38 39 39 exports[`log (isCI = false) > message > renders empty message correctly 1`] = ` 40 40 [ 41 - "│ 42 - │ 41 + "<dim>│</fg> 42 + <dim>│</fg> 43 43 ", 44 44 ] 45 45 `; ··· 54 54 55 55 exports[`log (isCI = false) > message > renders message 1`] = ` 56 56 [ 57 - "│ 58 - │ message 57 + "<dim>│</fg> 58 + <dim>│</fg> message 59 59 ", 60 60 ] 61 61 `; 62 62 63 63 exports[`log (isCI = false) > message > renders message from array 1`] = ` 64 64 [ 65 - "│ 66 - │ line 1 67 - │ line 2 68 - │ line 3 65 + "<dim>│</fg> 66 + <dim>│</fg> line 1 67 + <dim>│</fg> line 2 68 + <dim>│</fg> line 3 69 69 ", 70 70 ] 71 71 `; 72 72 73 73 exports[`log (isCI = false) > message > renders message with custom spacing 1`] = ` 74 74 [ 75 - "│ 76 - │ 77 - │ 78 - │ spaced message 75 + "<dim>│</fg> 76 + <dim>│</fg> 77 + <dim>│</fg> 78 + <dim>│</fg> spaced message 79 79 ", 80 80 ] 81 81 `; 82 82 83 83 exports[`log (isCI = false) > message > renders message with custom symbols and spacing 1`] = ` 84 84 [ 85 - "-- 86 - >> custom 87 - -- symbols 85 + "<yellow>--</fg> 86 + <red>>></fg> custom 87 + <yellow>--</fg> symbols 88 88 ", 89 89 ] 90 90 `; ··· 99 99 100 100 exports[`log (isCI = false) > message > renders multiline message 1`] = ` 101 101 [ 102 - "│ 103 - │ line 1 104 - │ line 2 105 - │ line 3 102 + "<dim>│</fg> 103 + <dim>│</fg> line 1 104 + <dim>│</fg> line 2 105 + <dim>│</fg> line 3 106 106 ", 107 107 ] 108 108 `; ··· 119 119 120 120 exports[`log (isCI = false) > step > renders step message 1`] = ` 121 121 [ 122 - "│ 123 - ◇ step message 122 + "<dim>│</fg> 123 + <green>◇</fg> step message 124 124 ", 125 125 ] 126 126 `; 127 127 128 128 exports[`log (isCI = false) > success > renders success message 1`] = ` 129 129 [ 130 - "│ 131 - ◆ success message 130 + "<dim>│</fg> 131 + <green>◆</fg> success message 132 132 ", 133 133 ] 134 134 `; 135 135 136 136 exports[`log (isCI = false) > warn > renders warn message 1`] = ` 137 137 [ 138 - "│ 139 - ▲ warn message 138 + "<dim>│</fg> 139 + <yellow>▲</fg> warn message 140 140 ", 141 141 ] 142 142 `; 143 143 144 144 exports[`log (isCI = true) > error > renders error message 1`] = ` 145 145 [ 146 - "│ 147 - ■ error message 146 + "<dim>│</fg> 147 + <red>■</fg> error message 148 148 ", 149 149 ] 150 150 `; 151 151 152 152 exports[`log (isCI = true) > info > renders info message 1`] = ` 153 153 [ 154 - "│ 155 - ● info message 154 + "<dim>│</fg> 155 + <blue>●</fg> info message 156 156 ", 157 157 ] 158 158 `; 159 159 160 160 exports[`log (isCI = true) > message > renders empty lines correctly 1`] = ` 161 161 [ 162 - "│ 163 - │ foo 164 - │ 165 - │ bar 162 + "<dim>│</fg> 163 + <dim>│</fg> foo 164 + <dim>│</fg> 165 + <dim>│</fg> bar 166 166 ", 167 167 ] 168 168 `; ··· 179 179 180 180 exports[`log (isCI = true) > message > renders empty message correctly 1`] = ` 181 181 [ 182 - "│ 183 - │ 182 + "<dim>│</fg> 183 + <dim>│</fg> 184 184 ", 185 185 ] 186 186 `; ··· 195 195 196 196 exports[`log (isCI = true) > message > renders message 1`] = ` 197 197 [ 198 - "│ 199 - │ message 198 + "<dim>│</fg> 199 + <dim>│</fg> message 200 200 ", 201 201 ] 202 202 `; 203 203 204 204 exports[`log (isCI = true) > message > renders message from array 1`] = ` 205 205 [ 206 - "│ 207 - │ line 1 208 - │ line 2 209 - │ line 3 206 + "<dim>│</fg> 207 + <dim>│</fg> line 1 208 + <dim>│</fg> line 2 209 + <dim>│</fg> line 3 210 210 ", 211 211 ] 212 212 `; 213 213 214 214 exports[`log (isCI = true) > message > renders message with custom spacing 1`] = ` 215 215 [ 216 - "│ 217 - │ 218 - │ 219 - │ spaced message 216 + "<dim>│</fg> 217 + <dim>│</fg> 218 + <dim>│</fg> 219 + <dim>│</fg> spaced message 220 220 ", 221 221 ] 222 222 `; 223 223 224 224 exports[`log (isCI = true) > message > renders message with custom symbols and spacing 1`] = ` 225 225 [ 226 - "-- 227 - >> custom 228 - -- symbols 226 + "<yellow>--</fg> 227 + <red>>></fg> custom 228 + <yellow>--</fg> symbols 229 229 ", 230 230 ] 231 231 `; ··· 240 240 241 241 exports[`log (isCI = true) > message > renders multiline message 1`] = ` 242 242 [ 243 - "│ 244 - │ line 1 245 - │ line 2 246 - │ line 3 243 + "<dim>│</fg> 244 + <dim>│</fg> line 1 245 + <dim>│</fg> line 2 246 + <dim>│</fg> line 3 247 247 ", 248 248 ] 249 249 `; ··· 260 260 261 261 exports[`log (isCI = true) > step > renders step message 1`] = ` 262 262 [ 263 - "│ 264 - ◇ step message 263 + "<dim>│</fg> 264 + <green>◇</fg> step message 265 265 ", 266 266 ] 267 267 `; 268 268 269 269 exports[`log (isCI = true) > success > renders success message 1`] = ` 270 270 [ 271 - "│ 272 - ◆ success message 271 + "<dim>│</fg> 272 + <green>◆</fg> success message 273 273 ", 274 274 ] 275 275 `; 276 276 277 277 exports[`log (isCI = true) > warn > renders warn message 1`] = ` 278 278 [ 279 - "│ 280 - ▲ warn message 279 + "<dim>│</fg> 280 + <yellow>▲</fg> warn message 281 281 ", 282 282 ] 283 283 `;
+652 -652
packages/prompts/src/__snapshots__/multi-select.test.ts.snap
··· 3 3 exports[`multiselect (isCI = false) > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ foo 8 - │ ◻ opt0 9 - │ ◻ opt1 10 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> foo 8 + <cyan>│</fg> <cyan>◻</fg> opt0 9 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 10 + <cyan>└</fg> 11 11 ", 12 12 " 13 13 ", ··· 18 18 exports[`multiselect (isCI = false) > can cancel 1`] = ` 19 19 [ 20 20 "<cursor.hide>", 21 - "│ 22 - ◆ foo 23 - │ ◻ opt0 24 - │ ◻ opt1 25 - └ 21 + "<dim>│</fg> 22 + <cyan>◆</fg> foo 23 + <cyan>│</fg> <cyan>◻</fg> opt0 24 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 25 + <cyan>└</fg> 26 26 ", 27 27 "<cursor.backward count=999><cursor.up count=5>", 28 28 "<cursor.down count=1>", 29 29 "<erase.down>", 30 - "■ foo 31 - │", 30 + "<red>■</fg> foo 31 + <dim>│</fg>", 32 32 " 33 33 ", 34 34 "<cursor.show>", ··· 38 38 exports[`multiselect (isCI = false) > can render option hints 1`] = ` 39 39 [ 40 40 "<cursor.hide>", 41 - "│ 42 - ◆ foo 43 - │ ◻ opt0 (Hint 0) 44 - │ ◻ opt1 45 - └ 41 + "<dim>│</fg> 42 + <cyan>◆</fg> foo 43 + <cyan>│</fg> <cyan>◻</fg> opt0 <dim>(Hint 0)</bold> 44 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 45 + <cyan>└</fg> 46 46 ", 47 47 "<cursor.backward count=999><cursor.up count=5>", 48 48 "<cursor.down count=2>", 49 49 "<erase.line><cursor.left count=1>", 50 - "│ ◼ opt0 (Hint 0)", 50 + "<cyan>│</fg> <green>◼</fg> opt0 <dim>(Hint 0)</bold>", 51 51 "<cursor.down count=3>", 52 52 "<cursor.backward count=999><cursor.up count=5>", 53 53 "<cursor.down count=1>", 54 54 "<erase.down>", 55 - "◇ foo 56 - │ opt0", 55 + "<green>◇</fg> foo 56 + <dim>│</fg> <dim>opt0</bold>", 57 57 " 58 58 ", 59 59 "<cursor.show>", ··· 63 63 exports[`multiselect (isCI = false) > can set cursorAt to preselect an option 1`] = ` 64 64 [ 65 65 "<cursor.hide>", 66 - "│ 67 - ◆ foo 68 - │ ◻ opt0 69 - │ ◻ opt1 70 - └ 66 + "<dim>│</fg> 67 + <cyan>◆</fg> foo 68 + <cyan>│</fg> <dim>◻</bold> <dim>opt0</bold> 69 + <cyan>│</fg> <cyan>◻</fg> opt1 70 + <cyan>└</fg> 71 71 ", 72 72 "<cursor.backward count=999><cursor.up count=5>", 73 73 "<cursor.down count=3>", 74 74 "<erase.line><cursor.left count=1>", 75 - "│ ◼ opt1", 75 + "<cyan>│</fg> <green>◼</fg> opt1", 76 76 "<cursor.down count=2>", 77 77 "<cursor.backward count=999><cursor.up count=5>", 78 78 "<cursor.down count=1>", 79 79 "<erase.down>", 80 - "◇ foo 81 - │ opt1", 80 + "<green>◇</fg> foo 81 + <dim>│</fg> <dim>opt1</bold>", 82 82 " 83 83 ", 84 84 "<cursor.show>", ··· 88 88 exports[`multiselect (isCI = false) > can set custom labels 1`] = ` 89 89 [ 90 90 "<cursor.hide>", 91 - "│ 92 - ◆ foo 93 - │ ◻ Option 0 94 - │ ◻ Option 1 95 - └ 91 + "<dim>│</fg> 92 + <cyan>◆</fg> foo 93 + <cyan>│</fg> <cyan>◻</fg> Option 0 94 + <cyan>│</fg> <dim>◻</bold> <dim>Option 1</bold> 95 + <cyan>└</fg> 96 96 ", 97 97 "<cursor.backward count=999><cursor.up count=5>", 98 98 "<cursor.down count=2>", 99 99 "<erase.line><cursor.left count=1>", 100 - "│ ◼ Option 0", 100 + "<cyan>│</fg> <green>◼</fg> Option 0", 101 101 "<cursor.down count=3>", 102 102 "<cursor.backward count=999><cursor.up count=5>", 103 103 "<cursor.down count=1>", 104 104 "<erase.down>", 105 - "◇ foo 106 - │ Option 0", 105 + "<green>◇</fg> foo 106 + <dim>│</fg> <dim>Option 0</bold>", 107 107 " 108 108 ", 109 109 "<cursor.show>", ··· 113 113 exports[`multiselect (isCI = false) > can set initial values 1`] = ` 114 114 [ 115 115 "<cursor.hide>", 116 - "│ 117 - ◆ foo 118 - │ ◻ opt0 119 - │ ◼ opt1 120 - └ 116 + "<dim>│</fg> 117 + <cyan>◆</fg> foo 118 + <cyan>│</fg> <cyan>◻</fg> opt0 119 + <cyan>│</fg> <green>◼</fg> <dim>opt1</bold> 120 + <cyan>└</fg> 121 121 ", 122 122 "<cursor.backward count=999><cursor.up count=5>", 123 123 "<cursor.down count=1>", 124 124 "<erase.down>", 125 - "◇ foo 126 - │ opt1", 125 + "<green>◇</fg> foo 126 + <dim>│</fg> <dim>opt1</bold>", 127 127 " 128 128 ", 129 129 "<cursor.show>", ··· 133 133 exports[`multiselect (isCI = false) > can submit without selection when required = false 1`] = ` 134 134 [ 135 135 "<cursor.hide>", 136 - "│ 137 - ◆ foo 138 - │ ◻ opt0 139 - │ ◻ opt1 140 - └ 136 + "<dim>│</fg> 137 + <cyan>◆</fg> foo 138 + <cyan>│</fg> <cyan>◻</fg> opt0 139 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 140 + <cyan>└</fg> 141 141 ", 142 142 "<cursor.backward count=999><cursor.up count=5>", 143 143 "<cursor.down count=1>", 144 144 "<erase.down>", 145 - "◇ foo 146 - │ none", 145 + "<green>◇</fg> foo 146 + <dim>│</fg> <dim>none</bold>", 147 147 " 148 148 ", 149 149 "<cursor.show>", ··· 153 153 exports[`multiselect (isCI = false) > maxItems renders a sliding window 1`] = ` 154 154 [ 155 155 "<cursor.hide>", 156 - "│ 157 - ◆ foo 158 - │ ◻ opt0 159 - │ ◻ opt1 160 - │ ◻ opt2 161 - │ ◻ opt3 162 - │ ◻ opt4 163 - │ ... 164 - └ 156 + "<dim>│</fg> 157 + <cyan>◆</fg> foo 158 + <cyan>│</fg> <cyan>◻</fg> opt0 159 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 160 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 161 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 162 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 163 + <cyan>│</fg> <dim>...</bold> 164 + <cyan>└</fg> 165 165 ", 166 166 "<cursor.backward count=999><cursor.up count=9>", 167 167 "<cursor.down count=2>", 168 168 "<erase.down>", 169 - "│ ◻ opt0 170 - │ ◻ opt1 171 - │ ◻ opt2 172 - │ ◻ opt3 173 - │ ◻ opt4 174 - │ ... 175 - └ 169 + "<cyan>│</fg> <dim>◻</bold> <dim>opt0</bold> 170 + <cyan>│</fg> <cyan>◻</fg> opt1 171 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 172 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 173 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 174 + <cyan>│</fg> <dim>...</bold> 175 + <cyan>└</fg> 176 176 ", 177 177 "<cursor.backward count=999><cursor.up count=9>", 178 178 "<cursor.down count=3>", 179 179 "<erase.down>", 180 - "│ ◻ opt1 181 - │ ◻ opt2 182 - │ ◻ opt3 183 - │ ◻ opt4 184 - │ ... 185 - └ 180 + "<cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 181 + <cyan>│</fg> <cyan>◻</fg> opt2 182 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 183 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 184 + <cyan>│</fg> <dim>...</bold> 185 + <cyan>└</fg> 186 186 ", 187 187 "<cursor.backward count=999><cursor.up count=9>", 188 188 "<cursor.down count=4>", 189 189 "<erase.down>", 190 - "│ ◻ opt2 191 - │ ◻ opt3 192 - │ ◻ opt4 193 - │ ... 194 - └ 190 + "<cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 191 + <cyan>│</fg> <cyan>◻</fg> opt3 192 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 193 + <cyan>│</fg> <dim>...</bold> 194 + <cyan>└</fg> 195 195 ", 196 196 "<cursor.backward count=999><cursor.up count=9>", 197 197 "<cursor.down count=2>", 198 198 "<erase.down>", 199 - "│ ... 200 - │ ◻ opt2 201 - │ ◻ opt3 202 - │ ◻ opt4 203 - │ ◻ opt5 204 - │ ... 205 - └ 199 + "<cyan>│</fg> <dim>...</bold> 200 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 201 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 202 + <cyan>│</fg> <cyan>◻</fg> opt4 203 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 204 + <cyan>│</fg> <dim>...</bold> 205 + <cyan>└</fg> 206 206 ", 207 207 "<cursor.backward count=999><cursor.up count=9>", 208 208 "<cursor.down count=3>", 209 209 "<erase.down>", 210 - "│ ◻ opt3 211 - │ ◻ opt4 212 - │ ◻ opt5 213 - │ ◻ opt6 214 - │ ... 215 - └ 210 + "<cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 211 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 212 + <cyan>│</fg> <cyan>◻</fg> opt5 213 + <cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 214 + <cyan>│</fg> <dim>...</bold> 215 + <cyan>└</fg> 216 216 ", 217 217 "<cursor.backward count=999><cursor.up count=9>", 218 218 "<cursor.down count=3>", 219 219 "<erase.down>", 220 - "│ ◻ opt4 221 - │ ◻ opt5 222 - │ ◻ opt6 223 - │ ◻ opt7 224 - │ ... 225 - └ 220 + "<cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 221 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 222 + <cyan>│</fg> <cyan>◻</fg> opt6 223 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 224 + <cyan>│</fg> <dim>...</bold> 225 + <cyan>└</fg> 226 226 ", 227 227 "<cursor.backward count=999><cursor.up count=9>", 228 228 "<cursor.down count=5>", 229 229 "<erase.line><cursor.left count=1>", 230 - "│ ◼ opt6", 230 + "<cyan>│</fg> <green>◼</fg> opt6", 231 231 "<cursor.down count=4>", 232 232 "<cursor.backward count=999><cursor.up count=9>", 233 233 "<cursor.down count=1>", 234 234 "<erase.down>", 235 - "◇ foo 236 - │ opt6", 235 + "<green>◇</fg> foo 236 + <dim>│</fg> <dim>opt6</bold>", 237 237 " 238 238 ", 239 239 "<cursor.show>", ··· 243 243 exports[`multiselect (isCI = false) > renders disabled options 1`] = ` 244 244 [ 245 245 "<cursor.hide>", 246 - "│ 247 - ◆ foo 248 - │ ◻ opt0 249 - │ ◻ opt1 250 - │ ◻ opt2 (Hint 2) 251 - └ 246 + "<dim>│</fg> 247 + <cyan>◆</fg> foo 248 + <cyan>│</fg> <dim>◻</fg> <dim>opt0</fg> 249 + <cyan>│</fg> <cyan>◻</fg> opt1 250 + <cyan>│</fg> <dim>◻</fg> <dim>opt2</fg> <dim>(Hint 2)</bold> 251 + <cyan>└</fg> 252 252 ", 253 253 "<cursor.backward count=999><cursor.up count=6>", 254 254 "<cursor.down count=3>", 255 255 "<erase.line><cursor.left count=1>", 256 - "│ ◼ opt1", 256 + "<cyan>│</fg> <green>◼</fg> opt1", 257 257 "<cursor.down count=3>", 258 258 "<cursor.backward count=999><cursor.up count=6>", 259 259 "<cursor.down count=1>", 260 260 "<erase.down>", 261 - "◇ foo 262 - │ opt1", 261 + "<green>◇</fg> foo 262 + <dim>│</fg> <dim>opt1</bold>", 263 263 " 264 264 ", 265 265 "<cursor.show>", ··· 269 269 exports[`multiselect (isCI = false) > renders message 1`] = ` 270 270 [ 271 271 "<cursor.hide>", 272 - "│ 273 - ◆ foo 274 - │ ◻ opt0 275 - │ ◻ opt1 276 - └ 272 + "<dim>│</fg> 273 + <cyan>◆</fg> foo 274 + <cyan>│</fg> <cyan>◻</fg> opt0 275 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 276 + <cyan>└</fg> 277 277 ", 278 278 "<cursor.backward count=999><cursor.up count=5>", 279 279 "<cursor.down count=2>", 280 280 "<erase.line><cursor.left count=1>", 281 - "│ ◼ opt0", 281 + "<cyan>│</fg> <green>◼</fg> opt0", 282 282 "<cursor.down count=3>", 283 283 "<cursor.backward count=999><cursor.up count=5>", 284 284 "<cursor.down count=1>", 285 285 "<erase.down>", 286 - "◇ foo 287 - │ opt0", 286 + "<green>◇</fg> foo 287 + <dim>│</fg> <dim>opt0</bold>", 288 288 " 289 289 ", 290 290 "<cursor.show>", ··· 294 294 exports[`multiselect (isCI = false) > renders multiple cancelled values 1`] = ` 295 295 [ 296 296 "<cursor.hide>", 297 - "│ 298 - ◆ foo 299 - │ ◻ opt0 300 - │ ◻ opt1 301 - │ ◻ opt2 302 - └ 297 + "<dim>│</fg> 298 + <cyan>◆</fg> foo 299 + <cyan>│</fg> <cyan>◻</fg> opt0 300 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 301 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 302 + <cyan>└</fg> 303 303 ", 304 304 "<cursor.backward count=999><cursor.up count=6>", 305 305 "<cursor.down count=2>", 306 306 "<erase.line><cursor.left count=1>", 307 - "│ ◼ opt0", 307 + "<cyan>│</fg> <green>◼</fg> opt0", 308 308 "<cursor.down count=4>", 309 309 "<cursor.backward count=999><cursor.up count=6>", 310 310 "<cursor.down count=2>", 311 311 "<erase.down>", 312 - "│ ◼ opt0 313 - │ ◻ opt1 314 - │ ◻ opt2 315 - └ 312 + "<cyan>│</fg> <green>◼</fg> <dim>opt0</bold> 313 + <cyan>│</fg> <cyan>◻</fg> opt1 314 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 315 + <cyan>└</fg> 316 316 ", 317 317 "<cursor.backward count=999><cursor.up count=6>", 318 318 "<cursor.down count=3>", 319 319 "<erase.line><cursor.left count=1>", 320 - "│ ◼ opt1", 320 + "<cyan>│</fg> <green>◼</fg> opt1", 321 321 "<cursor.down count=3>", 322 322 "<cursor.backward count=999><cursor.up count=6>", 323 323 "<cursor.down count=1>", 324 324 "<erase.down>", 325 - "■ foo 326 - │ opt0, opt1 327 - │", 325 + "<red>■</fg> foo 326 + <dim>│</fg> <dim>opt0</bold><dim>, </bold><dim>opt1</bold> 327 + <dim>│</fg>", 328 328 " 329 329 ", 330 330 "<cursor.show>", ··· 334 334 exports[`multiselect (isCI = false) > renders multiple selected options 1`] = ` 335 335 [ 336 336 "<cursor.hide>", 337 - "│ 338 - ◆ foo 339 - │ ◻ opt0 340 - │ ◻ opt1 341 - │ ◻ opt2 342 - └ 337 + "<dim>│</fg> 338 + <cyan>◆</fg> foo 339 + <cyan>│</fg> <cyan>◻</fg> opt0 340 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 341 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 342 + <cyan>└</fg> 343 343 ", 344 344 "<cursor.backward count=999><cursor.up count=6>", 345 345 "<cursor.down count=2>", 346 346 "<erase.line><cursor.left count=1>", 347 - "│ ◼ opt0", 347 + "<cyan>│</fg> <green>◼</fg> opt0", 348 348 "<cursor.down count=4>", 349 349 "<cursor.backward count=999><cursor.up count=6>", 350 350 "<cursor.down count=2>", 351 351 "<erase.down>", 352 - "│ ◼ opt0 353 - │ ◻ opt1 354 - │ ◻ opt2 355 - └ 352 + "<cyan>│</fg> <green>◼</fg> <dim>opt0</bold> 353 + <cyan>│</fg> <cyan>◻</fg> opt1 354 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 355 + <cyan>└</fg> 356 356 ", 357 357 "<cursor.backward count=999><cursor.up count=6>", 358 358 "<cursor.down count=3>", 359 359 "<erase.line><cursor.left count=1>", 360 - "│ ◼ opt1", 360 + "<cyan>│</fg> <green>◼</fg> opt1", 361 361 "<cursor.down count=3>", 362 362 "<cursor.backward count=999><cursor.up count=6>", 363 363 "<cursor.down count=3>", 364 364 "<erase.down>", 365 - "│ ◼ opt1 366 - │ ◻ opt2 367 - └ 365 + "<cyan>│</fg> <green>◼</fg> <dim>opt1</bold> 366 + <cyan>│</fg> <cyan>◻</fg> opt2 367 + <cyan>└</fg> 368 368 ", 369 369 "<cursor.backward count=999><cursor.up count=6>", 370 370 "<cursor.down count=1>", 371 371 "<erase.down>", 372 - "◇ foo 373 - │ opt0, opt1", 372 + "<green>◇</fg> foo 373 + <dim>│</fg> <dim>opt0</bold><dim>, </bold><dim>opt1</bold>", 374 374 " 375 375 ", 376 376 "<cursor.show>", ··· 380 380 exports[`multiselect (isCI = false) > renders validation errors 1`] = ` 381 381 [ 382 382 "<cursor.hide>", 383 - "│ 384 - ◆ foo 385 - │ ◻ opt0 386 - │ ◻ opt1 387 - └ 383 + "<dim>│</fg> 384 + <cyan>◆</fg> foo 385 + <cyan>│</fg> <cyan>◻</fg> opt0 386 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 387 + <cyan>└</fg> 388 388 ", 389 389 "<cursor.backward count=999><cursor.up count=5>", 390 390 "<cursor.down count=1>", 391 391 "<erase.down>", 392 - "▲ foo 393 - │ ◻ opt0 394 - │ ◻ opt1 395 - └ Please select at least one option. 396 - Press  space  to select,  enter  to submit 392 + "<yellow>▲</fg> foo 393 + <yellow>│</fg> <cyan>◻</fg> opt0 394 + <yellow>│</fg> <dim>◻</bold> <dim>opt1</bold> 395 + <yellow>└</fg> <yellow>Please select at least one option.</fg> 396 + </><dim>Press <dim><bg:white> space </bg></fg> to select, <dim><bg:white> enter </bg></fg> to submit</bold></> 397 397 ", 398 398 "<cursor.backward count=999><cursor.up count=6>", 399 399 "<cursor.down count=1>", 400 400 "<erase.down>", 401 - "◆ foo 402 - │ ◼ opt0 403 - │ ◻ opt1 404 - └ 401 + "<cyan>◆</fg> foo 402 + <cyan>│</fg> <green>◼</fg> opt0 403 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 404 + <cyan>└</fg> 405 405 ", 406 406 "<cursor.backward count=999><cursor.up count=5>", 407 407 "<cursor.down count=1>", 408 408 "<erase.down>", 409 - "◇ foo 410 - │ opt0", 409 + "<green>◇</fg> foo 410 + <dim>│</fg> <dim>opt0</bold>", 411 411 " 412 412 ", 413 413 "<cursor.show>", ··· 417 417 exports[`multiselect (isCI = false) > shows hints for all selected options 1`] = ` 418 418 [ 419 419 "<cursor.hide>", 420 - "│ 421 - ◆ foo 422 - │ ◼ opt0 (Hint 0) 423 - │ ◼ opt1 (Hint 1) 424 - │ ◻ opt2 425 - └ 420 + "<dim>│</fg> 421 + <cyan>◆</fg> foo 422 + <cyan>│</fg> <green>◼</fg> opt0 <dim>(Hint 0)</bold> 423 + <cyan>│</fg> <green>◼</fg> <dim>opt1</bold> <dim>(Hint 1)</bold> 424 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 425 + <cyan>└</fg> 426 426 ", 427 427 "<cursor.backward count=999><cursor.up count=6>", 428 428 "<cursor.down count=2>", 429 429 "<erase.down>", 430 - "│ ◼ opt0 (Hint 0) 431 - │ ◼ opt1 (Hint 1) 432 - │ ◻ opt2 433 - └ 430 + "<cyan>│</fg> <green>◼</fg> <dim>opt0</bold> <dim>(Hint 0)</bold> 431 + <cyan>│</fg> <green>◼</fg> opt1 <dim>(Hint 1)</bold> 432 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 433 + <cyan>└</fg> 434 434 ", 435 435 "<cursor.backward count=999><cursor.up count=6>", 436 436 "<cursor.down count=3>", 437 437 "<erase.down>", 438 - "│ ◼ opt1 (Hint 1) 439 - │ ◻ opt2 (Hint 2) 440 - └ 438 + "<cyan>│</fg> <green>◼</fg> <dim>opt1</bold> <dim>(Hint 1)</bold> 439 + <cyan>│</fg> <cyan>◻</fg> opt2 <dim>(Hint 2)</bold> 440 + <cyan>└</fg> 441 441 ", 442 442 "<cursor.backward count=999><cursor.up count=6>", 443 443 "<cursor.down count=1>", 444 444 "<erase.down>", 445 - "◇ foo 446 - │ opt0, opt1", 445 + "<green>◇</fg> foo 446 + <dim>│</fg> <dim>opt0</bold><dim>, </bold><dim>opt1</bold>", 447 447 " 448 448 ", 449 449 "<cursor.show>", ··· 453 453 exports[`multiselect (isCI = false) > sliding window loops downwards 1`] = ` 454 454 [ 455 455 "<cursor.hide>", 456 - "│ 457 - ◆ foo 458 - │ ◻ opt0 459 - │ ◻ opt1 460 - │ ◻ opt2 461 - │ ◻ opt3 462 - │ ◻ opt4 463 - │ ... 464 - └ 456 + "<dim>│</fg> 457 + <cyan>◆</fg> foo 458 + <cyan>│</fg> <cyan>◻</fg> opt0 459 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 460 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 461 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 462 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 463 + <cyan>│</fg> <dim>...</bold> 464 + <cyan>└</fg> 465 465 ", 466 466 "<cursor.backward count=999><cursor.up count=9>", 467 467 "<cursor.down count=2>", 468 468 "<erase.down>", 469 - "│ ◻ opt0 470 - │ ◻ opt1 471 - │ ◻ opt2 472 - │ ◻ opt3 473 - │ ◻ opt4 474 - │ ... 475 - └ 469 + "<cyan>│</fg> <dim>◻</bold> <dim>opt0</bold> 470 + <cyan>│</fg> <cyan>◻</fg> opt1 471 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 472 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 473 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 474 + <cyan>│</fg> <dim>...</bold> 475 + <cyan>└</fg> 476 476 ", 477 477 "<cursor.backward count=999><cursor.up count=9>", 478 478 "<cursor.down count=3>", 479 479 "<erase.down>", 480 - "│ ◻ opt1 481 - │ ◻ opt2 482 - │ ◻ opt3 483 - │ ◻ opt4 484 - │ ... 485 - └ 480 + "<cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 481 + <cyan>│</fg> <cyan>◻</fg> opt2 482 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 483 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 484 + <cyan>│</fg> <dim>...</bold> 485 + <cyan>└</fg> 486 486 ", 487 487 "<cursor.backward count=999><cursor.up count=9>", 488 488 "<cursor.down count=4>", 489 489 "<erase.down>", 490 - "│ ◻ opt2 491 - │ ◻ opt3 492 - │ ◻ opt4 493 - │ ... 494 - └ 490 + "<cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 491 + <cyan>│</fg> <cyan>◻</fg> opt3 492 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 493 + <cyan>│</fg> <dim>...</bold> 494 + <cyan>└</fg> 495 495 ", 496 496 "<cursor.backward count=999><cursor.up count=9>", 497 497 "<cursor.down count=2>", 498 498 "<erase.down>", 499 - "│ ... 500 - │ ◻ opt2 501 - │ ◻ opt3 502 - │ ◻ opt4 503 - │ ◻ opt5 504 - │ ... 505 - └ 499 + "<cyan>│</fg> <dim>...</bold> 500 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 501 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 502 + <cyan>│</fg> <cyan>◻</fg> opt4 503 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 504 + <cyan>│</fg> <dim>...</bold> 505 + <cyan>└</fg> 506 506 ", 507 507 "<cursor.backward count=999><cursor.up count=9>", 508 508 "<cursor.down count=3>", 509 509 "<erase.down>", 510 - "│ ◻ opt3 511 - │ ◻ opt4 512 - │ ◻ opt5 513 - │ ◻ opt6 514 - │ ... 515 - └ 510 + "<cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 511 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 512 + <cyan>│</fg> <cyan>◻</fg> opt5 513 + <cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 514 + <cyan>│</fg> <dim>...</bold> 515 + <cyan>└</fg> 516 516 ", 517 517 "<cursor.backward count=999><cursor.up count=9>", 518 518 "<cursor.down count=3>", 519 519 "<erase.down>", 520 - "│ ◻ opt4 521 - │ ◻ opt5 522 - │ ◻ opt6 523 - │ ◻ opt7 524 - │ ... 525 - └ 520 + "<cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 521 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 522 + <cyan>│</fg> <cyan>◻</fg> opt6 523 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 524 + <cyan>│</fg> <dim>...</bold> 525 + <cyan>└</fg> 526 526 ", 527 527 "<cursor.backward count=999><cursor.up count=9>", 528 528 "<cursor.down count=3>", 529 529 "<erase.down>", 530 - "│ ◻ opt5 531 - │ ◻ opt6 532 - │ ◻ opt7 533 - │ ◻ opt8 534 - │ ... 535 - └ 530 + "<cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 531 + <cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 532 + <cyan>│</fg> <cyan>◻</fg> opt7 533 + <cyan>│</fg> <dim>◻</bold> <dim>opt8</bold> 534 + <cyan>│</fg> <dim>...</bold> 535 + <cyan>└</fg> 536 536 ", 537 537 "<cursor.backward count=999><cursor.up count=9>", 538 538 "<cursor.down count=3>", 539 539 "<erase.down>", 540 - "│ ◻ opt6 541 - │ ◻ opt7 542 - │ ◻ opt8 543 - │ ◻ opt9 544 - │ ... 545 - └ 540 + "<cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 541 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 542 + <cyan>│</fg> <cyan>◻</fg> opt8 543 + <cyan>│</fg> <dim>◻</bold> <dim>opt9</bold> 544 + <cyan>│</fg> <dim>...</bold> 545 + <cyan>└</fg> 546 546 ", 547 547 "<cursor.backward count=999><cursor.up count=9>", 548 548 "<cursor.down count=3>", 549 549 "<erase.down>", 550 - "│ ◻ opt7 551 - │ ◻ opt8 552 - │ ◻ opt9 553 - │ ◻ opt10 554 - │ ◻ opt11 555 - └ 550 + "<cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 551 + <cyan>│</fg> <dim>◻</bold> <dim>opt8</bold> 552 + <cyan>│</fg> <cyan>◻</fg> opt9 553 + <cyan>│</fg> <dim>◻</bold> <dim>opt10</bold> 554 + <cyan>│</fg> <dim>◻</bold> <dim>opt11</bold> 555 + <cyan>└</fg> 556 556 ", 557 557 "<cursor.backward count=999><cursor.up count=9>", 558 558 "<cursor.down count=5>", 559 559 "<erase.down>", 560 - "│ ◻ opt9 561 - │ ◻ opt10 562 - │ ◻ opt11 563 - └ 560 + "<cyan>│</fg> <dim>◻</bold> <dim>opt9</bold> 561 + <cyan>│</fg> <cyan>◻</fg> opt10 562 + <cyan>│</fg> <dim>◻</bold> <dim>opt11</bold> 563 + <cyan>└</fg> 564 564 ", 565 565 "<cursor.backward count=999><cursor.up count=9>", 566 566 "<cursor.down count=6>", 567 567 "<erase.down>", 568 - "│ ◻ opt10 569 - │ ◻ opt11 570 - └ 568 + "<cyan>│</fg> <dim>◻</bold> <dim>opt10</bold> 569 + <cyan>│</fg> <cyan>◻</fg> opt11 570 + <cyan>└</fg> 571 571 ", 572 572 "<cursor.backward count=999><cursor.up count=9>", 573 573 "<cursor.down count=2>", 574 574 "<erase.down>", 575 - "│ ◻ opt0 576 - │ ◻ opt1 577 - │ ◻ opt2 578 - │ ◻ opt3 579 - │ ◻ opt4 580 - │ ... 581 - └ 575 + "<cyan>│</fg> <cyan>◻</fg> opt0 576 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 577 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 578 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 579 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 580 + <cyan>│</fg> <dim>...</bold> 581 + <cyan>└</fg> 582 582 ", 583 583 "<cursor.backward count=999><cursor.up count=9>", 584 584 "<cursor.down count=2>", 585 585 "<erase.line><cursor.left count=1>", 586 - "│ ◼ opt0", 586 + "<cyan>│</fg> <green>◼</fg> opt0", 587 587 "<cursor.down count=7>", 588 588 "<cursor.backward count=999><cursor.up count=9>", 589 589 "<cursor.down count=1>", 590 590 "<erase.down>", 591 - "◇ foo 592 - │ opt0", 591 + "<green>◇</fg> foo 592 + <dim>│</fg> <dim>opt0</bold>", 593 593 " 594 594 ", 595 595 "<cursor.show>", ··· 599 599 exports[`multiselect (isCI = false) > sliding window loops upwards 1`] = ` 600 600 [ 601 601 "<cursor.hide>", 602 - "│ 603 - ◆ foo 604 - │ ◻ opt0 605 - │ ◻ opt1 606 - │ ◻ opt2 607 - │ ◻ opt3 608 - │ ◻ opt4 609 - │ ... 610 - └ 602 + "<dim>│</fg> 603 + <cyan>◆</fg> foo 604 + <cyan>│</fg> <cyan>◻</fg> opt0 605 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 606 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 607 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 608 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 609 + <cyan>│</fg> <dim>...</bold> 610 + <cyan>└</fg> 611 611 ", 612 612 "<cursor.backward count=999><cursor.up count=9>", 613 613 "<cursor.down count=2>", 614 614 "<erase.down>", 615 - "│ ... 616 - │ ◻ opt7 617 - │ ◻ opt8 618 - │ ◻ opt9 619 - │ ◻ opt10 620 - │ ◻ opt11 621 - └ 615 + "<cyan>│</fg> <dim>...</bold> 616 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 617 + <cyan>│</fg> <dim>◻</bold> <dim>opt8</bold> 618 + <cyan>│</fg> <dim>◻</bold> <dim>opt9</bold> 619 + <cyan>│</fg> <dim>◻</bold> <dim>opt10</bold> 620 + <cyan>│</fg> <cyan>◻</fg> opt11 621 + <cyan>└</fg> 622 622 ", 623 623 "<cursor.backward count=999><cursor.up count=9>", 624 624 "<cursor.down count=7>", 625 625 "<erase.line><cursor.left count=1>", 626 - "│ ◼ opt11", 626 + "<cyan>│</fg> <green>◼</fg> opt11", 627 627 "<cursor.down count=2>", 628 628 "<cursor.backward count=999><cursor.up count=9>", 629 629 "<cursor.down count=1>", 630 630 "<erase.down>", 631 - "◇ foo 632 - │ opt11", 631 + "<green>◇</fg> foo 632 + <dim>│</fg> <dim>opt11</bold>", 633 633 " 634 634 ", 635 635 "<cursor.show>", ··· 639 639 exports[`multiselect (isCI = false) > wraps cancelled state with long options 1`] = ` 640 640 [ 641 641 "<cursor.hide>", 642 - "│ 643 - ◆ foo 644 - │ ◻ Option 0 Option 0 Option 645 - │ 0 Option 0 Option 0 Option 646 - │ 0 Option 0 Option 0 Option 647 - │ 0 Option 0 648 - │ ◻ Option 1 Option 1 Option  649 - │ 1 Option 1 Option 1 Option  650 - │ 1 Option 1 Option 1 Option  651 - │ 1 Option 1 652 - └ 642 + "<dim>│</fg> 643 + <cyan>◆</fg> foo 644 + <cyan>│</fg> <cyan>◻</fg> Option 0 Option 0 Option 645 + <cyan>│</fg> 0 Option 0 Option 0 Option 646 + <cyan>│</fg> 0 Option 0 Option 0 Option 647 + <cyan>│</fg> 0 Option 0 648 + <cyan>│</fg> <dim>◻</bold> <dim>Option 1 Option 1 Option </bold> 649 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 650 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 651 + <cyan>│</fg> <dim>1 Option 1</bold> 652 + <cyan>└</fg> 653 653 ", 654 654 "<cursor.backward count=999><cursor.up count=11>", 655 655 "<cursor.down count=2>", 656 656 "<erase.line><cursor.left count=1>", 657 - "│ ◼ Option 0 Option 0 Option ", 657 + "<cyan>│</fg> <green>◼</fg> Option 0 Option 0 Option ", 658 658 "<cursor.down count=9>", 659 659 "<cursor.backward count=999><cursor.up count=11>", 660 660 "<cursor.down count=1>", 661 661 "<erase.down>", 662 - "■ foo 663 - │ Option 0 Option 0 Option 0  664 - │ Option 0 Option 0 Option 0  665 - │ Option 0 Option 0 Option 0  666 - │ Option 0 667 - │", 662 + "<red>■</fg> foo 663 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 664 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 665 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 666 + <dim>│</fg> <dim>Option 0</bold> 667 + <dim>│</fg>", 668 668 " 669 669 ", 670 670 "<cursor.show>", ··· 674 674 exports[`multiselect (isCI = false) > wraps long messages 1`] = ` 675 675 [ 676 676 "<cursor.hide>", 677 - "│ 678 - ◆ foo foo foo foo foo foo foo 679 - │ foo foo foo foo foo foo 680 - │ foo foo foo foo foo foo foo 681 - │ ◻ opt0 682 - │ ◻ opt1 683 - └ 677 + "<dim>│</fg> 678 + <cyan>◆</fg> foo foo foo foo foo foo foo 679 + <cyan>│</fg> foo foo foo foo foo foo 680 + <cyan>│</fg> foo foo foo foo foo foo foo 681 + <cyan>│</fg> <cyan>◻</fg> opt0 682 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 683 + <cyan>└</fg> 684 684 ", 685 685 "<cursor.backward count=999><cursor.up count=7>", 686 686 "<cursor.down count=4>", 687 687 "<erase.line><cursor.left count=1>", 688 - "│ ◼ opt0", 688 + "<cyan>│</fg> <green>◼</fg> opt0", 689 689 "<cursor.down count=3>", 690 690 "<cursor.backward count=999><cursor.up count=7>", 691 691 "<cursor.down count=1>", 692 692 "<erase.down>", 693 - "◇ foo foo foo foo foo foo foo 694 - │ foo foo foo foo foo foo 695 - │ foo foo foo foo foo foo foo 696 - │ opt0", 693 + "<green>◇</fg> foo foo foo foo foo foo foo 694 + <green>│</fg> foo foo foo foo foo foo 695 + <green>│</fg> foo foo foo foo foo foo foo 696 + <dim>│</fg> <dim>opt0</bold>", 697 697 " 698 698 ", 699 699 "<cursor.show>", ··· 703 703 exports[`multiselect (isCI = false) > wraps success state with long options 1`] = ` 704 704 [ 705 705 "<cursor.hide>", 706 - "│ 707 - ◆ foo 708 - │ ◻ Option 0 Option 0 Option 709 - │ 0 Option 0 Option 0 Option 710 - │ 0 Option 0 Option 0 Option 711 - │ 0 Option 0 712 - │ ◻ Option 1 Option 1 Option  713 - │ 1 Option 1 Option 1 Option  714 - │ 1 Option 1 Option 1 Option  715 - │ 1 Option 1 716 - └ 706 + "<dim>│</fg> 707 + <cyan>◆</fg> foo 708 + <cyan>│</fg> <cyan>◻</fg> Option 0 Option 0 Option 709 + <cyan>│</fg> 0 Option 0 Option 0 Option 710 + <cyan>│</fg> 0 Option 0 Option 0 Option 711 + <cyan>│</fg> 0 Option 0 712 + <cyan>│</fg> <dim>◻</bold> <dim>Option 1 Option 1 Option </bold> 713 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 714 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 715 + <cyan>│</fg> <dim>1 Option 1</bold> 716 + <cyan>└</fg> 717 717 ", 718 718 "<cursor.backward count=999><cursor.up count=11>", 719 719 "<cursor.down count=2>", 720 720 "<erase.line><cursor.left count=1>", 721 - "│ ◼ Option 0 Option 0 Option ", 721 + "<cyan>│</fg> <green>◼</fg> Option 0 Option 0 Option ", 722 722 "<cursor.down count=9>", 723 723 "<cursor.backward count=999><cursor.up count=11>", 724 724 "<cursor.down count=1>", 725 725 "<erase.down>", 726 - "◇ foo 727 - │ Option 0 Option 0 Option 0  728 - │ Option 0 Option 0 Option 0  729 - │ Option 0 Option 0 Option 0  730 - │ Option 0", 726 + "<green>◇</fg> foo 727 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 728 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 729 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 730 + <dim>│</fg> <dim>Option 0</bold>", 731 731 " 732 732 ", 733 733 "<cursor.show>", ··· 737 737 exports[`multiselect (isCI = true) > can be aborted by a signal 1`] = ` 738 738 [ 739 739 "<cursor.hide>", 740 - "│ 741 - ◆ foo 742 - │ ◻ opt0 743 - │ ◻ opt1 744 - └ 740 + "<dim>│</fg> 741 + <cyan>◆</fg> foo 742 + <cyan>│</fg> <cyan>◻</fg> opt0 743 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 744 + <cyan>└</fg> 745 745 ", 746 746 " 747 747 ", ··· 752 752 exports[`multiselect (isCI = true) > can cancel 1`] = ` 753 753 [ 754 754 "<cursor.hide>", 755 - "│ 756 - ◆ foo 757 - │ ◻ opt0 758 - │ ◻ opt1 759 - └ 755 + "<dim>│</fg> 756 + <cyan>◆</fg> foo 757 + <cyan>│</fg> <cyan>◻</fg> opt0 758 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 759 + <cyan>└</fg> 760 760 ", 761 761 "<cursor.backward count=999><cursor.up count=5>", 762 762 "<cursor.down count=1>", 763 763 "<erase.down>", 764 - "■ foo 765 - │", 764 + "<red>■</fg> foo 765 + <dim>│</fg>", 766 766 " 767 767 ", 768 768 "<cursor.show>", ··· 772 772 exports[`multiselect (isCI = true) > can render option hints 1`] = ` 773 773 [ 774 774 "<cursor.hide>", 775 - "│ 776 - ◆ foo 777 - │ ◻ opt0 (Hint 0) 778 - │ ◻ opt1 779 - └ 775 + "<dim>│</fg> 776 + <cyan>◆</fg> foo 777 + <cyan>│</fg> <cyan>◻</fg> opt0 <dim>(Hint 0)</bold> 778 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 779 + <cyan>└</fg> 780 780 ", 781 781 "<cursor.backward count=999><cursor.up count=5>", 782 782 "<cursor.down count=2>", 783 783 "<erase.line><cursor.left count=1>", 784 - "│ ◼ opt0 (Hint 0)", 784 + "<cyan>│</fg> <green>◼</fg> opt0 <dim>(Hint 0)</bold>", 785 785 "<cursor.down count=3>", 786 786 "<cursor.backward count=999><cursor.up count=5>", 787 787 "<cursor.down count=1>", 788 788 "<erase.down>", 789 - "◇ foo 790 - │ opt0", 789 + "<green>◇</fg> foo 790 + <dim>│</fg> <dim>opt0</bold>", 791 791 " 792 792 ", 793 793 "<cursor.show>", ··· 797 797 exports[`multiselect (isCI = true) > can set cursorAt to preselect an option 1`] = ` 798 798 [ 799 799 "<cursor.hide>", 800 - "│ 801 - ◆ foo 802 - │ ◻ opt0 803 - │ ◻ opt1 804 - └ 800 + "<dim>│</fg> 801 + <cyan>◆</fg> foo 802 + <cyan>│</fg> <dim>◻</bold> <dim>opt0</bold> 803 + <cyan>│</fg> <cyan>◻</fg> opt1 804 + <cyan>└</fg> 805 805 ", 806 806 "<cursor.backward count=999><cursor.up count=5>", 807 807 "<cursor.down count=3>", 808 808 "<erase.line><cursor.left count=1>", 809 - "│ ◼ opt1", 809 + "<cyan>│</fg> <green>◼</fg> opt1", 810 810 "<cursor.down count=2>", 811 811 "<cursor.backward count=999><cursor.up count=5>", 812 812 "<cursor.down count=1>", 813 813 "<erase.down>", 814 - "◇ foo 815 - │ opt1", 814 + "<green>◇</fg> foo 815 + <dim>│</fg> <dim>opt1</bold>", 816 816 " 817 817 ", 818 818 "<cursor.show>", ··· 822 822 exports[`multiselect (isCI = true) > can set custom labels 1`] = ` 823 823 [ 824 824 "<cursor.hide>", 825 - "│ 826 - ◆ foo 827 - │ ◻ Option 0 828 - │ ◻ Option 1 829 - └ 825 + "<dim>│</fg> 826 + <cyan>◆</fg> foo 827 + <cyan>│</fg> <cyan>◻</fg> Option 0 828 + <cyan>│</fg> <dim>◻</bold> <dim>Option 1</bold> 829 + <cyan>└</fg> 830 830 ", 831 831 "<cursor.backward count=999><cursor.up count=5>", 832 832 "<cursor.down count=2>", 833 833 "<erase.line><cursor.left count=1>", 834 - "│ ◼ Option 0", 834 + "<cyan>│</fg> <green>◼</fg> Option 0", 835 835 "<cursor.down count=3>", 836 836 "<cursor.backward count=999><cursor.up count=5>", 837 837 "<cursor.down count=1>", 838 838 "<erase.down>", 839 - "◇ foo 840 - │ Option 0", 839 + "<green>◇</fg> foo 840 + <dim>│</fg> <dim>Option 0</bold>", 841 841 " 842 842 ", 843 843 "<cursor.show>", ··· 847 847 exports[`multiselect (isCI = true) > can set initial values 1`] = ` 848 848 [ 849 849 "<cursor.hide>", 850 - "│ 851 - ◆ foo 852 - │ ◻ opt0 853 - │ ◼ opt1 854 - └ 850 + "<dim>│</fg> 851 + <cyan>◆</fg> foo 852 + <cyan>│</fg> <cyan>◻</fg> opt0 853 + <cyan>│</fg> <green>◼</fg> <dim>opt1</bold> 854 + <cyan>└</fg> 855 855 ", 856 856 "<cursor.backward count=999><cursor.up count=5>", 857 857 "<cursor.down count=1>", 858 858 "<erase.down>", 859 - "◇ foo 860 - │ opt1", 859 + "<green>◇</fg> foo 860 + <dim>│</fg> <dim>opt1</bold>", 861 861 " 862 862 ", 863 863 "<cursor.show>", ··· 867 867 exports[`multiselect (isCI = true) > can submit without selection when required = false 1`] = ` 868 868 [ 869 869 "<cursor.hide>", 870 - "│ 871 - ◆ foo 872 - │ ◻ opt0 873 - │ ◻ opt1 874 - └ 870 + "<dim>│</fg> 871 + <cyan>◆</fg> foo 872 + <cyan>│</fg> <cyan>◻</fg> opt0 873 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 874 + <cyan>└</fg> 875 875 ", 876 876 "<cursor.backward count=999><cursor.up count=5>", 877 877 "<cursor.down count=1>", 878 878 "<erase.down>", 879 - "◇ foo 880 - │ none", 879 + "<green>◇</fg> foo 880 + <dim>│</fg> <dim>none</bold>", 881 881 " 882 882 ", 883 883 "<cursor.show>", ··· 887 887 exports[`multiselect (isCI = true) > maxItems renders a sliding window 1`] = ` 888 888 [ 889 889 "<cursor.hide>", 890 - "│ 891 - ◆ foo 892 - │ ◻ opt0 893 - │ ◻ opt1 894 - │ ◻ opt2 895 - │ ◻ opt3 896 - │ ◻ opt4 897 - │ ... 898 - └ 890 + "<dim>│</fg> 891 + <cyan>◆</fg> foo 892 + <cyan>│</fg> <cyan>◻</fg> opt0 893 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 894 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 895 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 896 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 897 + <cyan>│</fg> <dim>...</bold> 898 + <cyan>└</fg> 899 899 ", 900 900 "<cursor.backward count=999><cursor.up count=9>", 901 901 "<cursor.down count=2>", 902 902 "<erase.down>", 903 - "│ ◻ opt0 904 - │ ◻ opt1 905 - │ ◻ opt2 906 - │ ◻ opt3 907 - │ ◻ opt4 908 - │ ... 909 - └ 903 + "<cyan>│</fg> <dim>◻</bold> <dim>opt0</bold> 904 + <cyan>│</fg> <cyan>◻</fg> opt1 905 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 906 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 907 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 908 + <cyan>│</fg> <dim>...</bold> 909 + <cyan>└</fg> 910 910 ", 911 911 "<cursor.backward count=999><cursor.up count=9>", 912 912 "<cursor.down count=3>", 913 913 "<erase.down>", 914 - "│ ◻ opt1 915 - │ ◻ opt2 916 - │ ◻ opt3 917 - │ ◻ opt4 918 - │ ... 919 - └ 914 + "<cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 915 + <cyan>│</fg> <cyan>◻</fg> opt2 916 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 917 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 918 + <cyan>│</fg> <dim>...</bold> 919 + <cyan>└</fg> 920 920 ", 921 921 "<cursor.backward count=999><cursor.up count=9>", 922 922 "<cursor.down count=4>", 923 923 "<erase.down>", 924 - "│ ◻ opt2 925 - │ ◻ opt3 926 - │ ◻ opt4 927 - │ ... 928 - └ 924 + "<cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 925 + <cyan>│</fg> <cyan>◻</fg> opt3 926 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 927 + <cyan>│</fg> <dim>...</bold> 928 + <cyan>└</fg> 929 929 ", 930 930 "<cursor.backward count=999><cursor.up count=9>", 931 931 "<cursor.down count=2>", 932 932 "<erase.down>", 933 - "│ ... 934 - │ ◻ opt2 935 - │ ◻ opt3 936 - │ ◻ opt4 937 - │ ◻ opt5 938 - │ ... 939 - └ 933 + "<cyan>│</fg> <dim>...</bold> 934 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 935 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 936 + <cyan>│</fg> <cyan>◻</fg> opt4 937 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 938 + <cyan>│</fg> <dim>...</bold> 939 + <cyan>└</fg> 940 940 ", 941 941 "<cursor.backward count=999><cursor.up count=9>", 942 942 "<cursor.down count=3>", 943 943 "<erase.down>", 944 - "│ ◻ opt3 945 - │ ◻ opt4 946 - │ ◻ opt5 947 - │ ◻ opt6 948 - │ ... 949 - └ 944 + "<cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 945 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 946 + <cyan>│</fg> <cyan>◻</fg> opt5 947 + <cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 948 + <cyan>│</fg> <dim>...</bold> 949 + <cyan>└</fg> 950 950 ", 951 951 "<cursor.backward count=999><cursor.up count=9>", 952 952 "<cursor.down count=3>", 953 953 "<erase.down>", 954 - "│ ◻ opt4 955 - │ ◻ opt5 956 - │ ◻ opt6 957 - │ ◻ opt7 958 - │ ... 959 - └ 954 + "<cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 955 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 956 + <cyan>│</fg> <cyan>◻</fg> opt6 957 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 958 + <cyan>│</fg> <dim>...</bold> 959 + <cyan>└</fg> 960 960 ", 961 961 "<cursor.backward count=999><cursor.up count=9>", 962 962 "<cursor.down count=5>", 963 963 "<erase.line><cursor.left count=1>", 964 - "│ ◼ opt6", 964 + "<cyan>│</fg> <green>◼</fg> opt6", 965 965 "<cursor.down count=4>", 966 966 "<cursor.backward count=999><cursor.up count=9>", 967 967 "<cursor.down count=1>", 968 968 "<erase.down>", 969 - "◇ foo 970 - │ opt6", 969 + "<green>◇</fg> foo 970 + <dim>│</fg> <dim>opt6</bold>", 971 971 " 972 972 ", 973 973 "<cursor.show>", ··· 977 977 exports[`multiselect (isCI = true) > renders disabled options 1`] = ` 978 978 [ 979 979 "<cursor.hide>", 980 - "│ 981 - ◆ foo 982 - │ ◻ opt0 983 - │ ◻ opt1 984 - │ ◻ opt2 (Hint 2) 985 - └ 980 + "<dim>│</fg> 981 + <cyan>◆</fg> foo 982 + <cyan>│</fg> <dim>◻</fg> <dim>opt0</fg> 983 + <cyan>│</fg> <cyan>◻</fg> opt1 984 + <cyan>│</fg> <dim>◻</fg> <dim>opt2</fg> <dim>(Hint 2)</bold> 985 + <cyan>└</fg> 986 986 ", 987 987 "<cursor.backward count=999><cursor.up count=6>", 988 988 "<cursor.down count=3>", 989 989 "<erase.line><cursor.left count=1>", 990 - "│ ◼ opt1", 990 + "<cyan>│</fg> <green>◼</fg> opt1", 991 991 "<cursor.down count=3>", 992 992 "<cursor.backward count=999><cursor.up count=6>", 993 993 "<cursor.down count=1>", 994 994 "<erase.down>", 995 - "◇ foo 996 - │ opt1", 995 + "<green>◇</fg> foo 996 + <dim>│</fg> <dim>opt1</bold>", 997 997 " 998 998 ", 999 999 "<cursor.show>", ··· 1003 1003 exports[`multiselect (isCI = true) > renders message 1`] = ` 1004 1004 [ 1005 1005 "<cursor.hide>", 1006 - "│ 1007 - ◆ foo 1008 - │ ◻ opt0 1009 - │ ◻ opt1 1010 - └ 1006 + "<dim>│</fg> 1007 + <cyan>◆</fg> foo 1008 + <cyan>│</fg> <cyan>◻</fg> opt0 1009 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1010 + <cyan>└</fg> 1011 1011 ", 1012 1012 "<cursor.backward count=999><cursor.up count=5>", 1013 1013 "<cursor.down count=2>", 1014 1014 "<erase.line><cursor.left count=1>", 1015 - "│ ◼ opt0", 1015 + "<cyan>│</fg> <green>◼</fg> opt0", 1016 1016 "<cursor.down count=3>", 1017 1017 "<cursor.backward count=999><cursor.up count=5>", 1018 1018 "<cursor.down count=1>", 1019 1019 "<erase.down>", 1020 - "◇ foo 1021 - │ opt0", 1020 + "<green>◇</fg> foo 1021 + <dim>│</fg> <dim>opt0</bold>", 1022 1022 " 1023 1023 ", 1024 1024 "<cursor.show>", ··· 1028 1028 exports[`multiselect (isCI = true) > renders multiple cancelled values 1`] = ` 1029 1029 [ 1030 1030 "<cursor.hide>", 1031 - "│ 1032 - ◆ foo 1033 - │ ◻ opt0 1034 - │ ◻ opt1 1035 - │ ◻ opt2 1036 - └ 1031 + "<dim>│</fg> 1032 + <cyan>◆</fg> foo 1033 + <cyan>│</fg> <cyan>◻</fg> opt0 1034 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1035 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1036 + <cyan>└</fg> 1037 1037 ", 1038 1038 "<cursor.backward count=999><cursor.up count=6>", 1039 1039 "<cursor.down count=2>", 1040 1040 "<erase.line><cursor.left count=1>", 1041 - "│ ◼ opt0", 1041 + "<cyan>│</fg> <green>◼</fg> opt0", 1042 1042 "<cursor.down count=4>", 1043 1043 "<cursor.backward count=999><cursor.up count=6>", 1044 1044 "<cursor.down count=2>", 1045 1045 "<erase.down>", 1046 - "│ ◼ opt0 1047 - │ ◻ opt1 1048 - │ ◻ opt2 1049 - └ 1046 + "<cyan>│</fg> <green>◼</fg> <dim>opt0</bold> 1047 + <cyan>│</fg> <cyan>◻</fg> opt1 1048 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1049 + <cyan>└</fg> 1050 1050 ", 1051 1051 "<cursor.backward count=999><cursor.up count=6>", 1052 1052 "<cursor.down count=3>", 1053 1053 "<erase.line><cursor.left count=1>", 1054 - "│ ◼ opt1", 1054 + "<cyan>│</fg> <green>◼</fg> opt1", 1055 1055 "<cursor.down count=3>", 1056 1056 "<cursor.backward count=999><cursor.up count=6>", 1057 1057 "<cursor.down count=1>", 1058 1058 "<erase.down>", 1059 - "■ foo 1060 - │ opt0, opt1 1061 - │", 1059 + "<red>■</fg> foo 1060 + <dim>│</fg> <dim>opt0</bold><dim>, </bold><dim>opt1</bold> 1061 + <dim>│</fg>", 1062 1062 " 1063 1063 ", 1064 1064 "<cursor.show>", ··· 1068 1068 exports[`multiselect (isCI = true) > renders multiple selected options 1`] = ` 1069 1069 [ 1070 1070 "<cursor.hide>", 1071 - "│ 1072 - ◆ foo 1073 - │ ◻ opt0 1074 - │ ◻ opt1 1075 - │ ◻ opt2 1076 - └ 1071 + "<dim>│</fg> 1072 + <cyan>◆</fg> foo 1073 + <cyan>│</fg> <cyan>◻</fg> opt0 1074 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1075 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1076 + <cyan>└</fg> 1077 1077 ", 1078 1078 "<cursor.backward count=999><cursor.up count=6>", 1079 1079 "<cursor.down count=2>", 1080 1080 "<erase.line><cursor.left count=1>", 1081 - "│ ◼ opt0", 1081 + "<cyan>│</fg> <green>◼</fg> opt0", 1082 1082 "<cursor.down count=4>", 1083 1083 "<cursor.backward count=999><cursor.up count=6>", 1084 1084 "<cursor.down count=2>", 1085 1085 "<erase.down>", 1086 - "│ ◼ opt0 1087 - │ ◻ opt1 1088 - │ ◻ opt2 1089 - └ 1086 + "<cyan>│</fg> <green>◼</fg> <dim>opt0</bold> 1087 + <cyan>│</fg> <cyan>◻</fg> opt1 1088 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1089 + <cyan>└</fg> 1090 1090 ", 1091 1091 "<cursor.backward count=999><cursor.up count=6>", 1092 1092 "<cursor.down count=3>", 1093 1093 "<erase.line><cursor.left count=1>", 1094 - "│ ◼ opt1", 1094 + "<cyan>│</fg> <green>◼</fg> opt1", 1095 1095 "<cursor.down count=3>", 1096 1096 "<cursor.backward count=999><cursor.up count=6>", 1097 1097 "<cursor.down count=3>", 1098 1098 "<erase.down>", 1099 - "│ ◼ opt1 1100 - │ ◻ opt2 1101 - └ 1099 + "<cyan>│</fg> <green>◼</fg> <dim>opt1</bold> 1100 + <cyan>│</fg> <cyan>◻</fg> opt2 1101 + <cyan>└</fg> 1102 1102 ", 1103 1103 "<cursor.backward count=999><cursor.up count=6>", 1104 1104 "<cursor.down count=1>", 1105 1105 "<erase.down>", 1106 - "◇ foo 1107 - │ opt0, opt1", 1106 + "<green>◇</fg> foo 1107 + <dim>│</fg> <dim>opt0</bold><dim>, </bold><dim>opt1</bold>", 1108 1108 " 1109 1109 ", 1110 1110 "<cursor.show>", ··· 1114 1114 exports[`multiselect (isCI = true) > renders validation errors 1`] = ` 1115 1115 [ 1116 1116 "<cursor.hide>", 1117 - "│ 1118 - ◆ foo 1119 - │ ◻ opt0 1120 - │ ◻ opt1 1121 - └ 1117 + "<dim>│</fg> 1118 + <cyan>◆</fg> foo 1119 + <cyan>│</fg> <cyan>◻</fg> opt0 1120 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1121 + <cyan>└</fg> 1122 1122 ", 1123 1123 "<cursor.backward count=999><cursor.up count=5>", 1124 1124 "<cursor.down count=1>", 1125 1125 "<erase.down>", 1126 - "▲ foo 1127 - │ ◻ opt0 1128 - │ ◻ opt1 1129 - └ Please select at least one option. 1130 - Press  space  to select,  enter  to submit 1126 + "<yellow>▲</fg> foo 1127 + <yellow>│</fg> <cyan>◻</fg> opt0 1128 + <yellow>│</fg> <dim>◻</bold> <dim>opt1</bold> 1129 + <yellow>└</fg> <yellow>Please select at least one option.</fg> 1130 + </><dim>Press <dim><bg:white> space </bg></fg> to select, <dim><bg:white> enter </bg></fg> to submit</bold></> 1131 1131 ", 1132 1132 "<cursor.backward count=999><cursor.up count=6>", 1133 1133 "<cursor.down count=1>", 1134 1134 "<erase.down>", 1135 - "◆ foo 1136 - │ ◼ opt0 1137 - │ ◻ opt1 1138 - └ 1135 + "<cyan>◆</fg> foo 1136 + <cyan>│</fg> <green>◼</fg> opt0 1137 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1138 + <cyan>└</fg> 1139 1139 ", 1140 1140 "<cursor.backward count=999><cursor.up count=5>", 1141 1141 "<cursor.down count=1>", 1142 1142 "<erase.down>", 1143 - "◇ foo 1144 - │ opt0", 1143 + "<green>◇</fg> foo 1144 + <dim>│</fg> <dim>opt0</bold>", 1145 1145 " 1146 1146 ", 1147 1147 "<cursor.show>", ··· 1151 1151 exports[`multiselect (isCI = true) > shows hints for all selected options 1`] = ` 1152 1152 [ 1153 1153 "<cursor.hide>", 1154 - "│ 1155 - ◆ foo 1156 - │ ◼ opt0 (Hint 0) 1157 - │ ◼ opt1 (Hint 1) 1158 - │ ◻ opt2 1159 - └ 1154 + "<dim>│</fg> 1155 + <cyan>◆</fg> foo 1156 + <cyan>│</fg> <green>◼</fg> opt0 <dim>(Hint 0)</bold> 1157 + <cyan>│</fg> <green>◼</fg> <dim>opt1</bold> <dim>(Hint 1)</bold> 1158 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1159 + <cyan>└</fg> 1160 1160 ", 1161 1161 "<cursor.backward count=999><cursor.up count=6>", 1162 1162 "<cursor.down count=2>", 1163 1163 "<erase.down>", 1164 - "│ ◼ opt0 (Hint 0) 1165 - │ ◼ opt1 (Hint 1) 1166 - │ ◻ opt2 1167 - └ 1164 + "<cyan>│</fg> <green>◼</fg> <dim>opt0</bold> <dim>(Hint 0)</bold> 1165 + <cyan>│</fg> <green>◼</fg> opt1 <dim>(Hint 1)</bold> 1166 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1167 + <cyan>└</fg> 1168 1168 ", 1169 1169 "<cursor.backward count=999><cursor.up count=6>", 1170 1170 "<cursor.down count=3>", 1171 1171 "<erase.down>", 1172 - "│ ◼ opt1 (Hint 1) 1173 - │ ◻ opt2 (Hint 2) 1174 - └ 1172 + "<cyan>│</fg> <green>◼</fg> <dim>opt1</bold> <dim>(Hint 1)</bold> 1173 + <cyan>│</fg> <cyan>◻</fg> opt2 <dim>(Hint 2)</bold> 1174 + <cyan>└</fg> 1175 1175 ", 1176 1176 "<cursor.backward count=999><cursor.up count=6>", 1177 1177 "<cursor.down count=1>", 1178 1178 "<erase.down>", 1179 - "◇ foo 1180 - │ opt0, opt1", 1179 + "<green>◇</fg> foo 1180 + <dim>│</fg> <dim>opt0</bold><dim>, </bold><dim>opt1</bold>", 1181 1181 " 1182 1182 ", 1183 1183 "<cursor.show>", ··· 1187 1187 exports[`multiselect (isCI = true) > sliding window loops downwards 1`] = ` 1188 1188 [ 1189 1189 "<cursor.hide>", 1190 - "│ 1191 - ◆ foo 1192 - │ ◻ opt0 1193 - │ ◻ opt1 1194 - │ ◻ opt2 1195 - │ ◻ opt3 1196 - │ ◻ opt4 1197 - │ ... 1198 - └ 1190 + "<dim>│</fg> 1191 + <cyan>◆</fg> foo 1192 + <cyan>│</fg> <cyan>◻</fg> opt0 1193 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1194 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1195 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 1196 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1197 + <cyan>│</fg> <dim>...</bold> 1198 + <cyan>└</fg> 1199 1199 ", 1200 1200 "<cursor.backward count=999><cursor.up count=9>", 1201 1201 "<cursor.down count=2>", 1202 1202 "<erase.down>", 1203 - "│ ◻ opt0 1204 - │ ◻ opt1 1205 - │ ◻ opt2 1206 - │ ◻ opt3 1207 - │ ◻ opt4 1208 - │ ... 1209 - └ 1203 + "<cyan>│</fg> <dim>◻</bold> <dim>opt0</bold> 1204 + <cyan>│</fg> <cyan>◻</fg> opt1 1205 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1206 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 1207 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1208 + <cyan>│</fg> <dim>...</bold> 1209 + <cyan>└</fg> 1210 1210 ", 1211 1211 "<cursor.backward count=999><cursor.up count=9>", 1212 1212 "<cursor.down count=3>", 1213 1213 "<erase.down>", 1214 - "│ ◻ opt1 1215 - │ ◻ opt2 1216 - │ ◻ opt3 1217 - │ ◻ opt4 1218 - │ ... 1219 - └ 1214 + "<cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1215 + <cyan>│</fg> <cyan>◻</fg> opt2 1216 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 1217 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1218 + <cyan>│</fg> <dim>...</bold> 1219 + <cyan>└</fg> 1220 1220 ", 1221 1221 "<cursor.backward count=999><cursor.up count=9>", 1222 1222 "<cursor.down count=4>", 1223 1223 "<erase.down>", 1224 - "│ ◻ opt2 1225 - │ ◻ opt3 1226 - │ ◻ opt4 1227 - │ ... 1228 - └ 1224 + "<cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1225 + <cyan>│</fg> <cyan>◻</fg> opt3 1226 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1227 + <cyan>│</fg> <dim>...</bold> 1228 + <cyan>└</fg> 1229 1229 ", 1230 1230 "<cursor.backward count=999><cursor.up count=9>", 1231 1231 "<cursor.down count=2>", 1232 1232 "<erase.down>", 1233 - "│ ... 1234 - │ ◻ opt2 1235 - │ ◻ opt3 1236 - │ ◻ opt4 1237 - │ ◻ opt5 1238 - │ ... 1239 - └ 1233 + "<cyan>│</fg> <dim>...</bold> 1234 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1235 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 1236 + <cyan>│</fg> <cyan>◻</fg> opt4 1237 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 1238 + <cyan>│</fg> <dim>...</bold> 1239 + <cyan>└</fg> 1240 1240 ", 1241 1241 "<cursor.backward count=999><cursor.up count=9>", 1242 1242 "<cursor.down count=3>", 1243 1243 "<erase.down>", 1244 - "│ ◻ opt3 1245 - │ ◻ opt4 1246 - │ ◻ opt5 1247 - │ ◻ opt6 1248 - │ ... 1249 - └ 1244 + "<cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 1245 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1246 + <cyan>│</fg> <cyan>◻</fg> opt5 1247 + <cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 1248 + <cyan>│</fg> <dim>...</bold> 1249 + <cyan>└</fg> 1250 1250 ", 1251 1251 "<cursor.backward count=999><cursor.up count=9>", 1252 1252 "<cursor.down count=3>", 1253 1253 "<erase.down>", 1254 - "│ ◻ opt4 1255 - │ ◻ opt5 1256 - │ ◻ opt6 1257 - │ ◻ opt7 1258 - │ ... 1259 - └ 1254 + "<cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1255 + <cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 1256 + <cyan>│</fg> <cyan>◻</fg> opt6 1257 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 1258 + <cyan>│</fg> <dim>...</bold> 1259 + <cyan>└</fg> 1260 1260 ", 1261 1261 "<cursor.backward count=999><cursor.up count=9>", 1262 1262 "<cursor.down count=3>", 1263 1263 "<erase.down>", 1264 - "│ ◻ opt5 1265 - │ ◻ opt6 1266 - │ ◻ opt7 1267 - │ ◻ opt8 1268 - │ ... 1269 - └ 1264 + "<cyan>│</fg> <dim>◻</bold> <dim>opt5</bold> 1265 + <cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 1266 + <cyan>│</fg> <cyan>◻</fg> opt7 1267 + <cyan>│</fg> <dim>◻</bold> <dim>opt8</bold> 1268 + <cyan>│</fg> <dim>...</bold> 1269 + <cyan>└</fg> 1270 1270 ", 1271 1271 "<cursor.backward count=999><cursor.up count=9>", 1272 1272 "<cursor.down count=3>", 1273 1273 "<erase.down>", 1274 - "│ ◻ opt6 1275 - │ ◻ opt7 1276 - │ ◻ opt8 1277 - │ ◻ opt9 1278 - │ ... 1279 - └ 1274 + "<cyan>│</fg> <dim>◻</bold> <dim>opt6</bold> 1275 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 1276 + <cyan>│</fg> <cyan>◻</fg> opt8 1277 + <cyan>│</fg> <dim>◻</bold> <dim>opt9</bold> 1278 + <cyan>│</fg> <dim>...</bold> 1279 + <cyan>└</fg> 1280 1280 ", 1281 1281 "<cursor.backward count=999><cursor.up count=9>", 1282 1282 "<cursor.down count=3>", 1283 1283 "<erase.down>", 1284 - "│ ◻ opt7 1285 - │ ◻ opt8 1286 - │ ◻ opt9 1287 - │ ◻ opt10 1288 - │ ◻ opt11 1289 - └ 1284 + "<cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 1285 + <cyan>│</fg> <dim>◻</bold> <dim>opt8</bold> 1286 + <cyan>│</fg> <cyan>◻</fg> opt9 1287 + <cyan>│</fg> <dim>◻</bold> <dim>opt10</bold> 1288 + <cyan>│</fg> <dim>◻</bold> <dim>opt11</bold> 1289 + <cyan>└</fg> 1290 1290 ", 1291 1291 "<cursor.backward count=999><cursor.up count=9>", 1292 1292 "<cursor.down count=5>", 1293 1293 "<erase.down>", 1294 - "│ ◻ opt9 1295 - │ ◻ opt10 1296 - │ ◻ opt11 1297 - └ 1294 + "<cyan>│</fg> <dim>◻</bold> <dim>opt9</bold> 1295 + <cyan>│</fg> <cyan>◻</fg> opt10 1296 + <cyan>│</fg> <dim>◻</bold> <dim>opt11</bold> 1297 + <cyan>└</fg> 1298 1298 ", 1299 1299 "<cursor.backward count=999><cursor.up count=9>", 1300 1300 "<cursor.down count=6>", 1301 1301 "<erase.down>", 1302 - "│ ◻ opt10 1303 - │ ◻ opt11 1304 - └ 1302 + "<cyan>│</fg> <dim>◻</bold> <dim>opt10</bold> 1303 + <cyan>│</fg> <cyan>◻</fg> opt11 1304 + <cyan>└</fg> 1305 1305 ", 1306 1306 "<cursor.backward count=999><cursor.up count=9>", 1307 1307 "<cursor.down count=2>", 1308 1308 "<erase.down>", 1309 - "│ ◻ opt0 1310 - │ ◻ opt1 1311 - │ ◻ opt2 1312 - │ ◻ opt3 1313 - │ ◻ opt4 1314 - │ ... 1315 - └ 1309 + "<cyan>│</fg> <cyan>◻</fg> opt0 1310 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1311 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1312 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 1313 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1314 + <cyan>│</fg> <dim>...</bold> 1315 + <cyan>└</fg> 1316 1316 ", 1317 1317 "<cursor.backward count=999><cursor.up count=9>", 1318 1318 "<cursor.down count=2>", 1319 1319 "<erase.line><cursor.left count=1>", 1320 - "│ ◼ opt0", 1320 + "<cyan>│</fg> <green>◼</fg> opt0", 1321 1321 "<cursor.down count=7>", 1322 1322 "<cursor.backward count=999><cursor.up count=9>", 1323 1323 "<cursor.down count=1>", 1324 1324 "<erase.down>", 1325 - "◇ foo 1326 - │ opt0", 1325 + "<green>◇</fg> foo 1326 + <dim>│</fg> <dim>opt0</bold>", 1327 1327 " 1328 1328 ", 1329 1329 "<cursor.show>", ··· 1333 1333 exports[`multiselect (isCI = true) > sliding window loops upwards 1`] = ` 1334 1334 [ 1335 1335 "<cursor.hide>", 1336 - "│ 1337 - ◆ foo 1338 - │ ◻ opt0 1339 - │ ◻ opt1 1340 - │ ◻ opt2 1341 - │ ◻ opt3 1342 - │ ◻ opt4 1343 - │ ... 1344 - └ 1336 + "<dim>│</fg> 1337 + <cyan>◆</fg> foo 1338 + <cyan>│</fg> <cyan>◻</fg> opt0 1339 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1340 + <cyan>│</fg> <dim>◻</bold> <dim>opt2</bold> 1341 + <cyan>│</fg> <dim>◻</bold> <dim>opt3</bold> 1342 + <cyan>│</fg> <dim>◻</bold> <dim>opt4</bold> 1343 + <cyan>│</fg> <dim>...</bold> 1344 + <cyan>└</fg> 1345 1345 ", 1346 1346 "<cursor.backward count=999><cursor.up count=9>", 1347 1347 "<cursor.down count=2>", 1348 1348 "<erase.down>", 1349 - "│ ... 1350 - │ ◻ opt7 1351 - │ ◻ opt8 1352 - │ ◻ opt9 1353 - │ ◻ opt10 1354 - │ ◻ opt11 1355 - └ 1349 + "<cyan>│</fg> <dim>...</bold> 1350 + <cyan>│</fg> <dim>◻</bold> <dim>opt7</bold> 1351 + <cyan>│</fg> <dim>◻</bold> <dim>opt8</bold> 1352 + <cyan>│</fg> <dim>◻</bold> <dim>opt9</bold> 1353 + <cyan>│</fg> <dim>◻</bold> <dim>opt10</bold> 1354 + <cyan>│</fg> <cyan>◻</fg> opt11 1355 + <cyan>└</fg> 1356 1356 ", 1357 1357 "<cursor.backward count=999><cursor.up count=9>", 1358 1358 "<cursor.down count=7>", 1359 1359 "<erase.line><cursor.left count=1>", 1360 - "│ ◼ opt11", 1360 + "<cyan>│</fg> <green>◼</fg> opt11", 1361 1361 "<cursor.down count=2>", 1362 1362 "<cursor.backward count=999><cursor.up count=9>", 1363 1363 "<cursor.down count=1>", 1364 1364 "<erase.down>", 1365 - "◇ foo 1366 - │ opt11", 1365 + "<green>◇</fg> foo 1366 + <dim>│</fg> <dim>opt11</bold>", 1367 1367 " 1368 1368 ", 1369 1369 "<cursor.show>", ··· 1373 1373 exports[`multiselect (isCI = true) > wraps cancelled state with long options 1`] = ` 1374 1374 [ 1375 1375 "<cursor.hide>", 1376 - "│ 1377 - ◆ foo 1378 - │ ◻ Option 0 Option 0 Option 1379 - │ 0 Option 0 Option 0 Option 1380 - │ 0 Option 0 Option 0 Option 1381 - │ 0 Option 0 1382 - │ ◻ Option 1 Option 1 Option  1383 - │ 1 Option 1 Option 1 Option  1384 - │ 1 Option 1 Option 1 Option  1385 - │ 1 Option 1 1386 - └ 1376 + "<dim>│</fg> 1377 + <cyan>◆</fg> foo 1378 + <cyan>│</fg> <cyan>◻</fg> Option 0 Option 0 Option 1379 + <cyan>│</fg> 0 Option 0 Option 0 Option 1380 + <cyan>│</fg> 0 Option 0 Option 0 Option 1381 + <cyan>│</fg> 0 Option 0 1382 + <cyan>│</fg> <dim>◻</bold> <dim>Option 1 Option 1 Option </bold> 1383 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 1384 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 1385 + <cyan>│</fg> <dim>1 Option 1</bold> 1386 + <cyan>└</fg> 1387 1387 ", 1388 1388 "<cursor.backward count=999><cursor.up count=11>", 1389 1389 "<cursor.down count=2>", 1390 1390 "<erase.line><cursor.left count=1>", 1391 - "│ ◼ Option 0 Option 0 Option ", 1391 + "<cyan>│</fg> <green>◼</fg> Option 0 Option 0 Option ", 1392 1392 "<cursor.down count=9>", 1393 1393 "<cursor.backward count=999><cursor.up count=11>", 1394 1394 "<cursor.down count=1>", 1395 1395 "<erase.down>", 1396 - "■ foo 1397 - │ Option 0 Option 0 Option 0  1398 - │ Option 0 Option 0 Option 0  1399 - │ Option 0 Option 0 Option 0  1400 - │ Option 0 1401 - │", 1396 + "<red>■</fg> foo 1397 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 1398 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 1399 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 1400 + <dim>│</fg> <dim>Option 0</bold> 1401 + <dim>│</fg>", 1402 1402 " 1403 1403 ", 1404 1404 "<cursor.show>", ··· 1408 1408 exports[`multiselect (isCI = true) > wraps long messages 1`] = ` 1409 1409 [ 1410 1410 "<cursor.hide>", 1411 - "│ 1412 - ◆ foo foo foo foo foo foo foo 1413 - │ foo foo foo foo foo foo 1414 - │ foo foo foo foo foo foo foo 1415 - │ ◻ opt0 1416 - │ ◻ opt1 1417 - └ 1411 + "<dim>│</fg> 1412 + <cyan>◆</fg> foo foo foo foo foo foo foo 1413 + <cyan>│</fg> foo foo foo foo foo foo 1414 + <cyan>│</fg> foo foo foo foo foo foo foo 1415 + <cyan>│</fg> <cyan>◻</fg> opt0 1416 + <cyan>│</fg> <dim>◻</bold> <dim>opt1</bold> 1417 + <cyan>└</fg> 1418 1418 ", 1419 1419 "<cursor.backward count=999><cursor.up count=7>", 1420 1420 "<cursor.down count=4>", 1421 1421 "<erase.line><cursor.left count=1>", 1422 - "│ ◼ opt0", 1422 + "<cyan>│</fg> <green>◼</fg> opt0", 1423 1423 "<cursor.down count=3>", 1424 1424 "<cursor.backward count=999><cursor.up count=7>", 1425 1425 "<cursor.down count=1>", 1426 1426 "<erase.down>", 1427 - "◇ foo foo foo foo foo foo foo 1428 - │ foo foo foo foo foo foo 1429 - │ foo foo foo foo foo foo foo 1430 - │ opt0", 1427 + "<green>◇</fg> foo foo foo foo foo foo foo 1428 + <green>│</fg> foo foo foo foo foo foo 1429 + <green>│</fg> foo foo foo foo foo foo foo 1430 + <dim>│</fg> <dim>opt0</bold>", 1431 1431 " 1432 1432 ", 1433 1433 "<cursor.show>", ··· 1437 1437 exports[`multiselect (isCI = true) > wraps success state with long options 1`] = ` 1438 1438 [ 1439 1439 "<cursor.hide>", 1440 - "│ 1441 - ◆ foo 1442 - │ ◻ Option 0 Option 0 Option 1443 - │ 0 Option 0 Option 0 Option 1444 - │ 0 Option 0 Option 0 Option 1445 - │ 0 Option 0 1446 - │ ◻ Option 1 Option 1 Option  1447 - │ 1 Option 1 Option 1 Option  1448 - │ 1 Option 1 Option 1 Option  1449 - │ 1 Option 1 1450 - └ 1440 + "<dim>│</fg> 1441 + <cyan>◆</fg> foo 1442 + <cyan>│</fg> <cyan>◻</fg> Option 0 Option 0 Option 1443 + <cyan>│</fg> 0 Option 0 Option 0 Option 1444 + <cyan>│</fg> 0 Option 0 Option 0 Option 1445 + <cyan>│</fg> 0 Option 0 1446 + <cyan>│</fg> <dim>◻</bold> <dim>Option 1 Option 1 Option </bold> 1447 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 1448 + <cyan>│</fg> <dim>1 Option 1 Option 1 Option </bold> 1449 + <cyan>│</fg> <dim>1 Option 1</bold> 1450 + <cyan>└</fg> 1451 1451 ", 1452 1452 "<cursor.backward count=999><cursor.up count=11>", 1453 1453 "<cursor.down count=2>", 1454 1454 "<erase.line><cursor.left count=1>", 1455 - "│ ◼ Option 0 Option 0 Option ", 1455 + "<cyan>│</fg> <green>◼</fg> Option 0 Option 0 Option ", 1456 1456 "<cursor.down count=9>", 1457 1457 "<cursor.backward count=999><cursor.up count=11>", 1458 1458 "<cursor.down count=1>", 1459 1459 "<erase.down>", 1460 - "◇ foo 1461 - │ Option 0 Option 0 Option 0  1462 - │ Option 0 Option 0 Option 0  1463 - │ Option 0 Option 0 Option 0  1464 - │ Option 0", 1460 + "<green>◇</fg> foo 1461 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 1462 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 1463 + <dim>│</fg> <dim>Option 0 Option 0 Option 0 </bold> 1464 + <dim>│</fg> <dim>Option 0</bold>", 1465 1465 " 1466 1466 ", 1467 1467 "<cursor.show>",
+276 -276
packages/prompts/src/__snapshots__/note.test.ts.snap
··· 2 2 3 3 exports[`note (isCI = false) > don't overflow 1`] = ` 4 4 [ 5 - "│ 6 - ◇ title ───────────────────────────────────────────────────────────────╮ 7 - │ │ 8 - │ test string test string test string test string test string test  │ 9 - │ string test string test string test string test string test string  │ 10 - │ test string test string test string test string test string test  │ 11 - │ string test string test string test string test string test string  │ 12 - │ test string test string test string test string test string test  │ 13 - │ string test string test string test string test string  │ 14 - │ test string test string test string test string test string test  │ 15 - │ string test string test string test string test string test string  │ 16 - │ test string test string test string test string test string test  │ 17 - │ string test string test string test string test string test string  │ 18 - │ test string test string test string test string test string test  │ 19 - │ string test string test string test string test string  │ 20 - │ test string test string test string test string test string test  │ 21 - │ string test string test string test string test string test string  │ 22 - │ test string test string test string test string test string test  │ 23 - │ string test string test string test string test string test string  │ 24 - │ test string test string test string test string test string test  │ 25 - │ string test string test string test string test string  │ 26 - │ test string test string test string test string test string test  │ 27 - │ string test string test string test string test string test string  │ 28 - │ test string test string test string test string test string test  │ 29 - │ string test string test string test string test string test string  │ 30 - │ test string test string test string test string test string test  │ 31 - │ string test string test string test string test string │ 32 - │ │ 33 - ├───────────────────────────────────────────────────────────────────────╯ 5 + "<dim>│</fg> 6 + <green>◇</fg> </>title</> <dim>───────────────────────────────────────────────────────────────╮</fg> 7 + <dim>│</fg> <dim>│</fg> 8 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 9 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 10 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 11 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 12 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 13 + <dim>│</fg> <dim>string test string test string test string test string </bold> <dim>│</fg> 14 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 15 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 16 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 17 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 18 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 19 + <dim>│</fg> <dim>string test string test string test string test string </bold> <dim>│</fg> 20 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 21 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 22 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 23 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 24 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 25 + <dim>│</fg> <dim>string test string test string test string test string </bold> <dim>│</fg> 26 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 27 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 28 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 29 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 30 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 31 + <dim>│</fg> <dim>string test string test string test string test string</bold> <dim>│</fg> 32 + <dim>│</fg> <dim>│</fg> 33 + <dim>├───────────────────────────────────────────────────────────────────────╯</fg> 34 34 ", 35 35 ] 36 36 `; 37 37 38 38 exports[`note (isCI = false) > don't overflow with formatter 1`] = ` 39 39 [ 40 - "│ 41 - ◇ title ─────────────────────────────────────────────────────────────────╮ 42 - │ │ 43 - │ * test string test string test string test string test string test  * │ 44 - │ * string test string test string test string test string test  * │ 45 - │ * string test string test string test string test string test  * │ 46 - │ * string test string test string test string test string test  * │ 47 - │ * string test string test string test string test string test  * │ 48 - │ * string test string test string test string test string test  * │ 49 - │ * string test string  * │ 50 - │ * test string test string test string test string test string test  * │ 51 - │ * string test string test string test string test string test  * │ 52 - │ * string test string test string test string test string test  * │ 53 - │ * string test string test string test string test string test  * │ 54 - │ * string test string test string test string test string test  * │ 55 - │ * string test string test string test string test string test  * │ 56 - │ * string test string  * │ 57 - │ * test string test string test string test string test string test  * │ 58 - │ * string test string test string test string test string test  * │ 59 - │ * string test string test string test string test string test  * │ 60 - │ * string test string test string test string test string test  * │ 61 - │ * string test string test string test string test string test  * │ 62 - │ * string test string test string test string test string test  * │ 63 - │ * string test string  * │ 64 - │ * test string test string test string test string test string test  * │ 65 - │ * string test string test string test string test string test  * │ 66 - │ * string test string test string test string test string test  * │ 67 - │ * string test string test string test string test string test  * │ 68 - │ * string test string test string test string test string test  * │ 69 - │ * string test string test string test string test string test  * │ 70 - │ * string test string * │ 71 - │ │ 72 - ├─────────────────────────────────────────────────────────────────────────╯ 40 + "<dim>│</fg> 41 + <green>◇</fg> </>title</> <dim>─────────────────────────────────────────────────────────────────╮</fg> 42 + <dim>│</fg> <dim>│</fg> 43 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 44 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 45 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 46 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 47 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 48 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 49 + <dim>│</fg> <red>* <cyan>string test string <red> *</fg> <dim>│</fg> 50 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 51 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 52 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 53 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 54 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 55 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 56 + <dim>│</fg> <red>* <cyan>string test string <red> *</fg> <dim>│</fg> 57 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 58 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 59 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 60 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 61 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 62 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 63 + <dim>│</fg> <red>* <cyan>string test string <red> *</fg> <dim>│</fg> 64 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 65 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 66 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 67 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 68 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 69 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 70 + <dim>│</fg> <red>* <cyan>string test string<red> *</fg> <dim>│</fg> 71 + <dim>│</fg> <dim>│</fg> 72 + <dim>├─────────────────────────────────────────────────────────────────────────╯</fg> 73 73 ", 74 74 ] 75 75 `; 76 76 77 77 exports[`note (isCI = false) > formatter which adds colors works 1`] = ` 78 78 [ 79 - "│ 80 - ◇ title ──╮ 81 - │ │ 82 - │ line 0 │ 83 - │ line 1 │ 84 - │ line 2 │ 85 - │ │ 86 - ├──────────╯ 79 + "<dim>│</fg> 80 + <green>◇</fg> </>title</> <dim>──╮</fg> 81 + <dim>│</fg> <dim>│</fg> 82 + <dim>│</fg> <red>line 0</fg> <dim>│</fg> 83 + <dim>│</fg> <red>line 1</fg> <dim>│</fg> 84 + <dim>│</fg> <red>line 2</fg> <dim>│</fg> 85 + <dim>│</fg> <dim>│</fg> 86 + <dim>├──────────╯</fg> 87 87 ", 88 88 ] 89 89 `; 90 90 91 91 exports[`note (isCI = false) > formatter which adds length works 1`] = ` 92 92 [ 93 - "│ 94 - ◇ title ──────╮ 95 - │ │ 96 - │ * line 0 * │ 97 - │ * line 1 * │ 98 - │ * line 2 * │ 99 - │ │ 100 - ├──────────────╯ 93 + "<dim>│</fg> 94 + <green>◇</fg> </>title</> <dim>──────╮</fg> 95 + <dim>│</fg> <dim>│</fg> 96 + <dim>│</fg> * line 0 * <dim>│</fg> 97 + <dim>│</fg> * line 1 * <dim>│</fg> 98 + <dim>│</fg> * line 2 * <dim>│</fg> 99 + <dim>│</fg> <dim>│</fg> 100 + <dim>├──────────────╯</fg> 101 101 ", 102 102 ] 103 103 `; 104 104 105 105 exports[`note (isCI = false) > handle wide characters 1`] = ` 106 106 [ 107 - "│ 108 - ◇ 这是标题 ─╮ 109 - │ │ 110 - │ 이게 │ 111 - │  첫  │ 112 - │ 번째 │ 113 - │   │ 114 - │ 줄이 │ 115 - │ 에요 │ 116 - │ これ │ 117 - │ は次 │ 118 - │ の行 │ 119 - │ です │ 120 - │ │ 121 - ├────────────╯ 107 + "<dim>│</fg> 108 + <green>◇</fg> </>这是标题</> <dim>─╮</fg> 109 + <dim>│</fg> <dim>│</fg> 110 + <dim>│</fg> <dim>이게</bold> <dim>│</fg> 111 + <dim>│</fg> <dim> 첫 </bold> <dim>│</fg> 112 + <dim>│</fg> <dim>번째</bold> <dim>│</fg> 113 + <dim>│</fg> <dim> </bold> <dim>│</fg> 114 + <dim>│</fg> <dim>줄이</bold> <dim>│</fg> 115 + <dim>│</fg> <dim>에요</bold> <dim>│</fg> 116 + <dim>│</fg> <dim>これ</bold> <dim>│</fg> 117 + <dim>│</fg> <dim>は次</bold> <dim>│</fg> 118 + <dim>│</fg> <dim>の行</bold> <dim>│</fg> 119 + <dim>│</fg> <dim>です</bold> <dim>│</fg> 120 + <dim>│</fg> <dim>│</fg> 121 + <dim>├────────────╯</fg> 122 122 ", 123 123 ] 124 124 `; 125 125 126 126 exports[`note (isCI = false) > handle wide characters with formatter 1`] = ` 127 127 [ 128 - "│ 129 - ◇ 这是标题 ─╮ 130 - │ │ 131 - │ *  * │ 132 - │ * 이 * │ 133 - │ * 게 * │ 134 - │ *   * │ 135 - │ * 첫 * │ 136 - │ *   * │ 137 - │ * 번 * │ 138 - │ * 째 * │ 139 - │ *   * │ 140 - │ * 줄 * │ 141 - │ * 이 * │ 142 - │ * 에 * │ 143 - │ * 요 * │ 144 - │ *  * │ 145 - │ * こ * │ 146 - │ * れ * │ 147 - │ * は * │ 148 - │ * 次 * │ 149 - │ * の * │ 150 - │ * 行 * │ 151 - │ * で * │ 152 - │ * す * │ 153 - │ │ 154 - ├────────────╯ 128 + "<dim>│</fg> 129 + <green>◇</fg> </>这是标题</> <dim>─╮</fg> 130 + <dim>│</fg> <dim>│</fg> 131 + <dim>│</fg> <red>* <cyan><red> *</fg> <dim>│</fg> 132 + <dim>│</fg> <red>* <cyan>이<red> *</fg> <dim>│</fg> 133 + <dim>│</fg> <red>* <cyan>게<red> *</fg> <dim>│</fg> 134 + <dim>│</fg> <red>* <cyan> <red> *</fg> <dim>│</fg> 135 + <dim>│</fg> <red>* <cyan>첫<red> *</fg> <dim>│</fg> 136 + <dim>│</fg> <red>* <cyan> <red> *</fg> <dim>│</fg> 137 + <dim>│</fg> <red>* <cyan>번<red> *</fg> <dim>│</fg> 138 + <dim>│</fg> <red>* <cyan>째<red> *</fg> <dim>│</fg> 139 + <dim>│</fg> <red>* <cyan> <red> *</fg> <dim>│</fg> 140 + <dim>│</fg> <red>* <cyan>줄<red> *</fg> <dim>│</fg> 141 + <dim>│</fg> <red>* <cyan>이<red> *</fg> <dim>│</fg> 142 + <dim>│</fg> <red>* <cyan>에<red> *</fg> <dim>│</fg> 143 + <dim>│</fg> <red>* <cyan>요<red> *</fg> <dim>│</fg> 144 + <dim>│</fg> <red>* <cyan><red> *</fg> <dim>│</fg> 145 + <dim>│</fg> <red>* <cyan>こ<red> *</fg> <dim>│</fg> 146 + <dim>│</fg> <red>* <cyan>れ<red> *</fg> <dim>│</fg> 147 + <dim>│</fg> <red>* <cyan>は<red> *</fg> <dim>│</fg> 148 + <dim>│</fg> <red>* <cyan>次<red> *</fg> <dim>│</fg> 149 + <dim>│</fg> <red>* <cyan>の<red> *</fg> <dim>│</fg> 150 + <dim>│</fg> <red>* <cyan>行<red> *</fg> <dim>│</fg> 151 + <dim>│</fg> <red>* <cyan>で<red> *</fg> <dim>│</fg> 152 + <dim>│</fg> <red>* <cyan>す<red> *</fg> <dim>│</fg> 153 + <dim>│</fg> <dim>│</fg> 154 + <dim>├────────────╯</fg> 155 155 ", 156 156 ] 157 157 `; 158 158 159 159 exports[`note (isCI = false) > renders as wide as longest line 1`] = ` 160 160 [ 161 - "│ 162 - ◇ title ───────────────────────────╮ 163 - │ │ 164 - │ short │ 165 - │ somewhat questionably long line │ 166 - │ │ 167 - ├───────────────────────────────────╯ 161 + "<dim>│</fg> 162 + <green>◇</fg> </>title</> <dim>───────────────────────────╮</fg> 163 + <dim>│</fg> <dim>│</fg> 164 + <dim>│</fg> <dim>short</bold> <dim>│</fg> 165 + <dim>│</fg> <dim>somewhat questionably long line</bold> <dim>│</fg> 166 + <dim>│</fg> <dim>│</fg> 167 + <dim>├───────────────────────────────────╯</fg> 168 168 ", 169 169 ] 170 170 `; 171 171 172 172 exports[`note (isCI = false) > renders message with title 1`] = ` 173 173 [ 174 - "│ 175 - ◇ title ───╮ 176 - │ │ 177 - │ message │ 178 - │ │ 179 - ├───────────╯ 174 + "<dim>│</fg> 175 + <green>◇</fg> </>title</> <dim>───╮</fg> 176 + <dim>│</fg> <dim>│</fg> 177 + <dim>│</fg> <dim>message</bold> <dim>│</fg> 178 + <dim>│</fg> <dim>│</fg> 179 + <dim>├───────────╯</fg> 180 180 ", 181 181 ] 182 182 `; 183 183 184 184 exports[`note (isCI = false) > without guide 1`] = ` 185 185 [ 186 - "◇ title ───╮ 187 - │ │ 188 - │ message │ 189 - │ │ 190 - ╰───────────╯ 186 + "<green>◇</fg> </>title</> <dim>───╮</fg> 187 + <dim>│</fg> <dim>│</fg> 188 + <dim>│</fg> <dim>message</bold> <dim>│</fg> 189 + <dim>│</fg> <dim>│</fg> 190 + <dim>╰───────────╯</fg> 191 191 ", 192 192 ] 193 193 `; 194 194 195 195 exports[`note (isCI = true) > don't overflow 1`] = ` 196 196 [ 197 - "│ 198 - ◇ title ───────────────────────────────────────────────────────────────╮ 199 - │ │ 200 - │ test string test string test string test string test string test  │ 201 - │ string test string test string test string test string test string  │ 202 - │ test string test string test string test string test string test  │ 203 - │ string test string test string test string test string test string  │ 204 - │ test string test string test string test string test string test  │ 205 - │ string test string test string test string test string  │ 206 - │ test string test string test string test string test string test  │ 207 - │ string test string test string test string test string test string  │ 208 - │ test string test string test string test string test string test  │ 209 - │ string test string test string test string test string test string  │ 210 - │ test string test string test string test string test string test  │ 211 - │ string test string test string test string test string  │ 212 - │ test string test string test string test string test string test  │ 213 - │ string test string test string test string test string test string  │ 214 - │ test string test string test string test string test string test  │ 215 - │ string test string test string test string test string test string  │ 216 - │ test string test string test string test string test string test  │ 217 - │ string test string test string test string test string  │ 218 - │ test string test string test string test string test string test  │ 219 - │ string test string test string test string test string test string  │ 220 - │ test string test string test string test string test string test  │ 221 - │ string test string test string test string test string test string  │ 222 - │ test string test string test string test string test string test  │ 223 - │ string test string test string test string test string │ 224 - │ │ 225 - ├───────────────────────────────────────────────────────────────────────╯ 197 + "<dim>│</fg> 198 + <green>◇</fg> </>title</> <dim>───────────────────────────────────────────────────────────────╮</fg> 199 + <dim>│</fg> <dim>│</fg> 200 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 201 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 202 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 203 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 204 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 205 + <dim>│</fg> <dim>string test string test string test string test string </bold> <dim>│</fg> 206 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 207 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 208 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 209 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 210 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 211 + <dim>│</fg> <dim>string test string test string test string test string </bold> <dim>│</fg> 212 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 213 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 214 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 215 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 216 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 217 + <dim>│</fg> <dim>string test string test string test string test string </bold> <dim>│</fg> 218 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 219 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 220 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 221 + <dim>│</fg> <dim>string test string test string test string test string test string </bold> <dim>│</fg> 222 + <dim>│</fg> <dim>test string test string test string test string test string test </bold> <dim>│</fg> 223 + <dim>│</fg> <dim>string test string test string test string test string</bold> <dim>│</fg> 224 + <dim>│</fg> <dim>│</fg> 225 + <dim>├───────────────────────────────────────────────────────────────────────╯</fg> 226 226 ", 227 227 ] 228 228 `; 229 229 230 230 exports[`note (isCI = true) > don't overflow with formatter 1`] = ` 231 231 [ 232 - "│ 233 - ◇ title ─────────────────────────────────────────────────────────────────╮ 234 - │ │ 235 - │ * test string test string test string test string test string test  * │ 236 - │ * string test string test string test string test string test  * │ 237 - │ * string test string test string test string test string test  * │ 238 - │ * string test string test string test string test string test  * │ 239 - │ * string test string test string test string test string test  * │ 240 - │ * string test string test string test string test string test  * │ 241 - │ * string test string  * │ 242 - │ * test string test string test string test string test string test  * │ 243 - │ * string test string test string test string test string test  * │ 244 - │ * string test string test string test string test string test  * │ 245 - │ * string test string test string test string test string test  * │ 246 - │ * string test string test string test string test string test  * │ 247 - │ * string test string test string test string test string test  * │ 248 - │ * string test string  * │ 249 - │ * test string test string test string test string test string test  * │ 250 - │ * string test string test string test string test string test  * │ 251 - │ * string test string test string test string test string test  * │ 252 - │ * string test string test string test string test string test  * │ 253 - │ * string test string test string test string test string test  * │ 254 - │ * string test string test string test string test string test  * │ 255 - │ * string test string  * │ 256 - │ * test string test string test string test string test string test  * │ 257 - │ * string test string test string test string test string test  * │ 258 - │ * string test string test string test string test string test  * │ 259 - │ * string test string test string test string test string test  * │ 260 - │ * string test string test string test string test string test  * │ 261 - │ * string test string test string test string test string test  * │ 262 - │ * string test string * │ 263 - │ │ 264 - ├─────────────────────────────────────────────────────────────────────────╯ 232 + "<dim>│</fg> 233 + <green>◇</fg> </>title</> <dim>─────────────────────────────────────────────────────────────────╮</fg> 234 + <dim>│</fg> <dim>│</fg> 235 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 236 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 237 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 238 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 239 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 240 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 241 + <dim>│</fg> <red>* <cyan>string test string <red> *</fg> <dim>│</fg> 242 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 243 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 244 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 245 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 246 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 247 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 248 + <dim>│</fg> <red>* <cyan>string test string <red> *</fg> <dim>│</fg> 249 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 250 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 251 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 252 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 253 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 254 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 255 + <dim>│</fg> <red>* <cyan>string test string <red> *</fg> <dim>│</fg> 256 + <dim>│</fg> <red>* <cyan>test string test string test string test string test string test <red> *</fg> <dim>│</fg> 257 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 258 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 259 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 260 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 261 + <dim>│</fg> <red>* <cyan>string test string test string test string test string test <red> *</fg> <dim>│</fg> 262 + <dim>│</fg> <red>* <cyan>string test string<red> *</fg> <dim>│</fg> 263 + <dim>│</fg> <dim>│</fg> 264 + <dim>├─────────────────────────────────────────────────────────────────────────╯</fg> 265 265 ", 266 266 ] 267 267 `; 268 268 269 269 exports[`note (isCI = true) > formatter which adds colors works 1`] = ` 270 270 [ 271 - "│ 272 - ◇ title ──╮ 273 - │ │ 274 - │ line 0 │ 275 - │ line 1 │ 276 - │ line 2 │ 277 - │ │ 278 - ├──────────╯ 271 + "<dim>│</fg> 272 + <green>◇</fg> </>title</> <dim>──╮</fg> 273 + <dim>│</fg> <dim>│</fg> 274 + <dim>│</fg> <red>line 0</fg> <dim>│</fg> 275 + <dim>│</fg> <red>line 1</fg> <dim>│</fg> 276 + <dim>│</fg> <red>line 2</fg> <dim>│</fg> 277 + <dim>│</fg> <dim>│</fg> 278 + <dim>├──────────╯</fg> 279 279 ", 280 280 ] 281 281 `; 282 282 283 283 exports[`note (isCI = true) > formatter which adds length works 1`] = ` 284 284 [ 285 - "│ 286 - ◇ title ──────╮ 287 - │ │ 288 - │ * line 0 * │ 289 - │ * line 1 * │ 290 - │ * line 2 * │ 291 - │ │ 292 - ├──────────────╯ 285 + "<dim>│</fg> 286 + <green>◇</fg> </>title</> <dim>──────╮</fg> 287 + <dim>│</fg> <dim>│</fg> 288 + <dim>│</fg> * line 0 * <dim>│</fg> 289 + <dim>│</fg> * line 1 * <dim>│</fg> 290 + <dim>│</fg> * line 2 * <dim>│</fg> 291 + <dim>│</fg> <dim>│</fg> 292 + <dim>├──────────────╯</fg> 293 293 ", 294 294 ] 295 295 `; 296 296 297 297 exports[`note (isCI = true) > handle wide characters 1`] = ` 298 298 [ 299 - "│ 300 - ◇ 这是标题 ─╮ 301 - │ │ 302 - │ 이게 │ 303 - │  첫  │ 304 - │ 번째 │ 305 - │   │ 306 - │ 줄이 │ 307 - │ 에요 │ 308 - │ これ │ 309 - │ は次 │ 310 - │ の行 │ 311 - │ です │ 312 - │ │ 313 - ├────────────╯ 299 + "<dim>│</fg> 300 + <green>◇</fg> </>这是标题</> <dim>─╮</fg> 301 + <dim>│</fg> <dim>│</fg> 302 + <dim>│</fg> <dim>이게</bold> <dim>│</fg> 303 + <dim>│</fg> <dim> 첫 </bold> <dim>│</fg> 304 + <dim>│</fg> <dim>번째</bold> <dim>│</fg> 305 + <dim>│</fg> <dim> </bold> <dim>│</fg> 306 + <dim>│</fg> <dim>줄이</bold> <dim>│</fg> 307 + <dim>│</fg> <dim>에요</bold> <dim>│</fg> 308 + <dim>│</fg> <dim>これ</bold> <dim>│</fg> 309 + <dim>│</fg> <dim>は次</bold> <dim>│</fg> 310 + <dim>│</fg> <dim>の行</bold> <dim>│</fg> 311 + <dim>│</fg> <dim>です</bold> <dim>│</fg> 312 + <dim>│</fg> <dim>│</fg> 313 + <dim>├────────────╯</fg> 314 314 ", 315 315 ] 316 316 `; 317 317 318 318 exports[`note (isCI = true) > handle wide characters with formatter 1`] = ` 319 319 [ 320 - "│ 321 - ◇ 这是标题 ─╮ 322 - │ │ 323 - │ *  * │ 324 - │ * 이 * │ 325 - │ * 게 * │ 326 - │ *   * │ 327 - │ * 첫 * │ 328 - │ *   * │ 329 - │ * 번 * │ 330 - │ * 째 * │ 331 - │ *   * │ 332 - │ * 줄 * │ 333 - │ * 이 * │ 334 - │ * 에 * │ 335 - │ * 요 * │ 336 - │ *  * │ 337 - │ * こ * │ 338 - │ * れ * │ 339 - │ * は * │ 340 - │ * 次 * │ 341 - │ * の * │ 342 - │ * 行 * │ 343 - │ * で * │ 344 - │ * す * │ 345 - │ │ 346 - ├────────────╯ 320 + "<dim>│</fg> 321 + <green>◇</fg> </>这是标题</> <dim>─╮</fg> 322 + <dim>│</fg> <dim>│</fg> 323 + <dim>│</fg> <red>* <cyan><red> *</fg> <dim>│</fg> 324 + <dim>│</fg> <red>* <cyan>이<red> *</fg> <dim>│</fg> 325 + <dim>│</fg> <red>* <cyan>게<red> *</fg> <dim>│</fg> 326 + <dim>│</fg> <red>* <cyan> <red> *</fg> <dim>│</fg> 327 + <dim>│</fg> <red>* <cyan>첫<red> *</fg> <dim>│</fg> 328 + <dim>│</fg> <red>* <cyan> <red> *</fg> <dim>│</fg> 329 + <dim>│</fg> <red>* <cyan>번<red> *</fg> <dim>│</fg> 330 + <dim>│</fg> <red>* <cyan>째<red> *</fg> <dim>│</fg> 331 + <dim>│</fg> <red>* <cyan> <red> *</fg> <dim>│</fg> 332 + <dim>│</fg> <red>* <cyan>줄<red> *</fg> <dim>│</fg> 333 + <dim>│</fg> <red>* <cyan>이<red> *</fg> <dim>│</fg> 334 + <dim>│</fg> <red>* <cyan>에<red> *</fg> <dim>│</fg> 335 + <dim>│</fg> <red>* <cyan>요<red> *</fg> <dim>│</fg> 336 + <dim>│</fg> <red>* <cyan><red> *</fg> <dim>│</fg> 337 + <dim>│</fg> <red>* <cyan>こ<red> *</fg> <dim>│</fg> 338 + <dim>│</fg> <red>* <cyan>れ<red> *</fg> <dim>│</fg> 339 + <dim>│</fg> <red>* <cyan>は<red> *</fg> <dim>│</fg> 340 + <dim>│</fg> <red>* <cyan>次<red> *</fg> <dim>│</fg> 341 + <dim>│</fg> <red>* <cyan>の<red> *</fg> <dim>│</fg> 342 + <dim>│</fg> <red>* <cyan>行<red> *</fg> <dim>│</fg> 343 + <dim>│</fg> <red>* <cyan>で<red> *</fg> <dim>│</fg> 344 + <dim>│</fg> <red>* <cyan>す<red> *</fg> <dim>│</fg> 345 + <dim>│</fg> <dim>│</fg> 346 + <dim>├────────────╯</fg> 347 347 ", 348 348 ] 349 349 `; 350 350 351 351 exports[`note (isCI = true) > renders as wide as longest line 1`] = ` 352 352 [ 353 - "│ 354 - ◇ title ───────────────────────────╮ 355 - │ │ 356 - │ short │ 357 - │ somewhat questionably long line │ 358 - │ │ 359 - ├───────────────────────────────────╯ 353 + "<dim>│</fg> 354 + <green>◇</fg> </>title</> <dim>───────────────────────────╮</fg> 355 + <dim>│</fg> <dim>│</fg> 356 + <dim>│</fg> <dim>short</bold> <dim>│</fg> 357 + <dim>│</fg> <dim>somewhat questionably long line</bold> <dim>│</fg> 358 + <dim>│</fg> <dim>│</fg> 359 + <dim>├───────────────────────────────────╯</fg> 360 360 ", 361 361 ] 362 362 `; 363 363 364 364 exports[`note (isCI = true) > renders message with title 1`] = ` 365 365 [ 366 - "│ 367 - ◇ title ───╮ 368 - │ │ 369 - │ message │ 370 - │ │ 371 - ├───────────╯ 366 + "<dim>│</fg> 367 + <green>◇</fg> </>title</> <dim>───╮</fg> 368 + <dim>│</fg> <dim>│</fg> 369 + <dim>│</fg> <dim>message</bold> <dim>│</fg> 370 + <dim>│</fg> <dim>│</fg> 371 + <dim>├───────────╯</fg> 372 372 ", 373 373 ] 374 374 `; 375 375 376 376 exports[`note (isCI = true) > without guide 1`] = ` 377 377 [ 378 - "◇ title ───╮ 379 - │ │ 380 - │ message │ 381 - │ │ 382 - ╰───────────╯ 378 + "<green>◇</fg> </>title</> <dim>───╮</fg> 379 + <dim>│</fg> <dim>│</fg> 380 + <dim>│</fg> <dim>message</bold> <dim>│</fg> 381 + <dim>│</fg> <dim>│</fg> 382 + <dim>╰───────────╯</fg> 383 383 ", 384 384 ] 385 385 `;
+130 -130
packages/prompts/src/__snapshots__/password.test.ts.snap
··· 3 3 exports[`password (isCI = false) > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ foo 8 - │ _ 9 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> foo 8 + <cyan>│</fg> _ 9 + <cyan>└</fg> 10 10 ", 11 11 " 12 12 ", ··· 17 17 exports[`password (isCI = false) > clears input on error when clearOnError is true 1`] = ` 18 18 [ 19 19 "<cursor.hide>", 20 - "│ 21 - ◆ foo 22 - │ _ 23 - └ 20 + "<dim>│</fg> 21 + <cyan>◆</fg> foo 22 + <cyan>│</fg> _ 23 + <cyan>└</fg> 24 24 ", 25 25 "<cursor.backward count=999><cursor.up count=4>", 26 26 "<cursor.down count=2>", 27 27 "<erase.line><cursor.left count=1>", 28 - "│ ▪_", 28 + "<cyan>│</fg> ▪_", 29 29 "<cursor.down count=2>", 30 30 "<cursor.backward count=999><cursor.up count=4>", 31 31 "<cursor.down count=1>", 32 32 "<erase.down>", 33 - "▲ foo 34 - │ ▪ 35 - └ Error 33 + "<yellow>▲</fg> foo 34 + <yellow>│</fg> ▪ 35 + <yellow>└</fg> <yellow>Error</fg> 36 36 ", 37 37 "<cursor.backward count=999><cursor.up count=4>", 38 38 "<cursor.down count=1>", 39 39 "<erase.down>", 40 - "◆ foo 41 - │ ▪_ 42 - └ 40 + "<cyan>◆</fg> foo 41 + <cyan>│</fg> ▪_ 42 + <cyan>└</fg> 43 43 ", 44 44 "<cursor.backward count=999><cursor.up count=4>", 45 45 "<cursor.down count=2>", 46 46 "<erase.line><cursor.left count=1>", 47 - "│ ▪▪_", 47 + "<cyan>│</fg> ▪▪_", 48 48 "<cursor.down count=2>", 49 49 "<cursor.backward count=999><cursor.up count=4>", 50 50 "<cursor.down count=1>", 51 51 "<erase.down>", 52 - "◇ foo 53 - │ ▪▪", 52 + "<green>◇</fg> foo 53 + <dim>│</fg> <dim>▪▪</bold>", 54 54 " 55 55 ", 56 56 "<cursor.show>", ··· 60 60 exports[`password (isCI = false) > global withGuide: false removes guide 1`] = ` 61 61 [ 62 62 "<cursor.hide>", 63 - "◆ foo 63 + "<cyan>◆</fg> foo 64 64 _ 65 65 66 66 ", 67 67 "<cursor.backward count=999><cursor.up count=3>", 68 68 "<erase.down>", 69 - "◇ foo 69 + "<green>◇</fg> foo 70 70 ", 71 71 " 72 72 ", ··· 77 77 exports[`password (isCI = false) > renders and clears validation errors 1`] = ` 78 78 [ 79 79 "<cursor.hide>", 80 - "│ 81 - ◆ foo 82 - │ _ 83 - └ 80 + "<dim>│</fg> 81 + <cyan>◆</fg> foo 82 + <cyan>│</fg> _ 83 + <cyan>└</fg> 84 84 ", 85 85 "<cursor.backward count=999><cursor.up count=4>", 86 86 "<cursor.down count=2>", 87 87 "<erase.line><cursor.left count=1>", 88 - "│ ▪_", 88 + "<cyan>│</fg> ▪_", 89 89 "<cursor.down count=2>", 90 90 "<cursor.backward count=999><cursor.up count=4>", 91 91 "<cursor.down count=1>", 92 92 "<erase.down>", 93 - "▲ foo 94 - │ ▪ 95 - └ Password must be at least 2 characters 93 + "<yellow>▲</fg> foo 94 + <yellow>│</fg> ▪ 95 + <yellow>└</fg> <yellow>Password must be at least 2 characters</fg> 96 96 ", 97 97 "<cursor.backward count=999><cursor.up count=4>", 98 98 "<cursor.down count=1>", 99 99 "<erase.down>", 100 - "◆ foo 101 - │ ▪▪_ 102 - └ 100 + "<cyan>◆</fg> foo 101 + <cyan>│</fg> ▪▪_ 102 + <cyan>└</fg> 103 103 ", 104 104 "<cursor.backward count=999><cursor.up count=4>", 105 105 "<cursor.down count=1>", 106 106 "<erase.down>", 107 - "◇ foo 108 - │ ▪▪", 107 + "<green>◇</fg> foo 108 + <dim>│</fg> <dim>▪▪</bold>", 109 109 " 110 110 ", 111 111 "<cursor.show>", ··· 115 115 exports[`password (isCI = false) > renders cancelled value 1`] = ` 116 116 [ 117 117 "<cursor.hide>", 118 - "│ 119 - ◆ foo 120 - │ _ 121 - └ 118 + "<dim>│</fg> 119 + <cyan>◆</fg> foo 120 + <cyan>│</fg> _ 121 + <cyan>└</fg> 122 122 ", 123 123 "<cursor.backward count=999><cursor.up count=4>", 124 124 "<cursor.down count=2>", 125 125 "<erase.line><cursor.left count=1>", 126 - "│ ▪_", 126 + "<cyan>│</fg> ▪_", 127 127 "<cursor.down count=2>", 128 128 "<cursor.backward count=999><cursor.up count=4>", 129 129 "<cursor.down count=1>", 130 130 "<erase.down>", 131 - "■ foo 132 - │ ▪ 133 - │", 131 + "<red>■</fg> foo 132 + <dim>│</fg> <dim>▪</bold> 133 + <dim>│</fg>", 134 134 " 135 135 ", 136 136 "<cursor.show>", ··· 140 140 exports[`password (isCI = false) > renders custom mask 1`] = ` 141 141 [ 142 142 "<cursor.hide>", 143 - "│ 144 - ◆ foo 145 - │ _ 146 - └ 143 + "<dim>│</fg> 144 + <cyan>◆</fg> foo 145 + <cyan>│</fg> _ 146 + <cyan>└</fg> 147 147 ", 148 148 "<cursor.backward count=999><cursor.up count=4>", 149 149 "<cursor.down count=2>", 150 150 "<erase.line><cursor.left count=1>", 151 - "│ *_", 151 + "<cyan>│</fg> *_", 152 152 "<cursor.down count=2>", 153 153 "<cursor.backward count=999><cursor.up count=4>", 154 154 "<cursor.down count=2>", 155 155 "<erase.line><cursor.left count=1>", 156 - "│ **_", 156 + "<cyan>│</fg> **_", 157 157 "<cursor.down count=2>", 158 158 "<cursor.backward count=999><cursor.up count=4>", 159 159 "<cursor.down count=1>", 160 160 "<erase.down>", 161 - "◇ foo 162 - │ **", 161 + "<green>◇</fg> foo 162 + <dim>│</fg> <dim>**</bold>", 163 163 " 164 164 ", 165 165 "<cursor.show>", ··· 169 169 exports[`password (isCI = false) > renders masked value 1`] = ` 170 170 [ 171 171 "<cursor.hide>", 172 - "│ 173 - ◆ foo 174 - │ _ 175 - └ 172 + "<dim>│</fg> 173 + <cyan>◆</fg> foo 174 + <cyan>│</fg> _ 175 + <cyan>└</fg> 176 176 ", 177 177 "<cursor.backward count=999><cursor.up count=4>", 178 178 "<cursor.down count=2>", 179 179 "<erase.line><cursor.left count=1>", 180 - "│ ▪_", 180 + "<cyan>│</fg> ▪_", 181 181 "<cursor.down count=2>", 182 182 "<cursor.backward count=999><cursor.up count=4>", 183 183 "<cursor.down count=2>", 184 184 "<erase.line><cursor.left count=1>", 185 - "│ ▪▪_", 185 + "<cyan>│</fg> ▪▪_", 186 186 "<cursor.down count=2>", 187 187 "<cursor.backward count=999><cursor.up count=4>", 188 188 "<cursor.down count=1>", 189 189 "<erase.down>", 190 - "◇ foo 191 - │ ▪▪", 190 + "<green>◇</fg> foo 191 + <dim>│</fg> <dim>▪▪</bold>", 192 192 " 193 193 ", 194 194 "<cursor.show>", ··· 198 198 exports[`password (isCI = false) > renders message 1`] = ` 199 199 [ 200 200 "<cursor.hide>", 201 - "│ 202 - ◆ foo 203 - │ _ 204 - └ 201 + "<dim>│</fg> 202 + <cyan>◆</fg> foo 203 + <cyan>│</fg> _ 204 + <cyan>└</fg> 205 205 ", 206 206 "<cursor.backward count=999><cursor.up count=4>", 207 207 "<cursor.down count=1>", 208 208 "<erase.down>", 209 - "◇ foo 210 - │ ", 209 + "<green>◇</fg> foo 210 + <dim>│</fg> ", 211 211 " 212 212 ", 213 213 "<cursor.show>", ··· 217 217 exports[`password (isCI = false) > withGuide: false removes guide 1`] = ` 218 218 [ 219 219 "<cursor.hide>", 220 - "◆ foo 220 + "<cyan>◆</fg> foo 221 221 _ 222 222 223 223 ", 224 224 "<cursor.backward count=999><cursor.up count=3>", 225 225 "<erase.down>", 226 - "◇ foo 226 + "<green>◇</fg> foo 227 227 ", 228 228 " 229 229 ", ··· 234 234 exports[`password (isCI = true) > can be aborted by a signal 1`] = ` 235 235 [ 236 236 "<cursor.hide>", 237 - "│ 238 - ◆ foo 239 - │ _ 240 - └ 237 + "<dim>│</fg> 238 + <cyan>◆</fg> foo 239 + <cyan>│</fg> _ 240 + <cyan>└</fg> 241 241 ", 242 242 " 243 243 ", ··· 248 248 exports[`password (isCI = true) > clears input on error when clearOnError is true 1`] = ` 249 249 [ 250 250 "<cursor.hide>", 251 - "│ 252 - ◆ foo 253 - │ _ 254 - └ 251 + "<dim>│</fg> 252 + <cyan>◆</fg> foo 253 + <cyan>│</fg> _ 254 + <cyan>└</fg> 255 255 ", 256 256 "<cursor.backward count=999><cursor.up count=4>", 257 257 "<cursor.down count=2>", 258 258 "<erase.line><cursor.left count=1>", 259 - "│ ▪_", 259 + "<cyan>│</fg> ▪_", 260 260 "<cursor.down count=2>", 261 261 "<cursor.backward count=999><cursor.up count=4>", 262 262 "<cursor.down count=1>", 263 263 "<erase.down>", 264 - "▲ foo 265 - │ ▪ 266 - └ Error 264 + "<yellow>▲</fg> foo 265 + <yellow>│</fg> ▪ 266 + <yellow>└</fg> <yellow>Error</fg> 267 267 ", 268 268 "<cursor.backward count=999><cursor.up count=4>", 269 269 "<cursor.down count=1>", 270 270 "<erase.down>", 271 - "◆ foo 272 - │ ▪_ 273 - └ 271 + "<cyan>◆</fg> foo 272 + <cyan>│</fg> ▪_ 273 + <cyan>└</fg> 274 274 ", 275 275 "<cursor.backward count=999><cursor.up count=4>", 276 276 "<cursor.down count=2>", 277 277 "<erase.line><cursor.left count=1>", 278 - "│ ▪▪_", 278 + "<cyan>│</fg> ▪▪_", 279 279 "<cursor.down count=2>", 280 280 "<cursor.backward count=999><cursor.up count=4>", 281 281 "<cursor.down count=1>", 282 282 "<erase.down>", 283 - "◇ foo 284 - │ ▪▪", 283 + "<green>◇</fg> foo 284 + <dim>│</fg> <dim>▪▪</bold>", 285 285 " 286 286 ", 287 287 "<cursor.show>", ··· 291 291 exports[`password (isCI = true) > global withGuide: false removes guide 1`] = ` 292 292 [ 293 293 "<cursor.hide>", 294 - "◆ foo 294 + "<cyan>◆</fg> foo 295 295 _ 296 296 297 297 ", 298 298 "<cursor.backward count=999><cursor.up count=3>", 299 299 "<erase.down>", 300 - "◇ foo 300 + "<green>◇</fg> foo 301 301 ", 302 302 " 303 303 ", ··· 308 308 exports[`password (isCI = true) > renders and clears validation errors 1`] = ` 309 309 [ 310 310 "<cursor.hide>", 311 - "│ 312 - ◆ foo 313 - │ _ 314 - └ 311 + "<dim>│</fg> 312 + <cyan>◆</fg> foo 313 + <cyan>│</fg> _ 314 + <cyan>└</fg> 315 315 ", 316 316 "<cursor.backward count=999><cursor.up count=4>", 317 317 "<cursor.down count=2>", 318 318 "<erase.line><cursor.left count=1>", 319 - "│ ▪_", 319 + "<cyan>│</fg> ▪_", 320 320 "<cursor.down count=2>", 321 321 "<cursor.backward count=999><cursor.up count=4>", 322 322 "<cursor.down count=1>", 323 323 "<erase.down>", 324 - "▲ foo 325 - │ ▪ 326 - └ Password must be at least 2 characters 324 + "<yellow>▲</fg> foo 325 + <yellow>│</fg> ▪ 326 + <yellow>└</fg> <yellow>Password must be at least 2 characters</fg> 327 327 ", 328 328 "<cursor.backward count=999><cursor.up count=4>", 329 329 "<cursor.down count=1>", 330 330 "<erase.down>", 331 - "◆ foo 332 - │ ▪▪_ 333 - └ 331 + "<cyan>◆</fg> foo 332 + <cyan>│</fg> ▪▪_ 333 + <cyan>└</fg> 334 334 ", 335 335 "<cursor.backward count=999><cursor.up count=4>", 336 336 "<cursor.down count=1>", 337 337 "<erase.down>", 338 - "◇ foo 339 - │ ▪▪", 338 + "<green>◇</fg> foo 339 + <dim>│</fg> <dim>▪▪</bold>", 340 340 " 341 341 ", 342 342 "<cursor.show>", ··· 346 346 exports[`password (isCI = true) > renders cancelled value 1`] = ` 347 347 [ 348 348 "<cursor.hide>", 349 - "│ 350 - ◆ foo 351 - │ _ 352 - └ 349 + "<dim>│</fg> 350 + <cyan>◆</fg> foo 351 + <cyan>│</fg> _ 352 + <cyan>└</fg> 353 353 ", 354 354 "<cursor.backward count=999><cursor.up count=4>", 355 355 "<cursor.down count=2>", 356 356 "<erase.line><cursor.left count=1>", 357 - "│ ▪_", 357 + "<cyan>│</fg> ▪_", 358 358 "<cursor.down count=2>", 359 359 "<cursor.backward count=999><cursor.up count=4>", 360 360 "<cursor.down count=1>", 361 361 "<erase.down>", 362 - "■ foo 363 - │ ▪ 364 - │", 362 + "<red>■</fg> foo 363 + <dim>│</fg> <dim>▪</bold> 364 + <dim>│</fg>", 365 365 " 366 366 ", 367 367 "<cursor.show>", ··· 371 371 exports[`password (isCI = true) > renders custom mask 1`] = ` 372 372 [ 373 373 "<cursor.hide>", 374 - "│ 375 - ◆ foo 376 - │ _ 377 - └ 374 + "<dim>│</fg> 375 + <cyan>◆</fg> foo 376 + <cyan>│</fg> _ 377 + <cyan>└</fg> 378 378 ", 379 379 "<cursor.backward count=999><cursor.up count=4>", 380 380 "<cursor.down count=2>", 381 381 "<erase.line><cursor.left count=1>", 382 - "│ *_", 382 + "<cyan>│</fg> *_", 383 383 "<cursor.down count=2>", 384 384 "<cursor.backward count=999><cursor.up count=4>", 385 385 "<cursor.down count=2>", 386 386 "<erase.line><cursor.left count=1>", 387 - "│ **_", 387 + "<cyan>│</fg> **_", 388 388 "<cursor.down count=2>", 389 389 "<cursor.backward count=999><cursor.up count=4>", 390 390 "<cursor.down count=1>", 391 391 "<erase.down>", 392 - "◇ foo 393 - │ **", 392 + "<green>◇</fg> foo 393 + <dim>│</fg> <dim>**</bold>", 394 394 " 395 395 ", 396 396 "<cursor.show>", ··· 400 400 exports[`password (isCI = true) > renders masked value 1`] = ` 401 401 [ 402 402 "<cursor.hide>", 403 - "│ 404 - ◆ foo 405 - │ _ 406 - └ 403 + "<dim>│</fg> 404 + <cyan>◆</fg> foo 405 + <cyan>│</fg> _ 406 + <cyan>└</fg> 407 407 ", 408 408 "<cursor.backward count=999><cursor.up count=4>", 409 409 "<cursor.down count=2>", 410 410 "<erase.line><cursor.left count=1>", 411 - "│ ▪_", 411 + "<cyan>│</fg> ▪_", 412 412 "<cursor.down count=2>", 413 413 "<cursor.backward count=999><cursor.up count=4>", 414 414 "<cursor.down count=2>", 415 415 "<erase.line><cursor.left count=1>", 416 - "│ ▪▪_", 416 + "<cyan>│</fg> ▪▪_", 417 417 "<cursor.down count=2>", 418 418 "<cursor.backward count=999><cursor.up count=4>", 419 419 "<cursor.down count=1>", 420 420 "<erase.down>", 421 - "◇ foo 422 - │ ▪▪", 421 + "<green>◇</fg> foo 422 + <dim>│</fg> <dim>▪▪</bold>", 423 423 " 424 424 ", 425 425 "<cursor.show>", ··· 429 429 exports[`password (isCI = true) > renders message 1`] = ` 430 430 [ 431 431 "<cursor.hide>", 432 - "│ 433 - ◆ foo 434 - │ _ 435 - └ 432 + "<dim>│</fg> 433 + <cyan>◆</fg> foo 434 + <cyan>│</fg> _ 435 + <cyan>└</fg> 436 436 ", 437 437 "<cursor.backward count=999><cursor.up count=4>", 438 438 "<cursor.down count=1>", 439 439 "<erase.down>", 440 - "◇ foo 441 - │ ", 440 + "<green>◇</fg> foo 441 + <dim>│</fg> ", 442 442 " 443 443 ", 444 444 "<cursor.show>", ··· 448 448 exports[`password (isCI = true) > withGuide: false removes guide 1`] = ` 449 449 [ 450 450 "<cursor.hide>", 451 - "◆ foo 451 + "<cyan>◆</fg> foo 452 452 _ 453 453 454 454 ", 455 455 "<cursor.backward count=999><cursor.up count=3>", 456 456 "<erase.down>", 457 - "◇ foo 457 + "<green>◇</fg> foo 458 458 ", 459 459 " 460 460 ",
+350 -350
packages/prompts/src/__snapshots__/path.test.ts.snap
··· 3 3 exports[`text (isCI = false) > can cancel 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ foo 8 - │ 9 - │ Search: /tmp/█ 10 - │ ● /tmp/bar 11 - │ ○ /tmp/foo 12 - │ ○ /tmp/hello 13 - │ ○ /tmp/root.zip 14 - │ ↑/↓ to select • Enter: confirm • Type: to search 15 - └", 6 + "<dim>│</fg> 7 + <cyan>◆</fg> foo 8 + <cyan>│</fg> 9 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 10 + <cyan>│</fg> <green>●</fg> /tmp/bar 11 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 12 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 13 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 14 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 15 + <cyan>└</fg>", 16 16 "<cursor.backward count=999><cursor.up count=9>", 17 17 "<cursor.down count=1>", 18 18 "<erase.down>", 19 - "■ foo 20 - │ /tmp/", 19 + "<red>■</fg> foo 20 + <dim>│</fg> <dim>/tmp/</bold>", 21 21 " 22 22 ", 23 23 "<cursor.show>", ··· 27 27 exports[`text (isCI = false) > cannot submit unknown value 1`] = ` 28 28 [ 29 29 "<cursor.hide>", 30 - "│ 31 - ◆ foo 32 - │ 33 - │ Search: /tmp/█ 34 - │ ● /tmp/bar 35 - │ ○ /tmp/foo 36 - │ ○ /tmp/hello 37 - │ ○ /tmp/root.zip 38 - │ ↑/↓ to select • Enter: confirm • Type: to search 39 - └", 30 + "<dim>│</fg> 31 + <cyan>◆</fg> foo 32 + <cyan>│</fg> 33 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 34 + <cyan>│</fg> <green>●</fg> /tmp/bar 35 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 36 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 37 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 38 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 39 + <cyan>└</fg>", 40 40 "<cursor.backward count=999><cursor.up count=9>", 41 41 "<cursor.down count=3>", 42 42 "<erase.down>", 43 - "│ Search: /tmp/_█ 44 - │ No matches found 45 - │ ↑/↓ to select • Enter: confirm • Type: to search 46 - └", 43 + "<cyan>│</fg> <dim>Search:</bold> /tmp/_█ 44 + <cyan>│</fg> <yellow>No matches found</fg> 45 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 46 + <cyan>└</fg>", 47 47 "<cursor.backward count=999><cursor.up count=6>", 48 48 "<cursor.down count=1>", 49 49 "<erase.down>", 50 - "▲ foo 51 - │ 52 - │ Search: /tmp/_█ 53 - │ No matches found 54 - │ Please select a path 55 - │ ↑/↓ to select • Enter: confirm • Type: to search 56 - └", 50 + "<yellow>▲</fg> foo 51 + <yellow>│</fg> 52 + <yellow>│</fg> <dim>Search:</bold> /tmp/_█ 53 + <yellow>│</fg> <yellow>No matches found</fg> 54 + <yellow>│</fg> <yellow>Please select a path</fg> 55 + <yellow>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 56 + <yellow>└</fg>", 57 57 "<cursor.backward count=999><cursor.up count=7>", 58 58 "<cursor.down count=1>", 59 59 "<erase.down>", 60 - "◆ foo 61 - │ 62 - │ Search: /tmp/█ 63 - │ ● /tmp/bar 64 - │ ○ /tmp/foo 65 - │ ○ /tmp/hello 66 - │ ○ /tmp/root.zip 67 - │ ↑/↓ to select • Enter: confirm • Type: to search 68 - └", 60 + "<cyan>◆</fg> foo 61 + <cyan>│</fg> 62 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 63 + <cyan>│</fg> <green>●</fg> /tmp/bar 64 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 65 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 66 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 67 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 68 + <cyan>└</fg>", 69 69 "<cursor.backward count=999><cursor.up count=9>", 70 70 "<cursor.down count=3>", 71 71 "<erase.down>", 72 - "│ Search: /tmp/b█ 73 - │ ● /tmp/bar 74 - │ ↑/↓ to select • Enter: confirm • Type: to search 75 - └", 72 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 73 + <cyan>│</fg> <green>●</fg> /tmp/bar 74 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 75 + <cyan>└</fg>", 76 76 "<cursor.backward count=999><cursor.up count=6>", 77 77 "<cursor.down count=1>", 78 78 "<erase.down>", 79 - "◇ foo 80 - │ /tmp/bar", 79 + "<green>◇</fg> foo 80 + <dim>│</fg> <dim>/tmp/bar</bold>", 81 81 " 82 82 ", 83 83 "<cursor.show>", ··· 87 87 exports[`text (isCI = false) > initialValue sets the value 1`] = ` 88 88 [ 89 89 "<cursor.hide>", 90 - "│ 91 - ◆ foo 92 - │ 93 - │ Search: /tmp/bar█ 94 - │ ● /tmp/bar 95 - │ ↑/↓ to select • Enter: confirm • Type: to search 96 - └", 90 + "<dim>│</fg> 91 + <cyan>◆</fg> foo 92 + <cyan>│</fg> 93 + <cyan>│</fg> <dim>Search:</bold> /tmp/bar█ 94 + <cyan>│</fg> <green>●</fg> /tmp/bar 95 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 96 + <cyan>└</fg>", 97 97 "<cursor.backward count=999><cursor.up count=6>", 98 98 "<cursor.down count=1>", 99 99 "<erase.down>", 100 - "◇ foo 101 - │ /tmp/bar", 100 + "<green>◇</fg> foo 101 + <dim>│</fg> <dim>/tmp/bar</bold>", 102 102 " 103 103 ", 104 104 "<cursor.show>", ··· 108 108 exports[`text (isCI = false) > renders cancelled value if one set 1`] = ` 109 109 [ 110 110 "<cursor.hide>", 111 - "│ 112 - ◆ foo 113 - │ 114 - │ Search: /tmp/█ 115 - │ ● /tmp/bar 116 - │ ○ /tmp/foo 117 - │ ○ /tmp/hello 118 - │ ○ /tmp/root.zip 119 - │ ↑/↓ to select • Enter: confirm • Type: to search 120 - └", 111 + "<dim>│</fg> 112 + <cyan>◆</fg> foo 113 + <cyan>│</fg> 114 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 115 + <cyan>│</fg> <green>●</fg> /tmp/bar 116 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 117 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 118 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 119 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 120 + <cyan>└</fg>", 121 121 "<cursor.backward count=999><cursor.up count=9>", 122 122 "<cursor.down count=3>", 123 123 "<erase.down>", 124 - "│ Search: /tmp/x█ 125 - │ No matches found 126 - │ ↑/↓ to select • Enter: confirm • Type: to search 127 - └", 124 + "<cyan>│</fg> <dim>Search:</bold> /tmp/x█ 125 + <cyan>│</fg> <yellow>No matches found</fg> 126 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 127 + <cyan>└</fg>", 128 128 "<cursor.backward count=999><cursor.up count=6>", 129 129 "<cursor.down count=3>", 130 130 "<erase.line><cursor.left count=1>", 131 - "│ Search: /tmp/xy█", 131 + "<cyan>│</fg> <dim>Search:</bold> /tmp/xy█", 132 132 "<cursor.down count=3>", 133 133 "<cursor.backward count=999><cursor.up count=6>", 134 134 "<cursor.down count=1>", 135 135 "<erase.down>", 136 - "■ foo 137 - │ /tmp/xy", 136 + "<red>■</fg> foo 137 + <dim>│</fg> <dim>/tmp/xy</bold>", 138 138 " 139 139 ", 140 140 "<cursor.show>", ··· 144 144 exports[`text (isCI = false) > renders message 1`] = ` 145 145 [ 146 146 "<cursor.hide>", 147 - "│ 148 - ◆ foo 149 - │ 150 - │ Search: /tmp/█ 151 - │ ● /tmp/bar 152 - │ ○ /tmp/foo 153 - │ ○ /tmp/hello 154 - │ ○ /tmp/root.zip 155 - │ ↑/↓ to select • Enter: confirm • Type: to search 156 - └", 147 + "<dim>│</fg> 148 + <cyan>◆</fg> foo 149 + <cyan>│</fg> 150 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 151 + <cyan>│</fg> <green>●</fg> /tmp/bar 152 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 153 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 154 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 155 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 156 + <cyan>└</fg>", 157 157 "<cursor.backward count=999><cursor.up count=9>", 158 158 "<cursor.down count=1>", 159 159 "<erase.down>", 160 - "◇ foo 161 - │ /tmp/bar", 160 + "<green>◇</fg> foo 161 + <dim>│</fg> <dim>/tmp/bar</bold>", 162 162 " 163 163 ", 164 164 "<cursor.show>", ··· 168 168 exports[`text (isCI = false) > renders submitted value 1`] = ` 169 169 [ 170 170 "<cursor.hide>", 171 - "│ 172 - ◆ foo 173 - │ 174 - │ Search: /tmp/█ 175 - │ ● /tmp/bar 176 - │ ○ /tmp/foo 177 - │ ○ /tmp/hello 178 - │ ○ /tmp/root.zip 179 - │ ↑/↓ to select • Enter: confirm • Type: to search 180 - └", 171 + "<dim>│</fg> 172 + <cyan>◆</fg> foo 173 + <cyan>│</fg> 174 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 175 + <cyan>│</fg> <green>●</fg> /tmp/bar 176 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 177 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 178 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 179 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 180 + <cyan>└</fg>", 181 181 "<cursor.backward count=999><cursor.up count=9>", 182 182 "<cursor.down count=3>", 183 183 "<erase.down>", 184 - "│ Search: /tmp/b█ 185 - │ ● /tmp/bar 186 - │ ↑/↓ to select • Enter: confirm • Type: to search 187 - └", 184 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 185 + <cyan>│</fg> <green>●</fg> /tmp/bar 186 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 187 + <cyan>└</fg>", 188 188 "<cursor.backward count=999><cursor.up count=6>", 189 189 "<cursor.down count=3>", 190 190 "<erase.line><cursor.left count=1>", 191 - "│ Search: /tmp/ba█", 191 + "<cyan>│</fg> <dim>Search:</bold> /tmp/ba█", 192 192 "<cursor.down count=3>", 193 193 "<cursor.backward count=999><cursor.up count=6>", 194 194 "<cursor.down count=1>", 195 195 "<erase.down>", 196 - "◇ foo 197 - │ /tmp/bar", 196 + "<green>◇</fg> foo 197 + <dim>│</fg> <dim>/tmp/bar</bold>", 198 198 " 199 199 ", 200 200 "<cursor.show>", ··· 204 204 exports[`text (isCI = false) > validation errors render and clear (using Error) 1`] = ` 205 205 [ 206 206 "<cursor.hide>", 207 - "│ 208 - ◆ foo 209 - │ 210 - │ Search: /tmp/█ 211 - │ ● /tmp/bar 212 - │ ○ /tmp/foo 213 - │ ○ /tmp/hello 214 - │ ○ /tmp/root.zip 215 - │ ↑/↓ to select • Enter: confirm • Type: to search 216 - └", 207 + "<dim>│</fg> 208 + <cyan>◆</fg> foo 209 + <cyan>│</fg> 210 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 211 + <cyan>│</fg> <green>●</fg> /tmp/bar 212 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 213 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 214 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 215 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 216 + <cyan>└</fg>", 217 217 "<cursor.backward count=999><cursor.up count=9>", 218 218 "<cursor.down count=3>", 219 219 "<erase.down>", 220 - "│ Search: /tmp/r█ 221 - │ ● /tmp/root.zip 222 - │ ↑/↓ to select • Enter: confirm • Type: to search 223 - └", 220 + "<cyan>│</fg> <dim>Search:</bold> /tmp/r█ 221 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 222 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 223 + <cyan>└</fg>", 224 224 "<cursor.backward count=999><cursor.up count=6>", 225 225 "<cursor.down count=1>", 226 226 "<erase.down>", 227 - "▲ foo 228 - │ 229 - │ Search: /tmp/r█ 230 - │ should be /tmp/bar 231 - │ ● /tmp/root.zip 232 - │ ↑/↓ to select • Enter: confirm • Type: to search 233 - └", 227 + "<yellow>▲</fg> foo 228 + <yellow>│</fg> 229 + <yellow>│</fg> <dim>Search:</bold> /tmp/r█ 230 + <yellow>│</fg> <yellow>should be /tmp/bar</fg> 231 + <yellow>│</fg> <green>●</fg> /tmp/root.zip 232 + <yellow>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 233 + <yellow>└</fg>", 234 234 "<cursor.backward count=999><cursor.up count=7>", 235 235 "<cursor.down count=1>", 236 236 "<erase.down>", 237 - "◆ foo 238 - │ 239 - │ Search: /tmp/█ 240 - │ ○ /tmp/bar 241 - │ ○ /tmp/foo 242 - │ ○ /tmp/hello 243 - │ ● /tmp/root.zip 244 - │ ↑/↓ to select • Enter: confirm • Type: to search 245 - └", 237 + "<cyan>◆</fg> foo 238 + <cyan>│</fg> 239 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 240 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/bar</bold> 241 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 242 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 243 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 244 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 245 + <cyan>└</fg>", 246 246 "<cursor.backward count=999><cursor.up count=9>", 247 247 "<cursor.down count=3>", 248 248 "<erase.down>", 249 - "│ Search: /tmp/b█ 250 - │ ● /tmp/bar 251 - │ ↑/↓ to select • Enter: confirm • Type: to search 252 - └", 249 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 250 + <cyan>│</fg> <green>●</fg> /tmp/bar 251 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 252 + <cyan>└</fg>", 253 253 "<cursor.backward count=999><cursor.up count=6>", 254 254 "<cursor.down count=1>", 255 255 "<erase.down>", 256 - "◇ foo 257 - │ /tmp/bar", 256 + "<green>◇</fg> foo 257 + <dim>│</fg> <dim>/tmp/bar</bold>", 258 258 " 259 259 ", 260 260 "<cursor.show>", ··· 264 264 exports[`text (isCI = false) > validation errors render and clear 1`] = ` 265 265 [ 266 266 "<cursor.hide>", 267 - "│ 268 - ◆ foo 269 - │ 270 - │ Search: /tmp/█ 271 - │ ● /tmp/bar 272 - │ ○ /tmp/foo 273 - │ ○ /tmp/hello 274 - │ ○ /tmp/root.zip 275 - │ ↑/↓ to select • Enter: confirm • Type: to search 276 - └", 267 + "<dim>│</fg> 268 + <cyan>◆</fg> foo 269 + <cyan>│</fg> 270 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 271 + <cyan>│</fg> <green>●</fg> /tmp/bar 272 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 273 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 274 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 275 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 276 + <cyan>└</fg>", 277 277 "<cursor.backward count=999><cursor.up count=9>", 278 278 "<cursor.down count=3>", 279 279 "<erase.down>", 280 - "│ Search: /tmp/r█ 281 - │ ● /tmp/root.zip 282 - │ ↑/↓ to select • Enter: confirm • Type: to search 283 - └", 280 + "<cyan>│</fg> <dim>Search:</bold> /tmp/r█ 281 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 282 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 283 + <cyan>└</fg>", 284 284 "<cursor.backward count=999><cursor.up count=6>", 285 285 "<cursor.down count=1>", 286 286 "<erase.down>", 287 - "▲ foo 288 - │ 289 - │ Search: /tmp/r█ 290 - │ should be /tmp/bar 291 - │ ● /tmp/root.zip 292 - │ ↑/↓ to select • Enter: confirm • Type: to search 293 - └", 287 + "<yellow>▲</fg> foo 288 + <yellow>│</fg> 289 + <yellow>│</fg> <dim>Search:</bold> /tmp/r█ 290 + <yellow>│</fg> <yellow>should be /tmp/bar</fg> 291 + <yellow>│</fg> <green>●</fg> /tmp/root.zip 292 + <yellow>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 293 + <yellow>└</fg>", 294 294 "<cursor.backward count=999><cursor.up count=7>", 295 295 "<cursor.down count=1>", 296 296 "<erase.down>", 297 - "◆ foo 298 - │ 299 - │ Search: /tmp/█ 300 - │ ○ /tmp/bar 301 - │ ○ /tmp/foo 302 - │ ○ /tmp/hello 303 - │ ● /tmp/root.zip 304 - │ ↑/↓ to select • Enter: confirm • Type: to search 305 - └", 297 + "<cyan>◆</fg> foo 298 + <cyan>│</fg> 299 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 300 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/bar</bold> 301 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 302 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 303 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 304 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 305 + <cyan>└</fg>", 306 306 "<cursor.backward count=999><cursor.up count=9>", 307 307 "<cursor.down count=3>", 308 308 "<erase.down>", 309 - "│ Search: /tmp/b█ 310 - │ ● /tmp/bar 311 - │ ↑/↓ to select • Enter: confirm • Type: to search 312 - └", 309 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 310 + <cyan>│</fg> <green>●</fg> /tmp/bar 311 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 312 + <cyan>└</fg>", 313 313 "<cursor.backward count=999><cursor.up count=6>", 314 314 "<cursor.down count=1>", 315 315 "<erase.down>", 316 - "◇ foo 317 - │ /tmp/bar", 316 + "<green>◇</fg> foo 317 + <dim>│</fg> <dim>/tmp/bar</bold>", 318 318 " 319 319 ", 320 320 "<cursor.show>", ··· 324 324 exports[`text (isCI = true) > can cancel 1`] = ` 325 325 [ 326 326 "<cursor.hide>", 327 - "│ 328 - ◆ foo 329 - │ 330 - │ Search: /tmp/█ 331 - │ ● /tmp/bar 332 - │ ○ /tmp/foo 333 - │ ○ /tmp/hello 334 - │ ○ /tmp/root.zip 335 - │ ↑/↓ to select • Enter: confirm • Type: to search 336 - └", 327 + "<dim>│</fg> 328 + <cyan>◆</fg> foo 329 + <cyan>│</fg> 330 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 331 + <cyan>│</fg> <green>●</fg> /tmp/bar 332 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 333 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 334 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 335 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 336 + <cyan>└</fg>", 337 337 "<cursor.backward count=999><cursor.up count=9>", 338 338 "<cursor.down count=1>", 339 339 "<erase.down>", 340 - "■ foo 341 - │ /tmp/", 340 + "<red>■</fg> foo 341 + <dim>│</fg> <dim>/tmp/</bold>", 342 342 " 343 343 ", 344 344 "<cursor.show>", ··· 348 348 exports[`text (isCI = true) > cannot submit unknown value 1`] = ` 349 349 [ 350 350 "<cursor.hide>", 351 - "│ 352 - ◆ foo 353 - │ 354 - │ Search: /tmp/█ 355 - │ ● /tmp/bar 356 - │ ○ /tmp/foo 357 - │ ○ /tmp/hello 358 - │ ○ /tmp/root.zip 359 - │ ↑/↓ to select • Enter: confirm • Type: to search 360 - └", 351 + "<dim>│</fg> 352 + <cyan>◆</fg> foo 353 + <cyan>│</fg> 354 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 355 + <cyan>│</fg> <green>●</fg> /tmp/bar 356 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 357 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 358 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 359 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 360 + <cyan>└</fg>", 361 361 "<cursor.backward count=999><cursor.up count=9>", 362 362 "<cursor.down count=3>", 363 363 "<erase.down>", 364 - "│ Search: /tmp/_█ 365 - │ No matches found 366 - │ ↑/↓ to select • Enter: confirm • Type: to search 367 - └", 364 + "<cyan>│</fg> <dim>Search:</bold> /tmp/_█ 365 + <cyan>│</fg> <yellow>No matches found</fg> 366 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 367 + <cyan>└</fg>", 368 368 "<cursor.backward count=999><cursor.up count=6>", 369 369 "<cursor.down count=1>", 370 370 "<erase.down>", 371 - "▲ foo 372 - │ 373 - │ Search: /tmp/_█ 374 - │ No matches found 375 - │ Please select a path 376 - │ ↑/↓ to select • Enter: confirm • Type: to search 377 - └", 371 + "<yellow>▲</fg> foo 372 + <yellow>│</fg> 373 + <yellow>│</fg> <dim>Search:</bold> /tmp/_█ 374 + <yellow>│</fg> <yellow>No matches found</fg> 375 + <yellow>│</fg> <yellow>Please select a path</fg> 376 + <yellow>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 377 + <yellow>└</fg>", 378 378 "<cursor.backward count=999><cursor.up count=7>", 379 379 "<cursor.down count=1>", 380 380 "<erase.down>", 381 - "◆ foo 382 - │ 383 - │ Search: /tmp/█ 384 - │ ● /tmp/bar 385 - │ ○ /tmp/foo 386 - │ ○ /tmp/hello 387 - │ ○ /tmp/root.zip 388 - │ ↑/↓ to select • Enter: confirm • Type: to search 389 - └", 381 + "<cyan>◆</fg> foo 382 + <cyan>│</fg> 383 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 384 + <cyan>│</fg> <green>●</fg> /tmp/bar 385 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 386 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 387 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 388 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 389 + <cyan>└</fg>", 390 390 "<cursor.backward count=999><cursor.up count=9>", 391 391 "<cursor.down count=3>", 392 392 "<erase.down>", 393 - "│ Search: /tmp/b█ 394 - │ ● /tmp/bar 395 - │ ↑/↓ to select • Enter: confirm • Type: to search 396 - └", 393 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 394 + <cyan>│</fg> <green>●</fg> /tmp/bar 395 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 396 + <cyan>└</fg>", 397 397 "<cursor.backward count=999><cursor.up count=6>", 398 398 "<cursor.down count=1>", 399 399 "<erase.down>", 400 - "◇ foo 401 - │ /tmp/bar", 400 + "<green>◇</fg> foo 401 + <dim>│</fg> <dim>/tmp/bar</bold>", 402 402 " 403 403 ", 404 404 "<cursor.show>", ··· 408 408 exports[`text (isCI = true) > initialValue sets the value 1`] = ` 409 409 [ 410 410 "<cursor.hide>", 411 - "│ 412 - ◆ foo 413 - │ 414 - │ Search: /tmp/bar█ 415 - │ ● /tmp/bar 416 - │ ↑/↓ to select • Enter: confirm • Type: to search 417 - └", 411 + "<dim>│</fg> 412 + <cyan>◆</fg> foo 413 + <cyan>│</fg> 414 + <cyan>│</fg> <dim>Search:</bold> /tmp/bar█ 415 + <cyan>│</fg> <green>●</fg> /tmp/bar 416 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 417 + <cyan>└</fg>", 418 418 "<cursor.backward count=999><cursor.up count=6>", 419 419 "<cursor.down count=1>", 420 420 "<erase.down>", 421 - "◇ foo 422 - │ /tmp/bar", 421 + "<green>◇</fg> foo 422 + <dim>│</fg> <dim>/tmp/bar</bold>", 423 423 " 424 424 ", 425 425 "<cursor.show>", ··· 429 429 exports[`text (isCI = true) > renders cancelled value if one set 1`] = ` 430 430 [ 431 431 "<cursor.hide>", 432 - "│ 433 - ◆ foo 434 - │ 435 - │ Search: /tmp/█ 436 - │ ● /tmp/bar 437 - │ ○ /tmp/foo 438 - │ ○ /tmp/hello 439 - │ ○ /tmp/root.zip 440 - │ ↑/↓ to select • Enter: confirm • Type: to search 441 - └", 432 + "<dim>│</fg> 433 + <cyan>◆</fg> foo 434 + <cyan>│</fg> 435 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 436 + <cyan>│</fg> <green>●</fg> /tmp/bar 437 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 438 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 439 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 440 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 441 + <cyan>└</fg>", 442 442 "<cursor.backward count=999><cursor.up count=9>", 443 443 "<cursor.down count=3>", 444 444 "<erase.down>", 445 - "│ Search: /tmp/x█ 446 - │ No matches found 447 - │ ↑/↓ to select • Enter: confirm • Type: to search 448 - └", 445 + "<cyan>│</fg> <dim>Search:</bold> /tmp/x█ 446 + <cyan>│</fg> <yellow>No matches found</fg> 447 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 448 + <cyan>└</fg>", 449 449 "<cursor.backward count=999><cursor.up count=6>", 450 450 "<cursor.down count=3>", 451 451 "<erase.line><cursor.left count=1>", 452 - "│ Search: /tmp/xy█", 452 + "<cyan>│</fg> <dim>Search:</bold> /tmp/xy█", 453 453 "<cursor.down count=3>", 454 454 "<cursor.backward count=999><cursor.up count=6>", 455 455 "<cursor.down count=1>", 456 456 "<erase.down>", 457 - "■ foo 458 - │ /tmp/xy", 457 + "<red>■</fg> foo 458 + <dim>│</fg> <dim>/tmp/xy</bold>", 459 459 " 460 460 ", 461 461 "<cursor.show>", ··· 465 465 exports[`text (isCI = true) > renders message 1`] = ` 466 466 [ 467 467 "<cursor.hide>", 468 - "│ 469 - ◆ foo 470 - │ 471 - │ Search: /tmp/█ 472 - │ ● /tmp/bar 473 - │ ○ /tmp/foo 474 - │ ○ /tmp/hello 475 - │ ○ /tmp/root.zip 476 - │ ↑/↓ to select • Enter: confirm • Type: to search 477 - └", 468 + "<dim>│</fg> 469 + <cyan>◆</fg> foo 470 + <cyan>│</fg> 471 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 472 + <cyan>│</fg> <green>●</fg> /tmp/bar 473 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 474 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 475 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 476 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 477 + <cyan>└</fg>", 478 478 "<cursor.backward count=999><cursor.up count=9>", 479 479 "<cursor.down count=1>", 480 480 "<erase.down>", 481 - "◇ foo 482 - │ /tmp/bar", 481 + "<green>◇</fg> foo 482 + <dim>│</fg> <dim>/tmp/bar</bold>", 483 483 " 484 484 ", 485 485 "<cursor.show>", ··· 489 489 exports[`text (isCI = true) > renders submitted value 1`] = ` 490 490 [ 491 491 "<cursor.hide>", 492 - "│ 493 - ◆ foo 494 - │ 495 - │ Search: /tmp/█ 496 - │ ● /tmp/bar 497 - │ ○ /tmp/foo 498 - │ ○ /tmp/hello 499 - │ ○ /tmp/root.zip 500 - │ ↑/↓ to select • Enter: confirm • Type: to search 501 - └", 492 + "<dim>│</fg> 493 + <cyan>◆</fg> foo 494 + <cyan>│</fg> 495 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 496 + <cyan>│</fg> <green>●</fg> /tmp/bar 497 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 498 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 499 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 500 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 501 + <cyan>└</fg>", 502 502 "<cursor.backward count=999><cursor.up count=9>", 503 503 "<cursor.down count=3>", 504 504 "<erase.down>", 505 - "│ Search: /tmp/b█ 506 - │ ● /tmp/bar 507 - │ ↑/↓ to select • Enter: confirm • Type: to search 508 - └", 505 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 506 + <cyan>│</fg> <green>●</fg> /tmp/bar 507 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 508 + <cyan>└</fg>", 509 509 "<cursor.backward count=999><cursor.up count=6>", 510 510 "<cursor.down count=3>", 511 511 "<erase.line><cursor.left count=1>", 512 - "│ Search: /tmp/ba█", 512 + "<cyan>│</fg> <dim>Search:</bold> /tmp/ba█", 513 513 "<cursor.down count=3>", 514 514 "<cursor.backward count=999><cursor.up count=6>", 515 515 "<cursor.down count=1>", 516 516 "<erase.down>", 517 - "◇ foo 518 - │ /tmp/bar", 517 + "<green>◇</fg> foo 518 + <dim>│</fg> <dim>/tmp/bar</bold>", 519 519 " 520 520 ", 521 521 "<cursor.show>", ··· 525 525 exports[`text (isCI = true) > validation errors render and clear (using Error) 1`] = ` 526 526 [ 527 527 "<cursor.hide>", 528 - "│ 529 - ◆ foo 530 - │ 531 - │ Search: /tmp/█ 532 - │ ● /tmp/bar 533 - │ ○ /tmp/foo 534 - │ ○ /tmp/hello 535 - │ ○ /tmp/root.zip 536 - │ ↑/↓ to select • Enter: confirm • Type: to search 537 - └", 528 + "<dim>│</fg> 529 + <cyan>◆</fg> foo 530 + <cyan>│</fg> 531 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 532 + <cyan>│</fg> <green>●</fg> /tmp/bar 533 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 534 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 535 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 536 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 537 + <cyan>└</fg>", 538 538 "<cursor.backward count=999><cursor.up count=9>", 539 539 "<cursor.down count=3>", 540 540 "<erase.down>", 541 - "│ Search: /tmp/r█ 542 - │ ● /tmp/root.zip 543 - │ ↑/↓ to select • Enter: confirm • Type: to search 544 - └", 541 + "<cyan>│</fg> <dim>Search:</bold> /tmp/r█ 542 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 543 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 544 + <cyan>└</fg>", 545 545 "<cursor.backward count=999><cursor.up count=6>", 546 546 "<cursor.down count=1>", 547 547 "<erase.down>", 548 - "▲ foo 549 - │ 550 - │ Search: /tmp/r█ 551 - │ should be /tmp/bar 552 - │ ● /tmp/root.zip 553 - │ ↑/↓ to select • Enter: confirm • Type: to search 554 - └", 548 + "<yellow>▲</fg> foo 549 + <yellow>│</fg> 550 + <yellow>│</fg> <dim>Search:</bold> /tmp/r█ 551 + <yellow>│</fg> <yellow>should be /tmp/bar</fg> 552 + <yellow>│</fg> <green>●</fg> /tmp/root.zip 553 + <yellow>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 554 + <yellow>└</fg>", 555 555 "<cursor.backward count=999><cursor.up count=7>", 556 556 "<cursor.down count=1>", 557 557 "<erase.down>", 558 - "◆ foo 559 - │ 560 - │ Search: /tmp/█ 561 - │ ○ /tmp/bar 562 - │ ○ /tmp/foo 563 - │ ○ /tmp/hello 564 - │ ● /tmp/root.zip 565 - │ ↑/↓ to select • Enter: confirm • Type: to search 566 - └", 558 + "<cyan>◆</fg> foo 559 + <cyan>│</fg> 560 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 561 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/bar</bold> 562 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 563 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 564 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 565 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 566 + <cyan>└</fg>", 567 567 "<cursor.backward count=999><cursor.up count=9>", 568 568 "<cursor.down count=3>", 569 569 "<erase.down>", 570 - "│ Search: /tmp/b█ 571 - │ ● /tmp/bar 572 - │ ↑/↓ to select • Enter: confirm • Type: to search 573 - └", 570 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 571 + <cyan>│</fg> <green>●</fg> /tmp/bar 572 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 573 + <cyan>└</fg>", 574 574 "<cursor.backward count=999><cursor.up count=6>", 575 575 "<cursor.down count=1>", 576 576 "<erase.down>", 577 - "◇ foo 578 - │ /tmp/bar", 577 + "<green>◇</fg> foo 578 + <dim>│</fg> <dim>/tmp/bar</bold>", 579 579 " 580 580 ", 581 581 "<cursor.show>", ··· 585 585 exports[`text (isCI = true) > validation errors render and clear 1`] = ` 586 586 [ 587 587 "<cursor.hide>", 588 - "│ 589 - ◆ foo 590 - │ 591 - │ Search: /tmp/█ 592 - │ ● /tmp/bar 593 - │ ○ /tmp/foo 594 - │ ○ /tmp/hello 595 - │ ○ /tmp/root.zip 596 - │ ↑/↓ to select • Enter: confirm • Type: to search 597 - └", 588 + "<dim>│</fg> 589 + <cyan>◆</fg> foo 590 + <cyan>│</fg> 591 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 592 + <cyan>│</fg> <green>●</fg> /tmp/bar 593 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 594 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 595 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/root.zip</bold> 596 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 597 + <cyan>└</fg>", 598 598 "<cursor.backward count=999><cursor.up count=9>", 599 599 "<cursor.down count=3>", 600 600 "<erase.down>", 601 - "│ Search: /tmp/r█ 602 - │ ● /tmp/root.zip 603 - │ ↑/↓ to select • Enter: confirm • Type: to search 604 - └", 601 + "<cyan>│</fg> <dim>Search:</bold> /tmp/r█ 602 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 603 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 604 + <cyan>└</fg>", 605 605 "<cursor.backward count=999><cursor.up count=6>", 606 606 "<cursor.down count=1>", 607 607 "<erase.down>", 608 - "▲ foo 609 - │ 610 - │ Search: /tmp/r█ 611 - │ should be /tmp/bar 612 - │ ● /tmp/root.zip 613 - │ ↑/↓ to select • Enter: confirm • Type: to search 614 - └", 608 + "<yellow>▲</fg> foo 609 + <yellow>│</fg> 610 + <yellow>│</fg> <dim>Search:</bold> /tmp/r█ 611 + <yellow>│</fg> <yellow>should be /tmp/bar</fg> 612 + <yellow>│</fg> <green>●</fg> /tmp/root.zip 613 + <yellow>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 614 + <yellow>└</fg>", 615 615 "<cursor.backward count=999><cursor.up count=7>", 616 616 "<cursor.down count=1>", 617 617 "<erase.down>", 618 - "◆ foo 619 - │ 620 - │ Search: /tmp/█ 621 - │ ○ /tmp/bar 622 - │ ○ /tmp/foo 623 - │ ○ /tmp/hello 624 - │ ● /tmp/root.zip 625 - │ ↑/↓ to select • Enter: confirm • Type: to search 626 - └", 618 + "<cyan>◆</fg> foo 619 + <cyan>│</fg> 620 + <cyan>│</fg> <dim>Search:</bold> /tmp/█ 621 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/bar</bold> 622 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/foo</bold> 623 + <cyan>│</fg> <dim>○</bold> <dim>/tmp/hello</bold> 624 + <cyan>│</fg> <green>●</fg> /tmp/root.zip 625 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 626 + <cyan>└</fg>", 627 627 "<cursor.backward count=999><cursor.up count=9>", 628 628 "<cursor.down count=3>", 629 629 "<erase.down>", 630 - "│ Search: /tmp/b█ 631 - │ ● /tmp/bar 632 - │ ↑/↓ to select • Enter: confirm • Type: to search 633 - └", 630 + "<cyan>│</fg> <dim>Search:</bold> /tmp/b█ 631 + <cyan>│</fg> <green>●</fg> /tmp/bar 632 + <cyan>│</fg> <dim>↑/↓</bold> to select • <dim>Enter:</bold> confirm • <dim>Type:</bold> to search 633 + <cyan>└</fg>", 634 634 "<cursor.backward count=999><cursor.up count=6>", 635 635 "<cursor.down count=1>", 636 636 "<erase.down>", 637 - "◇ foo 638 - │ /tmp/bar", 637 + "<green>◇</fg> foo 638 + <dim>│</fg> <dim>/tmp/bar</bold>", 639 639 " 640 640 ", 641 641 "<cursor.show>",
+121 -121
packages/prompts/src/__snapshots__/progress-bar.test.ts.snap
··· 3 3 exports[`prompts - progress (isCI = false) > message > sets message for next frame 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 6 + "<dim>│</fg> 7 7 ", 8 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 8 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 9 9 "<cursor.left count=1>", 10 10 "<erase.down>", 11 - "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", 11 + "<magenta>◐</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> foo", 12 12 ] 13 13 `; 14 14 15 15 exports[`prompts - progress (isCI = false) > process exit handling > prioritizes cancel option over global setting 1`] = ` 16 16 [ 17 17 "<cursor.hide>", 18 - "│ 18 + "<dim>│</fg> 19 19 ", 20 - "■ Progress cancel message 20 + "<red>■</fg> Progress cancel message 21 21 ", 22 22 "<cursor.show>", 23 23 ] ··· 26 26 exports[`prompts - progress (isCI = false) > process exit handling > prioritizes error option over global setting 1`] = ` 27 27 [ 28 28 "<cursor.hide>", 29 - "│ 29 + "<dim>│</fg> 30 30 ", 31 - "▲ Progress error message 31 + "<red>▲</fg> Progress error message 32 32 ", 33 33 "<cursor.show>", 34 34 ] ··· 37 37 exports[`prompts - progress (isCI = false) > process exit handling > uses custom cancel message when provided directly 1`] = ` 38 38 [ 39 39 "<cursor.hide>", 40 - "│ 40 + "<dim>│</fg> 41 41 ", 42 - "■ Custom cancel message 42 + "<red>■</fg> Custom cancel message 43 43 ", 44 44 "<cursor.show>", 45 45 ] ··· 48 48 exports[`prompts - progress (isCI = false) > process exit handling > uses custom error message when provided directly 1`] = ` 49 49 [ 50 50 "<cursor.hide>", 51 - "│ 51 + "<dim>│</fg> 52 52 ", 53 - "▲ Custom error message 53 + "<red>▲</fg> Custom error message 54 54 ", 55 55 "<cursor.show>", 56 56 ] ··· 59 59 exports[`prompts - progress (isCI = false) > process exit handling > uses default cancel message 1`] = ` 60 60 [ 61 61 "<cursor.hide>", 62 - "│ 62 + "<dim>│</fg> 63 63 ", 64 - "■ Canceled 64 + "<red>■</fg> Canceled 65 65 ", 66 66 "<cursor.show>", 67 67 ] ··· 70 70 exports[`prompts - progress (isCI = false) > process exit handling > uses global custom cancel message from settings 1`] = ` 71 71 [ 72 72 "<cursor.hide>", 73 - "│ 73 + "<dim>│</fg> 74 74 ", 75 - "■ Global cancel message 75 + "<red>■</fg> Global cancel message 76 76 ", 77 77 "<cursor.show>", 78 78 ] ··· 81 81 exports[`prompts - progress (isCI = false) > process exit handling > uses global custom error message from settings 1`] = ` 82 82 [ 83 83 "<cursor.hide>", 84 - "│ 84 + "<dim>│</fg> 85 85 ", 86 - "▲ Global error message 86 + "<red>▲</fg> Global error message 87 87 ", 88 88 "<cursor.show>", 89 89 ] ··· 92 92 exports[`prompts - progress (isCI = false) > start > renders frames at interval 1`] = ` 93 93 [ 94 94 "<cursor.hide>", 95 - "│ 95 + "<dim>│</fg> 96 96 ", 97 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 97 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 98 98 "<cursor.left count=1>", 99 99 "<erase.down>", 100 - "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 100 + "<magenta>◐</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 101 101 "<cursor.left count=1>", 102 102 "<erase.down>", 103 - "◓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 103 + "<magenta>◓</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 104 104 "<cursor.left count=1>", 105 105 "<erase.down>", 106 - "◑ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 106 + "<magenta>◑</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 107 107 ] 108 108 `; 109 109 110 110 exports[`prompts - progress (isCI = false) > start > renders message 1`] = ` 111 111 [ 112 112 "<cursor.hide>", 113 - "│ 113 + "<dim>│</fg> 114 114 ", 115 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", 115 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> foo", 116 116 ] 117 117 `; 118 118 119 119 exports[`prompts - progress (isCI = false) > start > renders timer when indicator is "timer" 1`] = ` 120 120 [ 121 121 "<cursor.hide>", 122 - "│ 122 + "<dim>│</fg> 123 123 ", 124 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0s]", 124 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> [0s]", 125 125 ] 126 126 `; 127 127 128 128 exports[`prompts - progress (isCI = false) > stop > renders cancel symbol when calling cancel() 1`] = ` 129 129 [ 130 130 "<cursor.hide>", 131 - "│ 131 + "<dim>│</fg> 132 132 ", 133 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 133 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 134 134 "<cursor.left count=1>", 135 135 "<erase.down>", 136 - "■ 136 + "<red>■</fg> 137 137 ", 138 138 "<cursor.show>", 139 139 ] ··· 142 142 exports[`prompts - progress (isCI = false) > stop > renders error symbol when calling error() 1`] = ` 143 143 [ 144 144 "<cursor.hide>", 145 - "│ 145 + "<dim>│</fg> 146 146 ", 147 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 147 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 148 148 "<cursor.left count=1>", 149 149 "<erase.down>", 150 - "▲ 150 + "<red>▲</fg> 151 151 ", 152 152 "<cursor.show>", 153 153 ] ··· 156 156 exports[`prompts - progress (isCI = false) > stop > renders message 1`] = ` 157 157 [ 158 158 "<cursor.hide>", 159 - "│ 159 + "<dim>│</fg> 160 160 ", 161 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 161 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 162 162 "<cursor.left count=1>", 163 163 "<erase.down>", 164 - "◇ foo 164 + "<green>◇</fg> foo 165 165 ", 166 166 "<cursor.show>", 167 167 ] ··· 170 170 exports[`prompts - progress (isCI = false) > stop > renders message when cancelling 1`] = ` 171 171 [ 172 172 "<cursor.hide>", 173 - "│ 173 + "<dim>│</fg> 174 174 ", 175 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 175 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 176 176 "<cursor.left count=1>", 177 177 "<erase.down>", 178 - "■ cancelled :-( 178 + "<red>■</fg> cancelled :-( 179 179 ", 180 180 "<cursor.show>", 181 181 ] ··· 184 184 exports[`prompts - progress (isCI = false) > stop > renders message when erroring 1`] = ` 185 185 [ 186 186 "<cursor.hide>", 187 - "│ 187 + "<dim>│</fg> 188 188 ", 189 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 189 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 190 190 "<cursor.left count=1>", 191 191 "<erase.down>", 192 - "▲ FATAL ERROR! 192 + "<red>▲</fg> FATAL ERROR! 193 193 ", 194 194 "<cursor.show>", 195 195 ] ··· 198 198 exports[`prompts - progress (isCI = false) > stop > renders message without removing dots 1`] = ` 199 199 [ 200 200 "<cursor.hide>", 201 - "│ 201 + "<dim>│</fg> 202 202 ", 203 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 203 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 204 204 "<cursor.left count=1>", 205 205 "<erase.down>", 206 - "◇ foo. 206 + "<green>◇</fg> foo. 207 207 ", 208 208 "<cursor.show>", 209 209 ] ··· 212 212 exports[`prompts - progress (isCI = false) > stop > renders submit symbol and stops progress 1`] = ` 213 213 [ 214 214 "<cursor.hide>", 215 - "│ 215 + "<dim>│</fg> 216 216 ", 217 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 217 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ", 218 218 "<cursor.left count=1>", 219 219 "<erase.down>", 220 - "◇ 220 + "<green>◇</fg> 221 221 ", 222 222 "<cursor.show>", 223 223 ] ··· 226 226 exports[`prompts - progress (isCI = false) > style > renders block progressbar 1`] = ` 227 227 [ 228 228 "<cursor.hide>", 229 - "│ 229 + "<dim>│</fg> 230 230 ", 231 - "◒ ██████████ ", 231 + "<magenta>◒</fg> <magenta></fg><dim>██████████</bold> ", 232 232 "<cursor.left count=1>", 233 233 "<erase.down>", 234 - "◐ ██████████ ", 234 + "<magenta>◐</fg> <magenta></fg><dim>██████████</bold> ", 235 235 "<cursor.left count=1>", 236 236 "<erase.down>", 237 - "◓ ██████████ ", 237 + "<magenta>◓</fg> <magenta>█████</fg><dim>█████</bold> ", 238 238 "<cursor.left count=1>", 239 239 "<erase.down>", 240 - "◑ ██████████ ", 240 + "<magenta>◑</fg> <magenta>█████</fg><dim>█████</bold> ", 241 241 "<cursor.left count=1>", 242 242 "<erase.down>", 243 - "◇ 243 + "<green>◇</fg> 244 244 ", 245 245 "<cursor.show>", 246 246 ] ··· 249 249 exports[`prompts - progress (isCI = false) > style > renders heavy progressbar 1`] = ` 250 250 [ 251 251 "<cursor.hide>", 252 - "│ 252 + "<dim>│</fg> 253 253 ", 254 - "◒ ━━━━━━━━━━ ", 254 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━</bold> ", 255 255 "<cursor.left count=1>", 256 256 "<erase.down>", 257 - "◐ ━━━━━━━━━━ ", 257 + "<magenta>◐</fg> <magenta></fg><dim>━━━━━━━━━━</bold> ", 258 258 "<cursor.left count=1>", 259 259 "<erase.down>", 260 - "◓ ━━━━━━━━━━ ", 260 + "<magenta>◓</fg> <magenta>━━━━━</fg><dim>━━━━━</bold> ", 261 261 "<cursor.left count=1>", 262 262 "<erase.down>", 263 - "◑ ━━━━━━━━━━ ", 263 + "<magenta>◑</fg> <magenta>━━━━━</fg><dim>━━━━━</bold> ", 264 264 "<cursor.left count=1>", 265 265 "<erase.down>", 266 - "◇ 266 + "<green>◇</fg> 267 267 ", 268 268 "<cursor.show>", 269 269 ] ··· 272 272 exports[`prompts - progress (isCI = false) > style > renders light progressbar 1`] = ` 273 273 [ 274 274 "<cursor.hide>", 275 - "│ 275 + "<dim>│</fg> 276 276 ", 277 - "◒ ────────── ", 277 + "<magenta>◒</fg> <magenta></fg><dim>──────────</bold> ", 278 278 "<cursor.left count=1>", 279 279 "<erase.down>", 280 - "◐ ────────── ", 280 + "<magenta>◐</fg> <magenta></fg><dim>──────────</bold> ", 281 281 "<cursor.left count=1>", 282 282 "<erase.down>", 283 - "◓ ────────── ", 283 + "<magenta>◓</fg> <magenta>─────</fg><dim>─────</bold> ", 284 284 "<cursor.left count=1>", 285 285 "<erase.down>", 286 - "◑ ────────── ", 286 + "<magenta>◑</fg> <magenta>─────</fg><dim>─────</bold> ", 287 287 "<cursor.left count=1>", 288 288 "<erase.down>", 289 - "◇ 289 + "<green>◇</fg> 290 290 ", 291 291 "<cursor.show>", 292 292 ] ··· 295 295 exports[`prompts - progress (isCI = true) > message > sets message for next frame 1`] = ` 296 296 [ 297 297 "<cursor.hide>", 298 - "│ 298 + "<dim>│</fg> 299 299 ", 300 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 300 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 301 301 " 302 302 ", 303 303 "<cursor.left count=1>", 304 304 "<erase.down>", 305 - "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", 305 + "<magenta>◐</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> foo...", 306 306 ] 307 307 `; 308 308 309 309 exports[`prompts - progress (isCI = true) > process exit handling > prioritizes cancel option over global setting 1`] = ` 310 310 [ 311 311 "<cursor.hide>", 312 - "│ 312 + "<dim>│</fg> 313 313 ", 314 - "■ Progress cancel message 314 + "<red>■</fg> Progress cancel message 315 315 ", 316 316 "<cursor.show>", 317 317 ] ··· 320 320 exports[`prompts - progress (isCI = true) > process exit handling > prioritizes error option over global setting 1`] = ` 321 321 [ 322 322 "<cursor.hide>", 323 - "│ 323 + "<dim>│</fg> 324 324 ", 325 - "▲ Progress error message 325 + "<red>▲</fg> Progress error message 326 326 ", 327 327 "<cursor.show>", 328 328 ] ··· 331 331 exports[`prompts - progress (isCI = true) > process exit handling > uses custom cancel message when provided directly 1`] = ` 332 332 [ 333 333 "<cursor.hide>", 334 - "│ 334 + "<dim>│</fg> 335 335 ", 336 - "■ Custom cancel message 336 + "<red>■</fg> Custom cancel message 337 337 ", 338 338 "<cursor.show>", 339 339 ] ··· 342 342 exports[`prompts - progress (isCI = true) > process exit handling > uses custom error message when provided directly 1`] = ` 343 343 [ 344 344 "<cursor.hide>", 345 - "│ 345 + "<dim>│</fg> 346 346 ", 347 - "▲ Custom error message 347 + "<red>▲</fg> Custom error message 348 348 ", 349 349 "<cursor.show>", 350 350 ] ··· 353 353 exports[`prompts - progress (isCI = true) > process exit handling > uses default cancel message 1`] = ` 354 354 [ 355 355 "<cursor.hide>", 356 - "│ 356 + "<dim>│</fg> 357 357 ", 358 - "■ Canceled 358 + "<red>■</fg> Canceled 359 359 ", 360 360 "<cursor.show>", 361 361 ] ··· 364 364 exports[`prompts - progress (isCI = true) > process exit handling > uses global custom cancel message from settings 1`] = ` 365 365 [ 366 366 "<cursor.hide>", 367 - "│ 367 + "<dim>│</fg> 368 368 ", 369 - "■ Global cancel message 369 + "<red>■</fg> Global cancel message 370 370 ", 371 371 "<cursor.show>", 372 372 ] ··· 375 375 exports[`prompts - progress (isCI = true) > process exit handling > uses global custom error message from settings 1`] = ` 376 376 [ 377 377 "<cursor.hide>", 378 - "│ 378 + "<dim>│</fg> 379 379 ", 380 - "▲ Global error message 380 + "<red>▲</fg> Global error message 381 381 ", 382 382 "<cursor.show>", 383 383 ] ··· 386 386 exports[`prompts - progress (isCI = true) > start > renders frames at interval 1`] = ` 387 387 [ 388 388 "<cursor.hide>", 389 - "│ 389 + "<dim>│</fg> 390 390 ", 391 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 391 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 392 392 ] 393 393 `; 394 394 395 395 exports[`prompts - progress (isCI = true) > start > renders message 1`] = ` 396 396 [ 397 397 "<cursor.hide>", 398 - "│ 398 + "<dim>│</fg> 399 399 ", 400 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", 400 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> foo...", 401 401 ] 402 402 `; 403 403 404 404 exports[`prompts - progress (isCI = true) > start > renders timer when indicator is "timer" 1`] = ` 405 405 [ 406 406 "<cursor.hide>", 407 - "│ 407 + "<dim>│</fg> 408 408 ", 409 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 409 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 410 410 ] 411 411 `; 412 412 413 413 exports[`prompts - progress (isCI = true) > stop > renders cancel symbol when calling cancel() 1`] = ` 414 414 [ 415 415 "<cursor.hide>", 416 - "│ 416 + "<dim>│</fg> 417 417 ", 418 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 418 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 419 419 " 420 420 ", 421 421 "<cursor.left count=1>", 422 422 "<erase.down>", 423 - "■ 423 + "<red>■</fg> 424 424 ", 425 425 "<cursor.show>", 426 426 ] ··· 429 429 exports[`prompts - progress (isCI = true) > stop > renders error symbol when calling error() 1`] = ` 430 430 [ 431 431 "<cursor.hide>", 432 - "│ 432 + "<dim>│</fg> 433 433 ", 434 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 434 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 435 435 " 436 436 ", 437 437 "<cursor.left count=1>", 438 438 "<erase.down>", 439 - "▲ 439 + "<red>▲</fg> 440 440 ", 441 441 "<cursor.show>", 442 442 ] ··· 445 445 exports[`prompts - progress (isCI = true) > stop > renders message 1`] = ` 446 446 [ 447 447 "<cursor.hide>", 448 - "│ 448 + "<dim>│</fg> 449 449 ", 450 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 450 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 451 451 " 452 452 ", 453 453 "<cursor.left count=1>", 454 454 "<erase.down>", 455 - "◇ foo 455 + "<green>◇</fg> foo 456 456 ", 457 457 "<cursor.show>", 458 458 ] ··· 461 461 exports[`prompts - progress (isCI = true) > stop > renders message when cancelling 1`] = ` 462 462 [ 463 463 "<cursor.hide>", 464 - "│ 464 + "<dim>│</fg> 465 465 ", 466 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 466 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 467 467 " 468 468 ", 469 469 "<cursor.left count=1>", 470 470 "<erase.down>", 471 - "■ cancelled :-( 471 + "<red>■</fg> cancelled :-( 472 472 ", 473 473 "<cursor.show>", 474 474 ] ··· 477 477 exports[`prompts - progress (isCI = true) > stop > renders message when erroring 1`] = ` 478 478 [ 479 479 "<cursor.hide>", 480 - "│ 480 + "<dim>│</fg> 481 481 ", 482 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 482 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 483 483 " 484 484 ", 485 485 "<cursor.left count=1>", 486 486 "<erase.down>", 487 - "▲ FATAL ERROR! 487 + "<red>▲</fg> FATAL ERROR! 488 488 ", 489 489 "<cursor.show>", 490 490 ] ··· 493 493 exports[`prompts - progress (isCI = true) > stop > renders message without removing dots 1`] = ` 494 494 [ 495 495 "<cursor.hide>", 496 - "│ 496 + "<dim>│</fg> 497 497 ", 498 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 498 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 499 499 " 500 500 ", 501 501 "<cursor.left count=1>", 502 502 "<erase.down>", 503 - "◇ foo. 503 + "<green>◇</fg> foo. 504 504 ", 505 505 "<cursor.show>", 506 506 ] ··· 509 509 exports[`prompts - progress (isCI = true) > stop > renders submit symbol and stops progress 1`] = ` 510 510 [ 511 511 "<cursor.hide>", 512 - "│ 512 + "<dim>│</fg> 513 513 ", 514 - "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 514 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</bold> ...", 515 515 " 516 516 ", 517 517 "<cursor.left count=1>", 518 518 "<erase.down>", 519 - "◇ 519 + "<green>◇</fg> 520 520 ", 521 521 "<cursor.show>", 522 522 ] ··· 525 525 exports[`prompts - progress (isCI = true) > style > renders block progressbar 1`] = ` 526 526 [ 527 527 "<cursor.hide>", 528 - "│ 528 + "<dim>│</fg> 529 529 ", 530 - "◒ ██████████ ...", 530 + "<magenta>◒</fg> <magenta></fg><dim>██████████</bold> ...", 531 531 " 532 532 ", 533 533 "<cursor.left count=1>", 534 534 "<erase.down>", 535 - "◐ ██████████ ...", 535 + "<magenta>◐</fg> <magenta>█████</fg><dim>█████</bold> ...", 536 536 " 537 537 ", 538 538 "<cursor.left count=1>", 539 539 "<erase.down>", 540 - "◇ 540 + "<green>◇</fg> 541 541 ", 542 542 "<cursor.show>", 543 543 ] ··· 546 546 exports[`prompts - progress (isCI = true) > style > renders heavy progressbar 1`] = ` 547 547 [ 548 548 "<cursor.hide>", 549 - "│ 549 + "<dim>│</fg> 550 550 ", 551 - "◒ ━━━━━━━━━━ ...", 551 + "<magenta>◒</fg> <magenta></fg><dim>━━━━━━━━━━</bold> ...", 552 552 " 553 553 ", 554 554 "<cursor.left count=1>", 555 555 "<erase.down>", 556 - "◐ ━━━━━━━━━━ ...", 556 + "<magenta>◐</fg> <magenta>━━━━━</fg><dim>━━━━━</bold> ...", 557 557 " 558 558 ", 559 559 "<cursor.left count=1>", 560 560 "<erase.down>", 561 - "◇ 561 + "<green>◇</fg> 562 562 ", 563 563 "<cursor.show>", 564 564 ] ··· 567 567 exports[`prompts - progress (isCI = true) > style > renders light progressbar 1`] = ` 568 568 [ 569 569 "<cursor.hide>", 570 - "│ 570 + "<dim>│</fg> 571 571 ", 572 - "◒ ────────── ...", 572 + "<magenta>◒</fg> <magenta></fg><dim>──────────</bold> ...", 573 573 " 574 574 ", 575 575 "<cursor.left count=1>", 576 576 "<erase.down>", 577 - "◐ ────────── ...", 577 + "<magenta>◐</fg> <magenta>─────</fg><dim>─────</bold> ...", 578 578 " 579 579 ", 580 580 "<cursor.left count=1>", 581 581 "<erase.down>", 582 - "◇ 582 + "<green>◇</fg> 583 583 ", 584 584 "<cursor.show>", 585 585 ]
+300 -300
packages/prompts/src/__snapshots__/select-key.test.ts.snap
··· 3 3 exports[`text (isCI = false) > can cancel by pressing escape 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ foo 8 - │  a  Option A 9 - │  b  Option B 10 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> foo 8 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 9 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 10 + <cyan>└</fg> 11 11 ", 12 12 "<cursor.backward count=999><cursor.up count=5>", 13 13 "<cursor.down count=1>", 14 14 "<erase.down>", 15 - "■ foo 16 - │ Option A 17 - │", 15 + "<red>■</fg> foo 16 + <dim>│</fg> <dim>Option A</bold> 17 + <dim>│</fg>", 18 18 " 19 19 ", 20 20 "<cursor.show>", ··· 24 24 exports[`text (isCI = false) > caseSensitive: true makes input case-sensitive 1`] = ` 25 25 [ 26 26 "<cursor.hide>", 27 - "│ 28 - ◆ foo 29 - │  a  Option a 30 - │  A  Option A 31 - │  b  Option B 32 - └ 27 + "<dim>│</fg> 28 + <cyan>◆</fg> foo 29 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option a 30 + <cyan>│</fg> <dim><bg:white> A </bg></fg> Option A 31 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 32 + <cyan>└</fg> 33 33 ", 34 34 "<cursor.show>", 35 35 "<cursor.backward count=999><cursor.up count=6>", 36 36 "<cursor.down count=1>", 37 37 "<erase.down>", 38 - "◇ foo 39 - │ Option A", 38 + "<green>◇</fg> foo 39 + <dim>│</fg> <dim>Option A</bold>", 40 40 " 41 41 ", 42 42 ] ··· 45 45 exports[`text (isCI = false) > caseSensitive: true makes options case-sensitive 1`] = ` 46 46 [ 47 47 "<cursor.hide>", 48 - "│ 49 - ◆ foo 50 - │  A  Option A 51 - │  b  Option B 52 - └ 48 + "<dim>│</fg> 49 + <cyan>◆</fg> foo 50 + <cyan>│</fg> <bg:cyan><dim> A </fg></bg> Option A 51 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 52 + <cyan>└</fg> 53 53 ", 54 54 "<cursor.backward count=999><cursor.up count=5>", 55 55 "<cursor.down count=1>", 56 56 "<erase.down>", 57 - "■ foo 58 - │ Option A 59 - │", 57 + "<red>■</fg> foo 58 + <dim>│</fg> <dim>Option A</bold> 59 + <dim>│</fg>", 60 60 " 61 61 ", 62 62 "<cursor.show>", ··· 66 66 exports[`text (isCI = false) > global withGuide: false removes guide 1`] = ` 67 67 [ 68 68 "<cursor.hide>", 69 - "◆ foo 70 -  a  Option A 71 -  b  Option B 69 + "<cyan>◆</fg> foo 70 + <bg:cyan><dim> a </fg></bg> Option A 71 + <dim><bg:white> b </bg></fg> Option B 72 72 73 73 ", 74 74 "<cursor.show>", 75 75 "<cursor.backward count=999><cursor.up count=4>", 76 76 "<erase.down>", 77 - "◇ foo 78 - Option A", 77 + "<green>◇</fg> foo 78 + <dim>Option A</bold>", 79 79 " 80 80 ", 81 81 ] ··· 84 84 exports[`text (isCI = false) > input is case-insensitive by default 1`] = ` 85 85 [ 86 86 "<cursor.hide>", 87 - "│ 88 - ◆ foo 89 - │  a  Option A 90 - │  b  Option B 91 - └ 87 + "<dim>│</fg> 88 + <cyan>◆</fg> foo 89 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 90 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 91 + <cyan>└</fg> 92 92 ", 93 93 "<cursor.show>", 94 94 "<cursor.backward count=999><cursor.up count=5>", 95 95 "<cursor.down count=1>", 96 96 "<erase.down>", 97 - "◇ foo 98 - │ Option A", 97 + "<green>◇</fg> foo 98 + <dim>│</fg> <dim>Option A</bold>", 99 99 " 100 100 ", 101 101 ] ··· 104 104 exports[`text (isCI = false) > long cancelled labels are wrapped correctly 1`] = ` 105 105 [ 106 106 "<cursor.hide>", 107 - "│ 108 - ◆ Select an option: 109 - │  a  This is a somewhat long 110 - │ label This is a somewhat 111 - │ long label This is a 112 - │ somewhat long label This is 113 - │ a somewhat long label This 114 - │ is a somewhat long label 115 - │ This is a somewhat long 116 - │ label This is a somewhat 117 - │ long label This is a 118 - │ somewhat long label This is 119 - │ a somewhat long label This 120 - │ is a somewhat long label 121 - │  b  Short label 122 - └ 107 + "<dim>│</fg> 108 + <cyan>◆</fg> Select an option: 109 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> This is a somewhat long 110 + <cyan>│</fg> label This is a somewhat 111 + <cyan>│</fg> long label This is a 112 + <cyan>│</fg> somewhat long label This is 113 + <cyan>│</fg> a somewhat long label This 114 + <cyan>│</fg> is a somewhat long label 115 + <cyan>│</fg> This is a somewhat long 116 + <cyan>│</fg> label This is a somewhat 117 + <cyan>│</fg> long label This is a 118 + <cyan>│</fg> somewhat long label This is 119 + <cyan>│</fg> a somewhat long label This 120 + <cyan>│</fg> is a somewhat long label 121 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Short label 122 + <cyan>└</fg> 123 123 ", 124 124 "<cursor.backward count=999><cursor.up count=16>", 125 125 "<cursor.down count=1>", 126 126 "<erase.down>", 127 - "■ Select an option: 128 - │ This is a somewhat long  129 - │ label This is a somewhat  130 - │ long label This is a  131 - │ somewhat long label This is 132 - │  a somewhat long label This 133 - │  is a somewhat long label  134 - │ This is a somewhat long  135 - │ label This is a somewhat  136 - │ long label This is a  137 - │ somewhat long label This is 138 - │  a somewhat long label This 139 - │  is a somewhat long label 140 - │", 127 + "<red>■</fg> Select an option: 128 + <dim>│</fg> <dim>This is a somewhat long </bold> 129 + <dim>│</fg> <dim>label This is a somewhat </bold> 130 + <dim>│</fg> <dim>long label This is a </bold> 131 + <dim>│</fg> <dim>somewhat long label This is</bold> 132 + <dim>│</fg> <dim> a somewhat long label This</bold> 133 + <dim>│</fg> <dim> is a somewhat long label </bold> 134 + <dim>│</fg> <dim>This is a somewhat long </bold> 135 + <dim>│</fg> <dim>label This is a somewhat </bold> 136 + <dim>│</fg> <dim>long label This is a </bold> 137 + <dim>│</fg> <dim>somewhat long label This is</bold> 138 + <dim>│</fg> <dim> a somewhat long label This</bold> 139 + <dim>│</fg> <dim> is a somewhat long label</bold> 140 + <dim>│</fg>", 141 141 " 142 142 ", 143 143 "<cursor.show>", ··· 147 147 exports[`text (isCI = false) > long option labels are wrapped correctly 1`] = ` 148 148 [ 149 149 "<cursor.hide>", 150 - "│ 151 - ◆ Select an option: 152 - │  a  This is a somewhat long 153 - │ label This is a somewhat 154 - │ long label This is a 155 - │ somewhat long label This is 156 - │ a somewhat long label This 157 - │ is a somewhat long label 158 - │ This is a somewhat long 159 - │ label This is a somewhat 160 - │ long label This is a 161 - │ somewhat long label This is 162 - │ a somewhat long label This 163 - │ is a somewhat long label 164 - │  b  Short label 165 - └ 150 + "<dim>│</fg> 151 + <cyan>◆</fg> Select an option: 152 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> This is a somewhat long 153 + <cyan>│</fg> label This is a somewhat 154 + <cyan>│</fg> long label This is a 155 + <cyan>│</fg> somewhat long label This is 156 + <cyan>│</fg> a somewhat long label This 157 + <cyan>│</fg> is a somewhat long label 158 + <cyan>│</fg> This is a somewhat long 159 + <cyan>│</fg> label This is a somewhat 160 + <cyan>│</fg> long label This is a 161 + <cyan>│</fg> somewhat long label This is 162 + <cyan>│</fg> a somewhat long label This 163 + <cyan>│</fg> is a somewhat long label 164 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Short label 165 + <cyan>└</fg> 166 166 ", 167 167 "<cursor.show>", 168 168 "<cursor.backward count=999><cursor.up count=16>", 169 169 "<cursor.down count=1>", 170 170 "<erase.down>", 171 - "◇ Select an option: 172 - │ This is a somewhat long  173 - │ label This is a somewhat  174 - │ long label This is a  175 - │ somewhat long label This is 176 - │  a somewhat long label This 177 - │  is a somewhat long label  178 - │ This is a somewhat long  179 - │ label This is a somewhat  180 - │ long label This is a  181 - │ somewhat long label This is 182 - │  a somewhat long label This 183 - │  is a somewhat long label", 171 + "<green>◇</fg> Select an option: 172 + <dim>│</fg> <dim>This is a somewhat long </bold> 173 + <dim>│</fg> <dim>label This is a somewhat </bold> 174 + <dim>│</fg> <dim>long label This is a </bold> 175 + <dim>│</fg> <dim>somewhat long label This is</bold> 176 + <dim>│</fg> <dim> a somewhat long label This</bold> 177 + <dim>│</fg> <dim> is a somewhat long label </bold> 178 + <dim>│</fg> <dim>This is a somewhat long </bold> 179 + <dim>│</fg> <dim>label This is a somewhat </bold> 180 + <dim>│</fg> <dim>long label This is a </bold> 181 + <dim>│</fg> <dim>somewhat long label This is</bold> 182 + <dim>│</fg> <dim> a somewhat long label This</bold> 183 + <dim>│</fg> <dim> is a somewhat long label</bold>", 184 184 " 185 185 ", 186 186 ] ··· 189 189 exports[`text (isCI = false) > long submitted labels are wrapped correctly 1`] = ` 190 190 [ 191 191 "<cursor.hide>", 192 - "│ 193 - ◆ Select an option: 194 - │  a  This is a somewhat long 195 - │ label This is a somewhat 196 - │ long label This is a 197 - │ somewhat long label This is 198 - │ a somewhat long label This 199 - │ is a somewhat long label 200 - │ This is a somewhat long 201 - │ label This is a somewhat 202 - │ long label This is a 203 - │ somewhat long label This is 204 - │ a somewhat long label This 205 - │ is a somewhat long label 206 - │  b  Short label 207 - └ 192 + "<dim>│</fg> 193 + <cyan>◆</fg> Select an option: 194 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> This is a somewhat long 195 + <cyan>│</fg> label This is a somewhat 196 + <cyan>│</fg> long label This is a 197 + <cyan>│</fg> somewhat long label This is 198 + <cyan>│</fg> a somewhat long label This 199 + <cyan>│</fg> is a somewhat long label 200 + <cyan>│</fg> This is a somewhat long 201 + <cyan>│</fg> label This is a somewhat 202 + <cyan>│</fg> long label This is a 203 + <cyan>│</fg> somewhat long label This is 204 + <cyan>│</fg> a somewhat long label This 205 + <cyan>│</fg> is a somewhat long label 206 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Short label 207 + <cyan>└</fg> 208 208 ", 209 209 "<cursor.show>", 210 210 "<cursor.backward count=999><cursor.up count=16>", 211 211 "<cursor.down count=1>", 212 212 "<erase.down>", 213 - "◇ Select an option: 214 - │ This is a somewhat long  215 - │ label This is a somewhat  216 - │ long label This is a  217 - │ somewhat long label This is 218 - │  a somewhat long label This 219 - │  is a somewhat long label  220 - │ This is a somewhat long  221 - │ label This is a somewhat  222 - │ long label This is a  223 - │ somewhat long label This is 224 - │  a somewhat long label This 225 - │  is a somewhat long label", 213 + "<green>◇</fg> Select an option: 214 + <dim>│</fg> <dim>This is a somewhat long </bold> 215 + <dim>│</fg> <dim>label This is a somewhat </bold> 216 + <dim>│</fg> <dim>long label This is a </bold> 217 + <dim>│</fg> <dim>somewhat long label This is</bold> 218 + <dim>│</fg> <dim> a somewhat long label This</bold> 219 + <dim>│</fg> <dim> is a somewhat long label </bold> 220 + <dim>│</fg> <dim>This is a somewhat long </bold> 221 + <dim>│</fg> <dim>label This is a somewhat </bold> 222 + <dim>│</fg> <dim>long label This is a </bold> 223 + <dim>│</fg> <dim>somewhat long label This is</bold> 224 + <dim>│</fg> <dim> a somewhat long label This</bold> 225 + <dim>│</fg> <dim> is a somewhat long label</bold>", 226 226 " 227 227 ", 228 228 ] ··· 231 231 exports[`text (isCI = false) > options are case-insensitive by default 1`] = ` 232 232 [ 233 233 "<cursor.hide>", 234 - "│ 235 - ◆ foo 236 - │  A  Option A 237 - │  b  Option B 238 - └ 234 + "<dim>│</fg> 235 + <cyan>◆</fg> foo 236 + <cyan>│</fg> <bg:cyan><dim> A </fg></bg> Option A 237 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 238 + <cyan>└</fg> 239 239 ", 240 240 "<cursor.show>", 241 241 "<cursor.backward count=999><cursor.up count=5>", 242 242 "<cursor.down count=1>", 243 243 "<erase.down>", 244 - "◇ foo 245 - │ Option A", 244 + "<green>◇</fg> foo 245 + <dim>│</fg> <dim>Option A</bold>", 246 246 " 247 247 ", 248 248 ] ··· 251 251 exports[`text (isCI = false) > renders message with options 1`] = ` 252 252 [ 253 253 "<cursor.hide>", 254 - "│ 255 - ◆ foo 256 - │  a  Option A 257 - │  b  Option B 258 - └ 254 + "<dim>│</fg> 255 + <cyan>◆</fg> foo 256 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 257 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 258 + <cyan>└</fg> 259 259 ", 260 260 "<cursor.backward count=999><cursor.up count=5>", 261 261 "<cursor.down count=1>", 262 262 "<erase.down>", 263 - "◇ foo 264 - │ Option A", 263 + "<green>◇</fg> foo 264 + <dim>│</fg> <dim>Option A</bold>", 265 265 " 266 266 ", 267 267 "<cursor.show>", ··· 271 271 exports[`text (isCI = false) > selects option by keypress 1`] = ` 272 272 [ 273 273 "<cursor.hide>", 274 - "│ 275 - ◆ foo 276 - │  a  Option A 277 - │  b  Option B 278 - └ 274 + "<dim>│</fg> 275 + <cyan>◆</fg> foo 276 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 277 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 278 + <cyan>└</fg> 279 279 ", 280 280 "<cursor.show>", 281 281 "<cursor.backward count=999><cursor.up count=5>", 282 282 "<cursor.down count=1>", 283 283 "<erase.down>", 284 - "◇ foo 285 - │ Option B", 284 + "<green>◇</fg> foo 285 + <dim>│</fg> <dim>Option B</bold>", 286 286 " 287 287 ", 288 288 ] ··· 291 291 exports[`text (isCI = false) > withGuide: false removes guide 1`] = ` 292 292 [ 293 293 "<cursor.hide>", 294 - "◆ foo 295 -  a  Option A 296 -  b  Option B 294 + "<cyan>◆</fg> foo 295 + <bg:cyan><dim> a </fg></bg> Option A 296 + <dim><bg:white> b </bg></fg> Option B 297 297 298 298 ", 299 299 "<cursor.show>", 300 300 "<cursor.backward count=999><cursor.up count=4>", 301 301 "<erase.down>", 302 - "◇ foo 303 - Option A", 302 + "<green>◇</fg> foo 303 + <dim>Option A</bold>", 304 304 " 305 305 ", 306 306 ] ··· 309 309 exports[`text (isCI = true) > can cancel by pressing escape 1`] = ` 310 310 [ 311 311 "<cursor.hide>", 312 - "│ 313 - ◆ foo 314 - │  a  Option A 315 - │  b  Option B 316 - └ 312 + "<dim>│</fg> 313 + <cyan>◆</fg> foo 314 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 315 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 316 + <cyan>└</fg> 317 317 ", 318 318 "<cursor.backward count=999><cursor.up count=5>", 319 319 "<cursor.down count=1>", 320 320 "<erase.down>", 321 - "■ foo 322 - │ Option A 323 - │", 321 + "<red>■</fg> foo 322 + <dim>│</fg> <dim>Option A</bold> 323 + <dim>│</fg>", 324 324 " 325 325 ", 326 326 "<cursor.show>", ··· 330 330 exports[`text (isCI = true) > caseSensitive: true makes input case-sensitive 1`] = ` 331 331 [ 332 332 "<cursor.hide>", 333 - "│ 334 - ◆ foo 335 - │  a  Option a 336 - │  A  Option A 337 - │  b  Option B 338 - └ 333 + "<dim>│</fg> 334 + <cyan>◆</fg> foo 335 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option a 336 + <cyan>│</fg> <dim><bg:white> A </bg></fg> Option A 337 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 338 + <cyan>└</fg> 339 339 ", 340 340 "<cursor.show>", 341 341 "<cursor.backward count=999><cursor.up count=6>", 342 342 "<cursor.down count=1>", 343 343 "<erase.down>", 344 - "◇ foo 345 - │ Option A", 344 + "<green>◇</fg> foo 345 + <dim>│</fg> <dim>Option A</bold>", 346 346 " 347 347 ", 348 348 ] ··· 351 351 exports[`text (isCI = true) > caseSensitive: true makes options case-sensitive 1`] = ` 352 352 [ 353 353 "<cursor.hide>", 354 - "│ 355 - ◆ foo 356 - │  A  Option A 357 - │  b  Option B 358 - └ 354 + "<dim>│</fg> 355 + <cyan>◆</fg> foo 356 + <cyan>│</fg> <bg:cyan><dim> A </fg></bg> Option A 357 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 358 + <cyan>└</fg> 359 359 ", 360 360 "<cursor.backward count=999><cursor.up count=5>", 361 361 "<cursor.down count=1>", 362 362 "<erase.down>", 363 - "■ foo 364 - │ Option A 365 - │", 363 + "<red>■</fg> foo 364 + <dim>│</fg> <dim>Option A</bold> 365 + <dim>│</fg>", 366 366 " 367 367 ", 368 368 "<cursor.show>", ··· 372 372 exports[`text (isCI = true) > global withGuide: false removes guide 1`] = ` 373 373 [ 374 374 "<cursor.hide>", 375 - "◆ foo 376 -  a  Option A 377 -  b  Option B 375 + "<cyan>◆</fg> foo 376 + <bg:cyan><dim> a </fg></bg> Option A 377 + <dim><bg:white> b </bg></fg> Option B 378 378 379 379 ", 380 380 "<cursor.show>", 381 381 "<cursor.backward count=999><cursor.up count=4>", 382 382 "<erase.down>", 383 - "◇ foo 384 - Option A", 383 + "<green>◇</fg> foo 384 + <dim>Option A</bold>", 385 385 " 386 386 ", 387 387 ] ··· 390 390 exports[`text (isCI = true) > input is case-insensitive by default 1`] = ` 391 391 [ 392 392 "<cursor.hide>", 393 - "│ 394 - ◆ foo 395 - │  a  Option A 396 - │  b  Option B 397 - └ 393 + "<dim>│</fg> 394 + <cyan>◆</fg> foo 395 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 396 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 397 + <cyan>└</fg> 398 398 ", 399 399 "<cursor.show>", 400 400 "<cursor.backward count=999><cursor.up count=5>", 401 401 "<cursor.down count=1>", 402 402 "<erase.down>", 403 - "◇ foo 404 - │ Option A", 403 + "<green>◇</fg> foo 404 + <dim>│</fg> <dim>Option A</bold>", 405 405 " 406 406 ", 407 407 ] ··· 410 410 exports[`text (isCI = true) > long cancelled labels are wrapped correctly 1`] = ` 411 411 [ 412 412 "<cursor.hide>", 413 - "│ 414 - ◆ Select an option: 415 - │  a  This is a somewhat long 416 - │ label This is a somewhat 417 - │ long label This is a 418 - │ somewhat long label This is 419 - │ a somewhat long label This 420 - │ is a somewhat long label 421 - │ This is a somewhat long 422 - │ label This is a somewhat 423 - │ long label This is a 424 - │ somewhat long label This is 425 - │ a somewhat long label This 426 - │ is a somewhat long label 427 - │  b  Short label 428 - └ 413 + "<dim>│</fg> 414 + <cyan>◆</fg> Select an option: 415 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> This is a somewhat long 416 + <cyan>│</fg> label This is a somewhat 417 + <cyan>│</fg> long label This is a 418 + <cyan>│</fg> somewhat long label This is 419 + <cyan>│</fg> a somewhat long label This 420 + <cyan>│</fg> is a somewhat long label 421 + <cyan>│</fg> This is a somewhat long 422 + <cyan>│</fg> label This is a somewhat 423 + <cyan>│</fg> long label This is a 424 + <cyan>│</fg> somewhat long label This is 425 + <cyan>│</fg> a somewhat long label This 426 + <cyan>│</fg> is a somewhat long label 427 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Short label 428 + <cyan>└</fg> 429 429 ", 430 430 "<cursor.backward count=999><cursor.up count=16>", 431 431 "<cursor.down count=1>", 432 432 "<erase.down>", 433 - "■ Select an option: 434 - │ This is a somewhat long  435 - │ label This is a somewhat  436 - │ long label This is a  437 - │ somewhat long label This is 438 - │  a somewhat long label This 439 - │  is a somewhat long label  440 - │ This is a somewhat long  441 - │ label This is a somewhat  442 - │ long label This is a  443 - │ somewhat long label This is 444 - │  a somewhat long label This 445 - │  is a somewhat long label 446 - │", 433 + "<red>■</fg> Select an option: 434 + <dim>│</fg> <dim>This is a somewhat long </bold> 435 + <dim>│</fg> <dim>label This is a somewhat </bold> 436 + <dim>│</fg> <dim>long label This is a </bold> 437 + <dim>│</fg> <dim>somewhat long label This is</bold> 438 + <dim>│</fg> <dim> a somewhat long label This</bold> 439 + <dim>│</fg> <dim> is a somewhat long label </bold> 440 + <dim>│</fg> <dim>This is a somewhat long </bold> 441 + <dim>│</fg> <dim>label This is a somewhat </bold> 442 + <dim>│</fg> <dim>long label This is a </bold> 443 + <dim>│</fg> <dim>somewhat long label This is</bold> 444 + <dim>│</fg> <dim> a somewhat long label This</bold> 445 + <dim>│</fg> <dim> is a somewhat long label</bold> 446 + <dim>│</fg>", 447 447 " 448 448 ", 449 449 "<cursor.show>", ··· 453 453 exports[`text (isCI = true) > long option labels are wrapped correctly 1`] = ` 454 454 [ 455 455 "<cursor.hide>", 456 - "│ 457 - ◆ Select an option: 458 - │  a  This is a somewhat long 459 - │ label This is a somewhat 460 - │ long label This is a 461 - │ somewhat long label This is 462 - │ a somewhat long label This 463 - │ is a somewhat long label 464 - │ This is a somewhat long 465 - │ label This is a somewhat 466 - │ long label This is a 467 - │ somewhat long label This is 468 - │ a somewhat long label This 469 - │ is a somewhat long label 470 - │  b  Short label 471 - └ 456 + "<dim>│</fg> 457 + <cyan>◆</fg> Select an option: 458 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> This is a somewhat long 459 + <cyan>│</fg> label This is a somewhat 460 + <cyan>│</fg> long label This is a 461 + <cyan>│</fg> somewhat long label This is 462 + <cyan>│</fg> a somewhat long label This 463 + <cyan>│</fg> is a somewhat long label 464 + <cyan>│</fg> This is a somewhat long 465 + <cyan>│</fg> label This is a somewhat 466 + <cyan>│</fg> long label This is a 467 + <cyan>│</fg> somewhat long label This is 468 + <cyan>│</fg> a somewhat long label This 469 + <cyan>│</fg> is a somewhat long label 470 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Short label 471 + <cyan>└</fg> 472 472 ", 473 473 "<cursor.show>", 474 474 "<cursor.backward count=999><cursor.up count=16>", 475 475 "<cursor.down count=1>", 476 476 "<erase.down>", 477 - "◇ Select an option: 478 - │ This is a somewhat long  479 - │ label This is a somewhat  480 - │ long label This is a  481 - │ somewhat long label This is 482 - │  a somewhat long label This 483 - │  is a somewhat long label  484 - │ This is a somewhat long  485 - │ label This is a somewhat  486 - │ long label This is a  487 - │ somewhat long label This is 488 - │  a somewhat long label This 489 - │  is a somewhat long label", 477 + "<green>◇</fg> Select an option: 478 + <dim>│</fg> <dim>This is a somewhat long </bold> 479 + <dim>│</fg> <dim>label This is a somewhat </bold> 480 + <dim>│</fg> <dim>long label This is a </bold> 481 + <dim>│</fg> <dim>somewhat long label This is</bold> 482 + <dim>│</fg> <dim> a somewhat long label This</bold> 483 + <dim>│</fg> <dim> is a somewhat long label </bold> 484 + <dim>│</fg> <dim>This is a somewhat long </bold> 485 + <dim>│</fg> <dim>label This is a somewhat </bold> 486 + <dim>│</fg> <dim>long label This is a </bold> 487 + <dim>│</fg> <dim>somewhat long label This is</bold> 488 + <dim>│</fg> <dim> a somewhat long label This</bold> 489 + <dim>│</fg> <dim> is a somewhat long label</bold>", 490 490 " 491 491 ", 492 492 ] ··· 495 495 exports[`text (isCI = true) > long submitted labels are wrapped correctly 1`] = ` 496 496 [ 497 497 "<cursor.hide>", 498 - "│ 499 - ◆ Select an option: 500 - │  a  This is a somewhat long 501 - │ label This is a somewhat 502 - │ long label This is a 503 - │ somewhat long label This is 504 - │ a somewhat long label This 505 - │ is a somewhat long label 506 - │ This is a somewhat long 507 - │ label This is a somewhat 508 - │ long label This is a 509 - │ somewhat long label This is 510 - │ a somewhat long label This 511 - │ is a somewhat long label 512 - │  b  Short label 513 - └ 498 + "<dim>│</fg> 499 + <cyan>◆</fg> Select an option: 500 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> This is a somewhat long 501 + <cyan>│</fg> label This is a somewhat 502 + <cyan>│</fg> long label This is a 503 + <cyan>│</fg> somewhat long label This is 504 + <cyan>│</fg> a somewhat long label This 505 + <cyan>│</fg> is a somewhat long label 506 + <cyan>│</fg> This is a somewhat long 507 + <cyan>│</fg> label This is a somewhat 508 + <cyan>│</fg> long label This is a 509 + <cyan>│</fg> somewhat long label This is 510 + <cyan>│</fg> a somewhat long label This 511 + <cyan>│</fg> is a somewhat long label 512 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Short label 513 + <cyan>└</fg> 514 514 ", 515 515 "<cursor.show>", 516 516 "<cursor.backward count=999><cursor.up count=16>", 517 517 "<cursor.down count=1>", 518 518 "<erase.down>", 519 - "◇ Select an option: 520 - │ This is a somewhat long  521 - │ label This is a somewhat  522 - │ long label This is a  523 - │ somewhat long label This is 524 - │  a somewhat long label This 525 - │  is a somewhat long label  526 - │ This is a somewhat long  527 - │ label This is a somewhat  528 - │ long label This is a  529 - │ somewhat long label This is 530 - │  a somewhat long label This 531 - │  is a somewhat long label", 519 + "<green>◇</fg> Select an option: 520 + <dim>│</fg> <dim>This is a somewhat long </bold> 521 + <dim>│</fg> <dim>label This is a somewhat </bold> 522 + <dim>│</fg> <dim>long label This is a </bold> 523 + <dim>│</fg> <dim>somewhat long label This is</bold> 524 + <dim>│</fg> <dim> a somewhat long label This</bold> 525 + <dim>│</fg> <dim> is a somewhat long label </bold> 526 + <dim>│</fg> <dim>This is a somewhat long </bold> 527 + <dim>│</fg> <dim>label This is a somewhat </bold> 528 + <dim>│</fg> <dim>long label This is a </bold> 529 + <dim>│</fg> <dim>somewhat long label This is</bold> 530 + <dim>│</fg> <dim> a somewhat long label This</bold> 531 + <dim>│</fg> <dim> is a somewhat long label</bold>", 532 532 " 533 533 ", 534 534 ] ··· 537 537 exports[`text (isCI = true) > options are case-insensitive by default 1`] = ` 538 538 [ 539 539 "<cursor.hide>", 540 - "│ 541 - ◆ foo 542 - │  A  Option A 543 - │  b  Option B 544 - └ 540 + "<dim>│</fg> 541 + <cyan>◆</fg> foo 542 + <cyan>│</fg> <bg:cyan><dim> A </fg></bg> Option A 543 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 544 + <cyan>└</fg> 545 545 ", 546 546 "<cursor.show>", 547 547 "<cursor.backward count=999><cursor.up count=5>", 548 548 "<cursor.down count=1>", 549 549 "<erase.down>", 550 - "◇ foo 551 - │ Option A", 550 + "<green>◇</fg> foo 551 + <dim>│</fg> <dim>Option A</bold>", 552 552 " 553 553 ", 554 554 ] ··· 557 557 exports[`text (isCI = true) > renders message with options 1`] = ` 558 558 [ 559 559 "<cursor.hide>", 560 - "│ 561 - ◆ foo 562 - │  a  Option A 563 - │  b  Option B 564 - └ 560 + "<dim>│</fg> 561 + <cyan>◆</fg> foo 562 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 563 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 564 + <cyan>└</fg> 565 565 ", 566 566 "<cursor.backward count=999><cursor.up count=5>", 567 567 "<cursor.down count=1>", 568 568 "<erase.down>", 569 - "◇ foo 570 - │ Option A", 569 + "<green>◇</fg> foo 570 + <dim>│</fg> <dim>Option A</bold>", 571 571 " 572 572 ", 573 573 "<cursor.show>", ··· 577 577 exports[`text (isCI = true) > selects option by keypress 1`] = ` 578 578 [ 579 579 "<cursor.hide>", 580 - "│ 581 - ◆ foo 582 - │  a  Option A 583 - │  b  Option B 584 - └ 580 + "<dim>│</fg> 581 + <cyan>◆</fg> foo 582 + <cyan>│</fg> <bg:cyan><dim> a </fg></bg> Option A 583 + <cyan>│</fg> <dim><bg:white> b </bg></fg> Option B 584 + <cyan>└</fg> 585 585 ", 586 586 "<cursor.show>", 587 587 "<cursor.backward count=999><cursor.up count=5>", 588 588 "<cursor.down count=1>", 589 589 "<erase.down>", 590 - "◇ foo 591 - │ Option B", 590 + "<green>◇</fg> foo 591 + <dim>│</fg> <dim>Option B</bold>", 592 592 " 593 593 ", 594 594 ] ··· 597 597 exports[`text (isCI = true) > withGuide: false removes guide 1`] = ` 598 598 [ 599 599 "<cursor.hide>", 600 - "◆ foo 601 -  a  Option A 602 -  b  Option B 600 + "<cyan>◆</fg> foo 601 + <bg:cyan><dim> a </fg></bg> Option A 602 + <dim><bg:white> b </bg></fg> Option B 603 603 604 604 ", 605 605 "<cursor.show>", 606 606 "<cursor.backward count=999><cursor.up count=4>", 607 607 "<erase.down>", 608 - "◇ foo 609 - Option A", 608 + "<green>◇</fg> foo 609 + <dim>Option A</bold>", 610 610 " 611 611 ", 612 612 ]
+430 -430
packages/prompts/src/__snapshots__/select.test.ts.snap
··· 3 3 exports[`select (isCI = false) > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ foo 8 - │ ● opt0 9 - │ ○ opt1 10 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> foo 8 + <cyan>│</fg> <green>●</fg> opt0 9 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 10 + <cyan>└</fg> 11 11 ", 12 12 " 13 13 ", ··· 18 18 exports[`select (isCI = false) > can cancel 1`] = ` 19 19 [ 20 20 "<cursor.hide>", 21 - "│ 22 - ◆ foo 23 - │ ● opt0 24 - │ ○ opt1 25 - └ 21 + "<dim>│</fg> 22 + <cyan>◆</fg> foo 23 + <cyan>│</fg> <green>●</fg> opt0 24 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 25 + <cyan>└</fg> 26 26 ", 27 27 "<cursor.backward count=999><cursor.up count=5>", 28 28 "<cursor.down count=1>", 29 29 "<erase.down>", 30 - "■ foo 31 - │ opt0 32 - │", 30 + "<red>■</fg> foo 31 + <dim>│</fg> <dim>opt0</bold> 32 + <dim>│</fg>", 33 33 " 34 34 ", 35 35 "<cursor.show>", ··· 39 39 exports[`select (isCI = false) > correctly limits options when message wraps to multiple lines 1`] = ` 40 40 [ 41 41 "<cursor.hide>", 42 - "│ 43 - ◆ This is a very 44 - │ long message that 45 - │ will wrap to 46 - │ multiple lines 47 - │ ● Option 0 48 - │ ○ Option 1 49 - │ ○ Option 2 50 - │ ... 51 - └ 42 + "<dim>│</fg> 43 + <cyan>◆</fg> This is a very 44 + <cyan>│</fg> long message that 45 + <cyan>│</fg> will wrap to 46 + <cyan>│</fg> multiple lines 47 + <cyan>│</fg> <green>●</fg> Option 0 48 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 49 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 50 + <cyan>│</fg> <dim>...</bold> 51 + <cyan>└</fg> 52 52 ", 53 53 "<cursor.backward count=999><cursor.up count=10>", 54 54 "<cursor.down count=5>", 55 55 "<erase.down>", 56 - "│ ○ Option 0 57 - │ ● Option 1 58 - │ ○ Option 2 59 - │ ... 60 - └ 56 + "<cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 57 + <cyan>│</fg> <green>●</fg> Option 1 58 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 59 + <cyan>│</fg> <dim>...</bold> 60 + <cyan>└</fg> 61 61 ", 62 62 "<cursor.backward count=999><cursor.up count=10>", 63 63 "<cursor.down count=6>", 64 64 "<erase.down>", 65 - "│ ○ Option 1 66 - │ ● Option 2 67 - │ ... 68 - └ 65 + "<cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 66 + <cyan>│</fg> <green>●</fg> Option 2 67 + <cyan>│</fg> <dim>...</bold> 68 + <cyan>└</fg> 69 69 ", 70 70 "<cursor.backward count=999><cursor.up count=10>", 71 71 "<cursor.down count=5>", 72 72 "<erase.down>", 73 - "│ ... 74 - │ ● Option 3 75 - │ ○ Option 4 76 - │ ... 77 - └ 73 + "<cyan>│</fg> <dim>...</bold> 74 + <cyan>│</fg> <green>●</fg> Option 3 75 + <cyan>│</fg> <dim>○</bold> <dim>Option 4</bold> 76 + <cyan>│</fg> <dim>...</bold> 77 + <cyan>└</fg> 78 78 ", 79 79 "<cursor.backward count=999><cursor.up count=10>", 80 80 "<cursor.down count=6>", 81 81 "<erase.down>", 82 - "│ ● Option 4 83 - │ ○ Option 5 84 - │ ... 85 - └ 82 + "<cyan>│</fg> <green>●</fg> Option 4 83 + <cyan>│</fg> <dim>○</bold> <dim>Option 5</bold> 84 + <cyan>│</fg> <dim>...</bold> 85 + <cyan>└</fg> 86 86 ", 87 87 "<cursor.backward count=999><cursor.up count=10>", 88 88 "<cursor.down count=1>", 89 89 "<erase.down>", 90 - "◇ This is a very 91 - │ long message that 92 - │ will wrap to 93 - │ multiple lines 94 - │ Option 4", 90 + "<green>◇</fg> This is a very 91 + <green>│</fg> long message that 92 + <green>│</fg> will wrap to 93 + <green>│</fg> multiple lines 94 + <dim>│</fg> <dim>Option 4</bold>", 95 95 " 96 96 ", 97 97 "<cursor.show>", ··· 101 101 exports[`select (isCI = false) > correctly limits options with explicit multiline message 1`] = ` 102 102 [ 103 103 "<cursor.hide>", 104 - "│ 105 - ◆ Choose an option: 106 - │ Line 2 of the message 107 - │ Line 3 of the message 108 - │ ● Option 0 109 - │ ○ Option 1 110 - │ ○ Option 2 111 - │ ○ Option 3 112 - │ ... 113 - └ 104 + "<dim>│</fg> 105 + <cyan>◆</fg> Choose an option: 106 + <cyan>│</fg> Line 2 of the message 107 + <cyan>│</fg> Line 3 of the message 108 + <cyan>│</fg> <green>●</fg> Option 0 109 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 110 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 111 + <cyan>│</fg> <dim>○</bold> <dim>Option 3</bold> 112 + <cyan>│</fg> <dim>...</bold> 113 + <cyan>└</fg> 114 114 ", 115 115 "<cursor.backward count=999><cursor.up count=10>", 116 116 "<cursor.down count=4>", 117 117 "<erase.down>", 118 - "│ ○ Option 0 119 - │ ● Option 1 120 - │ ○ Option 2 121 - │ ○ Option 3 122 - │ ... 123 - └ 118 + "<cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 119 + <cyan>│</fg> <green>●</fg> Option 1 120 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 121 + <cyan>│</fg> <dim>○</bold> <dim>Option 3</bold> 122 + <cyan>│</fg> <dim>...</bold> 123 + <cyan>└</fg> 124 124 ", 125 125 "<cursor.backward count=999><cursor.up count=10>", 126 126 "<cursor.down count=5>", 127 127 "<erase.down>", 128 - "│ ○ Option 1 129 - │ ● Option 2 130 - │ ○ Option 3 131 - │ ... 132 - └ 128 + "<cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 129 + <cyan>│</fg> <green>●</fg> Option 2 130 + <cyan>│</fg> <dim>○</bold> <dim>Option 3</bold> 131 + <cyan>│</fg> <dim>...</bold> 132 + <cyan>└</fg> 133 133 ", 134 134 "<cursor.backward count=999><cursor.up count=10>", 135 135 "<cursor.down count=4>", 136 136 "<erase.down>", 137 - "│ ... 138 - │ ○ Option 2 139 - │ ● Option 3 140 - │ ○ Option 4 141 - │ ... 142 - └ 137 + "<cyan>│</fg> <dim>...</bold> 138 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 139 + <cyan>│</fg> <green>●</fg> Option 3 140 + <cyan>│</fg> <dim>○</bold> <dim>Option 4</bold> 141 + <cyan>│</fg> <dim>...</bold> 142 + <cyan>└</fg> 143 143 ", 144 144 "<cursor.backward count=999><cursor.up count=10>", 145 145 "<cursor.down count=1>", 146 146 "<erase.down>", 147 - "◇ Choose an option: 148 - │ Line 2 of the message 149 - │ Line 3 of the message 150 - │ Option 3", 147 + "<green>◇</fg> Choose an option: 148 + <green>│</fg> Line 2 of the message 149 + <green>│</fg> Line 3 of the message 150 + <dim>│</fg> <dim>Option 3</bold>", 151 151 " 152 152 ", 153 153 "<cursor.show>", ··· 157 157 exports[`select (isCI = false) > down arrow selects next option 1`] = ` 158 158 [ 159 159 "<cursor.hide>", 160 - "│ 161 - ◆ foo 162 - │ ● opt0 163 - │ ○ opt1 164 - └ 160 + "<dim>│</fg> 161 + <cyan>◆</fg> foo 162 + <cyan>│</fg> <green>●</fg> opt0 163 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 164 + <cyan>└</fg> 165 165 ", 166 166 "<cursor.backward count=999><cursor.up count=5>", 167 167 "<cursor.down count=2>", 168 168 "<erase.down>", 169 - "│ ○ opt0 170 - │ ● opt1 171 - └ 169 + "<cyan>│</fg> <dim>○</bold> <dim>opt0</bold> 170 + <cyan>│</fg> <green>●</fg> opt1 171 + <cyan>└</fg> 172 172 ", 173 173 "<cursor.backward count=999><cursor.up count=5>", 174 174 "<cursor.down count=1>", 175 175 "<erase.down>", 176 - "◇ foo 177 - │ opt1", 176 + "<green>◇</fg> foo 177 + <dim>│</fg> <dim>opt1</bold>", 178 178 " 179 179 ", 180 180 "<cursor.show>", ··· 184 184 exports[`select (isCI = false) > global withGuide: false removes guide 1`] = ` 185 185 [ 186 186 "<cursor.hide>", 187 - "◆ foo 188 - ● opt0 189 - ○ opt1 187 + "<cyan>◆</fg> foo 188 + <green>●</fg> opt0 189 + <dim>○</bold> <dim>opt1</bold> 190 190 191 191 ", 192 192 "<cursor.backward count=999><cursor.up count=4>", 193 193 "<erase.down>", 194 - "◇ foo 195 - opt0", 194 + "<green>◇</fg> foo 195 + <dim>opt0</bold>", 196 196 " 197 197 ", 198 198 "<cursor.show>", ··· 202 202 exports[`select (isCI = false) > handles mixed size re-renders 1`] = ` 203 203 [ 204 204 "<cursor.hide>", 205 - "│ 206 - ◆ Whatever 207 - │ ● Long Option 208 - │ Long Option 209 - │ Long Option 210 - │ Long Option 211 - │ Long Option 212 - │ Long Option 213 - │ Long Option 214 - │ Long Option 215 - │ ... 216 - └ 205 + "<dim>│</fg> 206 + <cyan>◆</fg> Whatever 207 + <cyan>│</fg> <green>●</fg> Long Option 208 + <cyan>│</fg> Long Option 209 + <cyan>│</fg> Long Option 210 + <cyan>│</fg> Long Option 211 + <cyan>│</fg> Long Option 212 + <cyan>│</fg> Long Option 213 + <cyan>│</fg> Long Option 214 + <cyan>│</fg> Long Option 215 + <cyan>│</fg> <dim>...</bold> 216 + <cyan>└</fg> 217 217 ", 218 218 "<cursor.backward count=999><cursor.up count=12>", 219 219 "<erase.down>", 220 - "│ 221 - ◆ Whatever 222 - │ ... 223 - │ ○ Option 0 224 - │ ○ Option 1 225 - │ ○ Option 2 226 - │ ● Option 3 227 - └ 220 + "<dim>│</fg> 221 + <cyan>◆</fg> Whatever 222 + <cyan>│</fg> <dim>...</bold> 223 + <cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 224 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 225 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 226 + <cyan>│</fg> <green>●</fg> Option 3 227 + <cyan>└</fg> 228 228 ", 229 229 "<cursor.backward count=999><cursor.up count=8>", 230 230 "<cursor.down count=1>", 231 231 "<erase.down>", 232 - "◇ Whatever 233 - │ Option 3", 232 + "<green>◇</fg> Whatever 233 + <dim>│</fg> <dim>Option 3</bold>", 234 234 " 235 235 ", 236 236 "<cursor.show>", ··· 240 240 exports[`select (isCI = false) > renders disabled options 1`] = ` 241 241 [ 242 242 "<cursor.hide>", 243 - "│ 244 - ◆ foo 245 - │ ○ Option 0 246 - │ ● Option 1 247 - │ ○ Option 2 (Hint 2) 248 - └ 243 + "<dim>│</fg> 244 + <cyan>◆</fg> foo 245 + <cyan>│</fg> <dim>○</fg> <dim>Option 0</fg> 246 + <cyan>│</fg> <green>●</fg> Option 1 247 + <cyan>│</fg> <dim>○</fg> <dim>Option 2</fg> <dim>(Hint 2)</bold> 248 + <cyan>└</fg> 249 249 ", 250 250 "<cursor.backward count=999><cursor.up count=6>", 251 251 "<cursor.down count=1>", 252 252 "<erase.down>", 253 - "◇ foo 254 - │ Option 1", 253 + "<green>◇</fg> foo 254 + <dim>│</fg> <dim>Option 1</bold>", 255 255 " 256 256 ", 257 257 "<cursor.show>", ··· 261 261 exports[`select (isCI = false) > renders multi-line option labels 1`] = ` 262 262 [ 263 263 "<cursor.hide>", 264 - "│ 265 - ◆ foo 266 - │ ● Option 0 267 - │ with multiple lines 268 - │ ○ Option 1 269 - └ 264 + "<dim>│</fg> 265 + <cyan>◆</fg> foo 266 + <cyan>│</fg> <green>●</fg> Option 0 267 + <cyan>│</fg> with multiple lines 268 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 269 + <cyan>└</fg> 270 270 ", 271 271 "<cursor.backward count=999><cursor.up count=6>", 272 272 "<cursor.down count=2>", 273 273 "<erase.down>", 274 - "│ ○ Option 0 275 - │ with multiple lines 276 - │ ● Option 1 277 - └ 274 + "<cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 275 + <cyan>│</fg> <dim>with multiple lines</bold> 276 + <cyan>│</fg> <green>●</fg> Option 1 277 + <cyan>└</fg> 278 278 ", 279 279 "<cursor.backward count=999><cursor.up count=6>", 280 280 "<cursor.down count=1>", 281 281 "<erase.down>", 282 - "◇ foo 283 - │ Option 1", 282 + "<green>◇</fg> foo 283 + <dim>│</fg> <dim>Option 1</bold>", 284 284 " 285 285 ", 286 286 "<cursor.show>", ··· 290 290 exports[`select (isCI = false) > renders option hints 1`] = ` 291 291 [ 292 292 "<cursor.hide>", 293 - "│ 294 - ◆ foo 295 - │ ● opt0 (Hint 0) 296 - │ ○ opt1 297 - └ 293 + "<dim>│</fg> 294 + <cyan>◆</fg> foo 295 + <cyan>│</fg> <green>●</fg> opt0 <dim>(Hint 0)</bold> 296 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 297 + <cyan>└</fg> 298 298 ", 299 299 "<cursor.backward count=999><cursor.up count=5>", 300 300 "<cursor.down count=1>", 301 301 "<erase.down>", 302 - "◇ foo 303 - │ opt0", 302 + "<green>◇</fg> foo 303 + <dim>│</fg> <dim>opt0</bold>", 304 304 " 305 305 ", 306 306 "<cursor.show>", ··· 310 310 exports[`select (isCI = false) > renders option labels 1`] = ` 311 311 [ 312 312 "<cursor.hide>", 313 - "│ 314 - ◆ foo 315 - │ ● Option 0 316 - │ ○ Option 1 317 - └ 313 + "<dim>│</fg> 314 + <cyan>◆</fg> foo 315 + <cyan>│</fg> <green>●</fg> Option 0 316 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 317 + <cyan>└</fg> 318 318 ", 319 319 "<cursor.backward count=999><cursor.up count=5>", 320 320 "<cursor.down count=1>", 321 321 "<erase.down>", 322 - "◇ foo 323 - │ Option 0", 322 + "<green>◇</fg> foo 323 + <dim>│</fg> <dim>Option 0</bold>", 324 324 " 325 325 ", 326 326 "<cursor.show>", ··· 330 330 exports[`select (isCI = false) > renders options and message 1`] = ` 331 331 [ 332 332 "<cursor.hide>", 333 - "│ 334 - ◆ foo 335 - │ ● opt0 336 - │ ○ opt1 337 - └ 333 + "<dim>│</fg> 334 + <cyan>◆</fg> foo 335 + <cyan>│</fg> <green>●</fg> opt0 336 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 337 + <cyan>└</fg> 338 338 ", 339 339 "<cursor.backward count=999><cursor.up count=5>", 340 340 "<cursor.down count=1>", 341 341 "<erase.down>", 342 - "◇ foo 343 - │ opt0", 342 + "<green>◇</fg> foo 343 + <dim>│</fg> <dim>opt0</bold>", 344 344 " 345 345 ", 346 346 "<cursor.show>", ··· 350 350 exports[`select (isCI = false) > up arrow selects previous option 1`] = ` 351 351 [ 352 352 "<cursor.hide>", 353 - "│ 354 - ◆ foo 355 - │ ● opt0 356 - │ ○ opt1 357 - └ 353 + "<dim>│</fg> 354 + <cyan>◆</fg> foo 355 + <cyan>│</fg> <green>●</fg> opt0 356 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 357 + <cyan>└</fg> 358 358 ", 359 359 "<cursor.backward count=999><cursor.up count=5>", 360 360 "<cursor.down count=2>", 361 361 "<erase.down>", 362 - "│ ○ opt0 363 - │ ● opt1 364 - └ 362 + "<cyan>│</fg> <dim>○</bold> <dim>opt0</bold> 363 + <cyan>│</fg> <green>●</fg> opt1 364 + <cyan>└</fg> 365 365 ", 366 366 "<cursor.backward count=999><cursor.up count=5>", 367 367 "<cursor.down count=2>", 368 368 "<erase.down>", 369 - "│ ● opt0 370 - │ ○ opt1 371 - └ 369 + "<cyan>│</fg> <green>●</fg> opt0 370 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 371 + <cyan>└</fg> 372 372 ", 373 373 "<cursor.backward count=999><cursor.up count=5>", 374 374 "<cursor.down count=1>", 375 375 "<erase.down>", 376 - "◇ foo 377 - │ opt0", 376 + "<green>◇</fg> foo 377 + <dim>│</fg> <dim>opt0</bold>", 378 378 " 379 379 ", 380 380 "<cursor.show>", ··· 384 384 exports[`select (isCI = false) > withGuide: false removes guide 1`] = ` 385 385 [ 386 386 "<cursor.hide>", 387 - "◆ foo 388 - ● opt0 389 - ○ opt1 387 + "<cyan>◆</fg> foo 388 + <green>●</fg> opt0 389 + <dim>○</bold> <dim>opt1</bold> 390 390 391 391 ", 392 392 "<cursor.backward count=999><cursor.up count=4>", 393 393 "<erase.down>", 394 - "◇ foo 395 - opt0", 394 + "<green>◇</fg> foo 395 + <dim>opt0</bold>", 396 396 " 397 397 ", 398 398 "<cursor.show>", ··· 402 402 exports[`select (isCI = false) > wraps long cancelled message 1`] = ` 403 403 [ 404 404 "<cursor.hide>", 405 - "│ 406 - ◆ foo 407 - │ ● foo foo foo foo foo foo 408 - │ foo foo foo foo foo foo foo 409 - │ foo foo foo foo foo foo 410 - │ foo foo foo foo foo foo foo 411 - │ foo foo foo foo 412 - │ ○ Option 1 413 - └ 405 + "<dim>│</fg> 406 + <cyan>◆</fg> foo 407 + <cyan>│</fg> <green>●</fg> foo foo foo foo foo foo 408 + <cyan>│</fg> foo foo foo foo foo foo foo 409 + <cyan>│</fg> foo foo foo foo foo foo 410 + <cyan>│</fg> foo foo foo foo foo foo foo 411 + <cyan>│</fg> foo foo foo foo 412 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 413 + <cyan>└</fg> 414 414 ", 415 415 "<cursor.backward count=999><cursor.up count=9>", 416 416 "<cursor.down count=1>", 417 417 "<erase.down>", 418 - "■ foo 419 - │ foo foo foo foo foo foo foo 420 - │  foo foo foo foo foo foo  421 - │ foo foo foo foo foo foo foo 422 - │  foo foo foo foo foo foo  423 - │ foo foo foo foo 424 - │", 418 + "<red>■</fg> foo 419 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 420 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 421 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 422 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 423 + <dim>│</fg> <dim>foo foo foo foo</bold> 424 + <dim>│</fg>", 425 425 " 426 426 ", 427 427 "<cursor.show>", ··· 431 431 exports[`select (isCI = false) > wraps long messages 1`] = ` 432 432 [ 433 433 "<cursor.hide>", 434 - "│ 435 - ◆ foo foo foo foo foo foo foo 436 - │ foo foo foo foo foo foo 437 - │ foo foo foo foo foo foo foo 438 - │ ● opt0 439 - │ ○ opt1 440 - └ 434 + "<dim>│</fg> 435 + <cyan>◆</fg> foo foo foo foo foo foo foo 436 + <cyan>│</fg> foo foo foo foo foo foo 437 + <cyan>│</fg> foo foo foo foo foo foo foo 438 + <cyan>│</fg> <green>●</fg> opt0 439 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 440 + <cyan>└</fg> 441 441 ", 442 442 "<cursor.backward count=999><cursor.up count=7>", 443 443 "<cursor.down count=1>", 444 444 "<erase.down>", 445 - "◇ foo foo foo foo foo foo foo 446 - │ foo foo foo foo foo foo 447 - │ foo foo foo foo foo foo foo 448 - │ opt0", 445 + "<green>◇</fg> foo foo foo foo foo foo foo 446 + <green>│</fg> foo foo foo foo foo foo 447 + <green>│</fg> foo foo foo foo foo foo foo 448 + <dim>│</fg> <dim>opt0</bold>", 449 449 " 450 450 ", 451 451 "<cursor.show>", ··· 455 455 exports[`select (isCI = false) > wraps long results 1`] = ` 456 456 [ 457 457 "<cursor.hide>", 458 - "│ 459 - ◆ foo 460 - │ ● foo foo foo foo foo foo 461 - │ foo foo foo foo foo foo foo 462 - │ foo foo foo foo foo foo 463 - │ foo foo foo foo foo foo foo 464 - │ foo foo foo foo 465 - │ ○ Option 1 466 - └ 458 + "<dim>│</fg> 459 + <cyan>◆</fg> foo 460 + <cyan>│</fg> <green>●</fg> foo foo foo foo foo foo 461 + <cyan>│</fg> foo foo foo foo foo foo foo 462 + <cyan>│</fg> foo foo foo foo foo foo 463 + <cyan>│</fg> foo foo foo foo foo foo foo 464 + <cyan>│</fg> foo foo foo foo 465 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 466 + <cyan>└</fg> 467 467 ", 468 468 "<cursor.backward count=999><cursor.up count=9>", 469 469 "<cursor.down count=1>", 470 470 "<erase.down>", 471 - "◇ foo 472 - │ foo foo foo foo foo foo foo 473 - │  foo foo foo foo foo foo  474 - │ foo foo foo foo foo foo foo 475 - │  foo foo foo foo foo foo  476 - │ foo foo foo foo", 471 + "<green>◇</fg> foo 472 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 473 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 474 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 475 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 476 + <dim>│</fg> <dim>foo foo foo foo</bold>", 477 477 " 478 478 ", 479 479 "<cursor.show>", ··· 483 483 exports[`select (isCI = true) > can be aborted by a signal 1`] = ` 484 484 [ 485 485 "<cursor.hide>", 486 - "│ 487 - ◆ foo 488 - │ ● opt0 489 - │ ○ opt1 490 - └ 486 + "<dim>│</fg> 487 + <cyan>◆</fg> foo 488 + <cyan>│</fg> <green>●</fg> opt0 489 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 490 + <cyan>└</fg> 491 491 ", 492 492 " 493 493 ", ··· 498 498 exports[`select (isCI = true) > can cancel 1`] = ` 499 499 [ 500 500 "<cursor.hide>", 501 - "│ 502 - ◆ foo 503 - │ ● opt0 504 - │ ○ opt1 505 - └ 501 + "<dim>│</fg> 502 + <cyan>◆</fg> foo 503 + <cyan>│</fg> <green>●</fg> opt0 504 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 505 + <cyan>└</fg> 506 506 ", 507 507 "<cursor.backward count=999><cursor.up count=5>", 508 508 "<cursor.down count=1>", 509 509 "<erase.down>", 510 - "■ foo 511 - │ opt0 512 - │", 510 + "<red>■</fg> foo 511 + <dim>│</fg> <dim>opt0</bold> 512 + <dim>│</fg>", 513 513 " 514 514 ", 515 515 "<cursor.show>", ··· 519 519 exports[`select (isCI = true) > correctly limits options when message wraps to multiple lines 1`] = ` 520 520 [ 521 521 "<cursor.hide>", 522 - "│ 523 - ◆ This is a very 524 - │ long message that 525 - │ will wrap to 526 - │ multiple lines 527 - │ ● Option 0 528 - │ ○ Option 1 529 - │ ○ Option 2 530 - │ ... 531 - └ 522 + "<dim>│</fg> 523 + <cyan>◆</fg> This is a very 524 + <cyan>│</fg> long message that 525 + <cyan>│</fg> will wrap to 526 + <cyan>│</fg> multiple lines 527 + <cyan>│</fg> <green>●</fg> Option 0 528 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 529 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 530 + <cyan>│</fg> <dim>...</bold> 531 + <cyan>└</fg> 532 532 ", 533 533 "<cursor.backward count=999><cursor.up count=10>", 534 534 "<cursor.down count=5>", 535 535 "<erase.down>", 536 - "│ ○ Option 0 537 - │ ● Option 1 538 - │ ○ Option 2 539 - │ ... 540 - └ 536 + "<cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 537 + <cyan>│</fg> <green>●</fg> Option 1 538 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 539 + <cyan>│</fg> <dim>...</bold> 540 + <cyan>└</fg> 541 541 ", 542 542 "<cursor.backward count=999><cursor.up count=10>", 543 543 "<cursor.down count=6>", 544 544 "<erase.down>", 545 - "│ ○ Option 1 546 - │ ● Option 2 547 - │ ... 548 - └ 545 + "<cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 546 + <cyan>│</fg> <green>●</fg> Option 2 547 + <cyan>│</fg> <dim>...</bold> 548 + <cyan>└</fg> 549 549 ", 550 550 "<cursor.backward count=999><cursor.up count=10>", 551 551 "<cursor.down count=5>", 552 552 "<erase.down>", 553 - "│ ... 554 - │ ● Option 3 555 - │ ○ Option 4 556 - │ ... 557 - └ 553 + "<cyan>│</fg> <dim>...</bold> 554 + <cyan>│</fg> <green>●</fg> Option 3 555 + <cyan>│</fg> <dim>○</bold> <dim>Option 4</bold> 556 + <cyan>│</fg> <dim>...</bold> 557 + <cyan>└</fg> 558 558 ", 559 559 "<cursor.backward count=999><cursor.up count=10>", 560 560 "<cursor.down count=6>", 561 561 "<erase.down>", 562 - "│ ● Option 4 563 - │ ○ Option 5 564 - │ ... 565 - └ 562 + "<cyan>│</fg> <green>●</fg> Option 4 563 + <cyan>│</fg> <dim>○</bold> <dim>Option 5</bold> 564 + <cyan>│</fg> <dim>...</bold> 565 + <cyan>└</fg> 566 566 ", 567 567 "<cursor.backward count=999><cursor.up count=10>", 568 568 "<cursor.down count=1>", 569 569 "<erase.down>", 570 - "◇ This is a very 571 - │ long message that 572 - │ will wrap to 573 - │ multiple lines 574 - │ Option 4", 570 + "<green>◇</fg> This is a very 571 + <green>│</fg> long message that 572 + <green>│</fg> will wrap to 573 + <green>│</fg> multiple lines 574 + <dim>│</fg> <dim>Option 4</bold>", 575 575 " 576 576 ", 577 577 "<cursor.show>", ··· 581 581 exports[`select (isCI = true) > correctly limits options with explicit multiline message 1`] = ` 582 582 [ 583 583 "<cursor.hide>", 584 - "│ 585 - ◆ Choose an option: 586 - │ Line 2 of the message 587 - │ Line 3 of the message 588 - │ ● Option 0 589 - │ ○ Option 1 590 - │ ○ Option 2 591 - │ ○ Option 3 592 - │ ... 593 - └ 584 + "<dim>│</fg> 585 + <cyan>◆</fg> Choose an option: 586 + <cyan>│</fg> Line 2 of the message 587 + <cyan>│</fg> Line 3 of the message 588 + <cyan>│</fg> <green>●</fg> Option 0 589 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 590 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 591 + <cyan>│</fg> <dim>○</bold> <dim>Option 3</bold> 592 + <cyan>│</fg> <dim>...</bold> 593 + <cyan>└</fg> 594 594 ", 595 595 "<cursor.backward count=999><cursor.up count=10>", 596 596 "<cursor.down count=4>", 597 597 "<erase.down>", 598 - "│ ○ Option 0 599 - │ ● Option 1 600 - │ ○ Option 2 601 - │ ○ Option 3 602 - │ ... 603 - └ 598 + "<cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 599 + <cyan>│</fg> <green>●</fg> Option 1 600 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 601 + <cyan>│</fg> <dim>○</bold> <dim>Option 3</bold> 602 + <cyan>│</fg> <dim>...</bold> 603 + <cyan>└</fg> 604 604 ", 605 605 "<cursor.backward count=999><cursor.up count=10>", 606 606 "<cursor.down count=5>", 607 607 "<erase.down>", 608 - "│ ○ Option 1 609 - │ ● Option 2 610 - │ ○ Option 3 611 - │ ... 612 - └ 608 + "<cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 609 + <cyan>│</fg> <green>●</fg> Option 2 610 + <cyan>│</fg> <dim>○</bold> <dim>Option 3</bold> 611 + <cyan>│</fg> <dim>...</bold> 612 + <cyan>└</fg> 613 613 ", 614 614 "<cursor.backward count=999><cursor.up count=10>", 615 615 "<cursor.down count=4>", 616 616 "<erase.down>", 617 - "│ ... 618 - │ ○ Option 2 619 - │ ● Option 3 620 - │ ○ Option 4 621 - │ ... 622 - └ 617 + "<cyan>│</fg> <dim>...</bold> 618 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 619 + <cyan>│</fg> <green>●</fg> Option 3 620 + <cyan>│</fg> <dim>○</bold> <dim>Option 4</bold> 621 + <cyan>│</fg> <dim>...</bold> 622 + <cyan>└</fg> 623 623 ", 624 624 "<cursor.backward count=999><cursor.up count=10>", 625 625 "<cursor.down count=1>", 626 626 "<erase.down>", 627 - "◇ Choose an option: 628 - │ Line 2 of the message 629 - │ Line 3 of the message 630 - │ Option 3", 627 + "<green>◇</fg> Choose an option: 628 + <green>│</fg> Line 2 of the message 629 + <green>│</fg> Line 3 of the message 630 + <dim>│</fg> <dim>Option 3</bold>", 631 631 " 632 632 ", 633 633 "<cursor.show>", ··· 637 637 exports[`select (isCI = true) > down arrow selects next option 1`] = ` 638 638 [ 639 639 "<cursor.hide>", 640 - "│ 641 - ◆ foo 642 - │ ● opt0 643 - │ ○ opt1 644 - └ 640 + "<dim>│</fg> 641 + <cyan>◆</fg> foo 642 + <cyan>│</fg> <green>●</fg> opt0 643 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 644 + <cyan>└</fg> 645 645 ", 646 646 "<cursor.backward count=999><cursor.up count=5>", 647 647 "<cursor.down count=2>", 648 648 "<erase.down>", 649 - "│ ○ opt0 650 - │ ● opt1 651 - └ 649 + "<cyan>│</fg> <dim>○</bold> <dim>opt0</bold> 650 + <cyan>│</fg> <green>●</fg> opt1 651 + <cyan>└</fg> 652 652 ", 653 653 "<cursor.backward count=999><cursor.up count=5>", 654 654 "<cursor.down count=1>", 655 655 "<erase.down>", 656 - "◇ foo 657 - │ opt1", 656 + "<green>◇</fg> foo 657 + <dim>│</fg> <dim>opt1</bold>", 658 658 " 659 659 ", 660 660 "<cursor.show>", ··· 664 664 exports[`select (isCI = true) > global withGuide: false removes guide 1`] = ` 665 665 [ 666 666 "<cursor.hide>", 667 - "◆ foo 668 - ● opt0 669 - ○ opt1 667 + "<cyan>◆</fg> foo 668 + <green>●</fg> opt0 669 + <dim>○</bold> <dim>opt1</bold> 670 670 671 671 ", 672 672 "<cursor.backward count=999><cursor.up count=4>", 673 673 "<erase.down>", 674 - "◇ foo 675 - opt0", 674 + "<green>◇</fg> foo 675 + <dim>opt0</bold>", 676 676 " 677 677 ", 678 678 "<cursor.show>", ··· 682 682 exports[`select (isCI = true) > handles mixed size re-renders 1`] = ` 683 683 [ 684 684 "<cursor.hide>", 685 - "│ 686 - ◆ Whatever 687 - │ ● Long Option 688 - │ Long Option 689 - │ Long Option 690 - │ Long Option 691 - │ Long Option 692 - │ Long Option 693 - │ Long Option 694 - │ Long Option 695 - │ ... 696 - └ 685 + "<dim>│</fg> 686 + <cyan>◆</fg> Whatever 687 + <cyan>│</fg> <green>●</fg> Long Option 688 + <cyan>│</fg> Long Option 689 + <cyan>│</fg> Long Option 690 + <cyan>│</fg> Long Option 691 + <cyan>│</fg> Long Option 692 + <cyan>│</fg> Long Option 693 + <cyan>│</fg> Long Option 694 + <cyan>│</fg> Long Option 695 + <cyan>│</fg> <dim>...</bold> 696 + <cyan>└</fg> 697 697 ", 698 698 "<cursor.backward count=999><cursor.up count=12>", 699 699 "<erase.down>", 700 - "│ 701 - ◆ Whatever 702 - │ ... 703 - │ ○ Option 0 704 - │ ○ Option 1 705 - │ ○ Option 2 706 - │ ● Option 3 707 - └ 700 + "<dim>│</fg> 701 + <cyan>◆</fg> Whatever 702 + <cyan>│</fg> <dim>...</bold> 703 + <cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 704 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 705 + <cyan>│</fg> <dim>○</bold> <dim>Option 2</bold> 706 + <cyan>│</fg> <green>●</fg> Option 3 707 + <cyan>└</fg> 708 708 ", 709 709 "<cursor.backward count=999><cursor.up count=8>", 710 710 "<cursor.down count=1>", 711 711 "<erase.down>", 712 - "◇ Whatever 713 - │ Option 3", 712 + "<green>◇</fg> Whatever 713 + <dim>│</fg> <dim>Option 3</bold>", 714 714 " 715 715 ", 716 716 "<cursor.show>", ··· 720 720 exports[`select (isCI = true) > renders disabled options 1`] = ` 721 721 [ 722 722 "<cursor.hide>", 723 - "│ 724 - ◆ foo 725 - │ ○ Option 0 726 - │ ● Option 1 727 - │ ○ Option 2 (Hint 2) 728 - └ 723 + "<dim>│</fg> 724 + <cyan>◆</fg> foo 725 + <cyan>│</fg> <dim>○</fg> <dim>Option 0</fg> 726 + <cyan>│</fg> <green>●</fg> Option 1 727 + <cyan>│</fg> <dim>○</fg> <dim>Option 2</fg> <dim>(Hint 2)</bold> 728 + <cyan>└</fg> 729 729 ", 730 730 "<cursor.backward count=999><cursor.up count=6>", 731 731 "<cursor.down count=1>", 732 732 "<erase.down>", 733 - "◇ foo 734 - │ Option 1", 733 + "<green>◇</fg> foo 734 + <dim>│</fg> <dim>Option 1</bold>", 735 735 " 736 736 ", 737 737 "<cursor.show>", ··· 741 741 exports[`select (isCI = true) > renders multi-line option labels 1`] = ` 742 742 [ 743 743 "<cursor.hide>", 744 - "│ 745 - ◆ foo 746 - │ ● Option 0 747 - │ with multiple lines 748 - │ ○ Option 1 749 - └ 744 + "<dim>│</fg> 745 + <cyan>◆</fg> foo 746 + <cyan>│</fg> <green>●</fg> Option 0 747 + <cyan>│</fg> with multiple lines 748 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 749 + <cyan>└</fg> 750 750 ", 751 751 "<cursor.backward count=999><cursor.up count=6>", 752 752 "<cursor.down count=2>", 753 753 "<erase.down>", 754 - "│ ○ Option 0 755 - │ with multiple lines 756 - │ ● Option 1 757 - └ 754 + "<cyan>│</fg> <dim>○</bold> <dim>Option 0</bold> 755 + <cyan>│</fg> <dim>with multiple lines</bold> 756 + <cyan>│</fg> <green>●</fg> Option 1 757 + <cyan>└</fg> 758 758 ", 759 759 "<cursor.backward count=999><cursor.up count=6>", 760 760 "<cursor.down count=1>", 761 761 "<erase.down>", 762 - "◇ foo 763 - │ Option 1", 762 + "<green>◇</fg> foo 763 + <dim>│</fg> <dim>Option 1</bold>", 764 764 " 765 765 ", 766 766 "<cursor.show>", ··· 770 770 exports[`select (isCI = true) > renders option hints 1`] = ` 771 771 [ 772 772 "<cursor.hide>", 773 - "│ 774 - ◆ foo 775 - │ ● opt0 (Hint 0) 776 - │ ○ opt1 777 - └ 773 + "<dim>│</fg> 774 + <cyan>◆</fg> foo 775 + <cyan>│</fg> <green>●</fg> opt0 <dim>(Hint 0)</bold> 776 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 777 + <cyan>└</fg> 778 778 ", 779 779 "<cursor.backward count=999><cursor.up count=5>", 780 780 "<cursor.down count=1>", 781 781 "<erase.down>", 782 - "◇ foo 783 - │ opt0", 782 + "<green>◇</fg> foo 783 + <dim>│</fg> <dim>opt0</bold>", 784 784 " 785 785 ", 786 786 "<cursor.show>", ··· 790 790 exports[`select (isCI = true) > renders option labels 1`] = ` 791 791 [ 792 792 "<cursor.hide>", 793 - "│ 794 - ◆ foo 795 - │ ● Option 0 796 - │ ○ Option 1 797 - └ 793 + "<dim>│</fg> 794 + <cyan>◆</fg> foo 795 + <cyan>│</fg> <green>●</fg> Option 0 796 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 797 + <cyan>└</fg> 798 798 ", 799 799 "<cursor.backward count=999><cursor.up count=5>", 800 800 "<cursor.down count=1>", 801 801 "<erase.down>", 802 - "◇ foo 803 - │ Option 0", 802 + "<green>◇</fg> foo 803 + <dim>│</fg> <dim>Option 0</bold>", 804 804 " 805 805 ", 806 806 "<cursor.show>", ··· 810 810 exports[`select (isCI = true) > renders options and message 1`] = ` 811 811 [ 812 812 "<cursor.hide>", 813 - "│ 814 - ◆ foo 815 - │ ● opt0 816 - │ ○ opt1 817 - └ 813 + "<dim>│</fg> 814 + <cyan>◆</fg> foo 815 + <cyan>│</fg> <green>●</fg> opt0 816 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 817 + <cyan>└</fg> 818 818 ", 819 819 "<cursor.backward count=999><cursor.up count=5>", 820 820 "<cursor.down count=1>", 821 821 "<erase.down>", 822 - "◇ foo 823 - │ opt0", 822 + "<green>◇</fg> foo 823 + <dim>│</fg> <dim>opt0</bold>", 824 824 " 825 825 ", 826 826 "<cursor.show>", ··· 830 830 exports[`select (isCI = true) > up arrow selects previous option 1`] = ` 831 831 [ 832 832 "<cursor.hide>", 833 - "│ 834 - ◆ foo 835 - │ ● opt0 836 - │ ○ opt1 837 - └ 833 + "<dim>│</fg> 834 + <cyan>◆</fg> foo 835 + <cyan>│</fg> <green>●</fg> opt0 836 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 837 + <cyan>└</fg> 838 838 ", 839 839 "<cursor.backward count=999><cursor.up count=5>", 840 840 "<cursor.down count=2>", 841 841 "<erase.down>", 842 - "│ ○ opt0 843 - │ ● opt1 844 - └ 842 + "<cyan>│</fg> <dim>○</bold> <dim>opt0</bold> 843 + <cyan>│</fg> <green>●</fg> opt1 844 + <cyan>└</fg> 845 845 ", 846 846 "<cursor.backward count=999><cursor.up count=5>", 847 847 "<cursor.down count=2>", 848 848 "<erase.down>", 849 - "│ ● opt0 850 - │ ○ opt1 851 - └ 849 + "<cyan>│</fg> <green>●</fg> opt0 850 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 851 + <cyan>└</fg> 852 852 ", 853 853 "<cursor.backward count=999><cursor.up count=5>", 854 854 "<cursor.down count=1>", 855 855 "<erase.down>", 856 - "◇ foo 857 - │ opt0", 856 + "<green>◇</fg> foo 857 + <dim>│</fg> <dim>opt0</bold>", 858 858 " 859 859 ", 860 860 "<cursor.show>", ··· 864 864 exports[`select (isCI = true) > withGuide: false removes guide 1`] = ` 865 865 [ 866 866 "<cursor.hide>", 867 - "◆ foo 868 - ● opt0 869 - ○ opt1 867 + "<cyan>◆</fg> foo 868 + <green>●</fg> opt0 869 + <dim>○</bold> <dim>opt1</bold> 870 870 871 871 ", 872 872 "<cursor.backward count=999><cursor.up count=4>", 873 873 "<erase.down>", 874 - "◇ foo 875 - opt0", 874 + "<green>◇</fg> foo 875 + <dim>opt0</bold>", 876 876 " 877 877 ", 878 878 "<cursor.show>", ··· 882 882 exports[`select (isCI = true) > wraps long cancelled message 1`] = ` 883 883 [ 884 884 "<cursor.hide>", 885 - "│ 886 - ◆ foo 887 - │ ● foo foo foo foo foo foo 888 - │ foo foo foo foo foo foo foo 889 - │ foo foo foo foo foo foo 890 - │ foo foo foo foo foo foo foo 891 - │ foo foo foo foo 892 - │ ○ Option 1 893 - └ 885 + "<dim>│</fg> 886 + <cyan>◆</fg> foo 887 + <cyan>│</fg> <green>●</fg> foo foo foo foo foo foo 888 + <cyan>│</fg> foo foo foo foo foo foo foo 889 + <cyan>│</fg> foo foo foo foo foo foo 890 + <cyan>│</fg> foo foo foo foo foo foo foo 891 + <cyan>│</fg> foo foo foo foo 892 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 893 + <cyan>└</fg> 894 894 ", 895 895 "<cursor.backward count=999><cursor.up count=9>", 896 896 "<cursor.down count=1>", 897 897 "<erase.down>", 898 - "■ foo 899 - │ foo foo foo foo foo foo foo 900 - │  foo foo foo foo foo foo  901 - │ foo foo foo foo foo foo foo 902 - │  foo foo foo foo foo foo  903 - │ foo foo foo foo 904 - │", 898 + "<red>■</fg> foo 899 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 900 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 901 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 902 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 903 + <dim>│</fg> <dim>foo foo foo foo</bold> 904 + <dim>│</fg>", 905 905 " 906 906 ", 907 907 "<cursor.show>", ··· 911 911 exports[`select (isCI = true) > wraps long messages 1`] = ` 912 912 [ 913 913 "<cursor.hide>", 914 - "│ 915 - ◆ foo foo foo foo foo foo foo 916 - │ foo foo foo foo foo foo 917 - │ foo foo foo foo foo foo foo 918 - │ ● opt0 919 - │ ○ opt1 920 - └ 914 + "<dim>│</fg> 915 + <cyan>◆</fg> foo foo foo foo foo foo foo 916 + <cyan>│</fg> foo foo foo foo foo foo 917 + <cyan>│</fg> foo foo foo foo foo foo foo 918 + <cyan>│</fg> <green>●</fg> opt0 919 + <cyan>│</fg> <dim>○</bold> <dim>opt1</bold> 920 + <cyan>└</fg> 921 921 ", 922 922 "<cursor.backward count=999><cursor.up count=7>", 923 923 "<cursor.down count=1>", 924 924 "<erase.down>", 925 - "◇ foo foo foo foo foo foo foo 926 - │ foo foo foo foo foo foo 927 - │ foo foo foo foo foo foo foo 928 - │ opt0", 925 + "<green>◇</fg> foo foo foo foo foo foo foo 926 + <green>│</fg> foo foo foo foo foo foo 927 + <green>│</fg> foo foo foo foo foo foo foo 928 + <dim>│</fg> <dim>opt0</bold>", 929 929 " 930 930 ", 931 931 "<cursor.show>", ··· 935 935 exports[`select (isCI = true) > wraps long results 1`] = ` 936 936 [ 937 937 "<cursor.hide>", 938 - "│ 939 - ◆ foo 940 - │ ● foo foo foo foo foo foo 941 - │ foo foo foo foo foo foo foo 942 - │ foo foo foo foo foo foo 943 - │ foo foo foo foo foo foo foo 944 - │ foo foo foo foo 945 - │ ○ Option 1 946 - └ 938 + "<dim>│</fg> 939 + <cyan>◆</fg> foo 940 + <cyan>│</fg> <green>●</fg> foo foo foo foo foo foo 941 + <cyan>│</fg> foo foo foo foo foo foo foo 942 + <cyan>│</fg> foo foo foo foo foo foo 943 + <cyan>│</fg> foo foo foo foo foo foo foo 944 + <cyan>│</fg> foo foo foo foo 945 + <cyan>│</fg> <dim>○</bold> <dim>Option 1</bold> 946 + <cyan>└</fg> 947 947 ", 948 948 "<cursor.backward count=999><cursor.up count=9>", 949 949 "<cursor.down count=1>", 950 950 "<erase.down>", 951 - "◇ foo 952 - │ foo foo foo foo foo foo foo 953 - │  foo foo foo foo foo foo  954 - │ foo foo foo foo foo foo foo 955 - │  foo foo foo foo foo foo  956 - │ foo foo foo foo", 951 + "<green>◇</fg> foo 952 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 953 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 954 + <dim>│</fg> <dim>foo foo foo foo foo foo foo</bold> 955 + <dim>│</fg> <dim> foo foo foo foo foo foo </bold> 956 + <dim>│</fg> <dim>foo foo foo foo</bold>", 957 957 " 958 958 ", 959 959 "<cursor.show>",
+223 -223
packages/prompts/src/__snapshots__/spinner.test.ts.snap
··· 3 3 exports[`spinner (isCI = false) > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 6 + "<dim>│</fg> 7 7 ", 8 - "■ Canceled 8 + "<red>■</fg> Canceled 9 9 ", 10 10 "<cursor.show>", 11 11 ] ··· 14 14 exports[`spinner (isCI = false) > clear > stops and clears the spinner from the output 1`] = ` 15 15 [ 16 16 "<cursor.hide>", 17 - "│ 17 + "<dim>│</fg> 18 18 ", 19 - "◒ Loading", 19 + "<magenta>◒</fg> Loading", 20 20 "<cursor.left count=1>", 21 21 "<erase.down>", 22 22 "<cursor.show>", ··· 26 26 exports[`spinner (isCI = false) > global withGuide: false removes guide 1`] = ` 27 27 [ 28 28 "<cursor.hide>", 29 - "◒ foo", 29 + "<magenta>◒</fg> foo", 30 30 "<cursor.left count=1>", 31 31 "<erase.down>", 32 - "◇ 32 + "<green>◇</fg> 33 33 ", 34 34 "<cursor.show>", 35 35 ] ··· 38 38 exports[`spinner (isCI = false) > indicator customization > custom delay 1`] = ` 39 39 [ 40 40 "<cursor.hide>", 41 - "│ 41 + "<dim>│</fg> 42 42 ", 43 - "◒ ", 43 + "<magenta>◒</fg> ", 44 44 "<cursor.left count=1>", 45 45 "<erase.down>", 46 - "◐ ", 46 + "<magenta>◐</fg> ", 47 47 "<cursor.left count=1>", 48 48 "<erase.down>", 49 - "◓ ", 49 + "<magenta>◓</fg> ", 50 50 "<cursor.left count=1>", 51 51 "<erase.down>", 52 - "◑ ", 52 + "<magenta>◑</fg> ", 53 53 "<cursor.left count=1>", 54 54 "<erase.down>", 55 - "◇ 55 + "<green>◇</fg> 56 56 ", 57 57 "<cursor.show>", 58 58 ] ··· 61 61 exports[`spinner (isCI = false) > indicator customization > custom frame style 1`] = ` 62 62 [ 63 63 "<cursor.hide>", 64 - "│ 64 + "<dim>│</fg> 65 65 ", 66 - "◒ ", 66 + "<red>◒</fg> ", 67 67 "<cursor.left count=1>", 68 68 "<erase.down>", 69 - "◐ ", 69 + "<red>◐</fg> ", 70 70 "<cursor.left count=1>", 71 71 "<erase.down>", 72 - "◓ ", 72 + "<red>◓</fg> ", 73 73 "<cursor.left count=1>", 74 74 "<erase.down>", 75 - "◑ ", 75 + "<red>◑</fg> ", 76 76 "<cursor.left count=1>", 77 77 "<erase.down>", 78 - "◇ 78 + "<green>◇</fg> 79 79 ", 80 80 "<cursor.show>", 81 81 ] ··· 84 84 exports[`spinner (isCI = false) > indicator customization > custom frames 1`] = ` 85 85 [ 86 86 "<cursor.hide>", 87 - "│ 87 + "<dim>│</fg> 88 88 ", 89 - "🐴 ", 89 + "<magenta>🐴</fg> ", 90 90 "<cursor.left count=1>", 91 91 "<erase.down>", 92 - "🦋 ", 92 + "<magenta>🦋</fg> ", 93 93 "<cursor.left count=1>", 94 94 "<erase.down>", 95 - "🐙 ", 95 + "<magenta>🐙</fg> ", 96 96 "<cursor.left count=1>", 97 97 "<erase.down>", 98 - "🐶 ", 98 + "<magenta>🐶</fg> ", 99 99 "<cursor.left count=1>", 100 100 "<erase.down>", 101 - "◇ 101 + "<green>◇</fg> 102 102 ", 103 103 "<cursor.show>", 104 104 ] ··· 107 107 exports[`spinner (isCI = false) > indicator customization > custom frames with lots of frame have consistent ellipsis display 1`] = ` 108 108 [ 109 109 "<cursor.hide>", 110 - "│ 110 + "<dim>│</fg> 111 111 ", 112 - "0 ", 112 + "<magenta>0</fg> ", 113 113 "<cursor.left count=1>", 114 114 "<erase.down>", 115 - "1 ", 115 + "<magenta>1</fg> ", 116 116 "<cursor.left count=1>", 117 117 "<erase.down>", 118 - "2 ", 118 + "<magenta>2</fg> ", 119 119 "<cursor.left count=1>", 120 120 "<erase.down>", 121 - "3 ", 121 + "<magenta>3</fg> ", 122 122 "<cursor.left count=1>", 123 123 "<erase.down>", 124 - "4 ", 124 + "<magenta>4</fg> ", 125 125 "<cursor.left count=1>", 126 126 "<erase.down>", 127 - "5 ", 127 + "<magenta>5</fg> ", 128 128 "<cursor.left count=1>", 129 129 "<erase.down>", 130 - "6 ", 130 + "<magenta>6</fg> ", 131 131 "<cursor.left count=1>", 132 132 "<erase.down>", 133 - "7 ", 133 + "<magenta>7</fg> ", 134 134 "<cursor.left count=1>", 135 135 "<erase.down>", 136 - "8 .", 136 + "<magenta>8</fg> .", 137 137 "<cursor.left count=1>", 138 138 "<erase.down>", 139 - "9 .", 139 + "<magenta>9</fg> .", 140 140 "<cursor.left count=1>", 141 141 "<erase.down>", 142 - "0 .", 142 + "<magenta>0</fg> .", 143 143 "<cursor.left count=1>", 144 144 "<erase.down>", 145 - "1 .", 145 + "<magenta>1</fg> .", 146 146 "<cursor.left count=1>", 147 147 "<erase.down>", 148 - "2 .", 148 + "<magenta>2</fg> .", 149 149 "<cursor.left count=1>", 150 150 "<erase.down>", 151 - "3 .", 151 + "<magenta>3</fg> .", 152 152 "<cursor.left count=1>", 153 153 "<erase.down>", 154 - "4 .", 154 + "<magenta>4</fg> .", 155 155 "<cursor.left count=1>", 156 156 "<erase.down>", 157 - "5 .", 157 + "<magenta>5</fg> .", 158 158 "<cursor.left count=1>", 159 159 "<erase.down>", 160 - "6 ..", 160 + "<magenta>6</fg> ..", 161 161 "<cursor.left count=1>", 162 162 "<erase.down>", 163 - "7 ..", 163 + "<magenta>7</fg> ..", 164 164 "<cursor.left count=1>", 165 165 "<erase.down>", 166 - "8 ..", 166 + "<magenta>8</fg> ..", 167 167 "<cursor.left count=1>", 168 168 "<erase.down>", 169 - "9 ..", 169 + "<magenta>9</fg> ..", 170 170 "<cursor.left count=1>", 171 171 "<erase.down>", 172 - "0 ..", 172 + "<magenta>0</fg> ..", 173 173 "<cursor.left count=1>", 174 174 "<erase.down>", 175 - "1 ..", 175 + "<magenta>1</fg> ..", 176 176 "<cursor.left count=1>", 177 177 "<erase.down>", 178 - "2 ..", 178 + "<magenta>2</fg> ..", 179 179 "<cursor.left count=1>", 180 180 "<erase.down>", 181 - "3 ..", 181 + "<magenta>3</fg> ..", 182 182 "<cursor.left count=1>", 183 183 "<erase.down>", 184 - "4 ...", 184 + "<magenta>4</fg> ...", 185 185 "<cursor.left count=1>", 186 186 "<erase.down>", 187 - "5 ...", 187 + "<magenta>5</fg> ...", 188 188 "<cursor.left count=1>", 189 189 "<erase.down>", 190 - "6 ...", 190 + "<magenta>6</fg> ...", 191 191 "<cursor.left count=1>", 192 192 "<erase.down>", 193 - "7 ...", 193 + "<magenta>7</fg> ...", 194 194 "<cursor.left count=1>", 195 195 "<erase.down>", 196 - "8 ...", 196 + "<magenta>8</fg> ...", 197 197 "<cursor.left count=1>", 198 198 "<erase.down>", 199 - "9 ...", 199 + "<magenta>9</fg> ...", 200 200 "<cursor.left count=1>", 201 201 "<erase.down>", 202 - "0 ...", 202 + "<magenta>0</fg> ...", 203 203 "<cursor.left count=1>", 204 204 "<erase.down>", 205 - "1 ...", 205 + "<magenta>1</fg> ...", 206 206 "<cursor.left count=1>", 207 207 "<erase.down>", 208 - "2 ...", 208 + "<magenta>2</fg> ...", 209 209 "<cursor.left count=1>", 210 210 "<erase.down>", 211 - "3 ", 211 + "<magenta>3</fg> ", 212 212 "<cursor.left count=1>", 213 213 "<erase.down>", 214 - "4 ", 214 + "<magenta>4</fg> ", 215 215 "<cursor.left count=1>", 216 216 "<erase.down>", 217 - "5 ", 217 + "<magenta>5</fg> ", 218 218 "<cursor.left count=1>", 219 219 "<erase.down>", 220 - "6 ", 220 + "<magenta>6</fg> ", 221 221 "<cursor.left count=1>", 222 222 "<erase.down>", 223 - "7 ", 223 + "<magenta>7</fg> ", 224 224 "<cursor.left count=1>", 225 225 "<erase.down>", 226 - "8 ", 226 + "<magenta>8</fg> ", 227 227 "<cursor.left count=1>", 228 228 "<erase.down>", 229 - "9 ", 229 + "<magenta>9</fg> ", 230 230 "<cursor.left count=1>", 231 231 "<erase.down>", 232 - "0 ", 232 + "<magenta>0</fg> ", 233 233 "<cursor.left count=1>", 234 234 "<erase.down>", 235 - "1 .", 235 + "<magenta>1</fg> .", 236 236 "<cursor.left count=1>", 237 237 "<erase.down>", 238 - "2 .", 238 + "<magenta>2</fg> .", 239 239 "<cursor.left count=1>", 240 240 "<erase.down>", 241 - "3 .", 241 + "<magenta>3</fg> .", 242 242 "<cursor.left count=1>", 243 243 "<erase.down>", 244 - "4 .", 244 + "<magenta>4</fg> .", 245 245 "<cursor.left count=1>", 246 246 "<erase.down>", 247 - "5 .", 247 + "<magenta>5</fg> .", 248 248 "<cursor.left count=1>", 249 249 "<erase.down>", 250 - "6 .", 250 + "<magenta>6</fg> .", 251 251 "<cursor.left count=1>", 252 252 "<erase.down>", 253 - "7 .", 253 + "<magenta>7</fg> .", 254 254 "<cursor.left count=1>", 255 255 "<erase.down>", 256 - "8 .", 256 + "<magenta>8</fg> .", 257 257 "<cursor.left count=1>", 258 258 "<erase.down>", 259 - "9 ..", 259 + "<magenta>9</fg> ..", 260 260 "<cursor.left count=1>", 261 261 "<erase.down>", 262 - "0 ..", 262 + "<magenta>0</fg> ..", 263 263 "<cursor.left count=1>", 264 264 "<erase.down>", 265 - "1 ..", 265 + "<magenta>1</fg> ..", 266 266 "<cursor.left count=1>", 267 267 "<erase.down>", 268 - "2 ..", 268 + "<magenta>2</fg> ..", 269 269 "<cursor.left count=1>", 270 270 "<erase.down>", 271 - "3 ..", 271 + "<magenta>3</fg> ..", 272 272 "<cursor.left count=1>", 273 273 "<erase.down>", 274 - "4 ..", 274 + "<magenta>4</fg> ..", 275 275 "<cursor.left count=1>", 276 276 "<erase.down>", 277 - "5 ..", 277 + "<magenta>5</fg> ..", 278 278 "<cursor.left count=1>", 279 279 "<erase.down>", 280 - "6 ..", 280 + "<magenta>6</fg> ..", 281 281 "<cursor.left count=1>", 282 282 "<erase.down>", 283 - "7 ...", 283 + "<magenta>7</fg> ...", 284 284 "<cursor.left count=1>", 285 285 "<erase.down>", 286 - "8 ...", 286 + "<magenta>8</fg> ...", 287 287 "<cursor.left count=1>", 288 288 "<erase.down>", 289 - "9 ...", 289 + "<magenta>9</fg> ...", 290 290 "<cursor.left count=1>", 291 291 "<erase.down>", 292 - "0 ...", 292 + "<magenta>0</fg> ...", 293 293 "<cursor.left count=1>", 294 294 "<erase.down>", 295 - "1 ...", 295 + "<magenta>1</fg> ...", 296 296 "<cursor.left count=1>", 297 297 "<erase.down>", 298 - "2 ...", 298 + "<magenta>2</fg> ...", 299 299 "<cursor.left count=1>", 300 300 "<erase.down>", 301 - "3 ...", 301 + "<magenta>3</fg> ...", 302 302 "<cursor.left count=1>", 303 303 "<erase.down>", 304 - "◇ 304 + "<green>◇</fg> 305 305 ", 306 306 "<cursor.show>", 307 307 ] ··· 310 310 exports[`spinner (isCI = false) > message > sets message for next frame 1`] = ` 311 311 [ 312 312 "<cursor.hide>", 313 - "│ 313 + "<dim>│</fg> 314 314 ", 315 - "◒ ", 315 + "<magenta>◒</fg> ", 316 316 "<cursor.left count=1>", 317 317 "<erase.down>", 318 - "◐ foo", 318 + "<magenta>◐</fg> foo", 319 319 "<cursor.left count=1>", 320 320 "<erase.down>", 321 - "◇ 321 + "<green>◇</fg> 322 322 ", 323 323 "<cursor.show>", 324 324 ] ··· 327 327 exports[`spinner (isCI = false) > process exit handling > prioritizes cancel option over global setting 1`] = ` 328 328 [ 329 329 "<cursor.hide>", 330 - "│ 330 + "<dim>│</fg> 331 331 ", 332 - "■ Spinner cancel message 332 + "<red>■</fg> Spinner cancel message 333 333 ", 334 334 "<cursor.show>", 335 335 ] ··· 338 338 exports[`spinner (isCI = false) > process exit handling > prioritizes error option over global setting 1`] = ` 339 339 [ 340 340 "<cursor.hide>", 341 - "│ 341 + "<dim>│</fg> 342 342 ", 343 - "▲ Spinner error message 343 + "<red>▲</fg> Spinner error message 344 344 ", 345 345 "<cursor.show>", 346 346 ] ··· 349 349 exports[`spinner (isCI = false) > process exit handling > uses custom cancel message when provided directly 1`] = ` 350 350 [ 351 351 "<cursor.hide>", 352 - "│ 352 + "<dim>│</fg> 353 353 ", 354 - "■ Custom cancel message 354 + "<red>■</fg> Custom cancel message 355 355 ", 356 356 "<cursor.show>", 357 357 ] ··· 360 360 exports[`spinner (isCI = false) > process exit handling > uses custom error message when provided directly 1`] = ` 361 361 [ 362 362 "<cursor.hide>", 363 - "│ 363 + "<dim>│</fg> 364 364 ", 365 - "▲ Custom error message 365 + "<red>▲</fg> Custom error message 366 366 ", 367 367 "<cursor.show>", 368 368 ] ··· 371 371 exports[`spinner (isCI = false) > process exit handling > uses default cancel message 1`] = ` 372 372 [ 373 373 "<cursor.hide>", 374 - "│ 374 + "<dim>│</fg> 375 375 ", 376 - "■ Canceled 376 + "<red>■</fg> Canceled 377 377 ", 378 378 "<cursor.show>", 379 379 ] ··· 382 382 exports[`spinner (isCI = false) > process exit handling > uses global custom cancel message from settings 1`] = ` 383 383 [ 384 384 "<cursor.hide>", 385 - "│ 385 + "<dim>│</fg> 386 386 ", 387 - "■ Global cancel message 387 + "<red>■</fg> Global cancel message 388 388 ", 389 389 "<cursor.show>", 390 390 ] ··· 393 393 exports[`spinner (isCI = false) > process exit handling > uses global custom error message from settings 1`] = ` 394 394 [ 395 395 "<cursor.hide>", 396 - "│ 396 + "<dim>│</fg> 397 397 ", 398 - "▲ Global error message 398 + "<red>▲</fg> Global error message 399 399 ", 400 400 "<cursor.show>", 401 401 ] ··· 404 404 exports[`spinner (isCI = false) > start > handles multi-line messages 1`] = ` 405 405 [ 406 406 "<cursor.hide>", 407 - "│ 407 + "<dim>│</fg> 408 408 ", 409 - "◒ foo 409 + "<magenta>◒</fg> foo 410 410 bar 411 411 baz", 412 412 "<cursor.up count=2>", 413 413 "<cursor.left count=1>", 414 414 "<erase.down>", 415 - "◇ 415 + "<green>◇</fg> 416 416 ", 417 417 "<cursor.show>", 418 418 ] ··· 421 421 exports[`spinner (isCI = false) > start > handles wrapping 1`] = ` 422 422 [ 423 423 "<cursor.hide>", 424 - "│ 424 + "<dim>│</fg> 425 425 ", 426 - "◒ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 426 + "<magenta>◒</fg> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 427 427 xxxxxxxxxxxxx", 428 428 "<cursor.up count=1>", 429 429 "<cursor.left count=1>", 430 430 "<erase.down>", 431 - "◇ stopped 431 + "<green>◇</fg> stopped 432 432 ", 433 433 "<cursor.show>", 434 434 ] ··· 437 437 exports[`spinner (isCI = false) > start > renders frames at interval 1`] = ` 438 438 [ 439 439 "<cursor.hide>", 440 - "│ 440 + "<dim>│</fg> 441 441 ", 442 - "◒ ", 442 + "<magenta>◒</fg> ", 443 443 "<cursor.left count=1>", 444 444 "<erase.down>", 445 - "◐ ", 445 + "<magenta>◐</fg> ", 446 446 "<cursor.left count=1>", 447 447 "<erase.down>", 448 - "◓ ", 448 + "<magenta>◓</fg> ", 449 449 "<cursor.left count=1>", 450 450 "<erase.down>", 451 - "◑ ", 451 + "<magenta>◑</fg> ", 452 452 "<cursor.left count=1>", 453 453 "<erase.down>", 454 - "◇ 454 + "<green>◇</fg> 455 455 ", 456 456 "<cursor.show>", 457 457 ] ··· 460 460 exports[`spinner (isCI = false) > start > renders message 1`] = ` 461 461 [ 462 462 "<cursor.hide>", 463 - "│ 463 + "<dim>│</fg> 464 464 ", 465 - "◒ foo", 465 + "<magenta>◒</fg> foo", 466 466 "<cursor.left count=1>", 467 467 "<erase.down>", 468 - "◇ 468 + "<green>◇</fg> 469 469 ", 470 470 "<cursor.show>", 471 471 ] ··· 474 474 exports[`spinner (isCI = false) > start > renders timer when indicator is "timer" 1`] = ` 475 475 [ 476 476 "<cursor.hide>", 477 - "│ 477 + "<dim>│</fg> 478 478 ", 479 - "◒ [0s]", 479 + "<magenta>◒</fg> [0s]", 480 480 "<cursor.left count=1>", 481 481 "<erase.down>", 482 - "◇ [0s] 482 + "<green>◇</fg> [0s] 483 483 ", 484 484 "<cursor.show>", 485 485 ] ··· 488 488 exports[`spinner (isCI = false) > stop > renders cancel symbol when calling cancel() 1`] = ` 489 489 [ 490 490 "<cursor.hide>", 491 - "│ 491 + "<dim>│</fg> 492 492 ", 493 - "◒ ", 493 + "<magenta>◒</fg> ", 494 494 "<cursor.left count=1>", 495 495 "<erase.down>", 496 - "■ 496 + "<red>■</fg> 497 497 ", 498 498 "<cursor.show>", 499 499 ] ··· 502 502 exports[`spinner (isCI = false) > stop > renders error symbol when calling error() 1`] = ` 503 503 [ 504 504 "<cursor.hide>", 505 - "│ 505 + "<dim>│</fg> 506 506 ", 507 - "◒ ", 507 + "<magenta>◒</fg> ", 508 508 "<cursor.left count=1>", 509 509 "<erase.down>", 510 - "▲ 510 + "<red>▲</fg> 511 511 ", 512 512 "<cursor.show>", 513 513 ] ··· 516 516 exports[`spinner (isCI = false) > stop > renders message 1`] = ` 517 517 [ 518 518 "<cursor.hide>", 519 - "│ 519 + "<dim>│</fg> 520 520 ", 521 - "◒ ", 521 + "<magenta>◒</fg> ", 522 522 "<cursor.left count=1>", 523 523 "<erase.down>", 524 - "◇ foo 524 + "<green>◇</fg> foo 525 525 ", 526 526 "<cursor.show>", 527 527 ] ··· 530 530 exports[`spinner (isCI = false) > stop > renders message when cancelling 1`] = ` 531 531 [ 532 532 "<cursor.hide>", 533 - "│ 533 + "<dim>│</fg> 534 534 ", 535 - "◒ ", 535 + "<magenta>◒</fg> ", 536 536 "<cursor.left count=1>", 537 537 "<erase.down>", 538 - "■ too dizzy — spinning cancelled 538 + "<red>■</fg> too dizzy — spinning cancelled 539 539 ", 540 540 "<cursor.show>", 541 541 ] ··· 544 544 exports[`spinner (isCI = false) > stop > renders message when erroring 1`] = ` 545 545 [ 546 546 "<cursor.hide>", 547 - "│ 547 + "<dim>│</fg> 548 548 ", 549 - "◒ ", 549 + "<magenta>◒</fg> ", 550 550 "<cursor.left count=1>", 551 551 "<erase.down>", 552 - "▲ error: spun too fast! 552 + "<red>▲</fg> error: spun too fast! 553 553 ", 554 554 "<cursor.show>", 555 555 ] ··· 558 558 exports[`spinner (isCI = false) > stop > renders message without removing dots 1`] = ` 559 559 [ 560 560 "<cursor.hide>", 561 - "│ 561 + "<dim>│</fg> 562 562 ", 563 - "◒ ", 563 + "<magenta>◒</fg> ", 564 564 "<cursor.left count=1>", 565 565 "<erase.down>", 566 - "◇ foo. 566 + "<green>◇</fg> foo. 567 567 ", 568 568 "<cursor.show>", 569 569 ] ··· 572 572 exports[`spinner (isCI = false) > stop > renders submit symbol and stops spinner 1`] = ` 573 573 [ 574 574 "<cursor.hide>", 575 - "│ 575 + "<dim>│</fg> 576 576 ", 577 - "◒ ", 577 + "<magenta>◒</fg> ", 578 578 "<cursor.left count=1>", 579 579 "<erase.down>", 580 - "◇ 580 + "<green>◇</fg> 581 581 ", 582 582 "<cursor.show>", 583 583 ] ··· 586 586 exports[`spinner (isCI = false) > withGuide: false removes guide 1`] = ` 587 587 [ 588 588 "<cursor.hide>", 589 - "◒ foo", 589 + "<magenta>◒</fg> foo", 590 590 "<cursor.left count=1>", 591 591 "<erase.down>", 592 - "◇ 592 + "<green>◇</fg> 593 593 ", 594 594 "<cursor.show>", 595 595 ] ··· 598 598 exports[`spinner (isCI = true) > can be aborted by a signal 1`] = ` 599 599 [ 600 600 "<cursor.hide>", 601 - "│ 601 + "<dim>│</fg> 602 602 ", 603 - "■ Canceled 603 + "<red>■</fg> Canceled 604 604 ", 605 605 "<cursor.show>", 606 606 ] ··· 609 609 exports[`spinner (isCI = true) > clear > stops and clears the spinner from the output 1`] = ` 610 610 [ 611 611 "<cursor.hide>", 612 - "│ 612 + "<dim>│</fg> 613 613 ", 614 - "◒ Loading...", 614 + "<magenta>◒</fg> Loading...", 615 615 " 616 616 ", 617 617 "<cursor.left count=1>", ··· 623 623 exports[`spinner (isCI = true) > global withGuide: false removes guide 1`] = ` 624 624 [ 625 625 "<cursor.hide>", 626 - "◒ foo...", 626 + "<magenta>◒</fg> foo...", 627 627 " 628 628 ", 629 629 "<cursor.left count=1>", 630 630 "<erase.down>", 631 - "◇ 631 + "<green>◇</fg> 632 632 ", 633 633 "<cursor.show>", 634 634 ] ··· 637 637 exports[`spinner (isCI = true) > indicator customization > custom delay 1`] = ` 638 638 [ 639 639 "<cursor.hide>", 640 - "│ 640 + "<dim>│</fg> 641 641 ", 642 - "◒ ...", 642 + "<magenta>◒</fg> ...", 643 643 " 644 644 ", 645 645 "<cursor.left count=1>", 646 646 "<erase.down>", 647 - "◇ 647 + "<green>◇</fg> 648 648 ", 649 649 "<cursor.show>", 650 650 ] ··· 653 653 exports[`spinner (isCI = true) > indicator customization > custom frame style 1`] = ` 654 654 [ 655 655 "<cursor.hide>", 656 - "│ 656 + "<dim>│</fg> 657 657 ", 658 - "◒ ...", 658 + "<red>◒</fg> ...", 659 659 " 660 660 ", 661 661 "<cursor.left count=1>", 662 662 "<erase.down>", 663 - "◇ 663 + "<green>◇</fg> 664 664 ", 665 665 "<cursor.show>", 666 666 ] ··· 669 669 exports[`spinner (isCI = true) > indicator customization > custom frames 1`] = ` 670 670 [ 671 671 "<cursor.hide>", 672 - "│ 672 + "<dim>│</fg> 673 673 ", 674 - "🐴 ...", 674 + "<magenta>🐴</fg> ...", 675 675 " 676 676 ", 677 677 "<cursor.left count=1>", 678 678 "<erase.down>", 679 - "◇ 679 + "<green>◇</fg> 680 680 ", 681 681 "<cursor.show>", 682 682 ] ··· 685 685 exports[`spinner (isCI = true) > indicator customization > custom frames with lots of frame have consistent ellipsis display 1`] = ` 686 686 [ 687 687 "<cursor.hide>", 688 - "│ 688 + "<dim>│</fg> 689 689 ", 690 - "0 ...", 690 + "<magenta>0</fg> ...", 691 691 " 692 692 ", 693 693 "<cursor.left count=1>", 694 694 "<erase.down>", 695 - "◇ 695 + "<green>◇</fg> 696 696 ", 697 697 "<cursor.show>", 698 698 ] ··· 701 701 exports[`spinner (isCI = true) > message > sets message for next frame 1`] = ` 702 702 [ 703 703 "<cursor.hide>", 704 - "│ 704 + "<dim>│</fg> 705 705 ", 706 - "◒ ...", 706 + "<magenta>◒</fg> ...", 707 707 " 708 708 ", 709 709 "<cursor.left count=1>", 710 710 "<erase.down>", 711 - "◐ foo...", 711 + "<magenta>◐</fg> foo...", 712 712 " 713 713 ", 714 714 "<cursor.left count=1>", 715 715 "<erase.down>", 716 - "◇ 716 + "<green>◇</fg> 717 717 ", 718 718 "<cursor.show>", 719 719 ] ··· 722 722 exports[`spinner (isCI = true) > process exit handling > prioritizes cancel option over global setting 1`] = ` 723 723 [ 724 724 "<cursor.hide>", 725 - "│ 725 + "<dim>│</fg> 726 726 ", 727 - "■ Spinner cancel message 727 + "<red>■</fg> Spinner cancel message 728 728 ", 729 729 "<cursor.show>", 730 730 ] ··· 733 733 exports[`spinner (isCI = true) > process exit handling > prioritizes error option over global setting 1`] = ` 734 734 [ 735 735 "<cursor.hide>", 736 - "│ 736 + "<dim>│</fg> 737 737 ", 738 - "▲ Spinner error message 738 + "<red>▲</fg> Spinner error message 739 739 ", 740 740 "<cursor.show>", 741 741 ] ··· 744 744 exports[`spinner (isCI = true) > process exit handling > uses custom cancel message when provided directly 1`] = ` 745 745 [ 746 746 "<cursor.hide>", 747 - "│ 747 + "<dim>│</fg> 748 748 ", 749 - "■ Custom cancel message 749 + "<red>■</fg> Custom cancel message 750 750 ", 751 751 "<cursor.show>", 752 752 ] ··· 755 755 exports[`spinner (isCI = true) > process exit handling > uses custom error message when provided directly 1`] = ` 756 756 [ 757 757 "<cursor.hide>", 758 - "│ 758 + "<dim>│</fg> 759 759 ", 760 - "▲ Custom error message 760 + "<red>▲</fg> Custom error message 761 761 ", 762 762 "<cursor.show>", 763 763 ] ··· 766 766 exports[`spinner (isCI = true) > process exit handling > uses default cancel message 1`] = ` 767 767 [ 768 768 "<cursor.hide>", 769 - "│ 769 + "<dim>│</fg> 770 770 ", 771 - "■ Canceled 771 + "<red>■</fg> Canceled 772 772 ", 773 773 "<cursor.show>", 774 774 ] ··· 777 777 exports[`spinner (isCI = true) > process exit handling > uses global custom cancel message from settings 1`] = ` 778 778 [ 779 779 "<cursor.hide>", 780 - "│ 780 + "<dim>│</fg> 781 781 ", 782 - "■ Global cancel message 782 + "<red>■</fg> Global cancel message 783 783 ", 784 784 "<cursor.show>", 785 785 ] ··· 788 788 exports[`spinner (isCI = true) > process exit handling > uses global custom error message from settings 1`] = ` 789 789 [ 790 790 "<cursor.hide>", 791 - "│ 791 + "<dim>│</fg> 792 792 ", 793 - "▲ Global error message 793 + "<red>▲</fg> Global error message 794 794 ", 795 795 "<cursor.show>", 796 796 ] ··· 799 799 exports[`spinner (isCI = true) > start > handles multi-line messages 1`] = ` 800 800 [ 801 801 "<cursor.hide>", 802 - "│ 802 + "<dim>│</fg> 803 803 ", 804 - "◒ foo 804 + "<magenta>◒</fg> foo 805 805 bar 806 806 baz...", 807 807 " ··· 809 809 "<cursor.up count=2>", 810 810 "<cursor.left count=1>", 811 811 "<erase.down>", 812 - "◇ 812 + "<green>◇</fg> 813 813 ", 814 814 "<cursor.show>", 815 815 ] ··· 818 818 exports[`spinner (isCI = true) > start > handles wrapping 1`] = ` 819 819 [ 820 820 "<cursor.hide>", 821 - "│ 821 + "<dim>│</fg> 822 822 ", 823 - "◒ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 823 + "<magenta>◒</fg> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 824 824 xxxxxxxxxxxxx...", 825 825 " 826 826 ", 827 827 "<cursor.up count=1>", 828 828 "<cursor.left count=1>", 829 829 "<erase.down>", 830 - "◇ stopped 830 + "<green>◇</fg> stopped 831 831 ", 832 832 "<cursor.show>", 833 833 ] ··· 836 836 exports[`spinner (isCI = true) > start > renders frames at interval 1`] = ` 837 837 [ 838 838 "<cursor.hide>", 839 - "│ 839 + "<dim>│</fg> 840 840 ", 841 - "◒ ...", 841 + "<magenta>◒</fg> ...", 842 842 " 843 843 ", 844 844 "<cursor.left count=1>", 845 845 "<erase.down>", 846 - "◇ 846 + "<green>◇</fg> 847 847 ", 848 848 "<cursor.show>", 849 849 ] ··· 852 852 exports[`spinner (isCI = true) > start > renders message 1`] = ` 853 853 [ 854 854 "<cursor.hide>", 855 - "│ 855 + "<dim>│</fg> 856 856 ", 857 - "◒ foo...", 857 + "<magenta>◒</fg> foo...", 858 858 " 859 859 ", 860 860 "<cursor.left count=1>", 861 861 "<erase.down>", 862 - "◇ 862 + "<green>◇</fg> 863 863 ", 864 864 "<cursor.show>", 865 865 ] ··· 868 868 exports[`spinner (isCI = true) > start > renders timer when indicator is "timer" 1`] = ` 869 869 [ 870 870 "<cursor.hide>", 871 - "│ 871 + "<dim>│</fg> 872 872 ", 873 - "◒ ...", 873 + "<magenta>◒</fg> ...", 874 874 " 875 875 ", 876 876 "<cursor.left count=1>", 877 877 "<erase.down>", 878 - "◇ [0s] 878 + "<green>◇</fg> [0s] 879 879 ", 880 880 "<cursor.show>", 881 881 ] ··· 884 884 exports[`spinner (isCI = true) > stop > renders cancel symbol when calling cancel() 1`] = ` 885 885 [ 886 886 "<cursor.hide>", 887 - "│ 887 + "<dim>│</fg> 888 888 ", 889 - "◒ ...", 889 + "<magenta>◒</fg> ...", 890 890 " 891 891 ", 892 892 "<cursor.left count=1>", 893 893 "<erase.down>", 894 - "■ 894 + "<red>■</fg> 895 895 ", 896 896 "<cursor.show>", 897 897 ] ··· 900 900 exports[`spinner (isCI = true) > stop > renders error symbol when calling error() 1`] = ` 901 901 [ 902 902 "<cursor.hide>", 903 - "│ 903 + "<dim>│</fg> 904 904 ", 905 - "◒ ...", 905 + "<magenta>◒</fg> ...", 906 906 " 907 907 ", 908 908 "<cursor.left count=1>", 909 909 "<erase.down>", 910 - "▲ 910 + "<red>▲</fg> 911 911 ", 912 912 "<cursor.show>", 913 913 ] ··· 916 916 exports[`spinner (isCI = true) > stop > renders message 1`] = ` 917 917 [ 918 918 "<cursor.hide>", 919 - "│ 919 + "<dim>│</fg> 920 920 ", 921 - "◒ ...", 921 + "<magenta>◒</fg> ...", 922 922 " 923 923 ", 924 924 "<cursor.left count=1>", 925 925 "<erase.down>", 926 - "◇ foo 926 + "<green>◇</fg> foo 927 927 ", 928 928 "<cursor.show>", 929 929 ] ··· 932 932 exports[`spinner (isCI = true) > stop > renders message when cancelling 1`] = ` 933 933 [ 934 934 "<cursor.hide>", 935 - "│ 935 + "<dim>│</fg> 936 936 ", 937 - "◒ ...", 937 + "<magenta>◒</fg> ...", 938 938 " 939 939 ", 940 940 "<cursor.left count=1>", 941 941 "<erase.down>", 942 - "■ too dizzy — spinning cancelled 942 + "<red>■</fg> too dizzy — spinning cancelled 943 943 ", 944 944 "<cursor.show>", 945 945 ] ··· 948 948 exports[`spinner (isCI = true) > stop > renders message when erroring 1`] = ` 949 949 [ 950 950 "<cursor.hide>", 951 - "│ 951 + "<dim>│</fg> 952 952 ", 953 - "◒ ...", 953 + "<magenta>◒</fg> ...", 954 954 " 955 955 ", 956 956 "<cursor.left count=1>", 957 957 "<erase.down>", 958 - "▲ error: spun too fast! 958 + "<red>▲</fg> error: spun too fast! 959 959 ", 960 960 "<cursor.show>", 961 961 ] ··· 964 964 exports[`spinner (isCI = true) > stop > renders message without removing dots 1`] = ` 965 965 [ 966 966 "<cursor.hide>", 967 - "│ 967 + "<dim>│</fg> 968 968 ", 969 - "◒ ...", 969 + "<magenta>◒</fg> ...", 970 970 " 971 971 ", 972 972 "<cursor.left count=1>", 973 973 "<erase.down>", 974 - "◇ foo. 974 + "<green>◇</fg> foo. 975 975 ", 976 976 "<cursor.show>", 977 977 ] ··· 980 980 exports[`spinner (isCI = true) > stop > renders submit symbol and stops spinner 1`] = ` 981 981 [ 982 982 "<cursor.hide>", 983 - "│ 983 + "<dim>│</fg> 984 984 ", 985 - "◒ ...", 985 + "<magenta>◒</fg> ...", 986 986 " 987 987 ", 988 988 "<cursor.left count=1>", 989 989 "<erase.down>", 990 - "◇ 990 + "<green>◇</fg> 991 991 ", 992 992 "<cursor.show>", 993 993 ] ··· 996 996 exports[`spinner (isCI = true) > withGuide: false removes guide 1`] = ` 997 997 [ 998 998 "<cursor.hide>", 999 - "◒ foo...", 999 + "<magenta>◒</fg> foo...", 1000 1000 " 1001 1001 ", 1002 1002 "<cursor.left count=1>", 1003 1003 "<erase.down>", 1004 - "◇ 1004 + "<green>◇</fg> 1005 1005 ", 1006 1006 "<cursor.show>", 1007 1007 ]
+748 -748
packages/prompts/src/__snapshots__/task-log.test.ts.snap
··· 2 2 3 3 exports[`taskLog (isCI = false) > error > clears output if showLog = false 1`] = ` 4 4 [ 5 - "│ 5 + "<dim>│</fg> 6 6 ", 7 - "◇ foo 7 + "<green>◇</fg> foo 8 8 ", 9 - "│ 9 + "<dim>│</fg> 10 10 ", 11 - "│ line 0 11 + "<dim>│</fg> <dim>line 0</bold> 12 12 ", 13 13 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 14 - "│ line 0 15 - │ line 1 14 + "<dim>│</fg> <dim>line 0</bold> 15 + <dim>│</fg> <dim>line 1</bold> 16 16 ", 17 17 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 18 - "│ 19 - ■ some error! 18 + "<dim>│</fg> 19 + <red>■</fg> some error! 20 20 ", 21 21 ] 22 22 `; 23 23 24 24 exports[`taskLog (isCI = false) > error > renders output with message 1`] = ` 25 25 [ 26 - "│ 26 + "<dim>│</fg> 27 27 ", 28 - "◇ foo 28 + "<green>◇</fg> foo 29 29 ", 30 - "│ 30 + "<dim>│</fg> 31 31 ", 32 - "│ line 0 32 + "<dim>│</fg> <dim>line 0</bold> 33 33 ", 34 34 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 35 - "│ line 0 36 - │ line 1 35 + "<dim>│</fg> <dim>line 0</bold> 36 + <dim>│</fg> <dim>line 1</bold> 37 37 ", 38 38 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 39 - "│ 40 - ■ some error! 39 + "<dim>│</fg> 40 + <red>■</fg> some error! 41 41 ", 42 - "│ 43 - │ line 0 44 - │ line 1 42 + "<dim>│</fg> 43 + <dim>│</fg> <dim>line 0</bold> 44 + <dim>│</fg> <dim>line 1</bold> 45 45 ", 46 46 ] 47 47 `; 48 48 49 49 exports[`taskLog (isCI = false) > group > applies limit per group 1`] = ` 50 50 [ 51 - "│ 51 + "<dim>│</fg> 52 52 ", 53 - "◇ Some log 53 + "<green>◇</fg> Some log 54 54 ", 55 - "│ 55 + "<dim>│</fg> 56 56 ", 57 - "│ Group 0 57 + "<dim>│</fg> <bold>Group 0</bold> 58 58 ", 59 - "│ Group 0 line 0 59 + "<dim>│</fg> <dim>Group 0 line 0</bold> 60 60 ", 61 61 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 62 - "│ Group 0 62 + "<dim>│</fg> <bold>Group 0</bold> 63 63 ", 64 - "│ Group 0 line 0 64 + "<dim>│</fg> <dim>Group 0 line 0</bold> 65 65 ", 66 - "│ Group 1 66 + "<dim>│</fg> <bold>Group 1</bold> 67 67 ", 68 - "│ Group 1 line 0 68 + "<dim>│</fg> <dim>Group 1 line 0</bold> 69 69 ", 70 70 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 71 - "│ Group 0 71 + "<dim>│</fg> <bold>Group 0</bold> 72 72 ", 73 - "│ Group 0 line 0 74 - │ Group 0 line 1 73 + "<dim>│</fg> <dim>Group 0 line 0</bold> 74 + <dim>│</fg> <dim>Group 0 line 1</bold> 75 75 ", 76 - "│ Group 1 76 + "<dim>│</fg> <bold>Group 1</bold> 77 77 ", 78 - "│ Group 1 line 0 78 + "<dim>│</fg> <dim>Group 1 line 0</bold> 79 79 ", 80 80 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 81 - "│ Group 0 81 + "<dim>│</fg> <bold>Group 0</bold> 82 82 ", 83 - "│ Group 0 line 0 84 - │ Group 0 line 1 83 + "<dim>│</fg> <dim>Group 0 line 0</bold> 84 + <dim>│</fg> <dim>Group 0 line 1</bold> 85 85 ", 86 - "│ Group 1 86 + "<dim>│</fg> <bold>Group 1</bold> 87 87 ", 88 - "│ Group 1 line 0 89 - │ Group 1 line 1 88 + "<dim>│</fg> <dim>Group 1 line 0</bold> 89 + <dim>│</fg> <dim>Group 1 line 1</bold> 90 90 ", 91 91 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 92 - "│ Group 0 92 + "<dim>│</fg> <bold>Group 0</bold> 93 93 ", 94 - "│ Group 0 line 1 95 - │ Group 0 line 2 94 + "<dim>│</fg> <dim>Group 0 line 1</bold> 95 + <dim>│</fg> <dim>Group 0 line 2</bold> 96 96 ", 97 - "│ Group 1 97 + "<dim>│</fg> <bold>Group 1</bold> 98 98 ", 99 - "│ Group 1 line 0 100 - │ Group 1 line 1 99 + "<dim>│</fg> <dim>Group 1 line 0</bold> 100 + <dim>│</fg> <dim>Group 1 line 1</bold> 101 101 ", 102 102 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 103 - "│ Group 0 103 + "<dim>│</fg> <bold>Group 0</bold> 104 104 ", 105 - "│ Group 0 line 1 106 - │ Group 0 line 2 105 + "<dim>│</fg> <dim>Group 0 line 1</bold> 106 + <dim>│</fg> <dim>Group 0 line 2</bold> 107 107 ", 108 - "│ Group 1 108 + "<dim>│</fg> <bold>Group 1</bold> 109 109 ", 110 - "│ Group 1 line 1 111 - │ Group 1 line 2 110 + "<dim>│</fg> <dim>Group 1 line 1</bold> 111 + <dim>│</fg> <dim>Group 1 line 2</bold> 112 112 ", 113 113 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 114 - "│ Group 0 114 + "<dim>│</fg> <bold>Group 0</bold> 115 115 ", 116 - "│ Group 0 line 2 117 - │ Group 0 line 3 116 + "<dim>│</fg> <dim>Group 0 line 2</bold> 117 + <dim>│</fg> <dim>Group 0 line 3</bold> 118 118 ", 119 - "│ Group 1 119 + "<dim>│</fg> <bold>Group 1</bold> 120 120 ", 121 - "│ Group 1 line 1 122 - │ Group 1 line 2 121 + "<dim>│</fg> <dim>Group 1 line 1</bold> 122 + <dim>│</fg> <dim>Group 1 line 2</bold> 123 123 ", 124 124 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 125 - "│ Group 0 125 + "<dim>│</fg> <bold>Group 0</bold> 126 126 ", 127 - "│ Group 0 line 2 128 - │ Group 0 line 3 127 + "<dim>│</fg> <dim>Group 0 line 2</bold> 128 + <dim>│</fg> <dim>Group 0 line 3</bold> 129 129 ", 130 - "│ Group 1 130 + "<dim>│</fg> <bold>Group 1</bold> 131 131 ", 132 - "│ Group 1 line 2 133 - │ Group 1 line 3 132 + "<dim>│</fg> <dim>Group 1 line 2</bold> 133 + <dim>│</fg> <dim>Group 1 line 3</bold> 134 134 ", 135 135 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 136 - "│ Group 0 136 + "<dim>│</fg> <bold>Group 0</bold> 137 137 ", 138 - "│ Group 0 line 3 139 - │ Group 0 line 4 138 + "<dim>│</fg> <dim>Group 0 line 3</bold> 139 + <dim>│</fg> <dim>Group 0 line 4</bold> 140 140 ", 141 - "│ Group 1 141 + "<dim>│</fg> <bold>Group 1</bold> 142 142 ", 143 - "│ Group 1 line 2 144 - │ Group 1 line 3 143 + "<dim>│</fg> <dim>Group 1 line 2</bold> 144 + <dim>│</fg> <dim>Group 1 line 3</bold> 145 145 ", 146 146 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 147 - "│ Group 0 147 + "<dim>│</fg> <bold>Group 0</bold> 148 148 ", 149 - "│ Group 0 line 3 150 - │ Group 0 line 4 149 + "<dim>│</fg> <dim>Group 0 line 3</bold> 150 + <dim>│</fg> <dim>Group 0 line 4</bold> 151 151 ", 152 - "│ Group 1 152 + "<dim>│</fg> <bold>Group 1</bold> 153 153 ", 154 - "│ Group 1 line 3 155 - │ Group 1 line 4 154 + "<dim>│</fg> <dim>Group 1 line 3</bold> 155 + <dim>│</fg> <dim>Group 1 line 4</bold> 156 156 ", 157 157 ] 158 158 `; 159 159 160 160 exports[`taskLog (isCI = false) > group > can render multiple groups of different sizes 1`] = ` 161 161 [ 162 - "│ 162 + "<dim>│</fg> 163 163 ", 164 - "◇ Some log 164 + "<green>◇</fg> Some log 165 165 ", 166 - "│ 166 + "<dim>│</fg> 167 167 ", 168 - "│ Group 0 168 + "<dim>│</fg> <bold>Group 0</bold> 169 169 ", 170 - "│ Group 0 line 0 170 + "<dim>│</fg> <dim>Group 0 line 0</bold> 171 171 ", 172 172 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 173 - "│ Group 0 173 + "<dim>│</fg> <bold>Group 0</bold> 174 174 ", 175 - "│ Group 0 line 0 176 - │ Group 0 line 1 175 + "<dim>│</fg> <dim>Group 0 line 0</bold> 176 + <dim>│</fg> <dim>Group 0 line 1</bold> 177 177 ", 178 178 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 179 - "│ Group 0 179 + "<dim>│</fg> <bold>Group 0</bold> 180 180 ", 181 - "│ Group 0 line 0 182 - │ Group 0 line 1 183 - │ Group 0 line 2 181 + "<dim>│</fg> <dim>Group 0 line 0</bold> 182 + <dim>│</fg> <dim>Group 0 line 1</bold> 183 + <dim>│</fg> <dim>Group 0 line 2</bold> 184 184 ", 185 185 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 186 - "│ Group 0 186 + "<dim>│</fg> <bold>Group 0</bold> 187 187 ", 188 - "│ Group 0 line 0 189 - │ Group 0 line 1 190 - │ Group 0 line 2 188 + "<dim>│</fg> <dim>Group 0 line 0</bold> 189 + <dim>│</fg> <dim>Group 0 line 1</bold> 190 + <dim>│</fg> <dim>Group 0 line 2</bold> 191 191 ", 192 - "│ Group 1 192 + "<dim>│</fg> <bold>Group 1</bold> 193 193 ", 194 - "│ Group 1 line 0 194 + "<dim>│</fg> <dim>Group 1 line 0</bold> 195 195 ", 196 196 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 197 - "│ Group 0 197 + "<dim>│</fg> <bold>Group 0</bold> 198 198 ", 199 - "│ Group 0 line 0 200 - │ Group 0 line 1 201 - │ Group 0 line 2 199 + "<dim>│</fg> <dim>Group 0 line 0</bold> 200 + <dim>│</fg> <dim>Group 0 line 1</bold> 201 + <dim>│</fg> <dim>Group 0 line 2</bold> 202 202 ", 203 - "│ Group 1 203 + "<dim>│</fg> <bold>Group 1</bold> 204 204 ", 205 - "│ Group 1 line 0 206 - │ Group 1 line 1 205 + "<dim>│</fg> <dim>Group 1 line 0</bold> 206 + <dim>│</fg> <dim>Group 1 line 1</bold> 207 207 ", 208 208 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 209 - "│ Group 0 209 + "<dim>│</fg> <bold>Group 0</bold> 210 210 ", 211 - "│ Group 0 line 0 212 - │ Group 0 line 1 213 - │ Group 0 line 2 211 + "<dim>│</fg> <dim>Group 0 line 0</bold> 212 + <dim>│</fg> <dim>Group 0 line 1</bold> 213 + <dim>│</fg> <dim>Group 0 line 2</bold> 214 214 ", 215 - "│ Group 1 215 + "<dim>│</fg> <bold>Group 1</bold> 216 216 ", 217 - "│ Group 1 line 0 218 - │ Group 1 line 1 219 - │ Group 1 line 2 217 + "<dim>│</fg> <dim>Group 1 line 0</bold> 218 + <dim>│</fg> <dim>Group 1 line 1</bold> 219 + <dim>│</fg> <dim>Group 1 line 2</bold> 220 220 ", 221 221 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 222 - "│ Group 0 222 + "<dim>│</fg> <bold>Group 0</bold> 223 223 ", 224 - "│ Group 0 line 0 225 - │ Group 0 line 1 226 - │ Group 0 line 2 224 + "<dim>│</fg> <dim>Group 0 line 0</bold> 225 + <dim>│</fg> <dim>Group 0 line 1</bold> 226 + <dim>│</fg> <dim>Group 0 line 2</bold> 227 227 ", 228 - "│ Group 1 228 + "<dim>│</fg> <bold>Group 1</bold> 229 229 ", 230 - "│ Group 1 line 0 231 - │ Group 1 line 1 232 - │ Group 1 line 2 233 - │ Group 1 line 3 230 + "<dim>│</fg> <dim>Group 1 line 0</bold> 231 + <dim>│</fg> <dim>Group 1 line 1</bold> 232 + <dim>│</fg> <dim>Group 1 line 2</bold> 233 + <dim>│</fg> <dim>Group 1 line 3</bold> 234 234 ", 235 235 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 236 - "│ Group 0 236 + "<dim>│</fg> <bold>Group 0</bold> 237 237 ", 238 - "│ Group 0 line 0 239 - │ Group 0 line 1 240 - │ Group 0 line 2 238 + "<dim>│</fg> <dim>Group 0 line 0</bold> 239 + <dim>│</fg> <dim>Group 0 line 1</bold> 240 + <dim>│</fg> <dim>Group 0 line 2</bold> 241 241 ", 242 - "│ Group 1 242 + "<dim>│</fg> <bold>Group 1</bold> 243 243 ", 244 - "│ Group 1 line 0 245 - │ Group 1 line 1 246 - │ Group 1 line 2 247 - │ Group 1 line 3 248 - │ Group 1 line 4 244 + "<dim>│</fg> <dim>Group 1 line 0</bold> 245 + <dim>│</fg> <dim>Group 1 line 1</bold> 246 + <dim>│</fg> <dim>Group 1 line 2</bold> 247 + <dim>│</fg> <dim>Group 1 line 3</bold> 248 + <dim>│</fg> <dim>Group 1 line 4</bold> 249 249 ", 250 250 ] 251 251 `; 252 252 253 253 exports[`taskLog (isCI = false) > group > can render multiple groups of equal size 1`] = ` 254 254 [ 255 - "│ 255 + "<dim>│</fg> 256 256 ", 257 - "◇ Some log 257 + "<green>◇</fg> Some log 258 258 ", 259 - "│ 259 + "<dim>│</fg> 260 260 ", 261 - "│ Group 0 261 + "<dim>│</fg> <bold>Group 0</bold> 262 262 ", 263 - "│ Group 0 line 0 263 + "<dim>│</fg> <dim>Group 0 line 0</bold> 264 264 ", 265 265 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 266 - "│ Group 0 266 + "<dim>│</fg> <bold>Group 0</bold> 267 267 ", 268 - "│ Group 0 line 0 268 + "<dim>│</fg> <dim>Group 0 line 0</bold> 269 269 ", 270 - "│ Group 1 270 + "<dim>│</fg> <bold>Group 1</bold> 271 271 ", 272 - "│ Group 1 line 0 272 + "<dim>│</fg> <dim>Group 1 line 0</bold> 273 273 ", 274 274 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 275 - "│ Group 0 275 + "<dim>│</fg> <bold>Group 0</bold> 276 276 ", 277 - "│ Group 0 line 0 278 - │ Group 0 line 1 277 + "<dim>│</fg> <dim>Group 0 line 0</bold> 278 + <dim>│</fg> <dim>Group 0 line 1</bold> 279 279 ", 280 - "│ Group 1 280 + "<dim>│</fg> <bold>Group 1</bold> 281 281 ", 282 - "│ Group 1 line 0 282 + "<dim>│</fg> <dim>Group 1 line 0</bold> 283 283 ", 284 284 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 285 - "│ Group 0 285 + "<dim>│</fg> <bold>Group 0</bold> 286 286 ", 287 - "│ Group 0 line 0 288 - │ Group 0 line 1 287 + "<dim>│</fg> <dim>Group 0 line 0</bold> 288 + <dim>│</fg> <dim>Group 0 line 1</bold> 289 289 ", 290 - "│ Group 1 290 + "<dim>│</fg> <bold>Group 1</bold> 291 291 ", 292 - "│ Group 1 line 0 293 - │ Group 1 line 1 292 + "<dim>│</fg> <dim>Group 1 line 0</bold> 293 + <dim>│</fg> <dim>Group 1 line 1</bold> 294 294 ", 295 295 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 296 - "│ Group 0 296 + "<dim>│</fg> <bold>Group 0</bold> 297 297 ", 298 - "│ Group 0 line 0 299 - │ Group 0 line 1 300 - │ Group 0 line 2 298 + "<dim>│</fg> <dim>Group 0 line 0</bold> 299 + <dim>│</fg> <dim>Group 0 line 1</bold> 300 + <dim>│</fg> <dim>Group 0 line 2</bold> 301 301 ", 302 - "│ Group 1 302 + "<dim>│</fg> <bold>Group 1</bold> 303 303 ", 304 - "│ Group 1 line 0 305 - │ Group 1 line 1 304 + "<dim>│</fg> <dim>Group 1 line 0</bold> 305 + <dim>│</fg> <dim>Group 1 line 1</bold> 306 306 ", 307 307 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 308 - "│ Group 0 308 + "<dim>│</fg> <bold>Group 0</bold> 309 309 ", 310 - "│ Group 0 line 0 311 - │ Group 0 line 1 312 - │ Group 0 line 2 310 + "<dim>│</fg> <dim>Group 0 line 0</bold> 311 + <dim>│</fg> <dim>Group 0 line 1</bold> 312 + <dim>│</fg> <dim>Group 0 line 2</bold> 313 313 ", 314 - "│ Group 1 314 + "<dim>│</fg> <bold>Group 1</bold> 315 315 ", 316 - "│ Group 1 line 0 317 - │ Group 1 line 1 318 - │ Group 1 line 2 316 + "<dim>│</fg> <dim>Group 1 line 0</bold> 317 + <dim>│</fg> <dim>Group 1 line 1</bold> 318 + <dim>│</fg> <dim>Group 1 line 2</bold> 319 319 ", 320 320 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 321 - "│ Group 0 321 + "<dim>│</fg> <bold>Group 0</bold> 322 322 ", 323 - "│ Group 0 line 0 324 - │ Group 0 line 1 325 - │ Group 0 line 2 326 - │ Group 0 line 3 323 + "<dim>│</fg> <dim>Group 0 line 0</bold> 324 + <dim>│</fg> <dim>Group 0 line 1</bold> 325 + <dim>│</fg> <dim>Group 0 line 2</bold> 326 + <dim>│</fg> <dim>Group 0 line 3</bold> 327 327 ", 328 - "│ Group 1 328 + "<dim>│</fg> <bold>Group 1</bold> 329 329 ", 330 - "│ Group 1 line 0 331 - │ Group 1 line 1 332 - │ Group 1 line 2 330 + "<dim>│</fg> <dim>Group 1 line 0</bold> 331 + <dim>│</fg> <dim>Group 1 line 1</bold> 332 + <dim>│</fg> <dim>Group 1 line 2</bold> 333 333 ", 334 334 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 335 - "│ Group 0 335 + "<dim>│</fg> <bold>Group 0</bold> 336 336 ", 337 - "│ Group 0 line 0 338 - │ Group 0 line 1 339 - │ Group 0 line 2 340 - │ Group 0 line 3 337 + "<dim>│</fg> <dim>Group 0 line 0</bold> 338 + <dim>│</fg> <dim>Group 0 line 1</bold> 339 + <dim>│</fg> <dim>Group 0 line 2</bold> 340 + <dim>│</fg> <dim>Group 0 line 3</bold> 341 341 ", 342 - "│ Group 1 342 + "<dim>│</fg> <bold>Group 1</bold> 343 343 ", 344 - "│ Group 1 line 0 345 - │ Group 1 line 1 346 - │ Group 1 line 2 347 - │ Group 1 line 3 344 + "<dim>│</fg> <dim>Group 1 line 0</bold> 345 + <dim>│</fg> <dim>Group 1 line 1</bold> 346 + <dim>│</fg> <dim>Group 1 line 2</bold> 347 + <dim>│</fg> <dim>Group 1 line 3</bold> 348 348 ", 349 349 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 350 - "│ Group 0 350 + "<dim>│</fg> <bold>Group 0</bold> 351 351 ", 352 - "│ Group 0 line 0 353 - │ Group 0 line 1 354 - │ Group 0 line 2 355 - │ Group 0 line 3 356 - │ Group 0 line 4 352 + "<dim>│</fg> <dim>Group 0 line 0</bold> 353 + <dim>│</fg> <dim>Group 0 line 1</bold> 354 + <dim>│</fg> <dim>Group 0 line 2</bold> 355 + <dim>│</fg> <dim>Group 0 line 3</bold> 356 + <dim>│</fg> <dim>Group 0 line 4</bold> 357 357 ", 358 - "│ Group 1 358 + "<dim>│</fg> <bold>Group 1</bold> 359 359 ", 360 - "│ Group 1 line 0 361 - │ Group 1 line 1 362 - │ Group 1 line 2 363 - │ Group 1 line 3 360 + "<dim>│</fg> <dim>Group 1 line 0</bold> 361 + <dim>│</fg> <dim>Group 1 line 1</bold> 362 + <dim>│</fg> <dim>Group 1 line 2</bold> 363 + <dim>│</fg> <dim>Group 1 line 3</bold> 364 364 ", 365 365 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 366 - "│ Group 0 366 + "<dim>│</fg> <bold>Group 0</bold> 367 367 ", 368 - "│ Group 0 line 0 369 - │ Group 0 line 1 370 - │ Group 0 line 2 371 - │ Group 0 line 3 372 - │ Group 0 line 4 368 + "<dim>│</fg> <dim>Group 0 line 0</bold> 369 + <dim>│</fg> <dim>Group 0 line 1</bold> 370 + <dim>│</fg> <dim>Group 0 line 2</bold> 371 + <dim>│</fg> <dim>Group 0 line 3</bold> 372 + <dim>│</fg> <dim>Group 0 line 4</bold> 373 373 ", 374 - "│ Group 1 374 + "<dim>│</fg> <bold>Group 1</bold> 375 375 ", 376 - "│ Group 1 line 0 377 - │ Group 1 line 1 378 - │ Group 1 line 2 379 - │ Group 1 line 3 380 - │ Group 1 line 4 376 + "<dim>│</fg> <dim>Group 1 line 0</bold> 377 + <dim>│</fg> <dim>Group 1 line 1</bold> 378 + <dim>│</fg> <dim>Group 1 line 2</bold> 379 + <dim>│</fg> <dim>Group 1 line 3</bold> 380 + <dim>│</fg> <dim>Group 1 line 4</bold> 381 381 ", 382 382 ] 383 383 `; 384 384 385 385 exports[`taskLog (isCI = false) > group > handles empty groups 1`] = ` 386 386 [ 387 - "│ 387 + "<dim>│</fg> 388 388 ", 389 - "◇ Some log 389 + "<green>◇</fg> Some log 390 390 ", 391 - "│ 391 + "<dim>│</fg> 392 392 ", 393 - "◆ Group success! 393 + "<green>◆</fg> Group success! 394 394 ", 395 395 ] 396 396 `; 397 397 398 398 exports[`taskLog (isCI = false) > group > renders error state 1`] = ` 399 399 [ 400 - "│ 400 + "<dim>│</fg> 401 401 ", 402 - "◇ Some log 402 + "<green>◇</fg> Some log 403 403 ", 404 - "│ 404 + "<dim>│</fg> 405 405 ", 406 - "│ Group 0 406 + "<dim>│</fg> <bold>Group 0</bold> 407 407 ", 408 - "│ Group 0 line 0 408 + "<dim>│</fg> <dim>Group 0 line 0</bold> 409 409 ", 410 410 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 411 - "■ Group error! 411 + "<red>■</fg> Group error! 412 412 ", 413 413 ] 414 414 `; 415 415 416 416 exports[`taskLog (isCI = false) > group > renders group error state 1`] = ` 417 417 [ 418 - "│ 418 + "<dim>│</fg> 419 419 ", 420 - "◇ Some log 420 + "<green>◇</fg> Some log 421 421 ", 422 - "│ 422 + "<dim>│</fg> 423 423 ", 424 - "│ Group 0 424 + "<dim>│</fg> <bold>Group 0</bold> 425 425 ", 426 - "│ Group 0 line 0 426 + "<dim>│</fg> <dim>Group 0 line 0</bold> 427 427 ", 428 428 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 429 - "■ Group error! 429 + "<red>■</fg> Group error! 430 430 ", 431 431 ] 432 432 `; 433 433 434 434 exports[`taskLog (isCI = false) > group > renders group success state 1`] = ` 435 435 [ 436 - "│ 436 + "<dim>│</fg> 437 437 ", 438 - "◇ Some log 438 + "<green>◇</fg> Some log 439 439 ", 440 - "│ 440 + "<dim>│</fg> 441 441 ", 442 - "│ Group 0 442 + "<dim>│</fg> <bold>Group 0</bold> 443 443 ", 444 - "│ Group 0 line 0 444 + "<dim>│</fg> <dim>Group 0 line 0</bold> 445 445 ", 446 446 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 447 - "◆ Group success! 447 + "<green>◆</fg> Group success! 448 448 ", 449 449 ] 450 450 `; 451 451 452 452 exports[`taskLog (isCI = false) > group > renders success state 1`] = ` 453 453 [ 454 - "│ 454 + "<dim>│</fg> 455 455 ", 456 - "◇ Some log 456 + "<green>◇</fg> Some log 457 457 ", 458 - "│ 458 + "<dim>│</fg> 459 459 ", 460 - "│ Group 0 460 + "<dim>│</fg> <bold>Group 0</bold> 461 461 ", 462 - "│ Group 0 line 0 462 + "<dim>│</fg> <dim>Group 0 line 0</bold> 463 463 ", 464 464 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 465 - "◆ Group success! 465 + "<green>◆</fg> Group success! 466 466 ", 467 467 ] 468 468 `; 469 469 470 470 exports[`taskLog (isCI = false) > group > showLog shows all groups in order 1`] = ` 471 471 [ 472 - "│ 472 + "<dim>│</fg> 473 473 ", 474 - "◇ Some log 474 + "<green>◇</fg> Some log 475 475 ", 476 - "│ 476 + "<dim>│</fg> 477 477 ", 478 - "│ Group 0 478 + "<dim>│</fg> <bold>Group 0</bold> 479 479 ", 480 - "│ Group 0 line 0 480 + "<dim>│</fg> <dim>Group 0 line 0</bold> 481 481 ", 482 482 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 483 - "│ Group 0 483 + "<dim>│</fg> <bold>Group 0</bold> 484 484 ", 485 - "│ Group 0 line 0 486 - │ Group 0 line 1 485 + "<dim>│</fg> <dim>Group 0 line 0</bold> 486 + <dim>│</fg> <dim>Group 0 line 1</bold> 487 487 ", 488 488 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 489 - "│ Group 0 489 + "<dim>│</fg> <bold>Group 0</bold> 490 490 ", 491 - "│ Group 0 line 0 492 - │ Group 0 line 1 493 - │ Group 0 line 2 491 + "<dim>│</fg> <dim>Group 0 line 0</bold> 492 + <dim>│</fg> <dim>Group 0 line 1</bold> 493 + <dim>│</fg> <dim>Group 0 line 2</bold> 494 494 ", 495 495 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 496 - "│ Group 0 496 + "<dim>│</fg> <bold>Group 0</bold> 497 497 ", 498 - "│ Group 0 line 0 499 - │ Group 0 line 1 500 - │ Group 0 line 2 498 + "<dim>│</fg> <dim>Group 0 line 0</bold> 499 + <dim>│</fg> <dim>Group 0 line 1</bold> 500 + <dim>│</fg> <dim>Group 0 line 2</bold> 501 501 ", 502 - "│ Group 1 502 + "<dim>│</fg> <bold>Group 1</bold> 503 503 ", 504 - "│ Group 1 line 0 504 + "<dim>│</fg> <dim>Group 1 line 0</bold> 505 505 ", 506 506 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 507 - "│ Group 0 507 + "<dim>│</fg> <bold>Group 0</bold> 508 508 ", 509 - "│ Group 0 line 0 510 - │ Group 0 line 1 511 - │ Group 0 line 2 509 + "<dim>│</fg> <dim>Group 0 line 0</bold> 510 + <dim>│</fg> <dim>Group 0 line 1</bold> 511 + <dim>│</fg> <dim>Group 0 line 2</bold> 512 512 ", 513 - "│ Group 1 513 + "<dim>│</fg> <bold>Group 1</bold> 514 514 ", 515 - "│ Group 1 line 0 516 - │ Group 1 line 1 515 + "<dim>│</fg> <dim>Group 1 line 0</bold> 516 + <dim>│</fg> <dim>Group 1 line 1</bold> 517 517 ", 518 518 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 519 - "│ Group 0 519 + "<dim>│</fg> <bold>Group 0</bold> 520 520 ", 521 - "│ Group 0 line 0 522 - │ Group 0 line 1 523 - │ Group 0 line 2 521 + "<dim>│</fg> <dim>Group 0 line 0</bold> 522 + <dim>│</fg> <dim>Group 0 line 1</bold> 523 + <dim>│</fg> <dim>Group 0 line 2</bold> 524 524 ", 525 - "│ Group 1 525 + "<dim>│</fg> <bold>Group 1</bold> 526 526 ", 527 - "│ Group 1 line 0 528 - │ Group 1 line 1 529 - │ Group 1 line 2 527 + "<dim>│</fg> <dim>Group 1 line 0</bold> 528 + <dim>│</fg> <dim>Group 1 line 1</bold> 529 + <dim>│</fg> <dim>Group 1 line 2</bold> 530 530 ", 531 531 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 532 - "│ Group 0 532 + "<dim>│</fg> <bold>Group 0</bold> 533 533 ", 534 - "│ Group 0 line 0 535 - │ Group 0 line 1 536 - │ Group 0 line 2 534 + "<dim>│</fg> <dim>Group 0 line 0</bold> 535 + <dim>│</fg> <dim>Group 0 line 1</bold> 536 + <dim>│</fg> <dim>Group 0 line 2</bold> 537 537 ", 538 - "│ Group 1 538 + "<dim>│</fg> <bold>Group 1</bold> 539 539 ", 540 - "│ Group 1 line 0 541 - │ Group 1 line 1 542 - │ Group 1 line 2 543 - │ Group 1 line 3 540 + "<dim>│</fg> <dim>Group 1 line 0</bold> 541 + <dim>│</fg> <dim>Group 1 line 1</bold> 542 + <dim>│</fg> <dim>Group 1 line 2</bold> 543 + <dim>│</fg> <dim>Group 1 line 3</bold> 544 544 ", 545 545 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 546 - "│ Group 0 546 + "<dim>│</fg> <bold>Group 0</bold> 547 547 ", 548 - "│ Group 0 line 0 549 - │ Group 0 line 1 550 - │ Group 0 line 2 548 + "<dim>│</fg> <dim>Group 0 line 0</bold> 549 + <dim>│</fg> <dim>Group 0 line 1</bold> 550 + <dim>│</fg> <dim>Group 0 line 2</bold> 551 551 ", 552 - "│ Group 1 552 + "<dim>│</fg> <bold>Group 1</bold> 553 553 ", 554 - "│ Group 1 line 0 555 - │ Group 1 line 1 556 - │ Group 1 line 2 557 - │ Group 1 line 3 558 - │ Group 1 line 4 554 + "<dim>│</fg> <dim>Group 1 line 0</bold> 555 + <dim>│</fg> <dim>Group 1 line 1</bold> 556 + <dim>│</fg> <dim>Group 1 line 2</bold> 557 + <dim>│</fg> <dim>Group 1 line 3</bold> 558 + <dim>│</fg> <dim>Group 1 line 4</bold> 559 559 ", 560 560 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 561 - "◆ Group 0 success! 561 + "<green>◆</fg> Group 0 success! 562 562 ", 563 - "│ Group 1 563 + "<dim>│</fg> <bold>Group 1</bold> 564 564 ", 565 - "│ Group 1 line 0 566 - │ Group 1 line 1 567 - │ Group 1 line 2 568 - │ Group 1 line 3 569 - │ Group 1 line 4 565 + "<dim>│</fg> <dim>Group 1 line 0</bold> 566 + <dim>│</fg> <dim>Group 1 line 1</bold> 567 + <dim>│</fg> <dim>Group 1 line 2</bold> 568 + <dim>│</fg> <dim>Group 1 line 3</bold> 569 + <dim>│</fg> <dim>Group 1 line 4</bold> 570 570 ", 571 571 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 572 - "◆ Group 0 success! 572 + "<green>◆</fg> Group 0 success! 573 573 ", 574 - "■ Group 1 error! 574 + "<red>■</fg> Group 1 error! 575 575 ", 576 576 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 577 - "│ 578 - ■ overall error 577 + "<dim>│</fg> 578 + <red>■</fg> overall error 579 579 ", 580 - "│ Group 0 580 + "<dim>│</fg> <bold>Group 0</bold> 581 581 ", 582 - "│ 583 - │ Group 0 line 0 584 - │ Group 0 line 1 585 - │ Group 0 line 2 582 + "<dim>│</fg> 583 + <dim>│</fg> <dim>Group 0 line 0</bold> 584 + <dim>│</fg> <dim>Group 0 line 1</bold> 585 + <dim>│</fg> <dim>Group 0 line 2</bold> 586 586 ", 587 - "│ Group 1 587 + "<dim>│</fg> <bold>Group 1</bold> 588 588 ", 589 - "│ 590 - │ Group 1 line 0 591 - │ Group 1 line 1 592 - │ Group 1 line 2 593 - │ Group 1 line 3 594 - │ Group 1 line 4 589 + "<dim>│</fg> 590 + <dim>│</fg> <dim>Group 1 line 0</bold> 591 + <dim>│</fg> <dim>Group 1 line 1</bold> 592 + <dim>│</fg> <dim>Group 1 line 2</bold> 593 + <dim>│</fg> <dim>Group 1 line 3</bold> 594 + <dim>│</fg> <dim>Group 1 line 4</bold> 595 595 ", 596 596 ] 597 597 `; 598 598 599 599 exports[`taskLog (isCI = false) > message > can write line by line 1`] = ` 600 600 [ 601 - "│ 601 + "<dim>│</fg> 602 602 ", 603 - "◇ foo 603 + "<green>◇</fg> foo 604 604 ", 605 - "│ 605 + "<dim>│</fg> 606 606 ", 607 - "│ line 0 607 + "<dim>│</fg> <dim>line 0</bold> 608 608 ", 609 609 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 610 - "│ line 0 611 - │ line 1 610 + "<dim>│</fg> <dim>line 0</bold> 611 + <dim>│</fg> <dim>line 1</bold> 612 612 ", 613 613 ] 614 614 `; 615 615 616 616 exports[`taskLog (isCI = false) > message > can write multiple lines 1`] = ` 617 617 [ 618 - "│ 618 + "<dim>│</fg> 619 619 ", 620 - "◇ foo 620 + "<green>◇</fg> foo 621 621 ", 622 - "│ 622 + "<dim>│</fg> 623 623 ", 624 - "│ line 0 625 - │ line 1 624 + "<dim>│</fg> <dim>line 0</bold> 625 + <dim>│</fg> <dim>line 1</bold> 626 626 ", 627 627 ] 628 628 `; 629 629 630 630 exports[`taskLog (isCI = false) > message > destructive ansi codes are stripped 1`] = ` 631 631 [ 632 - "│ 632 + "<dim>│</fg> 633 633 ", 634 - "◇ foo 634 + "<green>◇</fg> foo 635 635 ", 636 - "│ 636 + "<dim>│</fg> 637 637 ", 638 - "│ line 1 638 + "<dim>│</fg> <dim>line 1</bold> 639 639 ", 640 640 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 641 - "│ line 1 642 - │ line 2 bad ansi! 641 + "<dim>│</fg> <dim>line 1</bold> 642 + <dim>│</fg> <dim>line 2 bad ansi!</bold> 643 643 ", 644 644 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 645 - "│ line 1 646 - │ line 2 bad ansi! 647 - │ line 3 645 + "<dim>│</fg> <dim>line 1</bold> 646 + <dim>│</fg> <dim>line 2 bad ansi!</bold> 647 + <dim>│</fg> <dim>line 3</bold> 648 648 ", 649 649 ] 650 650 `; 651 651 652 652 exports[`taskLog (isCI = false) > message > enforces limit if set 1`] = ` 653 653 [ 654 - "│ 654 + "<dim>│</fg> 655 655 ", 656 - "◇ foo 656 + "<green>◇</fg> foo 657 657 ", 658 - "│ 658 + "<dim>│</fg> 659 659 ", 660 - "│ line 0 660 + "<dim>│</fg> <dim>line 0</bold> 661 661 ", 662 662 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 663 - "│ line 0 664 - │ line 1 663 + "<dim>│</fg> <dim>line 0</bold> 664 + <dim>│</fg> <dim>line 1</bold> 665 665 ", 666 666 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 667 - "│ line 1 668 - │ line 2 667 + "<dim>│</fg> <dim>line 1</bold> 668 + <dim>│</fg> <dim>line 2</bold> 669 669 ", 670 670 ] 671 671 `; 672 672 673 673 exports[`taskLog (isCI = false) > message > prints empty lines 1`] = ` 674 674 [ 675 - "│ 675 + "<dim>│</fg> 676 676 ", 677 - "◇ foo 677 + "<green>◇</fg> foo 678 678 ", 679 - "│ 679 + "<dim>│</fg> 680 680 ", 681 - "│ line 1 681 + "<dim>│</fg> <dim>line 1</bold> 682 682 ", 683 683 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 684 - "│ line 1 685 - │  684 + "<dim>│</fg> <dim>line 1</bold> 685 + <dim>│</fg> <dim></bold> 686 686 ", 687 687 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 688 - "│ line 1 689 - │  690 - │ line 3 688 + "<dim>│</fg> <dim>line 1</bold> 689 + <dim>│</fg> <dim></bold> 690 + <dim>│</fg> <dim>line 3</bold> 691 691 ", 692 692 ] 693 693 `; 694 694 695 695 exports[`taskLog (isCI = false) > message > raw = true appends message text until newline 1`] = ` 696 696 [ 697 - "│ 697 + "<dim>│</fg> 698 698 ", 699 - "◇ foo 699 + "<green>◇</fg> foo 700 700 ", 701 - "│ 701 + "<dim>│</fg> 702 702 ", 703 - "│ line 0 703 + "<dim>│</fg> <dim>line 0</bold> 704 704 ", 705 705 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 706 - "│ line 0still line 0 706 + "<dim>│</fg> <dim>line 0still line 0</bold> 707 707 ", 708 708 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 709 - "│ line 0still line 0 710 - │ line 1 709 + "<dim>│</fg> <dim>line 0still line 0</bold> 710 + <dim>│</fg> <dim>line 1</bold> 711 711 ", 712 712 ] 713 713 `; 714 714 715 715 exports[`taskLog (isCI = false) > message > raw = true works when mixed with non-raw messages 1`] = ` 716 716 [ 717 - "│ 717 + "<dim>│</fg> 718 718 ", 719 - "◇ foo 719 + "<green>◇</fg> foo 720 720 ", 721 - "│ 721 + "<dim>│</fg> 722 722 ", 723 - "│ line 0 723 + "<dim>│</fg> <dim>line 0</bold> 724 724 ", 725 725 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 726 - "│ line 0still line 0 726 + "<dim>│</fg> <dim>line 0still line 0</bold> 727 727 ", 728 728 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 729 - "│ line 0still line 0 730 - │ line 1 729 + "<dim>│</fg> <dim>line 0still line 0</bold> 730 + <dim>│</fg> <dim>line 1</bold> 731 731 ", 732 732 ] 733 733 `; 734 734 735 735 exports[`taskLog (isCI = false) > message > raw = true works when started with non-raw messages 1`] = ` 736 736 [ 737 - "│ 737 + "<dim>│</fg> 738 738 ", 739 - "◇ foo 739 + "<green>◇</fg> foo 740 740 ", 741 - "│ 741 + "<dim>│</fg> 742 742 ", 743 - "│ line 0 743 + "<dim>│</fg> <dim>line 0</bold> 744 744 ", 745 745 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 746 - "│ line 0 747 - │ line 1 746 + "<dim>│</fg> <dim>line 0</bold> 747 + <dim>│</fg> <dim>line 1</bold> 748 748 ", 749 749 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 750 - "│ line 0 751 - │ line 1still line 1 750 + "<dim>│</fg> <dim>line 0</bold> 751 + <dim>│</fg> <dim>line 1still line 1</bold> 752 752 ", 753 753 ] 754 754 `; 755 755 756 756 exports[`taskLog (isCI = false) > retainLog > error > outputs limited log with limit by default 1`] = ` 757 757 [ 758 - "│ 758 + "<dim>│</fg> 759 759 ", 760 - "◇ foo 760 + "<green>◇</fg> foo 761 761 ", 762 - "│ 762 + "<dim>│</fg> 763 763 ", 764 - "│ line 0 764 + "<dim>│</fg> <dim>line 0</bold> 765 765 ", 766 766 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 767 - "│ line 0 768 - │ line 1 767 + "<dim>│</fg> <dim>line 0</bold> 768 + <dim>│</fg> <dim>line 1</bold> 769 769 ", 770 770 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 771 - "│ line 1 772 - │ line 2 771 + "<dim>│</fg> <dim>line 1</bold> 772 + <dim>│</fg> <dim>line 2</bold> 773 773 ", 774 774 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 775 - "│ line 2 776 - │ line 3 775 + "<dim>│</fg> <dim>line 2</bold> 776 + <dim>│</fg> <dim>line 3</bold> 777 777 ", 778 778 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 779 - "│ 780 - ■ woo! 779 + "<dim>│</fg> 780 + <red>■</fg> woo! 781 781 ", 782 - "│ 783 - │ line 2 784 - │ line 3 782 + "<dim>│</fg> 783 + <dim>│</fg> <dim>line 2</bold> 784 + <dim>│</fg> <dim>line 3</bold> 785 785 ", 786 786 ] 787 787 `; 788 788 789 789 exports[`taskLog (isCI = false) > retainLog > error > retainLog = false outputs full log without limit 1`] = ` 790 790 [ 791 - "│ 791 + "<dim>│</fg> 792 792 ", 793 - "◇ foo 793 + "<green>◇</fg> foo 794 794 ", 795 - "│ 795 + "<dim>│</fg> 796 796 ", 797 - "│ line 0 797 + "<dim>│</fg> <dim>line 0</bold> 798 798 ", 799 799 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 800 - "│ line 0 801 - │ line 1 800 + "<dim>│</fg> <dim>line 0</bold> 801 + <dim>│</fg> <dim>line 1</bold> 802 802 ", 803 803 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 804 - "│ line 0 805 - │ line 1 806 - │ line 2 804 + "<dim>│</fg> <dim>line 0</bold> 805 + <dim>│</fg> <dim>line 1</bold> 806 + <dim>│</fg> <dim>line 2</bold> 807 807 ", 808 808 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 809 - "│ line 0 810 - │ line 1 811 - │ line 2 812 - │ line 3 809 + "<dim>│</fg> <dim>line 0</bold> 810 + <dim>│</fg> <dim>line 1</bold> 811 + <dim>│</fg> <dim>line 2</bold> 812 + <dim>│</fg> <dim>line 3</bold> 813 813 ", 814 814 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 815 - "│ 816 - ■ woo! 815 + "<dim>│</fg> 816 + <red>■</fg> woo! 817 817 ", 818 - "│ 819 - │ line 0 820 - │ line 1 821 - │ line 2 822 - │ line 3 818 + "<dim>│</fg> 819 + <dim>│</fg> <dim>line 0</bold> 820 + <dim>│</fg> <dim>line 1</bold> 821 + <dim>│</fg> <dim>line 2</bold> 822 + <dim>│</fg> <dim>line 3</bold> 823 823 ", 824 824 ] 825 825 `; 826 826 827 827 exports[`taskLog (isCI = false) > retainLog > error > retainLog = false outputs limited log with limit 1`] = ` 828 828 [ 829 - "│ 829 + "<dim>│</fg> 830 830 ", 831 - "◇ foo 831 + "<green>◇</fg> foo 832 832 ", 833 - "│ 833 + "<dim>│</fg> 834 834 ", 835 - "│ line 0 835 + "<dim>│</fg> <dim>line 0</bold> 836 836 ", 837 837 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 838 - "│ line 0 839 - │ line 1 838 + "<dim>│</fg> <dim>line 0</bold> 839 + <dim>│</fg> <dim>line 1</bold> 840 840 ", 841 841 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 842 - "│ line 1 843 - │ line 2 842 + "<dim>│</fg> <dim>line 1</bold> 843 + <dim>│</fg> <dim>line 2</bold> 844 844 ", 845 845 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 846 - "│ line 2 847 - │ line 3 846 + "<dim>│</fg> <dim>line 2</bold> 847 + <dim>│</fg> <dim>line 3</bold> 848 848 ", 849 849 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 850 - "│ 851 - ■ woo! 850 + "<dim>│</fg> 851 + <red>■</fg> woo! 852 852 ", 853 - "│ 854 - │ line 2 855 - │ line 3 853 + "<dim>│</fg> 854 + <dim>│</fg> <dim>line 2</bold> 855 + <dim>│</fg> <dim>line 3</bold> 856 856 ", 857 857 ] 858 858 `; 859 859 860 860 exports[`taskLog (isCI = false) > retainLog > error > retainLog = true outputs full log 1`] = ` 861 861 [ 862 - "│ 862 + "<dim>│</fg> 863 863 ", 864 - "◇ foo 864 + "<green>◇</fg> foo 865 865 ", 866 - "│ 866 + "<dim>│</fg> 867 867 ", 868 - "│ line 0 868 + "<dim>│</fg> <dim>line 0</bold> 869 869 ", 870 870 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 871 - "│ line 0 872 - │ line 1 871 + "<dim>│</fg> <dim>line 0</bold> 872 + <dim>│</fg> <dim>line 1</bold> 873 873 ", 874 874 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 875 - "│ line 0 876 - │ line 1 877 - │ line 2 875 + "<dim>│</fg> <dim>line 0</bold> 876 + <dim>│</fg> <dim>line 1</bold> 877 + <dim>│</fg> <dim>line 2</bold> 878 878 ", 879 879 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 880 - "│ line 0 881 - │ line 1 882 - │ line 2 883 - │ line 3 880 + "<dim>│</fg> <dim>line 0</bold> 881 + <dim>│</fg> <dim>line 1</bold> 882 + <dim>│</fg> <dim>line 2</bold> 883 + <dim>│</fg> <dim>line 3</bold> 884 884 ", 885 885 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 886 - "│ 887 - ■ woo! 886 + "<dim>│</fg> 887 + <red>■</fg> woo! 888 888 ", 889 - "│ 890 - │ line 0 891 - │ line 1 892 - │ line 2 893 - │ line 3 889 + "<dim>│</fg> 890 + <dim>│</fg> <dim>line 0</bold> 891 + <dim>│</fg> <dim>line 1</bold> 892 + <dim>│</fg> <dim>line 2</bold> 893 + <dim>│</fg> <dim>line 3</bold> 894 894 ", 895 895 ] 896 896 `; 897 897 898 898 exports[`taskLog (isCI = false) > retainLog > error > retainLog = true outputs full log with limit 1`] = ` 899 899 [ 900 - "│ 900 + "<dim>│</fg> 901 901 ", 902 - "◇ foo 902 + "<green>◇</fg> foo 903 903 ", 904 - "│ 904 + "<dim>│</fg> 905 905 ", 906 - "│ line 0 906 + "<dim>│</fg> <dim>line 0</bold> 907 907 ", 908 908 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 909 - "│ line 0 910 - │ line 1 909 + "<dim>│</fg> <dim>line 0</bold> 910 + <dim>│</fg> <dim>line 1</bold> 911 911 ", 912 912 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 913 - "│ line 1 914 - │ line 2 913 + "<dim>│</fg> <dim>line 1</bold> 914 + <dim>│</fg> <dim>line 2</bold> 915 915 ", 916 916 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 917 - "│ line 2 918 - │ line 3 917 + "<dim>│</fg> <dim>line 2</bold> 918 + <dim>│</fg> <dim>line 3</bold> 919 919 ", 920 920 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 921 - "│ 922 - ■ woo! 921 + "<dim>│</fg> 922 + <red>■</fg> woo! 923 923 ", 924 - "│ 925 - │ line 0 926 - │ line 1 927 - │ line 2 928 - │ line 3 924 + "<dim>│</fg> 925 + <dim>│</fg> <dim>line 0</bold> 926 + <dim>│</fg> <dim>line 1</bold> 927 + <dim>│</fg> <dim>line 2</bold> 928 + <dim>│</fg> <dim>line 3</bold> 929 929 ", 930 930 ] 931 931 `; 932 932 933 933 exports[`taskLog (isCI = false) > retainLog > success > outputs limited log with limit by default 1`] = ` 934 934 [ 935 - "│ 935 + "<dim>│</fg> 936 936 ", 937 - "◇ foo 937 + "<green>◇</fg> foo 938 938 ", 939 - "│ 939 + "<dim>│</fg> 940 940 ", 941 - "│ line 0 941 + "<dim>│</fg> <dim>line 0</bold> 942 942 ", 943 943 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 944 - "│ line 0 945 - │ line 1 944 + "<dim>│</fg> <dim>line 0</bold> 945 + <dim>│</fg> <dim>line 1</bold> 946 946 ", 947 947 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 948 - "│ line 1 949 - │ line 2 948 + "<dim>│</fg> <dim>line 1</bold> 949 + <dim>│</fg> <dim>line 2</bold> 950 950 ", 951 951 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 952 - "│ line 2 953 - │ line 3 952 + "<dim>│</fg> <dim>line 2</bold> 953 + <dim>│</fg> <dim>line 3</bold> 954 954 ", 955 955 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 956 - "│ 957 - ◆ woo! 956 + "<dim>│</fg> 957 + <green>◆</fg> woo! 958 958 ", 959 - "│ 960 - │ line 2 961 - │ line 3 959 + "<dim>│</fg> 960 + <dim>│</fg> <dim>line 2</bold> 961 + <dim>│</fg> <dim>line 3</bold> 962 962 ", 963 963 ] 964 964 `; 965 965 966 966 exports[`taskLog (isCI = false) > retainLog > success > retainLog = false outputs full log without limit 1`] = ` 967 967 [ 968 - "│ 968 + "<dim>│</fg> 969 969 ", 970 - "◇ foo 970 + "<green>◇</fg> foo 971 971 ", 972 - "│ 972 + "<dim>│</fg> 973 973 ", 974 - "│ line 0 974 + "<dim>│</fg> <dim>line 0</bold> 975 975 ", 976 976 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 977 - "│ line 0 978 - │ line 1 977 + "<dim>│</fg> <dim>line 0</bold> 978 + <dim>│</fg> <dim>line 1</bold> 979 979 ", 980 980 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 981 - "│ line 0 982 - │ line 1 983 - │ line 2 981 + "<dim>│</fg> <dim>line 0</bold> 982 + <dim>│</fg> <dim>line 1</bold> 983 + <dim>│</fg> <dim>line 2</bold> 984 984 ", 985 985 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 986 - "│ line 0 987 - │ line 1 988 - │ line 2 989 - │ line 3 986 + "<dim>│</fg> <dim>line 0</bold> 987 + <dim>│</fg> <dim>line 1</bold> 988 + <dim>│</fg> <dim>line 2</bold> 989 + <dim>│</fg> <dim>line 3</bold> 990 990 ", 991 991 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 992 - "│ 993 - ◆ woo! 992 + "<dim>│</fg> 993 + <green>◆</fg> woo! 994 994 ", 995 - "│ 996 - │ line 0 997 - │ line 1 998 - │ line 2 999 - │ line 3 995 + "<dim>│</fg> 996 + <dim>│</fg> <dim>line 0</bold> 997 + <dim>│</fg> <dim>line 1</bold> 998 + <dim>│</fg> <dim>line 2</bold> 999 + <dim>│</fg> <dim>line 3</bold> 1000 1000 ", 1001 1001 ] 1002 1002 `; 1003 1003 1004 1004 exports[`taskLog (isCI = false) > retainLog > success > retainLog = false outputs limited log with limit 1`] = ` 1005 1005 [ 1006 - "│ 1006 + "<dim>│</fg> 1007 1007 ", 1008 - "◇ foo 1008 + "<green>◇</fg> foo 1009 1009 ", 1010 - "│ 1010 + "<dim>│</fg> 1011 1011 ", 1012 - "│ line 0 1012 + "<dim>│</fg> <dim>line 0</bold> 1013 1013 ", 1014 1014 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1015 - "│ line 0 1016 - │ line 1 1015 + "<dim>│</fg> <dim>line 0</bold> 1016 + <dim>│</fg> <dim>line 1</bold> 1017 1017 ", 1018 1018 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1019 - "│ line 1 1020 - │ line 2 1019 + "<dim>│</fg> <dim>line 1</bold> 1020 + <dim>│</fg> <dim>line 2</bold> 1021 1021 ", 1022 1022 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1023 - "│ line 2 1024 - │ line 3 1023 + "<dim>│</fg> <dim>line 2</bold> 1024 + <dim>│</fg> <dim>line 3</bold> 1025 1025 ", 1026 1026 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1027 - "│ 1028 - ◆ woo! 1027 + "<dim>│</fg> 1028 + <green>◆</fg> woo! 1029 1029 ", 1030 - "│ 1031 - │ line 2 1032 - │ line 3 1030 + "<dim>│</fg> 1031 + <dim>│</fg> <dim>line 2</bold> 1032 + <dim>│</fg> <dim>line 3</bold> 1033 1033 ", 1034 1034 ] 1035 1035 `; 1036 1036 1037 1037 exports[`taskLog (isCI = false) > retainLog > success > retainLog = true outputs full log 1`] = ` 1038 1038 [ 1039 - "│ 1039 + "<dim>│</fg> 1040 1040 ", 1041 - "◇ foo 1041 + "<green>◇</fg> foo 1042 1042 ", 1043 - "│ 1043 + "<dim>│</fg> 1044 1044 ", 1045 - "│ line 0 1045 + "<dim>│</fg> <dim>line 0</bold> 1046 1046 ", 1047 1047 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1048 - "│ line 0 1049 - │ line 1 1048 + "<dim>│</fg> <dim>line 0</bold> 1049 + <dim>│</fg> <dim>line 1</bold> 1050 1050 ", 1051 1051 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1052 - "│ line 0 1053 - │ line 1 1054 - │ line 2 1052 + "<dim>│</fg> <dim>line 0</bold> 1053 + <dim>│</fg> <dim>line 1</bold> 1054 + <dim>│</fg> <dim>line 2</bold> 1055 1055 ", 1056 1056 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1057 - "│ line 0 1058 - │ line 1 1059 - │ line 2 1060 - │ line 3 1057 + "<dim>│</fg> <dim>line 0</bold> 1058 + <dim>│</fg> <dim>line 1</bold> 1059 + <dim>│</fg> <dim>line 2</bold> 1060 + <dim>│</fg> <dim>line 3</bold> 1061 1061 ", 1062 1062 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1063 - "│ 1064 - ◆ woo! 1063 + "<dim>│</fg> 1064 + <green>◆</fg> woo! 1065 1065 ", 1066 - "│ 1067 - │ line 0 1068 - │ line 1 1069 - │ line 2 1070 - │ line 3 1066 + "<dim>│</fg> 1067 + <dim>│</fg> <dim>line 0</bold> 1068 + <dim>│</fg> <dim>line 1</bold> 1069 + <dim>│</fg> <dim>line 2</bold> 1070 + <dim>│</fg> <dim>line 3</bold> 1071 1071 ", 1072 1072 ] 1073 1073 `; 1074 1074 1075 1075 exports[`taskLog (isCI = false) > retainLog > success > retainLog = true outputs full log with limit 1`] = ` 1076 1076 [ 1077 - "│ 1077 + "<dim>│</fg> 1078 1078 ", 1079 - "◇ foo 1079 + "<green>◇</fg> foo 1080 1080 ", 1081 - "│ 1081 + "<dim>│</fg> 1082 1082 ", 1083 - "│ line 0 1083 + "<dim>│</fg> <dim>line 0</bold> 1084 1084 ", 1085 1085 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1086 - "│ line 0 1087 - │ line 1 1086 + "<dim>│</fg> <dim>line 0</bold> 1087 + <dim>│</fg> <dim>line 1</bold> 1088 1088 ", 1089 1089 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1090 - "│ line 1 1091 - │ line 2 1090 + "<dim>│</fg> <dim>line 1</bold> 1091 + <dim>│</fg> <dim>line 2</bold> 1092 1092 ", 1093 1093 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1094 - "│ line 2 1095 - │ line 3 1094 + "<dim>│</fg> <dim>line 2</bold> 1095 + <dim>│</fg> <dim>line 3</bold> 1096 1096 ", 1097 1097 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1098 - "│ 1099 - ◆ woo! 1098 + "<dim>│</fg> 1099 + <green>◆</fg> woo! 1100 1100 ", 1101 - "│ 1102 - │ line 0 1103 - │ line 1 1104 - │ line 2 1105 - │ line 3 1101 + "<dim>│</fg> 1102 + <dim>│</fg> <dim>line 0</bold> 1103 + <dim>│</fg> <dim>line 1</bold> 1104 + <dim>│</fg> <dim>line 2</bold> 1105 + <dim>│</fg> <dim>line 3</bold> 1106 1106 ", 1107 1107 ] 1108 1108 `; 1109 1109 1110 1110 exports[`taskLog (isCI = false) > success > clears output and renders message 1`] = ` 1111 1111 [ 1112 - "│ 1112 + "<dim>│</fg> 1113 1113 ", 1114 - "◇ foo 1114 + "<green>◇</fg> foo 1115 1115 ", 1116 - "│ 1116 + "<dim>│</fg> 1117 1117 ", 1118 - "│ line 0 1118 + "<dim>│</fg> <dim>line 0</bold> 1119 1119 ", 1120 1120 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1121 - "│ line 0 1122 - │ line 1 1121 + "<dim>│</fg> <dim>line 0</bold> 1122 + <dim>│</fg> <dim>line 1</bold> 1123 1123 ", 1124 1124 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1125 - "│ 1126 - ◆ success! 1125 + "<dim>│</fg> 1126 + <green>◆</fg> success! 1127 1127 ", 1128 1128 ] 1129 1129 `; 1130 1130 1131 1131 exports[`taskLog (isCI = false) > success > renders output if showLog = true 1`] = ` 1132 1132 [ 1133 - "│ 1133 + "<dim>│</fg> 1134 1134 ", 1135 - "◇ foo 1135 + "<green>◇</fg> foo 1136 1136 ", 1137 - "│ 1137 + "<dim>│</fg> 1138 1138 ", 1139 - "│ line 0 1139 + "<dim>│</fg> <dim>line 0</bold> 1140 1140 ", 1141 1141 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1142 - "│ line 0 1143 - │ line 1 1142 + "<dim>│</fg> <dim>line 0</bold> 1143 + <dim>│</fg> <dim>line 1</bold> 1144 1144 ", 1145 1145 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1146 - "│ 1147 - ◆ success! 1146 + "<dim>│</fg> 1147 + <green>◆</fg> success! 1148 1148 ", 1149 - "│ 1150 - │ line 0 1151 - │ line 1 1149 + "<dim>│</fg> 1150 + <dim>│</fg> <dim>line 0</bold> 1151 + <dim>│</fg> <dim>line 1</bold> 1152 1152 ", 1153 1153 ] 1154 1154 `; 1155 1155 1156 1156 exports[`taskLog (isCI = false) > writes message header 1`] = ` 1157 1157 [ 1158 - "│ 1158 + "<dim>│</fg> 1159 1159 ", 1160 - "◇ foo 1160 + "<green>◇</fg> foo 1161 1161 ", 1162 - "│ 1162 + "<dim>│</fg> 1163 1163 ", 1164 1164 ] 1165 1165 `; 1166 1166 1167 1167 exports[`taskLog (isCI = true) > error > clears output if showLog = false 1`] = ` 1168 1168 [ 1169 - "│ 1169 + "<dim>│</fg> 1170 1170 ", 1171 - "◇ foo 1171 + "<green>◇</fg> foo 1172 1172 ", 1173 - "│ 1173 + "<dim>│</fg> 1174 1174 ", 1175 1175 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1176 1176 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1177 - "│ 1178 - ■ some error! 1177 + "<dim>│</fg> 1178 + <red>■</fg> some error! 1179 1179 ", 1180 1180 ] 1181 1181 `; 1182 1182 1183 1183 exports[`taskLog (isCI = true) > error > renders output with message 1`] = ` 1184 1184 [ 1185 - "│ 1185 + "<dim>│</fg> 1186 1186 ", 1187 - "◇ foo 1187 + "<green>◇</fg> foo 1188 1188 ", 1189 - "│ 1189 + "<dim>│</fg> 1190 1190 ", 1191 1191 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1192 1192 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1193 - "│ 1194 - ■ some error! 1193 + "<dim>│</fg> 1194 + <red>■</fg> some error! 1195 1195 ", 1196 - "│ 1197 - │ line 0 1198 - │ line 1 1196 + "<dim>│</fg> 1197 + <dim>│</fg> <dim>line 0</bold> 1198 + <dim>│</fg> <dim>line 1</bold> 1199 1199 ", 1200 1200 ] 1201 1201 `; 1202 1202 1203 1203 exports[`taskLog (isCI = true) > group > applies limit per group 1`] = ` 1204 1204 [ 1205 - "│ 1205 + "<dim>│</fg> 1206 1206 ", 1207 - "◇ Some log 1207 + "<green>◇</fg> Some log 1208 1208 ", 1209 - "│ 1209 + "<dim>│</fg> 1210 1210 ", 1211 1211 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1212 1212 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1222 1222 1223 1223 exports[`taskLog (isCI = true) > group > can render multiple groups of different sizes 1`] = ` 1224 1224 [ 1225 - "│ 1225 + "<dim>│</fg> 1226 1226 ", 1227 - "◇ Some log 1227 + "<green>◇</fg> Some log 1228 1228 ", 1229 - "│ 1229 + "<dim>│</fg> 1230 1230 ", 1231 1231 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1232 1232 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1240 1240 1241 1241 exports[`taskLog (isCI = true) > group > can render multiple groups of equal size 1`] = ` 1242 1242 [ 1243 - "│ 1243 + "<dim>│</fg> 1244 1244 ", 1245 - "◇ Some log 1245 + "<green>◇</fg> Some log 1246 1246 ", 1247 - "│ 1247 + "<dim>│</fg> 1248 1248 ", 1249 1249 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1250 1250 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1260 1260 1261 1261 exports[`taskLog (isCI = true) > group > handles empty groups 1`] = ` 1262 1262 [ 1263 - "│ 1263 + "<dim>│</fg> 1264 1264 ", 1265 - "◇ Some log 1265 + "<green>◇</fg> Some log 1266 1266 ", 1267 - "│ 1267 + "<dim>│</fg> 1268 1268 ", 1269 1269 ] 1270 1270 `; 1271 1271 1272 1272 exports[`taskLog (isCI = true) > group > renders error state 1`] = ` 1273 1273 [ 1274 - "│ 1274 + "<dim>│</fg> 1275 1275 ", 1276 - "◇ Some log 1276 + "<green>◇</fg> Some log 1277 1277 ", 1278 - "│ 1278 + "<dim>│</fg> 1279 1279 ", 1280 1280 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1281 1281 ] ··· 1283 1283 1284 1284 exports[`taskLog (isCI = true) > group > renders group error state 1`] = ` 1285 1285 [ 1286 - "│ 1286 + "<dim>│</fg> 1287 1287 ", 1288 - "◇ Some log 1288 + "<green>◇</fg> Some log 1289 1289 ", 1290 - "│ 1290 + "<dim>│</fg> 1291 1291 ", 1292 1292 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1293 1293 ] ··· 1295 1295 1296 1296 exports[`taskLog (isCI = true) > group > renders group success state 1`] = ` 1297 1297 [ 1298 - "│ 1298 + "<dim>│</fg> 1299 1299 ", 1300 - "◇ Some log 1300 + "<green>◇</fg> Some log 1301 1301 ", 1302 - "│ 1302 + "<dim>│</fg> 1303 1303 ", 1304 1304 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1305 1305 ] ··· 1307 1307 1308 1308 exports[`taskLog (isCI = true) > group > renders success state 1`] = ` 1309 1309 [ 1310 - "│ 1310 + "<dim>│</fg> 1311 1311 ", 1312 - "◇ Some log 1312 + "<green>◇</fg> Some log 1313 1313 ", 1314 - "│ 1314 + "<dim>│</fg> 1315 1315 ", 1316 1316 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1317 1317 ] ··· 1319 1319 1320 1320 exports[`taskLog (isCI = true) > group > showLog shows all groups in order 1`] = ` 1321 1321 [ 1322 - "│ 1322 + "<dim>│</fg> 1323 1323 ", 1324 - "◇ Some log 1324 + "<green>◇</fg> Some log 1325 1325 ", 1326 - "│ 1326 + "<dim>│</fg> 1327 1327 ", 1328 1328 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1329 1329 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1335 1335 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1336 1336 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1337 1337 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1338 - "│ 1339 - ■ overall error 1338 + "<dim>│</fg> 1339 + <red>■</fg> overall error 1340 1340 ", 1341 - "│ Group 0 1341 + "<dim>│</fg> <bold>Group 0</bold> 1342 1342 ", 1343 - "│ 1344 - │ Group 0 line 0 1345 - │ Group 0 line 1 1346 - │ Group 0 line 2 1343 + "<dim>│</fg> 1344 + <dim>│</fg> <dim>Group 0 line 0</bold> 1345 + <dim>│</fg> <dim>Group 0 line 1</bold> 1346 + <dim>│</fg> <dim>Group 0 line 2</bold> 1347 1347 ", 1348 - "│ Group 1 1348 + "<dim>│</fg> <bold>Group 1</bold> 1349 1349 ", 1350 - "│ 1351 - │ Group 1 line 0 1352 - │ Group 1 line 1 1353 - │ Group 1 line 2 1354 - │ Group 1 line 3 1355 - │ Group 1 line 4 1350 + "<dim>│</fg> 1351 + <dim>│</fg> <dim>Group 1 line 0</bold> 1352 + <dim>│</fg> <dim>Group 1 line 1</bold> 1353 + <dim>│</fg> <dim>Group 1 line 2</bold> 1354 + <dim>│</fg> <dim>Group 1 line 3</bold> 1355 + <dim>│</fg> <dim>Group 1 line 4</bold> 1356 1356 ", 1357 1357 ] 1358 1358 `; 1359 1359 1360 1360 exports[`taskLog (isCI = true) > message > can write line by line 1`] = ` 1361 1361 [ 1362 - "│ 1362 + "<dim>│</fg> 1363 1363 ", 1364 - "◇ foo 1364 + "<green>◇</fg> foo 1365 1365 ", 1366 - "│ 1366 + "<dim>│</fg> 1367 1367 ", 1368 1368 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1369 1369 ] ··· 1371 1371 1372 1372 exports[`taskLog (isCI = true) > message > can write multiple lines 1`] = ` 1373 1373 [ 1374 - "│ 1374 + "<dim>│</fg> 1375 1375 ", 1376 - "◇ foo 1376 + "<green>◇</fg> foo 1377 1377 ", 1378 - "│ 1378 + "<dim>│</fg> 1379 1379 ", 1380 1380 ] 1381 1381 `; 1382 1382 1383 1383 exports[`taskLog (isCI = true) > message > destructive ansi codes are stripped 1`] = ` 1384 1384 [ 1385 - "│ 1385 + "<dim>│</fg> 1386 1386 ", 1387 - "◇ foo 1387 + "<green>◇</fg> foo 1388 1388 ", 1389 - "│ 1389 + "<dim>│</fg> 1390 1390 ", 1391 1391 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1392 1392 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1395 1395 1396 1396 exports[`taskLog (isCI = true) > message > enforces limit if set 1`] = ` 1397 1397 [ 1398 - "│ 1398 + "<dim>│</fg> 1399 1399 ", 1400 - "◇ foo 1400 + "<green>◇</fg> foo 1401 1401 ", 1402 - "│ 1402 + "<dim>│</fg> 1403 1403 ", 1404 1404 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1405 1405 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1408 1408 1409 1409 exports[`taskLog (isCI = true) > message > prints empty lines 1`] = ` 1410 1410 [ 1411 - "│ 1411 + "<dim>│</fg> 1412 1412 ", 1413 - "◇ foo 1413 + "<green>◇</fg> foo 1414 1414 ", 1415 - "│ 1415 + "<dim>│</fg> 1416 1416 ", 1417 1417 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1418 1418 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1421 1421 1422 1422 exports[`taskLog (isCI = true) > message > raw = true appends message text until newline 1`] = ` 1423 1423 [ 1424 - "│ 1424 + "<dim>│</fg> 1425 1425 ", 1426 - "◇ foo 1426 + "<green>◇</fg> foo 1427 1427 ", 1428 - "│ 1428 + "<dim>│</fg> 1429 1429 ", 1430 1430 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1431 1431 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1434 1434 1435 1435 exports[`taskLog (isCI = true) > message > raw = true works when mixed with non-raw messages 1`] = ` 1436 1436 [ 1437 - "│ 1437 + "<dim>│</fg> 1438 1438 ", 1439 - "◇ foo 1439 + "<green>◇</fg> foo 1440 1440 ", 1441 - "│ 1441 + "<dim>│</fg> 1442 1442 ", 1443 1443 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1444 1444 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1447 1447 1448 1448 exports[`taskLog (isCI = true) > message > raw = true works when started with non-raw messages 1`] = ` 1449 1449 [ 1450 - "│ 1450 + "<dim>│</fg> 1451 1451 ", 1452 - "◇ foo 1452 + "<green>◇</fg> foo 1453 1453 ", 1454 - "│ 1454 + "<dim>│</fg> 1455 1455 ", 1456 1456 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1457 1457 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", ··· 1460 1460 1461 1461 exports[`taskLog (isCI = true) > retainLog > error > outputs limited log with limit by default 1`] = ` 1462 1462 [ 1463 - "│ 1463 + "<dim>│</fg> 1464 1464 ", 1465 - "◇ foo 1465 + "<green>◇</fg> foo 1466 1466 ", 1467 - "│ 1467 + "<dim>│</fg> 1468 1468 ", 1469 1469 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1470 1470 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1471 1471 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1472 1472 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1473 - "│ 1474 - ■ woo! 1473 + "<dim>│</fg> 1474 + <red>■</fg> woo! 1475 1475 ", 1476 - "│ 1477 - │ line 2 1478 - │ line 3 1476 + "<dim>│</fg> 1477 + <dim>│</fg> <dim>line 2</bold> 1478 + <dim>│</fg> <dim>line 3</bold> 1479 1479 ", 1480 1480 ] 1481 1481 `; 1482 1482 1483 1483 exports[`taskLog (isCI = true) > retainLog > error > retainLog = false outputs full log without limit 1`] = ` 1484 1484 [ 1485 - "│ 1485 + "<dim>│</fg> 1486 1486 ", 1487 - "◇ foo 1487 + "<green>◇</fg> foo 1488 1488 ", 1489 - "│ 1489 + "<dim>│</fg> 1490 1490 ", 1491 1491 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1492 1492 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1493 1493 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1494 1494 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1495 - "│ 1496 - ■ woo! 1495 + "<dim>│</fg> 1496 + <red>■</fg> woo! 1497 1497 ", 1498 - "│ 1499 - │ line 0 1500 - │ line 1 1501 - │ line 2 1502 - │ line 3 1498 + "<dim>│</fg> 1499 + <dim>│</fg> <dim>line 0</bold> 1500 + <dim>│</fg> <dim>line 1</bold> 1501 + <dim>│</fg> <dim>line 2</bold> 1502 + <dim>│</fg> <dim>line 3</bold> 1503 1503 ", 1504 1504 ] 1505 1505 `; 1506 1506 1507 1507 exports[`taskLog (isCI = true) > retainLog > error > retainLog = false outputs limited log with limit 1`] = ` 1508 1508 [ 1509 - "│ 1509 + "<dim>│</fg> 1510 1510 ", 1511 - "◇ foo 1511 + "<green>◇</fg> foo 1512 1512 ", 1513 - "│ 1513 + "<dim>│</fg> 1514 1514 ", 1515 1515 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1516 1516 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1517 1517 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1518 1518 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1519 - "│ 1520 - ■ woo! 1519 + "<dim>│</fg> 1520 + <red>■</fg> woo! 1521 1521 ", 1522 - "│ 1523 - │ line 2 1524 - │ line 3 1522 + "<dim>│</fg> 1523 + <dim>│</fg> <dim>line 2</bold> 1524 + <dim>│</fg> <dim>line 3</bold> 1525 1525 ", 1526 1526 ] 1527 1527 `; 1528 1528 1529 1529 exports[`taskLog (isCI = true) > retainLog > error > retainLog = true outputs full log 1`] = ` 1530 1530 [ 1531 - "│ 1531 + "<dim>│</fg> 1532 1532 ", 1533 - "◇ foo 1533 + "<green>◇</fg> foo 1534 1534 ", 1535 - "│ 1535 + "<dim>│</fg> 1536 1536 ", 1537 1537 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1538 1538 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1539 1539 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1540 1540 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1541 - "│ 1542 - ■ woo! 1541 + "<dim>│</fg> 1542 + <red>■</fg> woo! 1543 1543 ", 1544 - "│ 1545 - │ line 0 1546 - │ line 1 1547 - │ line 2 1548 - │ line 3 1544 + "<dim>│</fg> 1545 + <dim>│</fg> <dim>line 0</bold> 1546 + <dim>│</fg> <dim>line 1</bold> 1547 + <dim>│</fg> <dim>line 2</bold> 1548 + <dim>│</fg> <dim>line 3</bold> 1549 1549 ", 1550 1550 ] 1551 1551 `; 1552 1552 1553 1553 exports[`taskLog (isCI = true) > retainLog > error > retainLog = true outputs full log with limit 1`] = ` 1554 1554 [ 1555 - "│ 1555 + "<dim>│</fg> 1556 1556 ", 1557 - "◇ foo 1557 + "<green>◇</fg> foo 1558 1558 ", 1559 - "│ 1559 + "<dim>│</fg> 1560 1560 ", 1561 1561 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1562 1562 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1563 1563 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1564 1564 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1565 - "│ 1566 - ■ woo! 1565 + "<dim>│</fg> 1566 + <red>■</fg> woo! 1567 1567 ", 1568 - "│ 1569 - │ line 0 1570 - │ line 1 1571 - │ line 2 1572 - │ line 3 1568 + "<dim>│</fg> 1569 + <dim>│</fg> <dim>line 0</bold> 1570 + <dim>│</fg> <dim>line 1</bold> 1571 + <dim>│</fg> <dim>line 2</bold> 1572 + <dim>│</fg> <dim>line 3</bold> 1573 1573 ", 1574 1574 ] 1575 1575 `; 1576 1576 1577 1577 exports[`taskLog (isCI = true) > retainLog > success > outputs limited log with limit by default 1`] = ` 1578 1578 [ 1579 - "│ 1579 + "<dim>│</fg> 1580 1580 ", 1581 - "◇ foo 1581 + "<green>◇</fg> foo 1582 1582 ", 1583 - "│ 1583 + "<dim>│</fg> 1584 1584 ", 1585 1585 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1586 1586 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1587 1587 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1588 1588 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1589 - "│ 1590 - ◆ woo! 1589 + "<dim>│</fg> 1590 + <green>◆</fg> woo! 1591 1591 ", 1592 - "│ 1593 - │ line 2 1594 - │ line 3 1592 + "<dim>│</fg> 1593 + <dim>│</fg> <dim>line 2</bold> 1594 + <dim>│</fg> <dim>line 3</bold> 1595 1595 ", 1596 1596 ] 1597 1597 `; 1598 1598 1599 1599 exports[`taskLog (isCI = true) > retainLog > success > retainLog = false outputs full log without limit 1`] = ` 1600 1600 [ 1601 - "│ 1601 + "<dim>│</fg> 1602 1602 ", 1603 - "◇ foo 1603 + "<green>◇</fg> foo 1604 1604 ", 1605 - "│ 1605 + "<dim>│</fg> 1606 1606 ", 1607 1607 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1608 1608 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1609 1609 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1610 1610 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1611 - "│ 1612 - ◆ woo! 1611 + "<dim>│</fg> 1612 + <green>◆</fg> woo! 1613 1613 ", 1614 - "│ 1615 - │ line 0 1616 - │ line 1 1617 - │ line 2 1618 - │ line 3 1614 + "<dim>│</fg> 1615 + <dim>│</fg> <dim>line 0</bold> 1616 + <dim>│</fg> <dim>line 1</bold> 1617 + <dim>│</fg> <dim>line 2</bold> 1618 + <dim>│</fg> <dim>line 3</bold> 1619 1619 ", 1620 1620 ] 1621 1621 `; 1622 1622 1623 1623 exports[`taskLog (isCI = true) > retainLog > success > retainLog = false outputs limited log with limit 1`] = ` 1624 1624 [ 1625 - "│ 1625 + "<dim>│</fg> 1626 1626 ", 1627 - "◇ foo 1627 + "<green>◇</fg> foo 1628 1628 ", 1629 - "│ 1629 + "<dim>│</fg> 1630 1630 ", 1631 1631 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1632 1632 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1633 1633 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1634 1634 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1635 - "│ 1636 - ◆ woo! 1635 + "<dim>│</fg> 1636 + <green>◆</fg> woo! 1637 1637 ", 1638 - "│ 1639 - │ line 2 1640 - │ line 3 1638 + "<dim>│</fg> 1639 + <dim>│</fg> <dim>line 2</bold> 1640 + <dim>│</fg> <dim>line 3</bold> 1641 1641 ", 1642 1642 ] 1643 1643 `; 1644 1644 1645 1645 exports[`taskLog (isCI = true) > retainLog > success > retainLog = true outputs full log 1`] = ` 1646 1646 [ 1647 - "│ 1647 + "<dim>│</fg> 1648 1648 ", 1649 - "◇ foo 1649 + "<green>◇</fg> foo 1650 1650 ", 1651 - "│ 1651 + "<dim>│</fg> 1652 1652 ", 1653 1653 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1654 1654 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1655 1655 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1656 1656 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1657 - "│ 1658 - ◆ woo! 1657 + "<dim>│</fg> 1658 + <green>◆</fg> woo! 1659 1659 ", 1660 - "│ 1661 - │ line 0 1662 - │ line 1 1663 - │ line 2 1664 - │ line 3 1660 + "<dim>│</fg> 1661 + <dim>│</fg> <dim>line 0</bold> 1662 + <dim>│</fg> <dim>line 1</bold> 1663 + <dim>│</fg> <dim>line 2</bold> 1664 + <dim>│</fg> <dim>line 3</bold> 1665 1665 ", 1666 1666 ] 1667 1667 `; 1668 1668 1669 1669 exports[`taskLog (isCI = true) > retainLog > success > retainLog = true outputs full log with limit 1`] = ` 1670 1670 [ 1671 - "│ 1671 + "<dim>│</fg> 1672 1672 ", 1673 - "◇ foo 1673 + "<green>◇</fg> foo 1674 1674 ", 1675 - "│ 1675 + "<dim>│</fg> 1676 1676 ", 1677 1677 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1678 1678 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1679 1679 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1680 1680 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1681 - "│ 1682 - ◆ woo! 1681 + "<dim>│</fg> 1682 + <green>◆</fg> woo! 1683 1683 ", 1684 - "│ 1685 - │ line 0 1686 - │ line 1 1687 - │ line 2 1688 - │ line 3 1684 + "<dim>│</fg> 1685 + <dim>│</fg> <dim>line 0</bold> 1686 + <dim>│</fg> <dim>line 1</bold> 1687 + <dim>│</fg> <dim>line 2</bold> 1688 + <dim>│</fg> <dim>line 3</bold> 1689 1689 ", 1690 1690 ] 1691 1691 `; 1692 1692 1693 1693 exports[`taskLog (isCI = true) > success > clears output and renders message 1`] = ` 1694 1694 [ 1695 - "│ 1695 + "<dim>│</fg> 1696 1696 ", 1697 - "◇ foo 1697 + "<green>◇</fg> foo 1698 1698 ", 1699 - "│ 1699 + "<dim>│</fg> 1700 1700 ", 1701 1701 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1702 1702 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1703 - "│ 1704 - ◆ success! 1703 + "<dim>│</fg> 1704 + <green>◆</fg> success! 1705 1705 ", 1706 1706 ] 1707 1707 `; 1708 1708 1709 1709 exports[`taskLog (isCI = true) > success > renders output if showLog = true 1`] = ` 1710 1710 [ 1711 - "│ 1711 + "<dim>│</fg> 1712 1712 ", 1713 - "◇ foo 1713 + "<green>◇</fg> foo 1714 1714 ", 1715 - "│ 1715 + "<dim>│</fg> 1716 1716 ", 1717 1717 "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1718 1718 "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 1719 - "│ 1720 - ◆ success! 1719 + "<dim>│</fg> 1720 + <green>◆</fg> success! 1721 1721 ", 1722 - "│ 1723 - │ line 0 1724 - │ line 1 1722 + "<dim>│</fg> 1723 + <dim>│</fg> <dim>line 0</bold> 1724 + <dim>│</fg> <dim>line 1</bold> 1725 1725 ", 1726 1726 ] 1727 1727 `; 1728 1728 1729 1729 exports[`taskLog (isCI = true) > writes message header 1`] = ` 1730 1730 [ 1731 - "│ 1731 + "<dim>│</fg> 1732 1732 ", 1733 - "◇ foo 1733 + "<green>◇</fg> foo 1734 1734 ", 1735 - "│ 1735 + "<dim>│</fg> 1736 1736 ", 1737 1737 ] 1738 1738 `;
+174 -174
packages/prompts/src/__snapshots__/text.test.ts.snap
··· 3 3 exports[`text (isCI = false) > can be aborted by a signal 1`] = ` 4 4 [ 5 5 "<cursor.hide>", 6 - "│ 7 - ◆ foo 8 - │ _ 9 - └ 6 + "<dim>│</fg> 7 + <cyan>◆</fg> foo 8 + <cyan>│</fg> _ 9 + <cyan>└</fg> 10 10 ", 11 11 " 12 12 ", ··· 17 17 exports[`text (isCI = false) > can cancel 1`] = ` 18 18 [ 19 19 "<cursor.hide>", 20 - "│ 21 - ◆ foo 22 - │ _ 23 - └ 20 + "<dim>│</fg> 21 + <cyan>◆</fg> foo 22 + <cyan>│</fg> _ 23 + <cyan>└</fg> 24 24 ", 25 25 "<cursor.backward count=999><cursor.up count=4>", 26 26 "<cursor.down count=1>", 27 27 "<erase.down>", 28 - "■ foo 29 - │", 28 + "<red>■</fg> foo 29 + <dim>│</fg>", 30 30 " 31 31 ", 32 32 "<cursor.show>", ··· 36 36 exports[`text (isCI = false) > defaultValue sets the value but does not render 1`] = ` 37 37 [ 38 38 "<cursor.hide>", 39 - "│ 40 - ◆ foo 41 - │ _ 42 - └ 39 + "<dim>│</fg> 40 + <cyan>◆</fg> foo 41 + <cyan>│</fg> _ 42 + <cyan>└</fg> 43 43 ", 44 44 "<cursor.backward count=999><cursor.up count=4>", 45 45 "<cursor.down count=1>", 46 46 "<erase.down>", 47 - "◇ foo 48 - │ bar", 47 + "<green>◇</fg> foo 48 + <dim>│</fg> <dim>bar</bold>", 49 49 " 50 50 ", 51 51 "<cursor.show>", ··· 55 55 exports[`text (isCI = false) > empty string when no value and no default 1`] = ` 56 56 [ 57 57 "<cursor.hide>", 58 - "│ 59 - ◆ foo 60 - │   (hit Enter to use default) 61 - └ 58 + "<dim>│</fg> 59 + <cyan>◆</fg> foo 60 + <cyan>│</fg>  <dim> (hit Enter to use default)</bold> 61 + <cyan>└</fg> 62 62 ", 63 63 "<cursor.backward count=999><cursor.up count=4>", 64 64 "<cursor.down count=1>", 65 65 "<erase.down>", 66 - "◇ foo 67 - │", 66 + "<green>◇</fg> foo 67 + <dim>│</fg>", 68 68 " 69 69 ", 70 70 "<cursor.show>", ··· 74 74 exports[`text (isCI = false) > global withGuide: false removes guide 1`] = ` 75 75 [ 76 76 "<cursor.hide>", 77 - "◆ foo 77 + "<cyan>◆</fg> foo 78 78 _ 79 79 80 80 ", 81 81 "<cursor.backward count=999><cursor.up count=3>", 82 82 "<erase.down>", 83 - "◇ foo 83 + "<green>◇</fg> foo 84 84 ", 85 85 " 86 86 ", ··· 91 91 exports[`text (isCI = false) > placeholder is not used as value when pressing enter 1`] = ` 92 92 [ 93 93 "<cursor.hide>", 94 - "│ 95 - ◆ foo 96 - │   (hit Enter to use default) 97 - └ 94 + "<dim>│</fg> 95 + <cyan>◆</fg> foo 96 + <cyan>│</fg>  <dim> (hit Enter to use default)</bold> 97 + <cyan>└</fg> 98 98 ", 99 99 "<cursor.backward count=999><cursor.up count=4>", 100 100 "<cursor.down count=1>", 101 101 "<erase.down>", 102 - "◇ foo 103 - │ default-value", 102 + "<green>◇</fg> foo 103 + <dim>│</fg> <dim>default-value</bold>", 104 104 " 105 105 ", 106 106 "<cursor.show>", ··· 110 110 exports[`text (isCI = false) > renders cancelled value if one set 1`] = ` 111 111 [ 112 112 "<cursor.hide>", 113 - "│ 114 - ◆ foo 115 - │ _ 116 - └ 113 + "<dim>│</fg> 114 + <cyan>◆</fg> foo 115 + <cyan>│</fg> _ 116 + <cyan>└</fg> 117 117 ", 118 118 "<cursor.backward count=999><cursor.up count=4>", 119 119 "<cursor.down count=2>", 120 120 "<erase.line><cursor.left count=1>", 121 - "│ x█", 121 + "<cyan>│</fg> x█", 122 122 "<cursor.down count=2>", 123 123 "<cursor.backward count=999><cursor.up count=4>", 124 124 "<cursor.down count=2>", 125 125 "<erase.line><cursor.left count=1>", 126 - "│ xy█", 126 + "<cyan>│</fg> xy█", 127 127 "<cursor.down count=2>", 128 128 "<cursor.backward count=999><cursor.up count=4>", 129 129 "<cursor.down count=1>", 130 130 "<erase.down>", 131 - "■ foo 132 - │ xy 133 - │", 131 + "<red>■</fg> foo 132 + <dim>│</fg> <dim>xy</bold> 133 + <dim>│</fg>", 134 134 " 135 135 ", 136 136 "<cursor.show>", ··· 140 140 exports[`text (isCI = false) > renders message 1`] = ` 141 141 [ 142 142 "<cursor.hide>", 143 - "│ 144 - ◆ foo 145 - │ _ 146 - └ 143 + "<dim>│</fg> 144 + <cyan>◆</fg> foo 145 + <cyan>│</fg> _ 146 + <cyan>└</fg> 147 147 ", 148 148 "<cursor.backward count=999><cursor.up count=4>", 149 149 "<cursor.down count=1>", 150 150 "<erase.down>", 151 - "◇ foo 152 - │", 151 + "<green>◇</fg> foo 152 + <dim>│</fg>", 153 153 " 154 154 ", 155 155 "<cursor.show>", ··· 159 159 exports[`text (isCI = false) > renders placeholder if set 1`] = ` 160 160 [ 161 161 "<cursor.hide>", 162 - "│ 163 - ◆ foo 164 - │ bar 165 - └ 162 + "<dim>│</fg> 163 + <cyan>◆</fg> foo 164 + <cyan>│</fg> b<dim>ar</bold> 165 + <cyan>└</fg> 166 166 ", 167 167 "<cursor.backward count=999><cursor.up count=4>", 168 168 "<cursor.down count=1>", 169 169 "<erase.down>", 170 - "◇ foo 171 - │", 170 + "<green>◇</fg> foo 171 + <dim>│</fg>", 172 172 " 173 173 ", 174 174 "<cursor.show>", ··· 178 178 exports[`text (isCI = false) > renders submitted value 1`] = ` 179 179 [ 180 180 "<cursor.hide>", 181 - "│ 182 - ◆ foo 183 - │ _ 184 - └ 181 + "<dim>│</fg> 182 + <cyan>◆</fg> foo 183 + <cyan>│</fg> _ 184 + <cyan>└</fg> 185 185 ", 186 186 "<cursor.backward count=999><cursor.up count=4>", 187 187 "<cursor.down count=2>", 188 188 "<erase.line><cursor.left count=1>", 189 - "│ x█", 189 + "<cyan>│</fg> x█", 190 190 "<cursor.down count=2>", 191 191 "<cursor.backward count=999><cursor.up count=4>", 192 192 "<cursor.down count=2>", 193 193 "<erase.line><cursor.left count=1>", 194 - "│ xy█", 194 + "<cyan>│</fg> xy█", 195 195 "<cursor.down count=2>", 196 196 "<cursor.backward count=999><cursor.up count=4>", 197 197 "<cursor.down count=1>", 198 198 "<erase.down>", 199 - "◇ foo 200 - │ xy", 199 + "<green>◇</fg> foo 200 + <dim>│</fg> <dim>xy</bold>", 201 201 " 202 202 ", 203 203 "<cursor.show>", ··· 207 207 exports[`text (isCI = false) > validation errors render and clear (using Error) 1`] = ` 208 208 [ 209 209 "<cursor.hide>", 210 - "│ 211 - ◆ foo 212 - │ _ 213 - └ 210 + "<dim>│</fg> 211 + <cyan>◆</fg> foo 212 + <cyan>│</fg> _ 213 + <cyan>└</fg> 214 214 ", 215 215 "<cursor.backward count=999><cursor.up count=4>", 216 216 "<cursor.down count=2>", 217 217 "<erase.line><cursor.left count=1>", 218 - "│ x█", 218 + "<cyan>│</fg> x█", 219 219 "<cursor.down count=2>", 220 220 "<cursor.backward count=999><cursor.up count=4>", 221 221 "<cursor.down count=1>", 222 222 "<erase.down>", 223 - "▲ foo 224 - │ x█ 225 - └ should be xy 223 + "<yellow>▲</fg> foo 224 + <yellow>│</fg> x█ 225 + <yellow>└</fg> <yellow>should be xy</fg> 226 226 ", 227 227 "<cursor.backward count=999><cursor.up count=4>", 228 228 "<cursor.down count=1>", 229 229 "<erase.down>", 230 - "◆ foo 231 - │ xy█ 232 - └ 230 + "<cyan>◆</fg> foo 231 + <cyan>│</fg> xy█ 232 + <cyan>└</fg> 233 233 ", 234 234 "<cursor.backward count=999><cursor.up count=4>", 235 235 "<cursor.down count=1>", 236 236 "<erase.down>", 237 - "◇ foo 238 - │ xy", 237 + "<green>◇</fg> foo 238 + <dim>│</fg> <dim>xy</bold>", 239 239 " 240 240 ", 241 241 "<cursor.show>", ··· 245 245 exports[`text (isCI = false) > validation errors render and clear 1`] = ` 246 246 [ 247 247 "<cursor.hide>", 248 - "│ 249 - ◆ foo 250 - │ _ 251 - └ 248 + "<dim>│</fg> 249 + <cyan>◆</fg> foo 250 + <cyan>│</fg> _ 251 + <cyan>└</fg> 252 252 ", 253 253 "<cursor.backward count=999><cursor.up count=4>", 254 254 "<cursor.down count=2>", 255 255 "<erase.line><cursor.left count=1>", 256 - "│ x█", 256 + "<cyan>│</fg> x█", 257 257 "<cursor.down count=2>", 258 258 "<cursor.backward count=999><cursor.up count=4>", 259 259 "<cursor.down count=1>", 260 260 "<erase.down>", 261 - "▲ foo 262 - │ x█ 263 - └ should be xy 261 + "<yellow>▲</fg> foo 262 + <yellow>│</fg> x█ 263 + <yellow>└</fg> <yellow>should be xy</fg> 264 264 ", 265 265 "<cursor.backward count=999><cursor.up count=4>", 266 266 "<cursor.down count=1>", 267 267 "<erase.down>", 268 - "◆ foo 269 - │ xy█ 270 - └ 268 + "<cyan>◆</fg> foo 269 + <cyan>│</fg> xy█ 270 + <cyan>└</fg> 271 271 ", 272 272 "<cursor.backward count=999><cursor.up count=4>", 273 273 "<cursor.down count=1>", 274 274 "<erase.down>", 275 - "◇ foo 276 - │ xy", 275 + "<green>◇</fg> foo 276 + <dim>│</fg> <dim>xy</bold>", 277 277 " 278 278 ", 279 279 "<cursor.show>", ··· 283 283 exports[`text (isCI = false) > withGuide: false removes guide 1`] = ` 284 284 [ 285 285 "<cursor.hide>", 286 - "◆ foo 286 + "<cyan>◆</fg> foo 287 287 _ 288 288 289 289 ", 290 290 "<cursor.backward count=999><cursor.up count=3>", 291 291 "<erase.down>", 292 - "◇ foo 292 + "<green>◇</fg> foo 293 293 ", 294 294 " 295 295 ", ··· 300 300 exports[`text (isCI = true) > can be aborted by a signal 1`] = ` 301 301 [ 302 302 "<cursor.hide>", 303 - "│ 304 - ◆ foo 305 - │ _ 306 - └ 303 + "<dim>│</fg> 304 + <cyan>◆</fg> foo 305 + <cyan>│</fg> _ 306 + <cyan>└</fg> 307 307 ", 308 308 " 309 309 ", ··· 314 314 exports[`text (isCI = true) > can cancel 1`] = ` 315 315 [ 316 316 "<cursor.hide>", 317 - "│ 318 - ◆ foo 319 - │ _ 320 - └ 317 + "<dim>│</fg> 318 + <cyan>◆</fg> foo 319 + <cyan>│</fg> _ 320 + <cyan>└</fg> 321 321 ", 322 322 "<cursor.backward count=999><cursor.up count=4>", 323 323 "<cursor.down count=1>", 324 324 "<erase.down>", 325 - "■ foo 326 - │", 325 + "<red>■</fg> foo 326 + <dim>│</fg>", 327 327 " 328 328 ", 329 329 "<cursor.show>", ··· 333 333 exports[`text (isCI = true) > defaultValue sets the value but does not render 1`] = ` 334 334 [ 335 335 "<cursor.hide>", 336 - "│ 337 - ◆ foo 338 - │ _ 339 - └ 336 + "<dim>│</fg> 337 + <cyan>◆</fg> foo 338 + <cyan>│</fg> _ 339 + <cyan>└</fg> 340 340 ", 341 341 "<cursor.backward count=999><cursor.up count=4>", 342 342 "<cursor.down count=1>", 343 343 "<erase.down>", 344 - "◇ foo 345 - │ bar", 344 + "<green>◇</fg> foo 345 + <dim>│</fg> <dim>bar</bold>", 346 346 " 347 347 ", 348 348 "<cursor.show>", ··· 352 352 exports[`text (isCI = true) > empty string when no value and no default 1`] = ` 353 353 [ 354 354 "<cursor.hide>", 355 - "│ 356 - ◆ foo 357 - │   (hit Enter to use default) 358 - └ 355 + "<dim>│</fg> 356 + <cyan>◆</fg> foo 357 + <cyan>│</fg>  <dim> (hit Enter to use default)</bold> 358 + <cyan>└</fg> 359 359 ", 360 360 "<cursor.backward count=999><cursor.up count=4>", 361 361 "<cursor.down count=1>", 362 362 "<erase.down>", 363 - "◇ foo 364 - │", 363 + "<green>◇</fg> foo 364 + <dim>│</fg>", 365 365 " 366 366 ", 367 367 "<cursor.show>", ··· 371 371 exports[`text (isCI = true) > global withGuide: false removes guide 1`] = ` 372 372 [ 373 373 "<cursor.hide>", 374 - "◆ foo 374 + "<cyan>◆</fg> foo 375 375 _ 376 376 377 377 ", 378 378 "<cursor.backward count=999><cursor.up count=3>", 379 379 "<erase.down>", 380 - "◇ foo 380 + "<green>◇</fg> foo 381 381 ", 382 382 " 383 383 ", ··· 388 388 exports[`text (isCI = true) > placeholder is not used as value when pressing enter 1`] = ` 389 389 [ 390 390 "<cursor.hide>", 391 - "│ 392 - ◆ foo 393 - │   (hit Enter to use default) 394 - └ 391 + "<dim>│</fg> 392 + <cyan>◆</fg> foo 393 + <cyan>│</fg>  <dim> (hit Enter to use default)</bold> 394 + <cyan>└</fg> 395 395 ", 396 396 "<cursor.backward count=999><cursor.up count=4>", 397 397 "<cursor.down count=1>", 398 398 "<erase.down>", 399 - "◇ foo 400 - │ default-value", 399 + "<green>◇</fg> foo 400 + <dim>│</fg> <dim>default-value</bold>", 401 401 " 402 402 ", 403 403 "<cursor.show>", ··· 407 407 exports[`text (isCI = true) > renders cancelled value if one set 1`] = ` 408 408 [ 409 409 "<cursor.hide>", 410 - "│ 411 - ◆ foo 412 - │ _ 413 - └ 410 + "<dim>│</fg> 411 + <cyan>◆</fg> foo 412 + <cyan>│</fg> _ 413 + <cyan>└</fg> 414 414 ", 415 415 "<cursor.backward count=999><cursor.up count=4>", 416 416 "<cursor.down count=2>", 417 417 "<erase.line><cursor.left count=1>", 418 - "│ x█", 418 + "<cyan>│</fg> x█", 419 419 "<cursor.down count=2>", 420 420 "<cursor.backward count=999><cursor.up count=4>", 421 421 "<cursor.down count=2>", 422 422 "<erase.line><cursor.left count=1>", 423 - "│ xy█", 423 + "<cyan>│</fg> xy█", 424 424 "<cursor.down count=2>", 425 425 "<cursor.backward count=999><cursor.up count=4>", 426 426 "<cursor.down count=1>", 427 427 "<erase.down>", 428 - "■ foo 429 - │ xy 430 - │", 428 + "<red>■</fg> foo 429 + <dim>│</fg> <dim>xy</bold> 430 + <dim>│</fg>", 431 431 " 432 432 ", 433 433 "<cursor.show>", ··· 437 437 exports[`text (isCI = true) > renders message 1`] = ` 438 438 [ 439 439 "<cursor.hide>", 440 - "│ 441 - ◆ foo 442 - │ _ 443 - └ 440 + "<dim>│</fg> 441 + <cyan>◆</fg> foo 442 + <cyan>│</fg> _ 443 + <cyan>└</fg> 444 444 ", 445 445 "<cursor.backward count=999><cursor.up count=4>", 446 446 "<cursor.down count=1>", 447 447 "<erase.down>", 448 - "◇ foo 449 - │", 448 + "<green>◇</fg> foo 449 + <dim>│</fg>", 450 450 " 451 451 ", 452 452 "<cursor.show>", ··· 456 456 exports[`text (isCI = true) > renders placeholder if set 1`] = ` 457 457 [ 458 458 "<cursor.hide>", 459 - "│ 460 - ◆ foo 461 - │ bar 462 - └ 459 + "<dim>│</fg> 460 + <cyan>◆</fg> foo 461 + <cyan>│</fg> b<dim>ar</bold> 462 + <cyan>└</fg> 463 463 ", 464 464 "<cursor.backward count=999><cursor.up count=4>", 465 465 "<cursor.down count=1>", 466 466 "<erase.down>", 467 - "◇ foo 468 - │", 467 + "<green>◇</fg> foo 468 + <dim>│</fg>", 469 469 " 470 470 ", 471 471 "<cursor.show>", ··· 475 475 exports[`text (isCI = true) > renders submitted value 1`] = ` 476 476 [ 477 477 "<cursor.hide>", 478 - "│ 479 - ◆ foo 480 - │ _ 481 - └ 478 + "<dim>│</fg> 479 + <cyan>◆</fg> foo 480 + <cyan>│</fg> _ 481 + <cyan>└</fg> 482 482 ", 483 483 "<cursor.backward count=999><cursor.up count=4>", 484 484 "<cursor.down count=2>", 485 485 "<erase.line><cursor.left count=1>", 486 - "│ x█", 486 + "<cyan>│</fg> x█", 487 487 "<cursor.down count=2>", 488 488 "<cursor.backward count=999><cursor.up count=4>", 489 489 "<cursor.down count=2>", 490 490 "<erase.line><cursor.left count=1>", 491 - "│ xy█", 491 + "<cyan>│</fg> xy█", 492 492 "<cursor.down count=2>", 493 493 "<cursor.backward count=999><cursor.up count=4>", 494 494 "<cursor.down count=1>", 495 495 "<erase.down>", 496 - "◇ foo 497 - │ xy", 496 + "<green>◇</fg> foo 497 + <dim>│</fg> <dim>xy</bold>", 498 498 " 499 499 ", 500 500 "<cursor.show>", ··· 504 504 exports[`text (isCI = true) > validation errors render and clear (using Error) 1`] = ` 505 505 [ 506 506 "<cursor.hide>", 507 - "│ 508 - ◆ foo 509 - │ _ 510 - └ 507 + "<dim>│</fg> 508 + <cyan>◆</fg> foo 509 + <cyan>│</fg> _ 510 + <cyan>└</fg> 511 511 ", 512 512 "<cursor.backward count=999><cursor.up count=4>", 513 513 "<cursor.down count=2>", 514 514 "<erase.line><cursor.left count=1>", 515 - "│ x█", 515 + "<cyan>│</fg> x█", 516 516 "<cursor.down count=2>", 517 517 "<cursor.backward count=999><cursor.up count=4>", 518 518 "<cursor.down count=1>", 519 519 "<erase.down>", 520 - "▲ foo 521 - │ x█ 522 - └ should be xy 520 + "<yellow>▲</fg> foo 521 + <yellow>│</fg> x█ 522 + <yellow>└</fg> <yellow>should be xy</fg> 523 523 ", 524 524 "<cursor.backward count=999><cursor.up count=4>", 525 525 "<cursor.down count=1>", 526 526 "<erase.down>", 527 - "◆ foo 528 - │ xy█ 529 - └ 527 + "<cyan>◆</fg> foo 528 + <cyan>│</fg> xy█ 529 + <cyan>└</fg> 530 530 ", 531 531 "<cursor.backward count=999><cursor.up count=4>", 532 532 "<cursor.down count=1>", 533 533 "<erase.down>", 534 - "◇ foo 535 - │ xy", 534 + "<green>◇</fg> foo 535 + <dim>│</fg> <dim>xy</bold>", 536 536 " 537 537 ", 538 538 "<cursor.show>", ··· 542 542 exports[`text (isCI = true) > validation errors render and clear 1`] = ` 543 543 [ 544 544 "<cursor.hide>", 545 - "│ 546 - ◆ foo 547 - │ _ 548 - └ 545 + "<dim>│</fg> 546 + <cyan>◆</fg> foo 547 + <cyan>│</fg> _ 548 + <cyan>└</fg> 549 549 ", 550 550 "<cursor.backward count=999><cursor.up count=4>", 551 551 "<cursor.down count=2>", 552 552 "<erase.line><cursor.left count=1>", 553 - "│ x█", 553 + "<cyan>│</fg> x█", 554 554 "<cursor.down count=2>", 555 555 "<cursor.backward count=999><cursor.up count=4>", 556 556 "<cursor.down count=1>", 557 557 "<erase.down>", 558 - "▲ foo 559 - │ x█ 560 - └ should be xy 558 + "<yellow>▲</fg> foo 559 + <yellow>│</fg> x█ 560 + <yellow>└</fg> <yellow>should be xy</fg> 561 561 ", 562 562 "<cursor.backward count=999><cursor.up count=4>", 563 563 "<cursor.down count=1>", 564 564 "<erase.down>", 565 - "◆ foo 566 - │ xy█ 567 - └ 565 + "<cyan>◆</fg> foo 566 + <cyan>│</fg> xy█ 567 + <cyan>└</fg> 568 568 ", 569 569 "<cursor.backward count=999><cursor.up count=4>", 570 570 "<cursor.down count=1>", 571 571 "<erase.down>", 572 - "◇ foo 573 - │ xy", 572 + "<green>◇</fg> foo 573 + <dim>│</fg> <dim>xy</bold>", 574 574 " 575 575 ", 576 576 "<cursor.show>", ··· 580 580 exports[`text (isCI = true) > withGuide: false removes guide 1`] = ` 581 581 [ 582 582 "<cursor.hide>", 583 - "◆ foo 583 + "<cyan>◆</fg> foo 584 584 _ 585 585 586 586 ", 587 587 "<cursor.backward count=999><cursor.up count=3>", 588 588 "<erase.down>", 589 - "◇ foo 589 + "<green>◇</fg> foo 590 590 ", 591 591 " 592 592 ",