Skip to content

Commit cb41554

Browse files
authored
Merge pull request #1677 from hrx01-dev/fix/Darkmode-readabilityissue
Fixed dark mode readability issue
2 parents 503c385 + 5496389 commit cb41554

12 files changed

Lines changed: 264 additions & 289 deletions

File tree

blog/authors.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ sanjay-kv:
66
email: sanjay@recodehive.com
77
page: true # Turns the feature on
88
description: >
9-
Founder at @recodehive, previously a Software Engineer turned into a Data Engineer and Program Manager, Google ML Facilitator & Ex- GitHub CE.
9+
I'm a Software Engineer turned into a Data Engineer and Program Manager🚀, 🏆 Google ML Facilitator & Ex- GitHub CE who delivered 100+ talks on ML and open source and developer advocacy at various events and platforms.
1010
1111
socials:
1212
x: https://x.com/sanjay_kv_
@@ -19,7 +19,7 @@ sanjay-kv:
1919

2020
sowmiya-v:
2121
name: Sowmiya Venkatesan
22-
tile: Business Strategy & Operations Manager
22+
tile: Business Strategy & Operations Manager
2323
url: https://github.com/sowmiyeh
2424
image_url: https://avatars.githubusercontent.com/u/74345706?v=4
2525

@@ -33,6 +33,7 @@ Aditya-Singh-Rathore:
3333
description: >
3434
Aditya is a self-taught, Fabric-certified Data Engineer, GSSoC winner, author, and open-source enthusiast passionate about building scalable data solutions, contributing to the community, and sharing knowledge through blogs and public learning.
3535
36+
3637
socials:
3738
linkedin: aditya-singh-rathore0017
3839
github: Adez017

blog/google-icon-update/index.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import imgWorkspace from './assets/06-googleworkspace-new-logo.png';
4141

4242
<!-- truncate -->
4343

44-
44+
---
4545

4646
Last week I clicked Google Meet when I meant to click Google Calendar.
4747

@@ -82,11 +82,11 @@ To understand why this redesign matters, you have to go back to October 2020 whe
8282
At the time, the rebrand looked clean on paper. Google unified its entire app suite under one design language: every icon would use all four company colors, blue, red, yellow, and green, in the same flat style. The thinking was brand consistency. The result was visual chaos.
8383

8484

85+
<div className="img-zoom">
8586

86-
<BrowserWindow url="https://github.com/recodehive/recode-website/issues" bodyStyle={{padding: 0}}>
87-
[![Github](./assets/03-google-old-apps-logo.png)]()
88-
</BrowserWindow>
87+
[![Github](./assets/03-google-old-apps-logo.png)]()
8988

89+
</div>
9090

9191
Within hours of the 2020 announcement, the internet responded with a very specific complaint: all the icons now look the same. The new Gmail icon was the most mocked. The classic envelope with a red M that everyone recognized was replaced with a four-color M that looked like a child's art project. People struggled to tell Calendar from Drive, Drive from Docs, and Meet from everything else at a glance.
9292
<BrowserWindow url="https://github.com/recodehive/recode-website/issues" bodyStyle={{padding: 0}}>
@@ -95,10 +95,7 @@ Within hours of the 2020 announcement, the internet responded with a very specif
9595

9696
The complaint was not just aesthetic. It was functional. When apps share the same four colors and similar shapes, your brain cannot build distinct visual shortcuts for each one. You have to read the icon rather than recognize it. That adds cognitive friction dozens of times a day. Multiply that across 3 billion Google Workspace users and the accumulated frustration becomes significant.
9797

98-
99-
<BrowserWindow url="https://github.com/recodehive/recode-website/issues" bodyStyle={{padding: 0}}>
100-
[![Github](./assets/06-googleworkspace-new-logo.png)]()
101-
</BrowserWindow>
98+
<ZoomImage src={imgWorkspace} alt="Google new Workspace logo" />
10299

103100

104101
<span style={{color: 'red'}}> **Thought process behind Google**</span>? In 2020

docs/GitHub/intro-gitlab.md

Lines changed: 0 additions & 94 deletions
This file was deleted.

src/components/ReadingTimeIndicator/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default function ReadingTimeIndicator({
3434
authorCardReached = pageScrollPercent >= 90;
3535
}
3636

37-
const shouldBeVisible = pageScrollPercent >= 2 && !authorCardReached;
37+
const shouldBeVisible = pageScrollPercent >= 15 && !authorCardReached;
3838
setVisible(shouldBeVisible);
3939

4040
// Calculate remaining time proportional to how far through the content the

src/components/blogCarousel/blogCard.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,7 @@ const BlogCard = ({
134134
))}
135135
</div>
136136
</div>
137-
<span className="card-read-time">
138-
🕒 {Math.max(1, Math.ceil(content.split(" ").length / 200))} min read
139-
</span>
137+
<span className="card-read-time">5 min read</span>
140138
</div>
141139

142140
{/* Read More Button */}

src/components/testimonials/TestimonialCard.tsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from "react";
1+
import React, { useEffect, useState } from "react";
22
import { motion } from "framer-motion";
33
import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
44
import { useSafeColorMode } from "../../utils/useSafeColorMode";
@@ -54,9 +54,12 @@ const TestimonialCard: React.FC<TestimonialCardProps> = ({
5454
};
5555
};
5656

57+
const [mounted, setMounted] = useState(false);
58+
useEffect(() => setMounted(true), []);
59+
5760
return (
5861
<motion.div
59-
initial={{ opacity: 0, y: 20 }}
62+
initial={mounted ? { opacity: 0, y: 20 } : false}
6063
animate={{ opacity: 1, y: 0 }}
6164
exit={{ opacity: 0, y: -20 }}
6265
whileHover={{ y: -8 }}
@@ -95,18 +98,27 @@ const TestimonialCard: React.FC<TestimonialCardProps> = ({
9598
</Avatar>
9699

97100
<div className="flex-1">
98-
<h3 className="text-xl font-bold text-gray-900 mb-1 tracking-tight">
101+
<h3
102+
className="testimonial-author-name mb-1 text-xl font-bold leading-tight tracking-tight"
103+
style={{ color: "#111827", opacity: 1, WebkitTextFillColor: "#111827" }}
104+
>
99105
{name}
100106
</h3>
101107
{username !== "AryanGupta" && username !== "DonaldAnyamba" && (
102-
<p className="text-sm text-gray-700 font-medium mb-3">
108+
<p
109+
className="testimonial-author-role mb-3 text-sm font-medium"
110+
style={{ color: "#334155", opacity: 1, WebkitTextFillColor: "#334155" }}
111+
>
103112
{username === "VivienChen" ? "Founder @ Toastie (BC Y24)" :
104113
username === "DanielHan" ? "Founder @ Unsloth AI (YC W24, BC Y24)" :
105114
"AI Engineer @ Relevance AI"}
106115
</p>
107116
)}
108117

109-
<div className="flex items-center gap-3 text-xs text-gray-700">
118+
<div
119+
className="flex items-center gap-3 text-xs"
120+
style={{ color: "#334155", opacity: 1, WebkitTextFillColor: "#334155" }}
121+
>
110122
<span className="font-medium">{date}</span>
111123
</div>
112124
</div>

src/components/testimonials/TestimonialCarousel.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ export function TestimonialCarousel() {
7272
const [current, setCurrent] = useState(0);
7373
const [count, setCount] = useState(0);
7474
const { colorMode } = useSafeColorMode();
75+
const [mounted, setMounted] = useState(false);
76+
77+
useEffect(() => setMounted(true), []);
7578

7679
useEffect(() => {
7780
if (!api) {
@@ -106,7 +109,7 @@ export function TestimonialCarousel() {
106109

107110
<div className="relative mx-auto max-w-7xl px-4 z-10">
108111
<motion.div
109-
initial={{ opacity: 0, y: 30 }}
112+
initial={mounted ? { opacity: 0, y: 30 } : false}
110113
animate={{ opacity: 1, y: 0 }}
111114
transition={{ duration: 0.6 }}
112115
className="mb-16 text-center"
@@ -121,7 +124,7 @@ export function TestimonialCarousel() {
121124
</motion.div>
122125

123126
<motion.div
124-
initial={{ opacity: 0, y: 40 }}
127+
initial={mounted ? { opacity: 0, y: 40 } : false}
125128
animate={{ opacity: 1, y: 0 }}
126129
transition={{ duration: 0.6, delay: 0.2 }}
127130
>

src/css/custom.css

Lines changed: 80 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,82 @@
55
color: inherit;
66
}
77

8+
/* Careers testimonials */
9+
.testimonials-section .testimonial-carousel {
10+
background: #ffffff;
11+
border: 1px solid rgba(15, 23, 42, 0.06);
12+
color: #111827;
13+
}
14+
15+
/* Ensure testimonial cards are visible by default (override animation initial states) */
16+
.testimonials-section .testimonial-carousel {
17+
opacity: 1 !important;
18+
transform: none !important;
19+
}
20+
21+
.testimonials-section .testimonial-carousel--light {
22+
background: #ffffff;
23+
border: 1px solid rgba(15, 23, 42, 0.06);
24+
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
25+
}
26+
27+
.testimonials-section .testimonial-content {
28+
color: #0f172a;
29+
}
30+
31+
.testimonials-section .testimonial-content blockquote {
32+
color: #0f172a;
33+
}
34+
35+
.testimonials-section .testimonial-author {
36+
display: inline-flex;
37+
flex-direction: column;
38+
align-items: center;
39+
gap: 0.25rem;
40+
padding: 0.85rem 1.1rem;
41+
border-radius: 1rem;
42+
background: rgba(255, 255, 255, 0.98);
43+
border: 1px solid rgba(15, 23, 42, 0.08);
44+
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.16);
45+
opacity: 1;
46+
mix-blend-mode: normal;
47+
isolation: isolate;
48+
}
49+
50+
/* Strong override to ensure author text is always visible */
51+
.testimonials-section .testimonial-author {
52+
background: rgba(255, 255, 255, 0.98) !important;
53+
border: 1px solid rgba(15, 23, 42, 0.08) !important;
54+
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.16) !important;
55+
opacity: 1 !important;
56+
mix-blend-mode: normal !important;
57+
}
58+
59+
.testimonials-section .testimonial-author-name,
60+
.testimonials-section .testimonial-author-role {
61+
color: #111827 !important;
62+
-webkit-text-fill-color: #111827 !important;
63+
opacity: 1 !important;
64+
mix-blend-mode: normal !important;
65+
text-shadow: none !important;
66+
}
67+
68+
.testimonials-section .testimonial-author-name {
69+
color: #111827;
70+
-webkit-text-fill-color: #111827;
71+
text-shadow: none;
72+
opacity: 1;
73+
mix-blend-mode: normal;
74+
font-weight: 900;
75+
}
76+
77+
.testimonials-section .testimonial-author-role {
78+
color: #334155;
79+
-webkit-text-fill-color: #334155;
80+
opacity: 1;
81+
mix-blend-mode: normal;
82+
}
83+
884
/* You can override the default Infima variables here. */
985
@import "tailwindcss";
1086

@@ -2098,8 +2174,8 @@ html[data-theme="dark"] {
20982174
}
20992175

21002176
/* TOC inner wrapper — sticky; border-left here so the vertical line
2101-
only spans the height of the TOC content, not the full page */
2102-
.blog-wrapper .col.col--2 > div {
2177+
only spans the height of the TOC content, not the full page */
2178+
.blog-wrapper .col.col--2>div {
21032179
position: sticky !important;
21042180
top: calc(var(--ifm-navbar-height, 60px) + 1rem) !important;
21052181
max-height: calc(100vh - var(--ifm-navbar-height, 60px) - 2rem) !important;
@@ -2108,7 +2184,7 @@ html[data-theme="dark"] {
21082184
scrollbar-width: none !important;
21092185
}
21102186

2111-
.blog-wrapper .col.col--2 > div::-webkit-scrollbar {
2187+
.blog-wrapper .col.col--2>div::-webkit-scrollbar {
21122188
display: none !important;
21132189
}
21142190

@@ -2252,7 +2328,7 @@ html[data-theme="dark"] .blog-post-page .markdown h4 {
22522328
border-left: none !important;
22532329
}
22542330

2255-
.blog-wrapper .col.col--2 > div {
2331+
.blog-wrapper .col.col--2>div {
22562332
position: static !important;
22572333
max-height: none !important;
22582334
overflow-y: visible !important;

src/pages/blogs/index.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -335,15 +335,12 @@ const BlogCard = ({ blog }: { blog: (typeof blogs)[number] }) => {
335335
</div>
336336
</div>
337337

338-
{/* Read time + Read link */}
339-
<span className="card-read-time">
340-
🕒 {Math.max(1, Math.ceil((blog.description || "").split(" ").length / 200))} min read
341-
</span>
338+
{/* Read link */}
342339
<Link to={`/blog/${blog.slug}`} className="card-read-link">
343340
Read →
344341
</Link>
345342
</div>
346343
</div>
347344
</div>
348345
);
349-
};
346+
};

0 commit comments

Comments
 (0)