github.com/argoproj/argo-cd/v2@v2.10.9/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: -10px; 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 &--load-balancer { 111 cursor: default; 112 background-color: $argo-color-teal-2; 113 } 114 115 &--expansion { 116 position: absolute; 117 flex-shrink: 0px; 118 z-index: 10; 119 font-size: 0.5em; 120 padding: 2px; 121 box-shadow: 1px 1px 1px $argo-color-gray-4; 122 @include themify($themes) { 123 background-color: themed('background-2'); 124 } 125 margin-top: 9px; 126 margin-left: 215px; 127 128 .theme-dark & { 129 box-shadow: 1px 1px 1px $argo-color-gray-7; 130 } 131 } 132 133 &--podgroup--expansion { 134 position: absolute; 135 flex-shrink: 0px; 136 z-index: 10; 137 font-size: 0.5em; 138 padding: 2px; 139 box-shadow: 1px 1px 1px $argo-color-gray-4; 140 background-color: white; 141 margin-left: 215px; 142 143 .theme-dark & { 144 box-shadow: 1px 1px 1px $argo-color-gray-7; 145 } 146 } 147 148 &--pod { 149 @include themify($themes) { 150 background-color: themed('pod-cyan') !important; 151 } 152 } 153 &--nodegroup{ 154 padding-left: 3.5em; 155 padding-top: 25px; 156 } 157 158 &--lower-section { 159 left: 8px; 160 right: 10px; 161 margin-top: 10px; 162 margin-bottom: 10px; 163 $pod-container-width: $pods-per-row * ($pod-size + (2 * $gutter)) + 4 * $gutter; 164 $pod-container-height: $pods-per-column * ($pod-size + (2 * $gutter)) + 4 * $gutter; 165 $padding: 1px; 166 $stat-width: 1px; 167 padding: $padding; 168 transition: all 1s linear; 169 position: absolute; 170 171 &__pod-group { 172 $pod-container-width: $pods-per-row * ($pod-size + (2 * $gutter)) + 4 * $gutter; 173 $pod-container-height: $pods-per-column * ($pod-size + (2 * $gutter)) + 4 * $gutter; 174 padding: $padding; 175 width: $pod-container-width + 2 * $padding; 176 177 &__label { 178 margin-top: 1em; 179 font-size: 10px; 180 text-align: center; 181 } 182 &__pod-container { 183 flex-direction: column; 184 width: $pod-container-width; 185 margin-top: auto; 186 &__pods { 187 display: flex; 188 flex-wrap: wrap; 189 width: 100%; 190 background-color: $argo-color-gray-3; 191 border-radius: 3px; 192 align-items: center; 193 padding: $gutter * 2; 194 margin-right: -1 * $gutter; 195 margin-bottom: -1 * $gutter; 196 } 197 } 198 199 &__pod { 200 border-radius: 3px; 201 width: $pod-size; 202 height: $pod-size; 203 margin: $gutter; 204 cursor: pointer; 205 display: flex; 206 align-items: center; 207 justify-content: center; 208 background-color: $argo-color-gray-5; 209 transition: all 0.2s ease-in-out; 210 i.fa { 211 color: white !important; 212 } 213 &--succeeded, 214 &--healthy { 215 background-color: $argo-success-color; 216 &:hover { 217 background-color: $argo-success-color-dark; 218 } 219 } 220 &--pending, 221 &--suspended { 222 background-color: $argo-status-warning-color; 223 &:hover { 224 background-color: darken($argo-status-warning-color, 10%); 225 } 226 } 227 &--running, 228 &--progressing { 229 background-color: $argo-running-color; 230 &:hover { 231 background-color: $argo-running-color-dark; 232 } 233 } 234 &--failed, 235 &--degraded { 236 background-color: $argo-failed-color; 237 border: 2px solid rgba(0, 0, 0, 0.3); 238 &:hover { 239 background-color: $argo-failed-color-dark; 240 } 241 } 242 &--unknown, 243 &--missing { 244 background-color: $argo-color-gray-5; 245 &:hover { 246 background-color: $argo-color-gray-6; 247 } 248 } 249 &__star-icon { 250 background: none; 251 color: #ffce25; 252 display: block; 253 left: 20px; 254 margin: 0px; 255 position: absolute; 256 top: -5px; 257 } 258 &__stat-tooltip { 259 text-align: left; 260 261 i { 262 display: inline-block; 263 height: 1em; 264 width: 1em; 265 border-radius: 5px; 266 } 267 } 268 269 &__stat-icon-app { 270 background-color: $argo-color-teal-7; 271 } 272 273 &__stat-icon-neighbors { 274 background-color: $argo-color-gray-6; 275 } 276 277 &__stat { 278 &__bar { 279 background-color: $argo-color-gray-4; 280 height: $max-rows * $pod-size; 281 width: $stat-width; 282 position: relative; 283 border-radius: 2px; 284 margin: 0 $gutter * 2; 285 overflow: hidden; 286 cursor: pointer; 287 288 &--fill { 289 position: absolute; 290 background-color: $argo-color-teal-7; 291 width: 100%; 292 bottom: 0; 293 } 294 295 &--neighbors { 296 background-color: $argo-color-gray-6; 297 } 298 299 &:hover > &--fill { 300 background-color: $argo-color-teal-8; 301 } 302 303 &:hover &--neighbors { 304 background-color: $argo-color-gray-7; 305 } 306 } 307 } 308 } 309 } 310 } 311 } 312 313 &__filtered-indicator { 314 z-index: -1; 315 } 316 317 &__node-animation { 318 position: absolute; 319 left: 0; 320 right: 0; 321 top: 0; 322 bottom: 0; 323 animation: shadow-pulse 1s 1; 324 } 325 326 @keyframes shadow-pulse { 327 0% { 328 box-shadow: 0 0 0 0px rgba(0, 0, 0, 0.2); 329 } 330 100% { 331 box-shadow: 0 0 0 15px rgba(0, 0, 0, 0); 332 } 333 } 334 &__node-menu { 335 position: absolute; 336 right: 0px; 337 top: 7px; 338 } 339 340 &__node-content { 341 overflow: hidden; 342 text-overflow: ellipsis; 343 white-space: nowrap; 344 } 345 346 &__node-kind-icon { 347 text-align: center; 348 position: absolute; 349 left: 0; 350 top: 8px; 351 width: 60px; 352 line-height: 1; 353 color: $argo-color-gray-7; 354 355 &--big { 356 background: $argo-color-gray-5; 357 position: absolute; 358 width: 65px; 359 height: 65px; 360 border-radius: 33px; 361 left: -20px; 362 top: -8px; 363 text-align: center; 364 365 @include themify($themes) { 366 border: 4px solid themed('background-2'); 367 } 368 369 i { 370 color: $white-color; 371 line-height: 56px; 372 font-size: 28px; 373 } 374 } 375 } 376 377 &__node-labels { 378 position: absolute; 379 bottom: -14px; 380 right: 0; 381 } 382 383 &__node-label { 384 background-color: $argo-color-gray-4; 385 color: $argo-color-gray-7; 386 border: 1px solid $argo-color-gray-5; 387 border-radius: 5px; 388 padding: 0 5px; 389 font-size: 0.6em; 390 text-transform: lowercase; 391 margin-right: 1px; 392 } 393 394 395 &__node-kind { 396 font-size: 0.7em; 397 color: $argo-color-gray-6; 398 } 399 400 &__node-content { 401 padding: 10px 20px 10px 10px; 402 line-height: 0.95; 403 display: flex; 404 flex-direction: column; 405 } 406 407 &__node-title { 408 font-size: 0.8em; 409 padding-bottom: 5px; 410 overflow: hidden; 411 text-overflow: ellipsis; 412 text-align: left; 413 414 } 415 416 &__node-status-icon { 417 font-size: 0.8em; 418 i { 419 margin-right: 2px; 420 } 421 } 422 &__direction-left { 423 direction: ltl; 424 } 425 &__direction-right { 426 direction: rtl; 427 } 428 &__direction-center-left { 429 overflow: hidden; 430 padding-top: 15px; 431 padding-left: 15px; 432 433 } 434 435 }