@umituz/react-native-ai-generation-content 1.89.19 → 1.89.21
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 +1 -1
- package/src/domains/prompts/domain/base/constants.ts +58 -81
- package/src/domains/result-preview/presentation/components/ResultPreviewScreen.tsx +12 -12
- package/src/domains/scenarios/presentation/screens/MainCategoryScreen.tsx +24 -21
- package/src/domains/scenarios/presentation/screens/SubCategoryScreen.tsx +24 -21
- package/src/presentation/components/headers/AIGenScreenHeader.tsx +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-ai-generation-content",
|
|
3
|
-
"version": "1.89.
|
|
3
|
+
"version": "1.89.21",
|
|
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",
|
|
@@ -5,130 +5,107 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export const IDENTITY_PRESERVATION_CORE = `IDENTITY PRESERVATION (CRITICAL):
|
|
8
|
-
Preserve EXACT facial features
|
|
8
|
+
Preserve EXACT facial features: bone structure, skin tone, eye/hair color. NO smoothing. Must be instantly recognizable.`;
|
|
9
9
|
|
|
10
10
|
export const IDENTITY_PRESERVATION_COUPLE = `IDENTITY PRESERVATION (CRITICAL):
|
|
11
|
-
Preserve EXACT facial features for BOTH people
|
|
11
|
+
Preserve EXACT facial features for BOTH people. Same requirements as single. NO smoothing. Both must be instantly recognizable.`;
|
|
12
12
|
|
|
13
13
|
export const PHOTOREALISTIC_RENDERING = `STYLE - PHOTOREALISTIC QUALITY (CRITICAL):
|
|
14
|
-
|
|
14
|
+
Real photograph quality - NOT digital art or CGI.
|
|
15
15
|
|
|
16
16
|
REQUIREMENTS:
|
|
17
|
-
- Professional camera
|
|
18
|
-
- Photographic lighting
|
|
19
|
-
- Authentic
|
|
20
|
-
- Real textures: visible skin pores,
|
|
21
|
-
-
|
|
22
|
-
- Natural sharpness: realistic focus fall-off
|
|
17
|
+
- Professional camera: natural depth of field, realistic bokeh
|
|
18
|
+
- Photographic lighting with soft shadows
|
|
19
|
+
- Authentic skin tones, no over-saturation
|
|
20
|
+
- Real textures: visible skin pores, hair strands
|
|
21
|
+
- Subtle camera grain
|
|
23
22
|
|
|
24
23
|
STRICTLY PROHIBITED:
|
|
25
|
-
- NO digital art, 3D render, CGI
|
|
26
|
-
- NO plastic, wax,
|
|
27
|
-
- NO anime, cartoon, illustration
|
|
28
|
-
- NO artificial glow
|
|
29
|
-
- NO fake bokeh or exaggerated colors
|
|
24
|
+
- NO digital art, 3D render, CGI
|
|
25
|
+
- NO plastic, wax, doll-like skin
|
|
26
|
+
- NO anime, cartoon, illustration
|
|
27
|
+
- NO artificial glow or perfection
|
|
30
28
|
|
|
31
|
-
RESULT: Must
|
|
29
|
+
RESULT: Must look like real photograph.`;
|
|
32
30
|
|
|
33
31
|
export const NATURAL_POSE_GUIDELINES = `POSE - NATURAL BODY LANGUAGE (CRITICAL):
|
|
34
|
-
|
|
32
|
+
Authentic, relaxed candid poses.
|
|
35
33
|
|
|
36
34
|
REQUIREMENTS:
|
|
37
|
-
- Relaxed
|
|
38
|
-
-
|
|
39
|
-
- Natural
|
|
40
|
-
- Natural hand positioning - not curled or contorted
|
|
35
|
+
- Relaxed stance - no stiff posture
|
|
36
|
+
- Natural body language for scenario
|
|
37
|
+
- Natural hand positioning
|
|
41
38
|
- Authentic weight distribution
|
|
42
39
|
|
|
43
40
|
FACIAL EXPRESSION:
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
- Realistic micro-expressions
|
|
41
|
+
- Relaxed expression - not forced
|
|
42
|
+
- Natural eye contact
|
|
43
|
+
- Realistic smile intensity
|
|
48
44
|
|
|
49
45
|
STRICTLY PROHIBITED:
|
|
50
|
-
- NO
|
|
51
|
-
- NO
|
|
52
|
-
- NO
|
|
53
|
-
- NO
|
|
54
|
-
- NO unnatural arm, leg, or body angles
|
|
55
|
-
- NO dance, ballet, or performative poses
|
|
46
|
+
- NO contorted or impossible poses
|
|
47
|
+
- NO stiff or mannequin-like posture
|
|
48
|
+
- NO exaggerated expressions
|
|
49
|
+
- NO unnatural body angles
|
|
56
50
|
|
|
57
|
-
RESULT:
|
|
51
|
+
RESULT: Real human in candid photo.`;
|
|
58
52
|
|
|
59
53
|
export const NATURAL_POSE_GUIDELINES_COUPLE = `POSE - NATURAL COUPLE INTERACTION (CRITICAL):
|
|
60
|
-
|
|
54
|
+
Authentic, relaxed couple poses with genuine chemistry.
|
|
61
55
|
|
|
62
56
|
REQUIREMENTS:
|
|
63
|
-
- Relaxed
|
|
64
|
-
-
|
|
65
|
-
- Natural head positions and angles for both
|
|
57
|
+
- Relaxed stance for both
|
|
58
|
+
- Natural body language and interaction
|
|
66
59
|
- Realistic positioning relative to each other
|
|
67
|
-
- Natural arm
|
|
68
|
-
- Authentic physical
|
|
60
|
+
- Natural arm/hand placement
|
|
61
|
+
- Authentic physical proximity
|
|
69
62
|
|
|
70
63
|
FACIAL EXPRESSIONS:
|
|
71
|
-
- Natural
|
|
72
|
-
- Authentic eye contact
|
|
73
|
-
-
|
|
74
|
-
- Realistic micro-expressions and chemistry
|
|
75
|
-
|
|
76
|
-
COUPLE INTERACTION:
|
|
77
|
-
- Authentic couple dynamics and comfort
|
|
78
|
-
- Realistic physical proximity
|
|
79
|
-
- Natural touch or contact if appropriate
|
|
80
|
-
- Genuine spontaneous engagement
|
|
64
|
+
- Natural expressions for both
|
|
65
|
+
- Authentic eye contact
|
|
66
|
+
- Realistic chemistry
|
|
81
67
|
|
|
82
68
|
STRICTLY PROHIBITED:
|
|
83
|
-
- NO
|
|
84
|
-
- NO
|
|
85
|
-
- NO
|
|
86
|
-
- NO
|
|
87
|
-
- NO unnatural body angles
|
|
88
|
-
- NO fake or staged-looking interactions
|
|
69
|
+
- NO contorted poses
|
|
70
|
+
- NO stiff posture
|
|
71
|
+
- NO exaggerated expressions
|
|
72
|
+
- NO fake interactions
|
|
89
73
|
|
|
90
|
-
RESULT:
|
|
74
|
+
RESULT: Real couple naturally interacting.`;
|
|
91
75
|
|
|
92
76
|
export const ANTI_PLASTIC_DIRECTIVES = `ANTI-PLASTIC DIRECTIVES (CRITICAL):
|
|
93
|
-
|
|
77
|
+
Real photograph look - NOT digital art.
|
|
94
78
|
|
|
95
79
|
SKIN TEXTURE:
|
|
96
|
-
-
|
|
97
|
-
- Natural skin variation
|
|
98
|
-
- NO poreless
|
|
99
|
-
- NO plastic
|
|
80
|
+
- Visible pores required
|
|
81
|
+
- Natural skin variation
|
|
82
|
+
- NO poreless or porcelain skin
|
|
83
|
+
- NO plastic smoothness
|
|
100
84
|
|
|
101
85
|
FACIAL NATURALNESS:
|
|
102
|
-
- Slight asymmetry
|
|
103
|
-
- Natural skin lines
|
|
104
|
-
-
|
|
105
|
-
- Natural eye shape variations
|
|
106
|
-
- Realistic lip texture - not perfectly symmetrical
|
|
86
|
+
- Slight asymmetry required
|
|
87
|
+
- Natural skin lines and variations
|
|
88
|
+
- Realistic features
|
|
107
89
|
|
|
108
90
|
LIGHTING & COLOR:
|
|
109
|
-
- Natural lighting variation
|
|
110
|
-
- Realistic shadows
|
|
111
|
-
- Authentic skin tones
|
|
112
|
-
- Real color temperature: warm or cool
|
|
91
|
+
- Natural lighting variation
|
|
92
|
+
- Realistic shadows
|
|
93
|
+
- Authentic skin tones
|
|
113
94
|
|
|
114
95
|
MATERIAL REALISM:
|
|
115
|
-
- Realistic fabric textures
|
|
116
|
-
- Authentic hair texture
|
|
117
|
-
- Real material properties
|
|
118
|
-
- NO plastic, shiny, or artificial-looking materials
|
|
96
|
+
- Realistic fabric textures
|
|
97
|
+
- Authentic hair texture
|
|
98
|
+
- Real material properties
|
|
119
99
|
|
|
120
100
|
TECHNICAL QUALITY:
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
- Realistic color grading: not over-processed
|
|
124
|
-
- Slight camera grain for authenticity
|
|
101
|
+
- Natural depth of field
|
|
102
|
+
- Subtle camera grain
|
|
125
103
|
|
|
126
104
|
STRICTLY PROHIBITED:
|
|
127
|
-
- NO digital art
|
|
105
|
+
- NO digital art or CGI
|
|
128
106
|
- NO symmetry or perfection
|
|
129
|
-
- NO over-smoothed
|
|
130
|
-
- NO
|
|
131
|
-
- NO plastic, wax, doll, or mannequin appearance
|
|
107
|
+
- NO over-smoothed look
|
|
108
|
+
- NO plastic or doll appearance
|
|
132
109
|
|
|
133
|
-
RESULT:
|
|
110
|
+
RESULT: Real photograph with natural imperfections.`;
|
|
134
111
|
|
|
@@ -15,16 +15,16 @@ import { formatMediaUrl, shouldShowRecentCreations } from "./ResultPreviewScreen
|
|
|
15
15
|
export const ResultPreviewScreen: React.FC<ResultPreviewScreenProps> = ({
|
|
16
16
|
imageUrl,
|
|
17
17
|
videoUrl,
|
|
18
|
-
isSaving,
|
|
19
|
-
isSharing,
|
|
20
|
-
onDownload,
|
|
21
|
-
onShare,
|
|
22
|
-
onTryAgain,
|
|
18
|
+
isSaving: _isSaving,
|
|
19
|
+
isSharing: _isSharing,
|
|
20
|
+
onDownload: _onDownload,
|
|
21
|
+
onShare: _onShare,
|
|
22
|
+
onTryAgain: _onTryAgain,
|
|
23
23
|
onNavigateBack,
|
|
24
|
-
onRate,
|
|
25
|
-
onEdit,
|
|
26
|
-
onEditVideo,
|
|
27
|
-
onShareToFeed,
|
|
24
|
+
onRate: _onRate,
|
|
25
|
+
onEdit: _onEdit,
|
|
26
|
+
onEditVideo: _onEditVideo,
|
|
27
|
+
onShareToFeed: _onShareToFeed,
|
|
28
28
|
recentCreations,
|
|
29
29
|
onViewAll,
|
|
30
30
|
onCreationPress,
|
|
@@ -32,9 +32,9 @@ export const ResultPreviewScreen: React.FC<ResultPreviewScreenProps> = ({
|
|
|
32
32
|
translations,
|
|
33
33
|
style,
|
|
34
34
|
hideLabel = false,
|
|
35
|
-
iconOnly = false,
|
|
36
|
-
showTryAgain = true,
|
|
37
|
-
showRating = false,
|
|
35
|
+
iconOnly: _iconOnly = false,
|
|
36
|
+
showTryAgain: _showTryAgain = true,
|
|
37
|
+
showRating: _showRating = false,
|
|
38
38
|
}) => {
|
|
39
39
|
const tokens = useAppDesignTokens();
|
|
40
40
|
const isVideo = Boolean(videoUrl);
|
|
@@ -7,6 +7,7 @@ import React, { useMemo, useCallback, useEffect } from "react";
|
|
|
7
7
|
import {
|
|
8
8
|
FlatList,
|
|
9
9
|
StyleSheet,
|
|
10
|
+
View,
|
|
10
11
|
type ListRenderItemInfo,
|
|
11
12
|
} from "react-native";
|
|
12
13
|
import { AtomicCard } from "@umituz/react-native-design-system/atoms";
|
|
@@ -80,32 +81,34 @@ export const MainCategoryScreen: React.FC<MainCategoryScreenProps> = ({
|
|
|
80
81
|
);
|
|
81
82
|
|
|
82
83
|
return (
|
|
83
|
-
<
|
|
84
|
-
scrollable={false}
|
|
85
|
-
edges={["left", "right"]}
|
|
86
|
-
backgroundColor={tokens.colors.backgroundPrimary}
|
|
87
|
-
>
|
|
84
|
+
<View style={{ flex: 1, backgroundColor: tokens.colors.backgroundPrimary }}>
|
|
88
85
|
<AIGenScreenHeader
|
|
89
86
|
title={headerTitle || t("scenario.main_category.title")}
|
|
90
87
|
description={headerDescription || t("scenario.main_category.subtitle")}
|
|
91
88
|
onNavigationPress={onBack}
|
|
92
89
|
/>
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
{
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
90
|
+
<ScreenLayout
|
|
91
|
+
scrollable={false}
|
|
92
|
+
edges={["left", "right", "bottom"]}
|
|
93
|
+
backgroundColor={tokens.colors.backgroundPrimary}
|
|
94
|
+
>
|
|
95
|
+
<FlatList
|
|
96
|
+
data={mainCategories}
|
|
97
|
+
showsVerticalScrollIndicator={false}
|
|
98
|
+
renderItem={renderItem}
|
|
99
|
+
keyExtractor={(item) => item.id}
|
|
100
|
+
contentContainerStyle={[
|
|
101
|
+
styles.listContent,
|
|
102
|
+
{ paddingBottom: insets.bottom + 40 },
|
|
103
|
+
]}
|
|
104
|
+
removeClippedSubviews
|
|
105
|
+
maxToRenderPerBatch={10}
|
|
106
|
+
updateCellsBatchingPeriod={50}
|
|
107
|
+
initialNumToRender={7}
|
|
108
|
+
windowSize={11}
|
|
109
|
+
/>
|
|
110
|
+
</ScreenLayout>
|
|
111
|
+
</View>
|
|
109
112
|
);
|
|
110
113
|
};
|
|
111
114
|
const createStyles = (tokens: DesignTokens) =>
|
|
@@ -7,6 +7,7 @@ import React, { useMemo, useCallback, useEffect } from "react";
|
|
|
7
7
|
import {
|
|
8
8
|
FlatList,
|
|
9
9
|
StyleSheet,
|
|
10
|
+
View,
|
|
10
11
|
type ListRenderItemInfo,
|
|
11
12
|
} from "react-native";
|
|
12
13
|
import { AtomicCard } from "@umituz/react-native-design-system/atoms";
|
|
@@ -97,32 +98,34 @@ export const SubCategoryScreen: React.FC<SubCategoryScreenProps> = ({
|
|
|
97
98
|
);
|
|
98
99
|
|
|
99
100
|
return (
|
|
100
|
-
<
|
|
101
|
-
scrollable={false}
|
|
102
|
-
edges={["left", "right"]}
|
|
103
|
-
backgroundColor={tokens.colors.backgroundPrimary}
|
|
104
|
-
>
|
|
101
|
+
<View style={{ flex: 1, backgroundColor: tokens.colors.backgroundPrimary }}>
|
|
105
102
|
<AIGenScreenHeader
|
|
106
103
|
title={headerTitleKey ? t(headerTitleKey) : t("scenario.sub_category.title")}
|
|
107
104
|
description={headerDescriptionKey ? t(headerDescriptionKey) : t("scenario.sub_category.subtitle")}
|
|
108
105
|
onNavigationPress={onBack}
|
|
109
106
|
/>
|
|
110
|
-
<
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
107
|
+
<ScreenLayout
|
|
108
|
+
scrollable={false}
|
|
109
|
+
edges={["left", "right", "bottom"]}
|
|
110
|
+
backgroundColor={tokens.colors.backgroundPrimary}
|
|
111
|
+
>
|
|
112
|
+
<FlatList
|
|
113
|
+
data={filteredSubCategories}
|
|
114
|
+
showsVerticalScrollIndicator={false}
|
|
115
|
+
renderItem={renderItem}
|
|
116
|
+
keyExtractor={(item) => item.id}
|
|
117
|
+
contentContainerStyle={[
|
|
118
|
+
styles.listContent,
|
|
119
|
+
{ paddingBottom: insets.bottom + 40 },
|
|
120
|
+
]}
|
|
121
|
+
removeClippedSubviews
|
|
122
|
+
maxToRenderPerBatch={10}
|
|
123
|
+
updateCellsBatchingPeriod={50}
|
|
124
|
+
initialNumToRender={10}
|
|
125
|
+
windowSize={11}
|
|
126
|
+
/>
|
|
127
|
+
</ScreenLayout>
|
|
128
|
+
</View>
|
|
126
129
|
);
|
|
127
130
|
};
|
|
128
131
|
|
|
@@ -46,7 +46,7 @@ export const AIGenScreenHeader: React.FC<AIGenScreenHeaderProps> = ({
|
|
|
46
46
|
const iconColor = isCloseButton ? "secondary" : "primary";
|
|
47
47
|
|
|
48
48
|
return (
|
|
49
|
-
<View style={[styles.header, { paddingTop: insets.top
|
|
49
|
+
<View style={[styles.header, { paddingTop: insets.top }]}>
|
|
50
50
|
<View style={styles.headerTop}>
|
|
51
51
|
{onNavigationPress && (
|
|
52
52
|
<TouchableOpacity
|