Skip to content

Commit be68f99

Browse files
committed
chore(blog): feedback
1 parent dda8332 commit be68f99

7 files changed

Lines changed: 74 additions & 53 deletions

File tree

apps/blog/src/app/(blog)/layout.tsx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,38 +12,38 @@ export function baseOptions() {
1212
sub: [
1313
{
1414
text: "Postgres",
15-
url: "/postgres",
15+
url: "https://www.prisma.io/postgres",
1616
desc: "Managed Postgres for global workloads",
1717
icon: "fa-regular fa-chart-pyramid",
1818
},
1919
{
2020
text: "ORM",
21-
url: "/orm",
21+
url: "https://www.prisma.io/orm",
2222
desc: "Managed Postgres for global workloads",
2323
icon: "fa-regular fa-database",
2424
},
2525
{
2626
text: "Studio",
2727
icon: "fa-regular fa-table",
28-
url: "/studio",
28+
url: "https://www.prisma.io/studio",
2929
desc: "Explore and manipulate your data",
3030
},
3131
{
3232
icon: "fa-regular fa-bolt",
3333
text: "Accelerate",
3434
desc: "Make your database global",
35-
url: "/accelerate",
35+
url: "https://www.prisma.io/accelerate",
3636
},
3737
{
3838
icon: "fa-regular fa-plug",
3939
text: "Management API",
4040
desc: "Offer Postgres to your users",
41-
url: "/",
41+
url: "https://www.prisma.io/management-api",
4242
},
4343
],
4444
},
4545
{
46-
url: "/pricing",
46+
url: "https://www.prisma.io/pricing",
4747
text: "Pricing",
4848
},
4949
{
@@ -52,42 +52,42 @@ export function baseOptions() {
5252
sub: [
5353
{
5454
text: "MCP",
55-
url: "/mcp",
55+
url: "https://www.prisma.io/mcp",
5656
icon: "fa-regular fa-message-code",
5757
},
5858
{
5959
text: "Get started",
60-
url: "/docs",
60+
url: "https://www.prisma.io/docs",
6161
icon: "fa-regular fa-book-open",
6262
},
6363
{
6464
text: "Tutorials",
65-
url: "/learn",
65+
url: "https://www.prisma.io/learn",
6666
icon: "fa-regular fa-clapperboard-play",
6767
},
6868
{
6969
text: "Examples",
70-
url: "/",
70+
url: "https://www.prisma.io/examples",
7171
icon: "fa-regular fa-grid-2",
7272
},
7373
{
7474
text: "Stack",
75-
url: "/stack",
75+
url: "https://www.prisma.io/stack",
7676
icon: "fa-regular fa-layer-group",
7777
},
7878
{
7979
text: "Ecosystem",
80-
url: "/ecosystem",
80+
url: "https://www.prisma.io/ecosystem",
8181
icon: "fa-regular fa-globe",
8282
},
8383
{
8484
text: "Customer stories",
85-
url: "/",
85+
url: "https://www.prisma.io/showcase",
8686
icon: "fa-regular fa-users",
8787
},
8888
{
8989
text: "Data guide",
90-
url: "/dataguide",
90+
url: "https://www.prisma.io/dataguide",
9191
icon: "fa-regular fa-file-binary",
9292
},
9393
],
@@ -97,7 +97,7 @@ export function baseOptions() {
9797
text: "Partners",
9898
},
9999
{
100-
url: "/blog",
100+
url: "https://www.prisma.io/blog",
101101
text: "Blog",
102102
},
103103
],
@@ -106,7 +106,7 @@ export function baseOptions() {
106106

107107
export default function Layout({ children }: { children: React.ReactNode }) {
108108
return (
109-
<ThemeProvider defaultTheme="system" storageKey="blog-theme">
109+
<ThemeProvider defaultTheme="system" storageKey="theme">
110110
<WebNavigation links={baseOptions().links} />
111111
{children}
112112
<Footer />

apps/blog/src/app/global.css

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@
4141

4242
.newsletter-bg {
4343
background: linear-gradient(
44-
59deg,
45-
color-mix(in srgb, var(--color-foreground-ppg) 10%, transparent) 6.53%,
46-
color-mix(in srgb, var(--color-background-default) 10%, transparent) 74.71%
47-
);
44+
59deg,
45+
color-mix(in srgb, var(--color-foreground-ppg) 30%, transparent) 6.53%,
46+
var(--color-background-default) 74.71%
47+
)
4848
}
49+

apps/blog/src/components/BlogGrid.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ export function BlogGrid({
290290
}
291291

292292
window.scrollTo({ top: 0, behavior: "smooth" });
293-
}, [currentCat, currentPage, pathname, router, totalPages]);
293+
}, [currentCat, currentPage, pathname, router, searchParams, totalPages]);
294294

295295
const formatTag = (tag: string) => {
296296
return tag === "orm"

apps/blog/src/components/PostCard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ export function PostCard({
5959
isFeatured && "leading-[20px]!",
6060
);
6161
const authorClassName = cn(
62-
"items-center gap-2 font-semibold text-sm",
63-
isFeatured ? "mt-auto flex" : "hidden sm:flex",
62+
"items-center gap-2 font-semibold text-sm mt-4 md:mt-0",
63+
isFeatured ? "flex" : "hidden sm:flex",
6464
);
6565

6666
const postBody = (

packages/ui/src/components/newsletter.tsx

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,27 @@ export const FooterNewsletterForm = ({
4646
return buttonText;
4747
};
4848

49+
const statusMessage = error
50+
? { text: error, className: "text-red-500" }
51+
: isSubmitted
52+
? {
53+
text: "Please check your email to confirm your subscription!",
54+
className: "text-green-500",
55+
}
56+
: isAlreadySubscribed
57+
? {
58+
text: "You're already subscribed to our newsletter!",
59+
className: "text-blue-500",
60+
}
61+
: null;
62+
4963
return (
5064
<div className="w-full">
5165
<form
5266
onSubmit={handleSubmit}
5367
className="flex gap-6 sm:gap-2 items-center justify-between w-full flex-col sm:flex-row "
5468
>
55-
<h5 className="font-family-display font-[650] text-white text-base">
69+
<h5 className="font-family-display font-[650] text-neutral text-base">
5670
Subscribe to our newsletter
5771
</h5>
5872
<div>
@@ -84,21 +98,17 @@ export const FooterNewsletterForm = ({
8498
/>
8599
</Button>
86100
</div>
87-
{error && (
88-
<p className="text-red-500 text-sm mt-2 self-start sm:absolute">
89-
{error}
90-
</p>
91-
)}
92-
{isSubmitted && (
93-
<p className="text-green-500 text-sm mt-2 self-start sm:absolute">
94-
Please check your email to confirm your subscription!
95-
</p>
96-
)}
97-
{isAlreadySubscribed && (
98-
<p className="text-blue-500 text-sm mt-2 self-start sm:absolute">
99-
You're already subscribed to our newsletter!
100-
</p>
101-
)}
101+
<div className="mt-2 min-h-5">
102+
{statusMessage ? (
103+
<p
104+
className={cn("text-sm self-start", statusMessage.className)}
105+
role="status"
106+
aria-live="polite"
107+
>
108+
{statusMessage.text}
109+
</p>
110+
) : null}
111+
</div>
102112
</div>
103113
</form>
104114
</div>

packages/ui/src/components/theme-provider.tsx

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@ export function ThemeProvider({
4343
storageKey = "theme",
4444
attribute = "data-theme",
4545
}: ThemeProviderProps) {
46-
const [theme, setThemeState] = useState<Theme>(defaultTheme);
47-
const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>("light");
48-
4946
// Get system theme preference
5047
const getSystemTheme = (): ResolvedTheme => {
5148
if (typeof window === "undefined") return "light";
@@ -59,6 +56,26 @@ export function ThemeProvider({
5956
return themeValue === "system" ? getSystemTheme() : themeValue;
6057
};
6158

59+
const toTheme = (value: string | null): Theme | null => {
60+
if (value === "light" || value === "dark" || value === "system") {
61+
return value;
62+
}
63+
return null;
64+
};
65+
66+
const getInitialTheme = (): Theme => {
67+
if (typeof window === "undefined") return defaultTheme;
68+
69+
const stored = toTheme(localStorage.getItem(storageKey));
70+
// Requested behavior: prefer stored value, otherwise system preference.
71+
return stored ?? "system";
72+
};
73+
74+
const [theme, setThemeState] = useState<Theme>(() => getInitialTheme());
75+
const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() =>
76+
resolveTheme(getInitialTheme()),
77+
);
78+
6279
// Apply theme to document
6380
const applyTheme = (themeValue: ResolvedTheme) => {
6481
if (typeof window === "undefined") return;
@@ -86,18 +103,11 @@ export function ThemeProvider({
86103
}
87104
};
88105

89-
// Initialize theme from localStorage or default
106+
// Apply initial theme on mount.
90107
useEffect(() => {
91108
if (typeof window === "undefined") return;
92-
93-
const stored = localStorage.getItem(storageKey) as Theme | null;
94-
const initialTheme = stored || defaultTheme;
95-
const resolved = resolveTheme(initialTheme);
96-
97-
setThemeState(initialTheme);
98-
setResolvedTheme(resolved);
99-
applyTheme(resolved);
100-
}, []);
109+
applyTheme(resolvedTheme);
110+
}, [resolvedTheme]);
101111

102112
// Listen for system theme changes
103113
useEffect(() => {

packages/ui/src/components/web-navigation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export function WebNavigation({ links }: WebNavigationProps) {
5050
<NavigationWrapper mobileOpen={mobileView}>
5151
<NavigationMenuList>
5252
<NavigationMenuItem>
53-
<NavigationMenuLink className="shrink-0 w-full p-0">
53+
<NavigationMenuLink className="shrink-0 w-full p-0 hover:bg-transparent! focus:bg-transparent! data-active:bg-transparent! data-active:hover:bg-transparent! data-active:focus:bg-transparent! hover:cursor-pointer" href="https://www.prisma.io/">
5454
{Logo}
5555
</NavigationMenuLink>
5656
</NavigationMenuItem>

0 commit comments

Comments
 (0)