Skip to content

Commit 64bfa3a

Browse files
committed
feat: add specific interaction patterns and UI structure
- Update Interaction Patterns with specific patterns: - OnLoad (skeleton UI, loading states) - OnScroll (default page vertical scroll as primary interaction) - Notify (Toast, banner, etc.) - Alert (Toast) - Pause & Ask (popup) - Magnify (bottomsheet) - Screen to Screen (navigation patterns) - Feedback (touch, swipe, etc.) - (more to come) - Update UI Kit structure to reflect atomic design: - Atoms (buttons, inputs, icons) - Modules (cards, forms, navigation) - Views (pages, layouts, screens) - Update Micro-interaction Patterns with specific patterns: - Living icons - EmphasisOn - Reward delights - More to come - Add comprehensive translation keys for all new patterns - Include Korean translations for complete i18n support - Fix TypeScript issues with proper interface definitions - Update component rendering to handle different data structures - Maintain responsive design and visual hierarchy
1 parent 2f4a7e1 commit 64bfa3a

File tree

2 files changed

+67
-44
lines changed

2 files changed

+67
-44
lines changed

src/components/product/ProductGuidelines.tsx

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,18 @@
22

33
import { motion } from 'framer-motion';
44
import { useLanguage } from '@/contexts/LanguageContext';
5-
import { MousePointer, Palette, Zap, Eye, Workflow } from 'lucide-react';
5+
import { MousePointer, Palette, Zap, Eye, Workflow, LucideIcon } from 'lucide-react';
6+
7+
interface Subsection {
8+
id: string;
9+
icon: LucideIcon;
10+
title: string;
11+
subtitle: string;
12+
description: string;
13+
patterns?: string[];
14+
structure?: string[];
15+
principles?: string[];
16+
}
617

718
const ProductGuidelines = () => {
819
const { t } = useLanguage();
@@ -19,11 +30,16 @@ const ProductGuidelines = () => {
1930
title: t('product.guidelines.interactionPatterns.title'),
2031
subtitle: t('product.guidelines.interactionPatterns.subtitle'),
2132
description: t('product.guidelines.interactionPatterns.description'),
22-
principles: [
23-
t('product.guidelines.interactionPatterns.principle1'),
24-
t('product.guidelines.interactionPatterns.principle2'),
25-
t('product.guidelines.interactionPatterns.principle3'),
26-
t('product.guidelines.interactionPatterns.principle4')
33+
patterns: [
34+
t('product.guidelines.interactionPatterns.onLoad'),
35+
t('product.guidelines.interactionPatterns.onScroll'),
36+
t('product.guidelines.interactionPatterns.notify'),
37+
t('product.guidelines.interactionPatterns.alert'),
38+
t('product.guidelines.interactionPatterns.pauseAsk'),
39+
t('product.guidelines.interactionPatterns.magnify'),
40+
t('product.guidelines.interactionPatterns.screenToScreen'),
41+
t('product.guidelines.interactionPatterns.feedback'),
42+
t('product.guidelines.interactionPatterns.moreToCome')
2743
]
2844
},
2945
{
@@ -32,11 +48,10 @@ const ProductGuidelines = () => {
3248
title: t('product.guidelines.uiKit.title'),
3349
subtitle: t('product.guidelines.uiKit.subtitle'),
3450
description: t('product.guidelines.uiKit.description'),
35-
principles: [
36-
t('product.guidelines.uiKit.principle1'),
37-
t('product.guidelines.uiKit.principle2'),
38-
t('product.guidelines.uiKit.principle3'),
39-
t('product.guidelines.uiKit.principle4')
51+
structure: [
52+
t('product.guidelines.uiKit.atoms'),
53+
t('product.guidelines.uiKit.modules'),
54+
t('product.guidelines.uiKit.views')
4055
]
4156
},
4257
{
@@ -45,11 +60,11 @@ const ProductGuidelines = () => {
4560
title: t('product.guidelines.microInteractionPatterns.title'),
4661
subtitle: t('product.guidelines.microInteractionPatterns.subtitle'),
4762
description: t('product.guidelines.microInteractionPatterns.description'),
48-
principles: [
49-
t('product.guidelines.microInteractionPatterns.principle1'),
50-
t('product.guidelines.microInteractionPatterns.principle2'),
51-
t('product.guidelines.microInteractionPatterns.principle3'),
52-
t('product.guidelines.microInteractionPatterns.principle4')
63+
patterns: [
64+
t('product.guidelines.microInteractionPatterns.livingIcons'),
65+
t('product.guidelines.microInteractionPatterns.emphasisOn'),
66+
t('product.guidelines.microInteractionPatterns.rewardDelights'),
67+
t('product.guidelines.microInteractionPatterns.moreToCome')
5368
]
5469
}
5570
]
@@ -138,7 +153,7 @@ const ProductGuidelines = () => {
138153
{section.subsections ? (
139154
// UX Patterns with subsections
140155
<div className="space-y-8">
141-
{section.subsections.map((subsection, subsectionIndex) => (
156+
{section.subsections.map((subsection: Subsection, subsectionIndex) => (
142157
<motion.div
143158
key={subsection.id}
144159
initial={{ opacity: 0, y: 20 }}
@@ -165,14 +180,14 @@ const ProductGuidelines = () => {
165180
</div>
166181

167182
<div className="grid grid-cols-1 md:grid-cols-2 gap-3">
168-
{subsection.principles.map((principle, principleIndex) => (
183+
{(subsection.patterns || subsection.structure || subsection.principles || []).map((item: string, itemIndex: number) => (
169184
<div
170-
key={principleIndex}
185+
key={itemIndex}
171186
className="flex items-start space-x-3 p-3 bg-muted/30 rounded-lg"
172187
>
173188
<div className="w-1.5 h-1.5 rounded-full bg-primary mt-2 flex-shrink-0" />
174189
<p className="text-muted-foreground text-sm leading-relaxed">
175-
{principle}
190+
{item}
176191
</p>
177192
</div>
178193
))}

src/contexts/LanguageContext.tsx

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -189,26 +189,30 @@ const translations = {
189189
'product.guidelines.interactionPatterns.title': 'Interaction Patterns',
190190
'product.guidelines.interactionPatterns.subtitle': 'The foundation of our product experience',
191191
'product.guidelines.interactionPatterns.description': 'We define interaction patterns before any visual design work begins. These patterns establish how users navigate, engage, and accomplish tasks within our products.',
192-
'product.guidelines.interactionPatterns.principle1': 'Define clear user flows and navigation patterns before visual design',
193-
'product.guidelines.interactionPatterns.principle2': 'Ensure consistent interaction behaviors across all touchpoints',
194-
'product.guidelines.interactionPatterns.principle3': 'Design for accessibility and inclusive user experiences',
195-
'product.guidelines.interactionPatterns.principle4': 'Test and validate interaction patterns with real users',
192+
'product.guidelines.interactionPatterns.onLoad': 'OnLoad (skeleton UI, loading states)',
193+
'product.guidelines.interactionPatterns.onScroll': 'OnScroll (default page vertical scroll as primary interaction)',
194+
'product.guidelines.interactionPatterns.notify': 'Notify (Toast, banner, etc.)',
195+
'product.guidelines.interactionPatterns.alert': 'Alert (Toast)',
196+
'product.guidelines.interactionPatterns.pauseAsk': 'Pause & Ask (popup)',
197+
'product.guidelines.interactionPatterns.magnify': 'Magnify (bottomsheet)',
198+
'product.guidelines.interactionPatterns.screenToScreen': 'Screen to Screen (navigation patterns)',
199+
'product.guidelines.interactionPatterns.feedback': 'Feedback (touch, swipe, etc.)',
200+
'product.guidelines.interactionPatterns.moreToCome': '(more to come)',
196201

197202
'product.guidelines.uiKit.title': 'UI Kit',
198203
'product.guidelines.uiKit.subtitle': 'Visual components built on interaction foundations',
199204
'product.guidelines.uiKit.description': 'Our UI components are designed to support the interaction patterns we\'ve established. Every component serves a specific interaction purpose.',
200-
'product.guidelines.uiKit.principle1': 'Build components that enhance, not hinder, user interactions',
201-
'product.guidelines.uiKit.principle2': 'Maintain visual consistency while supporting diverse interaction needs',
202-
'product.guidelines.uiKit.principle3': 'Design for scalability and reusability across products',
203-
'product.guidelines.uiKit.principle4': 'Document component behavior and interaction states clearly',
205+
'product.guidelines.uiKit.atoms': 'Atoms (buttons, inputs, icons)',
206+
'product.guidelines.uiKit.modules': 'Modules (cards, forms, navigation)',
207+
'product.guidelines.uiKit.views': 'Views (pages, layouts, screens)',
204208

205209
'product.guidelines.microInteractionPatterns.title': 'Micro-interaction Patterns',
206210
'product.guidelines.microInteractionPatterns.subtitle': 'Polishing details that bring experiences to life',
207211
'product.guidelines.microInteractionPatterns.description': 'These subtle details add personality and feedback to our interactions, making the experience feel responsive and delightful.',
208-
'product.guidelines.microInteractionPatterns.principle1': 'Use animations to provide clear feedback for user actions',
209-
'product.guidelines.microInteractionPatterns.principle2': 'Keep micro-interactions purposeful and not distracting',
210-
'product.guidelines.microInteractionPatterns.principle3': 'Ensure animations enhance accessibility, not hinder it',
211-
'product.guidelines.microInteractionPatterns.principle4': 'Test performance impact of animations on various devices',
212+
'product.guidelines.microInteractionPatterns.livingIcons': 'Living icons',
213+
'product.guidelines.microInteractionPatterns.emphasisOn': 'EmphasisOn',
214+
'product.guidelines.microInteractionPatterns.rewardDelights': 'Reward delights',
215+
'product.guidelines.microInteractionPatterns.moreToCome': 'More to come',
212216

213217
'product.guidelines.visualPatterns.title': 'Visual Patterns',
214218
'product.guidelines.visualPatterns.subtitle': 'Connecting product design to brand identity',
@@ -430,26 +434,30 @@ const translations = {
430434
'product.guidelines.interactionPatterns.title': '상호작용 패턴',
431435
'product.guidelines.interactionPatterns.subtitle': '제품 경험의 기초',
432436
'product.guidelines.interactionPatterns.description': '시각적 디자인 작업을 시작하기 전에 상호작용 패턴을 정의합니다. 이러한 패턴은 사용자가 제품 내에서 탐색하고 참여하며 작업을 완료하는 방법을 설정합니다.',
433-
'product.guidelines.interactionPatterns.principle1': '시각적 디자인 전에 명확한 사용자 플로우와 탐색 패턴 정의',
434-
'product.guidelines.interactionPatterns.principle2': '모든 터치포인트에서 일관된 상호작용 행동 보장',
435-
'product.guidelines.interactionPatterns.principle3': '접근성과 포용적인 사용자 경험을 위한 디자인',
436-
'product.guidelines.interactionPatterns.principle4': '실제 사용자와 상호작용 패턴 테스트 및 검증',
437+
'product.guidelines.interactionPatterns.onLoad': 'OnLoad (스켈레톤 UI, 로딩 상태)',
438+
'product.guidelines.interactionPatterns.onScroll': 'OnScroll (기본 페이지 세로 스크롤을 주요 상호작용으로)',
439+
'product.guidelines.interactionPatterns.notify': 'Notify (토스트, 배너 등)',
440+
'product.guidelines.interactionPatterns.alert': 'Alert (토스트)',
441+
'product.guidelines.interactionPatterns.pauseAsk': 'Pause & Ask (팝업)',
442+
'product.guidelines.interactionPatterns.magnify': 'Magnify (바텀시트)',
443+
'product.guidelines.interactionPatterns.screenToScreen': 'Screen to Screen (네비게이션 패턴)',
444+
'product.guidelines.interactionPatterns.feedback': 'Feedback (터치, 스와이프 등)',
445+
'product.guidelines.interactionPatterns.moreToCome': '(더 많은 패턴 예정)',
437446

438447
'product.guidelines.uiKit.title': 'UI 키트',
439448
'product.guidelines.uiKit.subtitle': '상호작용 기반 위에 구축된 시각적 컴포넌트',
440449
'product.guidelines.uiKit.description': '우리의 UI 컴포넌트는 우리가 설정한 상호작용 패턴을 지원하도록 설계되었습니다. 모든 컴포넌트는 특정한 상호작용 목적을 제공합니다.',
441-
'product.guidelines.uiKit.principle1': '사용자 상호작용을 방해하지 않고 향상시키는 컴포넌트 구축',
442-
'product.guidelines.uiKit.principle2': '다양한 상호작용 요구를 지원하면서 시각적 일관성 유지',
443-
'product.guidelines.uiKit.principle3': '제품 전반에 걸친 확장성과 재사용성을 위한 디자인',
444-
'product.guidelines.uiKit.principle4': '컴포넌트 행동과 상호작용 상태를 명확하게 문서화',
450+
'product.guidelines.uiKit.atoms': 'Atoms (버튼, 입력, 아이콘)',
451+
'product.guidelines.uiKit.modules': 'Modules (카드, 폼, 네비게이션)',
452+
'product.guidelines.uiKit.views': 'Views (페이지, 레이아웃, 화면)',
445453

446454
'product.guidelines.microInteractionPatterns.title': '마이크로 상호작용 패턴',
447455
'product.guidelines.microInteractionPatterns.subtitle': '경험을 생생하게 만드는 세부 사항',
448456
'product.guidelines.microInteractionPatterns.description': '이러한 미묘한 세부 사항은 우리의 상호작용에 개성과 피드백을 추가하여 경험이 반응적이고 즐겁게 느껴지도록 합니다.',
449-
'product.guidelines.microInteractionPatterns.principle1': '사용자 행동에 대한 명확한 피드백을 제공하기 위해 애니메이션 사용',
450-
'product.guidelines.microInteractionPatterns.principle2': '마이크로 상호작용을 목적 있게 유지하고 방해가 되지 않도록 함',
451-
'product.guidelines.microInteractionPatterns.principle3': '애니메이션이 접근성을 방해하지 않고 향상시키도록 보장',
452-
'product.guidelines.microInteractionPatterns.principle4': '다양한 기기에서 애니메이션의 성능 영향 테스트',
457+
'product.guidelines.microInteractionPatterns.livingIcons': 'Living icons',
458+
'product.guidelines.microInteractionPatterns.emphasisOn': 'EmphasisOn',
459+
'product.guidelines.microInteractionPatterns.rewardDelights': 'Reward delights',
460+
'product.guidelines.microInteractionPatterns.moreToCome': 'More to come',
453461

454462
'product.guidelines.visualPatterns.title': '시각적 패턴',
455463
'product.guidelines.visualPatterns.subtitle': '제품 디자인을 브랜드 아이덴티티와 연결',

0 commit comments

Comments
 (0)