Skip to content

Commit 4c5a9db

Browse files
committed
feat: enhance UX Patterns page and improve navigation styling
- Fix backdrop blur on header submenu with stronger blur effect (backdrop-blur-xl) - Add indentation to footer sub-pages to show visual hierarchy - Add comprehensive content to UI Kit section: - Atomic design structure (Atoms, Molecules, Organisms, Templates, Pages) - Color-coded cards with hover animations - Detailed descriptions for each level - Add detailed content to Micro-interactions section: - Living Icons, Emphasis On, Reward Delights patterns - Color-coded examples with descriptions - Interactive hover effects - Fix preview screen aspect ratio: - Change from 16:9 to 9:16 (vertical mobile frame) - Increase height to 400px for realistic mobile proportions - Improve visual styling with proper rounded corners - Add proper TypeScript interfaces for footer links - Remove unused imports to clean up code All sections now have rich, informative content with consistent styling and proper mobile preview frames that accurately represent vertical screens.
1 parent d9213c6 commit 4c5a9db

File tree

3 files changed

+118
-43
lines changed

3 files changed

+118
-43
lines changed

src/app/product/UX-patterns/page.tsx

Lines changed: 104 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { useState } from 'react';
44
import { motion, AnimatePresence } from 'framer-motion';
55
import { useLanguage } from '@/contexts/LanguageContext';
6-
import { MousePointer, Palette, Zap, Smartphone, ChevronDown, CheckCircle, XCircle, ArrowLeft } from 'lucide-react';
6+
import { MousePointer, Smartphone, ChevronDown, CheckCircle, XCircle, ArrowLeft } from 'lucide-react';
77
import { useRouter } from 'next/navigation';
88
import Header from '@/components/layout/Header';
99
import Footer from '@/components/layout/Footer';
@@ -273,12 +273,12 @@ const UXPatternsPage = () => {
273273
Live Preview
274274
</h5>
275275
<div className="relative">
276-
{/* Mobile Frame with 16:9 ratio */}
277-
<div className="w-full max-w-[280px] mx-auto bg-black rounded-[1.5rem] p-1 shadow-2xl">
278-
<div className="bg-muted/20 rounded-[1.25rem] h-[157px] flex items-center justify-center" style={{ aspectRatio: '16/9' }}>
279-
<div className="text-center space-y-2 px-4">
280-
<Smartphone className="w-6 h-6 text-muted-foreground mx-auto" />
281-
<p className="text-xs sm:text-sm text-muted-foreground break-words">
276+
{/* Mobile Frame with 9:16 ratio (vertical phone) */}
277+
<div className="w-full max-w-[200px] mx-auto bg-black rounded-[2rem] p-2 shadow-2xl">
278+
<div className="bg-muted/20 rounded-[1.5rem] h-[400px] flex items-center justify-center" style={{ aspectRatio: '9/16' }}>
279+
<div className="text-center space-y-3 px-4">
280+
<Smartphone className="w-8 h-8 text-muted-foreground mx-auto" />
281+
<p className="text-sm text-muted-foreground break-words font-medium">
282282
{pattern.title}
283283
</p>
284284
<p className="text-xs text-muted-foreground/70">
@@ -301,56 +301,123 @@ const UXPatternsPage = () => {
301301
</section>
302302
</div>
303303

304-
<div id="ui-kit" className="min-h-screen flex items-center justify-center scroll-mt-24">
304+
<div id="ui-kit" className="scroll-mt-24">
305305
<section className="py-20 px-4 sm:px-6 lg:px-8">
306-
<div className="max-w-7xl mx-auto text-center">
306+
<div className="max-w-7xl mx-auto">
307307
<motion.div
308308
initial={{ opacity: 0, y: 30 }}
309309
whileInView={{ opacity: 1, y: 0 }}
310310
transition={{ duration: 0.6 }}
311311
viewport={{ once: true }}
312-
className="mb-8"
312+
className="text-center mb-16"
313313
>
314-
<Palette className="w-16 h-16 text-white mx-auto mb-6" />
314+
<BlurReveal>
315+
<SectionTitle>
316+
<h2 className="text-4xl md:text-5xl font-bold text-white mb-6">
317+
UI Kit
318+
</h2>
319+
<p className="text-xl text-muted-foreground max-w-3xl mx-auto">
320+
From atoms to modules to views - our comprehensive design system components.
321+
</p>
322+
</SectionTitle>
323+
</BlurReveal>
315324
</motion.div>
316-
317-
<BlurReveal>
318-
<SectionTitle>
319-
<h2 className="text-4xl md:text-5xl font-bold text-white mb-6">
320-
UI Kit
321-
</h2>
322-
<p className="text-xl text-muted-foreground max-w-3xl mx-auto">
323-
From atoms to modules to views - our comprehensive design system components.
324-
</p>
325-
</SectionTitle>
326-
</BlurReveal>
325+
326+
{/* UI Kit Structure */}
327+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
328+
{[
329+
{ level: 'Atoms', description: 'Basic building blocks like buttons, inputs, and icons', color: 'from-blue-500/10 to-blue-600/5', borderColor: 'border-blue-500/20' },
330+
{ level: 'Molecules', description: 'Simple combinations of atoms like form fields and search bars', color: 'from-green-500/10 to-green-600/5', borderColor: 'border-green-500/20' },
331+
{ level: 'Organisms', description: 'Complex UI components like headers, sidebars, and cards', color: 'from-purple-500/10 to-purple-600/5', borderColor: 'border-purple-500/20' },
332+
{ level: 'Templates', description: 'Page-level layouts and wireframes without content', color: 'from-orange-500/10 to-orange-600/5', borderColor: 'border-orange-500/20' },
333+
{ level: 'Pages', description: 'Specific instances of templates with real content', color: 'from-pink-500/10 to-pink-600/5', borderColor: 'border-pink-500/20' },
334+
{ level: 'More to come', description: 'Additional components and patterns as we grow', color: 'from-gray-500/10 to-gray-600/5', borderColor: 'border-gray-500/20' }
335+
].map((item, index) => (
336+
<motion.div
337+
key={item.level}
338+
initial={{ opacity: 0, y: 20 }}
339+
whileInView={{ opacity: 1, y: 0 }}
340+
transition={{ duration: 0.6, delay: index * 0.1 }}
341+
viewport={{ once: true }}
342+
className={`bg-gradient-to-br ${item.color} border ${item.borderColor} rounded-xl p-6 hover:scale-105 transition-transform duration-300`}
343+
>
344+
<h3 className="text-lg font-semibold text-white mb-3">{item.level}</h3>
345+
<p className="text-muted-foreground text-sm leading-relaxed">{item.description}</p>
346+
</motion.div>
347+
))}
348+
</div>
327349
</div>
328350
</section>
329351
</div>
330352

331-
<div id="micro-interactions" className="min-h-screen flex items-center justify-center scroll-mt-24">
353+
<div id="micro-interactions" className="scroll-mt-24">
332354
<section className="py-20 px-4 sm:px-6 lg:px-8">
333-
<div className="max-w-7xl mx-auto text-center">
355+
<div className="max-w-7xl mx-auto">
334356
<motion.div
335357
initial={{ opacity: 0, y: 30 }}
336358
whileInView={{ opacity: 1, y: 0 }}
337359
transition={{ duration: 0.6 }}
338360
viewport={{ once: true }}
339-
className="mb-8"
361+
className="text-center mb-16"
340362
>
341-
<Zap className="w-16 h-16 text-white mx-auto mb-6" />
363+
<BlurReveal>
364+
<SectionTitle>
365+
<h2 className="text-4xl md:text-5xl font-bold text-white mb-6">
366+
Micro-interactions
367+
</h2>
368+
<p className="text-xl text-muted-foreground max-w-3xl mx-auto">
369+
Delightful details that bring our interfaces to life.
370+
</p>
371+
</SectionTitle>
372+
</BlurReveal>
342373
</motion.div>
343-
344-
<BlurReveal>
345-
<SectionTitle>
346-
<h2 className="text-4xl md:text-5xl font-bold text-white mb-6">
347-
Micro-interactions
348-
</h2>
349-
<p className="text-xl text-muted-foreground max-w-3xl mx-auto">
350-
Delightful details that bring our interfaces to life.
351-
</p>
352-
</SectionTitle>
353-
</BlurReveal>
374+
375+
{/* Micro-interactions Examples */}
376+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
377+
{[
378+
{
379+
title: 'Living Icons',
380+
description: 'Icons that respond to user actions with subtle animations and state changes',
381+
example: 'Button hover states, loading spinners, and interactive icons',
382+
color: 'from-cyan-500/10 to-cyan-600/5',
383+
borderColor: 'border-cyan-500/20'
384+
},
385+
{
386+
title: 'Emphasis On',
387+
description: 'Visual emphasis through scale, color, and motion to guide user attention',
388+
example: 'Focus states, selection highlights, and call-to-action animations',
389+
color: 'from-yellow-500/10 to-yellow-600/5',
390+
borderColor: 'border-yellow-500/20'
391+
},
392+
{
393+
title: 'Reward Delights',
394+
description: 'Celebratory animations that provide positive feedback for user actions',
395+
example: 'Success animations, achievement unlocks, and completion celebrations',
396+
color: 'from-emerald-500/10 to-emerald-600/5',
397+
borderColor: 'border-emerald-500/20'
398+
},
399+
{
400+
title: 'More to come',
401+
description: 'Additional micro-interaction patterns as we discover new ways to delight users',
402+
example: 'Gesture feedback, haptic responses, and contextual animations',
403+
color: 'from-gray-500/10 to-gray-600/5',
404+
borderColor: 'border-gray-500/20'
405+
}
406+
].map((item, index) => (
407+
<motion.div
408+
key={item.title}
409+
initial={{ opacity: 0, y: 20 }}
410+
whileInView={{ opacity: 1, y: 0 }}
411+
transition={{ duration: 0.6, delay: index * 0.1 }}
412+
viewport={{ once: true }}
413+
className={`bg-gradient-to-br ${item.color} border ${item.borderColor} rounded-xl p-6 hover:scale-105 transition-transform duration-300`}
414+
>
415+
<h3 className="text-lg font-semibold text-white mb-3">{item.title}</h3>
416+
<p className="text-muted-foreground text-sm leading-relaxed mb-3">{item.description}</p>
417+
<p className="text-muted-foreground/70 text-xs italic">{item.example}</p>
418+
</motion.div>
419+
))}
420+
</div>
354421
</div>
355422
</section>
356423
</div>

src/components/layout/Footer.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@ import Logo from './Logo';
99
const Footer = () => {
1010
const { t } = useLanguage();
1111

12-
const footerLinks = {
12+
interface FooterLink {
13+
name: string;
14+
href: string;
15+
isIndented?: boolean;
16+
}
17+
18+
const footerLinks: Record<string, FooterLink[]> = {
1319
'Foundations': [
1420
{ name: t('footer.foundations.mission'), href: '/design/#mission-vision' },
1521
{ name: t('footer.foundations.philosophy'), href: '/design/#philosophy' },
@@ -25,9 +31,9 @@ const Footer = () => {
2531
'Product': [
2632
{ name: t('footer.product.principles'), href: '/design/product#principles' },
2733
{ name: t('footer.product.guidelines'), href: '/design/product#guidelines' },
28-
{ name: 'UX Patterns', href: '/design/product/UX-patterns' },
29-
{ name: 'Visual Patterns', href: '/design/product/visual-patterns' },
30-
{ name: 'Workflow & Rituals', href: '/design/product/workflow-rituals' },
34+
{ name: 'UX Patterns', href: '/design/product/UX-patterns', isIndented: true },
35+
{ name: 'Visual Patterns', href: '/design/product/visual-patterns', isIndented: true },
36+
{ name: 'Workflow & Rituals', href: '/design/product/workflow-rituals', isIndented: true },
3137
{ name: t('footer.product.resources'), href: '/design/product#resources' },
3238
],
3339
'Connect': [
@@ -115,7 +121,9 @@ const Footer = () => {
115121
<motion.a
116122
href={link.href}
117123
whileHover={{ x: 4 }}
118-
className="text-muted-foreground hover:text-foreground transition-colors text-sm"
124+
className={`text-muted-foreground hover:text-foreground transition-colors text-sm ${
125+
link.isIndented ? 'ml-4' : ''
126+
}`}
119127
>
120128
{link.name}
121129
</motion.a>

src/components/layout/Header.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const Header = () => {
7979
animate={{ opacity: 1, y: 0 }}
8080
exit={{ opacity: 0, y: 10 }}
8181
transition={{ duration: 0.2 }}
82-
className="absolute top-full left-0 mt-2 w-64 bg-background/95 backdrop-blur-md border border-border/50 rounded-lg shadow-2xl z-[60]"
82+
className="absolute top-full left-0 mt-2 w-64 bg-background/98 backdrop-blur-xl border border-border/30 rounded-lg shadow-2xl z-[60]"
8383
>
8484
<div className="py-2">
8585
{item.submenuItems?.map((subItem, subIndex) => (

0 commit comments

Comments
 (0)