studio-lumiere-cli 0.1.6 → 0.1.8
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 +31 -502
- package/dist/cli.js +56 -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/image/annotate.js +1 -1
- package/dist/image/annotate.js.map +1 -1
- package/dist/image/beforeAfter.d.ts +2 -0
- package/dist/image/beforeAfter.js +234 -0
- package/dist/image/beforeAfter.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/pipelines/generateImages.js +30 -27
- 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/backgrounds.d.ts +1 -0
- package/dist/studio/constants/backgrounds.js +2 -0
- package/dist/studio/constants/backgrounds.js.map +1 -0
- package/dist/studio/constants.d.ts +63 -15
- package/dist/studio/constants.js +512 -166
- package/dist/studio/constants.js.map +1 -1
- package/dist/studio/promptBuilder.d.ts +7 -3
- package/dist/studio/promptBuilder.js +401 -200
- package/dist/studio/promptBuilder.js.map +1 -1
- package/dist/studio/types.d.ts +47 -0
- package/dist/types.d.ts +17 -0
- package/package.json +30 -33
- package/scripts/sync-studio.mjs +16 -16
- package/dist/prompt/buildPrompt.d.ts +0 -4
- package/dist/prompt/buildPrompt.js +0 -322
- package/dist/prompt/buildPrompt.js.map +0 -1
package/dist/studio/constants.js
CHANGED
|
@@ -2,7 +2,19 @@ export const DEFAULT_IMAGE_COUNT = 4;
|
|
|
2
2
|
export const UPSCALE_CREDIT_COST = 5;
|
|
3
3
|
export const REFINE_CREDIT_COST = 5;
|
|
4
4
|
export const GENERATE_CREDIT_COST = 5;
|
|
5
|
-
export const VIDEO_GENERATION_CREDIT_COST =
|
|
5
|
+
export const VIDEO_GENERATION_CREDIT_COST = 25;
|
|
6
|
+
export const VIDEO_DURATION_OPTIONS = [
|
|
7
|
+
{ seconds: 7, label: '7 sec', credits: 35 },
|
|
8
|
+
];
|
|
9
|
+
export const getVideoCreditCost = (seconds = 7) => {
|
|
10
|
+
if (seconds === 7)
|
|
11
|
+
return 35;
|
|
12
|
+
return 35;
|
|
13
|
+
};
|
|
14
|
+
export const MAX_USER_BACKGROUNDS = 12;
|
|
15
|
+
export const MAX_USER_PALETTE_COLORS = 12;
|
|
16
|
+
export const MAX_USER_GUIDELINE_ITEMS = 12;
|
|
17
|
+
export const MAX_GUIDELINE_TEXT_CHARS = 400;
|
|
6
18
|
// Video Generation Configuration
|
|
7
19
|
export const VIDEO_GENERATION_ENABLED = true;
|
|
8
20
|
export const VIDEO_ENABLED_TEMPLATES = [
|
|
@@ -11,11 +23,33 @@ export const VIDEO_ENABLED_TEMPLATES = [
|
|
|
11
23
|
'ear_model',
|
|
12
24
|
'flatlay_creative',
|
|
13
25
|
'floating_minimal',
|
|
26
|
+
'solid_color_studio',
|
|
14
27
|
'half_body_muse'
|
|
15
28
|
];
|
|
16
29
|
export const isVideoEnabledTemplate = (templateId) => {
|
|
17
30
|
return VIDEO_GENERATION_ENABLED && VIDEO_ENABLED_TEMPLATES.includes(templateId);
|
|
18
31
|
};
|
|
32
|
+
export const VIDEO_PRESET_ENABLED_TEMPLATES = [
|
|
33
|
+
'flatlay_creative',
|
|
34
|
+
'floating_minimal',
|
|
35
|
+
'solid_color_studio'
|
|
36
|
+
];
|
|
37
|
+
export const isVideoPresetEnabledTemplate = (templateId) => {
|
|
38
|
+
return VIDEO_PRESET_ENABLED_TEMPLATES.includes(templateId);
|
|
39
|
+
};
|
|
40
|
+
export const VIDEO_STYLE_OPTIONS = [
|
|
41
|
+
{ id: 'directors_cut', name: "Director's Cut", description: 'AI-directed cinematic motion' },
|
|
42
|
+
{ id: 'zoom', name: 'Zoom', description: 'Slow cinematic zoom-in/zoom-out' },
|
|
43
|
+
{ id: 'pan', name: 'Pan', description: 'Gentle horizontal camera move' },
|
|
44
|
+
{ id: 'tilt', name: 'Tilt', description: 'Gentle vertical camera move' },
|
|
45
|
+
];
|
|
46
|
+
//The camera isrotate, orbit, pan, or tilt. No yaw, no roll, no parallax rotation — a straight axial push-in only.
|
|
47
|
+
export const VIDEO_STYLE_PROMPTS = {
|
|
48
|
+
//zoom: 'Macro shot of a jewelry piece. Camera makes a slow, gentle slow push-in / zoom-in toward the jewelry, followed by a gentle slow pull-back / zoom-out. Straight axial push-in with very small pan. The jewelry remains still and centered. Motion is smooth, refined, cinematic with soft ease-in/out. DO NOT ROTATE THE JEWELRY!! ',
|
|
49
|
+
zoom: 'Macro shot of a jewerly piece. The jewelry is static and remains perfectly still. Camera slowly zooms in. 4K, professional jewelry photography.',
|
|
50
|
+
pan: 'Camera makes a slow HORIZONTAL pan across the jewelry. The jewelry remains still; the camera glides laterally with subtle parallax. Movement is elegant, cinematic, and intentionally styled (not mechanical). DO NOT ROTATE THE JEWELRY!! ',
|
|
51
|
+
tilt: 'Camera makes a slow VERTICAL tilt across the jewelry. The jewelry remains still; the camera glides vertically with a graceful, cinematic motion. Movement is elegant, stylized, and deliberate. DO NOT ROTATE THE JEWELRY!! '
|
|
52
|
+
};
|
|
19
53
|
// Muse Configuration
|
|
20
54
|
export const MUSE_ENABLED_TEMPLATES = ['half_body_muse'];
|
|
21
55
|
export const MUSE_GENERATION_CREDIT_COST = 5; // Cost when generating WITH a Muse
|
|
@@ -23,6 +57,8 @@ export const MUSE_BATCH_SIZE = 3; // Variations generated per batch
|
|
|
23
57
|
export const MUSE_BATCH_CREDIT_COST = GENERATE_CREDIT_COST * MUSE_BATCH_SIZE; // 15 credits per batch
|
|
24
58
|
export const REQUIRED_MUSE_VARIATIONS = 3; // Exact number needed to finalize a Muse
|
|
25
59
|
export const MAX_MUSES_PER_USER = 3;
|
|
60
|
+
export const JEWELRY_MACRO_QUALITY_PROMPT = 'Professional luxury jewelry macro photography. The jewelry is perfectly sharp and in primary focus. Diamonds are crystal clear with precise brilliant-cut faceting, razor-sharp facet junctions, perfect symmetry, and mirror-polished surfaces. High brilliance, fire and scintillation with realistic spectral dispersion. Ultra-detailed gemstone rendering with crisp reflections and pristine clarity. Background remains softly blurred with shallow depth of field.';
|
|
61
|
+
export const JEWELRY_MACRO_QUALITY_PROMPT_2 = 'The jewelry is the dominant focal point occupying the center of the frame, perfectly sharp and highly detailed.';
|
|
26
62
|
export const isMuseEnabledTemplate = (templateId) => {
|
|
27
63
|
return MUSE_ENABLED_TEMPLATES.includes(templateId);
|
|
28
64
|
};
|
|
@@ -40,7 +76,8 @@ export const TEMPLATES = [
|
|
|
40
76
|
{ id: 'nail_french', name: 'French Manicure', value: 'classic french tip manicure', visualColor: '#FDF5E6' },
|
|
41
77
|
{ id: 'nail_natural', name: 'Natural & Clean', value: 'clean, natural unpainted nails with a clear healthy coat', visualColor: '#F3EFE0' },
|
|
42
78
|
{ id: 'nail_dark', name: 'Noir / Dark', value: 'chic dark black or burgundy nail polish', visualColor: '#1A1A1A' }
|
|
43
|
-
]
|
|
79
|
+
],
|
|
80
|
+
hasModel: true
|
|
44
81
|
},
|
|
45
82
|
{
|
|
46
83
|
id: 'neck_model',
|
|
@@ -60,10 +97,11 @@ export const TEMPLATES = [
|
|
|
60
97
|
tertiaryCustomizationOptions: [
|
|
61
98
|
{ id: 'makeup_none', name: 'Bare / Natural', value: 'completely bare faced, no makeup, fresh natural skin', visualColor: '#FFF5EE' },
|
|
62
99
|
{ id: 'makeup_minimal', name: 'Minimal', value: 'subtle natural makeup with light foundation and soft neutral tones', visualColor: '#F5E6D3' },
|
|
63
|
-
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
|
|
100
|
+
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated, beauty-grade skin finish with refined retouching, smooth even complexion, minimal blemishes, pores noticeably reduced but still realistic (no plastic skin)', visualColor: '#E8C4A8' },
|
|
64
101
|
{ id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
|
|
65
102
|
{ id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
|
|
66
|
-
]
|
|
103
|
+
],
|
|
104
|
+
hasModel: true
|
|
67
105
|
},
|
|
68
106
|
{
|
|
69
107
|
id: 'ear_model',
|
|
@@ -82,10 +120,11 @@ export const TEMPLATES = [
|
|
|
82
120
|
tertiaryCustomizationOptions: [
|
|
83
121
|
{ id: 'makeup_none', name: 'Bare / Natural', value: 'completely bare faced, no makeup, fresh natural skin', visualColor: '#FFF5EE' },
|
|
84
122
|
{ id: 'makeup_minimal', name: 'Minimal', value: 'subtle natural makeup with light foundation and soft neutral tones', visualColor: '#F5E6D3' },
|
|
85
|
-
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
|
|
123
|
+
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated, beauty-grade skin finish with refined retouching, smooth even complexion, minimal blemishes, pores noticeably reduced but still realistic (no plastic skin)', visualColor: '#E8C4A8' },
|
|
86
124
|
{ id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
|
|
87
125
|
{ id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
|
|
88
|
-
]
|
|
126
|
+
],
|
|
127
|
+
hasModel: true
|
|
89
128
|
},
|
|
90
129
|
{
|
|
91
130
|
id: 'flatlay_creative',
|
|
@@ -93,16 +132,47 @@ export const TEMPLATES = [
|
|
|
93
132
|
description: 'Artistic arrangement on a textured surface, non-model.',
|
|
94
133
|
visualUrl: '/template_flatlay.png',
|
|
95
134
|
basePrompt: 'A high-end still life product photograph of the specific jewelry piece(s) shown. Artistically composed — may be arranged on a textured surface, displayed on a geometric pedestal or riser, or elevated on sculptural props. Sharp focus, professional studio lighting, natural shadows.',
|
|
96
|
-
customizationLabel: '
|
|
135
|
+
customizationLabel: 'Material of the Display',
|
|
97
136
|
customizationOptions: [
|
|
98
|
-
{ id: 'surf_marble', name: 'White Marble', value: '
|
|
99
|
-
{ id: 'surf_stone', name: 'Dark Slate', value: '
|
|
100
|
-
{ id: 'surf_velvet', name: 'Beige Velvet', value: '
|
|
101
|
-
{ id: 'surf_wood', name: 'Aged Wood', value: '
|
|
102
|
-
{ id: 'surf_sand', name: 'Fine Sand', value: '
|
|
103
|
-
{ id: '
|
|
104
|
-
{ id: '
|
|
105
|
-
|
|
137
|
+
{ id: 'surf_marble', name: 'White Marble', value: 'luxurious white carrara marble surface', visualColor: '#F0F0F0' },
|
|
138
|
+
{ id: 'surf_stone', name: 'Dark Slate', value: 'textured dark grey slate stone surface', visualColor: '#2F4F4F' },
|
|
139
|
+
{ id: 'surf_velvet', name: 'Beige Velvet', value: 'oft beige velvet fabric', visualColor: '#E3CDB8' },
|
|
140
|
+
{ id: 'surf_wood', name: 'Aged Wood', value: 'rich, dark aged mahogany wood', visualColor: '#5C4033' },
|
|
141
|
+
{ id: 'surf_sand', name: 'Fine Sand', value: 'rippled, fine white sand', visualColor: '#F5F5DC' },
|
|
142
|
+
{ id: 'surf_ceramic', name: 'Ceramic', value: 'smooth matte ceramic with subtle handcrafted texture', visualColor: '#E6E1D8' },
|
|
143
|
+
{ id: 'surf_travertine', name: 'Travertine', value: 'warm ivory travertine stone with subtle pitted texture', visualColor: '#E9DFC9' },
|
|
144
|
+
{ id: 'surf_obsidian', name: 'Black Obsidian', value: 'glossy black obsidian with deep reflective sheen', visualColor: '#0F0F10' },
|
|
145
|
+
{ id: 'surf_mirrored', name: 'Mirrored Glass', value: 'clean mirrored glass with soft reflections', visualColor: '#D6DDE5' },
|
|
146
|
+
{ id: 'surf_brushed_metal', name: 'Brushed Metal', value: 'brushed champagne metal surface fine linear texture', visualColor: '#C7B9A5' },
|
|
147
|
+
{ id: 'surf_frosted_acrylic', name: 'Frosted Acrylic', value: 'frosted acrylic with a soft diffused, milky translucence', visualColor: '#E8EDF0' },
|
|
148
|
+
{ id: 'surf_stone_plain', name: 'Stone', value: 'smooth natural stone with subtle mineral texture', visualColor: '#8B8680' }
|
|
149
|
+
],
|
|
150
|
+
secondaryCustomizationLabel: 'Display',
|
|
151
|
+
secondaryCustomizationOptions: [
|
|
152
|
+
{ id: 'display_flat', name: 'Flat Display', value: 'jewelry piece(s) arranged directly on the surface with no additional structure', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="14" y1="40" x2="50" y2="40"/><circle cx="32" cy="32" r="6"/></g></svg>' },
|
|
153
|
+
{ id: 'display_geometric_pedestal', name: 'Geometric Pedestal', value: 'jewelry piece(s) displayed on top of a minimal matte geometric pedestal or cube, architectural and sculptural', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="12" y="36" width="40" height="12" rx="2"/><path d="M20 36 L28 22 H36 L44 36 Z"/><rect x="24" y="14" width="16" height="6" rx="1"/></g></svg>' },
|
|
154
|
+
{ id: 'display_minimal_plinth', name: 'Minimal Plinth', value: 'jewelry piece(s) centered on top of a minimal plinth or column, refined and sculptural', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="18" y="38" width="28" height="10" rx="2"/><rect x="24" y="18" width="16" height="20" rx="2"/><line x1="20" y1="50" x2="44" y2="50"/></g></svg>' },
|
|
155
|
+
{ id: 'display_cylindrical_column', name: 'Cylindrical Column', value: 'jewelry piece(s) elevated on top of a smooth cylindrical column with clean edges', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="32" cy="20" rx="12" ry="4"/><rect x="20" y="20" width="24" height="22" rx="2"/><ellipse cx="32" cy="42" rx="12" ry="4"/></g></svg>' },
|
|
156
|
+
{ id: 'display_stepped_blocks', name: 'Stepped Blocks', value: 'jewelry piece(s) arranged on top of stepped blocks at staggered heights', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="14" y="38" width="20" height="10" rx="2"/><rect x="30" y="30" width="20" height="18" rx="2"/><rect x="24" y="20" width="16" height="10" rx="2"/></g></svg>' },
|
|
157
|
+
{ id: 'display_stone_fragment', name: 'Fragment Stand', value: 'jewelry piece(s) displayed on an irregular fragment, organic contrast to polished metal', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 42 L22 26 L36 22 L50 30 L44 46 Z"/><circle cx="34" cy="20" r="4"/></g></svg>' },
|
|
158
|
+
{ id: 'display_glass_riser', name: 'Riser', value: 'jewelry piece(s) elevated on top of a sleek riser form of the specified material with clean edges and a light, floating feel', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="18" y="34" width="28" height="10" rx="2" stroke-dasharray="3 3"/><rect x="22" y="22" width="20" height="10" rx="2"/><circle cx="32" cy="16" r="3"/></g></svg>' },
|
|
159
|
+
{ id: 'display_acrylic_cube', name: 'Cube', value: 'jewelry piece(s) displayed top of a cube form with soft refractions and crisp geometry', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="18" y="26" width="24" height="22" rx="2"/><path d="M18 26 L26 18 H50 V40 L42 48"/><circle cx="32" cy="20" r="3"/></g></svg>' },
|
|
160
|
+
{ id: 'display_metal_pedestal', name: 'Pedestal', value: 'jewelry piece(s) presented on a sctop of ulptural pedestal form with fine linear texture and precise edges', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="16" y="36" width="32" height="12" rx="2"/><line x1="20" y1="40" x2="44" y2="40"/><line x1="20" y1="44" x2="44" y2="44"/><rect x="24" y="18" width="16" height="12" rx="2"/></g></svg>' },
|
|
161
|
+
{ id: 'display_single_slab', name: 'Single Slab', value: 'jewelry piece(s) arranged on a single clean slab with crisp edges and minimal layering', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="14" y="36" width="36" height="12" rx="2"/><circle cx="32" cy="30" r="4"/></g></svg>' },
|
|
162
|
+
{ id: 'display_layered_slabs', name: 'Layered Slabs', value: 'jewelry piece(s) staged on top of layered slabs for a tiered architectural look', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="14" y="38" width="36" height="8" rx="2"/><rect x="20" y="28" width="30" height="8" rx="2"/><rect x="26" y="18" width="24" height="8" rx="2"/></g></svg>' },
|
|
163
|
+
{ id: 'display_arc_stand', name: 'Arc Stand', value: 'jewelry piece(s) framed by a minimal arc stand, modern and sculptural', visualColor: '#F7F2EA', visualSvg: '<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none"><rect width="64" height="64" rx="12" fill="#F7F2EA"/><g stroke="#B8B1A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 44 Q32 20 46 44"/><line x1="18" y1="44" x2="46" y2="44"/><circle cx="32" cy="26" r="3"/></g></svg>' }
|
|
164
|
+
],
|
|
165
|
+
tertiaryCustomizationLabel: 'Camera Position',
|
|
166
|
+
tertiaryCustomizationOptions: [
|
|
167
|
+
{ id: 'camera_overhead', name: 'Overhead', value: 'overhead top-down camera position, the camera is *ABOVE* the jewelry', visualColor: '#E6DED1' },
|
|
168
|
+
{ id: 'camera_front', name: 'Front', value: 'front-facing camera position at a level angle', visualColor: '#DAD1C3' }
|
|
169
|
+
],
|
|
170
|
+
quaternaryCustomizationLabel: 'Material State',
|
|
171
|
+
quaternaryCustomizationOptions: [
|
|
172
|
+
{ id: 'material_state_pristine', name: 'Pristine', value: 'pristine, clean, refined material finish with even coloration and no visible wear, stains, or discoloration', visualColor: '#EFE7DD' },
|
|
173
|
+
{ id: 'material_state_aged', name: 'Aged Patina', value: 'intentionally weathered, time-worn surface finish with subtle wear, micro-pitting, tiny inclusions, and softly uneven coloration; aged but refined; apply to the surface/background material only, keep the jewelry pristine', visualColor: '#B9A899' }
|
|
174
|
+
],
|
|
175
|
+
hasModel: false
|
|
106
176
|
},
|
|
107
177
|
{
|
|
108
178
|
id: 'floating_minimal',
|
|
@@ -116,22 +186,27 @@ export const TEMPLATES = [
|
|
|
116
186
|
{ id: 'light_hard', name: 'Hard Contrast', value: 'hard, dramatic direct lighting with sharp shadows', visualColor: '#000000' },
|
|
117
187
|
{ id: 'light_warm', name: 'Golden Glow', value: 'warm, golden sunset-hued lighting', visualColor: '#FFD700' },
|
|
118
188
|
{ id: 'light_cool', name: 'Cool Steel', value: 'cool, bluish steel-toned professional lighting', visualColor: '#B0C4DE' }
|
|
119
|
-
]
|
|
189
|
+
],
|
|
190
|
+
hasModel: false
|
|
120
191
|
},
|
|
121
192
|
{
|
|
122
193
|
id: 'half_body_muse',
|
|
123
194
|
name: 'The Editorial Muse',
|
|
124
195
|
description: 'A dynamic waist-up fashion shot showcasing how the jewelry complements a complete look.',
|
|
125
196
|
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.
|
|
197
|
+
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. Beauty-grade skin refinement with smooth, even tone; pores reduced, minimal blemishes; still realistic (no plastic skin). Flyaway hairs, cinematic lighting, shot on film.',
|
|
127
198
|
customizationLabel: 'Fashion Style & Outfit',
|
|
128
199
|
customizationOptions: [
|
|
129
|
-
{ id: '
|
|
200
|
+
{ 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' },
|
|
201
|
+
{ 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' },
|
|
202
|
+
{ 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
203
|
{ id: 'outfit_evening', name: 'Evening Glamour', value: 'wearing a luxurious silk evening dress. Sophisticated, night-out aesthetic', visualImage: '/evening_glamour.png' },
|
|
204
|
+
{ 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
205
|
{ 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
206
|
{ id: 'outfit_knit', name: 'Cashmere Knit', value: 'wearing a soft, textured cashmere sweater. Cozy, quiet-luxury aesthetic', visualImage: '/cashmere_outfit.png' },
|
|
133
207
|
{ 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' }
|
|
208
|
+
{ id: 'outfit_turtleneck', name: 'Turtleneck', value: 'wearing a sleek fitted turtleneck. Clean, modern minimalist aesthetic that lets the jewelry stand out', visualImage: '/turtleneck.png' },
|
|
209
|
+
{ 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
210
|
],
|
|
136
211
|
secondaryCustomizationLabel: 'Nail Polish',
|
|
137
212
|
secondaryCustomizationOptions: [
|
|
@@ -145,20 +220,43 @@ export const TEMPLATES = [
|
|
|
145
220
|
tertiaryCustomizationOptions: [
|
|
146
221
|
{ id: 'makeup_none', name: 'Bare / Natural', value: 'completely bare faced, no makeup, fresh natural skin', visualColor: '#FFF5EE' },
|
|
147
222
|
{ id: 'makeup_minimal', name: 'Minimal', value: 'subtle natural makeup with light foundation and soft neutral tones', visualColor: '#F5E6D3' },
|
|
148
|
-
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
|
|
223
|
+
{ id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated, beauty-grade skin finish with refined retouching, smooth even complexion, minimal blemishes, pores noticeably reduced but still realistic (no plastic skin)', visualColor: '#E8C4A8' },
|
|
149
224
|
{ id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
|
|
150
225
|
{ id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
|
|
151
226
|
],
|
|
152
227
|
quaternaryCustomizationLabel: 'Poses & Expressions',
|
|
153
228
|
quaternaryCustomizationOptions: [
|
|
154
|
-
{ id: 'pose_winking', name: 'Winking', value: 'playfully winking at the camera with a confident smile', visualColor: '#F5F0EB',
|
|
155
|
-
{ id: '
|
|
156
|
-
{ id: '
|
|
157
|
-
{ id: '
|
|
158
|
-
{ id: '
|
|
159
|
-
{ id: '
|
|
160
|
-
{ id: '
|
|
161
|
-
]
|
|
229
|
+
{ id: 'pose_winking', name: 'Winking', value: 'playfully winking at the camera with a confident smile', visualColor: '#F5F0EB', visualImage: '/poses/thumb/winking.jpg' },
|
|
230
|
+
{ id: 'pose_kiss', name: 'Blowing a Kiss', value: 'blowing a kiss towards the camera, hand near mouth, flirty and fun', visualColor: '#F5F0EB', visualImage: '/poses/thumb/blowing_kiss.jpg' },
|
|
231
|
+
{ id: 'pose_laughing', name: 'Candid Laugh', value: 'throwing head back in genuine, unposed laughter, joyous and radiant', visualColor: '#F5F0EB', visualImage: '/poses/thumb/candid_laugh.jpg' },
|
|
232
|
+
{ id: 'pose_pout', name: 'Model Pout', value: 'serious high-fashion model pout, intense gaze, editorial attitude', visualColor: '#F5F0EB', visualImage: '/poses/thumb/model_pout.jpg' },
|
|
233
|
+
{ id: 'pose_power_tilt', name: 'Power Tilt', value: 'chin raised with a subtle head tilt, confident gaze, strong editorial attitude', visualColor: '#F5F0EB', visualImage: '/poses/thumb/power_tilt.jpg' },
|
|
234
|
+
{ id: 'pose_hand_ear', name: 'Hand to Ear', value: 'hand lifted near ear or temple, poised and composed, earrings visible if present', visualColor: '#F5F0EB', visualImage: '/poses/thumb/hand_to_ear.jpg' },
|
|
235
|
+
{ id: 'pose_over_shoulder', name: 'Over-Shoulder', value: 'over-shoulder turn with elongated neck, subtle intensity, editorial confidence', visualColor: '#F5F0EB', visualImage: '/poses/thumb/over_shoulder.jpg' }
|
|
236
|
+
],
|
|
237
|
+
quinaryCustomizationLabel: 'Accessories & Styling',
|
|
238
|
+
quinaryCustomizationOptions: [
|
|
239
|
+
{ 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' },
|
|
240
|
+
{ 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' },
|
|
241
|
+
{ id: 'accessory_silk_headband', name: 'Silk Headband', value: 'silk headband or hair wrap with refined styling; face unobstructed; shoulders covered', visualColor: '#BFA88F' },
|
|
242
|
+
{ 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' },
|
|
243
|
+
{ id: 'accessory_statement_belt', name: 'Statement Belt', value: 'bold waist belt or cinch over the outfit; polished and fashion-forward; shoulders covered', visualColor: '#7A6A58' },
|
|
244
|
+
{ 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' },
|
|
245
|
+
{ 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' },
|
|
246
|
+
{ id: 'accessory_hair_clip', name: 'Hair Clip', value: 'sleek hair clip or barrette with clean styling; face unobstructed; shoulders covered', visualColor: '#CBBBAA' },
|
|
247
|
+
{ id: 'accessory_beret', name: 'Beret', value: 'structured beret angled back so the face remains fully visible; editorial sophistication; shoulders covered', visualColor: '#5C4B3B' },
|
|
248
|
+
{ 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' },
|
|
249
|
+
{ 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' }
|
|
250
|
+
],
|
|
251
|
+
hasModel: true
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
id: 'solid_color_studio',
|
|
255
|
+
name: 'Solid Color Studio',
|
|
256
|
+
description: 'Minimalist product shot on a pure solid backdrop.',
|
|
257
|
+
visualUrl: '/template_solid_color.svg',
|
|
258
|
+
basePrompt: 'A high-end studio product photograph of the specific jewelry piece(s) shown. Clean, minimal composition with the jewelry centered and sharply rendered. Natural shadows and professional lighting.',
|
|
259
|
+
hasModel: false
|
|
162
260
|
},
|
|
163
261
|
{
|
|
164
262
|
id: 'romance_proposal',
|
|
@@ -190,7 +288,8 @@ export const TEMPLATES = [
|
|
|
190
288
|
{ id: 'nail_french', name: 'French Manicure', value: 'classic french tip manicure', visualColor: '#FDF5E6' },
|
|
191
289
|
{ id: 'nail_natural', name: 'Natural & Clean', value: 'clean, natural unpainted nails with a clear healthy coat', visualColor: '#F3EFE0' },
|
|
192
290
|
{ id: 'nail_dark', name: 'Noir / Dark', value: 'chic dark black or burgundy nail polish', visualColor: '#1A1A1A' }
|
|
193
|
-
]
|
|
291
|
+
],
|
|
292
|
+
hasModel: true
|
|
194
293
|
},
|
|
195
294
|
{
|
|
196
295
|
id: 'museum_exhibit',
|
|
@@ -212,7 +311,8 @@ export const TEMPLATES = [
|
|
|
212
311
|
{ id: 'display_stand', name: 'Open Display on Stand', value: 'displayed openly on a minimal museum stand, accessible and commanding', visualColor: '#C0C0C0' },
|
|
213
312
|
{ id: 'display_wall', name: 'Museum Wall Mount', value: 'mounted on museum wall with professional track lighting and descriptive placard', visualColor: '#F5F5DC' },
|
|
214
313
|
{ id: 'display_alcove', name: 'Illuminated Alcove', value: 'placed in an illuminated alcove with dramatic recessed lighting and shadow play', visualColor: '#2C2C2C' }
|
|
215
|
-
]
|
|
314
|
+
],
|
|
315
|
+
hasModel: false
|
|
216
316
|
},
|
|
217
317
|
{
|
|
218
318
|
id: 'romantic_mood',
|
|
@@ -236,15 +336,16 @@ export const TEMPLATES = [
|
|
|
236
336
|
{ 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
337
|
{ 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
338
|
{ 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
|
-
]
|
|
339
|
+
],
|
|
340
|
+
hasModel: false
|
|
240
341
|
}
|
|
241
342
|
];
|
|
242
343
|
export const SKIN_TONES = [
|
|
243
|
-
{ id: 'fair', name: 'Porcelain', value: 'very fair porcelain skin tone with natural pink undertones', visualColor: '#F3EFE0' },
|
|
244
|
-
{ id: 'light', name: 'Light', value: 'light skin tone with warm undertones and natural texture', visualColor: '#EBCFB8' },
|
|
245
|
-
{ id: 'medium', name: 'Tan', value: 'sun-kissed tan medium skin tone with golden glow', visualColor: '#D3A377' },
|
|
246
|
-
{ id: 'deep', name: 'Deep', value: 'rich deep bronze skin tone with natural highlights', visualColor: '#8D5524' },
|
|
247
|
-
{ id: 'dark', name: 'Ebony', value: 'deep ebony skin tone with luminous sheen', visualColor: '#422816' },
|
|
344
|
+
{ id: 'fair', name: 'Porcelain', value: 'very fair porcelain skin tone with natural pink undertones; beautiful smooth skin', visualColor: '#F3EFE0' },
|
|
345
|
+
{ id: 'light', name: 'Light', value: 'light skin tone with warm undertones and natural texture; beautiful smooth skin', visualColor: '#EBCFB8' },
|
|
346
|
+
{ id: 'medium', name: 'Tan', value: 'sun-kissed tan medium skin tone with golden glow; beautiful smooth skin', visualColor: '#D3A377' },
|
|
347
|
+
{ id: 'deep', name: 'Deep', value: 'rich deep bronze skin tone with natural highlights; beautiful smooth skin', visualColor: '#8D5524' },
|
|
348
|
+
{ id: 'dark', name: 'Ebony', value: 'deep ebony skin tone with luminous sheen; beautiful smooth skin', visualColor: '#422816' },
|
|
248
349
|
];
|
|
249
350
|
// Regional descriptors for adding diversity within ethnicities
|
|
250
351
|
export const ETHNICITY_REGIONS = {
|
|
@@ -278,12 +379,17 @@ export const ETHNICITIES = [
|
|
|
278
379
|
];
|
|
279
380
|
export const HAIR_COLORS = [
|
|
280
381
|
{ id: 'dark', name: 'Jet Black', value: 'deep jet black hair with a natural healthy sheen', visualColor: '#000000' },
|
|
281
|
-
{ id: 'brunette', name: 'Rich Brunette', value: 'rich chocolate brown
|
|
382
|
+
{ id: 'brunette', name: 'Rich Brunette', value: 'rich chocolate brown hair with subtle lowlights and shine', visualColor: '#4A3728' },
|
|
383
|
+
{ id: 'light_brown', name: 'Light Brown', value: 'natural light brown hair with soft warmth and dimension', visualColor: '#7A5A3A' },
|
|
384
|
+
{ id: 'natural_blonde', name: 'Natural Blonde', value: 'soft natural blonde hair with balanced warmth and subtle highlights', visualColor: '#DDBB7E' },
|
|
282
385
|
{ id: 'honey_blonde', name: 'Honey Blonde', value: 'warm honey blonde hair with golden tones', visualColor: '#D4AF37' },
|
|
283
|
-
{ id: 'blonde', name: 'Platinum Blonde', value: 'cool platinum blonde hair, sleek
|
|
386
|
+
{ id: 'blonde', name: 'Platinum / Icy Blonde', value: 'cool platinum blonde hair with an icy, sleek finish', visualColor: '#F5F5DC' },
|
|
284
387
|
{ id: 'strawberry', name: 'Strawberry Blonde', value: 'soft strawberry blonde hair with warm reddish-gold undertones', visualColor: '#E6CBA5' },
|
|
388
|
+
{ id: 'copper_red', name: 'Copper Red', value: 'vibrant copper red hair with glossy warmth and natural depth', visualColor: '#C66A2F' },
|
|
389
|
+
{ id: 'chestnut_red', name: 'Chestnut Red', value: 'rich chestnut red hair with warm brown undertones', visualColor: '#8B4A2B' },
|
|
285
390
|
{ id: 'auburn', name: 'Deep Auburn', value: 'intense deep auburn red hair with rich copper highlights', visualColor: '#8D4004' },
|
|
286
|
-
{ id: '
|
|
391
|
+
{ id: 'mahogany', name: 'Mahogany', value: 'deep mahogany red-brown hair with subtle wine undertones', visualColor: '#6B2E2E' },
|
|
392
|
+
{ id: 'silver', name: 'Metallic Silver', value: 'high-shine metallic silver hair with a cool chrome sheen', visualColor: '#BFC3C7' },
|
|
287
393
|
];
|
|
288
394
|
export const BACKGROUNDS = [
|
|
289
395
|
{ id: 'none', name: 'None', value: '', visualColor: 'transparent' },
|
|
@@ -296,17 +402,154 @@ export const BACKGROUNDS = [
|
|
|
296
402
|
{ id: 'champagne_gold', name: 'Champagne Gold', value: 'shimmering champagne gold satin with soft metallic luster', visualColor: '#D4AF37' },
|
|
297
403
|
{ id: 'navy_sapphire', name: 'Navy Sapphire', value: 'deep navy sapphire velvet with dark jewel-toned richness', visualColor: '#0A1A3F' },
|
|
298
404
|
{ id: 'blush_rose', name: 'Blush Rosé', value: 'delicate blush rosé silk with soft pink warmth', visualColor: '#E8C4C4' },
|
|
299
|
-
{ id: 'ivory_pearl', name: 'Ivory Pearl', value: 'luminous ivory pearl satin with subtle iridescent sheen', visualColor: '#FAF0E6' }
|
|
300
|
-
|
|
405
|
+
{ id: 'ivory_pearl', name: 'Ivory Pearl', value: 'luminous ivory pearl satin with subtle iridescent sheen', visualColor: '#FAF0E6' }
|
|
406
|
+
];
|
|
407
|
+
export const SOLID_COLOR_PALETTE = [
|
|
408
|
+
{ id: 'solid_white', name: 'Pure White', value: '[SOLID_BG] EXACT color #FFFFFF / RGB(255,255,255).', visualColor: '#FFFFFF' },
|
|
409
|
+
{ id: 'solid_black', name: 'Pure Black', value: '[SOLID_BG] EXACT color #000000 / RGB(0,0,0).', visualColor: '#000000' },
|
|
410
|
+
{ id: 'solid_cream', name: 'Cream Silk', value: '[SOLID_BG] EXACT color #FDFBD4 / RGB(253,251,212).', visualColor: '#FDFBD4' },
|
|
411
|
+
{ id: 'solid_midnight', name: 'Midnight Velvet', value: '[SOLID_BG] EXACT color #1A1A1A / RGB(26,26,26).', visualColor: '#1A1A1A' },
|
|
412
|
+
{ id: 'solid_marble', name: 'Carrara Marble', value: '[SOLID_BG] EXACT color #F0F0F0 / RGB(240,240,240).', visualColor: '#F0F0F0' },
|
|
413
|
+
{ id: 'solid_emerald', name: 'Emerald Velvet', value: '[SOLID_BG] EXACT color #1B4332 / RGB(27,67,50).', visualColor: '#1B4332' },
|
|
414
|
+
{ id: 'solid_beige', name: 'Warm Beige', value: '[SOLID_BG] EXACT color #E3CDB8 / RGB(227,205,184).', visualColor: '#E3CDB8' },
|
|
415
|
+
{ id: 'solid_burgundy', name: 'Burgundy Velvet', value: '[SOLID_BG] EXACT color #4A0020 / RGB(74,0,32).', visualColor: '#4A0020' },
|
|
416
|
+
{ id: 'solid_champagne', name: 'Champagne Gold', value: '[SOLID_BG] EXACT color #D4AF37 / RGB(212,175,55).', visualColor: '#D4AF37' },
|
|
417
|
+
{ id: 'solid_navy', name: 'Navy Sapphire', value: '[SOLID_BG] EXACT color #0A1A3F / RGB(10,26,63).', visualColor: '#0A1A3F' },
|
|
418
|
+
{ id: 'solid_blush', name: 'Blush Rosé', value: '[SOLID_BG] EXACT color #E8C4C4 / RGB(232,196,196).', visualColor: '#E8C4C4' },
|
|
419
|
+
{ id: 'solid_ivory', name: 'Ivory Pearl', value: '[SOLID_BG] EXACT color #FAF0E6 / RGB(250,240,230).', visualColor: '#FAF0E6' }
|
|
301
420
|
];
|
|
302
421
|
export const LUXURY_INTERIOR_POOL = [
|
|
303
422
|
'softly blurred background of a high-end luxury Parisian apartment interior, bokeh effect',
|
|
304
423
|
'softly blurred background of a refined Milanese palazzo interior, warm marble and ornate mouldings, bokeh effect',
|
|
305
424
|
'softly blurred background of a grand London townhouse interior, rich wood paneling and soft velvet, bokeh effect',
|
|
306
|
-
//'softly blurred background of an opulent Moroccan riad interior, intricate zellige tiles and arched doorways, bokeh effect',
|
|
307
425
|
'softly blurred background of a sleek modern penthouse interior, floor-to-ceiling windows and neutral tones, bokeh effect',
|
|
308
426
|
'softly blurred background of a classic Viennese salon interior, gilded mirrors and crystal chandeliers, bokeh effect',
|
|
309
427
|
];
|
|
428
|
+
export const LUXURY_INTERIOR_CAMPAIGN_POOL = [
|
|
429
|
+
'softly blurred background of an ultra-luxe penthouse where a monolithic sculptural stair floats over a mirror-black pool, laser-cut light beams and haze creating a high-drama glow, bokeh effect',
|
|
430
|
+
'softly blurred background of a maximalist grand salon drenched in crimson velvet, towering mirrored walls, and a chandelier the size of a small car, cinematic glow, bokeh effect',
|
|
431
|
+
'softly blurred background of a gallery-mansion interior with a neon art wall, massive chrome installation, and stark high-contrast lighting, bokeh effect',
|
|
432
|
+
'softly blurred background of a palatial duplex with double-height ceilings, colossal drapery, and a skylight casting theatrical shafts of light, bokeh effect',
|
|
433
|
+
'softly blurred background of a luxury interior built around an indoor waterfall spilling into a reflective black-stone basin, shimmering reflections, bokeh effect',
|
|
434
|
+
'softly blurred background of a curated gallery-luxe apartment with a rotating statement art plinth, bold geometric furniture, and theatrical spotlighting, bokeh effect',
|
|
435
|
+
'softly blurred background of a dramatic library-lounge with towering shelves, deep jewel-tone velvet, and a suspended light sculpture, warm cinematic glow, bokeh effect',
|
|
436
|
+
'softly blurred background of a skyline-facing duplex interior with panoramic city lights, razor-sharp chiaroscuro, and molten metallic accents, bokeh effect',
|
|
437
|
+
'softly blurred background of a vaulted hall with oversized arched windows, floor-to-ceiling mirrors, and a luminous foggy glow, bokeh effect',
|
|
438
|
+
'softly blurred background of a jet-black marble atrium with a floating glass walkway and bold uplighting from below, bokeh effect'
|
|
439
|
+
];
|
|
440
|
+
export const CAMPAIGN_LUXURY_INTERIOR_STYLES = [
|
|
441
|
+
{ id: 'grand_luxe', name: 'Grand Luxe' },
|
|
442
|
+
{ id: 'surreal_architecture', name: 'Surreal Architecture' },
|
|
443
|
+
{ id: 'cinematic_narrative', name: 'Cinematic Narrative' },
|
|
444
|
+
{ id: 'ultra_minimal', name: 'Ultra-Minimal Hyper-Lux' },
|
|
445
|
+
{ id: 'fashion_show', name: 'Fashion-Show Energy' },
|
|
446
|
+
{ id: 'hyper_luxury_materials', name: 'Hyper-Luxury Materials' },
|
|
447
|
+
{ id: 'light_spectacle', name: 'Light Spectacle' }
|
|
448
|
+
];
|
|
449
|
+
export const LUXURY_INTERIOR_SURREAL_ARCH_POOL = [
|
|
450
|
+
'impossible cathedral-scale interior with floating marble platforms, gravity-defying staircases spiraling through open voids, monumental arches dissolving into mist, reflective black stone floors, cinematic volumetric light rays cutting through the space, ultra-luxury surreal architecture, softly blurred background, shallow depth of field, bokeh',
|
|
451
|
+
'vast mirrored atrium stretching hundreds of meters tall, layered balconies and suspended bridges repeating into infinity, polished obsidian walls reflecting light like liquid metal, golden sunbeams piercing drifting atmospheric haze, dreamlike luxury architecture, softly blurred background, bokeh',
|
|
452
|
+
'endless hall of monumental portals carved from pale travertine and brushed brass, each doorway revealing another impossible chamber beyond, mirrored floors reflecting cascading light, surreal spatial recursion, cinematic lighting, softly blurred background, bokeh',
|
|
453
|
+
'multi-level luxury interior where the ceiling opens into a luminous cosmic void, sweeping architectural ribbons of glass and marble twisting through space, reflective pools and glowing stone surfaces, grand futuristic palace atmosphere, softly blurred background, cinematic depth, bokeh'
|
|
454
|
+
];
|
|
455
|
+
export const LUXURY_INTERIOR_CINEMATIC_NARRATIVE_POOL = [
|
|
456
|
+
'ultra-luxury penthouse gala afterparty scene, velvet lounge seating, glowing marble bar, champagne towers catching warm light, city skyline reflections through towering glass walls, cinematic haze and dramatic lighting, softly blurred background, bokeh',
|
|
457
|
+
'private museum takeover, monumental sculptures under sharp gallery spotlights, polished stone floors reflecting light, velvet ropes and elegant architectural shadows, quiet high-society atmosphere, softly blurred background, shallow depth of field',
|
|
458
|
+
'high-security luxury showroom resembling a vault chamber, glowing glass display cases embedded in dark stone walls, dramatic overhead beams of light cutting through mist, futuristic elite atmosphere, softly blurred background, cinematic bokeh',
|
|
459
|
+
'exclusive auction chamber deep inside a luxury vault, spotlight illuminating a central pedestal, velvet ropes, marble floors reflecting golden light, subtle fog drifting through beams, tense cinematic ambiance, softly blurred background'
|
|
460
|
+
];
|
|
461
|
+
export const LUXURY_INTERIOR_ULTRA_MINIMAL_POOL = [
|
|
462
|
+
'monumental ultra-minimal interior carved from seamless white stone, a single brutalist monolith rising from a mirror-polished floor, vast negative space, soft natural light washing across architectural planes, serene luxury minimalism, softly blurred background',
|
|
463
|
+
'silent gallery space with towering walls and a single sculptural plinth at center, diffuse skylight illuminating polished concrete floors, expansive architectural emptiness, museum-like tranquility, softly blurred background, bokeh',
|
|
464
|
+
'hyper-minimal black stone interior with a floating architectural slab suspended above a reflective floor, dramatic contrast lighting and deep shadows, ultra-luxury modernism, softly blurred background',
|
|
465
|
+
'vast minimalist architectural void where a single beam of light cuts across a monolithic interior volume, polished stone surfaces reflecting subtle glow, meditative luxury design, softly blurred background'
|
|
466
|
+
];
|
|
467
|
+
export const LUXURY_INTERIOR_FASHION_SHOW_POOL = [
|
|
468
|
+
'high-fashion runway stage inside a monumental architectural hall, dramatic spotlight rigs casting beams through atmospheric haze, glossy black runway reflecting light like liquid glass, elite fashion show atmosphere, softly blurred background, cinematic bokeh',
|
|
469
|
+
'backstage couture salon glowing with soft studio lighting, blurred garment racks of luxury fabrics, mirrors reflecting warm light panels, creative energy in an elite fashion house environment, softly blurred background',
|
|
470
|
+
'luxury runway lounge with towering lighting trusses, polished black floors and mirrored walls reflecting flashes of light, moody cinematic ambiance, softly blurred background, bokeh',
|
|
471
|
+
'architectural runway stage built like a sculptural installation, dramatic uplighting washing across marble and steel surfaces, subtle crowd glow and haze, high-end fashion event atmosphere, softly blurred background'
|
|
472
|
+
];
|
|
473
|
+
export const LUXURY_INTERIOR_HYPER_LUXURY_MATERIALS_POOL = [
|
|
474
|
+
'background of a monumental luxury interior carved from black onyx and polished brass, mirror floors reflecting towering columns, warm ambient lighting glowing through translucent stone, ultra-luxury materials, cinematic depth, bokeh',
|
|
475
|
+
'background of a grand architectural hall made of white alabaster and champagne gold metal, luminous stone walls glowing from within, reflective marble floors and soft atmospheric haze, hyper-luxury interior design, bokeh',
|
|
476
|
+
'futuristic luxury chamber with liquid chrome walls and mirror-polished obsidian floors, soft reflections rippling across metallic surfaces, dramatic luxury lighting, cinematic atmosphere, bokeh',
|
|
477
|
+
'background of a billionaire penthouse interior with rare travertine walls, brushed gold architectural frames, and a glowing marble feature wall, polished surfaces reflecting warm light, ultra-premium materials, bokeh',
|
|
478
|
+
'background of a luxury gallery interior with deep emerald stone panels, polished brass structures, and reflective black marble floors, museum-grade lighting illuminating rich materials, cinematic blur, bokeh',
|
|
479
|
+
'sculptural interior hall made of translucent jade-like stone and brushed titanium architecture, glowing stone surfaces casting soft light into the space, ultra-luxury futuristic materials, bokeh',
|
|
480
|
+
'elite luxury lounge with dark smoked glass walls, liquid metal bar surfaces, and polished stone floors reflecting warm golden light, hyper-premium interior atmosphere, bokeh',
|
|
481
|
+
'background of a monumental interior clad entirely in creamy travertine and bronze architectural accents, soft sunlight washing across textured stone surfaces, serene ultra-luxury design, cinematic blur, bokeh'
|
|
482
|
+
];
|
|
483
|
+
export const LUXURY_INTERIOR_LIGHT_SPECTACLE_POOL = [
|
|
484
|
+
'monumental atrium flooded with dramatic skylight beams, volumetric god rays pouring through towering glass ceilings, mist drifting through golden light, cinematic architectural spectacle, bokeh',
|
|
485
|
+
'luxury interior where cascading sunlight pours through geometric skylights, bright beams cutting across marble floors and towering walls, glowing atmospheric haze, epic architectural lighting, bokeh',
|
|
486
|
+
'cathedral-scale interior illuminated by massive vertical light shafts, radiant beams piercing through drifting fog, reflective floors amplifying the light spectacle, cinematic depth, bokeh',
|
|
487
|
+
'luxury hall with sunlight refracting through crystal installations, prismatic rainbow light scattering across polished marble floors, magical lighting spectacle, bokeh',
|
|
488
|
+
'ultra-modern interior where glowing light panels form the walls themselves, soft luminous architecture illuminating the entire space, futuristic light spectacle environment, bokeh',
|
|
489
|
+
'monumental glass-domed interior with sunlight pouring through the dome structure, radiant beams illuminating floating dust particles and reflective stone floors, cinematic atmosphere, bokeh',
|
|
490
|
+
'sculptural interior where thin architectural slits of light cut across a dark stone chamber, dramatic light blades creating a striking luxury ambiance, bokeh',
|
|
491
|
+
'luxury interior with massive skylight openings casting giant geometric light patterns across polished floors and towering walls, architectural light spectacle, cinematic blur, bokeh'
|
|
492
|
+
];
|
|
493
|
+
export const LUXURY_INTERIOR_MATERIAL_EXTREMES_POOL = [
|
|
494
|
+
'mirror-black obsidian floors with razor-sharp reflections',
|
|
495
|
+
'molten metallic walls with liquid-like sheen',
|
|
496
|
+
'alabaster monoliths rising from the floor as sculptural anchors',
|
|
497
|
+
'ultra-polished chrome columns with crisp specular highlights',
|
|
498
|
+
'brushed platinum surfaces with high-contrast gleam',
|
|
499
|
+
'smoked glass partitions with reflective depth',
|
|
500
|
+
'onyx slab surfaces with subtle veining and deep shine'
|
|
501
|
+
];
|
|
502
|
+
export const LUXURY_INTERIOR_ATMOSPHERE_POOL = [
|
|
503
|
+
'subtle haze and reflective mist to reveal volumetric light shafts',
|
|
504
|
+
'cinematic fog catching sharp beams of light',
|
|
505
|
+
'soft atmospheric diffusion creating a haloed glow around highlights',
|
|
506
|
+
'thin mist that turns light into visible architectural lines',
|
|
507
|
+
'volumetric light beams cutting across the space with a high-drama glow'
|
|
508
|
+
];
|
|
509
|
+
export const LUXURY_INTERIOR_COLOR_SHOCK_POOL = [
|
|
510
|
+
'a single vivid crimson accent against a monochrome luxury palette',
|
|
511
|
+
'a single vivid cobalt accent punctuating a neutral interior',
|
|
512
|
+
'a single vivid emerald accent cutting through black-and-silver tones',
|
|
513
|
+
'a single vivid amber accent glowing against cool metallics',
|
|
514
|
+
'a single vivid sapphire accent as the only bold color'
|
|
515
|
+
];
|
|
516
|
+
export const getRandomCampaignLuxuryInteriorDescriptor = (allowAccent = true) => {
|
|
517
|
+
const style = CAMPAIGN_LUXURY_INTERIOR_STYLES[Math.floor(Math.random() * CAMPAIGN_LUXURY_INTERIOR_STYLES.length)];
|
|
518
|
+
let basePool = LUXURY_INTERIOR_CAMPAIGN_POOL;
|
|
519
|
+
switch (style.id) {
|
|
520
|
+
case 'grand_luxe':
|
|
521
|
+
basePool = LUXURY_INTERIOR_CAMPAIGN_POOL;
|
|
522
|
+
break;
|
|
523
|
+
case 'surreal_architecture':
|
|
524
|
+
basePool = LUXURY_INTERIOR_SURREAL_ARCH_POOL;
|
|
525
|
+
break;
|
|
526
|
+
case 'cinematic_narrative':
|
|
527
|
+
basePool = LUXURY_INTERIOR_CINEMATIC_NARRATIVE_POOL;
|
|
528
|
+
break;
|
|
529
|
+
case 'ultra_minimal':
|
|
530
|
+
basePool = LUXURY_INTERIOR_ULTRA_MINIMAL_POOL;
|
|
531
|
+
break;
|
|
532
|
+
case 'fashion_show':
|
|
533
|
+
basePool = LUXURY_INTERIOR_FASHION_SHOW_POOL;
|
|
534
|
+
break;
|
|
535
|
+
case 'hyper_luxury_materials':
|
|
536
|
+
basePool = LUXURY_INTERIOR_HYPER_LUXURY_MATERIALS_POOL;
|
|
537
|
+
break;
|
|
538
|
+
case 'light_spectacle':
|
|
539
|
+
basePool = LUXURY_INTERIOR_LIGHT_SPECTACLE_POOL;
|
|
540
|
+
break;
|
|
541
|
+
default:
|
|
542
|
+
basePool = LUXURY_INTERIOR_CAMPAIGN_POOL;
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
const base = basePool[Math.floor(Math.random() * basePool.length)];
|
|
546
|
+
const material = LUXURY_INTERIOR_MATERIAL_EXTREMES_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_MATERIAL_EXTREMES_POOL.length)];
|
|
547
|
+
const atmosphere = LUXURY_INTERIOR_ATMOSPHERE_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_ATMOSPHERE_POOL.length)];
|
|
548
|
+
const accent = LUXURY_INTERIOR_COLOR_SHOCK_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_COLOR_SHOCK_POOL.length)];
|
|
549
|
+
return allowAccent
|
|
550
|
+
? `${base}; campaign style: ${style.name}; material extremes: ${material}; atmospheric drama: ${atmosphere}; color shock accent: ${accent}`
|
|
551
|
+
: `${base}; campaign style: ${style.name}; material extremes: ${material}; atmospheric drama: ${atmosphere}`;
|
|
552
|
+
};
|
|
310
553
|
export const STUDIO_FLAT_POOL = [
|
|
311
554
|
'clean professional studio background, seamless infinity curve, minimal distractions',
|
|
312
555
|
'minimalist studio backdrop with a soft gradient and elegant lighting',
|
|
@@ -315,11 +558,20 @@ export const STUDIO_FLAT_POOL = [
|
|
|
315
558
|
'flawless studio environment with a smooth, matte backdrop'
|
|
316
559
|
];
|
|
317
560
|
export const OUTDOOR_POOL = [
|
|
318
|
-
'softly blurred outdoor
|
|
319
|
-
'
|
|
320
|
-
'elegant
|
|
321
|
-
'serene
|
|
322
|
-
'
|
|
561
|
+
'softly blurred outdoor environment with cinematic bokeh',
|
|
562
|
+
'garden or terrace exterior with softly out-of-focus foliage and architectural details',
|
|
563
|
+
'elegant outdoor setting with depth and atmospheric blur',
|
|
564
|
+
'serene exterior landscape softly out of focus in the distance',
|
|
565
|
+
'outdoor scene with subtle haze and gentle background separation',
|
|
566
|
+
'courtyard exterior with stone textures and softly blurred greenery',
|
|
567
|
+
'rooftop terrace with distant cityscape softened into elegant bokeh',
|
|
568
|
+
'botanical garden walkway with lush foliage softly receding into blur',
|
|
569
|
+
'villa exterior with textured walls and archways blurred in the background',
|
|
570
|
+
'outdoor colonnade or veranda with soft depth-of-field and architectural rhythm',
|
|
571
|
+
'terrace with sculptural planters and a softly blurred horizon line',
|
|
572
|
+
'elegant exterior stairway or landing with shallow depth and creamy bokeh',
|
|
573
|
+
'garden wall or pergola backdrop with soft lens blur and atmospheric depth',
|
|
574
|
+
'waterfront or poolside exterior suggested as soft reflections and bokeh shapes'
|
|
323
575
|
];
|
|
324
576
|
export const MACRO_TEXTURE_POOL = [
|
|
325
577
|
'abstract macro textural background of softly draped silk filling the frame',
|
|
@@ -351,10 +603,12 @@ export const getRandomBlazerValue = () => {
|
|
|
351
603
|
const inner = inners[Math.floor(Math.random() * inners.length)];
|
|
352
604
|
return `wearing a ${fit} blazer over ${inner}. Confident, modern business-chic aesthetic`;
|
|
353
605
|
};
|
|
354
|
-
export const getRandomBackgroundValue = (typeId, defaultValue) => {
|
|
606
|
+
export const getRandomBackgroundValue = (typeId, defaultValue, isCampaignMode = false, allowCampaignAccent = true) => {
|
|
355
607
|
switch (typeId) {
|
|
356
608
|
case 'interior':
|
|
357
|
-
return
|
|
609
|
+
return isCampaignMode
|
|
610
|
+
? getRandomCampaignLuxuryInteriorDescriptor(allowCampaignAccent)
|
|
611
|
+
: LUXURY_INTERIOR_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_POOL.length)];
|
|
358
612
|
case 'studio':
|
|
359
613
|
return STUDIO_FLAT_POOL[Math.floor(Math.random() * STUDIO_FLAT_POOL.length)];
|
|
360
614
|
case 'exterior':
|
|
@@ -365,7 +619,9 @@ export const getRandomBackgroundValue = (typeId, defaultValue) => {
|
|
|
365
619
|
return defaultValue;
|
|
366
620
|
}
|
|
367
621
|
};
|
|
368
|
-
export const getRandomLuxuryInterior = (
|
|
622
|
+
export const getRandomLuxuryInterior = (isCampaignMode = false) => isCampaignMode
|
|
623
|
+
? LUXURY_INTERIOR_CAMPAIGN_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_CAMPAIGN_POOL.length)]
|
|
624
|
+
: LUXURY_INTERIOR_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_POOL.length)];
|
|
369
625
|
export const BACKGROUND_TYPES = [
|
|
370
626
|
{ id: 'studio', name: 'Studio Flat', value: 'clean professional studio background, seamless infinity curve, minimal distractions', visualImage: '/studio_flat.png' },
|
|
371
627
|
{ id: 'interior', name: 'Luxury Interior', value: 'softly blurred background of a high-end luxury apartment interior, bokeh effect', visualImage: '/luxury_interior.png' },
|
|
@@ -380,7 +636,129 @@ export const VIBES = [
|
|
|
380
636
|
{ 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' },
|
|
381
637
|
{ 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' },
|
|
382
638
|
{ 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' },
|
|
383
|
-
{ id: 'editorial_daylight', name: 'Sun-Drenched', value: 'bright diffused daylight, overexposed highlights, soft dreamy aesthetic, high-end magazine cover style,
|
|
639
|
+
{ 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' },
|
|
640
|
+
];
|
|
641
|
+
export const PHOTOGRAPHY_STYLES = [
|
|
642
|
+
{
|
|
643
|
+
id: 'ethereal_dream',
|
|
644
|
+
name: 'Ethereal Dream',
|
|
645
|
+
description: 'Soft-focus, painterly textures, and haunting, impressionist tones.',
|
|
646
|
+
value: 'painterly surrealist photography, heavy soft-focus, blurred motion, desaturated impressionist palette, glowing highlights, inspired by Sarah Moon and Paolo Roversi',
|
|
647
|
+
visualColor: 'linear-gradient(135deg, #d3c4be, #8e7d76)'
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
id: 'sculptural_light',
|
|
651
|
+
name: 'Sculptural Light',
|
|
652
|
+
description: 'Directional lighting that carves the subject with highlights and shadow.',
|
|
653
|
+
value: 'luxury product photography with sculptural directional lighting, sharp specular highlights, controlled reflections, dramatic light falloff, deep soft shadows, minimalist studio background, metallic surfaces glowing under precise light, refined commercial lighting, inspired by high-end jewelry advertising and photographers like Nadav Kander and Sølve Sundsbø',
|
|
654
|
+
visualColor: 'linear-gradient(135deg, #f5f5f5, #6e6e6e)'
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
id: 'prismatic_light',
|
|
658
|
+
name: 'Prismatic Light',
|
|
659
|
+
description: 'Refracted light, spectral flares, and crystalline reflections.',
|
|
660
|
+
value: 'luxury jewelry product photography, soft directional sunlight, a few diffused prismatic caustics on the surface beneath the ring, small artistic rainbow patches with slightly blurred edges, gentle spectral color bloom, subtle prism reflections near the base of the jewelry, polished metal highlights and diamond brilliance, soft shadows, refined high-end jewelry advertising aesthetic',
|
|
661
|
+
visualColor: 'linear-gradient(135deg, #6a5cff, #ff8bd6)'
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
id: 'modern_edge',
|
|
665
|
+
name: 'Modern Edge',
|
|
666
|
+
description: 'Bolder contrast, sharper angles, fashion-forward tension.',
|
|
667
|
+
value: 'modern edgy fashion photography, bold contrast, crisp angles, graphic shadows, assertive composition, inspired by Helmut Newton and Steven Klein',
|
|
668
|
+
visualColor: 'linear-gradient(135deg, #2d2f35, #6f7a88)'
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
id: 'soft_natural',
|
|
672
|
+
name: 'Chromatic Gel',
|
|
673
|
+
description: 'Color-gel lighting, bold casts, nightclub editorial edge.',
|
|
674
|
+
value: 'color gel lighting, bold chromatic casts, magenta and cyan accents, high-energy fashion editorial, inspired by David LaChapelle and Nadia Lee Cohen',
|
|
675
|
+
visualColor: 'linear-gradient(135deg, #351b5e, #8aa6ff)'
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
id: 'acid_lofi',
|
|
679
|
+
name: 'Acid Infrared',
|
|
680
|
+
description: 'Extreme false-color shifts, thermal aesthetics, and psychedelic saturation.',
|
|
681
|
+
value: 'false-color infrared photography, Aerochrome style, vivid hot pinks and deep teals, high grain, surreal alien atmosphere, inspired by Richard Mosse',
|
|
682
|
+
visualColor: 'linear-gradient(135deg, #ff007f, #00ffcc)'
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
id: 'cyber_grit',
|
|
686
|
+
name: 'Cyber-Grit Noir',
|
|
687
|
+
description: 'High-contrast grain, light trails, and chaotic digital distortion.',
|
|
688
|
+
value: 'experimental long exposure, aggressive film grain, light trailing, high-contrast black and white, digital glitch artifacts, inspired by Daido Moriyama',
|
|
689
|
+
visualColor: 'linear-gradient(135deg, #000000, #4a4a4a)'
|
|
690
|
+
}
|
|
691
|
+
];
|
|
692
|
+
export const MOROCCAN_WEDDING_CULTURAL_ELEMENTS_POOL = [
|
|
693
|
+
'Subtle Moroccan bridal cues: delicate henna patterns (only if hands appear), refined arabesque geometry, intricate zellige mosaic craftsmanship, elegant gold jewelry accents inspired by traditional bridal attire.',
|
|
694
|
+
'Refined Moroccan bridal motifs: delicate henna patterns (only if hands appear), intricate zellige tilework, elegant arabesque geometry, ornate brass lanterns, carved cedarwood architecture, subtle gold jewelry accents, luxurious embroidered textiles inspired by traditional caftans and takchitas.'
|
|
695
|
+
];
|
|
696
|
+
export const MOROCCAN_WEDDING_DECOR_POOL = [
|
|
697
|
+
'glowing brass lantern clusters, candlelight, velvet cushions in emerald and ruby tones, carved cedarwood screens, layered embroidered textiles, palace-like warmth',
|
|
698
|
+
'scalloped arches, zellige tile accents, silk drapery, gilded trays, traditional tea service, rose petals, warm golden reflections',
|
|
699
|
+
'ceremonial seating, brocade fabrics, ornate brass details, white and blush floral arrangements, candlelit tables, soft lantern glow',
|
|
700
|
+
'luxurious Moroccan lounge styling with low seating, jewel-toned pillows, carved plaster details, brass mirrors, floral accents, atmospheric amber light',
|
|
701
|
+
'royal riad-inspired decor with carved wood panels, mosaic surfaces, draped canopy elements, candlelight, polished metal accents, rich layered textures'
|
|
702
|
+
];
|
|
703
|
+
export const RAMADAN_CULTURAL_ELEMENTS_POOL = [
|
|
704
|
+
'Subtle Ramadan symbolism: crescent moon motifs, refined Islamic geometric patterns, elegant Arabic calligraphy accents, gentle spiritual cues.',
|
|
705
|
+
'Traditional Ramadan cultural elements: crescent imagery, dates as a symbol of iftar tradition, refined Islamic ornamental patterns, peaceful spiritual ambiance.',
|
|
706
|
+
'Ramadan heritage cues: elegant crescent motifs, delicate arabesque geometry, subtle Islamic pattern artistry, symbolic references to breaking the fast.',
|
|
707
|
+
'Refined Ramadan symbolism: crescent moon imagery, delicate Islamic geometric ornamentation, subtle Arabic calligraphic elements, quiet spiritual atmosphere.',
|
|
708
|
+
'Classic Ramadan cultural references: dates representing iftar tradition, elegant crescent moon motifs, refined Islamic design patterns, serene spiritual cues.',
|
|
709
|
+
'Traditional Islamic artistic motifs associated with Ramadan: arabesque ornamentation, geometric Islamic patterns, crescent symbolism, subtle spiritual elegance.',
|
|
710
|
+
'Ramadan-inspired cultural elements: crescent moon symbolism, delicate Islamic ornamental geometry, symbolic references to dates and hospitality traditions.',
|
|
711
|
+
'Serene Ramadan cultural cues: refined Islamic geometric patterns, crescent moon motifs, subtle Arabic calligraphy elements, gentle spiritual symbolism.'
|
|
712
|
+
];
|
|
713
|
+
export const RAMADAN_DECOR_POOL = [
|
|
714
|
+
'softly glowing lanterns casting warm patterned light, quiet reflective surfaces, minimal ceremonial accents',
|
|
715
|
+
'elegant lantern clusters creating gentle ambient glow, subtle decorative trays with dates, calm evening atmosphere',
|
|
716
|
+
'minimal Ramadan table setting with dates and small decorative elements, warm lantern illumination',
|
|
717
|
+
'delicate lantern light reflecting on polished surfaces, restrained decorative accents, serene evening setting',
|
|
718
|
+
'simple yet elegant iftar-inspired staging with dates, lantern glow, and soft atmospheric lighting',
|
|
719
|
+
'quiet evening decor with subtle lanterns, refined table accents, and warm ambient illumination',
|
|
720
|
+
'minimal ceremonial details with softly glowing lanterns and calm reflective elements',
|
|
721
|
+
'gentle Ramadan ambiance with understated lantern lighting and elegant minimal decor'
|
|
722
|
+
];
|
|
723
|
+
export const MOTHERS_DAY_CULTURAL_ELEMENTS_POOL = [
|
|
724
|
+
'Symbols of maternal love and appreciation: delicate spring flowers, handwritten notes of gratitude, soft pastel tones, gentle celebratory warmth.',
|
|
725
|
+
'Warm Mother’s Day symbolism: blooming seasonal flowers, thoughtful gift elements, soft fabrics and nurturing visual cues of affection.',
|
|
726
|
+
'Tender Mother’s Day cultural cues: spring blossoms, small gift gestures, comforting pastel palettes, subtle themes of care and gratitude.',
|
|
727
|
+
'Celebratory Mother’s Day motifs: delicate floral elements, ribbons and gift wrapping accents, gentle tones expressing appreciation and warmth.',
|
|
728
|
+
'Mother’s Day symbolism: blooming flowers representing care and growth, soft fabrics, thoughtful celebratory gestures, warm affectionate cues.',
|
|
729
|
+
'Subtle Mother’s Day themes of gratitude: seasonal blossoms, heartfelt gift elements, soft pastel textures, calm nurturing atmosphere.',
|
|
730
|
+
'Springtime Mother’s Day cues: floral blossoms, delicate ribbon accents, gentle colors symbolizing affection and appreciation.',
|
|
731
|
+
'Elegant Mother’s Day symbolism: soft spring florals, graceful fabric textures, refined celebratory details expressing love and gratitude.'
|
|
732
|
+
];
|
|
733
|
+
export const MOTHERS_DAY_DECOR_POOL = [
|
|
734
|
+
'gentle floral arrangements, soft pastel ribbons, warm natural light, cozy home accents',
|
|
735
|
+
'fresh spring bouquets on a light table setting, delicate ribbons, soft fabric textures, bright and comforting atmosphere',
|
|
736
|
+
'simple celebratory decor with fresh flowers, small wrapped gifts, soft linens, and warm sunlight',
|
|
737
|
+
'light spring decor with floral accents, pastel tones, and calm comforting textures',
|
|
738
|
+
'elegant yet gentle table decor with flowers, soft ribbons, and subtle celebratory touches',
|
|
739
|
+
'cozy home styling with spring blossoms, light textiles, and warm ambient light',
|
|
740
|
+
'soft decorative florals paired with ribbons and delicate table accents',
|
|
741
|
+
'minimal but warm decor with fresh flowers, gentle colors, and subtle celebratory elements'
|
|
742
|
+
];
|
|
743
|
+
export const NEW_YEAR_CULTURAL_ELEMENTS_POOL = [
|
|
744
|
+
'Elegant New Year celebration symbolism: champagne toasts, refined evening attire cues, sparkling midnight anticipation, glamorous festive atmosphere.',
|
|
745
|
+
'Classic New Year cultural cues: champagne celebration traditions, countdown-to-midnight symbolism, festive sparkle, refined celebratory elegance.',
|
|
746
|
+
'Sophisticated New Year motifs: midnight celebration energy, champagne glamour, celebratory sparkle accents, elegant evening festivities.',
|
|
747
|
+
'New Year celebration symbolism: midnight countdown atmosphere, sparkling festive cues, celebratory champagne traditions, refined party elegance.',
|
|
748
|
+
'Festive New Year cultural elements: midnight celebration anticipation, glamorous sparkle motifs, elegant party atmosphere, celebratory toasts.',
|
|
749
|
+
'Luxury New Year celebration cues: sophisticated evening festivities, champagne toast symbolism, midnight sparkle, glamorous celebratory energy.',
|
|
750
|
+
'Classic midnight celebration symbolism: festive sparkle accents, champagne traditions, elegant party cues, celebratory anticipation.',
|
|
751
|
+
'Refined New Year celebration motifs: glamorous midnight festivities, sparkling celebration energy, champagne toast culture, elegant evening atmosphere.'
|
|
752
|
+
];
|
|
753
|
+
export const NEW_YEAR_DECOR_POOL = [
|
|
754
|
+
'soft glitter bokeh, subtle confetti accents, elegant midnight celebration details, warm festive glow',
|
|
755
|
+
'refined party decor with champagne glasses, soft sparkle reflections, minimalist celebratory accents',
|
|
756
|
+
'midnight celebration staging with subtle confetti, elegant table accents, gentle glitter reflections',
|
|
757
|
+
'minimalist glamorous decor with sparkling bokeh lights and understated celebration details',
|
|
758
|
+
'sophisticated party styling with champagne flutes, soft glitter lighting, refined festive atmosphere',
|
|
759
|
+
'subtle confetti scatter, glowing evening lights, elegant celebratory decor',
|
|
760
|
+
'glamorous sparkle accents with soft bokeh lights and minimal party decorations',
|
|
761
|
+
'quiet luxury celebration decor with champagne details, soft glitter reflections, midnight ambiance'
|
|
384
762
|
];
|
|
385
763
|
export const OCCASIONS = [
|
|
386
764
|
{
|
|
@@ -388,13 +766,9 @@ export const OCCASIONS = [
|
|
|
388
766
|
name: 'Moroccan Wedding',
|
|
389
767
|
icon: '👰',
|
|
390
768
|
description: 'Traditional Moroccan wedding luxury aesthetic with rich cultural details',
|
|
391
|
-
autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
|
|
392
769
|
promptDetails: {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
colorPalette: 'Rich jewel tones - deep crimson red, emerald green, royal purple, and abundant gold accents. Ivory and cream for contrast. Warm, luxurious color temperature',
|
|
396
|
-
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',
|
|
397
|
-
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'
|
|
770
|
+
culturalElements: MOROCCAN_WEDDING_CULTURAL_ELEMENTS_POOL,
|
|
771
|
+
decor: MOROCCAN_WEDDING_DECOR_POOL
|
|
398
772
|
}
|
|
399
773
|
},
|
|
400
774
|
{
|
|
@@ -402,13 +776,9 @@ export const OCCASIONS = [
|
|
|
402
776
|
name: 'Eid al-Fitr',
|
|
403
777
|
icon: '🌙',
|
|
404
778
|
description: 'Elegant celebration of Eid al-Fitr with festive, joyful atmosphere',
|
|
405
|
-
autoConfig: { vibe: 'clean_minimal', background: 'emerald_green', backgroundType: 'luxury_interior' },
|
|
406
779
|
promptDetails: {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
colorPalette: 'Emerald green, gold, white, and soft pastels. Fresh and luminous tones',
|
|
410
|
-
culturalElements: 'Subtle festive Eid elements - elegant Islamic geometric patterns, fresh flowers, refined decorative details',
|
|
411
|
-
styling: 'Model styled in celebration attire with polished, festive makeup and elegant hair. Joyful, refined aesthetic'
|
|
780
|
+
culturalElements: ['Elegant Islamic geometric motifs, refined festive cues, fresh florals in a celebratory spirit.'],
|
|
781
|
+
decor: ['Subtle lantern accents, delicate florals, soft celebratory details.']
|
|
412
782
|
}
|
|
413
783
|
},
|
|
414
784
|
{
|
|
@@ -416,13 +786,9 @@ export const OCCASIONS = [
|
|
|
416
786
|
name: 'Eid al-Adha',
|
|
417
787
|
icon: '🕌',
|
|
418
788
|
description: 'Sophisticated Eid al-Adha celebration with refined elegance',
|
|
419
|
-
autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
|
|
420
789
|
promptDetails: {
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
colorPalette: 'Rich gold, burgundy, deep greens, cream. Warm, sophisticated tones',
|
|
424
|
-
culturalElements: 'Elegant cultural references - refined Islamic art patterns, luxury fabrics, traditional elements in modern interpretation',
|
|
425
|
-
styling: 'Model styled with sophisticated elegance. Rich makeup, refined styling, traditional yet contemporary aesthetic'
|
|
790
|
+
culturalElements: ['Refined Islamic art motifs, luxury fabrics, dignified celebratory cues in a modern interpretation.'],
|
|
791
|
+
decor: ['Warm golden accents, elegant textiles, understated celebratory details.']
|
|
426
792
|
}
|
|
427
793
|
},
|
|
428
794
|
{
|
|
@@ -430,13 +796,9 @@ export const OCCASIONS = [
|
|
|
430
796
|
name: 'Henna Night',
|
|
431
797
|
icon: '🎨',
|
|
432
798
|
description: 'Traditional Moroccan henna ceremony with intricate cultural elements',
|
|
433
|
-
autoConfig: { vibe: 'golden_hour', background: 'terracotta', backgroundType: 'luxury_interior' },
|
|
434
799
|
promptDetails: {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
colorPalette: 'Warm terracotta, deep orange, burgundy, gold. Earthy and rich with golden accents',
|
|
438
|
-
culturalElements: 'Intricate henna patterns prominently visible on hands if showing hands. Traditional lanterns, Moroccan textiles, ornate serving pieces. Rose water ambiance',
|
|
439
|
-
styling: 'Model styled as if at traditional henna ceremony. Elaborate henna designs, traditional jewelry, warm glowing makeup, cultural celebration aesthetic'
|
|
800
|
+
culturalElements: ['Intricate henna motifs (only if hands appear), Moroccan lanterns, traditional textiles, ceremonial elegance.'],
|
|
801
|
+
decor: ['Lantern light, embroidered cushions, ornate trays, rose-water ceremony cues.']
|
|
440
802
|
}
|
|
441
803
|
},
|
|
442
804
|
{
|
|
@@ -444,13 +806,9 @@ export const OCCASIONS = [
|
|
|
444
806
|
name: 'Ramadan',
|
|
445
807
|
icon: '⭐',
|
|
446
808
|
description: 'Serene Ramadan atmosphere with spiritual elegance',
|
|
447
|
-
autoConfig: { vibe: 'moody_chic', background: 'midnight_blue', backgroundType: 'luxury_interior' },
|
|
448
809
|
promptDetails: {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
colorPalette: 'Deep midnight blue, silver, soft gold, white. Cool, peaceful tones with metallic accents',
|
|
452
|
-
culturalElements: 'Subtle Ramadan elements - soft lantern light, crescent moon motifs, dates, refined Islamic patterns, peaceful spiritual aesthetic',
|
|
453
|
-
styling: 'Model styled with serene, natural elegance. Soft, glowing makeup. Modest, refined aesthetic'
|
|
810
|
+
culturalElements: RAMADAN_CULTURAL_ELEMENTS_POOL,
|
|
811
|
+
decor: RAMADAN_DECOR_POOL
|
|
454
812
|
}
|
|
455
813
|
},
|
|
456
814
|
{
|
|
@@ -458,13 +816,9 @@ export const OCCASIONS = [
|
|
|
458
816
|
name: "Valentine's Day",
|
|
459
817
|
icon: '❤️',
|
|
460
818
|
description: 'Romantic ambiance with rose petals and soft candlelight',
|
|
461
|
-
autoConfig: { vibe: 'romantic_soft', background: 'blush_pink', backgroundType: 'studio' },
|
|
462
819
|
promptDetails: {
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
colorPalette: 'Blush pink, soft red, cream, rose gold. Warm, romantic, delicate tones',
|
|
466
|
-
culturalElements: 'Rose petals scattered elegantly, soft romantic florals, intimate candlelight glow, love celebration aesthetic',
|
|
467
|
-
styling: 'Model styled with romantic, soft makeup. Natural, glowing skin. Dreamy, feminine aesthetic'
|
|
820
|
+
culturalElements: ['Rose petals, soft romantic florals, gentle candlelight glow, love-celebration cues.'],
|
|
821
|
+
decor: ['Subtle candles, delicate petals, soft romantic textile accents.']
|
|
468
822
|
}
|
|
469
823
|
},
|
|
470
824
|
{
|
|
@@ -472,13 +826,9 @@ export const OCCASIONS = [
|
|
|
472
826
|
name: "Mother's Day",
|
|
473
827
|
icon: '🌸',
|
|
474
828
|
description: 'Warm, tender atmosphere celebrating maternal love',
|
|
475
|
-
autoConfig: { vibe: 'golden_hour', background: 'soft_lavender', backgroundType: 'studio' },
|
|
476
829
|
promptDetails: {
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
colorPalette: 'Soft lavender, warm peach, cream, gentle pastels. Warm, comforting tones',
|
|
480
|
-
culturalElements: 'Delicate spring flowers, soft fabrics, warm comforting aesthetic, celebration of motherhood',
|
|
481
|
-
styling: 'Model styled with warm, natural elegance. Soft makeup, genuine warmth. Maternal grace'
|
|
830
|
+
culturalElements: MOTHERS_DAY_CULTURAL_ELEMENTS_POOL,
|
|
831
|
+
decor: MOTHERS_DAY_DECOR_POOL
|
|
482
832
|
}
|
|
483
833
|
},
|
|
484
834
|
{
|
|
@@ -486,13 +836,9 @@ export const OCCASIONS = [
|
|
|
486
836
|
name: 'Birthday',
|
|
487
837
|
icon: '🎂',
|
|
488
838
|
description: 'Celebratory and joyful setting with festive elements',
|
|
489
|
-
autoConfig: { vibe: 'clean_minimal', background: 'champagne_gold', backgroundType: 'studio' },
|
|
490
839
|
promptDetails: {
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
colorPalette: 'Champagne gold, white, soft pastels, metallic accents. Festive, bright tones',
|
|
494
|
-
culturalElements: 'Elegant celebration elements, refined party aesthetic, joyful festive details',
|
|
495
|
-
styling: 'Model styled for celebration with polished, festive makeup. Joyful, confident aesthetic'
|
|
840
|
+
culturalElements: ['Refined celebration cues, subtle party accents, joyful festive details.'],
|
|
841
|
+
decor: ['Minimal celebratory decor, soft ribbons or confetti bokeh, tasteful party touches.']
|
|
496
842
|
}
|
|
497
843
|
},
|
|
498
844
|
{
|
|
@@ -500,13 +846,9 @@ export const OCCASIONS = [
|
|
|
500
846
|
name: 'Anniversary',
|
|
501
847
|
icon: '💍',
|
|
502
848
|
description: 'Elegant, timeless aesthetic for commemorating special milestones',
|
|
503
|
-
autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
|
|
504
849
|
promptDetails: {
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
colorPalette: 'Rich gold, champagne, cream, deep burgundy. Luxurious, timeless tones',
|
|
508
|
-
culturalElements: 'Elegant romantic details, luxurious fabrics, refined celebration aesthetic, timeless sophistication',
|
|
509
|
-
styling: 'Model styled with timeless elegance. Classic, sophisticated makeup. Enduring beauty'
|
|
850
|
+
culturalElements: ['Elegant romantic details, luxurious fabrics, refined celebration cues, timeless sophistication.'],
|
|
851
|
+
decor: ['Soft candlelight accents, understated florals, quiet romantic touches.']
|
|
510
852
|
}
|
|
511
853
|
},
|
|
512
854
|
{
|
|
@@ -514,13 +856,9 @@ export const OCCASIONS = [
|
|
|
514
856
|
name: 'Graduation',
|
|
515
857
|
icon: '🎓',
|
|
516
858
|
description: 'Proud and accomplished atmosphere with sophisticated styling',
|
|
517
|
-
autoConfig: { vibe: 'clean_minimal', background: 'white', backgroundType: 'studio' },
|
|
518
859
|
promptDetails: {
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
colorPalette: 'Clean white, navy blue, gold accents. Professional, accomplished tones',
|
|
522
|
-
culturalElements: 'Academic achievement aesthetic, professional polish, celebration of success',
|
|
523
|
-
styling: 'Model styled with confident, professional polish. Clean, sophisticated makeup. Achievement glow'
|
|
860
|
+
culturalElements: ['Academic achievement cues, professional polish, celebration of success.'],
|
|
861
|
+
decor: ['Subtle graduation motifs (cap/tassel suggested in decor only), understated celebratory details.']
|
|
524
862
|
}
|
|
525
863
|
},
|
|
526
864
|
{
|
|
@@ -528,13 +866,9 @@ export const OCCASIONS = [
|
|
|
528
866
|
name: 'Christmas',
|
|
529
867
|
icon: '🎄',
|
|
530
868
|
description: 'Festive holiday spirit with elegant seasonal decorations',
|
|
531
|
-
autoConfig: { vibe: 'golden_hour', background: 'forest_green', backgroundType: 'luxury_interior' },
|
|
532
869
|
promptDetails: {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
colorPalette: 'Deep forest green, rich red, gold, cream. Classic holiday luxury tones',
|
|
536
|
-
culturalElements: 'Elegant holiday elements - pine branches, warm candlelight, luxurious seasonal decor, festive sophistication',
|
|
537
|
-
styling: 'Model styled with festive elegance. Rich, warm makeup. Holiday glamour'
|
|
870
|
+
culturalElements: ['Pine greenery, warm candlelight, refined holiday accents, festive sophistication.'],
|
|
871
|
+
decor: ['Subtle evergreen boughs, soft twinkle-light bokeh, understated holiday touches.']
|
|
538
872
|
}
|
|
539
873
|
},
|
|
540
874
|
{
|
|
@@ -542,16 +876,19 @@ export const OCCASIONS = [
|
|
|
542
876
|
name: 'New Year',
|
|
543
877
|
icon: '✨',
|
|
544
878
|
description: 'Glamorous celebration with sparkle and sophistication',
|
|
545
|
-
autoConfig: { vibe: 'moody_chic', background: 'midnight_blue', backgroundType: 'luxury_interior' },
|
|
546
879
|
promptDetails: {
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
colorPalette: 'Midnight blue, silver, gold, black. Dramatic, sophisticated evening tones',
|
|
550
|
-
culturalElements: 'Elegant evening celebration, sophisticated party aesthetic, champagne glamour, new year sparkle',
|
|
551
|
-
styling: 'Model styled with dramatic evening glamour. Bold, sophisticated makeup. Celebration elegance'
|
|
880
|
+
culturalElements: NEW_YEAR_CULTURAL_ELEMENTS_POOL,
|
|
881
|
+
decor: NEW_YEAR_DECOR_POOL
|
|
552
882
|
}
|
|
553
883
|
}
|
|
554
884
|
];
|
|
885
|
+
const ENABLED_OCCASION_IDS = new Set([
|
|
886
|
+
'ramadan',
|
|
887
|
+
'moroccan_wedding',
|
|
888
|
+
'mothers_day',
|
|
889
|
+
'new_year'
|
|
890
|
+
]);
|
|
891
|
+
export const OCCASIONS_ENABLED = OCCASIONS.filter((occasion) => ENABLED_OCCASION_IDS.has(occasion.id));
|
|
555
892
|
// Pool of diverse photography hints for final generation to ensure variety in the batch
|
|
556
893
|
export const GENERATION_STYLE_POOL = [
|
|
557
894
|
// Standard & Commercial
|
|
@@ -587,7 +924,6 @@ export const GENERATION_STYLE_POOL = [
|
|
|
587
924
|
"Model interacting with the environment (e.g., leaning against a wall or window), natural vibe.",
|
|
588
925
|
"A 'moment of preparation' look, looking down as if adjusting the clasp or admiring the piece.",
|
|
589
926
|
"Holding a glass or prop near the face, adding lifestyle context without obscuring the jewelry.",
|
|
590
|
-
"Shielding eyes from the 'sun' with a hand, casting interesting shadow patterns on the face.",
|
|
591
927
|
"Resting head on a hand, casual but elegant, creating a relaxed luxury feel.",
|
|
592
928
|
// Avant-Garde & High Fashion
|
|
593
929
|
"An artistic, slightly off-center composition (rule of thirds) for a modern magazine look.",
|
|
@@ -678,46 +1014,28 @@ export const EAR_MODEL_STYLE_POOL = [
|
|
|
678
1014
|
"Cool, moody shadows with the earring catching a single ray of light."
|
|
679
1015
|
];
|
|
680
1016
|
// Flatlay specific style pool - focuses on arrangements and compositions
|
|
681
|
-
export const
|
|
682
|
-
|
|
683
|
-
"
|
|
684
|
-
"
|
|
685
|
-
"
|
|
686
|
-
"
|
|
687
|
-
"
|
|
688
|
-
"
|
|
689
|
-
"
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
"
|
|
694
|
-
"
|
|
695
|
-
"
|
|
696
|
-
"
|
|
697
|
-
"
|
|
698
|
-
"
|
|
699
|
-
|
|
700
|
-
"
|
|
701
|
-
"
|
|
702
|
-
"
|
|
703
|
-
"Dappled light as if filtering through a window or foliage, soft organic shadow patterns on the surface.",
|
|
704
|
-
"Warm golden light from one side, the rest of the scene in soft muted tones, natural and intimate.",
|
|
705
|
-
// Lighting & Shadow (Classic)
|
|
706
|
-
"Dramatic directional lighting from the side creating long, elegant shadows.",
|
|
707
|
-
"Soft overhead diffused lighting for even, commercial product look.",
|
|
708
|
-
"Harsh spotlight creating defined shadows and high contrast.",
|
|
709
|
-
"Warm golden hour style lighting with long soft shadows.",
|
|
710
|
-
"Cool, clinical studio lighting emphasizing metallic reflections.",
|
|
711
|
-
"Backlit arrangement with glowing edges and rim lighting.",
|
|
712
|
-
// Surface & Context
|
|
713
|
-
"On raw, textured marble with natural veining patterns.",
|
|
714
|
-
"Against deep black velvet for maximum jewelry contrast.",
|
|
715
|
-
"On crumpled silk or satin fabric with natural folds and highlights.",
|
|
716
|
-
"Scattered on fine sand or natural stone surface.",
|
|
717
|
-
"On aged paper or vintage book pages for heritage feel.",
|
|
718
|
-
"Against concrete or terrazzo for modern, architectural vibe.",
|
|
719
|
-
"Surrounded by dried flowers or botanical elements.",
|
|
720
|
-
"With water droplets or morning dew on the surface nearby.",
|
|
1017
|
+
export const FLATLAY_POSITIONING_POOL = [
|
|
1018
|
+
"Asymmetric arrangement with jewelry piece(s) off-center, generous negative space on one side.",
|
|
1019
|
+
"Geometric pattern layout with jewelry piece(s) placed at golden ratio intersection points.",
|
|
1020
|
+
"Scattered organic arrangement as if jewelry piece(s) were casually placed onto the surface.",
|
|
1021
|
+
"Linear diagonal arrangement with jewelry piece(s) flowing from corner to corner.",
|
|
1022
|
+
"Circular composition with jewelry piece(s) forming or following a subtle arc.",
|
|
1023
|
+
"Minimalist hero shot with vast negative space surrounding the jewelry piece(s).",
|
|
1024
|
+
"Clustered grouping in center with jewelry piece(s) arranged as a cohesive set.",
|
|
1025
|
+
"Stepped arrangement with jewelry piece(s) at different heights using subtle props."
|
|
1026
|
+
];
|
|
1027
|
+
// Solid color studio style pool - clean, minimal product compositions
|
|
1028
|
+
export const SOLID_COLOR_STYLE_POOL = [
|
|
1029
|
+
"Centered hero shot with generous negative space and a soft grounding shadow.",
|
|
1030
|
+
"Slight 3/4 angle product view, crisp edges, minimal shadow, catalog-ready.",
|
|
1031
|
+
"Top-down flat product shot with a subtle drop shadow, clean studio aesthetic.",
|
|
1032
|
+
"Macro close-up crop highlighting gemstone facets, background remains perfectly flat.",
|
|
1033
|
+
"Off-center composition with modern negative space, high-end editorial minimalism.",
|
|
1034
|
+
"Symmetric composition with the jewelry perfectly aligned, pristine and balanced.",
|
|
1035
|
+
"Soft diffused lighting with gentle falloff on the jewelry only, no background texture.",
|
|
1036
|
+
"Hard key light for sharp, defined jewelry contours and a clean, controlled shadow.",
|
|
1037
|
+
"Low angle product shot emphasizing depth and dimensionality, background pure and uniform.",
|
|
1038
|
+
"Minimal shadow, high-key lighting, elevated catalog clarity and precision."
|
|
721
1039
|
];
|
|
722
1040
|
// Floating/suspended jewelry specific style pool
|
|
723
1041
|
export const FLOATING_STYLE_POOL = [
|
|
@@ -838,12 +1156,38 @@ export const ROMANTIC_MOOD_STYLE_POOL = [
|
|
|
838
1156
|
"Minimalist romance — one rose, one candle, one piece of jewelry, nothing else needed to tell the story.",
|
|
839
1157
|
"Morning-after stillness — soft light, rumpled silk, the jewelry casually placed as if just removed, intimate and real.",
|
|
840
1158
|
"Gift-giving anticipation — the box just opened, ribbon curling, tissue paper parting, the jewelry revealed for the first time.",
|
|
841
|
-
// Texture &
|
|
1159
|
+
// Texture & Material
|
|
842
1160
|
"Matte velvet surface absorbing light while the jewelry reflects it, contrast of soft and brilliant.",
|
|
843
1161
|
"Crumpled love letter paper texture beside polished metal, the rough and the refined side by side.",
|
|
844
1162
|
"Soft silk catching light in ripples and folds around the jewelry, liquid fabric framing solid precious metal.",
|
|
845
1163
|
"Dried rose petals mixed with fresh ones around the jewelry, the passage of time, love that endures.",
|
|
846
1164
|
];
|
|
1165
|
+
export const CAMPAIGN_STYLE_POOL = [
|
|
1166
|
+
{
|
|
1167
|
+
id: 'iconic_cinematic',
|
|
1168
|
+
name: 'Iconic Cinematic',
|
|
1169
|
+
prompt: 'Iconic, billboard-level presence. High-contrast lighting, sculpted shadows, and a bold silhouette. The jewelry reads as a power symbol. Focus on a single, unforgettable pose with magnetic eye contact.',
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
id: 'textural_monument',
|
|
1173
|
+
name: 'Textural Monument',
|
|
1174
|
+
prompt: 'Hyper-material, tactile luxury. Emphasize fabric texture, skin detail, and metal surfaces. Strong, graphic composition with deliberate negative space and a sculptural feel.',
|
|
1175
|
+
},
|
|
1176
|
+
{
|
|
1177
|
+
id: 'time_shifted_luxury',
|
|
1178
|
+
name: 'Time-Shifted Luxury',
|
|
1179
|
+
prompt: 'Timeless, elevated luxury with a modern edge. Classical poise, restrained elegance, and cinematic grading. The jewelry feels like a rare artifact in a contemporary frame.',
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
id: 'surreal_minimal',
|
|
1183
|
+
name: 'Surreal Minimal',
|
|
1184
|
+
prompt: 'Clean, minimal composition with a subtle surreal twist. Crisp lines, bold simplicity, and an unexpected visual hook. Jewelry remains the primary focal point.',
|
|
1185
|
+
},
|
|
1186
|
+
];
|
|
1187
|
+
export const getRandomCampaignStyle = () => {
|
|
1188
|
+
const idx = Math.floor(Math.random() * CAMPAIGN_STYLE_POOL.length);
|
|
1189
|
+
return CAMPAIGN_STYLE_POOL[idx];
|
|
1190
|
+
};
|
|
847
1191
|
// Helper function to get the appropriate style pool for a template
|
|
848
1192
|
export const getStylePoolForTemplate = (templateId) => {
|
|
849
1193
|
if (!templateId)
|
|
@@ -853,7 +1197,9 @@ export const getStylePoolForTemplate = (templateId) => {
|
|
|
853
1197
|
if (templateId === 'ear_model')
|
|
854
1198
|
return EAR_MODEL_STYLE_POOL;
|
|
855
1199
|
if (templateId === 'flatlay_creative')
|
|
856
|
-
return
|
|
1200
|
+
return FLATLAY_POSITIONING_POOL;
|
|
1201
|
+
if (templateId === 'solid_color_studio')
|
|
1202
|
+
return SOLID_COLOR_STYLE_POOL;
|
|
857
1203
|
if (templateId === 'floating_minimal')
|
|
858
1204
|
return FLOATING_STYLE_POOL;
|
|
859
1205
|
if (templateId === 'romance_proposal')
|