github.com/argoproj/argo-cd/v3@v3.2.1/ui/src/app/applications/components/application-resource-tree/application-resource-tree.scss (about) 1 @import 'node_modules/argo-ui/src/styles/config'; 2 @import 'node_modules/argo-ui/src/styles/theme'; 3 4 .application-resource-tree { 5 position: relative; 6 overflow: hidden; 7 8 &__line { 9 position: absolute; 10 z-index: -1; 11 transition: all 0.2s linear; 12 border-top: 1px dashed $argo-color-gray-5; 13 } 14 15 &__edge { 16 .application-resource-tree__line { 17 &:last-child { 18 &:after { 19 content: '\25BA'; 20 position: absolute; 21 color: #A3A3A3; 22 font-size: 10px; 23 top: -9px; 24 transform: rotate(180deg); 25 } 26 } 27 } 28 } 29 30 &--network { 31 .application-resource-tree__line { 32 background-image: linear-gradient(90deg, $argo-color-teal-5 50%, transparent 50%); 33 background-repeat: repeat-x, repeat-x, repeat-y, repeat-y; 34 background-size: 20px 3px, 0px 0px, 0px 0px, 0px 0px; 35 background-position: left top, right bottom, left bottom, right top; 36 animation: network-flow 1s infinite linear; 37 height: 3px; 38 border-top: none; 39 } 40 @keyframes network-flow { 41 0% { 42 background-position: left 20px top, right 20px bottom , left bottom 20px , right top 20px; 43 } 44 100% { 45 background-position: left top, right bottom, left bottom, right top; 46 } 47 } 48 49 .application-resource-tree__edge { 50 .application-resource-tree__line { 51 &:last-child { 52 &:after { 53 content: none; 54 } 55 } 56 } 57 } 58 } 59 60 $pod-size: 25px; 61 $gutter: 3px; 62 $pods-per-row: 8; 63 $pods-per-column: 4; 64 $max-rows: 5; 65 $num-stats: 2; 66 67 &__node { 68 position: absolute; 69 transition: all 0.2s linear; 70 padding-left: 3.5em; 71 padding-right: 1em; 72 margin: 10px; 73 box-shadow: 1px 1px 1px $argo-color-gray-4; 74 @include themify($themes) { 75 background-color: themed('background-2'); 76 color: themed('text-2'); 77 } 78 border-radius: 4px; 79 border: 1px solid transparent; 80 cursor: pointer; 81 82 .theme-dark & { 83 box-shadow: 1px 1px 1px $argo-color-gray-7; 84 } 85 86 .icon { 87 font-size: 2em; 88 } 89 90 .icon-background 91 { 92 color: $argo-color-gray-4; 93 } 94 95 .fa-filter { 96 margin-left: 8px; 97 padding: 2px; 98 } 99 100 &.active { 101 border-color: $argo-color-teal-6; 102 } 103 104 &--orphaned { 105 @include themify($themes) { 106 background-color: themed('light-argo-gray-2') !important; 107 } 108 } 109 110 &--grouped-node { 111 cursor: default; 112 } 113 114 &__top-part { 115 cursor: pointer; 116 } 117 118 &--load-balancer { 119 cursor: default; 120 background-color: $argo-color-teal-2; 121 } 122 123 &--expansion { 124 position: absolute; 125 flex-shrink: 0px; 126 z-index: 10; 127 font-size: 0.5em; 128 padding: 2px; 129 box-shadow: 1px 1px 1px $argo-color-gray-4; 130 @include themify($themes) { 131 background-color: themed('background-2'); 132 } 133 margin-top: 9px; 134 margin-left: 215px; 135 136 .theme-dark & { 137 box-shadow: 1px 1px 1px $argo-color-gray-7; 138 } 139 } 140 141 &--podgroup--expansion { 142 position: absolute; 143 flex-shrink: 0px; 144 z-index: 10; 145 font-size: 0.5em; 146 padding: 2px; 147 box-shadow: 1px 1px 1px $argo-color-gray-4; 148 background-color: white; 149 margin-left: 215px; 150 @include themify($themes) { 151 background-color: themed('background-2'); 152 } 153 154 .theme-dark & { 155 box-shadow: 1px 1px 1px $argo-color-gray-7; 156 } 157 } 158 159 &--pod { 160 @include themify($themes) { 161 background-color: themed('pod-cyan') !important; 162 } 163 } 164 165 &--lower-section { 166 left: 8px; 167 right: 10px; 168 margin-top: 10px; 169 margin-bottom: 10px; 170 $pod-container-width: $pods-per-row * ($pod-size + (2 * $gutter)) + 4 * $gutter; 171 $pod-container-height: $pods-per-column * ($pod-size + (2 * $gutter)) + 4 * $gutter; 172 $padding: 1px; 173 $stat-width: 1px; 174 padding: $padding; 175 transition: all 1s linear; 176 position: absolute; 177 178 &__pod-group { 179 $pod-container-width: $pods-per-row * ($pod-size + (2 * $gutter)) + 4 * $gutter; 180 $pod-container-height: $pods-per-column * ($pod-size + (2 * $gutter)) + 4 * $gutter; 181 padding: $padding; 182 width: $pod-container-width + 2 * $padding; 183 184 &__label { 185 margin-top: 1em; 186 font-size: 10px; 187 text-align: center; 188 } 189 &__pod-container { 190 flex-direction: column; 191 width: $pod-container-width; 192 margin-top: auto; 193 &__pods { 194 display: flex; 195 flex-wrap: wrap; 196 width: 100%; 197 background-color: $argo-color-gray-3; 198 border-radius: 3px; 199 align-items: center; 200 padding: $gutter * 2; 201 margin-right: -1 * $gutter; 202 margin-bottom: -1 * $gutter; 203 } 204 } 205 206 &__pod { 207 border-radius: 3px; 208 width: $pod-size; 209 height: $pod-size; 210 margin: $gutter; 211 cursor: pointer; 212 display: flex; 213 align-items: center; 214 justify-content: center; 215 background-color: $argo-color-gray-5; 216 transition: all 0.2s ease-in-out; 217 i.fa { 218 color: white !important; 219 } 220 &--succeeded, 221 &--healthy { 222 background-color: $argo-success-color; 223 &:hover { 224 background-color: $argo-success-color-dark; 225 } 226 } 227 &--pending, 228 &--suspended { 229 background-color: $argo-status-warning-color; 230 &:hover { 231 background-color: darken($argo-status-warning-color, 10%); 232 } 233 } 234 &--running, 235 &--progressing { 236 background-color: $argo-running-color; 237 &:hover { 238 background-color: $argo-running-color-dark; 239 } 240 } 241 &--failed, 242 &--degraded { 243 background-color: $argo-failed-color; 244 border: 2px solid rgba(0, 0, 0, 0.3); 245 &:hover { 246 background-color: $argo-failed-color-dark; 247 } 248 } 249 &--unknown, 250 &--missing { 251 background-color: $argo-color-gray-5; 252 &:hover { 253 background-color: $argo-color-gray-6; 254 } 255 } 256 &__star-icon { 257 background: none; 258 color: #ffce25; 259 display: block; 260 left: 20px; 261 margin: 0px; 262 position: absolute; 263 top: -5px; 264 } 265 &__stat-tooltip { 266 text-align: left; 267 268 i { 269 display: inline-block; 270 height: 1em; 271 width: 1em; 272 border-radius: 5px; 273 } 274 } 275 276 &__stat-icon-app { 277 background-color: $argo-color-teal-7; 278 } 279 280 &__stat-icon-neighbors { 281 background-color: $argo-color-gray-6; 282 } 283 284 &__stat { 285 &__bar { 286 background-color: $argo-color-gray-4; 287 height: $max-rows * $pod-size; 288 width: $stat-width; 289 position: relative; 290 border-radius: 2px; 291 margin: 0 $gutter * 2; 292 overflow: hidden; 293 cursor: pointer; 294 295 &--fill { 296 position: absolute; 297 background-color: $argo-color-teal-7; 298 width: 100%; 299 bottom: 0; 300 } 301 302 &--neighbors { 303 background-color: $argo-color-gray-6; 304 } 305 306 &:hover > &--fill { 307 background-color: $argo-color-teal-8; 308 } 309 310 &:hover &--neighbors { 311 background-color: $argo-color-gray-7; 312 } 313 } 314 } 315 } 316 } 317 } 318 } 319 320 &__filtered-indicator { 321 z-index: -1; 322 } 323 324 &__node-animation { 325 position: absolute; 326 left: 0; 327 right: 0; 328 top: 0; 329 bottom: 0; 330 animation: shadow-pulse 1s 1; 331 pointer-events: none; 332 } 333 334 @keyframes shadow-pulse { 335 0% { 336 box-shadow: 0 0 0 0px rgba(0, 0, 0, 0.2); 337 } 338 100% { 339 box-shadow: 0 0 0 15px rgba(0, 0, 0, 0); 340 } 341 } 342 &__node-menu { 343 position: absolute; 344 right: 0px; 345 top: 7px; 346 } 347 348 &__node-content { 349 overflow: hidden; 350 text-overflow: ellipsis; 351 white-space: nowrap; 352 } 353 354 &__node-kind-icon { 355 text-align: center; 356 position: absolute; 357 left: 0; 358 top: 8px; 359 width: 60px; 360 line-height: 1; 361 color: $argo-color-gray-7; 362 363 &--big { 364 background: $argo-color-gray-5; 365 position: absolute; 366 width: 65px; 367 height: 65px; 368 border-radius: 33px; 369 left: -20px; 370 top: -8px; 371 text-align: center; 372 373 @include themify($themes) { 374 border: 4px solid themed('background-2'); 375 } 376 377 i { 378 color: $white-color; 379 line-height: 56px; 380 font-size: 28px; 381 } 382 } 383 } 384 385 &__node-labels { 386 position: absolute; 387 bottom: -14px; 388 right: 0; 389 } 390 391 &__node-label { 392 background-color: $argo-color-gray-4; 393 color: $argo-color-gray-7; 394 border: 1px solid $argo-color-gray-5; 395 border-radius: 5px; 396 padding: 0 5px; 397 font-size: 0.6em; 398 text-transform: lowercase; 399 margin-right: 1px; 400 } 401 402 403 &__node-kind { 404 font-size: 0.7em; 405 color: $argo-color-gray-6; 406 } 407 408 &__node-content { 409 padding: 10px 20px 10px 10px; 410 line-height: 0.95; 411 display: flex; 412 flex-direction: column; 413 } 414 415 &__node-title { 416 font-size: 0.8em; 417 padding-bottom: 5px; 418 overflow: hidden; 419 text-overflow: ellipsis; 420 text-align: left; 421 422 } 423 424 &__fullname { 425 white-space: normal 426 } 427 428 &__node-status-icon { 429 font-size: 0.8em; 430 i, svg { 431 margin-right: 2px; 432 } 433 } 434 &__direction-left { 435 direction: ltl; 436 } 437 &__direction-right { 438 direction: rtl; 439 } 440 &__direction-center-left { 441 overflow: hidden; 442 padding-top: 15px; 443 padding-left: 15px; 444 445 } 446 447 }