Copilot commented on code in PR #3934:
URL: https://github.com/apache/hertzbeat/pull/3934#discussion_r2650125981


##########
home/src/pages/components/Feature.js:
##########
@@ -1,11 +1,17 @@
 import React from 'react'
 import clsx from 'clsx'
+import styles from '../styles.module.css'
 
-export default function Feature({ title, description }) {
+export default function Feature({ title, description, index = 0 }) {
     return (
-        <div className={clsx('col col--4')}>
-            <h3 style={{textAlign: 'center', fontSize: 'x-large'}}>{title}</h3>
-            <p>{description}</p>
+        <div
+            className={clsx('featureCard', styles.featureCard)}

Review Comment:
   The animation delay is being set via inline styles, but the corresponding 
animation is defined in styles.module.css as `fadeInUp` with the class 
`animateFadeInUp`. However, this animation class is not being applied to the 
feature card. The inline `animationDelay` will have no effect without the 
animation being triggered. Either apply the `animateFadeInUp` class to the div, 
or remove the unused animation delay.
   ```suggestion
               className={clsx('featureCard', styles.featureCard, 
styles.animateFadeInUp)}
   ```



##########
home/src/css/custom.css:
##########
@@ -165,3 +193,77 @@ article thead {
     padding-left: 20px;
     padding-right: 20px;
 }
+
+body {
+    background-color: var(--md-surface);
+    color: var(--md-on-surface);
+}
+
+.button {
+    border-radius: 9999px !important;
+    transition: all var(--md-transition-medium) !important;
+    font-weight: 500;
+}
+
+.button--primary {
+    background-color: var(--ifm-color-primary) !important;
+    color: var(--md-on-primary) !important;
+    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
+}
+
+.button--primary:hover {
+    background-color: rgba(114, 40, 181, 0.9) !important;
+    box-shadow: 0 4px 12px rgba(114, 40, 181, 0.3) !important;
+    transform: translateY(-1px);
+}
+
+.button--primary:active {
+    transform: scale(0.95) translateY(0);
+    box-shadow: 0 2px 6px rgba(114, 40, 181, 0.2) !important;
+}

Review Comment:
   Hard-coded color values are used in button hover and active states instead 
of CSS variables. Using rgba(114, 40, 181, 0.9) and specific rgba values for 
box shadows makes the styles less maintainable and inconsistent with the 
Material Design variable system established elsewhere. Consider using CSS 
variable-based calculations or defining new variables for these hover/active 
states.



##########
home/src/pages/styles.module.css:
##########
@@ -5,37 +5,231 @@
  * and scoped locally.
  */
 
+.section {
+    padding: 4rem 0;
+    width: 100%;
+    background: var(--md-surface);
+}
+
+.sectionRow {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 2rem;
+}
+
 .heroBanner {
-    padding: 1rem 0 5rem;
+    padding: 3rem 0 5rem;
     text-align: center;
     position: relative;
-    overflow: hidden;
+    overflow: visible;
 }
 
 @media screen and (max-width: 966px) {
     .heroBanner {
-        padding: 2rem;
+        padding: 2rem 1rem 4rem;
     }
 }
 
-.buttons {
+.swiperContainer {
+    position: relative;
+    background: linear-gradient(180deg,
+        var(--md-surface) 0%,
+        var(--md-surface-container) 100%);
+    padding: 3rem 0;
+    overflow: hidden;
+}
+
+.swiperContainer::before {
+    content: '';
+    position: absolute;
+    width: 600px;
+    height: 600px;
+    background: var(--md-secondary-container);
+    border-radius: 50%;
+    filter: blur(100px);
+    opacity: 0.2;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    z-index: 0;
+    pointer-events: none;
+}
+
+.swiperContainer .swiper {
+    position: relative;
+    z-index: 1;
+    padding: 1rem 0;
+}
+
+.swiperContainer .swiper-slide {
     display: flex;
-    flex-wrap: wrap;
     align-items: center;
     justify-content: center;
-    margin: 30px 0 0;
+    padding: 1rem;
+}
+
+.swiperContainer .swiper-slide img {
+    width: 100%;
+    max-width: 1200px;
+    height: auto;
+    border-radius: 24px;
+    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
+    transition: all var(--md-transition-medium);
+}
+
+.swiperContainer .swiper-slide img:hover {
+    box-shadow: 0 8px 30px rgba(103, 80, 164, 0.15);
+    transform: scale(1.01);
+}
+
+@media (max-width: 1200px) {
+    .swiperContainer .swiper-slide img {
+        max-width: 100%;
+        border-radius: 16px;
+    }
+}
+
+@media (max-width: 768px) {
+    .swiperContainer {
+        padding: 2rem 0;
+    }
+}
+
+.featuresSection {
+    background: var(--md-surface);
+    padding: 5rem 0;
+    position: relative;
+}
+
+.featuresSection::before {
+    content: '';
+    position: absolute;
+    width: 400px;
+    height: 400px;
+    background: var(--md-tertiary-container);
+    border-radius: 50%;
+    filter: blur(90px);
+    opacity: 0.15;
+    top: 20%;
+    right: -100px;
+    pointer-events: none;
+}
+
+.featuresRow {
+    display: grid;
+    grid-template-columns: repeat(3, 1fr);
+    gap: 2rem;
+    position: relative;
+    z-index: 1;
 }
 
-.buttons > a {
-    margin: 0 5px;
+@media (max-width: 996px) {
+    .featuresRow {
+        grid-template-columns: repeat(2, 1fr);
+        gap: 1.5rem;
+    }
 }
 
 @media (max-width: 650px) {
-    .buttons > a {
-        margin: 10px 5px;
+    .featuresRow {
+        grid-template-columns: 1fr;
+        gap: 1rem;
+    }
+}
+
+@keyframes fadeInUp {
+    from {
+        opacity: 0;
+        transform: translateY(20px);
+    }
+    to {
+        opacity: 1;
+        transform: translateY(0);
+    }
+}
+
+.animateFadeInUp {
+    animation: fadeInUp 0.6s var(--md-easing) forwards;
+}
+
+.featureCard {
+    background: var(--md-surface-container);
+    border-radius: 24px;
+    padding: 2rem;
+    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
+    transition: all var(--md-transition-medium);
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    text-align: center;
+    height: 100%;
+    position: relative;
+    overflow: hidden;
+}
+
+.featureCard::before {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: 4px;
+    background: linear-gradient(90deg,
+        var(--md-primary) 0%,
+        var(--md-tertiary) 100%);
+    opacity: 0;
+    transition: opacity var(--md-transition-medium);
+}
+
+.featureCard:hover {
+    box-shadow: 0 8px 24px rgba(103, 80, 164, 0.15);
+    transform: translateY(-4px) scale(1.02);

Review Comment:
   Hard-coded rgba color values (103, 80, 164) are used instead of referencing 
CSS variables. This pattern repeats throughout the file (lines 81, 185) and 
makes the styles less maintainable and inconsistent with the established 
Material Design variable system.



##########
home/src/pages/styles.module.css:
##########
@@ -5,37 +5,231 @@
  * and scoped locally.
  */
 
+.section {
+    padding: 4rem 0;
+    width: 100%;
+    background: var(--md-surface);
+}
+
+.sectionRow {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 2rem;
+}
+
 .heroBanner {
-    padding: 1rem 0 5rem;
+    padding: 3rem 0 5rem;
     text-align: center;
     position: relative;
-    overflow: hidden;
+    overflow: visible;
 }
 
 @media screen and (max-width: 966px) {
     .heroBanner {
-        padding: 2rem;
+        padding: 2rem 1rem 4rem;
     }
 }
 
-.buttons {
+.swiperContainer {
+    position: relative;
+    background: linear-gradient(180deg,
+        var(--md-surface) 0%,
+        var(--md-surface-container) 100%);
+    padding: 3rem 0;
+    overflow: hidden;
+}
+
+.swiperContainer::before {
+    content: '';
+    position: absolute;
+    width: 600px;
+    height: 600px;
+    background: var(--md-secondary-container);
+    border-radius: 50%;
+    filter: blur(100px);
+    opacity: 0.2;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    z-index: 0;
+    pointer-events: none;
+}
+
+.swiperContainer .swiper {
+    position: relative;
+    z-index: 1;
+    padding: 1rem 0;
+}
+
+.swiperContainer .swiper-slide {
     display: flex;
-    flex-wrap: wrap;
     align-items: center;
     justify-content: center;
-    margin: 30px 0 0;
+    padding: 1rem;
+}
+
+.swiperContainer .swiper-slide img {
+    width: 100%;
+    max-width: 1200px;
+    height: auto;
+    border-radius: 24px;
+    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
+    transition: all var(--md-transition-medium);
+}
+
+.swiperContainer .swiper-slide img:hover {
+    box-shadow: 0 8px 30px rgba(103, 80, 164, 0.15);

Review Comment:
   Hard-coded rgba color values with specific color values (103, 80, 164) are 
used in multiple places for shadows and effects. These should reference the 
Material Design color system variables to maintain consistency and support 
theme switching. The value appears to approximate --md-primary but without 
using the actual variable.
   ```suggestion
       box-shadow: 0 8px 30px color-mix(in srgb, var(--md-primary) 15%, 
transparent);
   ```



##########
home/src/css/hero.css:
##########
@@ -1,34 +1,181 @@
 .hero--primary {
-    --ifm-hero-background-color: #fff;
-    --ifm-hero-text-color: #000;
+    --ifm-hero-background-color: var(--md-surface);
+    --ifm-hero-text-color: var(--md-on-surface);
+    position: relative;
+    overflow: visible;
+    min-height: 600px;
+    display: flex;
+    align-items: center;
 }
 
 html[data-theme=dark] .hero--primary {
-    --ifm-hero-background-color: #0c0c0c;
-    --ifm-hero-text-color: #fff;
+    --ifm-hero-background-color: #121212;
+    --ifm-hero-text-color: var(--md-surface);
+}
+
+.hero--primary::before,
+.hero--primary::after {
+    content: '';
+    position: absolute;
+    border-radius: 50%;
+    filter: blur(80px);
+    opacity: 0.25;
+    z-index: 0;
+    pointer-events: none;
+}
+
+.hero--primary::before {
+    width: 500px;
+    height: 500px;
+    background: var(--md-primary);
+    top: -100px;
+    right: -150px;
+    animation: float 8s ease-in-out infinite;
+}
+
+.hero--primary::after {
+    width: 400px;
+    height: 400px;
+    background: var(--md-secondary-container);
+    bottom: -50px;
+    left: -100px;
+    animation: float 10s ease-in-out infinite reverse;
+}
+
+@keyframes float {
+    0%, 100% {
+        transform: translate(0, 0);
+    }
+    50% {
+        transform: translate(20px, -20px);
+    }
+}
+
+.hero--primary .container {
+    position: relative;
+    z-index: 1;
 }
 
 .hero__title {
     background-size: 110%;
     color: transparent;
     width: 100%;
-    max-width: 600px;
+    max-width: 700px;
     margin: 0 auto;
-    height: 280px;
+    height: auto;
+    min-height: 200px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.hero__title img {
+    width: 100%;
+    max-width: 600px;
+    height: auto;
+    margin-top: 0;
+    filter: drop-shadow(0 4px 20px rgba(103, 80, 164, 0.15));
+    transition: transform var(--md-transition-medium);
+}
+
+.hero__title img:hover {
+    transform: scale(1.02);
 }
 
 .hero__subtitle {
-    font-size: 3em;
-    font-weight: bolder;
-    font-family: monospace;
-    color: #d97700;
+    font-size: 2.5rem;
+    font-weight: 700;
+    font-family: 'Roboto', sans-serif;
+    background: linear-gradient(135deg, var(--md-primary) 0%, #A228E5 100%);

Review Comment:
   Hard-coded color value #A228E5 is used in the gradient instead of the CSS 
variable --ifm-color-primary-lightest which has the same value. Using the 
variable would be more maintainable and consistent with the theme system.
   ```suggestion
       background: linear-gradient(135deg, var(--md-primary) 0%, 
var(--ifm-color-primary-lightest) 100%);
   ```



##########
home/src/pages/styles.module.css:
##########
@@ -5,37 +5,231 @@
  * and scoped locally.
  */
 
+.section {
+    padding: 4rem 0;
+    width: 100%;
+    background: var(--md-surface);
+}
+
+.sectionRow {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 2rem;
+}
+
 .heroBanner {
-    padding: 1rem 0 5rem;
+    padding: 3rem 0 5rem;
     text-align: center;
     position: relative;
-    overflow: hidden;
+    overflow: visible;
 }
 
 @media screen and (max-width: 966px) {
     .heroBanner {
-        padding: 2rem;
+        padding: 2rem 1rem 4rem;
     }
 }
 
-.buttons {
+.swiperContainer {
+    position: relative;
+    background: linear-gradient(180deg,
+        var(--md-surface) 0%,
+        var(--md-surface-container) 100%);
+    padding: 3rem 0;
+    overflow: hidden;
+}
+
+.swiperContainer::before {
+    content: '';
+    position: absolute;
+    width: 600px;
+    height: 600px;
+    background: var(--md-secondary-container);
+    border-radius: 50%;
+    filter: blur(100px);
+    opacity: 0.2;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    z-index: 0;
+    pointer-events: none;
+}
+
+.swiperContainer .swiper {
+    position: relative;
+    z-index: 1;
+    padding: 1rem 0;
+}
+
+.swiperContainer .swiper-slide {
     display: flex;
-    flex-wrap: wrap;
     align-items: center;
     justify-content: center;
-    margin: 30px 0 0;
+    padding: 1rem;
+}
+
+.swiperContainer .swiper-slide img {
+    width: 100%;
+    max-width: 1200px;
+    height: auto;
+    border-radius: 24px;
+    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
+    transition: all var(--md-transition-medium);
+}
+
+.swiperContainer .swiper-slide img:hover {
+    box-shadow: 0 8px 30px rgba(103, 80, 164, 0.15);
+    transform: scale(1.01);
+}
+
+@media (max-width: 1200px) {
+    .swiperContainer .swiper-slide img {
+        max-width: 100%;
+        border-radius: 16px;
+    }
+}
+
+@media (max-width: 768px) {
+    .swiperContainer {
+        padding: 2rem 0;
+    }
+}
+
+.featuresSection {
+    background: var(--md-surface);
+    padding: 5rem 0;
+    position: relative;
+}
+
+.featuresSection::before {
+    content: '';
+    position: absolute;
+    width: 400px;
+    height: 400px;
+    background: var(--md-tertiary-container);
+    border-radius: 50%;
+    filter: blur(90px);
+    opacity: 0.15;
+    top: 20%;
+    right: -100px;
+    pointer-events: none;
+}
+
+.featuresRow {
+    display: grid;
+    grid-template-columns: repeat(3, 1fr);
+    gap: 2rem;
+    position: relative;
+    z-index: 1;
 }
 
-.buttons > a {
-    margin: 0 5px;
+@media (max-width: 996px) {
+    .featuresRow {
+        grid-template-columns: repeat(2, 1fr);
+        gap: 1.5rem;
+    }
 }
 
 @media (max-width: 650px) {
-    .buttons > a {
-        margin: 10px 5px;
+    .featuresRow {
+        grid-template-columns: 1fr;
+        gap: 1rem;
+    }
+}
+
+@keyframes fadeInUp {
+    from {
+        opacity: 0;
+        transform: translateY(20px);
+    }
+    to {
+        opacity: 1;
+        transform: translateY(0);
+    }
+}
+
+.animateFadeInUp {
+    animation: fadeInUp 0.6s var(--md-easing) forwards;
+}
+

Review Comment:
   The class name 'animateFadeInUp' is defined but never used anywhere in the 
codebase. The fadeInUp animation appears intended for the feature cards based 
on the animationDelay being set in Feature.js, but the class is not applied. 
Either apply this class to elements that should animate or remove the unused 
CSS definition.
   ```suggestion
   
   ```



##########
home/src/css/hero.css:
##########
@@ -1,34 +1,181 @@
 .hero--primary {
-    --ifm-hero-background-color: #fff;
-    --ifm-hero-text-color: #000;
+    --ifm-hero-background-color: var(--md-surface);
+    --ifm-hero-text-color: var(--md-on-surface);
+    position: relative;
+    overflow: visible;
+    min-height: 600px;
+    display: flex;
+    align-items: center;
 }
 
 html[data-theme=dark] .hero--primary {
-    --ifm-hero-background-color: #0c0c0c;
-    --ifm-hero-text-color: #fff;
+    --ifm-hero-background-color: #121212;
+    --ifm-hero-text-color: var(--md-surface);
+}
+
+.hero--primary::before,
+.hero--primary::after {
+    content: '';
+    position: absolute;
+    border-radius: 50%;
+    filter: blur(80px);
+    opacity: 0.25;
+    z-index: 0;
+    pointer-events: none;
+}
+
+.hero--primary::before {
+    width: 500px;
+    height: 500px;
+    background: var(--md-primary);
+    top: -100px;
+    right: -150px;
+    animation: float 8s ease-in-out infinite;
+}
+
+.hero--primary::after {
+    width: 400px;
+    height: 400px;
+    background: var(--md-secondary-container);
+    bottom: -50px;
+    left: -100px;
+    animation: float 10s ease-in-out infinite reverse;
+}
+
+@keyframes float {
+    0%, 100% {
+        transform: translate(0, 0);
+    }
+    50% {
+        transform: translate(20px, -20px);
+    }
+}
+
+.hero--primary .container {
+    position: relative;
+    z-index: 1;
 }
 
 .hero__title {
     background-size: 110%;
     color: transparent;
     width: 100%;
-    max-width: 600px;
+    max-width: 700px;
     margin: 0 auto;
-    height: 280px;
+    height: auto;
+    min-height: 200px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.hero__title img {
+    width: 100%;
+    max-width: 600px;
+    height: auto;
+    margin-top: 0;
+    filter: drop-shadow(0 4px 20px rgba(103, 80, 164, 0.15));

Review Comment:
   Hard-coded rgba color value (103, 80, 164) is used instead of referencing 
CSS variables. This should use a Material Design variable to maintain 
consistency with the theme system and support proper color adaptation.



##########
home/src/css/hero.css:
##########
@@ -1,34 +1,181 @@
 .hero--primary {
-    --ifm-hero-background-color: #fff;
-    --ifm-hero-text-color: #000;
+    --ifm-hero-background-color: var(--md-surface);
+    --ifm-hero-text-color: var(--md-on-surface);
+    position: relative;
+    overflow: visible;
+    min-height: 600px;
+    display: flex;
+    align-items: center;
 }
 
 html[data-theme=dark] .hero--primary {
-    --ifm-hero-background-color: #0c0c0c;
-    --ifm-hero-text-color: #fff;
+    --ifm-hero-background-color: #121212;
+    --ifm-hero-text-color: var(--md-surface);

Review Comment:
   Using hard-coded #121212 for dark theme background instead of a Material 
Design variable. For consistency with the MD color system being implemented, 
consider defining --md-surface-dark or similar variable and using that here.



##########
home/src/css/hero.css:
##########
@@ -1,34 +1,181 @@
 .hero--primary {
-    --ifm-hero-background-color: #fff;
-    --ifm-hero-text-color: #000;
+    --ifm-hero-background-color: var(--md-surface);
+    --ifm-hero-text-color: var(--md-on-surface);
+    position: relative;
+    overflow: visible;
+    min-height: 600px;
+    display: flex;
+    align-items: center;
 }
 
 html[data-theme=dark] .hero--primary {
-    --ifm-hero-background-color: #0c0c0c;
-    --ifm-hero-text-color: #fff;
+    --ifm-hero-background-color: #121212;
+    --ifm-hero-text-color: var(--md-surface);
+}
+
+.hero--primary::before,
+.hero--primary::after {
+    content: '';
+    position: absolute;
+    border-radius: 50%;
+    filter: blur(80px);
+    opacity: 0.25;
+    z-index: 0;
+    pointer-events: none;
+}
+
+.hero--primary::before {
+    width: 500px;
+    height: 500px;
+    background: var(--md-primary);
+    top: -100px;
+    right: -150px;
+    animation: float 8s ease-in-out infinite;
+}
+
+.hero--primary::after {
+    width: 400px;
+    height: 400px;
+    background: var(--md-secondary-container);
+    bottom: -50px;
+    left: -100px;
+    animation: float 10s ease-in-out infinite reverse;
+}
+
+@keyframes float {
+    0%, 100% {
+        transform: translate(0, 0);
+    }
+    50% {
+        transform: translate(20px, -20px);
+    }
+}
+
+.hero--primary .container {
+    position: relative;
+    z-index: 1;
 }
 
 .hero__title {
     background-size: 110%;
     color: transparent;
     width: 100%;
-    max-width: 600px;
+    max-width: 700px;
     margin: 0 auto;
-    height: 280px;
+    height: auto;
+    min-height: 200px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.hero__title img {
+    width: 100%;
+    max-width: 600px;
+    height: auto;
+    margin-top: 0;
+    filter: drop-shadow(0 4px 20px rgba(103, 80, 164, 0.15));
+    transition: transform var(--md-transition-medium);
+}
+
+.hero__title img:hover {
+    transform: scale(1.02);
 }
 
 .hero__subtitle {
-    font-size: 3em;
-    font-weight: bolder;
-    font-family: monospace;
-    color: #d97700;
+    font-size: 2.5rem;
+    font-weight: 700;
+    font-family: 'Roboto', sans-serif;
+    background: linear-gradient(135deg, var(--md-primary) 0%, #A228E5 100%);
+    -webkit-background-clip: text;
+    -webkit-text-fill-color: transparent;
+    background-clip: text;

Review Comment:
   The subtitle uses transparent text fill with a gradient background 
(-webkit-text-fill-color: transparent). This technique can cause accessibility 
issues as the text becomes invisible when CSS fails to load, high contrast mode 
is enabled, or when users have custom stylesheets. Consider providing a 
fallback color or using a different approach that degrades gracefully.



##########
home/src/pages/components/Section.js:
##########
@@ -1,14 +1,15 @@
 import React from 'react'
+import clsx from 'clsx'
+import styles from '../styles.module.css'
 
-export default function Section({children }) {
+export default function Section({ children, className }) {
     return (
-        <section style={{padding: '4rem 0', width: '100%' }}>
+        <section className={clsx(styles.section, className)}>
             <div className="container">
-                <div className="row">
+                <div className={styles.sectionRow}>
                     {children}
                 </div>
             </div>
         </section>
     )
 }

Review Comment:
   The Section component is no longer being used in the index.js file but has 
been updated in this PR. The component import was removed but the component 
file was modified. This creates dead code that should either be utilized or 
removed to keep the codebase clean.



##########
home/src/css/custom.css:
##########
@@ -1,22 +1,50 @@
+@import 
url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap');
 @import url(navbar.css);
 @import url(hero.css);
 
 :root {
+    --md-primary: #6750A4;
+    --md-on-primary: #FFFFFF;
+    --md-primary-container: #EADDFF;
+    --md-on-primary-container: #21005D;
+    --md-secondary: #625B71;
+    --md-secondary-container: #E8DEF8;
+    --md-on-secondary-container: #1D192B;
+    --md-tertiary: #7D5260;
+    --md-tertiary-container: #FFD8E4;
+    --md-surface: #FFFBFE;
+    --md-surface-dim: #DDD8E1;
+    --md-surface-bright: #FFFBFE;
+    --md-surface-container-low: #F7F2FA;
+    --md-surface-container: #F3EDF7;
+    --md-surface-container-high: #ECE6F0;
+    --md-on-surface: #1C1B1F;
+    --md-on-surface-variant: #49454F;
+    --md-outline: #79747E;
+    --md-outline-variant: #CAC4D0;
+
     --ifm-color-primary: #7228B5;
     --ifm-color-primary-dark: #6228B5;
     --ifm-color-primary-darker: #5228B5;
     --ifm-color-primary-darkest: #5128B5;
-    --ifm-color-primary-light: #7228B5;
-    --ifm-color-primary-lighter: #8228B5;
-    --ifm-color-primary-lightest: #9228B5;
+    --ifm-color-primary-light: #8228C5;
+    --ifm-color-primary-lighter: #9228D5;
+    --ifm-color-primary-lightest: #A228E5;
     --ifm-navbar-link-hover-color: var(--ifm-color-primary);
     --ifm-code-font-size: 95%;
-    --ifm-font-family-base: Verdana, Arial, Helvetica, sans-serif;
-    --ifm-font-family-monospace: sans-serif;
-    --ifm-button-padding-horizontal: 0.55rem;
-    --ifm-button-padding-vertical: .7rem;
-    --ifm-navbar-height: 85px;
+
+    --ifm-font-family-base: 'Roboto', Verdana, Arial, Helvetica, sans-serif;
+    --ifm-font-family-monospace: 'Courier New', monospace;
+
+    --ifm-button-padding-horizontal: 1.5rem;
+    --ifm-button-padding-vertical: 0.75rem;
+    --ifm-button-border-radius: 9999px;
     --ifm-button-border-width: 0;
+    --ifm-navbar-height: 85px;
+
+    --md-easing: cubic-bezier(0.2, 0, 0, 1);
+    --md-transition-fast: 200ms var(--md-easing);
+    --md-transition-medium: 300ms var(--md-easing);
 }
 

Review Comment:
   The Material Design color variables are only defined for light mode in the 
:root selector, but there's no dark mode theme definition (e.g., 
html[data-theme='dark']). This means when users switch to dark mode, the site 
will still use light mode colors for all MD variables like --md-surface, 
--md-on-surface, etc. This will likely result in poor contrast and readability 
issues in dark mode. Add appropriate dark mode color definitions for all 
Material Design variables.
   ```suggestion
   
   html[data-theme='dark'] {
       --md-primary: #D0BCFF;
       --md-on-primary: #381E72;
       --md-primary-container: #4F378B;
       --md-on-primary-container: #EADDFF;
       --md-secondary: #CCC2DC;
       --md-secondary-container: #4A4458;
       --md-on-secondary-container: #E8DEF8;
       --md-tertiary: #EFB8C8;
       --md-tertiary-container: #633B48;
       --md-surface: #141218;
       --md-surface-dim: #141218;
       --md-surface-bright: #3B383E;
       --md-surface-container-low: #1D1B20;
       --md-surface-container: #211F26;
       --md-surface-container-high: #2B2930;
       --md-on-surface: #E6E1E5;
       --md-on-surface-variant: #CAC4D0;
       --md-outline: #938F99;
       --md-outline-variant: #49454F;
   }
   ```



-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to