Skip to content

Commit e45ae4f

Browse files
committed
ui index
1 parent 7df98c3 commit e45ae4f

File tree

4 files changed

+67
-60
lines changed

4 files changed

+67
-60
lines changed
43.5 KB
Loading

apps/web/src/components/Homepage/browser-wrapper.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { motion } from "framer-motion";
22

33
export function BrowserWrapper({ children }: { children: React.ReactNode }) {
44
return (
5-
<div className="h-full rounded-2xl border border-slate-300 bg-gradient-to-b from-slate-100 to-slate-200 p-2">
6-
<div className="flex items-center gap-2 px-2 pb-1">
5+
<div className="h-full rounded-xl border border-slate-300 bg-gradient-to-b from-slate-100 to-slate-200 p-2">
6+
<div className="flex items-center gap-2 px-2 pb-1.5">
77
{new Array(3).fill(0).map((v, idx) => (
88
<span
99
key={`dot-${idx}`}
@@ -15,7 +15,7 @@ export function BrowserWrapper({ children }: { children: React.ReactNode }) {
1515
initial={{ opacity: 0 }}
1616
animate={{ opacity: 1 }}
1717
transition={{ duration: 0.4, ease: "easeInOut" }}
18-
className="h-full overflow-hidden rounded-xl border border-slate-300 md:min-h-[600px]"
18+
className="h-full overflow-hidden rounded-lg border border-slate-300 md:min-h-[600px]"
1919
>
2020
{children}
2121
</motion.div>

apps/web/src/components/Homepage/hero-images.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export const HeroImages = () => {
6464
value={f.id}
6565
onClick={() => setCurrentIndex(index)}
6666
className={cn(
67-
"relative flex min-w-fit cursor-pointer items-center overflow-hidden rounded-full border px-4 py-2 font-semibold opacity-70 data-[state=active]:border-b data-[state=active]:border-slate-300 data-[state=active]:bg-slate-100 data-[state=active]:text-slate-800 data-[state=active]:opacity-100 md:text-lg"
67+
"relative flex min-w-fit cursor-pointer items-center overflow-hidden rounded-full border px-4 py-2 font-semibold opacity-70 data-[state=active]:border-b data-[state=active]:border-slate-300 data-[state=active]:bg-slate-100 data-[state=active]:text-slate-800 data-[state=active]:opacity-100"
6868
)}
6969
>
7070
<span className="opacity-70">{f.icon}</span>
@@ -73,7 +73,11 @@ export const HeroImages = () => {
7373
))}
7474
</TabsList>
7575
{FEATURES.map((f) => (
76-
<TabsContent key={`${f.id}-content`} value={f.id}>
76+
<TabsContent
77+
key={`${f.id}-content`}
78+
value={f.id}
79+
className="mx-auto max-w-6xl rounded-2xl border border-orange-400 bg-gradient-to-b from-orange-300 to-orange-500 px-20 pb-4 pt-20"
80+
>
7781
{f.content}
7882
</TabsContent>
7983
))}

apps/web/src/pages/index.tsx

Lines changed: 58 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
FaCopy,
88
FaHandPeace,
99
FaImage,
10+
FaLock,
1011
FaNetworkWired,
1112
FaPencilAlt,
1213
FaPencilRuler,
@@ -51,8 +52,8 @@ const FEATURES = [
5152
},
5253
{
5354
Icon: (props: any) => <FaCode {...props} />,
54-
title: "Developer‑First",
55-
description: "Type‑safe SDK, REST API, framework-friendly",
55+
title: "Developer first",
56+
description: "Type‑safe SDK, REST API, framework-friendly.",
5657
},
5758
{
5859
Icon: (props: any) => <FaImage {...props} />,
@@ -62,7 +63,7 @@ const FEATURES = [
6263
},
6364
{
6465
Icon: (props: any) => <FaPencilAlt {...props} />,
65-
title: "Writer‑Friendly",
66+
title: "Writer friendly",
6667
description:
6768
"Inspired by tools like Notion, we made an editor that is both powerful and simple to use.",
6869
},
@@ -73,10 +74,10 @@ const FEATURES = [
7374
"You can manage tags, categories, authors, multiple blogs, images and videos without configuring anything!",
7475
},
7576
{
76-
Icon: (props: any) => <FaSmile {...props} />,
77-
title: "It's not Wordpress",
77+
Icon: (props: any) => <FaLock {...props} />,
78+
title: "Privacy friendly",
7879
description:
79-
"Forget about wordpress headaches. Just focus on writing great content.",
80+
"You decide the limit. You have full control over your data. We just give you your content.",
8081
},
8182
];
8283

@@ -134,9 +135,10 @@ const Home = () => {
134135
<main className="mt-12 px-6 pb-24">
135136
<div className="mx-auto mt-8 max-w-5xl px-6 text-center">
136137
<h1
137-
className={`mt-4 text-balance text-4xl font-semibold tracking-tight text-slate-800 md:text-6xl`}
138+
className={`mt-4 text-balance text-4xl font-semibold tracking-tight text-slate-800`}
138139
>
139-
Launch your blog in minutes
140+
<span className="text-slate-400">Think, write, publish.</span>
141+
<br />A simple blogging CMS.
140142
</h1>
141143

142144
<div className="mt-4 text-slate-500">
@@ -147,7 +149,7 @@ const Home = () => {
147149
<Link className="mt-6 inline-flex" href="/sign-up">
148150
<Button
149151
size="default"
150-
className="h-12 rounded-xl text-lg font-medium"
152+
className="rounded-full bg-gradient-to-b from-slate-800 to-slate-900 font-medium"
151153
>
152154
Start blogging for free <ArrowRight className="ml-0.5" />
153155
</Button>
@@ -170,15 +172,30 @@ const Home = () => {
170172
<HeroImages />
171173
</div>
172174

173-
<div className="mx-auto mt-12 flex max-w-6xl flex-wrap justify-center gap-6">
175+
<div className="mx-auto mt-24 max-w-2xl justify-center gap-6 p-6 text-center">
176+
<h2 className="text-2xl font-medium">
177+
<span className="rounded-lg bg-gray-100 px-1 font-mono font-semibold tracking-tight text-orange-500">
178+
Developers
179+
</span>{" "}
180+
love it
181+
</h2>
182+
<p className="mb-6 text-slate-500">
183+
What people say about zenblog.
184+
</p>
185+
174186
{tweets.map((tweet) => (
175187
<TweetItem key={tweet.username} {...tweet} />
176188
))}
177189
</div>
178190

179191
<div className="mx-auto mt-24 max-w-4xl pt-24">
180-
<h2 className="text-center text-2xl font-medium">Why Zenblog?</h2>
181-
<div className="mx-auto mt-8 divide-y rounded-xl border bg-slate-100/40">
192+
<h2 className="text-center text-2xl font-medium">
193+
Why should you use Zenblog?
194+
</h2>
195+
<p className="mx-auto mt-2 max-w-xl text-center text-slate-500">
196+
Every feature developers love.
197+
</p>
198+
<div className="mx-auto mt-8 grid grid-cols-1 rounded-xl border bg-slate-50 md:grid-cols-2">
182199
{FEATURES.map((feature) => (
183200
<div
184201
key={feature.title}
@@ -187,8 +204,8 @@ const Home = () => {
187204
<div className="">
188205
<feature.Icon className="size-6 text-slate-400/70 transition-all group-hover:scale-105 group-hover:text-orange-500" />
189206
</div>
190-
<h3 className="text-xl font-medium">{feature.title}</h3>
191-
<p className="text-xl text-slate-500">
207+
<h3 className="mt-1 font-semibold">{feature.title}</h3>
208+
<p className="max-w-sm text-balance text-slate-600">
192209
{feature.description}
193210
</p>
194211
</div>
@@ -321,30 +338,29 @@ const Home = () => {
321338
const tweets = [
322339
{
323340
content:
324-
"By the way, the CMS is @zenbloghq. A brilliant CMS that simply works. Integrating it with the website didn't take 5 minutes.",
325-
name: "Narix Hine",
326-
username: "leximory",
327-
image: "/static/tweets/leximory.jpg",
341+
"I started using @zenbloghq yesterday. I literally got it running on my Astro site in 10 minutes. Really great product",
342+
name: "Alvaro",
343+
username: "metasurfero",
344+
image: "/static/tweets/metasurfero.jpg",
328345
},
329346
{
330-
content:
331-
"Just tried @zenbloghq last night and i started a blog and connected to my website with some help from cursor.The site is coming together, time for a real domain I think https://jesselawrence.replit.app/blog",
332-
name: "Jesse",
333-
username: "lawrencejessej",
334-
image: "/static/tweets/lawrencejessej.jpg",
347+
content: "I'm using @zenbloghq and you probably should too",
348+
name: "Duncan Lutz",
349+
username: "duncanthedev",
350+
image: "/static/tweets/duncanthedev.jpg",
335351
},
336352
{
337353
content:
338-
"I started using @zenbloghq yesterday. I literally got it running on my Astro site in 10 minutes. Really great product",
339-
name: "Alvaro",
340-
username: "metasurfero",
341-
image: "/static/tweets/metasurfero.jpg",
354+
"By the way, the CMS is @zenbloghq. A brilliant CMS that simply works. Integrating it with the website didn't take 5 minutes.",
355+
name: "Narix Hine",
356+
username: "leximory",
357+
image: "/static/tweets/leximory.jpg",
342358
},
343359
{
344-
content: "i use zenblog to manage the blog in zenblog",
345-
name: "jordi",
346-
username: "jordienr",
347-
image: "/static/tweets/jordienr.jpg",
360+
content: "@zenbloghq is the best",
361+
name: "dmytro",
362+
username: "pqoqubbw",
363+
image: "/static/tweets/pqoqubbw.jpg",
348364
},
349365
{
350366
content: "zenblog gud",
@@ -359,46 +375,33 @@ const TweetItem = ({
359375
name,
360376
username,
361377
image,
362-
isThread = false,
363-
isLast = false,
364378
}: {
365379
content: string;
366380
name: string;
367381
username: string;
368382
image: string;
369-
isThread?: boolean;
370-
isLast?: boolean;
371383
}) => {
372384
return (
373385
<div
374386
className={cn(
375-
"relative flex w-80 flex-col gap-2 rounded-xl border bg-slate-100/50 p-4"
387+
"relative mb-4 flex gap-4 rounded-lg border bg-slate-50 p-4 text-left"
376388
)}
377389
>
378-
<div className="flex items-center gap-2">
379-
{isThread && !isLast ? (
380-
<div className="absolute left-[36px] top-[70px] h-full w-px bg-slate-200"></div>
381-
) : null}
390+
<div className="flex-shrink-0">
382391
<Image
383392
src={image}
384393
alt={name}
385-
width={60}
386-
height={60}
387-
className="z-10 rounded-full border border-slate-100"
394+
width={48}
395+
height={48}
396+
className="rounded-full"
388397
/>
389-
<div className={cn("flex flex-col")}>
390-
<p className="text-lg font-medium">{name}</p>
391-
<p className="text-lg font-medium text-slate-500">{username}</p>
392-
</div>
393398
</div>
394-
<div className="flex flex-col">
395-
<p
396-
className={cn("text-lg", {
397-
"ml-12": isThread,
398-
})}
399-
>
400-
{content}
401-
</p>
399+
<div className={cn("")}>
400+
<div className="flex items-center gap-2">
401+
<p className="font-semibold">{name}</p>
402+
<p className=" text-slate-500">@{username}</p>
403+
</div>
404+
<p className={cn("text-balance text-slate-800")}>{content}</p>
402405
</div>
403406
</div>
404407
);

0 commit comments

Comments
 (0)