@umituz/react-native-ai-generation-content 1.23.0 → 1.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-ai-generation-content",
3
- "version": "1.23.0",
3
+ "version": "1.23.2",
4
4
  "description": "Provider-agnostic AI generation orchestration for React Native with result preview components",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -93,6 +93,7 @@ export interface CoupleFutureWizardCallbacks extends FlowCallbacks {
93
93
  readonly onPartnerUpload?: (partnerId: "A" | "B", image: FlowUploadedImageData) => void;
94
94
  readonly onBackToScenarioSelection?: () => void;
95
95
  readonly requireFeature?: (callback: () => void) => boolean;
96
+ readonly onStepChange?: (stepId: string, stepType: StepType) => void;
96
97
  }
97
98
 
98
99
  /** Wizard props */
@@ -3,7 +3,7 @@
3
3
  * Complete wizard component for couple future generation flow
4
4
  */
5
5
 
6
- import React, { useCallback, useMemo } from "react";
6
+ import React, { useCallback, useMemo, useEffect } from "react";
7
7
  import { View, StyleSheet } from "react-native";
8
8
  import { useAppDesignTokens } from "@umituz/react-native-design-system";
9
9
  import { useFlow, resetFlowStore } from "../../../../infrastructure/flow";
@@ -48,7 +48,24 @@ export const CoupleFutureWizard: React.FC<CoupleFutureWizardProps> = ({
48
48
  initialStepIndex,
49
49
  });
50
50
 
51
+ // Notify parent app when step changes
52
+ useEffect(() => {
53
+ if (flow.currentStep && callbacks?.onStepChange) {
54
+ if (typeof __DEV__ !== "undefined" && __DEV__) {
55
+ console.log("[CoupleFutureWizard] Step changed", {
56
+ stepId: flow.currentStep.id,
57
+ stepType: flow.currentStep.type,
58
+ currentStepIndex: flow.currentStepIndex,
59
+ });
60
+ }
61
+ callbacks.onStepChange(flow.currentStep.id, flow.currentStep.type);
62
+ }
63
+ }, [flow.currentStep, flow.currentStepIndex, callbacks]);
64
+
51
65
  const handleScenarioPreviewContinue = useCallback(() => {
66
+ if (typeof __DEV__ !== "undefined" && __DEV__) {
67
+ console.log("[CoupleFutureWizard] Preview Continue clicked");
68
+ }
52
69
  // No auth check needed here - just proceed to photo upload
53
70
  flow.nextStep();
54
71
  }, [flow]);
@@ -79,6 +79,17 @@ export const createFlowStore = (config: FlowStoreConfig) => {
79
79
  const newCompleted = completedSteps.includes(currentStepId)
80
80
  ? completedSteps
81
81
  : [...completedSteps, currentStepId];
82
+
83
+ if (typeof __DEV__ !== "undefined" && __DEV__) {
84
+ console.log("[FlowStore] nextStep", {
85
+ fromIndex: currentStepIndex,
86
+ toIndex: nextIndex,
87
+ fromStep: currentStepId,
88
+ toStep: nextStep.id,
89
+ toStepType: nextStep.type,
90
+ });
91
+ }
92
+
82
93
  set({ currentStepId: nextStep.id, currentStepIndex: nextIndex, completedSteps: newCompleted });
83
94
  }
84
95
  },
@@ -32,6 +32,29 @@ export const AIGenerateWizardFlow: React.FC<AIGenerateWizardFlowProps> = ({
32
32
  t,
33
33
  }) => {
34
34
  const tokens = useAppDesignTokens();
35
+
36
+ // Transform WizardStyleOption[] to StyleOption[] format
37
+ const transformedStyles = React.useMemo(() =>
38
+ styleOptions.map((style) => ({
39
+ id: style.id,
40
+ name: style.label,
41
+ description: undefined,
42
+ icon: style.icon,
43
+ })),
44
+ [styleOptions]
45
+ );
46
+
47
+ // Transform PresetOption[] to StylePreset[] format
48
+ const transformedPresets = React.useMemo(() =>
49
+ presets.map((preset) => ({
50
+ id: preset.id,
51
+ name: preset.label,
52
+ emoji: preset.icon || "",
53
+ description: preset.prompt || "",
54
+ })),
55
+ [presets]
56
+ );
57
+
35
58
  const {
36
59
  currentStep,
37
60
  setCurrentStep,
@@ -183,11 +206,11 @@ export const AIGenerateWizardFlow: React.FC<AIGenerateWizardFlowProps> = ({
183
206
  heroSubtitle={translations.heroSubtitle}
184
207
  isGenerating={isGenerating}
185
208
  progress={progress}
186
- presets={presets}
209
+ presets={transformedPresets}
187
210
  onPresetPress={() => { void handleGenerate(); }}
188
211
  prompt={prompt}
189
212
  onPromptChange={setPrompt}
190
- styles={styleOptions}
213
+ styles={transformedStyles}
191
214
  selectedStyle={selectedStyle}
192
215
  onStyleSelect={setSelectedStyle}
193
216
  duration={selectedDuration}
@@ -33,7 +33,7 @@ export interface AIGenerateWizardTranslations {
33
33
  readonly maxFileSize: string;
34
34
  }
35
35
 
36
- export interface StyleOption {
36
+ export interface WizardStyleOption {
37
37
  readonly id: string;
38
38
  readonly label: string;
39
39
  readonly icon?: string;
@@ -49,7 +49,7 @@ export interface PresetOption {
49
49
  export interface AIGenerateWizardFlowProps {
50
50
  readonly featureType: string;
51
51
  readonly translations: AIGenerateWizardTranslations;
52
- readonly styleOptions: StyleOption[];
52
+ readonly styleOptions: WizardStyleOption[];
53
53
  readonly presets: PresetOption[];
54
54
  readonly durationOptions: number[];
55
55
  readonly onGenerate: (data: {