@umituz/react-native-ai-generation-content 1.22.8 → 1.23.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 (81) hide show
  1. package/package.json +1 -1
  2. package/src/domains/scenarios/domain/Scenario.ts +571 -0
  3. package/src/domains/scenarios/domain/scenario.types.ts +8 -0
  4. package/src/domains/scenarios/index.ts +15 -0
  5. package/src/domains/scenarios/infrastructure/ScenariosData.ts +210 -0
  6. package/src/domains/scenarios/infrastructure/data/action-stealth-scenarios.ts +60 -0
  7. package/src/domains/scenarios/infrastructure/data/adventure-scenarios.ts +60 -0
  8. package/src/domains/scenarios/infrastructure/data/affection-scenarios.ts +88 -0
  9. package/src/domains/scenarios/infrastructure/data/animals-scenarios.ts +24 -0
  10. package/src/domains/scenarios/infrastructure/data/arabian-nights-scenarios.ts +46 -0
  11. package/src/domains/scenarios/infrastructure/data/art-studio-scenarios.ts +61 -0
  12. package/src/domains/scenarios/infrastructure/data/artistic-scenarios.ts +84 -0
  13. package/src/domains/scenarios/infrastructure/data/bucket-list-scenarios.ts +59 -0
  14. package/src/domains/scenarios/infrastructure/data/career-scenarios.ts +56 -0
  15. package/src/domains/scenarios/infrastructure/data/casino-scenarios.ts +47 -0
  16. package/src/domains/scenarios/infrastructure/data/celebration-scenarios.ts +74 -0
  17. package/src/domains/scenarios/infrastructure/data/cinematic-scenarios.ts +53 -0
  18. package/src/domains/scenarios/infrastructure/data/connection-scenarios.ts +103 -0
  19. package/src/domains/scenarios/infrastructure/data/cozy-plush-scenarios.ts +46 -0
  20. package/src/domains/scenarios/infrastructure/data/creative-scenarios.ts +24 -0
  21. package/src/domains/scenarios/infrastructure/data/culinary-scenarios.ts +24 -0
  22. package/src/domains/scenarios/infrastructure/data/cultural-scenarios.ts +76 -0
  23. package/src/domains/scenarios/infrastructure/data/daily-essence-scenarios.ts +102 -0
  24. package/src/domains/scenarios/infrastructure/data/dark-academia-scenarios.ts +47 -0
  25. package/src/domains/scenarios/infrastructure/data/ecology-scenarios.ts +59 -0
  26. package/src/domains/scenarios/infrastructure/data/education-scenarios.ts +24 -0
  27. package/src/domains/scenarios/infrastructure/data/elemental-scenarios.ts +47 -0
  28. package/src/domains/scenarios/infrastructure/data/elite-scenarios.ts +60 -0
  29. package/src/domains/scenarios/infrastructure/data/extreme-scenarios.ts +24 -0
  30. package/src/domains/scenarios/infrastructure/data/family-scenarios.ts +68 -0
  31. package/src/domains/scenarios/infrastructure/data/fantasy-scenarios.ts +89 -0
  32. package/src/domains/scenarios/infrastructure/data/fashion-scenarios.ts +66 -0
  33. package/src/domains/scenarios/infrastructure/data/festival-scenarios.ts +54 -0
  34. package/src/domains/scenarios/infrastructure/data/folklore-scenarios.ts +75 -0
  35. package/src/domains/scenarios/infrastructure/data/future-tech-scenarios.ts +60 -0
  36. package/src/domains/scenarios/infrastructure/data/gaming-scenarios.ts +24 -0
  37. package/src/domains/scenarios/infrastructure/data/gothic-scenarios.ts +60 -0
  38. package/src/domains/scenarios/infrastructure/data/historical-scenarios.ts +66 -0
  39. package/src/domains/scenarios/infrastructure/data/hobbies-scenarios.ts +68 -0
  40. package/src/domains/scenarios/infrastructure/data/home-life-scenarios.ts +88 -0
  41. package/src/domains/scenarios/infrastructure/data/iconic-moments-scenarios.ts +115 -0
  42. package/src/domains/scenarios/infrastructure/data/intimate-scenarios.ts +122 -0
  43. package/src/domains/scenarios/infrastructure/data/lifestyle-scenarios.ts +144 -0
  44. package/src/domains/scenarios/infrastructure/data/luxury-scenarios.ts +24 -0
  45. package/src/domains/scenarios/infrastructure/data/magical-realism-scenarios.ts +47 -0
  46. package/src/domains/scenarios/infrastructure/data/movie-legends-scenarios.ts +199 -0
  47. package/src/domains/scenarios/infrastructure/data/music-scenarios.ts +74 -0
  48. package/src/domains/scenarios/infrastructure/data/mystical-scenarios.ts +61 -0
  49. package/src/domains/scenarios/infrastructure/data/mythology-scenarios.ts +60 -0
  50. package/src/domains/scenarios/infrastructure/data/nostalgia-scenarios.ts +58 -0
  51. package/src/domains/scenarios/infrastructure/data/performance-scenarios.ts +24 -0
  52. package/src/domains/scenarios/infrastructure/data/pirate-era-scenarios.ts +47 -0
  53. package/src/domains/scenarios/infrastructure/data/post-apocalyptic-scenarios.ts +47 -0
  54. package/src/domains/scenarios/infrastructure/data/prehistoric-world-scenarios.ts +47 -0
  55. package/src/domains/scenarios/infrastructure/data/retro-arcade-scenarios.ts +46 -0
  56. package/src/domains/scenarios/infrastructure/data/romantic-kisses-scenarios.ts +103 -0
  57. package/src/domains/scenarios/infrastructure/data/samurai-scenarios.ts +46 -0
  58. package/src/domains/scenarios/infrastructure/data/sci-fi-scenarios.ts +66 -0
  59. package/src/domains/scenarios/infrastructure/data/seasonal-scenarios.ts +24 -0
  60. package/src/domains/scenarios/infrastructure/data/social-media-scenarios.ts +75 -0
  61. package/src/domains/scenarios/infrastructure/data/speed-demons-scenarios.ts +46 -0
  62. package/src/domains/scenarios/infrastructure/data/sports-scenarios.ts +24 -0
  63. package/src/domains/scenarios/infrastructure/data/steampunk-scenarios.ts +61 -0
  64. package/src/domains/scenarios/infrastructure/data/stolen-moments-scenarios.ts +75 -0
  65. package/src/domains/scenarios/infrastructure/data/sultry-scenarios.ts +87 -0
  66. package/src/domains/scenarios/infrastructure/data/superhero-scenarios.ts +60 -0
  67. package/src/domains/scenarios/infrastructure/data/surreal-dreams-scenarios.ts +47 -0
  68. package/src/domains/scenarios/infrastructure/data/time-based-scenarios.ts +38 -0
  69. package/src/domains/scenarios/infrastructure/data/travel-scenarios.ts +132 -0
  70. package/src/domains/scenarios/infrastructure/data/underwater-scenarios.ts +45 -0
  71. package/src/domains/scenarios/infrastructure/data/urban-nights-scenarios.ts +60 -0
  72. package/src/domains/scenarios/infrastructure/data/villainous-scenarios.ts +60 -0
  73. package/src/domains/scenarios/infrastructure/data/vintage-circus-scenarios.ts +46 -0
  74. package/src/domains/scenarios/infrastructure/data/vintage-summer-scenarios.ts +61 -0
  75. package/src/domains/scenarios/infrastructure/data/wedding-scenarios.ts +206 -0
  76. package/src/domains/scenarios/infrastructure/data/wellness-scenarios.ts +59 -0
  77. package/src/domains/scenarios/infrastructure/utils/scenario-utils.ts +11 -0
  78. package/src/features/couple-future/presentation/components/CoupleFutureWizard.tsx +1 -10
  79. package/src/features/scenarios/index.ts +4 -2
  80. package/src/index.ts +1 -0
  81. package/src/infrastructure/flow/useFlow.ts +23 -0
@@ -0,0 +1,45 @@
1
+ import { Scenario, ScenarioId } from "../../domain/Scenario";
2
+ import { createStoryTemplate } from "../utils/scenario-utils";
3
+
4
+ export const UNDERWATER_SCENARIOS: Omit<Scenario, 'outputType' | 'category'>[] = [
5
+ {
6
+ id: ScenarioId.CORAL_THRONE_ROYALTY,
7
+ title: "Coral Throne",
8
+ description: "Royalty of the deep",
9
+ icon: "🧜‍♂️",
10
+ imageUrl: "https://images.unsplash.com/photo-1544551763-46a013bb70d5?w=800",
11
+ aiPrompt:
12
+ "A couple sitting on a throne made of bioluminescent white coral at the bottom of the ocean, man and woman as mer-people with shimmering iridescent tails, surrounded by schools of tropical fish and glowing jellyfish, both looking at the camera with serene royal smiles, shafts of sunlight filtering through deep water, magical and underwater",
13
+ storyTemplate: createStoryTemplate(
14
+ "rule the silent depths of the ocean as its most elegant guardians",
15
+ "They aren't just visitors to the deep; they are its heart. In the cool blue silence, they've built a kingdom that spans the entire sea.",
16
+ ),
17
+ },
18
+ {
19
+ id: ScenarioId.SUNKEN_LIBRARY_MYSTERY,
20
+ title: "Sunken Library",
21
+ description: "Lost knowledge",
22
+ icon: "📖",
23
+ imageUrl: "https://images.unsplash.com/photo-1544208062-35925507204b?w=800",
24
+ aiPrompt:
25
+ "A couple in an ancient library inside a sunken marble temple underwater, both looking at a stone tablet while floating weightlessly, bubbles rising from their lips, wearing flowing ethereal garments, ancient statues covered in sea plants, soft blue-green lighting, mystery and discovery",
26
+ storyTemplate: createStoryTemplate(
27
+ "uncover the lost secrets of a civilization claimed by the tides",
28
+ "The world above long forgot these stories, but they are here to bring them back to life. A love that's deeper than the deepest abyss.",
29
+ ),
30
+ },
31
+ {
32
+ id: ScenarioId.DEEP_SEA_GLOW,
33
+ title: "Deep Sea Glow",
34
+ description: "Bioluminescent wonder",
35
+ icon: "✨",
36
+ imageUrl:
37
+ "https://images.unsplash.com/photo-1512140411829-2b6fe684be4d?w=800",
38
+ aiPrompt:
39
+ "A couple swimming in the pitch-black deep sea, surrounded by millions of glowing bioluminescent plankton and deep-sea creatures, their faces lit by the soft ethereal glow, looking into each other's eyes, beautiful and surreal underwater environment, cosmic-like underwater photography",
40
+ storyTemplate: createStoryTemplate(
41
+ "become the light in the darkest corners of the ocean",
42
+ "In the total darkness of the deep, their connection is the brightest thing there is. A love that creates its own light in the shadows.",
43
+ ),
44
+ },
45
+ ];
@@ -0,0 +1,60 @@
1
+ import { Scenario, ScenarioId } from "../../domain/Scenario";
2
+ import { createStoryTemplate } from "../utils/scenario-utils";
3
+
4
+ export const URBAN_NIGHTS_SCENARIOS: Omit<Scenario, 'outputType' | 'category'>[] = [
5
+ {
6
+ id: ScenarioId.RAINY_CAR_INTIMACY,
7
+ title: "Rainy Drives",
8
+ description: "Private world in motion",
9
+ icon: "🚗",
10
+ imageUrl:
11
+ "https://images.unsplash.com/photo-1515694346937-94d85e41e6f0?w=800",
12
+ aiPrompt:
13
+ "A couple in the front seat of a modern car at night, rain lashing against the windows, neon city lights reflecting in the wet glass and on their faces, both looking at each other with deep affection, soft dashboard glow, intimate and moody urban atmosphere",
14
+ storyTemplate: createStoryTemplate(
15
+ "escape the world in your own moving sanctuary",
16
+ "The city is a blur of neon and rain, but inside this small space, everything is clear. A love that's the only constant in a fast-moving world.",
17
+ ),
18
+ },
19
+ {
20
+ id: ScenarioId.ROOFTOP_EDGE_CITY,
21
+ title: "City Edge",
22
+ description: "High above the lights",
23
+ icon: "🌃",
24
+ imageUrl:
25
+ "https://images.unsplash.com/photo-1444723121867-7a241cacace9?w=800",
26
+ aiPrompt:
27
+ "A couple sitting on the very edge of a skyscraper rooftop, legs dangling over the city lights, leaning into each other while looking at the camera with fearless smiles, vast twinkling city skyline in background, cool night breeze, high-tension and grand",
28
+ storyTemplate: createStoryTemplate(
29
+ "look down at the world from your own summit",
30
+ "They aren't just in the city; they're above it. At the very edge of the world, they find that the only thing holding them up is each other.",
31
+ ),
32
+ },
33
+ {
34
+ id: ScenarioId.SUBWAY_LATE_NIGHT,
35
+ title: "Midnight Train",
36
+ description: "Silent urban connection",
37
+ icon: "🚇",
38
+ imageUrl:
39
+ "https://images.unsplash.com/photo-1511285560929-80b456fea0bc?w=800",
40
+ aiPrompt:
41
+ "A couple in an almost empty, brightly lit subway car late at night, sitting very close, man's arm around woman, woman's head on his shoulder, both looking at the camera with peaceful but intense smiles, blurred dark tunnel passing through windows, high-contrast urban mood",
42
+ storyTemplate: createStoryTemplate(
43
+ "find peace in the heartbeat of the city",
44
+ "The station doesn't matter, and neither does the destination. In the rattle and hum of the midnight train, they've already arrived at home.",
45
+ ),
46
+ },
47
+ {
48
+ id: ScenarioId.NEON_ALLEY_WHISPER,
49
+ title: "Neon Alley",
50
+ description: "Shadows and lights",
51
+ icon: "🏮",
52
+ imageUrl: "https://images.unsplash.com/photo-1550684848-fac1c5b4e853?w=800",
53
+ aiPrompt:
54
+ "A couple pressed against a brick wall in a narrow city alleyway, glowing red and blue neon signs reflecting on their faces, shadows and Steam, man leaning in to whisper to the woman, both looking at camera with mysterious and passionate expressions, edgy urban atmosphere",
55
+ storyTemplate: createStoryTemplate(
56
+ "lose yourselves in the shadows of the neon city",
57
+ "Wrapped in light and shadow, they find a rhythm that's all their own. A love that shines brighter than the neon lights around them.",
58
+ ),
59
+ },
60
+ ];
@@ -0,0 +1,60 @@
1
+ import { Scenario, ScenarioId } from "../../domain/Scenario";
2
+ import { createStoryTemplate } from "../utils/scenario-utils";
3
+
4
+ export const VILLAINOUS_SCENARIOS: Omit<Scenario, 'outputType' | 'category'>[] = [
5
+ {
6
+ id: ScenarioId.MASTERMINDS,
7
+ title: "The Masterminds",
8
+ description: "Architects of chaos",
9
+ icon: "🦹",
10
+ imageUrl:
11
+ "https://images.unsplash.com/photo-151877066fe63-c6d1a4947271?w=800",
12
+ aiPrompt:
13
+ "A couple as sophisticated villains in a high-tech lair, both looking at the camera with confident villainous smirks, wearing elegant dark designer suits, petting a white cat or holding a glass of wine, massive wall of monitors showing global data in background, powerful and mysterious",
14
+ storyTemplate: createStoryTemplate(
15
+ "plan their next big move",
16
+ "They don't just break the rules; they rewrite them. In a world of black and white, they are the most stylish shade of gray.",
17
+ ),
18
+ },
19
+ {
20
+ id: ScenarioId.CHAOS_BRINGERS,
21
+ title: "Chaos Bringers",
22
+ description: "Rebels with a cause",
23
+ icon: "🔥",
24
+ imageUrl:
25
+ "https://v3b.fal.media/files/b/0a8a3e0e/s6SBpgKeHS3AL0ykrc4ac.jpg",
26
+ aiPrompt:
27
+ "A couple in a post-apocalyptic base, both looking at the camera with rebellious expressions, wearing punk-style leather and metal armor, spray-painting a symbol on a wall, sparks and fire in background, chaotic and energetic",
28
+ storyTemplate: createStoryTemplate(
29
+ "shake the foundations of the world",
30
+ "They aren't looking for approval, just excitement. A love that's as volatile and beautiful as a supernova.",
31
+ ),
32
+ },
33
+ {
34
+ id: ScenarioId.HIGH_STAKES_THIEVES,
35
+ title: "Ghost Thieves",
36
+ description: "Master of the night",
37
+ icon: "🎭",
38
+ imageUrl: "https://images.unsplash.com/photo-1541560052-77ec1bbc09f7?w=800",
39
+ aiPrompt:
40
+ "A couple suspended on wires in a high-security museum, both looking at the camera with focused smirks, wearing skin-tight black stealth suits, holding a glowing blue diamond, laser beams and expensive art in background, tense and cinematic",
41
+ storyTemplate: createStoryTemplate(
42
+ "steal the impossible",
43
+ "Even with the world's best security, they always slip through the cracks. The only thing they couldn't steal was each other's hearts - those were given freely.",
44
+ ),
45
+ },
46
+ {
47
+ id: ScenarioId.DARK_EMPIRE_RULERS,
48
+ title: "Dark Sovereigns",
49
+ description: "Majesty of the shadows",
50
+ icon: "🏰",
51
+ imageUrl:
52
+ "https://images.unsplash.com/photo-1519741497674-611481863552?w=800",
53
+ aiPrompt:
54
+ "A couple on a dark obsidian throne, both looking at the camera with cold regal smiles, wearing heavy black armor and dark capes, glowing red eyes, gothic cathedral-style throne room with red banners and torches in background, majestic and intimidating",
55
+ storyTemplate: createStoryTemplate(
56
+ "rule an empire of shadows",
57
+ "In a kingdom built on power and fear, they are the only ones they can truly trust. Sovereigns of a world they conquered together.",
58
+ ),
59
+ },
60
+ ];
@@ -0,0 +1,46 @@
1
+ import { Scenario, ScenarioId } from "../../domain/Scenario";
2
+ import { createStoryTemplate } from "../utils/scenario-utils";
3
+
4
+ export const VINTAGE_CIRCUS_SCENARIOS: Omit<Scenario, 'outputType' | 'category'>[] = [
5
+ {
6
+ id: ScenarioId.RINGMASTER_POSER,
7
+ title: "The Ringmasters",
8
+ description: "The show is ours",
9
+ icon: "🎩",
10
+ imageUrl:
11
+ "https://images.unsplash.com/photo-1493225255756-d9584f8606e9?w=800",
12
+ aiPrompt:
13
+ "A couple dressed as 19th century circus ringmasters, standing in the center of a giant spotlighted circus ring, wearing red velvet coats with gold embroidery and top hats, both looking at the camera with charismatic and confident smiles, blurred circus audience in background, grand and theatrical",
14
+ storyTemplate: createStoryTemplate(
15
+ "take the lead in the greatest show on earth",
16
+ "They aren't just part of the act; they're the ones holding the baton. A relationship that's as grand and spectacular as a three-ring circus.",
17
+ ),
18
+ },
19
+ {
20
+ id: ScenarioId.HIGH_WIRE_BALANCE,
21
+ title: "High Wire Trust",
22
+ description: "Perfect balance",
23
+ icon: "🎪",
24
+ imageUrl: "https://images.unsplash.com/photo-1544208062-35925507204b?w=800",
25
+ aiPrompt:
26
+ "A couple standing on a thin wire high above a circus floor, man holding woman's hands for balance, both looking at each other with intense trust and loving smiles, wearing shimmering acrobatic outfits, dramatic spotlight from above, atmosphere of tension and absolute connection",
27
+ storyTemplate: createStoryTemplate(
28
+ "find your balance in the highest of stakes",
29
+ "In the air, with no net below, they only have each other to hold onto. And that's exactly where they feel the safest. A bond that never wavers.",
30
+ ),
31
+ },
32
+ {
33
+ id: ScenarioId.MYSTIC_TENT_SECRETS,
34
+ title: "Mystic Tent",
35
+ description: "Predicting our future",
36
+ icon: "🔮",
37
+ imageUrl:
38
+ "https://images.unsplash.com/photo-1513519245088-0e12902e5a38?w=800",
39
+ aiPrompt:
40
+ "A couple inside a dark velvet circus tent, sitting at a table with a glowing crystal ball and tarot cards, both looking into each other's eyes with mysterious smiles, wearing bohemian vintage circus attire, warm purple and gold lighting, intimate and magical atmosphere",
41
+ storyTemplate: createStoryTemplate(
42
+ "peek into a future that's already written in the stars",
43
+ "The crystal ball shows many things, but for them, the answer is always the same. A future of magic, mystery, and an unbreakable shared destiny.",
44
+ ),
45
+ },
46
+ ];
@@ -0,0 +1,61 @@
1
+ import { Scenario, ScenarioId } from "../../domain/Scenario";
2
+ import { createStoryTemplate } from "../utils/scenario-utils";
3
+
4
+ export const VINTAGE_SUMMER_SCENARIOS: Omit<Scenario, 'outputType' | 'category'>[] = [
5
+ {
6
+ id: ScenarioId.ICE_CREAM_DATE,
7
+ title: "Ice Cream Date",
8
+ description: "50s soda shop vibes",
9
+ icon: "🍦",
10
+ imageUrl:
11
+ "https://images.unsplash.com/photo-1501443762994-82bd5dace89a?w=800",
12
+ aiPrompt:
13
+ "A couple in a colorful 1950s soda shop, sitting at the counter, sharing a large milkshake with two straws, both looking at the camera with joyful youthful smiles, wearing pastel colored vintage clothing, polka dot dress for woman, polo shirt for man, checkered floor and neon lights, bright and nostalgic",
14
+ storyTemplate: createStoryTemplate(
15
+ "step back into a simpler time of sweet treats and first dates",
16
+ "One milkshake, two straws, and a lifetime of sweetness ahead. They've found the perfect recipe for a timeless love.",
17
+ ),
18
+ },
19
+ {
20
+ id: ScenarioId.VINTAGE_CONVERTIBLE,
21
+ title: "Vintage Convertible",
22
+ description: "Wind in your hair",
23
+ icon: "🚗",
24
+ imageUrl:
25
+ "https://images.unsplash.com/photo-1517677208171-0bc6725a3e60?w=800",
26
+ aiPrompt:
27
+ "A couple driving a red 1950s vintage convertible along a coastal road, woman wearing a silk headscarf and sunglasses, man in a casual summer shirt, both looking at the camera with ecstatic smiles, a picnic basket in the back seat, bright sunny day, blue ocean in background, carefree and cinematic",
28
+ storyTemplate: createStoryTemplate(
29
+ "drive towards the horizon in classic style",
30
+ "The road is open, the sun is shining, and they have each other. A journey that proves the best destination is wherever they're together.",
31
+ ),
32
+ },
33
+ {
34
+ id: ScenarioId.RETRO_BEACH_DAY,
35
+ title: "Retro Beach Day",
36
+ description: "Classic seaside fun",
37
+ icon: "🏖️",
38
+ imageUrl:
39
+ "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=800",
40
+ aiPrompt:
41
+ "A couple on a sunny beach in the 1950s, sitting under a large red-and-white striped umbrella, wearing retro high-waisted swimwear, both looking at the camera with pure happy smiles, holding vintage soda bottles, blue ocean and soft golden sand, nostalgic summer bliss",
42
+ storyTemplate: createStoryTemplate(
43
+ "relive the golden age of summer holidays",
44
+ "Salty skin, sandy toes, and a love as warm as the summer sun. They've captured the essence of a perfect, timeless afternoon.",
45
+ ),
46
+ },
47
+ {
48
+ id: ScenarioId.DRIVE_IN_CINEMA,
49
+ title: "Drive-In cinema",
50
+ description: "Movie under the stars",
51
+ icon: "🍿",
52
+ imageUrl:
53
+ "https://images.unsplash.com/photo-1485846234645-a62644f84728?w=800",
54
+ aiPrompt:
55
+ "A couple in a vintage car at a drive-in theater at night, sharing a large bucket of popcorn, both looking at the camera with romantic smiles, large movie screen in the background, starry sky and other vintage cars, warm dashboard glow, cozy and nostalgic",
56
+ storyTemplate: createStoryTemplate(
57
+ "share a movie and a moment under the midnight sky",
58
+ "The real stars aren't on the silver screen or in the sky; they're right here in the front seat. A night of old-school romance.",
59
+ ),
60
+ },
61
+ ];
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Wedding Journey Scenarios
3
+ * Complete wedding journey from proposal to honeymoon
4
+ */
5
+
6
+ import { Scenario, ScenarioId } from "../../domain/Scenario";
7
+ import { createStoryTemplate } from "../utils/scenario-utils";
8
+
9
+ export const WEDDING_SCENARIOS: Omit<Scenario, 'outputType' | 'category'>[] = [
10
+ {
11
+ id: ScenarioId.PROPOSAL,
12
+ title: "The Proposal",
13
+ description: "Will you marry me?",
14
+ icon: "💍",
15
+ imageUrl:
16
+ "https://images.unsplash.com/photo-1519741497674-611481863552?w=800&auto=format&fit=crop&q=60",
17
+ aiPrompt:
18
+ "A couple during a romantic proposal moment, man on one knee holding a ring box, woman with hands over mouth in surprise, both looking at camera with emotional expressions, dressed in elegant evening attire, romantic setting with candles and rose petals in background, magical and emotional",
19
+ storyTemplate: createStoryTemplate(
20
+ "ask the most important question",
21
+ "In this perfect moment, one question changes everything. The answer is written in their eyes.",
22
+ ),
23
+ },
24
+ {
25
+ id: ScenarioId.ENGAGEMENT_PARTY,
26
+ title: "Engagement Celebration",
27
+ description: "Celebrating the yes",
28
+ icon: "🎉",
29
+ imageUrl:
30
+ "https://images.unsplash.com/photo-1511285560929-80b456fea0bc?w=800&auto=format&fit=crop&q=60",
31
+ aiPrompt:
32
+ "A newly engaged couple at their engagement party, both looking at camera with joyful smiles, showing off engagement ring, dressed in elegant party attire, champagne glasses in hand, festive party with balloons and decorations in background, celebratory and joyful",
33
+ storyTemplate: createStoryTemplate(
34
+ "celebrate their engagement",
35
+ "Surrounded by loved ones, they toast to forever. The journey to 'I do' has officially begun.",
36
+ ),
37
+ },
38
+ {
39
+ id: ScenarioId.DRESS_SHOPPING,
40
+ title: "Finding The Dress",
41
+ description: "The perfect gown",
42
+ icon: "👗",
43
+ imageUrl:
44
+ "https://images.unsplash.com/photo-1594552072238-b8c8b3d6c1bf?w=800&auto=format&fit=crop&q=60",
45
+ aiPrompt:
46
+ "A bride trying on wedding dress in a bridal boutique, looking at camera with excited smile, wearing stunning white wedding gown, groom watching admiringly in background, elegant bridal shop with mirrors and soft lighting, dreamy and romantic",
47
+ storyTemplate: createStoryTemplate(
48
+ "find the perfect dress",
49
+ "When she sees herself in THE dress, she knows. This is the one she'll wear to marry her soulmate.",
50
+ ),
51
+ },
52
+ {
53
+ id: ScenarioId.ENGAGEMENT_SHOOT,
54
+ title: "Engagement Photos",
55
+ description: "Capturing the love",
56
+ icon: "📸",
57
+ imageUrl:
58
+ "https://images.unsplash.com/photo-1606800052052-a08af7148866?w=800&auto=format&fit=crop&q=60",
59
+ aiPrompt:
60
+ "A couple during engagement photoshoot, both looking at camera with loving smiles, dressed in coordinated elegant casual outfits, holding hands, beautiful outdoor location with golden hour lighting in background, romantic and professional",
61
+ storyTemplate: createStoryTemplate(
62
+ "capture their love story",
63
+ "Every photo tells their story - from the first glance to this moment, ready to say forever.",
64
+ ),
65
+ },
66
+ {
67
+ id: ScenarioId.BRIDAL_SHOWER,
68
+ title: "Bridal Shower",
69
+ description: "Girls celebration",
70
+ icon: "💐",
71
+ imageUrl:
72
+ "https://images.unsplash.com/photo-1519225421980-715cb0215aed?w=800&auto=format&fit=crop&q=60",
73
+ aiPrompt:
74
+ "A bride at her bridal shower party, both bride and groom looking at camera with happy smiles, dressed in elegant party attire, surrounded by gifts and decorations, beautiful party venue with flowers and balloons in background, festive and joyful",
75
+ storyTemplate: createStoryTemplate(
76
+ "celebrate with loved ones",
77
+ "Laughter, tears of joy, and endless love. Her closest friends gather to celebrate the bride-to-be.",
78
+ ),
79
+ },
80
+ {
81
+ id: ScenarioId.BACHELOR_PARTY,
82
+ title: "Last Night Out",
83
+ description: "Bachelor/Bachelorette party",
84
+ icon: "🎊",
85
+ imageUrl:
86
+ "https://images.unsplash.com/photo-1530103862676-de8c9debad1d?w=800&auto=format&fit=crop&q=60",
87
+ aiPrompt:
88
+ "A couple celebrating their bachelor and bachelorette parties, both looking at camera with excited smiles, dressed in fun party outfits, party atmosphere with friends in background, energetic and celebratory",
89
+ storyTemplate: createStoryTemplate(
90
+ "celebrate their last night of freedom",
91
+ "One last adventure before the biggest adventure of all. Tomorrow, everything changes for the better.",
92
+ ),
93
+ },
94
+ {
95
+ id: ScenarioId.CHURCH_WEDDING,
96
+ title: "Church Ceremony",
97
+ description: "Traditional sacred vows",
98
+ icon: "⛪",
99
+ imageUrl:
100
+ "https://images.unsplash.com/photo-1519741497674-611481863552?w=800&auto=format&fit=crop&q=60",
101
+ aiPrompt:
102
+ "A couple at their church wedding ceremony, both looking at camera with emotional smiles, bride in stunning white wedding gown with veil, groom in classic black tuxedo, beautiful church interior with stained glass windows and flowers in background, sacred and elegant",
103
+ storyTemplate: createStoryTemplate(
104
+ "exchange sacred vows",
105
+ "In this holy place, before God and witnesses, they promise forever. Two souls become one.",
106
+ ),
107
+ },
108
+ {
109
+ id: ScenarioId.GARDEN_WEDDING,
110
+ title: "Garden Wedding",
111
+ description: "Nature's blessing",
112
+ icon: "🌸",
113
+ imageUrl:
114
+ "https://images.unsplash.com/photo-1519225421980-715cb0215aed?w=800&auto=format&fit=crop&q=60",
115
+ aiPrompt:
116
+ "A couple at their garden wedding ceremony, both looking at camera with radiant smiles, bride in flowing white gown, groom in light-colored suit, lush garden with blooming flowers and floral arch in background, natural and romantic",
117
+ storyTemplate: createStoryTemplate(
118
+ "marry in nature's cathedral",
119
+ "Surrounded by blooming flowers and gentle breezes, nature itself celebrates their union.",
120
+ ),
121
+ },
122
+ {
123
+ id: ScenarioId.BEACH_WEDDING,
124
+ title: "Beach Wedding",
125
+ description: "Sunset vows",
126
+ icon: "🏖️",
127
+ imageUrl:
128
+ "https://images.unsplash.com/photo-1519225421980-715cb0215aed?w=800&auto=format&fit=crop&q=60",
129
+ aiPrompt:
130
+ "A couple at their beach wedding ceremony, both looking at camera with joyful smiles, bride in flowing beach wedding dress, groom in linen suit, barefoot on sand, ocean sunset and beach ceremony setup in background, tropical and romantic",
131
+ storyTemplate: createStoryTemplate(
132
+ "say I do by the ocean",
133
+ "With the waves as their witness and the sunset painting the sky, they begin their forever.",
134
+ ),
135
+ },
136
+ {
137
+ id: ScenarioId.CASTLE_WEDDING,
138
+ title: "Castle Wedding",
139
+ description: "Fairytale come true",
140
+ icon: "🏰",
141
+ imageUrl:
142
+ "https://images.unsplash.com/photo-1519741497674-611481863552?w=800&auto=format&fit=crop&q=60",
143
+ aiPrompt:
144
+ "A couple at their castle wedding, both looking at camera with regal smiles, bride in princess-style ball gown, groom in formal tuxedo, grand castle interior with chandeliers and ornate decorations in background, majestic and fairytale",
145
+ storyTemplate: createStoryTemplate(
146
+ "live their fairytale",
147
+ "In a castle fit for royalty, their love story becomes the stuff of legends.",
148
+ ),
149
+ },
150
+ {
151
+ id: ScenarioId.RECEPTION_PARTY,
152
+ title: "Wedding Reception",
153
+ description: "Party celebration",
154
+ icon: "🎆",
155
+ imageUrl:
156
+ "https://images.unsplash.com/photo-1519225421980-715cb0215aed?w=800&auto=format&fit=crop&q=60",
157
+ aiPrompt:
158
+ "A couple at their wedding reception, both looking at camera with ecstatic smiles, bride and groom in wedding attire, surrounded by guests and decorations, elegant reception venue with lights and flowers in background, festive and joyful",
159
+ storyTemplate: createStoryTemplate(
160
+ "celebrate with everyone they love",
161
+ "The ceremony is over, the party begins. Tonight, love is the only thing that matters.",
162
+ ),
163
+ },
164
+ {
165
+ id: ScenarioId.FIRST_DANCE,
166
+ title: "First Dance",
167
+ description: "As husband and wife",
168
+ icon: "💃",
169
+ imageUrl:
170
+ "https://images.unsplash.com/photo-1519225421980-715cb0215aed?w=800&auto=format&fit=crop&q=60",
171
+ aiPrompt:
172
+ "A couple during their first dance as married couple, both looking at camera while dancing, bride in wedding gown, groom in tuxedo, romantic dance floor with soft lighting and guests watching in background, intimate and romantic",
173
+ storyTemplate: createStoryTemplate(
174
+ "share their first dance",
175
+ "In each other's arms, they dance as husband and wife for the first time. The world fades away.",
176
+ ),
177
+ },
178
+ {
179
+ id: ScenarioId.CAKE_CUTTING,
180
+ title: "Cake Cutting",
181
+ description: "Sweet tradition",
182
+ icon: "🍰",
183
+ imageUrl:
184
+ "https://images.unsplash.com/photo-1464349095431-e9a21285b5f3?w=800&auto=format&fit=crop&q=60",
185
+ aiPrompt:
186
+ "A couple cutting their wedding cake together, both looking at camera with playful smiles, hands together on knife, bride and groom in wedding attire, beautiful multi-tier wedding cake and reception venue in background, sweet and joyful",
187
+ storyTemplate: createStoryTemplate(
188
+ "cut their wedding cake",
189
+ "A sweet moment, a playful tradition. The first of many things they'll share as one.",
190
+ ),
191
+ },
192
+ {
193
+ id: ScenarioId.HONEYMOON,
194
+ title: "Honeymoon Bliss",
195
+ description: "Just married paradise",
196
+ icon: "🌅",
197
+ imageUrl:
198
+ "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=800&auto=format&fit=crop&q=60",
199
+ aiPrompt:
200
+ "A newlywed couple on their honeymoon, both looking at camera with blissful smiles, dressed in elegant resort wear, relaxing in tropical paradise, luxury resort with ocean view in background, romantic and dreamy",
201
+ storyTemplate: createStoryTemplate(
202
+ "begin their honeymoon",
203
+ "Just the two of them, in paradise. The wedding is over, but the adventure of marriage has just begun.",
204
+ ),
205
+ },
206
+ ];
@@ -0,0 +1,59 @@
1
+ import { Scenario, ScenarioId } from "../../domain/Scenario";
2
+ import { createStoryTemplate } from "../utils/scenario-utils";
3
+
4
+ export const WELLNESS_SCENARIOS: Omit<Scenario, 'outputType' | 'category'>[] = [
5
+ {
6
+ id: ScenarioId.YOGA_TOGETHER,
7
+ title: "Yoga Flow",
8
+ description: "Balance and harmony",
9
+ icon: "🧘",
10
+ imageUrl: "https://images.unsplash.com/photo-1544367567-0f2fcb009e0b?w=800",
11
+ aiPrompt:
12
+ "A couple in a high-end yoga studio, both looking at the camera with serene smiles, in a graceful yoga pose side-by-side, dressed in matching stylish athletic wear, soft natural lighting and calm minimalist studio background",
13
+ storyTemplate: createStoryTemplate(
14
+ "find their inner peace together",
15
+ "Breathing in sync, finding balance not just on the mat, but in every part of their shared life.",
16
+ ),
17
+ },
18
+ {
19
+ id: ScenarioId.RUNNING_PARTNERS,
20
+ title: "Running Partners",
21
+ description: "Stronger every mile",
22
+ icon: "🏃",
23
+ imageUrl:
24
+ "https://images.unsplash.com/photo-1476480862126-209bfaa8edc8?w=800",
25
+ aiPrompt:
26
+ "A couple running together in a scenic park trail, both looking at the camera with energetic smiles, dressed in professional running gear, morning mist and sun rays through trees in background, dynamic and fit",
27
+ storyTemplate: createStoryTemplate(
28
+ "push their limits together",
29
+ "Step by step, mile after mile. They are each other's strongest motivation and greatest support.",
30
+ ),
31
+ },
32
+ {
33
+ id: ScenarioId.SWIMMING_DUO,
34
+ title: "Swimming Duo",
35
+ description: "Dive into fitness",
36
+ icon: "🏊",
37
+ imageUrl:
38
+ "https://images.unsplash.com/photo-1519046460591-94943f5509fd?w=800",
39
+ aiPrompt:
40
+ "A couple at an infinity pool, both looking at the camera with joyful smiles, halfway in crystal blue water, dressed in elegant swimwear and goggles, luxury resort and ocean sunset in background, fit and refreshed",
41
+ storyTemplate: createStoryTemplate(
42
+ "dive into health together",
43
+ "In the water, they move as one. A refreshing way to stay strong and connected in their fitness journey.",
44
+ ),
45
+ },
46
+ {
47
+ id: ScenarioId.HEALTHY_COOKING,
48
+ title: "Healthy Cooking",
49
+ description: "Fueling love and health",
50
+ icon: "🥗",
51
+ imageUrl: "https://images.unsplash.com/photo-1547592166-23ac45744abd?w=800",
52
+ aiPrompt:
53
+ "A couple in a bright modern kitchen, both looking at the camera with warm smiles, preparing a fresh colorful salad, dressed in casual stylish aprons, wooden cutting board with fresh organic vegetables, vibrant and healthy atmosphere",
54
+ storyTemplate: createStoryTemplate(
55
+ "nourish their bodies and souls",
56
+ "They say you are what you eat. They choose to be healthy, vibrant, and deeply in love.",
57
+ ),
58
+ },
59
+ ];
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Scenario Data Utils
3
+ * Helper functions for scenario creation
4
+ */
5
+
6
+ export const createStoryTemplate = (
7
+ scenarioContext: string,
8
+ futureDescription: string,
9
+ ): string => {
10
+ return `In {{year}}, {{partnerA}} and {{partnerB}} ${scenarioContext}. ${futureDescription}`;
11
+ };
@@ -9,7 +9,7 @@ import { useAppDesignTokens } from "@umituz/react-native-design-system";
9
9
  import { useFlow, resetFlowStore } from "../../../../infrastructure/flow";
10
10
  import { StepType } from "../../../../domain/entities/flow-config.types";
11
11
  import type { StepDefinition } from "../../../../domain/entities/flow-config.types";
12
- import type { CoupleFutureWizardProps, WizardScenarioData } from "../../domain/wizard.types";
12
+ import type { CoupleFutureWizardProps } from "../../domain/wizard.types";
13
13
  import { PartnerStepScreen } from "../../../partner-upload";
14
14
  import { ScenarioPreviewScreen } from "../../../scenarios";
15
15
  import { GeneratingStepContent } from "./GeneratingStepContent";
@@ -48,15 +48,6 @@ export const CoupleFutureWizard: React.FC<CoupleFutureWizardProps> = ({
48
48
  initialStepIndex,
49
49
  });
50
50
 
51
- const handleScenarioSelect = useCallback(
52
- (scenario: WizardScenarioData) => {
53
- flow.setCategory(scenario);
54
- callbacks?.onScenarioSelect?.(scenario);
55
- flow.nextStep();
56
- },
57
- [flow, callbacks],
58
- );
59
-
60
51
  const handleScenarioPreviewContinue = useCallback(() => {
61
52
  // No auth check needed here - just proceed to photo upload
62
53
  flow.nextStep();
@@ -6,7 +6,6 @@
6
6
  // Domain types
7
7
  export type {
8
8
  ScenarioData,
9
- ScenarioCategory,
10
9
  ScenarioSelectorConfig,
11
10
  ScenarioPreviewConfig,
12
11
  MagicPromptConfig,
@@ -16,7 +15,10 @@ export type {
16
15
  ScenarioSubCategory,
17
16
  ScenarioHierarchyConfig,
18
17
  } from "./domain/types";
19
- export { ScenarioCategory as ScenarioCategoryEnum, SCENARIO_DEFAULTS } from "./domain/types";
18
+ export { SCENARIO_DEFAULTS } from "./domain/types";
19
+
20
+ // Note: ScenarioCategory is now exported from domains/scenarios
21
+ // Import from there instead: import { ScenarioCategory } from '@umituz/react-native-ai-generation-content'
20
22
 
21
23
  // Components
22
24
  export {
package/src/index.ts CHANGED
@@ -142,6 +142,7 @@ export * from "./domains/prompts";
142
142
  export * from "./domains/content-moderation";
143
143
  export * from "./domains/creations";
144
144
  export * from "./domains/face-detection";
145
+ export * from "./domains/scenarios";
145
146
  export * from "./features/image-to-image";
146
147
  export * from "./features/replace-background";
147
148
  export * from "./features/upscaling";
@@ -29,7 +29,24 @@ let flowStoreInstance: FlowStoreType | null = null;
29
29
 
30
30
  export const useFlow = (config: UseFlowConfig): UseFlowReturn => {
31
31
  const storeRef = useRef<FlowStoreType | null>(null);
32
+ const prevConfigRef = useRef<{ initialStepIndex?: number; initialStepId?: string } | undefined>(undefined);
32
33
 
34
+ // Detect config changes (initialStepIndex or initialStepId changed)
35
+ const configChanged =
36
+ prevConfigRef.current !== undefined &&
37
+ (prevConfigRef.current.initialStepIndex !== config.initialStepIndex ||
38
+ prevConfigRef.current.initialStepId !== config.initialStepId);
39
+
40
+ // If config changed, reset and recreate store
41
+ if (configChanged) {
42
+ if (flowStoreInstance) {
43
+ flowStoreInstance.getState().reset();
44
+ }
45
+ flowStoreInstance = null;
46
+ storeRef.current = null;
47
+ }
48
+
49
+ // Initialize store if needed
33
50
  if (!storeRef.current) {
34
51
  if (!flowStoreInstance) {
35
52
  flowStoreInstance = createFlowStore({
@@ -41,6 +58,12 @@ export const useFlow = (config: UseFlowConfig): UseFlowReturn => {
41
58
  storeRef.current = flowStoreInstance;
42
59
  }
43
60
 
61
+ // Store current config for next render comparison
62
+ prevConfigRef.current = {
63
+ initialStepIndex: config.initialStepIndex,
64
+ initialStepId: config.initialStepId,
65
+ };
66
+
44
67
  const store = storeRef.current;
45
68
  const state = store();
46
69
  const totalSteps = config.steps.length;