studio-lumiere-cli 0.1.0

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.
Files changed (114) hide show
  1. package/.agents/skills/annotate-image/SKILL.md +99 -0
  2. package/.agents/skills/config-troubleshooting/SKILL.md +97 -0
  3. package/.agents/skills/generate-images/SKILL.md +667 -0
  4. package/.agents/skills/generate-video/SKILL.md +328 -0
  5. package/.agents/skills/image-grid/SKILL.md +96 -0
  6. package/.agents/skills/image-overlay/SKILL.md +66 -0
  7. package/.agents/skills/image-overlay/agents/openai.yaml +4 -0
  8. package/.agents/skills/image-overlay/scripts/overlay-image.js +218 -0
  9. package/.agents/skills/muse-management/SKILL.md +232 -0
  10. package/.agents/skills/refine-images/SKILL.md +192 -0
  11. package/.agents/skills/tired-girl/SKILL.md +131 -0
  12. package/.env.example +2 -0
  13. package/AGENTS.md +66 -0
  14. package/README.md +96 -0
  15. package/dist/cli.d.ts +2 -0
  16. package/dist/cli.js +214 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/clients/geminiClient.d.ts +37 -0
  19. package/dist/clients/geminiClient.js +129 -0
  20. package/dist/clients/geminiClient.js.map +1 -0
  21. package/dist/config/constants.d.ts +63 -0
  22. package/dist/config/constants.js +1005 -0
  23. package/dist/config/constants.js.map +1 -0
  24. package/dist/config/options.d.ts +1 -0
  25. package/dist/config/options.js +2 -0
  26. package/dist/config/options.js.map +1 -0
  27. package/dist/config/templates.d.ts +3 -0
  28. package/dist/config/templates.js +4 -0
  29. package/dist/config/templates.js.map +1 -0
  30. package/dist/config/tiredGirl.d.ts +3 -0
  31. package/dist/config/tiredGirl.js +9 -0
  32. package/dist/config/tiredGirl.js.map +1 -0
  33. package/dist/image/annotate.d.ts +2 -0
  34. package/dist/image/annotate.js +119 -0
  35. package/dist/image/annotate.js.map +1 -0
  36. package/dist/image/grid.d.ts +2 -0
  37. package/dist/image/grid.js +44 -0
  38. package/dist/image/grid.js.map +1 -0
  39. package/dist/index.d.ts +12 -0
  40. package/dist/index.js +13 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/pipelines/createMuse.d.ts +3 -0
  43. package/dist/pipelines/createMuse.js +49 -0
  44. package/dist/pipelines/createMuse.js.map +1 -0
  45. package/dist/pipelines/generateImages.d.ts +2 -0
  46. package/dist/pipelines/generateImages.js +140 -0
  47. package/dist/pipelines/generateImages.js.map +1 -0
  48. package/dist/pipelines/generateTiredGirl.d.ts +2 -0
  49. package/dist/pipelines/generateTiredGirl.js +73 -0
  50. package/dist/pipelines/generateTiredGirl.js.map +1 -0
  51. package/dist/pipelines/generateVideo.d.ts +2 -0
  52. package/dist/pipelines/generateVideo.js +27 -0
  53. package/dist/pipelines/generateVideo.js.map +1 -0
  54. package/dist/pipelines/refineImage.d.ts +2 -0
  55. package/dist/pipelines/refineImage.js +28 -0
  56. package/dist/pipelines/refineImage.js.map +1 -0
  57. package/dist/pipelines/resolve.d.ts +11 -0
  58. package/dist/pipelines/resolve.js +74 -0
  59. package/dist/pipelines/resolve.js.map +1 -0
  60. package/dist/pipelines/upscaleImage.d.ts +2 -0
  61. package/dist/pipelines/upscaleImage.js +23 -0
  62. package/dist/pipelines/upscaleImage.js.map +1 -0
  63. package/dist/prompt/buildPrompt.d.ts +4 -0
  64. package/dist/prompt/buildPrompt.js +322 -0
  65. package/dist/prompt/buildPrompt.js.map +1 -0
  66. package/dist/prompt/tiredGirlPrompt.d.ts +3 -0
  67. package/dist/prompt/tiredGirlPrompt.js +33 -0
  68. package/dist/prompt/tiredGirlPrompt.js.map +1 -0
  69. package/dist/storage/files.d.ts +15 -0
  70. package/dist/storage/files.js +34 -0
  71. package/dist/storage/files.js.map +1 -0
  72. package/dist/storage/museStore.d.ts +5 -0
  73. package/dist/storage/museStore.js +26 -0
  74. package/dist/storage/museStore.js.map +1 -0
  75. package/dist/types.d.ts +169 -0
  76. package/dist/types.js +2 -0
  77. package/dist/types.js.map +1 -0
  78. package/examples/generate.d.ts +1 -0
  79. package/examples/generate.js +28 -0
  80. package/examples/generate.js.map +1 -0
  81. package/examples/generate.ts +30 -0
  82. package/examples/muse.d.ts +1 -0
  83. package/examples/muse.js +18 -0
  84. package/examples/muse.js.map +1 -0
  85. package/examples/muse.ts +20 -0
  86. package/examples/video.d.ts +1 -0
  87. package/examples/video.js +18 -0
  88. package/examples/video.js.map +1 -0
  89. package/examples/video.ts +20 -0
  90. package/logo-round.png +0 -0
  91. package/logo.jpeg +0 -0
  92. package/package.json +27 -0
  93. package/src/cli.ts +259 -0
  94. package/src/clients/geminiClient.ts +168 -0
  95. package/src/config/constants.ts +1105 -0
  96. package/src/config/options.ts +15 -0
  97. package/src/config/templates.ts +4 -0
  98. package/src/config/tiredGirl.ts +11 -0
  99. package/src/image/annotate.ts +139 -0
  100. package/src/image/grid.ts +58 -0
  101. package/src/index.ts +27 -0
  102. package/src/pipelines/createMuse.ts +76 -0
  103. package/src/pipelines/generateImages.ts +203 -0
  104. package/src/pipelines/generateTiredGirl.ts +86 -0
  105. package/src/pipelines/generateVideo.ts +36 -0
  106. package/src/pipelines/refineImage.ts +36 -0
  107. package/src/pipelines/resolve.ts +88 -0
  108. package/src/pipelines/upscaleImage.ts +30 -0
  109. package/src/prompt/buildPrompt.ts +380 -0
  110. package/src/prompt/tiredGirlPrompt.ts +35 -0
  111. package/src/storage/files.ts +41 -0
  112. package/src/storage/museStore.ts +31 -0
  113. package/src/types.ts +198 -0
  114. package/tsconfig.json +15 -0
@@ -0,0 +1,1005 @@
1
+ export const DEFAULT_IMAGE_COUNT = 4;
2
+ export const UPSCALE_CREDIT_COST = 5;
3
+ export const REFINE_CREDIT_COST = 5;
4
+ export const GENERATE_CREDIT_COST = 5;
5
+ export const VIDEO_GENERATION_CREDIT_COST = 20;
6
+ // Video Generation Configuration
7
+ export const VIDEO_ENABLED_TEMPLATES = [
8
+ 'hand_model',
9
+ 'neck_model',
10
+ 'ear_model',
11
+ 'flatlay_creative',
12
+ 'floating_minimal',
13
+ 'half_body_muse'
14
+ ];
15
+ export const isVideoEnabledTemplate = (templateId) => {
16
+ return VIDEO_ENABLED_TEMPLATES.includes(templateId);
17
+ };
18
+ // Muse Configuration
19
+ export const MUSE_ENABLED_TEMPLATES = ['half_body_muse'];
20
+ export const MUSE_GENERATION_CREDIT_COST = 5; // Cost when generating WITH a Muse
21
+ export const MUSE_BATCH_SIZE = 3; // Variations generated per batch
22
+ export const MUSE_BATCH_CREDIT_COST = GENERATE_CREDIT_COST * MUSE_BATCH_SIZE; // 15 credits per batch
23
+ export const REQUIRED_MUSE_VARIATIONS = 3; // Exact number needed to finalize a Muse
24
+ export const MAX_MUSES_PER_USER = 3;
25
+ export const isMuseEnabledTemplate = (templateId) => {
26
+ return MUSE_ENABLED_TEMPLATES.includes(templateId);
27
+ };
28
+ export const TEMPLATES = [
29
+ {
30
+ id: 'hand_model',
31
+ name: 'Hand Model',
32
+ description: 'Elegant close-up on a model\'s hand, perfect for rings and bracelets.',
33
+ visualUrl: '/template_hand.png',
34
+ basePrompt: 'An authentic editorial close-up photograph of a model\'s hand, wrist, and forearm wearing the specific jewelry piece(s) shown. IMPORTANT: NO face, head, or shoulders visible - focus on the hand area only. The hand and lower arm may be bare or elegantly sleeved. Authentic skin texture and natural lighting. The hand pose is soft, relaxed, and elegant. Shot with a macro lens, slight film grain.',
35
+ customizationLabel: 'Nail Polish & Manicure Style',
36
+ customizationOptions: [
37
+ { id: 'nail_nude', name: 'Soft Nude', value: 'manicured nails with a soft nude polish', visualColor: '#EBCFB8' },
38
+ { id: 'nail_red', name: 'Classic Red', value: 'manicured nails with a deep, glossy classic red polish', visualColor: '#8B0000' },
39
+ { id: 'nail_french', name: 'French Manicure', value: 'classic french tip manicure', visualColor: '#FDF5E6' },
40
+ { id: 'nail_natural', name: 'Natural & Clean', value: 'clean, natural unpainted nails with a clear healthy coat', visualColor: '#F3EFE0' },
41
+ { id: 'nail_dark', name: 'Noir / Dark', value: 'chic dark black or burgundy nail polish', visualColor: '#1A1A1A' }
42
+ ]
43
+ },
44
+ {
45
+ id: 'neck_model',
46
+ name: 'Neckline Portrait',
47
+ description: 'Sophisticated portrait focusing on the neck and collarbone, ideal for necklaces.',
48
+ visualUrl: '/template_neck.png',
49
+ basePrompt: 'A cinematic fashion portrait focused on a [ETHNICITY] female model\'s neck and collarbone area wearing the specific jewelry piece(s) shown. Real human skin texture, visible pores, natural skin variation. Elegant posture, natural high-end magazine aesthetic, Kodak Portra 400.',
50
+ customizationLabel: 'Wardrobe & Neckline',
51
+ customizationOptions: [
52
+ { id: 'wear_skin', name: 'Bare Skin (Strapless)', value: 'wearing a strapless top, showcasing bare shoulders and collarbone', visualImage: '/bare_skin.png' },
53
+ { id: 'wear_silk', name: 'White Silk Shirt', value: 'wearing an unbuttoned white silk collared shirt', visualImage: '/silk_shirt.png' },
54
+ { id: 'wear_black', name: 'Black Turtleneck', value: 'wearing a sleek black turtleneck sweater', visualImage: '/turtleneck.png' },
55
+ { id: 'wear_gown', name: 'Evening Gown', value: 'wearing an elegant deep-v evening gown', visualImage: '/evening_gown.png' },
56
+ { id: 'wear_kaftan', name: 'Modern Kaftan', value: 'wearing a subtle, high-end embroidered Moroccan kaftan neckline', visualImage: '/kaftan.png' }
57
+ ],
58
+ tertiaryCustomizationLabel: 'Makeup Level',
59
+ tertiaryCustomizationOptions: [
60
+ { id: 'makeup_none', name: 'Bare / Natural', value: 'completely bare faced, no makeup, fresh natural skin', visualColor: '#FFF5EE' },
61
+ { id: 'makeup_minimal', name: 'Minimal', value: 'subtle natural makeup with light foundation and soft neutral tones', visualColor: '#F5E6D3' },
62
+ { id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
63
+ { id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
64
+ { id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
65
+ ]
66
+ },
67
+ {
68
+ id: 'ear_model',
69
+ name: 'Ear Detail',
70
+ description: 'Intimate side profile shot highlighting earrings.',
71
+ visualUrl: '/template_ear.png',
72
+ basePrompt: 'An extreme macro photography shot of a [ETHNICITY] female model\'s ear wearing the specific jewelry piece(s) shown. TIGHT FRAMING: Focus strictly on the ear and immediate surrounding area. The model is wearing a high-neck garment or elegant fabric is visible at the very bottom of the frame - NO bare shoulders or bare chest visible. Focus on the interplay of light on the jewelry and the natural texture of the skin. Soft focus falloff, natural skin texture.',
73
+ customizationLabel: 'Hairstyle Context',
74
+ customizationOptions: [
75
+ { id: 'hair_tucked', name: 'Tucked Behind Ear', value: '[HAIR_COLOR] hair neatly tucked behind the ear', visualImage: '/hair_tucked.jpeg' },
76
+ { id: 'hair_updo', name: 'Elegant Updo', value: '[HAIR_COLOR] hair styled in an elegant high bun, exposing the ear', visualImage: '/hair_updo.jpeg' },
77
+ { id: 'hair_waves', name: 'Loose Waves', value: 'soft, [HAIR_COLOR] loose waves framing the face but pulled back from the ear', visualImage: '/hair_waves.jpeg' },
78
+ { id: 'hair_sleek', name: 'Sleek & Straight', value: 'sleek straight [HAIR_COLOR] hair pulled back', visualImage: '/hair_sleek.jpeg' }
79
+ ],
80
+ tertiaryCustomizationLabel: 'Makeup Level',
81
+ tertiaryCustomizationOptions: [
82
+ { id: 'makeup_none', name: 'Bare / Natural', value: 'completely bare faced, no makeup, fresh natural skin', visualColor: '#FFF5EE' },
83
+ { id: 'makeup_minimal', name: 'Minimal', value: 'subtle natural makeup with light foundation and soft neutral tones', visualColor: '#F5E6D3' },
84
+ { id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
85
+ { id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
86
+ { id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
87
+ ]
88
+ },
89
+ {
90
+ id: 'flatlay_creative',
91
+ name: 'Creative Flatlay',
92
+ description: 'Artistic arrangement on a textured surface, non-model.',
93
+ visualUrl: '/template_flatlay.png',
94
+ 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.',
95
+ customizationLabel: 'Surface & Display',
96
+ customizationOptions: [
97
+ { id: 'surf_marble', name: 'White Marble', value: 'placed on a luxurious white carrara marble surface', visualColor: '#F0F0F0' },
98
+ { id: 'surf_stone', name: 'Dark Slate', value: 'placed on a textured dark grey slate stone surface', visualColor: '#2F4F4F' },
99
+ { id: 'surf_velvet', name: 'Beige Velvet', value: 'placed on soft beige velvet fabric', visualColor: '#E3CDB8' },
100
+ { id: 'surf_wood', name: 'Aged Wood', value: 'placed on rich, dark aged mahogany wood', visualColor: '#5C4033' },
101
+ { id: 'surf_sand', name: 'Fine Sand', value: 'placed on rippled, fine white sand', visualColor: '#F5F5DC' },
102
+ { id: 'surf_pedestal', name: 'Geometric Pedestal', value: 'displayed on a minimal matte geometric pedestal or cube, architectural and sculptural', visualColor: '#3D3D3D' },
103
+ { id: 'surf_riser', name: 'Stone Riser', value: 'elevated on a raw natural stone riser or block, organic texture contrasting with polished jewelry', visualColor: '#8B8680' }
104
+ ]
105
+ },
106
+ {
107
+ id: 'floating_minimal',
108
+ name: 'Floating Minimalist',
109
+ description: 'Jewelry suspended in mid-air with dramatic lighting.',
110
+ visualUrl: '/template_floating.png',
111
+ basePrompt: 'A minimalist product shot where the specific jewelry piece(s) shown appear to be suspended. Clean composition, dramatic lighting, high contrast, sharp 8k resolution.',
112
+ customizationLabel: 'Lighting Mood',
113
+ customizationOptions: [
114
+ { id: 'light_soft', name: 'Soft & Diffused', value: 'soft, diffused cloud-like lighting with minimal shadows', visualColor: '#FFFFFF' },
115
+ { id: 'light_hard', name: 'Hard Contrast', value: 'hard, dramatic direct lighting with sharp shadows', visualColor: '#000000' },
116
+ { id: 'light_warm', name: 'Golden Glow', value: 'warm, golden sunset-hued lighting', visualColor: '#FFD700' },
117
+ { id: 'light_cool', name: 'Cool Steel', value: 'cool, bluish steel-toned professional lighting', visualColor: '#B0C4DE' }
118
+ ]
119
+ },
120
+ {
121
+ id: 'half_body_muse',
122
+ name: 'The Editorial Muse',
123
+ description: 'A dynamic waist-up fashion shot showcasing how the jewelry complements a complete look.',
124
+ visualUrl: '/template_muse.png',
125
+ 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 but smooth skin texture, flyaway hairs, cinematic lighting, shot on film.',
126
+ customizationLabel: 'Fashion Style & Outfit',
127
+ customizationOptions: [
128
+ { id: 'outfit_blazer', name: 'Power Suit (Blazer)', value: 'wearing a sharp, tailored oversized blazer over a sophisticated inner layer (such as a silk camisole, a crisp white collared shirt, or a high-neck blouse). Confident, modern business-chic aesthetic', visualImage: '/power_blazer.png' },
129
+ { id: 'outfit_evening', name: 'Evening Glamour', value: 'wearing a luxurious silk evening dress. Sophisticated, night-out aesthetic', visualImage: '/evening_glamour.png' },
130
+ { 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' },
131
+ { id: 'outfit_knit', name: 'Cashmere Knit', value: 'wearing a soft, textured cashmere sweater. Cozy, quiet-luxury aesthetic', visualImage: '/cashmere_outfit.png' },
132
+ { id: 'outfit_silk', name: 'Silk Shirt', value: 'wearing an elegant unbuttoned silk collared shirt, effortlessly chic. Classic, timeless sophistication', visualImage: '/silk_shirt.png' },
133
+ { id: 'outfit_turtleneck', name: 'Turtleneck', value: 'wearing a sleek fitted turtleneck. Clean, modern minimalist aesthetic that lets the jewelry stand out', visualImage: '/turtleneck.png' }
134
+ ],
135
+ secondaryCustomizationLabel: 'Nail Polish',
136
+ secondaryCustomizationOptions: [
137
+ { id: 'nail_nude', name: 'Soft Nude', value: 'manicured nails with a soft beige nude polish', visualColor: '#EBCFB8' },
138
+ { id: 'nail_red', name: 'Classic Red', value: 'manicured nails with a deep, glossy classic red polish', visualColor: '#8B0000' },
139
+ { id: 'nail_french', name: 'French Manicure', value: 'classic french tip manicure', visualColor: '#FDF5E6' },
140
+ { id: 'nail_natural', name: 'Natural & Clean', value: 'clean, natural unpainted nails with a clear healthy coat', visualColor: '#F3EFE0' },
141
+ { id: 'nail_dark', name: 'Noir / Dark', value: 'chic dark black or burgundy nail polish', visualColor: '#1A1A1A' }
142
+ ],
143
+ tertiaryCustomizationLabel: 'Makeup Level',
144
+ tertiaryCustomizationOptions: [
145
+ { id: 'makeup_none', name: 'Bare / Natural', value: 'completely bare faced, no makeup, fresh natural skin', visualColor: '#FFF5EE' },
146
+ { id: 'makeup_minimal', name: 'Minimal', value: 'subtle natural makeup with light foundation and soft neutral tones', visualColor: '#F5E6D3' },
147
+ { id: 'makeup_soft', name: 'Soft Glam', value: 'polished elegant makeup with defined features, warm tones, sophisticated', visualColor: '#E8C4A8' },
148
+ { id: 'makeup_full', name: 'Full Glam', value: 'bold glamorous makeup with defined eyes, statement lips, high-fashion finish', visualColor: '#CD9575' },
149
+ { id: 'makeup_editorial', name: 'Editorial / Artistic', value: 'artistic editorial makeup with creative elements, runway-inspired, avant-garde', visualColor: '#8B4513' }
150
+ ]
151
+ },
152
+ {
153
+ id: 'romance_proposal',
154
+ name: 'Romance & Proposal',
155
+ description: 'Emotional engagement ring moments — proposals, hand-in-hand, intimate dinners.',
156
+ visualUrl: '/template_romance.jpeg',
157
+ basePrompt: 'An intimate, emotionally powerful photograph capturing a romantic moment centered on jewelry. The image should feel like a stolen frame from a real love story — authentic, tender, and deeply human. Real skin texture, natural light, emotional depth.',
158
+ customizationLabel: 'Moment & Scene',
159
+ customizationOptions: [
160
+ { id: 'moment_proposal', name: 'The Proposal', value: 'down on one knee, ring box open, partner\'s surprised expression, emotional depth, authentic proposal moment', visualImage: '/the_proposal.png' },
161
+ { id: 'moment_said_yes', name: 'Just Said Yes', value: 'hand outstretched showing new ring, tears of joy, intimate close-up, pure elation', visualImage: '/just_said_yes.png' },
162
+ { id: 'moment_hand_in_hand', name: 'Hand in Hand', value: 'intertwined fingers with rings visible, walking or seated, tender connection between two people', visualImage: '/hand_in_hand.png' },
163
+ { id: 'moment_dinner', name: 'Intimate Dinner', value: 'candlelit setting, hand reaching across table, ring catching warm light, romantic dinner scene', visualImage: '/intimate_dinner.png' },
164
+ { id: 'moment_promise', name: 'The Promise', value: 'extreme close-up of hands exchanging a ring, soft focus background, sacred moment of commitment', visualImage: '/the_promise.png' }
165
+ ],
166
+ secondaryCustomizationLabel: 'Setting',
167
+ secondaryCustomizationOptions: [
168
+ { id: 'setting_garden', name: 'Garden / Outdoor', value: 'lush garden or outdoor natural setting with greenery and soft daylight', visualColor: '#228B22' },
169
+ { id: 'setting_restaurant', name: 'Candlelit Restaurant', value: 'intimate candlelit restaurant with warm amber lighting and rich wood tones', visualColor: '#8B4513' },
170
+ { id: 'setting_beach', name: 'Beach at Sunset', value: 'beach at sunset with golden orange light, ocean waves, warm sand', visualColor: '#FF8C00' },
171
+ { id: 'setting_home', name: 'Cozy at Home', value: 'cozy home interior with warm lighting, soft blankets, intimate domestic comfort', visualColor: '#DEB887' },
172
+ { id: 'setting_rooftop', name: 'Rooftop City Views', value: 'rooftop with city skyline views at twilight, urban romance, dramatic backdrop', visualColor: '#4A4A4A' },
173
+ { id: 'setting_winter', name: 'Winter Snow', value: 'winter snow scene with soft white light, frost, cozy warmth against cold beauty', visualColor: '#F0F8FF' }
174
+ ],
175
+ tertiaryCustomizationLabel: 'Nail Polish & Manicure Style',
176
+ tertiaryCustomizationOptions: [
177
+ { id: 'nail_nude', name: 'Soft Nude', value: 'manicured nails with a soft nude polish', visualColor: '#EBCFB8' },
178
+ { id: 'nail_red', name: 'Classic Red', value: 'manicured nails with a deep, glossy classic red polish', visualColor: '#8B0000' },
179
+ { id: 'nail_french', name: 'French Manicure', value: 'classic french tip manicure', visualColor: '#FDF5E6' },
180
+ { id: 'nail_natural', name: 'Natural & Clean', value: 'clean, natural unpainted nails with a clear healthy coat', visualColor: '#F3EFE0' },
181
+ { id: 'nail_dark', name: 'Noir / Dark', value: 'chic dark black or burgundy nail polish', visualColor: '#1A1A1A' }
182
+ ]
183
+ },
184
+ {
185
+ id: 'museum_exhibit',
186
+ name: 'Museum Exhibit',
187
+ description: 'Jewelry displayed as if in the Louvre/Met with museum lighting.',
188
+ visualUrl: '/template_museum.jpeg',
189
+ basePrompt: 'A museum-quality photograph of the specific jewelry piece(s) shown displayed as a priceless exhibit in a world-class museum. Professional museum lighting, archival presentation, the piece commands reverence and awe as if it belongs in the Louvre or the Metropolitan Museum of Art.',
190
+ customizationLabel: 'Museum Style',
191
+ customizationOptions: [
192
+ { id: 'museum_classical', name: 'Classical Gallery', value: 'classical gallery with marble walls, gilded frames, velvet ropes, warm spotlights, timeless grandeur', visualImage: '/museum_classical.png' },
193
+ { id: 'museum_modern', name: 'Modern Art Museum', value: 'modern art museum with white walls, minimal design, single dramatic spotlight, clean lines, contemporary reverence', visualImage: '/museum_modern.png' },
194
+ { id: 'museum_egyptian', name: 'Ancient Egyptian Wing', value: 'ancient Egyptian wing with sandstone, hieroglyphs, gold accents, archaeological grandeur, pharaonic splendor', visualImage: '/museum_egyptian.png' },
195
+ { id: 'museum_baroque', name: 'Baroque Palace', value: 'baroque palace gallery with chandeliers, gilt mirrors, deep jewel-toned velvet, opulent European grandeur', visualImage: '/museum_baroque.png' },
196
+ { id: 'museum_natural_history', name: 'Natural History Museum', value: 'natural history museum with glass vitrines, specimen labels, wood cabinets, scientific reverence and scholarly display', visualImage: '/museum_natural.png' },
197
+ { id: 'museum_art_deco', name: 'Art Deco Gallery', value: 'Art Deco gallery with geometric patterns, brass fixtures, black lacquer, 1920s glamour and sophistication', visualImage: '/museum_deco.png' }
198
+ ],
199
+ secondaryCustomizationLabel: 'Display Type',
200
+ secondaryCustomizationOptions: [
201
+ { id: 'display_vitrine', name: 'Glass Vitrine / Case', value: 'displayed inside an elegant glass vitrine case with museum-grade lighting', visualColor: '#E8E8E8' },
202
+ { id: 'display_pedestal', name: 'Velvet Pedestal', value: 'displayed on a rich velvet pedestal with focused spotlight from above', visualColor: '#4A0E0E' },
203
+ { id: 'display_stand', name: 'Open Display on Stand', value: 'displayed openly on a minimal museum stand, accessible and commanding', visualColor: '#C0C0C0' },
204
+ { id: 'display_wall', name: 'Museum Wall Mount', value: 'mounted on museum wall with professional track lighting and descriptive placard', visualColor: '#F5F5DC' },
205
+ { id: 'display_alcove', name: 'Illuminated Alcove', value: 'placed in an illuminated alcove with dramatic recessed lighting and shadow play', visualColor: '#2C2C2C' }
206
+ ]
207
+ },
208
+ {
209
+ id: 'romantic_mood',
210
+ name: 'Romantic Mood',
211
+ description: 'Jewelry styled with candles, roses, petals, love letters — pure romance.',
212
+ visualUrl: '/template_romantic_mood.jpeg',
213
+ basePrompt: 'A dreamy, intimate still-life photograph of the specific jewelry piece(s) shown. The scene feels like a stolen glimpse into a love story — soft, warm, emotionally charged. No human model, no body parts. Professional product photography with cinematic warmth and shallow depth of field.',
214
+ customizationLabel: 'Romantic Props',
215
+ customizationOptions: [
216
+ { id: 'prop_rose_petals', name: 'Scattered Rose Petals', value: 'jewelry resting on or surrounded by softly scattered red and blush rose petals, romantic and timeless, petals in various stages of bloom', visualImage: '/romantic_petals.png' },
217
+ { id: 'prop_candles', name: 'Candlelight Scene', value: 'jewelry placed beside one or two elegant lit candles, warm flickering light, soft wax drips, intimate and minimal candlelit atmosphere — less is more', visualImage: '/romantic_candles.png' },
218
+ { id: 'prop_love_letter', name: 'Love Letter', value: 'jewelry resting on a handwritten love letter with vintage paper, fountain pen nearby, wax seal, romantic calligraphy, old-world devotion', visualImage: '/romantic_letter.png' },
219
+ { id: 'prop_silk_lace', name: 'Silk & Lace', value: 'jewelry draped over delicate ivory silk and vintage lace fabrics, feminine and intimate, soft folds and textures, boudoir elegance', visualImage: '/romantic_silk.png' },
220
+ { id: 'prop_champagne', name: 'Champagne Toast', value: 'jewelry beside crystal champagne flutes with golden bubbles, celebration and romance, luxury and effervescence', visualImage: '/romantic_champagne.png' },
221
+ { id: 'prop_perfume', name: 'Perfume & Vanity', value: 'jewelry arranged on an elegant vanity table with a crystal perfume bottle, vintage mirror, powder puff, old Hollywood glamour', visualImage: '/romantic_perfume.png' },
222
+ { id: 'prop_fresh_roses', name: 'Fresh Rose Bouquet', value: 'jewelry nestled among a lush bouquet of fresh garden roses in full bloom, abundant petals, romantic overflow, the jewelry as the heart of the arrangement', visualImage: '/romantic_roses.png' },
223
+ { id: 'prop_gift_box', name: 'The Gift', value: 'jewelry in an open ring box or gift box with satin ribbon, tissue paper, the moment of unwrapping a precious gift, anticipation and surprise', visualImage: '/romantic_gift.png' }
224
+ ],
225
+ secondaryCustomizationLabel: 'Mood & Light',
226
+ secondaryCustomizationOptions: [
227
+ { id: 'mood_candlelight', name: 'Warm Candlelight', value: 'warm flickering candlelight, deep amber tones, dancing shadows, intimate and enveloping', visualColor: '#E8A317' },
228
+ { id: 'mood_morning', name: 'Soft Morning Light', value: 'soft diffused morning window light, bright and airy, gentle warmth, fresh and hopeful', visualColor: '#FFF8F0' },
229
+ { 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' },
230
+ { id: 'mood_golden', name: 'Golden Hour Glow', value: 'rich golden hour warmth, everything bathed in honeyed light, long soft shadows, magic hour romance', visualColor: '#DAA520' },
231
+ { 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' }
232
+ ]
233
+ }
234
+ ];
235
+ export const SKIN_TONES = [
236
+ { id: 'fair', name: 'Porcelain', value: 'very fair porcelain skin tone with natural pink undertones', visualColor: '#F3EFE0' },
237
+ { id: 'light', name: 'Light', value: 'light skin tone with warm undertones and natural texture', visualColor: '#EBCFB8' },
238
+ { id: 'medium', name: 'Tan', value: 'sun-kissed tan medium skin tone with golden glow', visualColor: '#D3A377' },
239
+ { id: 'deep', name: 'Deep', value: 'rich deep bronze skin tone with natural highlights', visualColor: '#8D5524' },
240
+ { id: 'dark', name: 'Ebony', value: 'deep ebony skin tone with luminous sheen', visualColor: '#422816' },
241
+ ];
242
+ // Regional descriptors for adding diversity within ethnicities
243
+ export const ETHNICITY_REGIONS = {
244
+ 'european': [
245
+ 'Scandinavian (Swedish/Norwegian)', 'Mediterranean (Italian/Greek)', 'French',
246
+ 'Slavic', 'British Isles', 'Germanic', 'Spanish'
247
+ ],
248
+ 'moroccan': [
249
+ 'Northern Moroccan (Tangier/Tetouan)', 'Amazigh/Berber (Atlas Mountains)',
250
+ 'Fessi (Fes heritage)', 'Sahraouiya (Southern Morocco)', 'Casablancan (Urban Modern)'
251
+ ],
252
+ 'middle_east': [
253
+ 'Levantine (Lebanese/Syrian)', 'Gulf Arab (Emirati/Saudi)', 'Turkish',
254
+ 'Persian', 'Egyptian'
255
+ ],
256
+ 'african': [
257
+ 'West African (Nigerian/Ghanaian)', 'East African (Ethiopian/Kenyan)',
258
+ 'South African', 'Senegalese', 'Sudanese'
259
+ ],
260
+ 'asian': [
261
+ 'East Asian (Japanese/Korean)', 'Southeast Asian (Thai/Vietnamese)',
262
+ 'Chinese', 'Filipino', 'Indonesian'
263
+ ]
264
+ };
265
+ export const ETHNICITIES = [
266
+ { id: 'european', name: 'European', value: 'European female model', visualImage: '/ethnicity_european.jpeg' },
267
+ { id: 'moroccan', name: 'Moroccan', value: 'Moroccan/North African female model', visualImage: '/ethnicity_moroccan.jpeg' },
268
+ { id: 'middle_east', name: 'Middle Eastern', value: 'Middle Eastern female model', visualImage: '/ethnicity_middle_east.jpeg' },
269
+ { id: 'african', name: 'African', value: 'Black African female model', visualImage: '/ethnicity_african.jpeg' },
270
+ { id: 'asian', name: 'East Asian', value: 'East Asian female model', visualImage: '/ethnicity_asian.jpeg' },
271
+ ];
272
+ export const HAIR_COLORS = [
273
+ { id: 'dark', name: 'Dark / Black', value: 'dark black hair', visualColor: '#1A1A1A' },
274
+ { id: 'brunette', name: 'Brunette', value: 'rich brown brunette hair', visualColor: '#4A3728' },
275
+ { id: 'blonde', name: 'Blonde', value: 'golden blonde hair', visualColor: '#E6CBA5' },
276
+ { id: 'red', name: 'Red / Auburn', value: 'deep auburn red hair', visualColor: '#8D4004' },
277
+ { id: 'grey', name: 'Silver / Grey', value: 'sophisticated silver grey hair', visualColor: '#C0C0C0' },
278
+ ];
279
+ export const BACKGROUNDS = [
280
+ { id: 'silk_cream', name: 'Cream Silk', value: 'soft cream colored flowing silk fabric', visualColor: '#FDFBD4' },
281
+ { id: 'velvet_black', name: 'Midnight Velvet', value: 'luxurious deep black velvet', visualColor: '#1a1a1a' },
282
+ { id: 'marble_white', name: 'Carrara Marble', value: 'clean white marble surface with subtle grey veins', visualColor: '#f0f0f0' },
283
+ { id: 'emerald_velvet', name: 'Emerald Velvet', value: 'rich emerald green velvet fabric with deep luxurious texture', visualColor: '#1B4332' },
284
+ { id: 'studio_grey', name: 'Studio Grey', value: 'neutral minimalist studio grey', visualColor: '#B0B0B0' },
285
+ { id: 'warm_beige', name: 'Warm Beige', value: 'warm aesthetic textured beige plaster', visualColor: '#E3CDB8' }
286
+ ];
287
+ export const LUXURY_INTERIOR_POOL = [
288
+ 'softly blurred background of a high-end luxury Parisian apartment interior, bokeh effect',
289
+ 'softly blurred background of a refined Milanese palazzo interior, warm marble and ornate mouldings, bokeh effect',
290
+ 'softly blurred background of a grand London townhouse interior, rich wood paneling and soft velvet, bokeh effect',
291
+ 'softly blurred background of an opulent Moroccan riad interior, intricate zellige tiles and arched doorways, bokeh effect',
292
+ 'softly blurred background of a sleek modern penthouse interior, floor-to-ceiling windows and neutral tones, bokeh effect',
293
+ 'softly blurred background of a classic Viennese salon interior, gilded mirrors and crystal chandeliers, bokeh effect',
294
+ ];
295
+ export const getRandomLuxuryInterior = () => LUXURY_INTERIOR_POOL[Math.floor(Math.random() * LUXURY_INTERIOR_POOL.length)];
296
+ export const BACKGROUND_TYPES = [
297
+ { id: 'studio', name: 'Studio Flat', value: 'clean professional studio background, seamless infinity curve, minimal distractions', visualImage: '/studio_flat.png' },
298
+ { id: 'interior', name: 'Luxury Interior', value: 'softly blurred background of a high-end luxury apartment interior, bokeh effect', visualImage: '/luxury_interior.png' },
299
+ { id: 'exterior', name: 'Outdoors', value: 'softly blurred outdoor natural environment, cinematic bokeh', visualImage: '/outdoors.png' },
300
+ { id: 'texture', name: 'Macro Texture', value: 'abstract macro textural background (silk or stone) filling the frame', visualImage: '/texture.png' },
301
+ ];
302
+ export const VIBES = [
303
+ { id: 'golden_hour', name: 'Golden Hour', value: 'bathed in warm natural sunlight, soft shadows, warm color temperature, shot on Kodak Portra 400 film', visualImage: '/golden_hour.png' },
304
+ { id: 'moody_chic', name: 'Moody Chic', value: 'dramatic shadows, high contrast, moody cinematic lighting, vogue editorial style, sharp focus', visualImage: '/moody_chic.png' },
305
+ { id: 'clean_minimal', name: 'Clean Minimal', value: 'bright evenly lit, soft shadows, airy, scandinavian minimalism, shot on 50mm lens', visualImage: '/clean_minimal.png' },
306
+ { 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' },
307
+ ];
308
+ export const OCCASIONS = [
309
+ {
310
+ id: 'moroccan_wedding',
311
+ name: 'Moroccan Wedding',
312
+ icon: '👰',
313
+ description: 'Traditional Moroccan wedding luxury aesthetic with rich cultural details',
314
+ autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
315
+ promptDetails: {
316
+ setting: 'Traditional Moroccan riad or palace interior with intricate zellige mosaic tilework in geometric patterns, ornate hand-carved cedar wood ceilings, horseshoe arches with detailed stucco work. Softly blurred background shows traditional Moroccan lanterns, silk cushions, and ornate metalwork',
317
+ atmosphere: 'Intimate, culturally rich, joyful and celebratory. The feeling of a traditional Moroccan wedding with authentic moments',
318
+ colorPalette: 'Rich jewel tones - deep crimson red, emerald green, royal purple, and abundant gold accents. Ivory and cream for contrast. Warm, luxurious color temperature',
319
+ 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',
320
+ 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'
321
+ }
322
+ },
323
+ {
324
+ id: 'eid_fitr',
325
+ name: 'Eid al-Fitr',
326
+ icon: '🌙',
327
+ description: 'Elegant celebration of Eid al-Fitr with festive, joyful atmosphere',
328
+ autoConfig: { vibe: 'clean_minimal', background: 'emerald_green', backgroundType: 'luxury_interior' },
329
+ promptDetails: {
330
+ setting: 'Bright, elegant interior with soft natural light. Background hints at celebration with blurred festive decorations, perhaps lanterns or delicate florals',
331
+ atmosphere: 'Joyful, celebratory, light and airy. Fresh and renewed spirit after Ramadan',
332
+ colorPalette: 'Emerald green, gold, white, and soft pastels. Fresh and luminous tones',
333
+ culturalElements: 'Subtle festive Eid elements - elegant Islamic geometric patterns, fresh flowers, refined decorative details',
334
+ styling: 'Model styled in celebration attire with polished, festive makeup and elegant hair. Joyful, refined aesthetic'
335
+ }
336
+ },
337
+ {
338
+ id: 'eid_adha',
339
+ name: 'Eid al-Adha',
340
+ icon: '🕌',
341
+ description: 'Sophisticated Eid al-Adha celebration with refined elegance',
342
+ autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
343
+ promptDetails: {
344
+ setting: 'Luxurious interior with warm, golden lighting. Sophisticated and dignified setting',
345
+ atmosphere: 'Dignified, celebratory, spiritually significant. Refined and elegant',
346
+ colorPalette: 'Rich gold, burgundy, deep greens, cream. Warm, sophisticated tones',
347
+ culturalElements: 'Elegant cultural references - refined Islamic art patterns, luxury fabrics, traditional elements in modern interpretation',
348
+ styling: 'Model styled with sophisticated elegance. Rich makeup, refined styling, traditional yet contemporary aesthetic'
349
+ }
350
+ },
351
+ {
352
+ id: 'henna_night',
353
+ name: 'Henna Night',
354
+ icon: '🎨',
355
+ description: 'Traditional Moroccan henna ceremony with intricate cultural elements',
356
+ autoConfig: { vibe: 'golden_hour', background: 'terracotta', backgroundType: 'luxury_interior' },
357
+ promptDetails: {
358
+ setting: 'Intimate Moroccan setting with warm ambient lighting. Background suggests traditional celebration space with cushions, lanterns, ornate details',
359
+ atmosphere: 'Intimate, feminine, ceremonial, warm and traditional. Pre-wedding celebration vibes',
360
+ colorPalette: 'Warm terracotta, deep orange, burgundy, gold. Earthy and rich with golden accents',
361
+ culturalElements: 'Intricate henna patterns prominently visible on hands if showing hands. Traditional lanterns, Moroccan textiles, ornate serving pieces. Rose water ambiance',
362
+ styling: 'Model styled as if at traditional henna ceremony. Elaborate henna designs, traditional jewelry, warm glowing makeup, cultural celebration aesthetic'
363
+ }
364
+ },
365
+ {
366
+ id: 'ramadan',
367
+ name: 'Ramadan',
368
+ icon: '⭐',
369
+ description: 'Serene Ramadan atmosphere with spiritual elegance',
370
+ autoConfig: { vibe: 'moody_chic', background: 'midnight_blue', backgroundType: 'luxury_interior' },
371
+ promptDetails: {
372
+ setting: 'Intimate evening interior with soft, moody lighting. Background suggests peaceful reflection space with subtle lantern glow',
373
+ atmosphere: 'Serene, spiritual, contemplative, elegant. Peaceful evening ambiance',
374
+ colorPalette: 'Deep midnight blue, silver, soft gold, white. Cool, peaceful tones with metallic accents',
375
+ culturalElements: 'Subtle Ramadan elements - soft lantern light, crescent moon motifs, dates, refined Islamic patterns, peaceful spiritual aesthetic',
376
+ styling: 'Model styled with serene, natural elegance. Soft, glowing makeup. Modest, refined aesthetic'
377
+ }
378
+ },
379
+ {
380
+ id: 'valentines',
381
+ name: "Valentine's Day",
382
+ icon: '❤️',
383
+ description: 'Romantic ambiance with rose petals and soft candlelight',
384
+ autoConfig: { vibe: 'romantic_soft', background: 'blush_pink', backgroundType: 'studio' },
385
+ promptDetails: {
386
+ setting: 'Soft, romantic setting with diffused natural light. Background suggests intimacy with blurred rose petals, soft fabrics, gentle candlelight',
387
+ atmosphere: 'Romantic, intimate, tender, dreamy. Soft and feminine energy',
388
+ colorPalette: 'Blush pink, soft red, cream, rose gold. Warm, romantic, delicate tones',
389
+ culturalElements: 'Rose petals scattered elegantly, soft romantic florals, intimate candlelight glow, love celebration aesthetic',
390
+ styling: 'Model styled with romantic, soft makeup. Natural, glowing skin. Dreamy, feminine aesthetic'
391
+ }
392
+ },
393
+ {
394
+ id: 'mothers_day',
395
+ name: "Mother's Day",
396
+ icon: '🌸',
397
+ description: 'Warm, tender atmosphere celebrating maternal love',
398
+ autoConfig: { vibe: 'golden_hour', background: 'soft_lavender', backgroundType: 'studio' },
399
+ promptDetails: {
400
+ setting: 'Warm, tender setting with soft natural light. Background hints at comfort and home with soft florals',
401
+ atmosphere: 'Warm, loving, tender, gentle. Celebrating maternal love and connection',
402
+ colorPalette: 'Soft lavender, warm peach, cream, gentle pastels. Warm, comforting tones',
403
+ culturalElements: 'Delicate spring flowers, soft fabrics, warm comforting aesthetic, celebration of motherhood',
404
+ styling: 'Model styled with warm, natural elegance. Soft makeup, genuine warmth. Maternal grace'
405
+ }
406
+ },
407
+ {
408
+ id: 'birthday',
409
+ name: 'Birthday',
410
+ icon: '🎂',
411
+ description: 'Celebratory and joyful setting with festive elements',
412
+ autoConfig: { vibe: 'clean_minimal', background: 'champagne_gold', backgroundType: 'studio' },
413
+ promptDetails: {
414
+ setting: 'Bright, celebratory setting with clean aesthetic. Background suggests festive celebration',
415
+ atmosphere: 'Joyful, celebratory, fun, elegant. Birthday celebration energy',
416
+ colorPalette: 'Champagne gold, white, soft pastels, metallic accents. Festive, bright tones',
417
+ culturalElements: 'Elegant celebration elements, refined party aesthetic, joyful festive details',
418
+ styling: 'Model styled for celebration with polished, festive makeup. Joyful, confident aesthetic'
419
+ }
420
+ },
421
+ {
422
+ id: 'anniversary',
423
+ name: 'Anniversary',
424
+ icon: '💍',
425
+ description: 'Elegant, timeless aesthetic for commemorating special milestones',
426
+ autoConfig: { vibe: 'golden_hour', background: 'gold', backgroundType: 'luxury_interior' },
427
+ promptDetails: {
428
+ setting: 'Elegant, timeless interior with warm lighting. Sophisticated romantic setting',
429
+ atmosphere: 'Timeless, elegant, romantic, commemorative. Celebrating enduring love',
430
+ colorPalette: 'Rich gold, champagne, cream, deep burgundy. Luxurious, timeless tones',
431
+ culturalElements: 'Elegant romantic details, luxurious fabrics, refined celebration aesthetic, timeless sophistication',
432
+ styling: 'Model styled with timeless elegance. Classic, sophisticated makeup. Enduring beauty'
433
+ }
434
+ },
435
+ {
436
+ id: 'graduation',
437
+ name: 'Graduation',
438
+ icon: '🎓',
439
+ description: 'Proud and accomplished atmosphere with sophisticated styling',
440
+ autoConfig: { vibe: 'clean_minimal', background: 'white', backgroundType: 'studio' },
441
+ promptDetails: {
442
+ setting: 'Clean, bright professional setting. Background suggests achievement and new beginnings',
443
+ atmosphere: 'Proud, accomplished, confident, hopeful. Celebrating achievement',
444
+ colorPalette: 'Clean white, navy blue, gold accents. Professional, accomplished tones',
445
+ culturalElements: 'Academic achievement aesthetic, professional polish, celebration of success',
446
+ styling: 'Model styled with confident, professional polish. Clean, sophisticated makeup. Achievement glow'
447
+ }
448
+ },
449
+ {
450
+ id: 'christmas',
451
+ name: 'Christmas',
452
+ icon: '🎄',
453
+ description: 'Festive holiday spirit with elegant seasonal decorations',
454
+ autoConfig: { vibe: 'golden_hour', background: 'forest_green', backgroundType: 'luxury_interior' },
455
+ promptDetails: {
456
+ setting: 'Festive, luxurious interior with warm holiday lighting. Background suggests elegant Christmas celebration',
457
+ atmosphere: 'Festive, warm, magical, elegant. Holiday celebration spirit',
458
+ colorPalette: 'Deep forest green, rich red, gold, cream. Classic holiday luxury tones',
459
+ culturalElements: 'Elegant holiday elements - pine branches, warm candlelight, luxurious seasonal decor, festive sophistication',
460
+ styling: 'Model styled with festive elegance. Rich, warm makeup. Holiday glamour'
461
+ }
462
+ },
463
+ {
464
+ id: 'new_year',
465
+ name: 'New Year',
466
+ icon: '✨',
467
+ description: 'Glamorous celebration with sparkle and sophistication',
468
+ autoConfig: { vibe: 'moody_chic', background: 'midnight_blue', backgroundType: 'luxury_interior' },
469
+ promptDetails: {
470
+ setting: 'Glamorous evening setting with dramatic lighting. Background suggests sophisticated celebration',
471
+ atmosphere: 'Glamorous, sophisticated, celebratory, hopeful. New beginnings energy',
472
+ colorPalette: 'Midnight blue, silver, gold, black. Dramatic, sophisticated evening tones',
473
+ culturalElements: 'Elegant evening celebration, sophisticated party aesthetic, champagne glamour, new year sparkle',
474
+ styling: 'Model styled with dramatic evening glamour. Bold, sophisticated makeup. Celebration elegance'
475
+ }
476
+ }
477
+ ];
478
+ // Pool of diverse photography hints for final generation to ensure variety in the batch
479
+ export const GENERATION_STYLE_POOL = [
480
+ // Standard & Commercial
481
+ "Dynamic 3/4 angle, model looking away from camera, focused on the jewelry.",
482
+ "Front-facing portrait, direct gaze at camera, confident and elegant.",
483
+ "Side profile shot, capturing the silhouette and necklace/earring details.",
484
+ "Soft, dreamy gaze looking down, highlighting the delicate mood and jewelry sparkle.",
485
+ "Slightly low angle, powerful and statuesque posture, showcasing the pieces with authority.",
486
+ "Slightly high angle, intimate and inviting perspective, looking up towards the lens.",
487
+ "Static and composed, perfect symmetry, high-fashion editorial style.",
488
+ // Dynamic & Motion
489
+ "Candid movement, caught-in-the-moment feel, perhaps a hand lightly adjusting a strand of hair.",
490
+ "Walking away from camera but looking back over the shoulder (dynamic motion blur on background).",
491
+ "Head thrown back in genuine laughter, exposing the neck fully, joyful and radiant.",
492
+ "Wind-blown hair sweeping across the face (but not hiding jewelry), creating energy and movement.",
493
+ "The 'Twist': Body turned one way, head turned the other, creating dynamic tension and neck lines.",
494
+ // Artistic & Moody
495
+ "Dramatic chiaroscuro lighting (high contrast), with one side of the face in deep shadow to pop the jewelry.",
496
+ "Dappled light effect (shadows of leaves or lace) falling across the face and neck.",
497
+ " dreamy, sun-flared shot with direct backlight causing a warm, hazy 'summer evening' glow.",
498
+ "Moody 'Film Noir' aesthetic, dark background, sharp rim lighting outlining the profile.",
499
+ "Reflected in a vintage mirror, focusing on the reflection rather than the subject directly.",
500
+ "Shooting through foreground elements (like out-of-focus glass or flowers) to create depth and bokeh.",
501
+ "Monochromatic color grading vibe, focusing strictly on texture and form.",
502
+ // Intimate & Detailed
503
+ "Extreme close crop focused intensely on the jewelry placement and micro skin texture.",
504
+ "Lying down on a textured surface (silk or grass), hair spread out, looking up at the camera.",
505
+ "Hands near face or neck, creating a frame for the jewelry with elegant finger placement.",
506
+ "Pensive expression with eyes slightly closed, focusing the viewer on the tactile quality of the jewelry.",
507
+ "Chin resting on crossed hands, intense eye contact, very shallow depth of field.",
508
+ "The 'Ear Tuck': Hand explicitly tucking hair behind the ear to reveal an earring.",
509
+ // Lifestyle & Context
510
+ "Model interacting with the environment (e.g., leaning against a wall or window), natural vibe.",
511
+ "A 'moment of preparation' look, looking down as if adjusting the clasp or admiring the piece.",
512
+ "Holding a glass or prop near the face, adding lifestyle context without obscuring the jewelry.",
513
+ "Shielding eyes from the 'sun' with a hand, casting interesting shadow patterns on the face.",
514
+ "Resting head on a hand, casual but elegant, creating a relaxed luxury feel.",
515
+ // Avant-Garde & High Fashion
516
+ "An artistic, slightly off-center composition (rule of thirds) for a modern magazine look.",
517
+ "A regal, upright posture with a serene, statue-like expression (timeless luxury).",
518
+ "Looking completely away from the camera at a distant point, creating a sense of mystery.",
519
+ "Wet-look hair styling or dewy skin texture for a fresh, modern editorial edge.",
520
+ "Shot from behind the shoulder, focusing on the back of the neck/ear (if earrings) or nape (if necklace).",
521
+ "A 'double profile' effect using a mirror or reflective surface in the composition.",
522
+ "Blurred motion in the hands while the face and jewelry remain tack sharp.",
523
+ "Very wide aperture (f/1.4), focusing strictly on the jewelry while the eyes are slightly soft.",
524
+ "Top-down view, looking up at the camera with a playful or inviting expression.",
525
+ "A 'Peeking' shot, partly obscured by a soft fabric or shadow, revealing the jewelry like a secret."
526
+ ];
527
+ // Hand Model specific style pool - focuses on hand poses, angles, and gestures
528
+ export const HAND_MODEL_STYLE_POOL = [
529
+ // Pose Variations
530
+ "Relaxed open palm facing up, fingers gently spread, jewelry catching the light from above.",
531
+ "Elegant fist with fingers softly curled inward, showcasing ring(s) from a three-quarter angle.",
532
+ "Hand resting flat on a surface with fingers naturally draped, captured from a low side profile.",
533
+ "Fingers delicately intertwined or lightly touching each other, creating an intimate gesture.",
534
+ "Hand reaching gracefully towards camera with subtle perspective distortion for drama.",
535
+ "Wrist elegantly turned to display bracelet details, fingers relaxed and slightly curved.",
536
+ "Single hand against fabric, fingers artfully spread to showcase multiple rings.",
537
+ "Palm pressing gently down on reflective surface, capturing jewelry and its mirror image.",
538
+ "Delicate pinch gesture between thumb and forefinger, ring prominently displayed.",
539
+ "Hand in a graceful 'dancer' position, wrist arched, fingers extended elegantly.",
540
+ // Angle Variations
541
+ "Overhead bird's-eye view looking directly down at the back of the hand, dramatic lighting.",
542
+ "Low angle looking up at the underside of wrist and graceful finger curves.",
543
+ "Three-quarter angle from the side, capturing both the top and profile of the hand.",
544
+ "Straight-on profile view of the hand edge, emphasizing a ring stack or bracelet.",
545
+ "Diagonal composition with hand entering the frame from the lower corner.",
546
+ "Dutch angle (tilted frame) for a dynamic, fashion-forward composition.",
547
+ "Extreme close-up macro shot focused on a single ring and surrounding skin texture.",
548
+ "Wide shot with hand small in frame against expansive negative space.",
549
+ // Dynamic Elements
550
+ "Hand emerging from or disappearing into soft shadow, creating mystery.",
551
+ "Dramatic shadow play with hand partially illuminated, partially in deep shadow.",
552
+ "Backlighting creating a glowing rim around the hand silhouette.",
553
+ "Hand interacting with falling fabric, silk, or chiffon material.",
554
+ "Fingers trailing through water or touching a reflective water surface.",
555
+ // Contextual & Lifestyle
556
+ "Hand delicately holding a flower stem or petal, organic and feminine.",
557
+ "Hand resting on textured marble surface, luxury and elegance emphasized.",
558
+ "Fingers lightly touching soft velvet or silk fabric.",
559
+ "Hand holding a vintage mirror or compact, partial reflection visible.",
560
+ "Hand against sun-warmed skin (bare shoulder visible, NO face), natural warmth.",
561
+ "Hand adjusting or touching the jewelry itself, a moment of admiration.",
562
+ "Hand resting on a book spine or holding an elegant pen, intellectual sophistication.",
563
+ "Hand wrapped around a crystal glass, celebration mood.",
564
+ // Wardrobe & Sleeve Variations (elegant/luxurious context)
565
+ "Bare wrist and forearm, clean and minimal, skin texture emphasized.",
566
+ "Hand emerging from a luxurious cashmere or wool sweater sleeve, cozy elegance.",
567
+ "Delicate lace sleeve visible at the wrist, romantic and feminine aesthetic.",
568
+ "Crisp silk blouse cuff framing the wrist, sophisticated and polished.",
569
+ "Flowing chiffon sleeve draping near the hand, ethereal and dreamy mood.",
570
+ "Tailored blazer sleeve ending at the wrist, powerful and refined.",
571
+ "Soft knit cardigan sleeve pushed up slightly, relaxed luxury feel.",
572
+ "Sheer organza or tulle sleeve adding texture without hiding the jewelry.",
573
+ "Velvet sleeve in rich jewel tone, opulent and editorial.",
574
+ "Classic [choose color] turtleneck sleeve, timeless minimalist elegance.",
575
+ ];
576
+ // Ear/Side Profile specific style pool - focuses on ear details, hair, and neckline
577
+ export const EAR_MODEL_STYLE_POOL = [
578
+ // Angles & Framing
579
+ "Extreme macro shot of the ear, focusing intensely on the earring details.",
580
+ "Side profile view, capturing the ear and the curve of the jawline.",
581
+ "Slightly behind the ear angle, showcasing the back of the earring and neck.",
582
+ "Front-on view of the ear (slightly angled), highlighting the earring's profile.",
583
+ "Dutch angle macro shot for a dynamic, artistic composition.",
584
+ // Hair & Interaction
585
+ "Hair gently tucked behind the ear, revealing the jewelry clearly.",
586
+ "A few loose strands of hair softly framing the ear, adding movement.",
587
+ "Hand lightly brushing hair away from the ear (fingers visible but out of focus).",
588
+ "Ear poking through a curtain of hair, creating a peek-a-boo effect.",
589
+ // Clothing & Context (Crucial for avoiding 'nude' look)
590
+ "High collar of a white silk blouse visible at the bottom frame.",
591
+ "Texture of a cozy knitted turtleneck visible at the neck area.",
592
+ "Edge of a sharp black blazer collar framing the neck area.",
593
+ "Soft chiffon scarf draped loosely around the neck (blurred in foreground).",
594
+ "Structure of a denim jacket collar visible, adding casual contrast.",
595
+ "Elegant evening gown strap visible on the shoulder.",
596
+ // Lighting & Mood
597
+ "Backlit ear, causing the cartilage to glow slightly (subsurface scattering).",
598
+ "Hard side lighting creating dramatic shadows in the ear's curves.",
599
+ "Soft window light illuminating the side of the face and ear.",
600
+ "Golden hour light hitting the earring directly, creating a flare.",
601
+ "Cool, moody shadows with the earring catching a single ray of light."
602
+ ];
603
+ // Flatlay specific style pool - focuses on arrangements and compositions
604
+ export const FLATLAY_STYLE_POOL = [
605
+ // Arrangement Styles
606
+ "Asymmetric arrangement with jewelry off-center, generous negative space on one side.",
607
+ "Geometric pattern layout with jewelry placed at golden ratio intersection points.",
608
+ "Scattered organic arrangement as if pieces were casually tossed onto the surface.",
609
+ "Linear diagonal arrangement with pieces flowing from corner to corner.",
610
+ "Circular composition with jewelry forming or following a subtle arc.",
611
+ "Minimalist single-piece hero shot with vast negative space surrounding it.",
612
+ "Clustered grouping in center with radiating shadows creating depth.",
613
+ "Stepped arrangement with pieces at different heights using subtle props.",
614
+ // Elevated & Pedestal Displays
615
+ "Jewelry displayed on a matte geometric cube or pedestal, moody dark background, architectural precision.",
616
+ "Ring perched atop a cylindrical stone riser, dramatic side lighting casting a long shadow.",
617
+ "Jewelry elevated on stacked geometric forms (cubes, cylinders, slabs) at varying heights, sculptural composition.",
618
+ "Single piece on a minimal plinth or column, centered, with vast dark negative space around it.",
619
+ "Jewelry resting on the edge of a geometric block, half in light and half in shadow, tension and balance.",
620
+ "Piece displayed on a raw stone fragment, irregular organic shape contrasting with polished metal.",
621
+ "Ring balanced on the corner of a tilted matte cube, gravity-defying display, dramatic angle.",
622
+ // Subtle Shadow & Mood
623
+ "Soft shaped shadow (heart, leaf, or geometric silhouette) falling naturally on the backdrop, as if cast by an off-camera object.",
624
+ "Gentle warm-toned side light with the opposite side falling into soft shadow, natural depth.",
625
+ "A single soft window-like light from above, the jewelry's own shadow becoming part of the composition.",
626
+ "Dappled light as if filtering through a window or foliage, soft organic shadow patterns on the surface.",
627
+ "Warm golden light from one side, the rest of the scene in soft muted tones, natural and intimate.",
628
+ // Lighting & Shadow (Classic)
629
+ "Dramatic directional lighting from the side creating long, elegant shadows.",
630
+ "Soft overhead diffused lighting for even, commercial product look.",
631
+ "Harsh spotlight creating defined shadows and high contrast.",
632
+ "Warm golden hour style lighting with long soft shadows.",
633
+ "Cool, clinical studio lighting emphasizing metallic reflections.",
634
+ "Backlit arrangement with glowing edges and rim lighting.",
635
+ // Surface & Context
636
+ "On raw, textured marble with natural veining patterns.",
637
+ "Against deep black velvet for maximum jewelry contrast.",
638
+ "On crumpled silk or satin fabric with natural folds and highlights.",
639
+ "Scattered on fine sand or natural stone surface.",
640
+ "On aged paper or vintage book pages for heritage feel.",
641
+ "Against concrete or terrazzo for modern, architectural vibe.",
642
+ "Surrounded by dried flowers or botanical elements.",
643
+ "With water droplets or morning dew on the surface nearby.",
644
+ ];
645
+ // Floating/suspended jewelry specific style pool
646
+ export const FLOATING_STYLE_POOL = [
647
+ // Lighting Variations
648
+ "Dramatic rim lighting from behind, jewelry edges glowing against dark void.",
649
+ "Soft diffused glow from below creating ethereal, levitating effect.",
650
+ "Sharp directional spotlight creating a defined shadow beneath the floating piece.",
651
+ "Multiple colored light sources creating complex, editorial shadow play.",
652
+ "Single harsh light source from above, theatrical and dramatic.",
653
+ "Subtle gradient background transitioning from dark to light.",
654
+ // Orientation & Angle
655
+ "Jewelry captured mid-rotation with subtle motion blur on edges.",
656
+ "Perfectly still and centered, symmetrical and commanding.",
657
+ "Tilted at dynamic angle as if caught mid-fall.",
658
+ "Viewed from slightly below, looking up at the floating piece.",
659
+ "Extreme close-up on just one element (clasp, stone, or chain link).",
660
+ "Multiple pieces floating at different depths, creating layered composition.",
661
+ // Atmospheric Effects
662
+ "Surrounded by subtle smoke wisps for mysterious atmosphere.",
663
+ "Clean, minimal void with no distractions - pure product focus.",
664
+ "Subtle particle dust catching the light around the piece.",
665
+ "Reflection on glossy surface below suggesting invisible platform.",
666
+ "Deep black background with single dramatic highlight.",
667
+ "Gradient background from deep blue to black, cosmic feel.",
668
+ // Composition
669
+ "Piece positioned in lower third with vast dark space above.",
670
+ "Centered with perfect symmetry, bold and iconic.",
671
+ "Off-center following rule of thirds, editorial magazine style.",
672
+ "Cropped tight, jewelry filling most of the frame.",
673
+ "Small in frame with expansive negative space, minimalist luxury.",
674
+ ];
675
+ // Romance & Proposal specific style pool - intimate photography directions
676
+ export const ROMANCE_STYLE_POOL = [
677
+ // Angles
678
+ "Extreme close-up on the ring hand, shallow depth of field with everything else melting into soft bokeh.",
679
+ "Over-the-shoulder partner POV, seeing the ring or jewelry from the giver's perspective.",
680
+ "Wide establishing shot capturing the full romantic scene, couple small in frame, environment telling the story.",
681
+ "Top-down overhead view of intertwined hands with rings visible, flat lay perspective on love.",
682
+ "Low angle looking up at clasped hands, rings silhouetted against soft sky or warm interior light.",
683
+ // Emotional beats
684
+ "Tears of joy visible on the cheek, genuine emotional overflow, the ring hand reaching up to touch the face.",
685
+ "Genuine laughter between the couple, heads thrown back, jewelry catching light in the joyful movement.",
686
+ "Quiet contemplation, a private moment of looking at the ring on one's own hand, intimate self-reflection.",
687
+ "Surprised gasp moment, the exact instant of revelation, raw unfiltered emotion.",
688
+ "Tender forehead touch between partners, rings visible on embracing hands, pure intimacy.",
689
+ // Lighting
690
+ "Candlelight flicker illuminating the ring from below, warm dancing light, romantic and intimate.",
691
+ "Golden hour backlight creating a halo around the couple, lens flare kissing the jewelry.",
692
+ "Soft window morning light, lazy and warm, the ring catching the first rays of a new day.",
693
+ "Twilight blue hour glow, cool and magical, the jewelry warm against the cool ambient light.",
694
+ "String lights bokeh in the background, creating a constellation of warm dots behind the intimate moment.",
695
+ // Details
696
+ "Shallow depth of field focused on the ring with beautiful circular bokeh behind.",
697
+ "Intertwined fingers macro shot, every texture of skin and metal visible, intimate scale.",
698
+ "Fabric and texture context — the ring hand resting on a wedding dress, suit jacket, or soft blanket.",
699
+ "Reflection of the couple visible in the gemstone or polished metal of the ring.",
700
+ // Film aesthetics
701
+ "Kodak Portra warmth, slightly lifted blacks, the warm analog feeling of a cherished memory.",
702
+ "Slightly overexposed and dreamy, the highlights blooming softly, ethereal romance.",
703
+ "Documentary-style candid capture, unposed and raw, the beauty of an authentic moment.",
704
+ "Fuji 400H color palette, soft greens and muted tones, timeless film wedding aesthetic.",
705
+ ];
706
+ // Museum Exhibit specific style pool - museum photography directions
707
+ export const MUSEUM_STYLE_POOL = [
708
+ // Lighting
709
+ "Single dramatic spotlight from directly above, the jewelry glowing in a pool of light against darkness.",
710
+ "Ambient gallery glow, soft even museum lighting that reveals every detail without harsh shadows.",
711
+ "Raking light from the side, emphasizing texture and dimension of the jewelry's surface and settings.",
712
+ "Museum track lighting with multiple focused beams, professional archival illumination.",
713
+ "Warm tungsten museum spotlight creating an intimate golden pool of light on the exhibit.",
714
+ // Display context
715
+ "Museum descriptive placard visible in the lower portion, official institutional presentation.",
716
+ "Velvet rope in the soft-focus foreground, creating depth and the feeling of exclusive access.",
717
+ "Glass reflection adds a subtle layer of depth, shooting through the display case.",
718
+ "Adjacent exhibits softly blurred in the background, placing the jewelry in a larger collection context.",
719
+ "Museum catalog-style documentation angle, straight-on, perfectly lit, archival precision.",
720
+ // Atmosphere
721
+ "Reverent silence mood, the hushed atmosphere of a museum at closing time, intimate encounter with greatness.",
722
+ "Opening night gala energy, warm lighting, the sense of a crowd just beyond the frame admiring the piece.",
723
+ "Scholarly documentation style, clinical precision mixed with aesthetic appreciation.",
724
+ "Auction house drama, the piece lit for maximum impact, the weight of its value palpable.",
725
+ "Late afternoon light mixing with museum lighting, golden natural light through gallery windows.",
726
+ // Composition
727
+ "Hero piece centered with vast negative space, the jewelry commanding an entire gallery wall's worth of attention.",
728
+ "Shot through the glass case at an angle, reflections and layers adding visual complexity.",
729
+ "Architectural context showing the museum ceiling and columns framing the small but priceless piece.",
730
+ "Extreme close-up museum detail shot, as if photographed for an exhibition catalog.",
731
+ // Details
732
+ "Custom pedestal design, the display itself a work of art complementing the jewelry.",
733
+ "Archival white gloves placed nearby, suggesting recent handling by a curator.",
734
+ "Soft security laser lines visible in the dim gallery air, emphasizing the piece's immense value.",
735
+ "Visitor silhouette barely visible in the background, providing human scale and narrative context.",
736
+ "Museum information card with 'On loan from private collection' text, adding provenance and prestige.",
737
+ ];
738
+ // Romantic Mood specific style pool - intimate still-life photography directions
739
+ export const ROMANTIC_MOOD_STYLE_POOL = [
740
+ // Composition
741
+ "Extreme close-up on the jewelry with props softly blurred around it, the piece sharp and luminous at center.",
742
+ "Wide establishing shot showing the full romantic tableau, the jewelry a jewel within a jewel of a scene.",
743
+ "Overhead flat lay of the romantic arrangement, every prop and petal placed with intention, editorial precision.",
744
+ "Diagonal composition with props leading the eye from corner to the jewelry, visual storytelling.",
745
+ "Asymmetric arrangement with jewelry off-center, generous negative space filled with soft bokeh of candles or petals.",
746
+ // Lighting
747
+ "Single candle as the only light source, warm and flickering, deep amber shadows wrapping around the jewelry.",
748
+ "Soft window light from the side, morning-after mood, gentle and unhurried, the jewelry catching quiet rays.",
749
+ "Backlit scene with warm glow behind the props, the jewelry silhouetted then revealed in rim light.",
750
+ "Dappled light as if filtering through lace curtains, romantic shadow patterns falling across the jewelry and props.",
751
+ "Multiple tiny candle flames reflected in the jewelry's metal and stones, a constellation of warm dots.",
752
+ // Props & Details
753
+ "A single rose petal resting against the jewelry, macro detail on both the petal's velvet texture and the metal's polish.",
754
+ "Wax dripping from a candle toward the jewelry, frozen just before contact, tension and anticipation.",
755
+ "Handwritten calligraphy visible but soft-focused beneath the jewelry, words of love as the foundation.",
756
+ "Champagne bubbles rising in a glass beside the jewelry, effervescent energy, celebration in liquid form.",
757
+ "Vintage lace texture beneath the jewelry, the intricate patterns of fabric echoing the craftsmanship of the piece.",
758
+ // Mood & Atmosphere
759
+ "The moment after someone left — an open ring box, a half-written letter, the jewelry waiting for its person.",
760
+ "Abundance and overflow — petals everywhere, candles burning low, the decadent aftermath of a romantic evening.",
761
+ "Minimalist romance — one rose, one candle, one piece of jewelry, nothing else needed to tell the story.",
762
+ "Morning-after stillness — soft light, rumpled silk, the jewelry casually placed as if just removed, intimate and real.",
763
+ "Gift-giving anticipation — the box just opened, ribbon curling, tissue paper parting, the jewelry revealed for the first time.",
764
+ // Texture & Surface
765
+ "Matte velvet surface absorbing light while the jewelry reflects it, contrast of soft and brilliant.",
766
+ "Crumpled love letter paper texture beside polished metal, the rough and the refined side by side.",
767
+ "Soft silk catching light in ripples and folds around the jewelry, liquid fabric framing solid precious metal.",
768
+ "Dried rose petals mixed with fresh ones around the jewelry, the passage of time, love that endures.",
769
+ ];
770
+ // Helper function to get the appropriate style pool for a template
771
+ export const getStylePoolForTemplate = (templateId) => {
772
+ if (!templateId)
773
+ return GENERATION_STYLE_POOL;
774
+ if (templateId === 'hand_model')
775
+ return HAND_MODEL_STYLE_POOL;
776
+ if (templateId === 'ear_model')
777
+ return EAR_MODEL_STYLE_POOL;
778
+ if (templateId === 'flatlay_creative')
779
+ return FLATLAY_STYLE_POOL;
780
+ if (templateId === 'floating_minimal')
781
+ return FLOATING_STYLE_POOL;
782
+ if (templateId === 'romance_proposal')
783
+ return ROMANCE_STYLE_POOL;
784
+ if (templateId === 'museum_exhibit')
785
+ return MUSEUM_STYLE_POOL;
786
+ if (templateId === 'romantic_mood')
787
+ return ROMANTIC_MOOD_STYLE_POOL;
788
+ return GENERATION_STYLE_POOL; // Default for portrait/model templates
789
+ };
790
+ // Hand Model Video Prompts - Subtle hand movements, finger gestures, wrist rotations
791
+ export const HAND_MODEL_VIDEO_PROMPTS = [
792
+ // Finger Movements (5)
793
+ "fingers slowly spread apart then gently curl back, ring visible at each angle, intimate macro detail, soft focus on jewelry",
794
+ "thumb gently traces the ring setting in a moment of quiet admiration, subtle finger movements, luxurious and meditative",
795
+ "fingers perform a gentle wave motion, rings catching light sequentially, elegant and calm, macro photography feel",
796
+ "index finger slowly taps twice against thumb, ring visible with each contact, contemplative gesture, intimate framing",
797
+ "fingers slowly interlock then release, jewelry catching warm light throughout, graceful and feminine movement",
798
+ // Wrist & Hand Rotations (5)
799
+ "hand slowly rotates from palm-down to palm-up position, bracelet sliding along wrist, soft natural lighting",
800
+ "gentle wrist roll revealing different angles of the jewelry, soft natural movement, editorial elegance",
801
+ "hand turns gracefully as if examining the ring, wrist pivoting slowly, each facet visible in the light",
802
+ "slow rotation of the hand allowing bracelet to catch light from multiple angles, luxurious and deliberate",
803
+ "wrist tilts side to side creating subtle bracelet movement, chain links visible, sophisticated and refined",
804
+ // Contextual Gestures (5)
805
+ "hand slowly moves to rest on collarbone, ring prominently displayed against skin, intimate and elegant",
806
+ "fingers delicately adjust bracelet clasp, subtle self-styling moment, natural and authentic",
807
+ "hand rises slowly toward face then pauses, ring catching soft side light, contemplative mood",
808
+ "fingers trace along fabric edge, ring contrasting beautifully with textile texture, tactile and luxurious",
809
+ "hand moves from resting position to gently touch opposite wrist, bracelets on both visible in frame",
810
+ // Light Play (5)
811
+ "hand moves through shaft of warm light, jewelry softly illuminated, natural reveal moment",
812
+ "subtle hand movement as light source shifts, jewelry highlighted from new angle, refined quality",
813
+ "fingers catch a beam of light, ring reflecting softly, warm and inviting",
814
+ "hand slowly enters and exits shadow, jewelry alternating between shadow and soft light",
815
+ "gentle hand movement creates traveling highlight across bracelet links, satisfying and natural"
816
+ ];
817
+ // Neck Model Video Prompts - Head turns, shoulder movements, necklace sway
818
+ export const NECK_MODEL_VIDEO_PROMPTS = [
819
+ // Head Movements (5)
820
+ "slow elegant head turn from profile toward camera, necklace draping beautifully with movement, editorial grace",
821
+ "gentle chin lift followed by subtle head tilt, pendant settling into new position, confident and poised",
822
+ "head turns slightly away then back, necklace chain visible with each movement, mysterious allure",
823
+ "subtle side-to-side head movement, necklace swaying gently against décolletage, quiet elegance",
824
+ "chin drops thoughtfully then rises, pendant shifting against collarbone, contemplative sophistication",
825
+ // Shoulder & Neck Movement (5)
826
+ "shoulders roll back slowly revealing full necklace display, confident posture shift, powerful and elegant",
827
+ "one shoulder drops subtly creating asymmetric necklace drape, artistic and editorial",
828
+ "gentle shoulder shrug causing necklace to lift and settle, natural and effortless luxury",
829
+ "subtle lean forward then back to upright, pendant swinging gently, intimate movement",
830
+ "neck stretches slightly to one side, chain sliding across skin, sensual and refined",
831
+ // Hand to Necklace (5)
832
+ "fingers rise slowly to touch pendant, gentle adjustment, self-assured styling moment",
833
+ "hand traces along collarbone beneath necklace chain, intimate gesture of admiration",
834
+ "fingertips gently lift pendant for examination, stone visible in soft light, moment of appreciation",
835
+ "hand moves to adjust necklace clasp at back of neck, elegant reach, behind-the-scenes glamour",
836
+ "fingers delicately walk along chain links toward pendant, tactile exploration, luxurious detail",
837
+ // Breathing & Subtle Motion (5)
838
+ "deep breath causing gentle rise and fall of chest, necklace moving with natural rhythm, alive and present",
839
+ "subtle sway as if listening to distant music, necklace pendulum motion, dreamy and romantic",
840
+ "soft exhale creating minimal chest movement, pendant barely swaying, serene and meditative",
841
+ "gentle shift of weight creating necklace movement, casual elegance, effortless style",
842
+ "quiet moment of stillness broken by subtle throat movement, chain catching soft light, intimate realism"
843
+ ];
844
+ // Ear Model Video Prompts - Minimal movement, head tilts, hair interaction, earring swing
845
+ export const EAR_MODEL_VIDEO_PROMPTS = [
846
+ // Head Tilts (5)
847
+ "very subtle head tilt toward camera, earring swinging gently with momentum, intimate detail",
848
+ "slight head turn revealing earring from new angle, minimal movement maximum impact",
849
+ "gentle tilt away then back, earring visible at each position, captivating",
850
+ "almost imperceptible head movement causing earring to sway, focused on jewelry",
851
+ "slow deliberate head angle change, earring moving with the motion, elegant restraint",
852
+ // Hair Interaction (5)
853
+ "strand of hair brushes past earring in gentle breeze, natural and authentic moment",
854
+ "hair tucked behind ear revealing full earring display, styling gesture, editorial beauty",
855
+ "loose hair sways gently near earring, creating depth and movement, romantic softness",
856
+ "single strand catches on earring then releases, delicate moment, intimate detail",
857
+ "hair settles after movement, earring continuing to sway, cascading motion effect",
858
+ // Earring Motion (5)
859
+ "earring swings gently from minimal head movement, catching soft light at swing apex, satisfying rhythm",
860
+ "chandelier earring creates subtle pendulum motion, soft light visible, luxury in motion",
861
+ "stud earring catches light as head position shifts, light angles changing, subtle detail",
862
+ "earring settles after movement, final gentle sway, coming to elegant rest",
863
+ "drop earring traces small arc, gemstone visible throughout swing, graceful physics",
864
+ // Expression & Eyes (3)
865
+ "eyes close slowly then open, head minutely shifting, earring barely moving, serene moment",
866
+ "subtle smile spreading, minimal head movement, earring visible, joy captured",
867
+ "contemplative blink, earring catching soft light in the momentary stillness, intimate portrait",
868
+ // Environmental (2)
869
+ "gentle breeze moves hair around earring, natural outdoor editorial feel",
870
+ "light shifts across face, earring softly illuminated, natural lighting"
871
+ ];
872
+ // Flatlay Video Prompts - Camera movements, light transitions, ambient elements
873
+ export const FLATLAY_VIDEO_PROMPTS = [
874
+ // Camera Movements (6)
875
+ "slow overhead camera drift across the arrangement, revealing each piece sequentially, cinematic product shot",
876
+ "gentle diagonal pan across flatlay, jewelry visible in sequence, editorial sweep",
877
+ "smooth camera push-in toward hero piece, background softening, dramatic focus",
878
+ "subtle camera pull-back revealing full arrangement, establishing shot, luxury presentation",
879
+ "slow orbital camera movement around arrangement center, pieces revealed from new angles",
880
+ "gentle camera drift from corner to corner, light playing across surfaces, exploratory movement",
881
+ // Light Transitions (5)
882
+ "morning light gradually intensifies across arrangement, shadows shortening, time-lapse elegance",
883
+ "soft light slowly moves across pieces, each item highlighted in turn, subtle reveal",
884
+ "soft shadow passes over arrangement, light returning to reveal details, gentle effect",
885
+ "golden hour light creeps across surface, warming the jewelry colors, inviting atmosphere",
886
+ "light source shifts creating traveling highlights across the arrangement, natural movement",
887
+ // Focus & Depth (4)
888
+ "focus slowly shifts from foreground piece to background, depth revealed, cinematic technique",
889
+ "rack focus between jewelry items, drawing attention sequentially, storytelling device",
890
+ "shallow focus deepens gradually revealing full arrangement clarity, unfolding beauty",
891
+ "focus breathes subtly in and out, creating dreamy pulse, artistic interpretation",
892
+ // Ambient Elements (5)
893
+ "single petal drifts slowly into frame settling near jewelry, romantic touch, natural elegance",
894
+ "fabric beneath jewelry ripples subtly, textural movement, tactile luxury",
895
+ "soft light beam moves across arrangement, atmospheric depth, editorial quality",
896
+ "shadow of unseen element passes slowly, mystery and intrigue, cinematic moment",
897
+ "light angle shifts gradually revealing new details in the jewelry, natural progression"
898
+ ];
899
+ // Floating Minimal Video Prompts - Rotation, hovering motion, light transitions
900
+ export const FLOATING_VIDEO_PROMPTS = [
901
+ // Rotation (6)
902
+ "jewelry rotates slowly on vertical axis, every facet revealed, 360 product showcase",
903
+ "gentle continuous rotation, light catching different angles, smooth spin",
904
+ "slow oscillating rotation, turning partway then reversing, examining motion",
905
+ "jewelry tilts forward then back while rotating, dimensional movement, dynamic display",
906
+ "minimal rotation with pause at key angles, intentional reveals, curated presentation",
907
+ "reverse rotation revealing previously hidden details, surprise elements, engagement hook",
908
+ // Floating Motion (5)
909
+ "gentle vertical bob as if suspended in liquid, weightless elegance, dreamlike",
910
+ "subtle rise and fall hovering motion, breathing rhythm, alive and precious",
911
+ "jewelry drifts slowly upward then settles, weightless moment, cinematic feel",
912
+ "horizontal drift while maintaining rotation, traveling showcase, cinematic movement",
913
+ "gentle sway as if caught in invisible current, organic floating, natural feel",
914
+ // Light Effects (5)
915
+ "soft light intensifies on rotating jewelry, surrounding darkness, dramatic isolation",
916
+ "light source shifts around jewelry creating moving highlights, dynamic illumination",
917
+ "warm light plays across gemstone during rotation, color revealed gradually",
918
+ "shadow and light alternate as jewelry turns, rhythmic contrast, visual rhythm",
919
+ "soft rim light outlines jewelry edges, clean silhouette, luxury presentation",
920
+ // Atmospheric (4)
921
+ "minimal background with jewelry floating center frame, clean context, elevated presentation",
922
+ "light rays become visible as jewelry moves through them, volumetric atmosphere",
923
+ "soft depth of field surrounds jewelry, dreamy quality, aspirational feel",
924
+ "gentle light shift as jewelry catches different angles, cinematic polish"
925
+ ];
926
+ // Video Motion Prompt Pool for Veo 3.1 - Editorial Muse (half_body_muse) - focuses on jewelry showcase movements
927
+ export const VIDEO_MOTION_PROMPT_POOL = [
928
+ // Head and neck movements to showcase earrings/necklaces
929
+ "The model performs a slow, elegant head turn from profile to three-quarter view, allowing the earrings to catch the light. Subtle hair movement. Cinematic, luxurious mood. High-end jewelry commercial aesthetic.",
930
+ "A gentle head tilt revealing the full necklace as soft light falls across the jewelry. Soft, confident expression. Natural hair sway. Editorial feel.",
931
+ "The model slowly turns her head, chin slightly raised, earrings visible from different angles. Graceful, poised movement.",
932
+ "A subtle chin lift and gentle head rotation showcasing how the jewelry moves with natural elegance. Soft lighting transitions across the face.",
933
+ "The model's gaze slowly shifts from camera-left to camera-right, earrings visible throughout. Serene, contemplative expression.",
934
+ // Hand and gesture movements
935
+ "The model's hand slowly rises to brush hair behind her ear, revealing the earring in full. Graceful, feminine movement. Soft focus on jewelry details.",
936
+ "A delicate hand gesture near the collarbone draws attention to the necklace. Elegant fingers, polished nails. Luxurious aesthetic.",
937
+ "The model gently touches her earring with fingertips, a moment of admiration. Intimate, personal gesture. High-end commercial style.",
938
+ "Fingers gracefully trace along the necklace chain, highlighting the pendant. Slow, deliberate movement. Premium jewelry showcase.",
939
+ "The model adjusts her hair with one hand, the jewelry visible throughout the motion. Natural, candid elegance.",
940
+ // Full upper body subtle movements
941
+ "The model shifts her weight slightly, creating a subtle sway that brings life to the jewelry. Natural breathing rhythm. Editorial sophistication.",
942
+ "A graceful shoulder turn reveals the jewelry from a new angle. Confident posture. Magazine-quality movement.",
943
+ "The model leans slightly forward with a knowing smile, jewelry visible. Engaging, intimate moment with the viewer.",
944
+ "Subtle body sway as if moving to silent music, jewelry catching soft light. Dreamy, relaxed mood.",
945
+ "The model straightens her posture with quiet confidence, jewelry settling into perfect position. Powerful, sophisticated energy.",
946
+ // Expression and eye movements
947
+ "Eyes slowly close then open in a serene blink, the jewelry framing a peaceful expression. Meditative, luxurious calm.",
948
+ "A slow, genuine smile spreads across the model's face, jewelry prominent. Warm, inviting energy. High-end lifestyle feel.",
949
+ "The model's gaze lifts slowly from downcast to direct eye contact, jewelry prominent throughout. Captivating, confident moment.",
950
+ "Soft laughter with minimal movement, the jewelry moving subtly with her. Authentic, radiant beauty.",
951
+ "A contemplative downward glance followed by upward look through lashes, jewelry always the focal point. Mysterious allure.",
952
+ // Environmental interaction
953
+ "Gentle breeze causes subtle hair movement around the earrings, natural and organic. Natural, outdoor editorial feel.",
954
+ "The model steps slightly into a shaft of light, jewelry softly illuminated. Cinematic lighting transition.",
955
+ "A soft fabric or sheer material moves near the jewelry, adding textural contrast. Artistic, high-fashion aesthetic.",
956
+ "Natural light shifts subtly across the scene, the jewelry catching warm tones. Golden hour elegance.",
957
+ "The model moves through dappled light and shadow, jewelry visible throughout. Evocative, editorial storytelling."
958
+ ];
959
+ // Helper function to get the appropriate video prompt pool for a template
960
+ export const getVideoPromptPool = (templateId) => {
961
+ switch (templateId) {
962
+ case 'hand_model': return HAND_MODEL_VIDEO_PROMPTS;
963
+ case 'neck_model': return NECK_MODEL_VIDEO_PROMPTS;
964
+ case 'ear_model': return EAR_MODEL_VIDEO_PROMPTS;
965
+ case 'flatlay_creative': return FLATLAY_VIDEO_PROMPTS;
966
+ case 'floating_minimal': return FLOATING_VIDEO_PROMPTS;
967
+ case 'half_body_muse': return VIDEO_MOTION_PROMPT_POOL;
968
+ default: return VIDEO_MOTION_PROMPT_POOL;
969
+ }
970
+ };
971
+ export const RESOLUTIONS = [
972
+ {
973
+ id: 'square',
974
+ label: 'Instagram Feed',
975
+ aspectRatio: '1:1',
976
+ icon: 'Square',
977
+ instagramUse: 'Feed Post',
978
+ description: 'Perfect square for Instagram grid posts'
979
+ },
980
+ {
981
+ id: 'portrait',
982
+ label: 'Instagram Portrait',
983
+ aspectRatio: '3:4',
984
+ icon: 'RectangleVertical',
985
+ instagramUse: 'Feed Post',
986
+ description: 'Vertical format for maximum feed impact'
987
+ },
988
+ {
989
+ id: 'story',
990
+ label: 'Instagram Story',
991
+ aspectRatio: '9:16',
992
+ icon: 'Smartphone',
993
+ instagramUse: 'Story / Reels',
994
+ description: 'Full-screen vertical for Stories & Reels'
995
+ },
996
+ {
997
+ id: 'landscape',
998
+ label: 'Landscape',
999
+ aspectRatio: '16:9',
1000
+ icon: 'RectangleHorizontal',
1001
+ instagramUse: 'Website / Ads',
1002
+ description: 'Horizontal format for ads & websites'
1003
+ },
1004
+ ];
1005
+ //# sourceMappingURL=constants.js.map