@umituz/react-native-ai-generation-content 1.17.250 → 1.17.252
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.17.
|
|
3
|
+
"version": "1.17.252",
|
|
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",
|
|
@@ -21,7 +21,7 @@ export const ROMANTIC_MOOD_OPTIONS: CoupleFeatureOption[] = [
|
|
|
21
21
|
{ id: "romantic", iconKey: "heart", labelKey: "romantic" },
|
|
22
22
|
{ id: "mysterious", iconKey: "moon", labelKey: "mysterious" },
|
|
23
23
|
{ id: "magical", iconKey: "sparkles", labelKey: "magical" },
|
|
24
|
-
{ id: "energetic", iconKey: "
|
|
24
|
+
{ id: "energetic", iconKey: "flash-outline", labelKey: "energetic" },
|
|
25
25
|
{ id: "melancholic", iconKey: "cloud", labelKey: "melancholic" },
|
|
26
26
|
{ id: "passionate", iconKey: "flame", labelKey: "passionate" },
|
|
27
27
|
{ id: "nostalgic", iconKey: "camera", labelKey: "nostalgic" },
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Couple Feature Screen
|
|
3
|
-
* Generic screen for couple feature selection
|
|
3
|
+
* Generic screen for couple feature selection with NavigationHeader pattern
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import React from "react";
|
|
7
|
-
import { View, StyleSheet,
|
|
7
|
+
import { View, StyleSheet, TouchableOpacity } from "react-native";
|
|
8
8
|
import {
|
|
9
|
-
AtomicButton,
|
|
10
9
|
AtomicText,
|
|
10
|
+
AtomicIcon,
|
|
11
|
+
NavigationHeader,
|
|
12
|
+
ScreenLayout,
|
|
11
13
|
useAppDesignTokens,
|
|
12
14
|
} from "@umituz/react-native-design-system";
|
|
13
15
|
import type { CoupleFeatureId, CoupleFeatureSelection } from "../../domain/types";
|
|
@@ -49,20 +51,13 @@ export const CoupleFeatureScreen: React.FC<CoupleFeatureScreenProps> = ({
|
|
|
49
51
|
featureId,
|
|
50
52
|
hasConfig: !!config,
|
|
51
53
|
hasComponent: !!FeatureComponentMap[featureId],
|
|
52
|
-
selectionKeys: Object.keys(selection),
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
if (!config)
|
|
57
|
-
if (__DEV__) console.log("[CoupleFeatureScreen] No config for:", featureId);
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
57
|
+
if (!config) return null;
|
|
60
58
|
|
|
61
59
|
const FeatureComponent = FeatureComponentMap[featureId];
|
|
62
|
-
if (!FeatureComponent)
|
|
63
|
-
if (__DEV__) console.log("[CoupleFeatureScreen] No component for:", featureId);
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
60
|
+
if (!FeatureComponent) return null;
|
|
66
61
|
|
|
67
62
|
const selectorProps = {
|
|
68
63
|
selection,
|
|
@@ -72,69 +67,47 @@ export const CoupleFeatureScreen: React.FC<CoupleFeatureScreenProps> = ({
|
|
|
72
67
|
};
|
|
73
68
|
|
|
74
69
|
return (
|
|
75
|
-
<View
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
70
|
+
<View style={[styles.container, { backgroundColor: tokens.colors.backgroundPrimary }]}>
|
|
71
|
+
<NavigationHeader
|
|
72
|
+
title={t(`${config.translationPrefix}.title`)}
|
|
73
|
+
onBackPress={onBack}
|
|
74
|
+
rightElement={
|
|
75
|
+
<TouchableOpacity
|
|
76
|
+
onPress={onContinue}
|
|
77
|
+
activeOpacity={0.7}
|
|
78
|
+
style={{
|
|
79
|
+
flexDirection: "row",
|
|
80
|
+
alignItems: "center",
|
|
81
|
+
backgroundColor: tokens.colors.primary,
|
|
82
|
+
paddingHorizontal: tokens.spacing.md,
|
|
83
|
+
paddingVertical: tokens.spacing.xs,
|
|
84
|
+
borderRadius: tokens.borders.radius.full,
|
|
85
|
+
}}
|
|
86
|
+
>
|
|
87
|
+
<AtomicText
|
|
88
|
+
type="bodyMedium"
|
|
89
|
+
style={{ fontWeight: "800", color: tokens.colors.onPrimary, marginRight: 4 }}
|
|
90
|
+
>
|
|
91
|
+
{t("common.continue")}
|
|
92
|
+
</AtomicText>
|
|
93
|
+
<AtomicIcon name="arrow-forward" size="sm" color="onPrimary" />
|
|
94
|
+
</TouchableOpacity>
|
|
95
|
+
}
|
|
96
|
+
/>
|
|
97
|
+
<ScreenLayout
|
|
98
|
+
edges={["left", "right"]}
|
|
99
|
+
backgroundColor="transparent"
|
|
100
|
+
scrollable={true}
|
|
101
|
+
contentContainerStyle={styles.scrollContent}
|
|
102
|
+
hideScrollIndicator={true}
|
|
99
103
|
>
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
onPress={onBack}
|
|
103
|
-
variant="secondary"
|
|
104
|
-
style={styles.backButton}
|
|
105
|
-
/>
|
|
106
|
-
<AtomicButton
|
|
107
|
-
title={t("common.continue")}
|
|
108
|
-
onPress={onContinue}
|
|
109
|
-
variant="primary"
|
|
110
|
-
style={styles.continueButton}
|
|
111
|
-
/>
|
|
112
|
-
</View>
|
|
104
|
+
<FeatureComponent {...selectorProps} />
|
|
105
|
+
</ScreenLayout>
|
|
113
106
|
</View>
|
|
114
107
|
);
|
|
115
108
|
};
|
|
116
109
|
|
|
117
110
|
const styles = StyleSheet.create({
|
|
118
|
-
container: {
|
|
119
|
-
|
|
120
|
-
},
|
|
121
|
-
header: {
|
|
122
|
-
padding: 16,
|
|
123
|
-
paddingTop: 20,
|
|
124
|
-
},
|
|
125
|
-
content: {
|
|
126
|
-
flex: 1,
|
|
127
|
-
},
|
|
128
|
-
footer: {
|
|
129
|
-
flexDirection: "row",
|
|
130
|
-
padding: 16,
|
|
131
|
-
borderTopWidth: 1,
|
|
132
|
-
gap: 12,
|
|
133
|
-
},
|
|
134
|
-
backButton: {
|
|
135
|
-
flex: 1,
|
|
136
|
-
},
|
|
137
|
-
continueButton: {
|
|
138
|
-
flex: 2,
|
|
139
|
-
},
|
|
111
|
+
container: { flex: 1 },
|
|
112
|
+
scrollContent: { paddingBottom: 24 },
|
|
140
113
|
});
|