@momo-kits/native-kits 0.156.1-test.15 → 0.156.1-test.20-debug

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 (132) hide show
  1. package/PUBLISH_GUIDE.md +255 -386
  2. package/build.gradle.kts +11 -0
  3. package/compose/build.gradle.kts +180 -0
  4. package/compose/build.gradle.kts.backup +180 -0
  5. package/compose/compose.podspec +54 -0
  6. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +113 -0
  7. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  8. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  9. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  10. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  11. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  12. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  13. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  14. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  15. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  16. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  17. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +95 -0
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +715 -0
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +83 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +348 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +447 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +244 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +234 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +189 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +99 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +166 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +333 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +552 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +226 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +274 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +31 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +219 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
  108. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +152 -0
  109. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Example.xcscheme +32 -0
  110. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  111. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  112. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/WorkspaceSettings.xcsettings +16 -0
  113. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +6 -0
  114. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +5 -0
  115. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +58 -0
  116. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Pods-Example.xcscheme +58 -0
  117. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
  118. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
  119. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
  120. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +58 -0
  121. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios.xcscheme +58 -0
  122. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +60 -0
  123. package/gradle/libs.versions.toml +57 -0
  124. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  125. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  126. package/gradle.properties +26 -0
  127. package/gradlew +252 -0
  128. package/gradlew.bat +94 -0
  129. package/local.properties +8 -0
  130. package/package.json +1 -1
  131. package/publish.sh +156 -151
  132. package/settings.gradle.kts +52 -0
package/publish.sh CHANGED
@@ -9,11 +9,11 @@ set -e # Exit on error
9
9
  # sh publish.sh beta # Run all phases for beta
10
10
  # sh publish.sh release # Run all phases for release
11
11
  # sh publish.sh beta check # Phase 1 only: Check version (beta)
12
- # sh publish.sh beta maven # Phase 2 only: Publish to Maven (beta)
13
- # sh publish.sh beta npm # Phase 3 only: Publish to NPM (beta)
12
+ # sh publish.sh beta npm # Phase 2 only: Publish to NPM (beta)
13
+ # sh publish.sh beta maven # Phase 3 only: Publish to Maven (beta)
14
14
  # sh publish.sh release check # Phase 1 only: Check version (release)
15
- # sh publish.sh release maven # Phase 2 only: Publish to Maven (release)
16
- # sh publish.sh release npm # Phase 3 only: Publish to NPM (release)
15
+ # sh publish.sh release npm # Phase 2 only: Publish to NPM (release)
16
+ # sh publish.sh release maven # Phase 3 only: Publish to Maven (release)
17
17
  # ============================================================================
18
18
 
19
19
  MODE="${1:-}"
@@ -27,7 +27,7 @@ if [ -z "$MODE" ]; then
27
27
  echo " sh publish.sh beta [phase] # Beta publishing"
28
28
  echo " sh publish.sh release [phase] # Release publishing"
29
29
  echo ""
30
- echo "Phases: check | maven | npm | all (default: all)"
30
+ echo "Phases: check | npm | maven | all (default: all)"
31
31
  exit 1
32
32
  fi
33
33
 
@@ -36,6 +36,13 @@ if [ "$MODE" != "beta" ] && [ "$MODE" != "release" ]; then
36
36
  exit 1
37
37
  fi
38
38
 
39
+ # Set NPM tag based on mode
40
+ if [ "$MODE" == "beta" ]; then
41
+ NPM_TAG="beta"
42
+ else
43
+ NPM_TAG="latest"
44
+ fi
45
+
39
46
  # ============================================================================
40
47
  # PHASE 1: CHECK AND UPDATE VERSION
41
48
  # ============================================================================
@@ -45,36 +52,26 @@ phase_check_version() {
45
52
  echo "📋 PHASE 1: CHECK AND UPDATE VERSION ($MODE)"
46
53
  echo "==============================================="
47
54
 
48
- PACKAGE_NAME=$(node -p "require('./package.json').name")
55
+ echo "🔍 Reading version from local package.json..."
56
+
57
+ # Get the version from local package.json
58
+ VERSION=$(node -p "require('./package.json').version")
59
+
60
+ if [ -z "$VERSION" ]; then
61
+ echo "❌ Error: Could not read version from package.json"
62
+ exit 1
63
+ fi
64
+
65
+ echo "📦 Version from package.json: $VERSION"
49
66
 
50
67
  # ==============================================================
51
- # BETA MODE: Check format for tag, fail if exists
68
+ # BETA MODE: Fail if version exists
52
69
  # ==============================================================
53
70
  if [ "$MODE" == "beta" ]; then
54
- echo "🔍 Reading version from package.json..."
55
- VERSION=$(node -p "require('./package.json').version")
56
-
57
- if [ -z "$VERSION" ]; then
58
- echo "❌ Error: Could not read version from package.json"
59
- exit 1
60
- fi
71
+ # Check if this version already exists on npm
72
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
73
+ echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
61
74
 
62
- echo "📦 Version from package.json: $VERSION"
63
-
64
- # Detect tag based on version format
65
- # Has "beta" in version → tag beta
66
- # No "beta" in version → tag alpha
67
-
68
- if [[ "$VERSION" == *"beta"* ]]; then
69
- NPM_TAG="beta"
70
- echo "🏷️ Detected: Version contains 'beta' → tag: beta"
71
- else
72
- NPM_TAG="alpha"
73
- echo "🏷️ Detected: Version does not contain 'beta' → tag: alpha"
74
- fi
75
-
76
- # Check if version exists on npm
77
- echo "🔎 Checking if version $VERSION exists on npm..."
78
75
  NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
79
76
 
80
77
  if [ -n "$NPM_VERSION_INFO" ]; then
@@ -82,6 +79,9 @@ phase_check_version() {
82
79
  echo "❌ ERROR: Version $VERSION already exists on npm!"
83
80
  echo ""
84
81
  echo "Please update the version in package.json before publishing."
82
+ echo "You can increment the version manually, for example:"
83
+ echo " - Current: $VERSION"
84
+ echo " - Suggested: Increment patch, minor, or major version"
85
85
  echo ""
86
86
  exit 1
87
87
  fi
@@ -90,143 +90,126 @@ phase_check_version() {
90
90
  fi
91
91
 
92
92
  # ==============================================================
93
- # RELEASE MODE: Read from npm@latest and auto-increment
93
+ # RELEASE MODE: Convert to beta format and auto-increment
94
94
  # ==============================================================
95
95
  if [ "$MODE" == "release" ]; then
96
- echo "🔍 Reading latest version from npm@latest (NOT from package.json)..."
97
-
98
- # Read version from npm@latest
99
- LATEST_VERSION=$(npm view "$PACKAGE_NAME@latest" version 2>/dev/null || echo "")
100
-
101
- if [ -z "$LATEST_VERSION" ]; then
102
- echo "❌ Error: Could not read version from npm@latest"
103
- echo "Package may not exist on npm yet."
104
- exit 1
96
+ # Check if version has prerelease suffix and convert to beta format if needed
97
+ if [[ "$VERSION" == *"-"* ]]; then
98
+ # Extract base version (e.g., 0.156.1 from 0.156.1-test.5)
99
+ BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
100
+ PRERELEASE_SUFFIX=$(echo "$VERSION" | cut -d'-' -f2)
101
+
102
+ # If it's not already in beta format, convert to beta.1
103
+ if [[ "$PRERELEASE_SUFFIX" != "beta."* ]]; then
104
+ BETA_VERSION="${BASE_VERSION}-beta.1"
105
+ echo "🔄 Converting to beta format: $VERSION → $BETA_VERSION"
106
+
107
+ # Update package.json with beta version
108
+ if [[ "$OSTYPE" == "darwin"* ]]; then
109
+ # macOS
110
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
111
+ else
112
+ # Linux
113
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
114
+ fi
115
+
116
+ VERSION="$BETA_VERSION"
117
+ echo "✅ Version updated to beta format: $VERSION"
118
+ fi
105
119
  fi
106
120
 
107
- echo "📦 Current @latest version on npm: $LATEST_VERSION"
108
-
109
- # Parse and increment patch version
110
- # Extract major.minor.patch (handle versions like 0.156.2 or 0.156.2-beta.1)
111
- MAJOR=$(echo "$LATEST_VERSION" | cut -d'.' -f1)
112
- MINOR=$(echo "$LATEST_VERSION" | cut -d'.' -f2)
113
- PATCH=$(echo "$LATEST_VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
114
-
115
- # Increment patch
116
- NEW_PATCH=$((PATCH + 1))
117
- VERSION="$MAJOR.$MINOR.$NEW_PATCH"
121
+ # Check if this version already exists on npm and increment until we find one that doesn't
122
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
123
+ echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
118
124
 
119
- echo "🔼 Auto-incremented version: $LATEST_VERSION $VERSION"
120
-
121
- # Check if new version exists and continue incrementing
122
- echo "🔎 Checking if version $VERSION exists on npm..."
125
+ # Loop until we find a version that doesn't exist on npm
123
126
  while true; do
127
+ # Try to get the version info from npm
124
128
  NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
125
129
 
126
130
  if [ -n "$NPM_VERSION_INFO" ]; then
127
- echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing..."
128
- NEW_PATCH=$((NEW_PATCH + 1))
129
- VERSION="$MAJOR.$MINOR.$NEW_PATCH"
130
- echo " Version incremented: $VERSION"
131
+ echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing version..."
132
+
133
+ # Check if it's a beta version
134
+ if [[ "$VERSION" == *"-beta."* ]]; then
135
+ # Extract base version and beta number (e.g., 0.156.1-beta.5)
136
+ BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
137
+ BETA_NUMBER=$(echo "$VERSION" | cut -d'.' -f4)
138
+
139
+ # Increment beta number
140
+ NEW_BETA_NUMBER=$((BETA_NUMBER + 1))
141
+ NEW_VERSION="${BASE_VERSION}-beta.${NEW_BETA_NUMBER}"
142
+
143
+ echo " Version incremented: $VERSION → $NEW_VERSION"
144
+ else
145
+ # Regular version without beta suffix
146
+ # Extract major.minor.patch
147
+ MAJOR=$(echo "$VERSION" | cut -d'.' -f1)
148
+ MINOR=$(echo "$VERSION" | cut -d'.' -f2)
149
+ PATCH=$(echo "$VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
150
+
151
+ # Increment patch version
152
+ NEW_PATCH=$((PATCH + 1))
153
+ NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH"
154
+
155
+ echo " Version incremented: $VERSION → $NEW_VERSION"
156
+ fi
157
+
158
+ # Update package.json with new version
159
+ if [[ "$OSTYPE" == "darwin"* ]]; then
160
+ # macOS
161
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
162
+ else
163
+ # Linux
164
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
165
+ fi
166
+
167
+ VERSION="$NEW_VERSION"
168
+ echo "🔄 Checking version $VERSION on npm..."
131
169
  else
132
170
  echo "✅ Version $VERSION does not exist on npm. Using this version."
133
171
  break
134
172
  fi
135
173
  done
136
-
137
- # Update package.json with new version
138
- CURRENT_VERSION=$(node -p "require('./package.json').version")
139
- if [[ "$OSTYPE" == "darwin"* ]]; then
140
- sed -i '' "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$VERSION\"/" package.json
141
- else
142
- sed -i "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$VERSION\"/" package.json
143
- fi
144
- echo "📝 Updated package.json: $CURRENT_VERSION → $VERSION"
145
-
146
- # Set NPM tag to latest
147
- NPM_TAG="latest"
148
174
  fi
149
175
 
150
176
  # Update gradle.properties with the same version
151
177
  echo "📝 Updating gradle.properties..."
178
+ # Get current gradle version
152
179
  CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
153
180
 
181
+ # Update version in gradle.properties using sed
154
182
  if [[ "$OSTYPE" == "darwin"* ]]; then
183
+ # macOS
155
184
  sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
156
185
  else
186
+ # Linux
157
187
  sed -i "s/^version=.*/version=$VERSION/" gradle.properties
158
188
  fi
159
189
 
160
190
  echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
161
191
 
162
192
  export VERSION="$VERSION"
163
- export NPM_TAG="$NPM_TAG"
164
193
 
165
194
  echo "✅ Using version: $VERSION"
166
- echo "✅ NPM tag: $NPM_TAG"
167
195
  echo "✅ PHASE 1 COMPLETED"
168
196
  echo ""
169
197
  }
170
198
 
171
199
  # ============================================================================
172
- # PHASE 2: PUBLISH TO MAVEN
173
- # ============================================================================
174
- phase_publish_maven() {
175
- echo ""
176
- echo "==============================================="
177
- echo "🔧 PHASE 2: PUBLISH TO MAVEN ($MODE)"
178
- echo "==============================================="
179
-
180
- # Get version from package.json
181
- VERSION=$(node -p "require('./package.json').version")
182
- export VERSION="$VERSION"
183
-
184
- echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
185
-
186
- ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
187
-
188
- echo "✅ Maven publishing completed successfully!"
189
- echo "✅ PHASE 2 COMPLETED"
190
- echo ""
191
- }
192
-
193
- # ============================================================================
194
- # PHASE 3: PUBLISH TO NPM
200
+ # PHASE 2: PUBLISH TO NPM
195
201
  # ============================================================================
196
202
  phase_publish_npm() {
197
203
  echo ""
198
204
  echo "==============================================="
199
- echo "📦 PHASE 3: PUBLISH TO NPM ($MODE)"
205
+ echo "📦 PHASE 2: PUBLISH TO NPM ($MODE - tag: $NPM_TAG)"
200
206
  echo "==============================================="
201
207
 
202
208
  # Get version from package.json
203
209
  VERSION=$(node -p "require('./package.json').version")
204
210
  export VERSION="$VERSION"
205
211
 
206
- echo "📦 Version from package.json: $VERSION"
207
-
208
- # Determine NPM tag (should already be set from phase 1, but fallback just in case)
209
- if [ -z "$NPM_TAG" ]; then
210
- echo "⚠️ NPM_TAG not set, re-detecting..."
211
- if [ "$MODE" == "beta" ]; then
212
- # Re-detect based on version format
213
- if [[ "$VERSION" == *"beta"* ]]; then
214
- NPM_TAG="beta"
215
- echo "🏷️ Detected: Version contains 'beta' → tag: beta"
216
- else
217
- NPM_TAG="alpha"
218
- echo "🏷️ Detected: Version does not contain 'beta' → tag: alpha"
219
- fi
220
- else
221
- NPM_TAG="latest"
222
- echo "🏷️ Release mode → tag: latest"
223
- fi
224
- else
225
- echo "✅ NPM_TAG already set: $NPM_TAG"
226
- fi
227
-
228
212
  echo "📦 Publishing version: $VERSION"
229
- echo "🏷️ NPM tag: $NPM_TAG"
230
213
 
231
214
  ./gradlew clean
232
215
 
@@ -240,14 +223,13 @@ phase_publish_npm() {
240
223
  DEBUG_VERSION="${VERSION}-debug"
241
224
  echo "📦 Debug version: $DEBUG_VERSION"
242
225
 
243
- # Get current version from package.json (in case it's different from $VERSION)
244
- CURRENT_PKG_VERSION=$(node -p "require('./package.json').version")
245
-
246
226
  # Update package.json version to debug version
247
227
  if [[ "$OSTYPE" == "darwin"* ]]; then
248
- sed -i '' "s/\"version\": \"$CURRENT_PKG_VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
228
+ # macOS
229
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
249
230
  else
250
- sed -i "s/\"version\": \"$CURRENT_PKG_VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
231
+ # Linux
232
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
251
233
  fi
252
234
 
253
235
  # Backup compose/build.gradle.kts
@@ -257,27 +239,37 @@ phase_publish_npm() {
257
239
  # Comment out maven publish in compose/build.gradle.kts
258
240
  echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
259
241
  if [[ "$OSTYPE" == "darwin"* ]]; then
242
+ # macOS - Comment out imports
260
243
  sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
261
244
  sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
245
+ # Comment out plugin
262
246
  sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
247
+ # Comment out publishing block
263
248
  sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
249
+ # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
264
250
  sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
265
251
  else
252
+ # Linux - Comment out imports
266
253
  sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
267
254
  sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
255
+ # Comment out plugin
268
256
  sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
257
+ # Comment out publishing block
269
258
  sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
259
+ # Comment out entire mavenPublishing block
270
260
  sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
271
261
  fi
272
262
 
273
263
  # Modify android configuration for debug version
274
264
  echo "🔧 Modifying android configuration for debug version..."
275
265
  if [[ "$OSTYPE" == "darwin"* ]]; then
266
+ # macOS
276
267
  sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
277
268
  sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
278
269
  sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
279
270
  sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
280
271
  else
272
+ # Linux
281
273
  sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
282
274
  sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
283
275
  sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
@@ -287,7 +279,7 @@ phase_publish_npm() {
287
279
  # Backup .npmignore
288
280
  cp .npmignore .npmignore.backup
289
281
 
290
- # Create minimal .npmignore for debug version
282
+ # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
291
283
  cat > .npmignore << 'EOF'
292
284
  sample/
293
285
  build/
@@ -317,25 +309,16 @@ EOF
317
309
  echo "✅ compose/build.gradle.kts restored"
318
310
 
319
311
  # Restore package.json version to original
320
- # Verify current version is debug version before restoring
321
- CURRENT_VERSION_CHECK=$(node -p "require('./package.json').version")
322
- if [ "$CURRENT_VERSION_CHECK" == "$DEBUG_VERSION" ]; then
323
- if [[ "$OSTYPE" == "darwin"* ]]; then
324
- sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
325
- else
326
- sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
327
- fi
328
- echo "✅ package.json version restored: $DEBUG_VERSION → $VERSION"
312
+ if [[ "$OSTYPE" == "darwin"* ]]; then
313
+ # macOS
314
+ sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
329
315
  else
330
- echo "⚠️ Warning: package.json version is $CURRENT_VERSION_CHECK, expected $DEBUG_VERSION"
331
- echo " Restoring to $VERSION anyway..."
332
- if [[ "$OSTYPE" == "darwin"* ]]; then
333
- sed -i '' "s/\"version\": \"$CURRENT_VERSION_CHECK\"/\"version\": \"$VERSION\"/" package.json
334
- else
335
- sed -i "s/\"version\": \"$CURRENT_VERSION_CHECK\"/\"version\": \"$VERSION\"/" package.json
336
- fi
316
+ # Linux
317
+ sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
337
318
  fi
338
319
 
320
+ echo "✅ package.json version restored"
321
+
339
322
  # ============================================================
340
323
  # SECOND PUBLISH: NORMAL VERSION (without compose)
341
324
  # ============================================================
@@ -346,13 +329,35 @@ EOF
346
329
  echo "✅ Normal version published successfully!"
347
330
 
348
331
  echo ""
349
- echo "✅ PHASE 3 COMPLETED"
332
+ echo "✅ PHASE 2 COMPLETED"
350
333
  echo " 🐛 Debug version: $DEBUG_VERSION (with compose) - Published first"
351
334
  echo " 📦 Normal version: $VERSION (without compose) - Published second"
352
335
  echo " 🏷️ NPM Tag: $NPM_TAG"
353
336
  echo ""
354
337
  }
355
338
 
339
+ # ============================================================================
340
+ # PHASE 3: PUBLISH TO MAVEN
341
+ # ============================================================================
342
+ phase_publish_maven() {
343
+ echo ""
344
+ echo "==============================================="
345
+ echo "🔧 PHASE 3: PUBLISH TO MAVEN ($MODE)"
346
+ echo "==============================================="
347
+
348
+ # Get version from package.json
349
+ VERSION=$(node -p "require('./package.json').version")
350
+ export VERSION="$VERSION"
351
+
352
+ echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
353
+
354
+ ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
355
+
356
+ echo "✅ Maven publishing completed successfully!"
357
+ echo "✅ PHASE 3 COMPLETED"
358
+ echo ""
359
+ }
360
+
356
361
  # ============================================================================
357
362
  # MAIN EXECUTION
358
363
  # ============================================================================
@@ -366,19 +371,19 @@ case "$PHASE" in
366
371
  echo "Running PHASE 1 only: Check and update version"
367
372
  phase_check_version
368
373
  ;;
369
- "maven")
370
- echo "Running PHASE 2 only: Publish to Maven"
371
- phase_publish_maven
372
- ;;
373
374
  "npm")
374
- echo "Running PHASE 3 only: Publish to NPM"
375
+ echo "Running PHASE 2 only: Publish to NPM"
375
376
  phase_publish_npm
376
377
  ;;
378
+ "maven")
379
+ echo "Running PHASE 3 only: Publish to Maven"
380
+ phase_publish_maven
381
+ ;;
377
382
  "all")
378
383
  echo "Running ALL PHASES"
379
384
  phase_check_version
380
- phase_publish_maven
381
385
  phase_publish_npm
386
+ phase_publish_maven
382
387
  echo ""
383
388
  echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
384
389
  echo "================================================="
@@ -389,8 +394,8 @@ case "$PHASE" in
389
394
  echo "Usage:"
390
395
  echo " sh publish.sh $MODE # Run all phases"
391
396
  echo " sh publish.sh $MODE check # Phase 1: Check and update version"
392
- echo " sh publish.sh $MODE maven # Phase 2: Publish to Maven"
393
- echo " sh publish.sh $MODE npm # Phase 3: Publish to NPM"
397
+ echo " sh publish.sh $MODE npm # Phase 2: Publish to NPM"
398
+ echo " sh publish.sh $MODE maven # Phase 3: Publish to Maven"
394
399
  exit 1
395
400
  ;;
396
401
  esac
@@ -0,0 +1,52 @@
1
+ import org.gradle.kotlin.dsl.maven
2
+
3
+ rootProject.name = "momo-native-kits"
4
+ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
5
+
6
+ pluginManagement {
7
+ repositories {
8
+ google {
9
+ mavenContent {
10
+ includeGroupAndSubgroups("androidx")
11
+ includeGroupAndSubgroups("com.android")
12
+ includeGroupAndSubgroups("com.google")
13
+ }
14
+ }
15
+ mavenCentral()
16
+ gradlePluginPortal()
17
+ maven {
18
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
19
+ credentials {username = "download_packages"; password = "gldt-bjDqLpU_sPcHDuXau2ws" }
20
+ }
21
+ maven {
22
+ url = uri("http://nexus.mservice.com.vn:8081/repository/maven-public/")
23
+ isAllowInsecureProtocol = true
24
+ }
25
+ }
26
+ }
27
+
28
+ dependencyResolutionManagement {
29
+ repositories {
30
+ google {
31
+ mavenContent {
32
+ includeGroupAndSubgroups("androidx")
33
+ includeGroupAndSubgroups("com.android")
34
+ includeGroupAndSubgroups("com.google")
35
+ }
36
+ }
37
+ mavenCentral()
38
+ maven {
39
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
40
+ credentials {username = "download_packages"; password = "gldt-bjDqLpU_sPcHDuXau2ws" }
41
+ }
42
+ maven {
43
+ url = uri("http://nexus.mservice.com.vn:8081/repository/maven-public/")
44
+ isAllowInsecureProtocol = true
45
+ }
46
+ }
47
+ }
48
+
49
+ include(":compose")
50
+
51
+ include(":sample:androidApp")
52
+ include(":sample:shared")