Skip to content

Commit e714c52

Browse files
committed
Improve emoji design
1 parent 086e827 commit e714c52

4 files changed

Lines changed: 142 additions & 64 deletions

File tree

web/components/home/home.tsx

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
import {AdjustmentsHorizontalIcon, EyeIcon, UsersIcon} from '@heroicons/react/24/outline'
12
import {discordLink, githubRepo} from 'common/constants'
23
import Link from 'next/link'
3-
import {useEffect, useRef} from 'react'
4+
import {ComponentType, ReactNode, SVGProps, useEffect, useRef} from 'react'
5+
import {FaDiscord, FaGithub} from 'react-icons/fa'
46
import {Col} from 'web/components/layout/col'
57
import {Row} from 'web/components/layout/row'
68
import {SignUpButton} from 'web/components/nav/sidebar'
@@ -9,8 +11,10 @@ import {useT} from 'web/lib/locale'
911

1012
// ─── Types ────────────────────────────────────────────────────────────────────
1113

14+
type IconType = ComponentType<SVGProps<SVGSVGElement>>
15+
1216
interface FeatureCardProps {
13-
icon: string
17+
icon: IconType
1418
title: string
1519
text: string
1620
}
@@ -31,18 +35,18 @@ function EyebrowBadge({children}: {children: React.ReactNode}) {
3135
)
3236
}
3337

34-
function FeatureCard({icon, title, text}: FeatureCardProps) {
38+
function FeatureCard({icon: Icon, title, text}: FeatureCardProps) {
3539
return (
3640
<div
3741
className="
3842
group relative overflow-hidden
3943
bg-canvas-50 border-[1.5px] border-canvas-200 rounded-2xl p-7
4044
transition-all duration-200
41-
hover:-translate-y-1 hover:shadow-[0_12px_32px_rgba(44,36,22,0.10)] hover:border-[#C17F3E]
45+
hover:-translate-y-1 hover:shadow-[0_12px_32px_rgba(44,36,22,0.10)] hover:border-primary-500
4246
"
4347
>
44-
<div className="w-11 h-11 rounded-xl bg-canvas-200 border border-canvas-300 flex items-center justify-center text-xl mb-5">
45-
{icon}
48+
<div className="w-11 h-11 rounded-xl bg-primary-100 border border-primary-200 flex items-center justify-center mb-5">
49+
<Icon className="w-5 h-5 text-primary-600" strokeWidth={1.8} />
4650
</div>
4751
<h3 className="font-bold text-ink-1000 mb-2.5">{title}</h3>
4852
<p className="text-sm text-primary-700 leading-relaxed">{text}</p>
@@ -99,7 +103,7 @@ function OpenSourceStrip({
99103
}: {
100104
title: string
101105
description: string
102-
badges: {label: string; url: string; primary?: boolean}[]
106+
badges: {label: string; url: string; primary?: boolean; icon?: ReactNode}[]
103107
}) {
104108
return (
105109
<div className="w-full max-w-3xl bg-canvas-950 dark:bg-canvas-300 rounded-2xl px-10 py-8 flex items-center justify-between gap-6 flex-wrap">
@@ -113,14 +117,15 @@ function OpenSourceStrip({
113117
href={b.url}
114118
key={b.label}
115119
className={`
116-
px-4 py-2 rounded-lg text-sm font-semibold border transition-all duration-150
120+
inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-semibold border transition-all duration-150
117121
${
118122
b.primary
119-
? 'bg-primary-500 text-white border-[#C17F3E] hover:bg-primary-600'
123+
? 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600'
120124
: 'bg-primary-500/30 text-white/75 border-primary-500/30 hover:bg-primary-500/50'
121125
}
122126
`}
123127
>
128+
{b.icon}
124129
{b.label}
125130
</Link>
126131
))}
@@ -191,23 +196,23 @@ export function LoggedOutHome() {
191196

192197
const features: FeatureCardProps[] = [
193198
{
194-
icon: '🔍',
199+
icon: EyeIcon,
195200
title: t('home.feature1.title', 'Radically Transparent'),
196201
text: t(
197202
'home.feature1.text',
198203
'No algorithms. Every profile fully searchable. You decide who to discover — not a black box.',
199204
),
200205
},
201206
{
202-
icon: '🎯',
207+
icon: AdjustmentsHorizontalIcon,
203208
title: t('home.feature2.title', 'Built for Depth'),
204209
text: t(
205210
'home.feature2.text',
206211
'Filter by values, interests, goals, and keywords — from "stoicism" to "sustainable living." Surface connections that truly matter.',
207212
),
208213
},
209214
{
210-
icon: '🌍',
215+
icon: UsersIcon,
211216
title: t('home.feature3.title', 'Community Owned'),
212217
text: t(
213218
'home.feature3.text',
@@ -217,8 +222,16 @@ export function LoggedOutHome() {
217222
]
218223

219224
const openSourceBadges = [
220-
{label: t('home.strip.github', '⭐ GitHub'), url: githubRepo},
221-
{label: t('home.strip.discord', '📖 Discord'), url: discordLink},
225+
{
226+
label: t('home.strip.github', 'GitHub'),
227+
url: githubRepo,
228+
icon: <FaGithub className="w-4 h-4" />,
229+
},
230+
{
231+
label: t('home.strip.discord', 'Discord'),
232+
url: discordLink,
233+
icon: <FaDiscord className="w-4 h-4" />,
234+
},
222235
{label: t('home.strip.join', 'Join Now →'), url: '/register', primary: true},
223236
]
224237

web/pages/about.tsx

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
1+
import {
2+
BellIcon,
3+
ChatBubbleLeftRightIcon,
4+
CodeBracketIcon,
5+
FlagIcon,
6+
GiftIcon,
7+
GlobeAltIcon,
8+
HeartIcon,
9+
LightBulbIcon,
10+
MagnifyingGlassIcon,
11+
MegaphoneIcon,
12+
ScaleIcon,
13+
SparklesIcon,
14+
} from '@heroicons/react/24/outline'
115
import clsx from 'clsx'
216
import {discordLink, formLink, githubRepo} from 'common/constants'
317
import {DEPLOYED_WEB_URL} from 'common/envs/constants'
418
import Link from 'next/link'
5-
import {ReactNode} from 'react'
19+
import {ComponentType, ReactNode, SVGProps} from 'react'
620
import {CopyLinkOrShareButton, ShareProfileOnXButton} from 'web/components/buttons/copy-link-button'
721
import {GeneralButton} from 'web/components/buttons/general-button'
822
import {Row} from 'web/components/layout/row'
@@ -12,14 +26,16 @@ import {useT} from 'web/lib/locale'
1226

1327
// ─── Types ────────────────────────────────────────────────────────────────────
1428

29+
type IconType = ComponentType<SVGProps<SVGSVGElement>>
30+
1531
interface FeatureCardProps {
16-
icon: string
32+
icon: IconType
1733
title: string
1834
text: ReactNode
1935
}
2036

2137
interface HelpCardProps {
22-
icon: string
38+
icon: IconType
2339
title: string
2440
text: ReactNode
2541
buttonLabel: string
@@ -30,7 +46,7 @@ interface HelpCardProps {
3046

3147
// ─── Feature Card ─────────────────────────────────────────────────────────────
3248

33-
function FeatureCard({icon, title, text}: FeatureCardProps) {
49+
function FeatureCard({icon: Icon, title, text}: FeatureCardProps) {
3450
return (
3551
<div
3652
className="
@@ -41,8 +57,8 @@ function FeatureCard({icon, title, text}: FeatureCardProps) {
4157
hover:border-primary-500
4258
"
4359
>
44-
<div className="w-11 h-11 rounded-xl bg-canvas-200 border border-canvas-300 flex items-center justify-center text-xl mb-5 flex-shrink-0">
45-
{icon}
60+
<div className="w-11 h-11 rounded-xl bg-primary-100 border border-primary-200 flex items-center justify-center mb-5 flex-shrink-0">
61+
<Icon className="w-5 h-5 text-primary-600" strokeWidth={1.8} />
4662
</div>
4763
<h3 className="font-bold text-ink-900 mb-2.5">{title}</h3>
4864
<p className="text-sm text-ink-500 leading-relaxed">{text}</p>
@@ -52,7 +68,7 @@ function FeatureCard({icon, title, text}: FeatureCardProps) {
5268

5369
// ─── Full-width Feature Card ──────────────────────────────────────────────────
5470

55-
function FeatureCardWide({icon, title, text}: FeatureCardProps) {
71+
function FeatureCardWide({icon: Icon, title, text}: FeatureCardProps) {
5672
return (
5773
<div
5874
className="
@@ -64,8 +80,8 @@ function FeatureCardWide({icon, title, text}: FeatureCardProps) {
6480
hover:border-primary-500
6581
"
6682
>
67-
<div className="w-11 h-11 rounded-xl bg-canvas-200 border border-canvas-300 flex items-center justify-center text-xl flex-shrink-0">
68-
{icon}
83+
<div className="w-11 h-11 rounded-xl bg-primary-100 border border-primary-200 flex items-center justify-center flex-shrink-0">
84+
<Icon className="w-5 h-5 text-primary-600" strokeWidth={1.8} />
6985
</div>
7086
<div className={'min-w-0'}>
7187
<h3 className="font-bold text-ink-900 mb-2">{title}</h3>
@@ -77,7 +93,15 @@ function FeatureCardWide({icon, title, text}: FeatureCardProps) {
7793

7894
// ─── Help Card ────────────────────────────────────────────────────────────────
7995

80-
function HelpCard({icon, title, text, buttonLabel, buttonUrl, buttonPrimary, id}: HelpCardProps) {
96+
function HelpCard({
97+
icon: Icon,
98+
title,
99+
text,
100+
buttonLabel,
101+
buttonUrl,
102+
buttonPrimary,
103+
id,
104+
}: HelpCardProps) {
81105
return (
82106
<div
83107
className="
@@ -92,8 +116,8 @@ function HelpCard({icon, title, text, buttonLabel, buttonUrl, buttonPrimary, id}
92116
// causing the absolute/flex-item to bleed past the corner radius.
93117
// Removed for cross-browser consistency.
94118
>
95-
<div className="w-10 h-10 rounded-xl bg-canvas-200 border border-canvas-300 flex items-center justify-center text-lg mb-4 flex-shrink-0">
96-
{icon}
119+
<div className="w-10 h-10 rounded-xl bg-primary-100 border border-primary-200 flex items-center justify-center mb-4 flex-shrink-0">
120+
<Icon className="w-[18px] h-[18px] text-primary-600" strokeWidth={1.8} />
97121
</div>
98122
<h3 id={id} className="font-bold text-ink-900 mb-2">
99123
{title}
@@ -134,7 +158,10 @@ function ShareStrip({title, text}: {title: string; text: string}) {
134158
return (
135159
<div className="bg-canvas-950 rounded-2xl px-9 py-8 flex items-center justify-between gap-6 flex-wrap">
136160
<div className={'max-w-[450px]'}>
137-
<h3 className="text-white text-lg font-bold mb-1.5">📣 {title}</h3>
161+
<h3 className="text-white text-lg font-bold mb-1.5 flex items-center gap-2.5">
162+
<MegaphoneIcon className="w-5 h-5 text-primary-500 flex-shrink-0" strokeWidth={1.8} />
163+
{title}
164+
</h3>
138165
<p className="text-primary-500 text-sm leading-relaxed">{text}</p>
139166
</div>
140167
<Row className="flex gap-2 flex-wrap">
@@ -178,33 +205,33 @@ export default function About() {
178205

179206
const features: (FeatureCardProps & {wide?: boolean})[] = [
180207
{
181-
icon: '🔍',
208+
icon: MagnifyingGlassIcon,
182209
title: t('about.block.keyword.title', 'Keyword Search the Database'),
183210
text: t(
184211
'about.block.keyword.text',
185212
'"Meditation", "Hiking", "Neuroscience", "Nietzsche". Access any profile and get niche.',
186213
),
187214
},
188215
{
189-
icon: '🔔',
216+
icon: BellIcon,
190217
title: t('about.block.notify.title', 'Get Notified About Searches'),
191218
text: t(
192219
'about.block.notify.text',
193220
"No need to constantly check the app! We'll contact you when new users fit your searches.",
194221
),
195222
},
196223
{
197-
icon: '🎭',
224+
icon: SparklesIcon,
198225
title: t('about.block.personality.title', 'Personality-Centered'),
199226
text: t('about.block.personality.text', 'Values and interests first, photos are secondary.'),
200227
},
201228
{
202-
icon: '🎁',
229+
icon: GiftIcon,
203230
title: t('about.block.free.title', 'Completely Free'),
204231
text: t('about.block.free.text', 'Subscription-free. Paywall-free. Ad-free.'),
205232
},
206233
{
207-
icon: '🗳️',
234+
icon: ScaleIcon,
208235
title: t('about.block.democratic.title', 'Democratic'),
209236
text: (
210237
<span>
@@ -224,15 +251,15 @@ export default function About() {
224251
),
225252
},
226253
{
227-
icon: '🎯',
254+
icon: FlagIcon,
228255
title: t('about.block.mission.title', 'One Mission'),
229256
text: t(
230257
'about.block.mission.text',
231258
'Our only mission is to create more genuine human connections, and every decision must serve that goal.',
232259
),
233260
},
234261
{
235-
icon: '🌍',
262+
icon: GlobeAltIcon,
236263
title: t('about.block.vision.title', 'Vision'),
237264
text: t(
238265
'about.block.vision.text',
@@ -244,7 +271,7 @@ export default function About() {
244271

245272
const helpCards: HelpCardProps[] = [
246273
{
247-
icon: '💡',
274+
icon: LightBulbIcon,
248275
id: 'give-suggestions-or-contribute',
249276
title: t('about.suggestions.title', 'Give Suggestions or Contribute'),
250277
text: t(
@@ -256,7 +283,7 @@ export default function About() {
256283
// buttonPrimary: true,
257284
},
258285
{
259-
icon: '💻',
286+
icon: CodeBracketIcon,
260287
id: 'share',
261288
title: t('about.dev.title', 'Develop the App'),
262289
text: t(
@@ -267,7 +294,7 @@ export default function About() {
267294
buttonUrl: githubRepo,
268295
},
269296
{
270-
icon: '💬',
297+
icon: ChatBubbleLeftRightIcon,
271298
id: 'join-chats',
272299
title: t('about.join.title', 'Join the Community'),
273300
text: t(
@@ -278,7 +305,7 @@ export default function About() {
278305
buttonUrl: discordLink,
279306
},
280307
{
281-
icon: '❤️',
308+
icon: HeartIcon,
282309
id: 'donate',
283310
title: t('about.donate.title', 'Donate'),
284311
text: t(

0 commit comments

Comments
 (0)