@momo-kits/native-kits 0.156.1-sp.3 → 0.156.1-sp.4-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 (131) hide show
  1. package/PUBLISH_GUIDE.md +386 -255
  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 +98 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +163 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -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/platform/Platform.kt +42 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
  107. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +152 -0
  108. package/gradle/libs.versions.toml +57 -0
  109. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  110. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  111. package/gradle.properties +26 -0
  112. package/gradlew +252 -0
  113. package/gradlew.bat +94 -0
  114. package/ios/Button/Button.swift +7 -6
  115. package/ios/Image/Image.swift +1 -1
  116. package/ios/Input/Input.swift +9 -7
  117. package/ios/Input/InputTextArea.swift +6 -5
  118. package/package.json +1 -1
  119. package/publish.sh +151 -156
  120. package/settings.gradle.kts +52 -0
  121. package/example/ios/Example.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  122. package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  123. package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
  124. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  125. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  126. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
  127. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
  128. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
  129. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +0 -58
  130. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios.xcscheme +0 -58
  131. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
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 npm # Phase 2 only: Publish to NPM (beta)
13
- # sh publish.sh beta maven # Phase 3 only: Publish to Maven (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)
14
14
  # sh publish.sh release check # Phase 1 only: Check version (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)
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)
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 | npm | maven | all (default: all)"
30
+ echo "Phases: check | maven | npm | all (default: all)"
31
31
  exit 1
32
32
  fi
33
33
 
@@ -36,13 +36,6 @@ 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
-
46
39
  # ============================================================================
47
40
  # PHASE 1: CHECK AND UPDATE VERSION
48
41
  # ============================================================================
@@ -52,26 +45,36 @@ phase_check_version() {
52
45
  echo "📋 PHASE 1: CHECK AND UPDATE VERSION ($MODE)"
53
46
  echo "==============================================="
54
47
 
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"
48
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
66
49
 
67
50
  # ==============================================================
68
- # BETA MODE: Fail if version exists
51
+ # BETA MODE: Check format for tag, fail if exists
69
52
  # ==============================================================
70
53
  if [ "$MODE" == "beta" ]; then
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..."
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
74
61
 
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..."
75
78
  NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
76
79
 
77
80
  if [ -n "$NPM_VERSION_INFO" ]; then
@@ -79,9 +82,6 @@ phase_check_version() {
79
82
  echo "❌ ERROR: Version $VERSION already exists on npm!"
80
83
  echo ""
81
84
  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,126 +90,143 @@ phase_check_version() {
90
90
  fi
91
91
 
92
92
  # ==============================================================
93
- # RELEASE MODE: Convert to beta format and auto-increment
93
+ # RELEASE MODE: Read from npm@latest and auto-increment
94
94
  # ==============================================================
95
95
  if [ "$MODE" == "release" ]; then
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
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
119
105
  fi
120
106
 
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..."
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"
124
118
 
125
- # Loop until we find a version that doesn't exist on npm
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..."
126
123
  while true; do
127
- # Try to get the version info from npm
128
124
  NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
129
125
 
130
126
  if [ -n "$NPM_VERSION_INFO" ]; then
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..."
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"
169
131
  else
170
132
  echo "✅ Version $VERSION does not exist on npm. Using this version."
171
133
  break
172
134
  fi
173
135
  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"
174
148
  fi
175
149
 
176
150
  # Update gradle.properties with the same version
177
151
  echo "📝 Updating gradle.properties..."
178
- # Get current gradle version
179
152
  CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
180
153
 
181
- # Update version in gradle.properties using sed
182
154
  if [[ "$OSTYPE" == "darwin"* ]]; then
183
- # macOS
184
155
  sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
185
156
  else
186
- # Linux
187
157
  sed -i "s/^version=.*/version=$VERSION/" gradle.properties
188
158
  fi
189
159
 
190
160
  echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
191
161
 
192
162
  export VERSION="$VERSION"
163
+ export NPM_TAG="$NPM_TAG"
193
164
 
194
165
  echo "✅ Using version: $VERSION"
166
+ echo "✅ NPM tag: $NPM_TAG"
195
167
  echo "✅ PHASE 1 COMPLETED"
196
168
  echo ""
197
169
  }
198
170
 
199
171
  # ============================================================================
200
- # PHASE 2: PUBLISH TO NPM
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
201
195
  # ============================================================================
202
196
  phase_publish_npm() {
203
197
  echo ""
204
198
  echo "==============================================="
205
- echo "📦 PHASE 2: PUBLISH TO NPM ($MODE - tag: $NPM_TAG)"
199
+ echo "📦 PHASE 3: PUBLISH TO NPM ($MODE)"
206
200
  echo "==============================================="
207
201
 
208
202
  # Get version from package.json
209
203
  VERSION=$(node -p "require('./package.json').version")
210
204
  export VERSION="$VERSION"
211
205
 
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
+
212
228
  echo "📦 Publishing version: $VERSION"
229
+ echo "🏷️ NPM tag: $NPM_TAG"
213
230
 
214
231
  ./gradlew clean
215
232
 
@@ -223,13 +240,14 @@ phase_publish_npm() {
223
240
  DEBUG_VERSION="${VERSION}-debug"
224
241
  echo "📦 Debug version: $DEBUG_VERSION"
225
242
 
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
+
226
246
  # Update package.json version to debug version
227
247
  if [[ "$OSTYPE" == "darwin"* ]]; then
228
- # macOS
229
- sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
248
+ sed -i '' "s/\"version\": \"$CURRENT_PKG_VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
230
249
  else
231
- # Linux
232
- sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
250
+ sed -i "s/\"version\": \"$CURRENT_PKG_VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
233
251
  fi
234
252
 
235
253
  # Backup compose/build.gradle.kts
@@ -239,37 +257,27 @@ phase_publish_npm() {
239
257
  # Comment out maven publish in compose/build.gradle.kts
240
258
  echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
241
259
  if [[ "$OSTYPE" == "darwin"* ]]; then
242
- # macOS - Comment out imports
243
260
  sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
244
261
  sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
245
- # Comment out plugin
246
262
  sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
247
- # Comment out publishing block
248
263
  sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
249
- # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
250
264
  sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
251
265
  else
252
- # Linux - Comment out imports
253
266
  sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
254
267
  sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
255
- # Comment out plugin
256
268
  sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
257
- # Comment out publishing block
258
269
  sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
259
- # Comment out entire mavenPublishing block
260
270
  sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
261
271
  fi
262
272
 
263
273
  # Modify android configuration for debug version
264
274
  echo "🔧 Modifying android configuration for debug version..."
265
275
  if [[ "$OSTYPE" == "darwin"* ]]; then
266
- # macOS
267
276
  sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
268
277
  sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
269
278
  sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
270
279
  sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
271
280
  else
272
- # Linux
273
281
  sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
274
282
  sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
275
283
  sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
@@ -279,7 +287,7 @@ phase_publish_npm() {
279
287
  # Backup .npmignore
280
288
  cp .npmignore .npmignore.backup
281
289
 
282
- # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
290
+ # Create minimal .npmignore for debug version
283
291
  cat > .npmignore << 'EOF'
284
292
  sample/
285
293
  build/
@@ -309,16 +317,25 @@ EOF
309
317
  echo "✅ compose/build.gradle.kts restored"
310
318
 
311
319
  # Restore package.json version to original
312
- if [[ "$OSTYPE" == "darwin"* ]]; then
313
- # macOS
314
- sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
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"
315
329
  else
316
- # Linux
317
- sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
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
318
337
  fi
319
338
 
320
- echo "✅ package.json version restored"
321
-
322
339
  # ============================================================
323
340
  # SECOND PUBLISH: NORMAL VERSION (without compose)
324
341
  # ============================================================
@@ -329,35 +346,13 @@ EOF
329
346
  echo "✅ Normal version published successfully!"
330
347
 
331
348
  echo ""
332
- echo "✅ PHASE 2 COMPLETED"
349
+ echo "✅ PHASE 3 COMPLETED"
333
350
  echo " 🐛 Debug version: $DEBUG_VERSION (with compose) - Published first"
334
351
  echo " 📦 Normal version: $VERSION (without compose) - Published second"
335
352
  echo " 🏷️ NPM Tag: $NPM_TAG"
336
353
  echo ""
337
354
  }
338
355
 
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
-
361
356
  # ============================================================================
362
357
  # MAIN EXECUTION
363
358
  # ============================================================================
@@ -371,19 +366,19 @@ case "$PHASE" in
371
366
  echo "Running PHASE 1 only: Check and update version"
372
367
  phase_check_version
373
368
  ;;
374
- "npm")
375
- echo "Running PHASE 2 only: Publish to NPM"
376
- phase_publish_npm
377
- ;;
378
369
  "maven")
379
- echo "Running PHASE 3 only: Publish to Maven"
370
+ echo "Running PHASE 2 only: Publish to Maven"
380
371
  phase_publish_maven
381
372
  ;;
373
+ "npm")
374
+ echo "Running PHASE 3 only: Publish to NPM"
375
+ phase_publish_npm
376
+ ;;
382
377
  "all")
383
378
  echo "Running ALL PHASES"
384
379
  phase_check_version
385
- phase_publish_npm
386
380
  phase_publish_maven
381
+ phase_publish_npm
387
382
  echo ""
388
383
  echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
389
384
  echo "================================================="
@@ -394,8 +389,8 @@ case "$PHASE" in
394
389
  echo "Usage:"
395
390
  echo " sh publish.sh $MODE # Run all phases"
396
391
  echo " sh publish.sh $MODE check # Phase 1: Check and update version"
397
- echo " sh publish.sh $MODE npm # Phase 2: Publish to NPM"
398
- echo " sh publish.sh $MODE maven # Phase 3: Publish to Maven"
392
+ echo " sh publish.sh $MODE maven # Phase 2: Publish to Maven"
393
+ echo " sh publish.sh $MODE npm # Phase 3: Publish to NPM"
399
394
  exit 1
400
395
  ;;
401
396
  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")
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>SchemeUserState</key>
6
- <dict>
7
- <key>Example.xcscheme_^#shared#^_</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>7</integer>
11
- </dict>
12
- </dict>
13
- </dict>
14
- </plist>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Bucket
3
- uuid = "DBF0EFAF-411F-4CB3-946D-C4AB48EBD7AE"
4
- type = "0"
5
- version = "2.0">
6
- </Bucket>
@@ -1,58 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Scheme
3
- LastUpgradeVersion = "1600"
4
- version = "1.3">
5
- <BuildAction
6
- parallelizeBuildables = "YES"
7
- buildImplicitDependencies = "YES">
8
- <BuildActionEntries>
9
- <BuildActionEntry
10
- buildForTesting = "YES"
11
- buildForRunning = "YES"
12
- buildForProfiling = "YES"
13
- buildForArchiving = "YES"
14
- buildForAnalyzing = "YES">
15
- <BuildableReference
16
- BuildableIdentifier = "primary"
17
- BlueprintIdentifier = "3B6FB503A75BF5BC1FA6F30BC06B9D28"
18
- BuildableName = "MoMoUIKits.framework"
19
- BlueprintName = "MoMoUIKits"
20
- ReferencedContainer = "container:Pods.xcodeproj">
21
- </BuildableReference>
22
- </BuildActionEntry>
23
- </BuildActionEntries>
24
- </BuildAction>
25
- <TestAction
26
- buildConfiguration = "Debug"
27
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
- shouldUseLaunchSchemeArgsEnv = "YES">
30
- <Testables>
31
- </Testables>
32
- </TestAction>
33
- <LaunchAction
34
- buildConfiguration = "Debug"
35
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37
- launchStyle = "0"
38
- useCustomWorkingDirectory = "NO"
39
- ignoresPersistentStateOnLaunch = "NO"
40
- debugDocumentVersioning = "YES"
41
- debugServiceExtension = "internal"
42
- allowLocationSimulation = "YES">
43
- </LaunchAction>
44
- <ProfileAction
45
- buildConfiguration = "Release"
46
- shouldUseLaunchSchemeArgsEnv = "YES"
47
- savedToolIdentifier = ""
48
- useCustomWorkingDirectory = "NO"
49
- debugDocumentVersioning = "YES">
50
- </ProfileAction>
51
- <AnalyzeAction
52
- buildConfiguration = "Debug">
53
- </AnalyzeAction>
54
- <ArchiveAction
55
- buildConfiguration = "Release"
56
- revealArchiveInOrganizer = "YES">
57
- </ArchiveAction>
58
- </Scheme>