@momo-kits/native-kits 0.156.1-test.1 → 0.156.1-test.10-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 (119) hide show
  1. package/PUBLISH_GUIDE.md +318 -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 +394 -0
  117. package/publish_beta.sh +275 -0
  118. package/publish_release.sh +334 -0
  119. package/settings.gradle.kts +52 -0
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.1",
3
+ "version": "0.156.1-test.10-debug",
4
4
  "private": false,
5
5
  "dependencies": {},
6
6
  "devDependencies": {},
package/publish.sh ADDED
@@ -0,0 +1,394 @@
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 npm # Phase 2 only: Publish to NPM (beta)
13
+ # sh publish.sh beta maven # Phase 3 only: Publish to Maven (beta)
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)
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 | npm | maven | 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
+ # 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
+ # ============================================================================
47
+ # PHASE 1: CHECK AND UPDATE VERSION
48
+ # ============================================================================
49
+ phase_check_version() {
50
+ echo ""
51
+ echo "==============================================="
52
+ echo "📋 PHASE 1: CHECK AND UPDATE VERSION ($MODE)"
53
+ echo "==============================================="
54
+
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"
66
+
67
+ # ==============================================================
68
+ # BETA MODE: Fail if version exists
69
+ # ==============================================================
70
+ 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..."
74
+
75
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
76
+
77
+ if [ -n "$NPM_VERSION_INFO" ]; then
78
+ echo ""
79
+ echo "❌ ERROR: Version $VERSION already exists on npm!"
80
+ echo ""
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
+ echo ""
86
+ exit 1
87
+ fi
88
+
89
+ echo "✅ Version $VERSION does not exist on npm. Safe to publish."
90
+ fi
91
+
92
+ # ==============================================================
93
+ # RELEASE MODE: Convert to beta format and auto-increment
94
+ # ==============================================================
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
119
+ fi
120
+
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..."
124
+
125
+ # Loop until we find a version that doesn't exist on npm
126
+ while true; do
127
+ # Try to get the version info from npm
128
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
129
+
130
+ 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..."
169
+ else
170
+ echo "✅ Version $VERSION does not exist on npm. Using this version."
171
+ break
172
+ fi
173
+ done
174
+ fi
175
+
176
+ # Update gradle.properties with the same version
177
+ echo "📝 Updating gradle.properties..."
178
+ # Get current gradle version
179
+ CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
180
+
181
+ # Update version in gradle.properties using sed
182
+ if [[ "$OSTYPE" == "darwin"* ]]; then
183
+ # macOS
184
+ sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
185
+ else
186
+ # Linux
187
+ sed -i "s/^version=.*/version=$VERSION/" gradle.properties
188
+ fi
189
+
190
+ echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
191
+
192
+ export VERSION="$VERSION"
193
+
194
+ echo "✅ Using version: $VERSION"
195
+ echo "✅ PHASE 1 COMPLETED"
196
+ echo ""
197
+ }
198
+
199
+ # ============================================================================
200
+ # PHASE 2: PUBLISH TO NPM
201
+ # ============================================================================
202
+ phase_publish_npm() {
203
+ echo ""
204
+ echo "==============================================="
205
+ echo "📦 PHASE 2: PUBLISH TO NPM ($MODE - tag: $NPM_TAG)"
206
+ echo "==============================================="
207
+
208
+ # Get version from package.json
209
+ VERSION=$(node -p "require('./package.json').version")
210
+ export VERSION="$VERSION"
211
+
212
+ echo "📦 Publishing version: $VERSION"
213
+
214
+ ./gradlew clean
215
+
216
+ # First publish: normal version (compose/ is excluded via .npmignore)
217
+ echo "📤 Publishing normal version (without compose)..."
218
+ npm publish --tag $NPM_TAG --access=public
219
+
220
+ echo "✅ Normal version published successfully!"
221
+
222
+ # Second publish: debug version with compose kits included
223
+ echo ""
224
+ echo "🔧 Preparing debug version with compose kits..."
225
+
226
+ # Create debug version
227
+ DEBUG_VERSION="${VERSION}-debug"
228
+ echo "📦 Debug version: $DEBUG_VERSION"
229
+
230
+ # Update package.json version to debug version
231
+ if [[ "$OSTYPE" == "darwin"* ]]; then
232
+ # macOS
233
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
234
+ else
235
+ # Linux
236
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
237
+ fi
238
+
239
+ # Backup compose/build.gradle.kts
240
+ echo "📦 Backing up compose/build.gradle.kts..."
241
+ cp compose/build.gradle.kts compose/build.gradle.kts.backup
242
+
243
+ # Comment out maven publish in compose/build.gradle.kts
244
+ echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
245
+ if [[ "$OSTYPE" == "darwin"* ]]; then
246
+ # macOS - Comment out imports
247
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
248
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
249
+ # Comment out plugin
250
+ sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
251
+ # Comment out publishing block
252
+ sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
253
+ # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
254
+ sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
255
+ else
256
+ # Linux - Comment out imports
257
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
258
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
259
+ # Comment out plugin
260
+ sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
261
+ # Comment out publishing block
262
+ sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
263
+ # Comment out entire mavenPublishing block
264
+ sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
265
+ fi
266
+
267
+ # Modify android configuration for debug version
268
+ echo "🔧 Modifying android configuration for debug version..."
269
+ if [[ "$OSTYPE" == "darwin"* ]]; then
270
+ # macOS
271
+ sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
272
+ sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
273
+ sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
274
+ sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
275
+ else
276
+ # Linux
277
+ sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
278
+ sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
279
+ sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
280
+ sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
281
+ fi
282
+
283
+ # Backup .npmignore
284
+ cp .npmignore .npmignore.backup
285
+
286
+ # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
287
+ cat > .npmignore << 'EOF'
288
+ sample/
289
+ build/
290
+
291
+ .fleet
292
+ .gradle
293
+ .idea
294
+ .kotlin
295
+ .run
296
+
297
+ .gitattributes
298
+ .gitlab-ci.yml
299
+ .npmignore.backup
300
+ EOF
301
+
302
+ echo "📤 Publishing debug version (with compose)..."
303
+ npm publish --tag $NPM_TAG --access=public
304
+
305
+ # Restore .npmignore
306
+ mv .npmignore.backup .npmignore
307
+ echo "✅ .npmignore restored"
308
+
309
+ # Restore compose/build.gradle.kts
310
+ mv compose/build.gradle.kts.backup compose/build.gradle.kts
311
+ echo "✅ compose/build.gradle.kts restored"
312
+
313
+ # Restore package.json version to original
314
+ if [[ "$OSTYPE" == "darwin"* ]]; then
315
+ # macOS
316
+ sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
317
+ else
318
+ # Linux
319
+ sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
320
+ fi
321
+
322
+ echo "✅ package.json version restored"
323
+
324
+ echo ""
325
+ echo "✅ PHASE 2 COMPLETED"
326
+ echo " 📦 Normal version: $VERSION (without compose)"
327
+ echo " 🐛 Debug version: $DEBUG_VERSION (with compose)"
328
+ echo " 🏷️ NPM Tag: $NPM_TAG"
329
+ echo ""
330
+ }
331
+
332
+ # ============================================================================
333
+ # PHASE 3: PUBLISH TO MAVEN
334
+ # ============================================================================
335
+ phase_publish_maven() {
336
+ echo ""
337
+ echo "==============================================="
338
+ echo "🔧 PHASE 3: PUBLISH TO MAVEN ($MODE)"
339
+ echo "==============================================="
340
+
341
+ # Get version from package.json
342
+ VERSION=$(node -p "require('./package.json').version")
343
+ export VERSION="$VERSION"
344
+
345
+ echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
346
+
347
+ ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
348
+
349
+ echo "✅ Maven publishing completed successfully!"
350
+ echo "✅ PHASE 3 COMPLETED"
351
+ echo ""
352
+ }
353
+
354
+ # ============================================================================
355
+ # MAIN EXECUTION
356
+ # ============================================================================
357
+
358
+ echo ""
359
+ echo "🚀 PUBLISH SCRIPT - MODE: $(echo $MODE | tr '[:lower:]' '[:upper:]')"
360
+ echo "================================================="
361
+
362
+ case "$PHASE" in
363
+ "check")
364
+ echo "Running PHASE 1 only: Check and update version"
365
+ phase_check_version
366
+ ;;
367
+ "npm")
368
+ echo "Running PHASE 2 only: Publish to NPM"
369
+ phase_publish_npm
370
+ ;;
371
+ "maven")
372
+ echo "Running PHASE 3 only: Publish to Maven"
373
+ phase_publish_maven
374
+ ;;
375
+ "all")
376
+ echo "Running ALL PHASES"
377
+ phase_check_version
378
+ phase_publish_npm
379
+ phase_publish_maven
380
+ echo ""
381
+ echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
382
+ echo "================================================="
383
+ ;;
384
+ *)
385
+ echo "❌ Error: Invalid phase '$PHASE'"
386
+ echo ""
387
+ echo "Usage:"
388
+ echo " sh publish.sh $MODE # Run all phases"
389
+ echo " sh publish.sh $MODE check # Phase 1: Check and update version"
390
+ echo " sh publish.sh $MODE npm # Phase 2: Publish to NPM"
391
+ echo " sh publish.sh $MODE maven # Phase 3: Publish to Maven"
392
+ exit 1
393
+ ;;
394
+ esac