Copilot commented on code in PR #1355:
URL: https://github.com/apache/airflow-site/pull/1355#discussion_r2649248971


##########
landing-pages/site/assets/scss/_list-boxes.scss:
##########
@@ -307,6 +326,56 @@ $card-margin: 20px;
     &__integration--name {
       color: var(--bs-emphasis-color);
     }
+    
+    // Testimonials (Transparent BG) - Consistent Gray
+    &__use-cases--testimonial--logo img {
+      filter: brightness(0) invert(0.6);
+      opacity: 1;
+    }
+
+    // Experity: Revert to original (White BG JPG)
+    .logo-experity img {
+      filter: none;
+      opacity: 0.6;
+    }
+
+    // Rancher SUSE & Sift specific: Swap logo in dark mode
+    .logo-rancherbysuse,
+    .logo-sift {
+      .logo-default { display: none; }
+      .logo-dark-mode { display: block; }
+    }
+
+    // Use Cases (White BG) - Consistent Gray via Screen Blend
+    &.hoverable-icon .box-event__use-cases--logo img {
+      // Normalize to B/W (Text=Black, BG=White) then Invert (Text=White, 
BG=Black) then Gray
+      filter: brightness(0.6) contrast(25) grayscale(1) invert(1) 
brightness(0.6);
+      mix-blend-mode: screen;
+      opacity: 1;
+    }
+
+    // Hover state for Use Cases (Top boxes) - Keep inverted to stay white, 
but rotate hue to restore colors
+    &.hoverable-icon:hover {
+      .box-event__use-cases--logo img {
+        filter: invert(1) hue-rotate(180deg);

Review Comment:
   The `hue-rotate(180deg)` filter on hover is used to restore colors after 
inversion, but 180-degree hue rotation doesn't restore original colors—it 
shifts them to complementary colors. For example, blue becomes yellow, red 
becomes cyan. If the intent is to restore original logo colors on hover, this 
approach is incorrect. Consider using separate image assets for hover states or 
removing the filters entirely on hover.
   ```suggestion
       // Hover state for Use Cases (Top boxes) - Restore original logo colors
       &.hoverable-icon:hover {
         .box-event__use-cases--logo img {
           filter: none;
           mix-blend-mode: normal;
   ```



##########
landing-pages/site/assets/scss/_list-boxes.scss:
##########
@@ -307,6 +326,56 @@ $card-margin: 20px;
     &__integration--name {
       color: var(--bs-emphasis-color);
     }
+    
+    // Testimonials (Transparent BG) - Consistent Gray
+    &__use-cases--testimonial--logo img {
+      filter: brightness(0) invert(0.6);
+      opacity: 1;
+    }
+
+    // Experity: Revert to original (White BG JPG)
+    .logo-experity img {
+      filter: none;
+      opacity: 0.6;
+    }
+
+    // Rancher SUSE & Sift specific: Swap logo in dark mode
+    .logo-rancherbysuse,
+    .logo-sift {
+      .logo-default { display: none; }
+      .logo-dark-mode { display: block; }
+    }
+
+    // Use Cases (White BG) - Consistent Gray via Screen Blend
+    &.hoverable-icon .box-event__use-cases--logo img {
+      // Normalize to B/W (Text=Black, BG=White) then Invert (Text=White, 
BG=Black) then Gray
+      filter: brightness(0.6) contrast(25) grayscale(1) invert(1) 
brightness(0.6);
+      mix-blend-mode: screen;
+      opacity: 1;
+    }
+
+    // Hover state for Use Cases (Top boxes) - Keep inverted to stay white, 
but rotate hue to restore colors
+    &.hoverable-icon:hover {
+      .box-event__use-cases--logo img {
+        filter: invert(1) hue-rotate(180deg);
+        opacity: 1;
+      }
+    }
+
+    // Hover state for Testimonials - Restore original colors
+    &.hoverable-icon:hover {
+      .box-event__use-cases--testimonial--logo img {
+        filter: none;
+        opacity: 1;
+        mix-blend-mode: normal;
+      }
+      // Plarium & Onefootball specific: White on hover in dark mode
+      .logo-plarium-krasnodar img,
+      .logo-onefootball img {
+        filter: brightness(0) invert(1);
+      }
+    }

Review Comment:
   The selector `&.hoverable-icon:hover` is duplicated within the 
`[data-bs-theme="dark"]` block - once for Use Cases logos (lines 358-363) and 
once for Testimonials (lines 366-377). While CSS will apply both rules, this 
creates confusion and makes the code harder to maintain. Consider combining 
these into a single hover rule or using more specific selectors to clarify the 
intent.



##########
landing-pages/site/assets/scss/_list-boxes.scss:
##########
@@ -307,6 +326,56 @@ $card-margin: 20px;
     &__integration--name {
       color: var(--bs-emphasis-color);
     }
+    
+    // Testimonials (Transparent BG) - Consistent Gray
+    &__use-cases--testimonial--logo img {
+      filter: brightness(0) invert(0.6);
+      opacity: 1;
+    }
+
+    // Experity: Revert to original (White BG JPG)
+    .logo-experity img {
+      filter: none;
+      opacity: 0.6;
+    }
+
+    // Rancher SUSE & Sift specific: Swap logo in dark mode
+    .logo-rancherbysuse,
+    .logo-sift {
+      .logo-default { display: none; }
+      .logo-dark-mode { display: block; }
+    }
+
+    // Use Cases (White BG) - Consistent Gray via Screen Blend
+    &.hoverable-icon .box-event__use-cases--logo img {
+      // Normalize to B/W (Text=Black, BG=White) then Invert (Text=White, 
BG=Black) then Gray
+      filter: brightness(0.6) contrast(25) grayscale(1) invert(1) 
brightness(0.6);

Review Comment:
   The complex filter chain `filter: brightness(0.6) contrast(25) grayscale(1) 
invert(1) brightness(0.6)` may have inconsistent results across different 
browsers and operating systems. Multiple stacked CSS filters can compound 
rendering differences. Consider testing this thoroughly across browsers 
(Chrome, Firefox, Safari, Edge) and consider using simpler filter combinations 
or CSS blend modes where possible to ensure consistent visual results.
   ```suggestion
         // Normalize to B/W (Text=Black, BG=White), then invert (Text=White, 
BG=Black), then slightly dim
         filter: grayscale(1) invert(1) brightness(0.6);
   ```



##########
landing-pages/site/layouts/partials/boxes/testimonial.html:
##########
@@ -20,9 +20,15 @@
    {{ $title := .title }}
    <div class="card">
        <div class="box-event box-event__use-cases hoverable-icon">
-           <div class="box-event__use-cases--testimonial--logo">
+           <div class="box-event__use-cases--testimonial--logo logo-{{ $title 
| urlize }}">
                {{ with .logo }}
-                   <img src="/usecase-logos/{{ . }}" alt="{{ $title }} logo" />
+                   <img class="logo-default" src="/usecase-logos/{{ . }}" 
alt="{{ $title }} logo" />
+               {{ end }}
+               {{ if eq $title "RancherBySUSE" }}
+                   <img class="logo-dark-mode" 
src="/usecase-logos/rancher-suse-white.svg" alt="{{ $title }} logo" />
+               {{ end }}
+               {{ if eq $title "Sift" }}
+                   <img class="logo-dark-mode" 
src="/usecase-logos/sift-logo-white.svg" alt="{{ $title }} logo" />
                {{ end }}

Review Comment:
   The logic for displaying alternate dark-mode logos is hardcoded for specific 
company names ("RancherBySUSE" and "Sift"). This approach is not scalable and 
violates the DRY principle. Consider using a data-driven approach where the 
markdown frontmatter includes a `logo_dark` field, allowing any testimonial to 
specify a dark mode logo variant without template changes. For example: 
`logo_dark: "rancher-suse-white.svg"`
   ```suggestion
                  {{ with .logo_dark }}
                      <img class="logo-dark-mode" src="/usecase-logos/{{ . }}" 
alt="{{ $title }} logo" />
                  {{ else }}
                      {{ if eq $title "RancherBySUSE" }}
                          <img class="logo-dark-mode" 
src="/usecase-logos/rancher-suse-white.svg" alt="{{ $title }} logo" />
                      {{ else if eq $title "Sift" }}
                          <img class="logo-dark-mode" 
src="/usecase-logos/sift-logo-white.svg" alt="{{ $title }} logo" />
                      {{ end }}
                  {{ end }}
   ```



##########
sphinx_airflow_theme/sphinx_airflow_theme/header.html:
##########
@@ -104,6 +70,40 @@
             </div>
 
         </div>
+        <div class="navbar__theme-toggle">
+            <button class="btn btn-link nav-link dropdown-toggle d-flex 
align-items-center"
+                    id="bd-theme"
+                    type="button"
+                    aria-expanded="false"
+                    data-bs-toggle="dropdown"
+                    data-bs-display="static"
+                    aria-label="Toggle theme (auto)">
+                <svg class="bi my-1 theme-icon-active"><use 
href="#circle-half"></use></svg>
+            </button>
+            <ul class="dropdown-menu dropdown-menu-end" 
aria-labelledby="bd-theme-text">
+                <li>
+                    <button type="button" class="dropdown-item d-flex 
align-items-center" data-bs-theme-value="light" aria-pressed="false">
+                        <svg class="bi me-2 theme-icon"><use 
href="#sun-fill"></use></svg>
+                        Light
+                        <svg class="bi ms-auto d-none"><use 
href="#check2"></use></svg>
+                    </button>
+                </li>
+                <li>
+                    <button type="button" class="dropdown-item d-flex 
align-items-center" data-bs-theme-value="dark" aria-pressed="false">
+                        <svg class="bi me-2 theme-icon"><use 
href="#moon-stars-fill"></use></svg>
+                        Dark
+                        <svg class="bi ms-auto d-none"><use 
href="#check2"></use></svg>
+                    </button>
+                </li>
+                <li>
+                    <button type="button" class="dropdown-item d-flex 
align-items-center active" data-bs-theme-value="auto" aria-pressed="true">
+                        <svg class="bi me-2 theme-icon"><use 
href="#circle-half"></use></svg>

Review Comment:
   The CSS class `theme-icon` is used on SVG elements but appears to be 
undefined. The original code used `opacity-50` which was replaced with 
`theme-icon`, but no corresponding CSS rule for `.theme-icon` exists in the 
provided SCSS files. This will cause the icons to not be styled correctly, 
potentially appearing at full opacity when they should be semi-transparent or 
have other specific styling applied.
   ```suggestion
                           <svg class="bi me-2 opacity-50"><use 
href="#sun-fill"></use></svg>
                           Light
                           <svg class="bi ms-auto d-none"><use 
href="#check2"></use></svg>
                       </button>
                   </li>
                   <li>
                       <button type="button" class="dropdown-item d-flex 
align-items-center" data-bs-theme-value="dark" aria-pressed="false">
                           <svg class="bi me-2 opacity-50"><use 
href="#moon-stars-fill"></use></svg>
                           Dark
                           <svg class="bi ms-auto d-none"><use 
href="#check2"></use></svg>
                       </button>
                   </li>
                   <li>
                       <button type="button" class="dropdown-item d-flex 
align-items-center active" data-bs-theme-value="auto" aria-pressed="true">
                           <svg class="bi me-2 opacity-50"><use 
href="#circle-half"></use></svg>
   ```



##########
landing-pages/site/assets/scss/_navbar.scss:
##########
@@ -99,16 +106,22 @@
       font-size: 0.8125rem;
       min-width: 7rem;
       padding: 0.25rem 0;
-      left: 0 !important;
-      right: auto !important;
+      left: auto !important;
+      right: 0 !important;
 

Review Comment:
   The dropdown menu positioning has been changed from `left: 0` to `right: 0`. 
While this may be intentional for improved alignment, verify this doesn't cause 
overflow issues on smaller screens or when the navbar is near the right edge of 
the viewport. The transform adjustment (`transform: translateY(-2px)`) also 
suggests positioning tweaks that should be tested across different screen sizes.
   ```suggestion
   
         @media (max-width: $tablet) {
           left: 0 !important;
           right: auto !important;
         }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to