@momo-kits/native-kits 0.156.1-test.5 → 0.156.1-test.6-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 (118) hide show
  1. package/PUBLISH_GUIDE.md +675 -0
  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/local.properties +8 -0
  115. package/package.json +1 -1
  116. package/publish.sh +431 -0
  117. package/settings.gradle.kts +52 -0
  118. package/publish_beta.sh +0 -153
package/gradlew.bat ADDED
@@ -0,0 +1,94 @@
1
+ @rem
2
+ @rem Copyright 2015 the original author or authors.
3
+ @rem
4
+ @rem Licensed under the Apache License, Version 2.0 (the "License");
5
+ @rem you may not use this file except in compliance with the License.
6
+ @rem You may obtain a copy of the License at
7
+ @rem
8
+ @rem https://www.apache.org/licenses/LICENSE-2.0
9
+ @rem
10
+ @rem Unless required by applicable law or agreed to in writing, software
11
+ @rem distributed under the License is distributed on an "AS IS" BASIS,
12
+ @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ @rem See the License for the specific language governing permissions and
14
+ @rem limitations under the License.
15
+ @rem
16
+ @rem SPDX-License-Identifier: Apache-2.0
17
+ @rem
18
+
19
+ @if "%DEBUG%"=="" @echo off
20
+ @rem ##########################################################################
21
+ @rem
22
+ @rem Gradle startup script for Windows
23
+ @rem
24
+ @rem ##########################################################################
25
+
26
+ @rem Set local scope for the variables with windows NT shell
27
+ if "%OS%"=="Windows_NT" setlocal
28
+
29
+ set DIRNAME=%~dp0
30
+ if "%DIRNAME%"=="" set DIRNAME=.
31
+ @rem This is normally unused
32
+ set APP_BASE_NAME=%~n0
33
+ set APP_HOME=%DIRNAME%
34
+
35
+ @rem Resolve any "." and ".." in APP_HOME to make it shorter.
36
+ for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
37
+
38
+ @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
39
+ set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
40
+
41
+ @rem Find java.exe
42
+ if defined JAVA_HOME goto findJavaFromJavaHome
43
+
44
+ set JAVA_EXE=java.exe
45
+ %JAVA_EXE% -version >NUL 2>&1
46
+ if %ERRORLEVEL% equ 0 goto execute
47
+
48
+ echo. 1>&2
49
+ echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
50
+ echo. 1>&2
51
+ echo Please set the JAVA_HOME variable in your environment to match the 1>&2
52
+ echo location of your Java installation. 1>&2
53
+
54
+ goto fail
55
+
56
+ :findJavaFromJavaHome
57
+ set JAVA_HOME=%JAVA_HOME:"=%
58
+ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
59
+
60
+ if exist "%JAVA_EXE%" goto execute
61
+
62
+ echo. 1>&2
63
+ echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
64
+ echo. 1>&2
65
+ echo Please set the JAVA_HOME variable in your environment to match the 1>&2
66
+ echo location of your Java installation. 1>&2
67
+
68
+ goto fail
69
+
70
+ :execute
71
+ @rem Setup the command line
72
+
73
+ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
74
+
75
+
76
+ @rem Execute Gradle
77
+ "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
78
+
79
+ :end
80
+ @rem End local scope for the variables with windows NT shell
81
+ if %ERRORLEVEL% equ 0 goto mainEnd
82
+
83
+ :fail
84
+ rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
85
+ rem the _cmd.exe /c_ return code!
86
+ set EXIT_CODE=%ERRORLEVEL%
87
+ if %EXIT_CODE% equ 0 set EXIT_CODE=1
88
+ if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
89
+ exit /b %EXIT_CODE%
90
+
91
+ :mainEnd
92
+ if "%OS%"=="Windows_NT" endlocal
93
+
94
+ :omega
@@ -0,0 +1,8 @@
1
+ ## This file must *NOT* be checked into Version Control Systems,
2
+ # as it contains information specific to your local configuration.
3
+ #
4
+ # Location of the SDK. This is only used by Gradle.
5
+ # For customization when using a Version Control System, please read the
6
+ # header note.
7
+ #Mon Dec 22 10:07:29 ICT 2025
8
+ sdk.dir=/Users/phuc/Library/Android/sdk
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momo-kits/native-kits",
3
- "version": "0.156.1-test.5",
3
+ "version": "0.156.1-test.6-debug",
4
4
  "private": false,
5
5
  "dependencies": {},
6
6
  "devDependencies": {},
package/publish.sh ADDED
@@ -0,0 +1,431 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e # Exit on error
4
+
5
+ # ============================================================================
6
+ # UNIVERSAL PUBLISH SCRIPT
7
+ # ============================================================================
8
+ # Usage:
9
+ # sh publish.sh beta # Run all phases for beta
10
+ # sh publish.sh release # Run all phases for release
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)
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)
17
+ # ============================================================================
18
+
19
+ MODE="${1:-}"
20
+ PHASE="${2:-all}"
21
+
22
+ # Validate MODE
23
+ if [ -z "$MODE" ]; then
24
+ echo "❌ Error: MODE is required"
25
+ echo ""
26
+ echo "Usage:"
27
+ echo " sh publish.sh beta [phase] # Beta publishing"
28
+ echo " sh publish.sh release [phase] # Release publishing"
29
+ echo ""
30
+ echo "Phases: check | maven | npm | all (default: all)"
31
+ exit 1
32
+ fi
33
+
34
+ if [ "$MODE" != "beta" ] && [ "$MODE" != "release" ]; then
35
+ echo "❌ Error: Invalid MODE '$MODE'. Must be 'beta' or 'release'"
36
+ exit 1
37
+ fi
38
+
39
+ # ============================================================================
40
+ # PHASE 1: CHECK AND UPDATE VERSION
41
+ # ============================================================================
42
+ phase_check_version() {
43
+ echo ""
44
+ echo "==============================================="
45
+ echo "📋 PHASE 1: CHECK AND UPDATE VERSION ($MODE)"
46
+ echo "==============================================="
47
+
48
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
49
+
50
+ # ==============================================================
51
+ # BETA MODE: Detect specific vs normal, format accordingly
52
+ # ==============================================================
53
+ 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
61
+
62
+ echo "📦 Version from package.json: $VERSION"
63
+
64
+ # Detect version type: specific vs normal
65
+ # Specific: has suffix but NOT "beta" (e.g., 0.156.2-test.1, 0.156.2-alpha.1)
66
+ # Normal: has "beta" suffix OR no suffix (e.g., 0.156.2-beta.1, 0.156.2)
67
+
68
+ if [[ "$VERSION" == *"-"* ]] && [[ "$VERSION" != *"-beta."* ]]; then
69
+ # Has suffix but not beta → specific
70
+ VERSION_TYPE="specific"
71
+ NPM_TAG="alpha"
72
+ echo "🏷️ Detected: SPECIFIC version (tag: alpha)"
73
+ else
74
+ # Has beta suffix or no suffix → normal
75
+ VERSION_TYPE="normal"
76
+ NPM_TAG="beta"
77
+ echo "🏷️ Detected: NORMAL version (tag: beta)"
78
+ fi
79
+
80
+ # Format version based on type
81
+ if [ "$VERSION_TYPE" == "specific" ]; then
82
+ # Specific: Check existence, FAIL if exists
83
+ echo "🔎 Checking if specific version $VERSION exists on npm..."
84
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
85
+
86
+ if [ -n "$NPM_VERSION_INFO" ]; then
87
+ echo ""
88
+ echo "❌ ERROR: Specific version $VERSION already exists on npm!"
89
+ echo ""
90
+ echo "Please update the version in package.json before publishing."
91
+ echo ""
92
+ exit 1
93
+ fi
94
+
95
+ echo "✅ Specific version $VERSION does not exist on npm. Safe to publish."
96
+ else
97
+ # Normal: Auto-format and increment
98
+ # If no beta suffix, add -beta.1
99
+ if [[ "$VERSION" != *"-beta."* ]]; then
100
+ echo "🔄 Adding beta suffix: $VERSION → ${VERSION}-beta.1"
101
+ VERSION="${VERSION}-beta.1"
102
+
103
+ # Update package.json with beta version
104
+ ORIGINAL_VERSION=$(node -p "require('./package.json').version")
105
+ if [[ "$OSTYPE" == "darwin"* ]]; then
106
+ sed -i '' "s/\"version\": \"$ORIGINAL_VERSION\"/\"version\": \"$VERSION\"/" package.json
107
+ else
108
+ sed -i "s/\"version\": \"$ORIGINAL_VERSION\"/\"version\": \"$VERSION\"/" package.json
109
+ fi
110
+ fi
111
+
112
+ # Check if version exists and auto-increment
113
+ echo "🔎 Checking version $VERSION on npm..."
114
+ while true; do
115
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
116
+
117
+ if [ -n "$NPM_VERSION_INFO" ]; then
118
+ echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing..."
119
+
120
+ # Extract base version and beta number (e.g., 0.156.1-beta.5)
121
+ BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
122
+ BETA_NUMBER=$(echo "$VERSION" | grep -oE 'beta\.([0-9]+)' | cut -d'.' -f2)
123
+
124
+ # Increment beta number
125
+ NEW_BETA_NUMBER=$((BETA_NUMBER + 1))
126
+ NEW_VERSION="${BASE_VERSION}-beta.${NEW_BETA_NUMBER}"
127
+
128
+ echo " Version incremented: $VERSION → $NEW_VERSION"
129
+ VERSION="$NEW_VERSION"
130
+ else
131
+ echo "✅ Version $VERSION does not exist on npm. Using this version."
132
+ break
133
+ fi
134
+ done
135
+
136
+ # Update package.json with final version
137
+ CURRENT_VERSION=$(node -p "require('./package.json').version")
138
+ if [ "$CURRENT_VERSION" != "$VERSION" ]; then
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
+ fi
146
+ fi
147
+ fi
148
+
149
+ # ==============================================================
150
+ # RELEASE MODE: Read from npm@latest and auto-increment
151
+ # ==============================================================
152
+ if [ "$MODE" == "release" ]; then
153
+ echo "🔍 Reading latest version from npm@latest (NOT from package.json)..."
154
+
155
+ # Read version from npm@latest
156
+ LATEST_VERSION=$(npm view "$PACKAGE_NAME@latest" version 2>/dev/null || echo "")
157
+
158
+ if [ -z "$LATEST_VERSION" ]; then
159
+ echo "❌ Error: Could not read version from npm@latest"
160
+ echo "Package may not exist on npm yet."
161
+ exit 1
162
+ fi
163
+
164
+ echo "📦 Current @latest version on npm: $LATEST_VERSION"
165
+
166
+ # Parse and increment patch version
167
+ # Extract major.minor.patch (handle versions like 0.156.2 or 0.156.2-beta.1)
168
+ MAJOR=$(echo "$LATEST_VERSION" | cut -d'.' -f1)
169
+ MINOR=$(echo "$LATEST_VERSION" | cut -d'.' -f2)
170
+ PATCH=$(echo "$LATEST_VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
171
+
172
+ # Increment patch
173
+ NEW_PATCH=$((PATCH + 1))
174
+ VERSION="$MAJOR.$MINOR.$NEW_PATCH"
175
+
176
+ echo "🔼 Auto-incremented version: $LATEST_VERSION → $VERSION"
177
+
178
+ # Check if new version exists and continue incrementing
179
+ echo "🔎 Checking if version $VERSION exists on npm..."
180
+ while true; do
181
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
182
+
183
+ if [ -n "$NPM_VERSION_INFO" ]; then
184
+ echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing..."
185
+ NEW_PATCH=$((NEW_PATCH + 1))
186
+ VERSION="$MAJOR.$MINOR.$NEW_PATCH"
187
+ echo " Version incremented: → $VERSION"
188
+ else
189
+ echo "✅ Version $VERSION does not exist on npm. Using this version."
190
+ break
191
+ fi
192
+ done
193
+
194
+ # Update package.json with new version
195
+ CURRENT_VERSION=$(node -p "require('./package.json').version")
196
+ if [[ "$OSTYPE" == "darwin"* ]]; then
197
+ sed -i '' "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$VERSION\"/" package.json
198
+ else
199
+ sed -i "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$VERSION\"/" package.json
200
+ fi
201
+ echo "📝 Updated package.json: $CURRENT_VERSION → $VERSION"
202
+
203
+ # Set NPM tag to latest
204
+ NPM_TAG="latest"
205
+ fi
206
+
207
+ # Update gradle.properties with the same version
208
+ echo "📝 Updating gradle.properties..."
209
+ CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
210
+
211
+ if [[ "$OSTYPE" == "darwin"* ]]; then
212
+ sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
213
+ else
214
+ sed -i "s/^version=.*/version=$VERSION/" gradle.properties
215
+ fi
216
+
217
+ echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
218
+
219
+ export VERSION="$VERSION"
220
+ export NPM_TAG="$NPM_TAG"
221
+
222
+ echo "✅ Using version: $VERSION"
223
+ echo "✅ NPM tag: $NPM_TAG"
224
+ echo "✅ PHASE 1 COMPLETED"
225
+ echo ""
226
+ }
227
+
228
+ # ============================================================================
229
+ # PHASE 2: PUBLISH TO MAVEN
230
+ # ============================================================================
231
+ phase_publish_maven() {
232
+ echo ""
233
+ echo "==============================================="
234
+ echo "🔧 PHASE 2: PUBLISH TO MAVEN ($MODE)"
235
+ echo "==============================================="
236
+
237
+ # Get version from package.json
238
+ VERSION=$(node -p "require('./package.json').version")
239
+ export VERSION="$VERSION"
240
+
241
+ echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
242
+
243
+ ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
244
+
245
+ echo "✅ Maven publishing completed successfully!"
246
+ echo "✅ PHASE 2 COMPLETED"
247
+ echo ""
248
+ }
249
+
250
+ # ============================================================================
251
+ # PHASE 3: PUBLISH TO NPM
252
+ # ============================================================================
253
+ phase_publish_npm() {
254
+ echo ""
255
+ echo "==============================================="
256
+ echo "📦 PHASE 3: PUBLISH TO NPM ($MODE)"
257
+ echo "==============================================="
258
+
259
+ # Get version from package.json
260
+ VERSION=$(node -p "require('./package.json').version")
261
+ export VERSION="$VERSION"
262
+
263
+ # Determine NPM tag (should already be set from phase 1, but fallback just in case)
264
+ if [ -z "$NPM_TAG" ]; then
265
+ if [ "$MODE" == "beta" ]; then
266
+ # Re-detect version type
267
+ if [[ "$VERSION" == *"-"* ]] && [[ "$VERSION" != *"-beta."* ]]; then
268
+ NPM_TAG="alpha"
269
+ else
270
+ NPM_TAG="beta"
271
+ fi
272
+ else
273
+ NPM_TAG="latest"
274
+ fi
275
+ fi
276
+
277
+ echo "📦 Publishing version: $VERSION"
278
+ echo "🏷️ NPM tag: $NPM_TAG"
279
+
280
+ ./gradlew clean
281
+
282
+ # ============================================================
283
+ # FIRST PUBLISH: DEBUG VERSION (with compose kits included)
284
+ # ============================================================
285
+ echo ""
286
+ echo "🔧 Preparing debug version with compose kits..."
287
+
288
+ # Create debug version
289
+ DEBUG_VERSION="${VERSION}-debug"
290
+ echo "📦 Debug version: $DEBUG_VERSION"
291
+
292
+ # Update package.json version to debug version
293
+ if [[ "$OSTYPE" == "darwin"* ]]; then
294
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
295
+ else
296
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
297
+ fi
298
+
299
+ # Backup compose/build.gradle.kts
300
+ echo "📦 Backing up compose/build.gradle.kts..."
301
+ cp compose/build.gradle.kts compose/build.gradle.kts.backup
302
+
303
+ # Comment out maven publish in compose/build.gradle.kts
304
+ echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
305
+ if [[ "$OSTYPE" == "darwin"* ]]; then
306
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
307
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
308
+ sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
309
+ sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
310
+ sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
311
+ else
312
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
313
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
314
+ sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
315
+ sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
316
+ sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
317
+ fi
318
+
319
+ # Modify android configuration for debug version
320
+ echo "🔧 Modifying android configuration for debug version..."
321
+ if [[ "$OSTYPE" == "darwin"* ]]; then
322
+ sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
323
+ sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
324
+ sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
325
+ sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
326
+ else
327
+ sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
328
+ sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
329
+ sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
330
+ sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
331
+ fi
332
+
333
+ # Backup .npmignore
334
+ cp .npmignore .npmignore.backup
335
+
336
+ # Create minimal .npmignore for debug version
337
+ cat > .npmignore << 'EOF'
338
+ sample/
339
+ build/
340
+
341
+ .fleet
342
+ .gradle
343
+ .idea
344
+ .kotlin
345
+ .run
346
+
347
+ .gitattributes
348
+ .gitlab-ci.yml
349
+ .npmignore.backup
350
+ EOF
351
+
352
+ echo "📤 Publishing debug version (with compose)..."
353
+ npm publish --tag $NPM_TAG --access=public
354
+
355
+ echo "✅ Debug version published successfully!"
356
+
357
+ # Restore .npmignore
358
+ mv .npmignore.backup .npmignore
359
+ echo "✅ .npmignore restored"
360
+
361
+ # Restore compose/build.gradle.kts
362
+ mv compose/build.gradle.kts.backup compose/build.gradle.kts
363
+ echo "✅ compose/build.gradle.kts restored"
364
+
365
+ # Restore package.json version to original
366
+ if [[ "$OSTYPE" == "darwin"* ]]; then
367
+ sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
368
+ else
369
+ sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
370
+ fi
371
+
372
+ echo "✅ package.json version restored"
373
+
374
+ # ============================================================
375
+ # SECOND PUBLISH: NORMAL VERSION (without compose)
376
+ # ============================================================
377
+ echo ""
378
+ echo "📤 Publishing normal version (without compose)..."
379
+ npm publish --tag $NPM_TAG --access=public
380
+
381
+ echo "✅ Normal version published successfully!"
382
+
383
+ echo ""
384
+ echo "✅ PHASE 3 COMPLETED"
385
+ echo " 🐛 Debug version: $DEBUG_VERSION (with compose) - Published first"
386
+ echo " 📦 Normal version: $VERSION (without compose) - Published second"
387
+ echo " 🏷️ NPM Tag: $NPM_TAG"
388
+ echo ""
389
+ }
390
+
391
+ # ============================================================================
392
+ # MAIN EXECUTION
393
+ # ============================================================================
394
+
395
+ echo ""
396
+ echo "🚀 PUBLISH SCRIPT - MODE: $(echo $MODE | tr '[:lower:]' '[:upper:]')"
397
+ echo "================================================="
398
+
399
+ case "$PHASE" in
400
+ "check")
401
+ echo "Running PHASE 1 only: Check and update version"
402
+ phase_check_version
403
+ ;;
404
+ "maven")
405
+ echo "Running PHASE 2 only: Publish to Maven"
406
+ phase_publish_maven
407
+ ;;
408
+ "npm")
409
+ echo "Running PHASE 3 only: Publish to NPM"
410
+ phase_publish_npm
411
+ ;;
412
+ "all")
413
+ echo "Running ALL PHASES"
414
+ phase_check_version
415
+ phase_publish_maven
416
+ phase_publish_npm
417
+ echo ""
418
+ echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
419
+ echo "================================================="
420
+ ;;
421
+ *)
422
+ echo "❌ Error: Invalid phase '$PHASE'"
423
+ echo ""
424
+ echo "Usage:"
425
+ echo " sh publish.sh $MODE # Run all phases"
426
+ echo " sh publish.sh $MODE check # Phase 1: Check and update version"
427
+ echo " sh publish.sh $MODE maven # Phase 2: Publish to Maven"
428
+ echo " sh publish.sh $MODE npm # Phase 3: Publish to NPM"
429
+ exit 1
430
+ ;;
431
+ 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")