visortelle commented on code in PR #789:
URL: https://github.com/apache/pulsar-site/pull/789#discussion_r1488464371


##########
src/components/pages/FeaturesPage/FeaturesPage.module.css:
##########
@@ -0,0 +1,494 @@
+.FeaturesPage {
+    position: relative;
+    background-color: #fff;
+  }
+  
+  .Cards {
+    margin: 0 auto;
+    width: calc(100% - 1rem);
+    max-width: var(--max-content-width);
+    display: flex;
+    flex-direction: column;
+    gap: 1rem;
+    margin-bottom: 1rem;
+  }
+  
+  .Intro {
+    padding: 10rem 0;
+    line-height: 3rem;
+  }
+  
+  .IntroTextA,
+  .IntroTextB {
+    font-size: 2.5rem;
+    font-weight: 400;
+    margin: 0;
+    max-width: 35rem;
+  }
+
+  .IntroTextA{
+    color: var(--primary-0);
+  }
+  
+  .IntroTextC {
+    font-size: 1.5rem;
+    line-height: 1.85rem;
+    font-weight: 400;
+    margin: 1rem 0 0 0;
+    max-width: 42rem;
+  }
+  
+  /* Cards */
+  .SmallText {
+    font-size: 1.125rem;
+  }
+  
+  .RapidHorizontalScalabilityCard {
+    background: url(./images/rapid-horizontal-scalability.svg), 
var(--orange-4);
+    background-repeat: no-repeat;
+    background-size: 74%;
+    background-position: 1.5rem 1.5rem;
+  }
+  
+  .RapidHorizontalScalabilityCardMainContent {
+    padding-top: 74vw;
+    margin-bottom: 3.4rem;
+  }
+  @media(min-width: 1000px){
+    .RapidHorizontalScalabilityCardMainContent {
+      padding-top: 0;
+    }
+  }
+
+
+  .LowLatencyCard {
+    background: url(./images/low-latency.svg), var(--yellow-5);
+    background-repeat: no-repeat;
+    background-size: calc(100% - 1.5rem);
+    background-position: left 1.5rem top 70vh;
+  }
+
+  .LowLatencyCardMainContent {
+    margin-bottom: 10rem;
+  }
+
+  .LowLatencyCardUnderline{
+    text-decoration: underline;
+  }
+  
+  .LowLatencyCardColumns {
+    display: grid;
+    grid-template-columns: 1fr;
+    gap: 1rem;
+  }
+  
+  .LowLatencyCardSingleColumn {
+    width: calc(100% - 1rem);
+    margin-bottom: 1.5rem;
+  }
+
+  @media(min-width:700px){
+    .LowLatencyCard {
+      background: url(./images/low-latency.svg), var(--yellow-5);
+      background-repeat: no-repeat;
+      background-size: calc(100% - 1.5rem);
+      background-position: left 1.5rem top 25vh;
+    }
+  }
+
+  @media(min-width:1000px){
+    .LowLatencyCard {
+      background: url(./images/low-latency-desktop.svg), var(--yellow-5);
+      background-repeat: no-repeat;
+      background-size: 175px auto;
+      background-position: right 20% top 0;
+    }
+    .LowLatencyCardMainContent {
+      margin-bottom: 0;
+    }
+    .LowLatencyCardColumns {
+      grid-template-columns: 1fr 1fr 1fr;
+    }
+    
+    .LowLatencyCardSingleColumn {
+      width: calc(33.333333% - 1rem);
+    }
+  }
+  
+  .SupportManyTopicsCard {
+    background: url(./images/support-many-topics.svg), var(--teal-6);
+    background-repeat: no-repeat;
+    background-size: 90%;
+    background-position: center top 1.5rem;
+  }
+
+  .SupportManyTopicsCardMainContent{
+    padding-top: 70vw;
+  }
+
+  @media(min-width:1000px){
+    .SupportManyTopicsCard {
+      background-size: 42rem;
+      background-position: right 1.5rem top 1.5rem;
+    }
+  
+    .SupportManyTopicsCardMainContent{
+      padding-top: 10rem;
+    }
+  }
+  
+  .MultiTenancyCard {
+    background: url(./images/multi-tenancy.svg), var(--gray-6);
+    background-repeat: no-repeat;
+    background-size: 95%;
+    background-position: left 0 top 22rem;
+  }
+
+  .MultiTenancyCardFirstParagraph{
+    padding-bottom: 12rem;
+  }
+
+  @media(min-width:1000px){
+    .MultiTenancyCard {
+      background-position: left 0 top 1.5rem;
+    }
+    .MultiTenancyCardFirstParagraph{
+      padding-bottom: unset;
+    }
+    .MultiTenancyCardHeader {
+      margin-bottom: unset;
+      margin-top: 23rem;
+    }
+  }
+  
+  .LoadBalancingCard {
+    background: url(./images//load-balancing-mobile.svg), var(--gray-6);
+    background-repeat: no-repeat;
+    background-size: 85%;
+    background-position: center top 20rem;
+  }
+  
+  .LoadBalancingCardMainContent {
+    margin-bottom: 15rem;
+  }
+  
+  @media(min-width:1000px){
+    .LoadBalancingCard {
+      background: url(./images//load-balancing.svg), var(--gray-6);
+      background-repeat: no-repeat;
+      background-size: 45%;
+      background-position: right 1.5rem top 1.5rem;
+    }
+    .LoadBalancingCardMainContent {
+      margin-bottom: 5rem;
+    }
+  }
+
+  .K8sReadyCard {
+    background: url(./images/k8s.svg), var(--primary-4);
+    background-repeat: no-repeat;
+    background-size: 150%;
+    background-position: left -10% top 3rem;
+  }
+
+  @media(min-width:1000px){
+    .K8sReadyCard {
+      background-size: 45%;
+      background-position: right 1.5rem top 1.5rem;
+    }
+    .K8sReadyCardMore{
+      width: 50%;
+    }
+  }
+  
+  .GeoReplicationCard {
+    background: url(./images/georeplication.svg), var(--primary-5);
+    background-repeat: no-repeat;
+    background-size: 60%;
+    background-position: left 1.5rem top 26rem;
+  }
+
+  .GeoReplicationCardMain{
+    padding-bottom: 35vh;
+  }
+  
+  .GeoReplicationCardColumns {
+    margin-top: 6rem;
+  }
+
+  @media(min-width:1000px){
+    .GeoReplicationCard {
+      background-size: 20%;
+      background-position: right 1.5rem top 1.5rem;
+    }
+    .GeoReplicationCardMain{
+      padding-bottom: unset;
+    }
+    .GeoReplicationCardColumns > div {
+      width: 50%;
+    }
+  }
+  
+  .LanguagesCard {
+    background: url(./images/languages.svg), var(--gray-6);
+    background-repeat: no-repeat;
+    background-size: 85%;
+    background-position: center top 15rem;
+  }
+
+  .LanguagesCardMain{
+    padding-bottom: 15rem;
+  }
+
+  @media(min-width:1000px){
+    .LanguagesCard {
+      background-size: 45%;
+      background-position: right 1.5rem top 1.5rem;
+    }
+    .LanguagesCardMain{
+      padding-bottom: 15rem;
+    }
+    .LanguagesCardMore{
+      width: 50%;
+    }
+  }
+  
+  .TieredStorageCard {
+    background: var(--green-3);
+  }
+  
+  .SchemaRegistryCard {
+    background: var(--green-4);
+  }
+  
+  .AccessControlCard {
+    background: var(--green-5);
+  }
+  
+  .MessagePersistencyCard {
+    background: var(--green-6);
+  }
+  
+  .SeparateComputeFromStorageCard {
+    background: url(./images/spearate-compute-from-storage.svg), var(--gray-6);
+    background-repeat: no-repeat;
+    background-size: 85%;
+    background-position: center top 25rem;
+  }
+
+  .SeparateComputeFromStorageCardMain{
+    margin-bottom: 10rem;
+  }
+
+  @media(min-width:1000px){
+    .SeparateComputeFromStorageCard {
+      background-size: 35%;
+      background-position: right 1.5rem top 3rem;
+    }
+    .SeparateComputeFromStorageCardMain{
+      margin-bottom: unset;
+    }
+  }
+  
+  .AdditionalProtocolsCard {
+    background: var(--yellow-5);
+  }
+  
+  .ServerlessFunctionsCard {
+    background: url(./images/serverless-functions-mobile.svg), var(--green-4);
+    background-repeat: no-repeat;
+    background-size: 125%;
+    background-position: left 1.5rem top 1.5rem;
+  }
+  
+  .ServerlessFunctionsCardMainContent {
+    margin-top: 20rem;
+  }
+
+  @media(min-width:1000px){
+    .ServerlessFunctionsCard {
+      background: url(./images/serverless-functions.svg), var(--green-4);
+      background-repeat: no-repeat;
+      background-size: 40%;
+      background-position: left 1.5rem top 1.5rem;
+    }
+    .ServerlessFunctionsCardMainContent {
+      margin-bottom: 8rem;
+      margin-top: unset;
+    }
+  }
+  
+  .ConnectorsCard {
+    background: url(./images/connectors.svg), var(--green-5);
+    background-repeat: no-repeat;
+    background-size: 85%;
+    background-position: center top 1.5rem;
+  }
+  
+  .ConnectorsCardMainContent {
+    margin-top: 24rem;
+  }
+
+  @media(min-width:1000px){
+    .ConnectorsCard {
+      background-size: 20%;
+      background-position: right 1.5rem top 1.5rem;
+    }
+    
+    .ConnectorsCardMainContent {
+      margin-top: unset;
+      margin-bottom: 2.5rem;
+    }
+  }
+
+  .SupportLargeMsgsCard {
+    background: url(./images/support-large-msgs.svg), var(--yellow-5);
+    background-repeat: no-repeat;
+    background-size: 200%;
+    background-position: left 80% top 10rem;
+  }
+  
+  .SupportLargeMsgsCardMain {
+    margin-bottom: 5rem;
+  }
+
+  @media(min-width:1000px){
+    .SupportLargeMsgsCard {
+      background-size: 100%;
+      background-position: left top 1.5rem;
+    }
+    
+    .SupportLargeMsgsCardMain {
+      margin-bottom: 5rem;
+    }
+  }
+
+  .DelayedMsgCard {
+    background: url(./images/delayed-msg.svg), var(--yellow-5);
+    background-repeat: no-repeat;
+    background-size: 200%;
+    background-position: center top 18rem;
+  }
+  
+  .DelayedMsgCardMain {
+    margin-bottom: 7rem;
+  }
+
+  @media(min-width:1000px){
+    .DelayedMsgCard {
+      background-size: 100%;
+      background-position: left top 12rem;
+    }
+    
+    .DelayedMsgCardMain {
+      margin-bottom: 10rem;
+    }
+  }
+
+  .LargeConnectedCard {
+    background: var(--orange-4);
+  }
+  .Easy2OperateCard{
+    background: var(--orange-5);
+  }
+  .EasyCard{
+    background: var(--orange-6);
+  }
+  
+  .MoreFeats {
+    width: 100%;
+    background: var(--gray-6);
+    margin-top: 3rem;
+  }
+  .MoreFeats > div{
+    margin: 0 auto;
+    width: calc(100% - 1rem);
+    max-width: var(--max-content-width);
+    padding: 3rem 0;
+    display: flex;
+    flex-wrap: wrap;
+  }
+  .MoreFeats > div > div{
+    width: 100%;
+    font-size: 1.375rem;
+  }
+  .MoreFeats > div > div > div{

Review Comment:
   CSS selectors with a single nesting level are acceptable in most cases, 
although undesired.
   But 3-level nested selectors are too easy to accidentally break while making 
any further changes on the page.
   
   Can we use specific classes for these elements?



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