studio-lumiere-cli 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +549 -95
- package/dist/cli.js +9 -2
- package/dist/cli.js.map +1 -1
- package/dist/config/options.d.ts +1 -1
- package/dist/config/options.js +1 -1
- package/dist/config/options.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pipelines/generateImages.js +31 -26
- package/dist/pipelines/generateImages.js.map +1 -1
- package/dist/pipelines/resolve.d.ts +2 -1
- package/dist/pipelines/resolve.js +12 -2
- package/dist/pipelines/resolve.js.map +1 -1
- package/dist/studio/constants.d.ts +9 -9
- package/dist/studio/constants.js +209 -93
- package/dist/studio/constants.js.map +1 -1
- package/dist/studio/promptBuilder.d.ts +1 -1
- package/dist/studio/promptBuilder.js +188 -140
- package/dist/studio/promptBuilder.js.map +1 -1
- package/dist/studio/types.d.ts +6 -0
- package/dist/types.d.ts +3 -0
- package/package.json +1 -1
package/dist/studio/constants.js
CHANGED
|
@@ -40,7 +40,8 @@ export const TEMPLATES = [
|
|
|
40
40
|
{ id: 'nail_french', name: 'French Manicure', value: 'classic french tip manicure', visualColor: '#FDF5E6' },
|
|
41
41
|
{ id: 'nail_natural', name: 'Natural & Clean', value: 'clean, natural unpainted nails with a clear healthy coat', visualColor: '#F3EFE0' },
|
|
42
42
|
{ id: 'nail_dark', name: 'Noir / Dark', value: 'chic dark black or burgundy nail polish', visualColor: '#1A1A1A' }
|
|
43
|
-
]
|
|
43
|
+
],
|
|
44
|
+
hasModel: true
|
|
44
45
|
},
|
|
45
46
|
{
|
|
46
47
|
id: 'neck_model',
|
|
@@ -63,7 +64,8 @@ export const TEMPLATES = [
|
|
|
63
64
|
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
|
|
64
65
|
{ id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
|
|
65
66
|
{ id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
|
|
66
|
-
]
|
|
67
|
+
],
|
|
68
|
+
hasModel: true
|
|
67
69
|
},
|
|
68
70
|
{
|
|
69
71
|
id: 'ear_model',
|
|
@@ -85,7 +87,8 @@ export const TEMPLATES = [
|
|
|
85
87
|
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
|
|
86
88
|
{ id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
|
|
87
89
|
{ id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
|
|
88
|
-
]
|
|
90
|
+
],
|
|
91
|
+
hasModel: true
|
|
89
92
|
},
|
|
90
93
|
{
|
|
91
94
|
id: 'flatlay_creative',
|
|
@@ -100,9 +103,15 @@ export const TEMPLATES = [
|
|
|
100
103
|
{ id: 'surf_velvet', name: 'Beige Velvet', value: 'placed on soft beige velvet fabric', visualColor: '#E3CDB8' },
|
|
101
104
|
{ id: 'surf_wood', name: 'Aged Wood', value: 'placed on rich, dark aged mahogany wood', visualColor: '#5C4033' },
|
|
102
105
|
{ id: 'surf_sand', name: 'Fine Sand', value: 'placed on rippled, fine white sand', visualColor: '#F5F5DC' },
|
|
106
|
+
{ id: 'surf_travertine', name: 'Travertine', value: 'placed on warm ivory travertine stone with subtle pitted texture', visualColor: '#E9DFC9' },
|
|
107
|
+
{ id: 'surf_obsidian', name: 'Black Obsidian', value: 'placed on a glossy black obsidian surface with deep reflective sheen', visualColor: '#0F0F10' },
|
|
108
|
+
{ id: 'surf_mirrored', name: 'Mirrored Glass', value: 'placed on a clean mirrored glass surface with soft reflections', visualColor: '#D6DDE5' },
|
|
109
|
+
{ id: 'surf_brushed_metal', name: 'Brushed Metal', value: 'placed on a brushed champagne metal surface with fine linear texture', visualColor: '#C7B9A5' },
|
|
110
|
+
{ id: 'surf_frosted_acrylic', name: 'Frosted Acrylic', value: 'placed on frosted acrylic with a soft diffused, milky translucence', visualColor: '#E8EDF0' },
|
|
103
111
|
{ id: 'surf_pedestal', name: 'Geometric Pedestal', value: 'displayed on a minimal matte geometric pedestal or cube, architectural and sculptural', visualColor: '#3D3D3D' },
|
|
104
112
|
{ id: 'surf_riser', name: 'Stone Riser', value: 'elevated on a raw natural stone riser or block, organic texture contrasting with polished jewelry', visualColor: '#8B8680' }
|
|
105
|
-
]
|
|
113
|
+
],
|
|
114
|
+
hasModel: false
|
|
106
115
|
},
|
|
107
116
|
{
|
|
108
117
|
id: 'floating_minimal',
|
|
@@ -116,22 +125,27 @@ export const TEMPLATES = [
|
|
|
116
125
|
{ id: 'light_hard', name: 'Hard Contrast', value: 'hard, dramatic direct lighting with sharp shadows', visualColor: '#000000' },
|
|
117
126
|
{ id: 'light_warm', name: 'Golden Glow', value: 'warm, golden sunset-hued lighting', visualColor: '#FFD700' },
|
|
118
127
|
{ id: 'light_cool', name: 'Cool Steel', value: 'cool, bluish steel-toned professional lighting', visualColor: '#B0C4DE' }
|
|
119
|
-
]
|
|
128
|
+
],
|
|
129
|
+
hasModel: false
|
|
120
130
|
},
|
|
121
131
|
{
|
|
122
132
|
id: 'half_body_muse',
|
|
123
133
|
name: 'The Editorial Muse',
|
|
124
134
|
description: 'A dynamic waist-up fashion shot showcasing how the jewelry complements a complete look.',
|
|
125
135
|
visualUrl: '/template_muse.png',
|
|
126
|
-
basePrompt: 'A waist-up medium shot of a sunningly beautiful [ETHNICITY] female model posing for an editorial. She is wearing the specific jewelry piece(s) shown. The composition focuses on how the jewelry accents her overall style. Authentic
|
|
136
|
+
basePrompt: 'A waist-up medium shot of a sunningly beautiful [ETHNICITY] female model posing for an editorial. Face, head, and shoulders clearly visible. Hands may appear but must not be the primary subject. Do NOT crop to hands only. She is wearing the specific jewelry piece(s) shown. The composition focuses on how the jewelry accents her overall style. Authentic skin texture with subtle variation, no heavy retouching, flyaway hairs, cinematic lighting, shot on film.',
|
|
127
137
|
customizationLabel: 'Fashion Style & Outfit',
|
|
128
138
|
customizationOptions: [
|
|
129
|
-
{ id: '
|
|
139
|
+
{ id: 'outfit_director_choice', name: 'Creative Director\'s Choice', value: 'let the stylist choose the most flattering outfit for the jewelry and selected mood; polished, high-fashion editorial styling; shoulders covered; no lingerie or overly revealing garments', visualColor: '#D9D2C8', visualImage: '/question.jpg' },
|
|
140
|
+
{ id: 'outfit_blazer', name: 'Power Suit (Blazer)', value: 'wearing a tailored, structured blazer over a sophisticated inner layer. Defined shoulders, clean lines, confident modern business-chic aesthetic', visualImage: '/power_blazer.png' },
|
|
141
|
+
{ id: 'outfit_tailored_jumpsuit', name: 'Tailored Jumpsuit', value: 'wearing a sleek tailored jumpsuit with long sleeves and a defined waist. Modern power silhouette; shoulders covered', visualColor: '#B9B1A7', visualImage: '/tailored_jumpsuit.jpg' },
|
|
130
142
|
{ id: 'outfit_evening', name: 'Evening Glamour', value: 'wearing a luxurious silk evening dress. Sophisticated, night-out aesthetic', visualImage: '/evening_glamour.png' },
|
|
143
|
+
{ id: 'outfit_leather_jacket', name: 'Leather Jacket', value: 'wearing a sleek black leather jacket layered over the outfit. Structured silhouette, fashion-forward edge', visualColor: '#2B2B2B', visualImage: '/jacket.jpg' },
|
|
131
144
|
{ id: 'outfit_linen', name: 'Resort Linen', value: 'wearing a breezy linen ensemble (button-down or light dress). Relaxed, vacation-luxe aesthetic', visualImage: '/resort_linen.png' },
|
|
132
145
|
{ id: 'outfit_knit', name: 'Cashmere Knit', value: 'wearing a soft, textured cashmere sweater. Cozy, quiet-luxury aesthetic', visualImage: '/cashmere_outfit.png' },
|
|
133
146
|
{ id: 'outfit_silk', name: 'Silk Shirt', value: 'wearing an elegant unbuttoned silk collared shirt, effortlessly chic. Classic, timeless sophistication', visualImage: '/silk_shirt.png' },
|
|
134
|
-
{ id: 'outfit_turtleneck', name: 'Turtleneck', value: 'wearing a sleek fitted turtleneck. Clean, modern minimalist aesthetic that lets the jewelry stand out', visualImage: '/turtleneck.png' }
|
|
147
|
+
{ id: 'outfit_turtleneck', name: 'Turtleneck', value: 'wearing a sleek fitted turtleneck. Clean, modern minimalist aesthetic that lets the jewelry stand out', visualImage: '/turtleneck.png' },
|
|
148
|
+
{ id: 'outfit_tailored_trench', name: 'Tailored Trench', value: 'wearing a tailored trench coat or overcoat with a refined drape. Sophisticated outerwear styling', visualColor: '#CBBEA6', visualImage: '/trench_coat.jpg' }
|
|
135
149
|
],
|
|
136
150
|
secondaryCustomizationLabel: 'Nail Polish',
|
|
137
151
|
secondaryCustomizationOptions: [
|
|
@@ -152,13 +166,32 @@ export const TEMPLATES = [
|
|
|
152
166
|
quaternaryCustomizationLabel: 'Poses & Expressions',
|
|
153
167
|
quaternaryCustomizationOptions: [
|
|
154
168
|
{ id: 'pose_winking', name: 'Winking', value: 'playfully winking at the camera with a confident smile', visualColor: '#F5F0EB', visualSvg: '<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="20" r="18" stroke="#A68A6B" stroke-width="1.5"/><line x1="11" y1="15" x2="17" y2="15" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round"/><circle cx="28" cy="15" r="2" fill="#A68A6B"/><path d="M13 26 Q20 31 27 26" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round" fill="none"/></svg>' },
|
|
155
|
-
{ id: 'pose_grimace', name: 'Playful Grimace', value: 'making a cute, playful grimace
|
|
169
|
+
{ id: 'pose_grimace', name: 'Playful Grimace', value: 'making a cute, playful grimace, full of personality', visualColor: '#F5F0EB', visualSvg: '<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="20" r="18" stroke="#A68A6B" stroke-width="1.5"/><circle cx="14" cy="14" r="2" fill="#A68A6B"/><circle cx="26" cy="14" r="2" fill="#A68A6B"/><path d="M14 18 Q17 16 20 18 Q23 16 26 18" stroke="#A68A6B" stroke-width="1" stroke-linecap="round" fill="none"/><path d="M13 26 L16 24 L19 26 L22 24 L25 26 L28 24" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg>' },
|
|
156
170
|
{ id: 'pose_teasing', name: 'Teasing / Tongue Out', value: 'playfully sticking tongue out slightly, teasing and fun expression', visualColor: '#F5F0EB', visualSvg: '<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="20" r="18" stroke="#A68A6B" stroke-width="1.5"/><circle cx="14" cy="15" r="2" fill="#A68A6B"/><circle cx="26" cy="15" r="2" fill="#A68A6B"/><ellipse cx="20" cy="26" rx="4" ry="2.5" stroke="#A68A6B" stroke-width="1.5" fill="none"/><ellipse cx="20" cy="29" rx="2.5" ry="2" fill="#C4AD91"/></svg>' },
|
|
157
171
|
{ id: 'pose_kiss', name: 'Blowing a Kiss', value: 'blowing a kiss towards the camera, hand near mouth, flirty and fun', visualColor: '#F5F0EB', visualSvg: '<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="20" r="18" stroke="#A68A6B" stroke-width="1.5"/><circle cx="14" cy="15" r="2" fill="#A68A6B"/><circle cx="26" cy="15" r="2" fill="#A68A6B"/><path d="M18 25 Q20 28 22 25" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round" fill="none"/><path d="M30 8 L31 5 L33 7 Z" fill="#A68A6B" opacity="0.6"/><path d="M33 10 L35 8 L36 11 Z" fill="#A68A6B" opacity="0.4"/></svg>' },
|
|
158
172
|
{ id: 'pose_laughing', name: 'Candid Laugh', value: 'throwing head back in genuine, unposed laughter, joyous and radiant', visualColor: '#F5F0EB', visualSvg: '<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="20" r="18" stroke="#A68A6B" stroke-width="1.5"/><path d="M11 14 Q14 11 17 14" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round" fill="none"/><path d="M23 14 Q26 11 29 14" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round" fill="none"/><path d="M12 24 Q20 32 28 24" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round" fill="none"/><line x1="12" y1="24" x2="28" y2="24" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round"/></svg>' },
|
|
159
173
|
{ id: 'pose_pout', name: 'Model Pout', value: 'serious high-fashion model pout, intense gaze, editorial attitude', visualColor: '#F5F0EB', visualSvg: '<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="20" r="18" stroke="#A68A6B" stroke-width="1.5"/><line x1="11" y1="12" x2="17" y2="14" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round"/><line x1="29" y1="12" x2="23" y2="14" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round"/><circle cx="14" cy="16" r="1.5" fill="#A68A6B"/><circle cx="26" cy="16" r="1.5" fill="#A68A6B"/><ellipse cx="20" cy="27" rx="5" ry="2.5" fill="#C4AD91" opacity="0.3" stroke="#A68A6B" stroke-width="1.5"/></svg>' },
|
|
174
|
+
{ id: 'pose_power_tilt', name: 'Power Tilt', value: 'chin raised with a subtle head tilt, confident gaze, strong editorial attitude', visualColor: '#F5F0EB' },
|
|
175
|
+
{ id: 'pose_hand_ear', name: 'Hand to Ear', value: 'hand lifted near ear or temple, poised and composed, earrings visible if present', visualColor: '#F5F0EB' },
|
|
176
|
+
{ id: 'pose_profile', name: 'Side Profile', value: 'strong side profile with defined jawline, sleek posture, composed expression', visualColor: '#F5F0EB' },
|
|
177
|
+
{ id: 'pose_over_shoulder', name: 'Over-Shoulder', value: 'over-shoulder turn with elongated neck, subtle intensity, editorial confidence', visualColor: '#F5F0EB' },
|
|
160
178
|
{ id: 'pose_peace', name: 'Peace Sign', value: 'holding up a peace sign near face, cute and casual vibe', visualColor: '#F5F0EB', visualSvg: '<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="20" r="18" stroke="#A68A6B" stroke-width="1.5"/><circle cx="14" cy="15" r="2" fill="#A68A6B"/><circle cx="26" cy="15" r="2" fill="#A68A6B"/><path d="M14 25 Q20 29 26 25" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round" fill="none"/><line x1="33" y1="4" x2="31" y2="13" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round"/><line x1="36" y1="7" x2="34" y2="13" stroke="#A68A6B" stroke-width="1.5" stroke-linecap="round"/><path d="M30 13 Q32 14 35 13" stroke="#A68A6B" stroke-width="1" stroke-linecap="round" fill="none"/></svg>' }
|
|
161
|
-
]
|
|
179
|
+
],
|
|
180
|
+
quinaryCustomizationLabel: 'Accessories & Styling',
|
|
181
|
+
quinaryCustomizationOptions: [
|
|
182
|
+
{ id: 'accessory_sunglasses', name: 'Tinted Sunglasses', value: 'wearing refined tinted sunglasses with lenses translucent enough to clearly see the eyes; bold editorial styling; shoulders fully covered', visualColor: '#D9D9D9' },
|
|
183
|
+
{ id: 'accessory_silk_scarf', name: 'Silk Scarf', value: 'silk scarf styled at the neck or in the hair; elegant and refined; shoulders covered', visualColor: '#E7D4C8' },
|
|
184
|
+
{ id: 'accessory_silk_headband', name: 'Silk Headband', value: 'silk headband or hair wrap with refined styling; face unobstructed; shoulders covered', visualColor: '#BFA88F' },
|
|
185
|
+
{ id: 'accessory_sheer_gloves', name: 'Sheer Gloves', value: 'sheer mesh or fingerless gloves for editorial edge; keep rings and bracelets visible if present; shoulders covered', visualColor: '#DAD1C8' },
|
|
186
|
+
{ id: 'accessory_statement_belt', name: 'Statement Belt', value: 'bold waist belt or cinch over the outfit; polished and fashion-forward; shoulders covered', visualColor: '#7A6A58' },
|
|
187
|
+
{ id: 'accessory_silk_bandana', name: 'Silk Bandana', value: 'silk bandana styled as a head wrap or tied at the neck; refined styling; shoulders covered', visualColor: '#D8C7B8' },
|
|
188
|
+
{ id: 'accessory_silk_tie', name: 'Silk Necktie', value: 'sleek silk necktie or ribbon tie styled at the collar; fashion-forward tailoring; shoulders covered', visualColor: '#B7A091' },
|
|
189
|
+
{ id: 'accessory_hair_clip', name: 'Hair Clip', value: 'sleek hair clip or barrette with clean styling; face unobstructed; shoulders covered', visualColor: '#CBBBAA' },
|
|
190
|
+
{ id: 'accessory_beret', name: 'Beret', value: 'structured beret angled back so the face remains fully visible; editorial sophistication; shoulders covered', visualColor: '#5C4B3B' },
|
|
191
|
+
{ id: 'accessory_wide_brim_hat', name: 'Wide-Brim Hat', value: 'wide-brim hat tilted back so the face and eyes remain visible; editorial sophistication; shoulders covered', visualColor: '#4E4138' },
|
|
192
|
+
{ id: 'accessory_leather_gloves', name: 'Leather Gloves', value: 'sleek leather gloves with a tailored fit; keep rings and bracelets visible if present; shoulders covered', visualColor: '#2F2A26' }
|
|
193
|
+
],
|
|
194
|
+
hasModel: true
|
|
162
195
|
},
|
|
163
196
|
{
|
|
164
197
|
id: 'romance_proposal',
|
|
@@ -190,7 +223,8 @@ export const TEMPLATES = [
|
|
|
190
223
|
{ id: 'nail_french', name: 'French Manicure', value: 'classic french tip manicure', visualColor: '#FDF5E6' },
|
|
191
224
|
{ id: 'nail_natural', name: 'Natural & Clean', value: 'clean, natural unpainted nails with a clear healthy coat', visualColor: '#F3EFE0' },
|
|
192
225
|
{ id: 'nail_dark', name: 'Noir / Dark', value: 'chic dark black or burgundy nail polish', visualColor: '#1A1A1A' }
|
|
193
|
-
]
|
|
226
|
+
],
|
|
227
|
+
hasModel: true
|
|
194
228
|
},
|
|
195
229
|
{
|
|
196
230
|
id: 'museum_exhibit',
|
|
@@ -212,7 +246,8 @@ export const TEMPLATES = [
|
|
|
212
246
|
{ id: 'display_stand', name: 'Open Display on Stand', value: 'displayed openly on a minimal museum stand, accessible and commanding', visualColor: '#C0C0C0' },
|
|
213
247
|
{ id: 'display_wall', name: 'Museum Wall Mount', value: 'mounted on museum wall with professional track lighting and descriptive placard', visualColor: '#F5F5DC' },
|
|
214
248
|
{ id: 'display_alcove', name: 'Illuminated Alcove', value: 'placed in an illuminated alcove with dramatic recessed lighting and shadow play', visualColor: '#2C2C2C' }
|
|
215
|
-
]
|
|
249
|
+
],
|
|
250
|
+
hasModel: false
|
|
216
251
|
},
|
|
217
252
|
{
|
|
218
253
|
id: 'romantic_mood',
|
|
@@ -236,7 +271,8 @@ export const TEMPLATES = [
|
|
|
236
271
|
{ id: 'mood_moody', name: 'Moody & Dark', value: 'dark and dramatic mood with deep shadows, single warm light source, chiaroscuro romance, mysterious and intense', visualColor: '#2C1810' },
|
|
237
272
|
{ id: 'mood_golden', name: 'Golden Hour Glow', value: 'rich golden hour warmth, everything bathed in honeyed light, long soft shadows, magic hour romance', visualColor: '#A68A6B' },
|
|
238
273
|
{ id: 'mood_blush', name: 'Blush Pink Haze', value: 'soft blush pink and rose tones, dreamy and feminine, slightly hazy and ethereal, Valentine energy', visualColor: '#F4C2C2' }
|
|
239
|
-
]
|
|
274
|
+
],
|
|
275
|
+
hasModel: false
|
|
240
276
|
}
|
|
241
277
|
];
|
|
242
278
|
export const SKIN_TONES = [
|
|
@@ -277,18 +313,25 @@ export const ETHNICITIES = [
|
|
|
277
313
|
{ id: 'asian', name: 'East Asian', value: 'East Asian female model', visualImage: '/ethnicity_asian.jpeg' },
|
|
278
314
|
];
|
|
279
315
|
export const HAIR_COLORS = [
|
|
280
|
-
{ id: 'dark', name: '
|
|
281
|
-
{ id: 'brunette', name: 'Brunette', value: 'rich brown
|
|
282
|
-
{ id: '
|
|
283
|
-
{ id: '
|
|
284
|
-
{ id: '
|
|
316
|
+
{ id: 'dark', name: 'Jet Black', value: 'deep jet black hair with a natural healthy sheen', visualColor: '#000000' },
|
|
317
|
+
{ id: 'brunette', name: 'Rich Brunette', value: 'rich chocolate brown hair with subtle lowlights and shine', visualColor: '#4A3728' },
|
|
318
|
+
{ id: 'light_brown', name: 'Light Brown', value: 'natural light brown hair with soft warmth and dimension', visualColor: '#7A5A3A' },
|
|
319
|
+
{ id: 'natural_blonde', name: 'Natural Blonde', value: 'soft natural blonde hair with balanced warmth and subtle highlights', visualColor: '#DDBB7E' },
|
|
320
|
+
{ id: 'honey_blonde', name: 'Honey Blonde', value: 'warm honey blonde hair with golden tones', visualColor: '#D4AF37' },
|
|
321
|
+
{ id: 'blonde', name: 'Platinum / Icy Blonde', value: 'cool platinum blonde hair with an icy, sleek finish', visualColor: '#F5F5DC' },
|
|
322
|
+
{ id: 'strawberry', name: 'Strawberry Blonde', value: 'soft strawberry blonde hair with warm reddish-gold undertones', visualColor: '#E6CBA5' },
|
|
323
|
+
{ id: 'copper_red', name: 'Copper Red', value: 'vibrant copper red hair with glossy warmth and natural depth', visualColor: '#C66A2F' },
|
|
324
|
+
{ id: 'chestnut_red', name: 'Chestnut Red', value: 'rich chestnut red hair with warm brown undertones', visualColor: '#8B4A2B' },
|
|
325
|
+
{ id: 'auburn', name: 'Deep Auburn', value: 'intense deep auburn red hair with rich copper highlights', visualColor: '#8D4004' },
|
|
326
|
+
{ id: 'mahogany', name: 'Mahogany', value: 'deep mahogany red-brown hair with subtle wine undertones', visualColor: '#6B2E2E' },
|
|
327
|
+
{ id: 'silver', name: 'Metallic Silver', value: 'high-shine metallic silver hair with a cool chrome sheen', visualColor: '#BFC3C7' },
|
|
285
328
|
];
|
|
286
329
|
export const BACKGROUNDS = [
|
|
330
|
+
{ id: 'none', name: 'None', value: '', visualColor: 'transparent' },
|
|
287
331
|
{ id: 'silk_cream', name: 'Cream Silk', value: 'soft cream colored flowing silk fabric', visualColor: '#FDFBD4' },
|
|
288
332
|
{ id: 'velvet_black', name: 'Midnight Velvet', value: 'luxurious deep black velvet', visualColor: '#1a1a1a' },
|
|
289
333
|
{ id: 'marble_white', name: 'Carrara Marble', value: 'clean white marble surface with subtle grey veins', visualColor: '#f0f0f0' },
|
|
290
334
|
{ id: 'emerald_velvet', name: 'Emerald Velvet', value: 'rich emerald green velvet fabric with deep luxurious texture', visualColor: '#1B4332' },
|
|
291
|
-
{ id: 'studio_grey', name: 'Studio Grey', value: 'neutral minimalist studio grey', visualColor: '#B0B0B0' },
|
|
292
335
|
{ id: 'warm_beige', name: 'Warm Beige', value: 'warm aesthetic textured beige plaster', visualColor: '#E3CDB8' },
|
|
293
336
|
{ id: 'burgundy_velvet', name: 'Burgundy Velvet', value: 'deep burgundy velvet fabric with rich wine-dark luxurious texture', visualColor: '#4A0020' },
|
|
294
337
|
{ id: 'champagne_gold', name: 'Champagne Gold', value: 'shimmering champagne gold satin with soft metallic luster', visualColor: '#D4AF37' },
|
|
@@ -301,10 +344,77 @@ export const LUXURY_INTERIOR_POOL = [
|
|
|
301
344
|
'softly blurred background of a high-end luxury Parisian apartment interior, bokeh effect',
|
|
302
345
|
'softly blurred background of a refined Milanese palazzo interior, warm marble and ornate mouldings, bokeh effect',
|
|
303
346
|
'softly blurred background of a grand London townhouse interior, rich wood paneling and soft velvet, bokeh effect',
|
|
304
|
-
'softly blurred background of an opulent Moroccan riad interior, intricate zellige tiles and arched doorways, bokeh effect',
|
|
347
|
+
//'softly blurred background of an opulent Moroccan riad interior, intricate zellige tiles and arched doorways, bokeh effect',
|
|
305
348
|
'softly blurred background of a sleek modern penthouse interior, floor-to-ceiling windows and neutral tones, bokeh effect',
|
|
306
349
|
'softly blurred background of a classic Viennese salon interior, gilded mirrors and crystal chandeliers, bokeh effect',
|
|
307
350
|
];
|
|
351
|
+
export const STUDIO_FLAT_POOL = [
|
|
352
|
+
'clean professional studio background, seamless infinity curve, minimal distractions',
|
|
353
|
+
'minimalist studio backdrop with a soft gradient and elegant lighting',
|
|
354
|
+
'high-end commercial studio setting with a pure, neutral background',
|
|
355
|
+
'sleek, modern photography studio with subtle, sophisticated shading',
|
|
356
|
+
'flawless studio environment with a smooth, matte backdrop'
|
|
357
|
+
];
|
|
358
|
+
export const OUTDOOR_POOL = [
|
|
359
|
+
'softly blurred outdoor environment with cinematic bokeh',
|
|
360
|
+
'garden or terrace exterior with softly out-of-focus foliage and architectural details',
|
|
361
|
+
'elegant outdoor setting with depth and atmospheric blur',
|
|
362
|
+
'serene exterior landscape softly out of focus in the distance',
|
|
363
|
+
'outdoor scene with subtle haze and gentle background separation',
|
|
364
|
+
'courtyard exterior with stone textures and softly blurred greenery',
|
|
365
|
+
'rooftop terrace with distant cityscape softened into elegant bokeh',
|
|
366
|
+
'botanical garden walkway with lush foliage softly receding into blur',
|
|
367
|
+
'villa exterior with textured walls and archways blurred in the background',
|
|
368
|
+
'outdoor colonnade or veranda with soft depth-of-field and architectural rhythm',
|
|
369
|
+
'terrace with sculptural planters and a softly blurred horizon line',
|
|
370
|
+
'elegant exterior stairway or landing with shallow depth and creamy bokeh',
|
|
371
|
+
'garden wall or pergola backdrop with soft lens blur and atmospheric depth',
|
|
372
|
+
'waterfront or poolside exterior suggested as soft reflections and bokeh shapes'
|
|
373
|
+
];
|
|
374
|
+
export const MACRO_TEXTURE_POOL = [
|
|
375
|
+
'abstract macro textural background of softly draped silk filling the frame',
|
|
376
|
+
'rich, tactile macro shot of raw stone or marble surface softly out of focus',
|
|
377
|
+
'luxurious deep velvet texture softly filling the background space',
|
|
378
|
+
'elegant macro texture of brushed metal or soft linen in the background',
|
|
379
|
+
'organic, textural background pattern providing rich, sophisticated contrast'
|
|
380
|
+
];
|
|
381
|
+
export const BACKGROUND_TREATMENT_POOL = [
|
|
382
|
+
'HEAVILY BLURRED (deep cinematic bokeh) to keep focus strictly on the jewelry.',
|
|
383
|
+
'Natural optical separation using a wide aperture, keeping the jewelry tack sharp and the background in a creamy, out-of-focus state.',
|
|
384
|
+
'Soft focus falloff, allowing the texture and colors of the setting to be subtly visible without competing with the jewelry.',
|
|
385
|
+
'Shallow depth of field with a smooth gradient blur, keeping the immediate surrounding sharp while distant elements fade away gracefully.',
|
|
386
|
+
'Subtle background dimming and soft focus, naturally drawing the eye strictly to the brightly illuminated jewelry.',
|
|
387
|
+
'Cinematic depth with gentle bokeh, ensuring the jewelry pops against a softly suggested, atmospheric environment.',
|
|
388
|
+
'Elegant lens blur on the background elements, retaining the mood and vibe of the setting without sharp distracting details.'
|
|
389
|
+
];
|
|
390
|
+
export const getRandomBackgroundTreatment = () => BACKGROUND_TREATMENT_POOL[Math.floor(Math.random() * BACKGROUND_TREATMENT_POOL.length)];
|
|
391
|
+
export const getRandomBlazerValue = () => {
|
|
392
|
+
const fits = ['sharp, tailored fitted', 'tailored oversized'];
|
|
393
|
+
const inners = [
|
|
394
|
+
'a luxury silk camisole in a neutral tone',
|
|
395
|
+
'a crisp white collared shirt, buttoned up',
|
|
396
|
+
'a sophisticated high-neck silk blouse',
|
|
397
|
+
'a minimalist ribbed knit top',
|
|
398
|
+
'a delicate lace-trimmed camisole'
|
|
399
|
+
];
|
|
400
|
+
const fit = fits[Math.floor(Math.random() * fits.length)];
|
|
401
|
+
const inner = inners[Math.floor(Math.random() * inners.length)];
|
|
402
|
+
return `wearing a ${fit} blazer over ${inner}. Confident, modern business-chic aesthetic`;
|
|
403
|
+
};
|
|
404
|
+
export const getRandomBackgroundValue = (typeId, defaultValue) => {
|
|
405
|
+
switch (typeId) {
|
|
406
|
+
case 'interior':
|
|
407
|
+
return LUXURY_INTERIOR_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_POOL.length)];
|
|
408
|
+
case 'studio':
|
|
409
|
+
return STUDIO_FLAT_POOL[Math.floor(Math.random() * STUDIO_FLAT_POOL.length)];
|
|
410
|
+
case 'exterior':
|
|
411
|
+
return OUTDOOR_POOL[Math.floor(Math.random() * OUTDOOR_POOL.length)];
|
|
412
|
+
case 'texture':
|
|
413
|
+
return MACRO_TEXTURE_POOL[Math.floor(Math.random() * MACRO_TEXTURE_POOL.length)];
|
|
414
|
+
default:
|
|
415
|
+
return defaultValue;
|
|
416
|
+
}
|
|
417
|
+
};
|
|
308
418
|
export const getRandomLuxuryInterior = () => LUXURY_INTERIOR_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_POOL.length)];
|
|
309
419
|
export const BACKGROUND_TYPES = [
|
|
310
420
|
{ id: 'studio', name: 'Studio Flat', value: 'clean professional studio background, seamless infinity curve, minimal distractions', visualImage: '/studio_flat.png' },
|
|
@@ -317,6 +427,61 @@ export const VIBES = [
|
|
|
317
427
|
{ id: 'moody_chic', name: 'Moody Chic', value: 'dramatic shadows, high contrast, moody cinematic lighting, vogue editorial style, sharp focus', visualImage: '/moody_chic.png' },
|
|
318
428
|
{ id: 'clean_minimal', name: 'Clean Minimal', value: 'bright evenly lit, soft shadows, airy, scandinavian minimalism, shot on 50mm lens', visualImage: '/clean_minimal.png' },
|
|
319
429
|
{ id: 'romantic_soft', name: 'Romantic', value: 'soft natural focus, pastel tones, window light, feminine and delicate, shallow depth of field, f/1.8', visualImage: '/romantic.png' },
|
|
430
|
+
{ id: 'high_fashion_flash', name: 'Editorial Flash', value: 'hard direct flash, sharp highlights, distinct shadows, high-energy fashion editorial, 90s aesthetic, sharp micro-contrast', visualImage: '/editorial_flash.jpg' },
|
|
431
|
+
{ id: 'analog_dream', name: 'Analog Dream', value: 'shot on vintage 35mm film, subtle light leaks, rich saturated colors, nostalgic soft focus, Kodak Ektar 100, authentic film grain', visualImage: '/analog_dream.jpg' },
|
|
432
|
+
{ id: 'midnight_glamour', name: 'Midnight Glamour', value: 'deep moody atmosphere, rich jewel tones, single dramatic spotlight cutting through darkness, luxurious midnight aesthetic, sharp reflections on metal', visualImage: '/midnight_glamour.jpg' },
|
|
433
|
+
{ id: 'editorial_daylight', name: 'Sun-Drenched', value: 'bright diffused daylight, overexposed highlights, soft dreamy aesthetic, high-end magazine cover style, sun-drenched', visualImage: '/sun_drenched.jpg' },
|
|
434
|
+
];
|
|
435
|
+
export const PHOTOGRAPHY_STYLES = [
|
|
436
|
+
{
|
|
437
|
+
id: 'ethereal_dream',
|
|
438
|
+
name: 'Ethereal Dream',
|
|
439
|
+
description: 'Soft-focus, painterly textures, and haunting, impressionist tones.',
|
|
440
|
+
value: 'painterly surrealist photography, heavy soft-focus, blurred motion, desaturated impressionist palette, glowing highlights, inspired by Sarah Moon and Paolo Roversi',
|
|
441
|
+
visualColor: 'linear-gradient(135deg, #d3c4be, #8e7d76)'
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
id: 'heritage_luxury',
|
|
445
|
+
name: 'High-Flash Raw',
|
|
446
|
+
description: 'Direct flash, punchy highlights, gritty editorial energy.',
|
|
447
|
+
value: 'direct flash photography, high-contrast punch, bold specular highlights, gritty editorial realism, inspired by Juergen Teller and Terry Richardson',
|
|
448
|
+
visualColor: 'linear-gradient(135deg, #f1f0ef, #6e6a67)'
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
id: 'modern_edge',
|
|
452
|
+
name: 'Modern Edge',
|
|
453
|
+
description: 'Bolder contrast, sharper angles, fashion-forward tension.',
|
|
454
|
+
value: 'modern edgy fashion photography, bold contrast, crisp angles, graphic shadows, assertive composition, inspired by Helmut Newton and Steven Klein',
|
|
455
|
+
visualColor: 'linear-gradient(135deg, #2d2f35, #6f7a88)'
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
id: 'soft_natural',
|
|
459
|
+
name: 'Chromatic Gel',
|
|
460
|
+
description: 'Color-gel lighting, bold casts, nightclub editorial edge.',
|
|
461
|
+
value: 'color gel lighting, bold chromatic casts, magenta and cyan accents, high-energy fashion editorial, inspired by David LaChapelle and Nadia Lee Cohen',
|
|
462
|
+
visualColor: 'linear-gradient(135deg, #351b5e, #8aa6ff)'
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
id: 'acid_lofi',
|
|
466
|
+
name: 'Acid Infrared',
|
|
467
|
+
description: 'Extreme false-color shifts, thermal aesthetics, and psychedelic saturation.',
|
|
468
|
+
value: 'false-color infrared photography, Aerochrome style, vivid hot pinks and deep teals, high grain, surreal alien atmosphere, inspired by Richard Mosse',
|
|
469
|
+
visualColor: 'linear-gradient(135deg, #ff007f, #00ffcc)'
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
id: 'cyber_grit',
|
|
473
|
+
name: 'Cyber-Grit Noir',
|
|
474
|
+
description: 'High-contrast grain, light trails, and chaotic digital distortion.',
|
|
475
|
+
value: 'experimental long exposure, aggressive film grain, light trailing, high-contrast black and white, digital glitch artifacts, inspired by Daido Moriyama',
|
|
476
|
+
visualColor: 'linear-gradient(135deg, #000000, #4a4a4a)'
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
id: 'cinematic_editorial',
|
|
480
|
+
name: 'Cinematic Editorial',
|
|
481
|
+
description: 'Filmic tone, rich depth, dramatic direction.',
|
|
482
|
+
value: 'cinematic editorial photography, rich tonal depth, filmic color grading, anamorphic lens flares, narrative storytelling, dramatic but refined, inspired by Nick Knight and Craig McDean',
|
|
483
|
+
visualColor: 'linear-gradient(135deg, #1b1a1f, #394152)'
|
|
484
|
+
}
|
|
320
485
|
];
|
|
321
486
|
export const OCCASIONS = [
|
|
322
487
|
{
|
|
@@ -324,13 +489,9 @@ export const OCCASIONS = [
|
|
|
324
489
|
name: 'Moroccan Wedding',
|
|
325
490
|
icon: '👰',
|
|
326
491
|
description: 'Traditional Moroccan wedding luxury aesthetic with rich cultural details',
|
|
327
|
-
autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
|
|
328
492
|
promptDetails: {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
colorPalette: 'Rich jewel tones - deep crimson red, emerald green, royal purple, and abundant gold accents. Ivory and cream for contrast. Warm, luxurious color temperature',
|
|
332
|
-
culturalElements: 'Subtle traditional Moroccan bridal elements may include: intricate henna patterns visible on hands, traditional gold jewelry aesthetic, rich embroidered fabrics, Moroccan rose petals, ornate brass serving pieces in blurred background',
|
|
333
|
-
styling: 'Model styled as an elegant Moroccan bride or guest. Hair in traditional styling, makeup elegant and defined, traditional gold jewelry aesthetic. If visible, clothing suggests luxury kaftan or takchita with gold embroidery and embellishments'
|
|
493
|
+
culturalElements: 'Subtle Moroccan bridal motifs: delicate henna patterns (only if hands appear), refined zellige or arabesque patterns, ornate brass accents, rich embroidered textiles.',
|
|
494
|
+
decor: 'Soft lantern glow, silk cushions, carved wood accents, warm metallic details.'
|
|
334
495
|
}
|
|
335
496
|
},
|
|
336
497
|
{
|
|
@@ -338,13 +499,9 @@ export const OCCASIONS = [
|
|
|
338
499
|
name: 'Eid al-Fitr',
|
|
339
500
|
icon: '🌙',
|
|
340
501
|
description: 'Elegant celebration of Eid al-Fitr with festive, joyful atmosphere',
|
|
341
|
-
autoConfig: { vibe: 'clean_minimal', background: 'emerald_green', backgroundType: 'luxury_interior' },
|
|
342
502
|
promptDetails: {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
colorPalette: 'Emerald green, gold, white, and soft pastels. Fresh and luminous tones',
|
|
346
|
-
culturalElements: 'Subtle festive Eid elements - elegant Islamic geometric patterns, fresh flowers, refined decorative details',
|
|
347
|
-
styling: 'Model styled in celebration attire with polished, festive makeup and elegant hair. Joyful, refined aesthetic'
|
|
503
|
+
culturalElements: 'Elegant Islamic geometric motifs, refined festive cues, fresh florals in a celebratory spirit.',
|
|
504
|
+
decor: 'Subtle lantern accents, delicate florals, soft celebratory details.'
|
|
348
505
|
}
|
|
349
506
|
},
|
|
350
507
|
{
|
|
@@ -352,13 +509,9 @@ export const OCCASIONS = [
|
|
|
352
509
|
name: 'Eid al-Adha',
|
|
353
510
|
icon: '🕌',
|
|
354
511
|
description: 'Sophisticated Eid al-Adha celebration with refined elegance',
|
|
355
|
-
autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
|
|
356
512
|
promptDetails: {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
colorPalette: 'Rich gold, burgundy, deep greens, cream. Warm, sophisticated tones',
|
|
360
|
-
culturalElements: 'Elegant cultural references - refined Islamic art patterns, luxury fabrics, traditional elements in modern interpretation',
|
|
361
|
-
styling: 'Model styled with sophisticated elegance. Rich makeup, refined styling, traditional yet contemporary aesthetic'
|
|
513
|
+
culturalElements: 'Refined Islamic art motifs, luxury fabrics, dignified celebratory cues in a modern interpretation.',
|
|
514
|
+
decor: 'Warm golden accents, elegant textiles, understated celebratory details.'
|
|
362
515
|
}
|
|
363
516
|
},
|
|
364
517
|
{
|
|
@@ -366,13 +519,9 @@ export const OCCASIONS = [
|
|
|
366
519
|
name: 'Henna Night',
|
|
367
520
|
icon: '🎨',
|
|
368
521
|
description: 'Traditional Moroccan henna ceremony with intricate cultural elements',
|
|
369
|
-
autoConfig: { vibe: 'golden_hour', background: 'terracotta', backgroundType: 'luxury_interior' },
|
|
370
522
|
promptDetails: {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
colorPalette: 'Warm terracotta, deep orange, burgundy, gold. Earthy and rich with golden accents',
|
|
374
|
-
culturalElements: 'Intricate henna patterns prominently visible on hands if showing hands. Traditional lanterns, Moroccan textiles, ornate serving pieces. Rose water ambiance',
|
|
375
|
-
styling: 'Model styled as if at traditional henna ceremony. Elaborate henna designs, traditional jewelry, warm glowing makeup, cultural celebration aesthetic'
|
|
523
|
+
culturalElements: 'Intricate henna motifs (only if hands appear), Moroccan lanterns, traditional textiles, ceremonial elegance.',
|
|
524
|
+
decor: 'Lantern light, embroidered cushions, ornate trays, rose-water ceremony cues.'
|
|
376
525
|
}
|
|
377
526
|
},
|
|
378
527
|
{
|
|
@@ -380,13 +529,9 @@ export const OCCASIONS = [
|
|
|
380
529
|
name: 'Ramadan',
|
|
381
530
|
icon: '⭐',
|
|
382
531
|
description: 'Serene Ramadan atmosphere with spiritual elegance',
|
|
383
|
-
autoConfig: { vibe: 'moody_chic', background: 'midnight_blue', backgroundType: 'luxury_interior' },
|
|
384
532
|
promptDetails: {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
colorPalette: 'Deep midnight blue, silver, soft gold, white. Cool, peaceful tones with metallic accents',
|
|
388
|
-
culturalElements: 'Subtle Ramadan elements - soft lantern light, crescent moon motifs, dates, refined Islamic patterns, peaceful spiritual aesthetic',
|
|
389
|
-
styling: 'Model styled with serene, natural elegance. Soft, glowing makeup. Modest, refined aesthetic'
|
|
533
|
+
culturalElements: 'Soft lantern glow, crescent motifs, dates, refined Islamic patterns, peaceful spiritual cues.',
|
|
534
|
+
decor: 'Subtle lanterns, quiet reflective accents, minimal ceremonial details.'
|
|
390
535
|
}
|
|
391
536
|
},
|
|
392
537
|
{
|
|
@@ -394,13 +539,9 @@ export const OCCASIONS = [
|
|
|
394
539
|
name: "Valentine's Day",
|
|
395
540
|
icon: '❤️',
|
|
396
541
|
description: 'Romantic ambiance with rose petals and soft candlelight',
|
|
397
|
-
autoConfig: { vibe: 'romantic_soft', background: 'blush_pink', backgroundType: 'studio' },
|
|
398
542
|
promptDetails: {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
colorPalette: 'Blush pink, soft red, cream, rose gold. Warm, romantic, delicate tones',
|
|
402
|
-
culturalElements: 'Rose petals scattered elegantly, soft romantic florals, intimate candlelight glow, love celebration aesthetic',
|
|
403
|
-
styling: 'Model styled with romantic, soft makeup. Natural, glowing skin. Dreamy, feminine aesthetic'
|
|
543
|
+
culturalElements: 'Rose petals, soft romantic florals, gentle candlelight glow, love-celebration cues.',
|
|
544
|
+
decor: 'Subtle candles, delicate petals, soft romantic textile accents.'
|
|
404
545
|
}
|
|
405
546
|
},
|
|
406
547
|
{
|
|
@@ -408,13 +549,9 @@ export const OCCASIONS = [
|
|
|
408
549
|
name: "Mother's Day",
|
|
409
550
|
icon: '🌸',
|
|
410
551
|
description: 'Warm, tender atmosphere celebrating maternal love',
|
|
411
|
-
autoConfig: { vibe: 'golden_hour', background: 'soft_lavender', backgroundType: 'studio' },
|
|
412
552
|
promptDetails: {
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
colorPalette: 'Soft lavender, warm peach, cream, gentle pastels. Warm, comforting tones',
|
|
416
|
-
culturalElements: 'Delicate spring flowers, soft fabrics, warm comforting aesthetic, celebration of motherhood',
|
|
417
|
-
styling: 'Model styled with warm, natural elegance. Soft makeup, genuine warmth. Maternal grace'
|
|
553
|
+
culturalElements: 'Delicate spring flowers, soft fabrics, warm and caring celebratory cues.',
|
|
554
|
+
decor: 'Gentle florals, light ribbons, comforting soft accents.'
|
|
418
555
|
}
|
|
419
556
|
},
|
|
420
557
|
{
|
|
@@ -422,13 +559,9 @@ export const OCCASIONS = [
|
|
|
422
559
|
name: 'Birthday',
|
|
423
560
|
icon: '🎂',
|
|
424
561
|
description: 'Celebratory and joyful setting with festive elements',
|
|
425
|
-
autoConfig: { vibe: 'clean_minimal', background: 'champagne_gold', backgroundType: 'studio' },
|
|
426
562
|
promptDetails: {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
colorPalette: 'Champagne gold, white, soft pastels, metallic accents. Festive, bright tones',
|
|
430
|
-
culturalElements: 'Elegant celebration elements, refined party aesthetic, joyful festive details',
|
|
431
|
-
styling: 'Model styled for celebration with polished, festive makeup. Joyful, confident aesthetic'
|
|
563
|
+
culturalElements: 'Refined celebration cues, subtle party accents, joyful festive details.',
|
|
564
|
+
decor: 'Minimal celebratory decor, soft ribbons or confetti bokeh, tasteful party touches.'
|
|
432
565
|
}
|
|
433
566
|
},
|
|
434
567
|
{
|
|
@@ -436,13 +569,9 @@ export const OCCASIONS = [
|
|
|
436
569
|
name: 'Anniversary',
|
|
437
570
|
icon: '💍',
|
|
438
571
|
description: 'Elegant, timeless aesthetic for commemorating special milestones',
|
|
439
|
-
autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
|
|
440
572
|
promptDetails: {
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
colorPalette: 'Rich gold, champagne, cream, deep burgundy. Luxurious, timeless tones',
|
|
444
|
-
culturalElements: 'Elegant romantic details, luxurious fabrics, refined celebration aesthetic, timeless sophistication',
|
|
445
|
-
styling: 'Model styled with timeless elegance. Classic, sophisticated makeup. Enduring beauty'
|
|
573
|
+
culturalElements: 'Elegant romantic details, luxurious fabrics, refined celebration cues, timeless sophistication.',
|
|
574
|
+
decor: 'Soft candlelight accents, understated florals, quiet romantic touches.'
|
|
446
575
|
}
|
|
447
576
|
},
|
|
448
577
|
{
|
|
@@ -450,13 +579,9 @@ export const OCCASIONS = [
|
|
|
450
579
|
name: 'Graduation',
|
|
451
580
|
icon: '🎓',
|
|
452
581
|
description: 'Proud and accomplished atmosphere with sophisticated styling',
|
|
453
|
-
autoConfig: { vibe: 'clean_minimal', background: 'white', backgroundType: 'studio' },
|
|
454
582
|
promptDetails: {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
colorPalette: 'Clean white, navy blue, gold accents. Professional, accomplished tones',
|
|
458
|
-
culturalElements: 'Academic achievement aesthetic, professional polish, celebration of success',
|
|
459
|
-
styling: 'Model styled with confident, professional polish. Clean, sophisticated makeup. Achievement glow'
|
|
583
|
+
culturalElements: 'Academic achievement cues, professional polish, celebration of success.',
|
|
584
|
+
decor: 'Subtle graduation motifs (cap/tassel suggested in decor only), understated celebratory details.'
|
|
460
585
|
}
|
|
461
586
|
},
|
|
462
587
|
{
|
|
@@ -464,13 +589,9 @@ export const OCCASIONS = [
|
|
|
464
589
|
name: 'Christmas',
|
|
465
590
|
icon: '🎄',
|
|
466
591
|
description: 'Festive holiday spirit with elegant seasonal decorations',
|
|
467
|
-
autoConfig: { vibe: 'golden_hour', background: 'forest_green', backgroundType: 'luxury_interior' },
|
|
468
592
|
promptDetails: {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
colorPalette: 'Deep forest green, rich red, gold, cream. Classic holiday luxury tones',
|
|
472
|
-
culturalElements: 'Elegant holiday elements - pine branches, warm candlelight, luxurious seasonal decor, festive sophistication',
|
|
473
|
-
styling: 'Model styled with festive elegance. Rich, warm makeup. Holiday glamour'
|
|
593
|
+
culturalElements: 'Pine greenery, warm candlelight, refined holiday accents, festive sophistication.',
|
|
594
|
+
decor: 'Subtle evergreen boughs, soft twinkle-light bokeh, understated holiday touches.'
|
|
474
595
|
}
|
|
475
596
|
},
|
|
476
597
|
{
|
|
@@ -478,13 +599,9 @@ export const OCCASIONS = [
|
|
|
478
599
|
name: 'New Year',
|
|
479
600
|
icon: '✨',
|
|
480
601
|
description: 'Glamorous celebration with sparkle and sophistication',
|
|
481
|
-
autoConfig: { vibe: 'moody_chic', background: 'midnight_blue', backgroundType: 'luxury_interior' },
|
|
482
602
|
promptDetails: {
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
colorPalette: 'Midnight blue, silver, gold, black. Dramatic, sophisticated evening tones',
|
|
486
|
-
culturalElements: 'Elegant evening celebration, sophisticated party aesthetic, champagne glamour, new year sparkle',
|
|
487
|
-
styling: 'Model styled with dramatic evening glamour. Bold, sophisticated makeup. Celebration elegance'
|
|
603
|
+
culturalElements: 'Elegant evening celebration cues, refined party aesthetic, champagne glamour, new-year sparkle.',
|
|
604
|
+
decor: 'Subtle glitter bokeh, minimalist celebratory accents, midnight celebration details.'
|
|
488
605
|
}
|
|
489
606
|
}
|
|
490
607
|
];
|
|
@@ -523,7 +640,6 @@ export const GENERATION_STYLE_POOL = [
|
|
|
523
640
|
"Model interacting with the environment (e.g., leaning against a wall or window), natural vibe.",
|
|
524
641
|
"A 'moment of preparation' look, looking down as if adjusting the clasp or admiring the piece.",
|
|
525
642
|
"Holding a glass or prop near the face, adding lifestyle context without obscuring the jewelry.",
|
|
526
|
-
"Shielding eyes from the 'sun' with a hand, casting interesting shadow patterns on the face.",
|
|
527
643
|
"Resting head on a hand, casual but elegant, creating a relaxed luxury feel.",
|
|
528
644
|
// Avant-Garde & High Fashion
|
|
529
645
|
"An artistic, slightly off-center composition (rule of thirds) for a modern magazine look.",
|