Skip to content

Commit 95c7186

Browse files
committed
Restructure avatar system to use Buzzvil values and principles
Buzzvil Values (Question 1 - Working Style): - Iterate Fast: Orange, gold, bright yellow - speed and energy - Clarity: Alice blue, lavender, white - clear spectrum - Grit: Dark red, crimson, fire brick - power with energy - Bold: Dark magenta, deep pink, crimson - bold and daring - One-Team: Royal blue, dodger blue, sky blue - unity depth - Delight: Hot pink, turquoise, deep pink, lime - vibrant energy Buzzvil Design Principles (Question 2 - Animations): - Reward = Time: Smooth flowing movements like time passing (4s) - Playful: Bouncy energetic movements like play (3s) - Scalable: Expanding growing movements like scaling up (5s) Updated Components: - Avatar: Now uses BUZZVIL_VALUE_COLORS and BUZZVIL_PRINCIPLE_ANIMATIONS - My Avatar Page: Restructured to ask for Buzzvil values and principles - Avatar Test Page: Updated to test new value/principle combinations - XML Generation: Updated to use buzzvil value and principle fields All animations are smooth, distinct, and well-made with easeInOut transitions.
1 parent 2451406 commit 95c7186

File tree

3 files changed

+131
-240
lines changed

3 files changed

+131
-240
lines changed

src/app/avatar-test/page.tsx

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ interface TestAvatar {
1515
keywords: string[];
1616
}
1717

18-
const PHILOSOPHIES = ['rewarded', 'playful', 'scalable', 'one-team', 'clarity', 'grit'];
19-
const WORKING_STYLES = ['iterative', 'detail-oriented', 'big-picture', 'collaborative', 'experimental', 'systematic'];
18+
const BUZZVIL_VALUES = ['iterate-fast', 'clarity', 'grit', 'bold', 'one-team', 'delight'];
19+
const BUZZVIL_PRINCIPLES = ['reward-time', 'playful', 'scalable'];
2020
const NAMES = ['Alex Chen', 'Maya Patel', 'Jordan Kim', 'Sam Wilson', 'Taylor Brown', 'Casey Lee', 'Riley Zhang', 'Morgan Davis'];
2121
const ROLES = ['Product Designer', 'UX Designer', 'UI Designer', 'Design Lead', 'Design Manager'];
2222
const DESCRIPTIONS = [
@@ -37,17 +37,17 @@ const KEYWORDS = [
3737

3838
function generateRandomAvatar(id: number): TestAvatar {
3939
const randomName = NAMES[Math.floor(Math.random() * NAMES.length)];
40-
const randomPhilosophy = PHILOSOPHIES[Math.floor(Math.random() * PHILOSOPHIES.length)];
41-
const randomWorkingStyle = WORKING_STYLES[Math.floor(Math.random() * WORKING_STYLES.length)];
40+
const randomValue = BUZZVIL_VALUES[Math.floor(Math.random() * BUZZVIL_VALUES.length)];
41+
const randomPrinciple = BUZZVIL_PRINCIPLES[Math.floor(Math.random() * BUZZVIL_PRINCIPLES.length)];
4242
const randomRole = ROLES[Math.floor(Math.random() * ROLES.length)];
4343
const randomDescription = DESCRIPTIONS[Math.floor(Math.random() * DESCRIPTIONS.length)];
4444
const randomKeywords = KEYWORDS[Math.floor(Math.random() * KEYWORDS.length)];
4545

4646
return {
4747
id,
4848
name: randomName,
49-
philosophy: randomPhilosophy,
50-
workingStyle: randomWorkingStyle,
49+
philosophy: randomValue,
50+
workingStyle: randomPrinciple,
5151
role: randomRole,
5252
description: randomDescription,
5353
keywords: randomKeywords,
@@ -86,7 +86,7 @@ export default function AvatarTestPage() {
8686
<div>
8787
<h1 className="text-3xl font-bold text-foreground">Avatar Generation Test</h1>
8888
<p className="text-muted-foreground mt-2">
89-
Testing philosophy-based colors and work style animations
89+
Testing Buzzvil values-based colors and principle-based animations
9090
</p>
9191
</div>
9292

@@ -142,16 +142,16 @@ export default function AvatarTestPage() {
142142
<p className="text-muted-foreground text-xs">{avatar.description}</p>
143143
</div>
144144

145-
{/* Philosophy & Work Style */}
145+
{/* Buzzvil Value & Principle */}
146146
<div className="space-y-2">
147147
<div className="flex items-center justify-between">
148-
<span className="text-xs text-muted-foreground">Philosophy:</span>
148+
<span className="text-xs text-muted-foreground">Value:</span>
149149
<span className="text-xs font-medium text-accent capitalize px-2 py-1 bg-accent/10 rounded-full">
150-
{avatar.philosophy}
150+
{avatar.philosophy.replace('-', ' ')}
151151
</span>
152152
</div>
153153
<div className="flex items-center justify-between">
154-
<span className="text-xs text-muted-foreground">Work Style:</span>
154+
<span className="text-xs text-muted-foreground">Principle:</span>
155155
<span className="text-xs font-medium text-accent capitalize px-2 py-1 bg-accent/10 rounded-full">
156156
{avatar.workingStyle.replace('-', ' ')}
157157
</span>
@@ -185,41 +185,41 @@ export default function AvatarTestPage() {
185185
</h2>
186186

187187
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
188-
{/* Philosophy Colors */}
188+
{/* Buzzvil Values Colors */}
189189
<div>
190-
<h3 className="text-lg font-semibold text-foreground mb-4">Philosophy-Based Colors</h3>
190+
<h3 className="text-lg font-semibold text-foreground mb-4">Buzzvil Values (Colors)</h3>
191191
<div className="space-y-3">
192-
{PHILOSOPHIES.map((philosophy) => (
193-
<div key={philosophy} className="flex items-center space-x-3">
192+
{BUZZVIL_VALUES.map((value) => (
193+
<div key={value} className="flex items-center space-x-3">
194194
<div className="w-6 h-6 rounded-full border-2 border-border flex items-center justify-center">
195195
<Avatar
196196
name="Test"
197197
size={20}
198-
philosophy={philosophy}
199-
workingStyle="systematic"
198+
philosophy={value}
199+
workingStyle="reward-time"
200200
/>
201201
</div>
202-
<span className="text-sm text-foreground capitalize">{philosophy}</span>
202+
<span className="text-sm text-foreground capitalize">{value.replace('-', ' ')}</span>
203203
</div>
204204
))}
205205
</div>
206206
</div>
207207

208-
{/* Work Style Animations */}
208+
{/* Buzzvil Principles Animations */}
209209
<div>
210-
<h3 className="text-lg font-semibold text-foreground mb-4">Work Style Animations</h3>
210+
<h3 className="text-lg font-semibold text-foreground mb-4">Buzzvil Principles (Animations)</h3>
211211
<div className="space-y-3">
212-
{WORKING_STYLES.map((style) => (
213-
<div key={style} className="flex items-center space-x-3">
212+
{BUZZVIL_PRINCIPLES.map((principle) => (
213+
<div key={principle} className="flex items-center space-x-3">
214214
<div className="w-6 h-6 rounded-full border-2 border-border flex items-center justify-center">
215215
<Avatar
216216
name="Test"
217217
size={20}
218-
philosophy="playful"
219-
workingStyle={style}
218+
philosophy="delight"
219+
workingStyle={principle}
220220
/>
221221
</div>
222-
<span className="text-sm text-foreground capitalize">{style.replace('-', ' ')}</span>
222+
<span className="text-sm text-foreground capitalize">{principle.replace('-', ' ')}</span>
223223
</div>
224224
))}
225225
</div>

src/app/my-avatar/page.tsx

Lines changed: 65 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ interface AvatarData {
99
// Personal information
1010
name: string;
1111

12-
// Style questions
13-
primaryColor: string;
14-
secondaryColor: string;
15-
philosophy: string;
16-
workingStyle: string;
12+
// Buzzvil Values & Principles
13+
buzzvilValue: string; // What drives your working style
14+
buzzvilPrinciple: string; // Your favorite design principle
1715

1816
// Role information
1917
role: string;
@@ -25,81 +23,63 @@ interface AvatarData {
2523

2624
const STEPS = [
2725
{ id: 'name', title: 'Personal Info', icon: Palette },
28-
{ id: 'style', title: 'Design Style', icon: Palette },
29-
{ id: 'role', title: 'Role & Organization', icon: Zap },
26+
{ id: 'values', title: 'Buzzvil Values', icon: Zap },
27+
{ id: 'principles', title: 'Design Principles', icon: Sparkles },
28+
{ id: 'role', title: 'Role & Organization', icon: Palette },
3029
{ id: 'keywords', title: 'Expertise', icon: Sparkles },
3130
{ id: 'preview', title: 'Preview & Download', icon: Download },
3231
];
3332

34-
const DESIGN_PHILOSOPHY_OPTIONS = [
33+
// Buzzvil Values - Question 1: What drives your working style?
34+
const BUZZVIL_VALUES = [
3535
{
36-
name: 'Rewarded',
37-
description: 'Creating experiences that feel valuable and meaningful',
38-
colors: ['#FF6B6B', '#FFE66D', '#4ECDC4'],
39-
philosophy: 'rewarded'
40-
},
41-
{
42-
name: 'Playful',
43-
description: 'Bringing joy and delight to every interaction',
44-
colors: ['#667EEA', '#764BA2', '#F093FB'],
45-
philosophy: 'playful'
46-
},
47-
{
48-
name: 'Scalable',
49-
description: 'Building systems that grow with our users',
50-
colors: ['#56AB2F', '#A8E6CF', '#FFD93D'],
51-
philosophy: 'scalable'
52-
},
53-
{
54-
name: 'One-Team',
55-
description: 'Designing as a unified force across all touchpoints',
56-
colors: ['#FF416C', '#FF4B2B', '#FF6B6B'],
57-
philosophy: 'one-team'
36+
name: 'Iterate Fast',
37+
description: 'Moving quickly with rapid prototyping and continuous improvement',
38+
value: 'iterate-fast'
5839
},
5940
{
6041
name: 'Clarity',
6142
description: 'Making complex things simple and understandable',
62-
colors: ['#2C3E50', '#34495E', '#ECF0F1'],
63-
philosophy: 'clarity'
43+
value: 'clarity'
6444
},
6545
{
6646
name: 'Grit',
6747
description: 'Pushing boundaries and challenging the status quo',
68-
colors: ['#FF9A9E', '#FECFEF', '#FECFEF'],
69-
philosophy: 'grit'
48+
value: 'grit'
7049
},
71-
];
72-
73-
const WORKING_STYLE_OPTIONS = [
7450
{
75-
name: 'Iterative',
76-
description: 'Building and refining through continuous cycles',
77-
style: 'iterative'
51+
name: 'Bold',
52+
description: 'Taking risks and making courageous design decisions',
53+
value: 'bold'
7854
},
7955
{
80-
name: 'Detail-Oriented',
81-
description: 'Focusing on precision and attention to every element',
82-
style: 'detail-oriented'
56+
name: 'One-Team',
57+
description: 'Designing as a unified force across all touchpoints',
58+
value: 'one-team'
8359
},
8460
{
85-
name: 'Big Picture',
86-
description: 'Thinking strategically about overall user experience',
87-
style: 'big-picture'
61+
name: 'Delight',
62+
description: 'Bringing joy and delight to every interaction',
63+
value: 'delight'
8864
},
65+
];
66+
67+
// Buzzvil Design Principles - Question 2: What's your favorite design principle?
68+
const BUZZVIL_PRINCIPLES = [
8969
{
90-
name: 'Collaborative',
91-
description: 'Working closely with cross-functional teams',
92-
style: 'collaborative'
70+
name: 'Reward = Time',
71+
description: 'Creating experiences that feel valuable and meaningful',
72+
principle: 'reward-time'
9373
},
9474
{
95-
name: 'Experimental',
96-
description: 'Testing new approaches and pushing boundaries',
97-
style: 'experimental'
75+
name: 'Playful',
76+
description: 'Bringing joy and delight to every interaction',
77+
principle: 'playful'
9878
},
9979
{
100-
name: 'Systematic',
101-
description: 'Following structured processes and methodologies',
102-
style: 'systematic'
80+
name: 'Scalable',
81+
description: 'Building systems that grow with our users',
82+
principle: 'scalable'
10383
},
10484
];
10585

@@ -109,10 +89,8 @@ export default function MyAvatarPage() {
10989
const [showPreview, setShowPreview] = useState(false);
11090
const [avatarData, setAvatarData] = useState<AvatarData>({
11191
name: '',
112-
primaryColor: '',
113-
secondaryColor: '',
114-
philosophy: '',
115-
workingStyle: '',
92+
buzzvilValue: '',
93+
buzzvilPrinciple: '',
11694
role: 'Product Designer',
11795
organizationDescription: '',
11896
keywords: ['', '', ''],
@@ -126,19 +104,19 @@ export default function MyAvatarPage() {
126104
switch (step) {
127105
case 0: // Name input
128106
return avatarData.name.trim();
129-
case 1: // Philosophy selection
130-
return avatarData.philosophy;
131-
case 2: // Working style selection
132-
return avatarData.workingStyle;
107+
case 1: // Buzzvil Values selection
108+
return avatarData.buzzvilValue;
109+
case 2: // Buzzvil Principles selection
110+
return avatarData.buzzvilPrinciple;
133111
case 3: // Role and organization
134112
return avatarData.role && avatarData.organizationDescription;
135113
case 4: // Keywords
136114
return avatarData.keywords[0]?.trim();
137115
case 5: // Final step - check all required fields
138116
return (
139117
avatarData.name.trim() &&
140-
avatarData.philosophy &&
141-
avatarData.workingStyle &&
118+
avatarData.buzzvilValue &&
119+
avatarData.buzzvilPrinciple &&
142120
avatarData.role &&
143121
avatarData.organizationDescription &&
144122
avatarData.keywords[0]?.trim()
@@ -170,12 +148,10 @@ export default function MyAvatarPage() {
170148
<personal>
171149
<name>${avatarData.name}</name>
172150
</personal>
173-
<style>
174-
<primaryColor>${avatarData.primaryColor}</primaryColor>
175-
<secondaryColor>${avatarData.secondaryColor}</secondaryColor>
176-
<philosophy>${avatarData.philosophy}</philosophy>
177-
<workingStyle>${avatarData.workingStyle}</workingStyle>
178-
</style>
151+
<buzzvil>
152+
<value>${avatarData.buzzvilValue}</value>
153+
<principle>${avatarData.buzzvilPrinciple}</principle>
154+
</buzzvil>
179155
<role>
180156
<title>${avatarData.role}</title>
181157
<organizationDescription>${avatarData.organizationDescription}</organizationDescription>
@@ -229,23 +205,19 @@ export default function MyAvatarPage() {
229205
return (
230206
<div className="space-y-8">
231207
<div className="text-center">
232-
<h2 className="text-3xl font-bold text-foreground mb-4">What drives your design philosophy?</h2>
233-
<p className="text-muted-foreground text-lg">Choose the principle that resonates most with your approach</p>
208+
<h2 className="text-3xl font-bold text-foreground mb-4">What drives your working style?</h2>
209+
<p className="text-muted-foreground text-lg">Choose the Buzzvil value that resonates most with your approach</p>
234210
</div>
235211

236212
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
237-
{DESIGN_PHILOSOPHY_OPTIONS.map((option, index) => (
213+
{BUZZVIL_VALUES.map((option, index) => (
238214
<motion.button
239215
key={index}
240216
whileHover={{ scale: 1.02 }}
241217
whileTap={{ scale: 0.98 }}
242-
onClick={() => {
243-
updateAvatarData('primaryColor', option.colors[0]);
244-
updateAvatarData('secondaryColor', option.colors[1]);
245-
updateAvatarData('philosophy', option.philosophy);
246-
}}
218+
onClick={() => updateAvatarData('buzzvilValue', option.value)}
247219
className={`p-6 rounded-2xl border-2 transition-all text-left ${
248-
avatarData.philosophy === option.philosophy
220+
avatarData.buzzvilValue === option.value
249221
? 'border-accent bg-accent/10'
250222
: 'border-border hover:border-accent/50'
251223
}`}
@@ -262,24 +234,24 @@ export default function MyAvatarPage() {
262234
return (
263235
<div className="space-y-8">
264236
<div className="text-center">
265-
<h2 className="text-3xl font-bold text-foreground mb-4">How do you approach your work?</h2>
266-
<p className="text-muted-foreground text-lg">Select the working style that best describes your process</p>
237+
<h2 className="text-3xl font-bold text-foreground mb-4">What&apos;s your favorite Buzzvil design principle?</h2>
238+
<p className="text-muted-foreground text-lg">Choose the principle that guides your design decisions</p>
267239
</div>
268240

269-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
270-
{WORKING_STYLE_OPTIONS.map((option, index) => (
241+
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
242+
{BUZZVIL_PRINCIPLES.map((option, index) => (
271243
<motion.button
272244
key={index}
273245
whileHover={{ scale: 1.02 }}
274246
whileTap={{ scale: 0.98 }}
275-
onClick={() => updateAvatarData('workingStyle', option.style)}
247+
onClick={() => updateAvatarData('buzzvilPrinciple', option.principle)}
276248
className={`p-6 rounded-2xl border-2 transition-all text-left ${
277-
avatarData.workingStyle === option.style
249+
avatarData.buzzvilPrinciple === option.principle
278250
? 'border-accent bg-accent/10'
279251
: 'border-border hover:border-accent/50'
280252
}`}
281253
>
282-
<h3 className="font-semibold text-foreground mb-2">{option.name}</h3>
254+
<h3 className="font-semibold text-foreground mb-3">{option.name}</h3>
283255
<p className="text-muted-foreground text-sm">{option.description}</p>
284256
</motion.button>
285257
))}
@@ -375,13 +347,13 @@ export default function MyAvatarPage() {
375347
</div>
376348

377349
<div>
378-
<h4 className="font-medium text-foreground mb-2">Design Philosophy</h4>
379-
<p className="text-accent capitalize">{avatarData.philosophy}</p>
350+
<h4 className="font-medium text-foreground mb-2">Buzzvil Value</h4>
351+
<p className="text-accent capitalize">{avatarData.buzzvilValue.replace('-', ' ')}</p>
380352
</div>
381353

382354
<div>
383-
<h4 className="font-medium text-foreground mb-2">Working Style</h4>
384-
<p className="text-muted-foreground capitalize">{avatarData.workingStyle.replace('-', ' ')}</p>
355+
<h4 className="font-medium text-foreground mb-2">Design Principle</h4>
356+
<p className="text-muted-foreground capitalize">{avatarData.buzzvilPrinciple.replace('-', ' ')}</p>
385357
</div>
386358

387359
<div>
@@ -446,8 +418,8 @@ export default function MyAvatarPage() {
446418
<Avatar
447419
name={avatarData.name}
448420
size={80}
449-
philosophy={avatarData.philosophy}
450-
workingStyle={avatarData.workingStyle}
421+
philosophy={avatarData.buzzvilValue}
422+
workingStyle={avatarData.buzzvilPrinciple}
451423
/>
452424
</div>
453425
<div className="flex-1">

0 commit comments

Comments
 (0)