@momo-kits/native-kits 0.161.3-beta.1 → 0.162.1-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 (142) hide show
  1. package/build.gradle.kts +11 -0
  2. package/compose/build.gradle.kts +186 -0
  3. package/compose/build.gradle.kts.backup +186 -0
  4. package/compose/compose.podspec +47 -0
  5. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +6 -0
  6. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +123 -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 +109 -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 +921 -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 +403 -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/Avatar.kt +157 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +85 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +198 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +357 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +123 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +224 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +452 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +255 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +235 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +233 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +259 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +338 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +348 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +256 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +494 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +131 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +215 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +531 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +135 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +590 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +192 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +16 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +188 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +57 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +253 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +133 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +100 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +145 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +345 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +8 -0
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +556 -0
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +161 -0
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +243 -0
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +279 -0
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +32 -0
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +131 -0
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +167 -0
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +72 -0
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +66 -0
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +70 -0
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +105 -0
  126. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +33 -0
  127. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +186 -0
  128. package/gradle/libs.versions.toml +67 -0
  129. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  130. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  131. package/gradle.properties +26 -0
  132. package/gradlew +252 -0
  133. package/gradlew.bat +94 -0
  134. package/ios/Application/ApplicationEnvironment.swift +2 -6
  135. package/ios/Input/Input.swift +19 -19
  136. package/ios/Input/InputPhoneNumber.swift +17 -17
  137. package/ios/Typography/Text.swift +19 -14
  138. package/ios/Typography/Typography.swift +22 -1
  139. package/local.properties +8 -0
  140. package/package.json +1 -1
  141. package/publish.sh +136 -73
  142. package/settings.gradle.kts +64 -0
@@ -2,7 +2,28 @@ import SwiftUI
2
2
 
3
3
  public extension Font {
4
4
  static func appFont(size: CGFloat) -> Font {
5
- return Font.system(size: scaleSize(size))
5
+ let defaultScreenSize: CGFloat = 375
6
+ let maxFontScale: CGFloat = 1.5
7
+ let maxDeviceScale: CGFloat = 5
8
+
9
+ let deviceWidth = UIScreen.main.bounds.width
10
+ let deviceScale = deviceWidth / defaultScreenSize
11
+
12
+ let defaultFont = UIFont.systemFont(ofSize: UIFont.labelFontSize)
13
+ let scaledFont = UIFontMetrics.default.scaledFont(for: defaultFont)
14
+ let fontScale = scaledFont.pointSize / defaultFont.pointSize
15
+
16
+ var fontSize = size
17
+
18
+ if deviceScale > 1 {
19
+ fontSize = min(fontSize * deviceScale, fontSize + maxDeviceScale)
20
+ }
21
+
22
+ if fontScale > 1 {
23
+ fontSize = min(fontSize * fontScale, fontSize * maxFontScale)
24
+ }
25
+
26
+ return Font.system(size: fontSize)
6
27
  }
7
28
 
8
29
  // New supported typography styles
@@ -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
+ #Wed Aug 21 14:20:12 ICT 2024
8
+ sdk.dir=/Users/huynhdung/Library/Android/sdk
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momo-kits/native-kits",
3
- "version": "0.161.3-beta.1",
3
+ "version": "0.162.1-debug",
4
4
  "private": false,
5
5
  "dependencies": {},
6
6
  "devDependencies": {},
package/publish.sh CHANGED
@@ -14,8 +14,43 @@ set -e # Exit on error
14
14
  # sh publish.sh release check # Phase 1 only: Check version (release)
15
15
  # sh publish.sh release maven # Phase 2 only: Publish to Maven (release)
16
16
  # sh publish.sh release npm # Phase 3 only: Publish to NPM (release)
17
+ #
18
+ # Release bump (RELEASE mode only):
19
+ # sh publish.sh release # default: auto-increment PATCH (0.161.0 -> 0.161.1)
20
+ # sh publish.sh release --bump # bump MINOR, reset patch to 0 (0.161.0 -> 0.162.0)
21
+ # BUMP=1 sh publish.sh release # same as --bump, via env var (handy for CI variables)
17
22
  # ============================================================================
18
23
 
24
+ # ----------------------------------------------------------------------------
25
+ # Argument parsing
26
+ # Positional: MODE (beta|release), PHASE (check|maven|npm|all, default all)
27
+ # Flag: --bump (no value) -> RELEASE bumps the MINOR (reset patch to 0).
28
+ # Without --bump, release auto-increments PATCH.
29
+ # Env var BUMP=<non-empty/1/true/yes/minor> works as a fallback for --bump.
30
+ # ----------------------------------------------------------------------------
31
+ # Minor bump can be pre-enabled via the BUMP env var (e.g. a GitLab CI variable)
32
+ BUMP_MINOR=false
33
+ case "${BUMP:-}" in
34
+ 1|true|yes|minor) BUMP_MINOR=true ;;
35
+ esac
36
+
37
+ _ARGS=""
38
+ while [ $# -gt 0 ]; do
39
+ case "$1" in
40
+ --bump)
41
+ BUMP_MINOR=true
42
+ shift
43
+ ;;
44
+ *)
45
+ _ARGS="$_ARGS $1"
46
+ shift
47
+ ;;
48
+ esac
49
+ done
50
+ # Re-establish positional parameters without the consumed flags
51
+ # shellcheck disable=SC2086
52
+ set -- $_ARGS
53
+
19
54
  MODE="${1:-}"
20
55
  PHASE="${2:-all}"
21
56
 
@@ -28,6 +63,7 @@ if [ -z "$MODE" ]; then
28
63
  echo " sh publish.sh release [phase] # Release publishing"
29
64
  echo ""
30
65
  echo "Phases: check | maven | npm | all (default: all)"
66
+ echo "Bump (release only): --bump # bump MINOR instead of PATCH (or env BUMP=1)"
31
67
  exit 1
32
68
  fi
33
69
 
@@ -36,6 +72,10 @@ if [ "$MODE" != "beta" ] && [ "$MODE" != "release" ]; then
36
72
  exit 1
37
73
  fi
38
74
 
75
+ if [ "$MODE" == "beta" ] && [ "$BUMP_MINOR" = true ]; then
76
+ echo "⚠️ Note: --bump is ignored in beta mode (beta version comes from package.json)."
77
+ fi
78
+
39
79
  # ============================================================================
40
80
  # PHASE 1: CHECK AND UPDATE VERSION
41
81
  # ============================================================================
@@ -44,27 +84,27 @@ phase_check_version() {
44
84
  echo "==============================================="
45
85
  echo "📋 PHASE 1: CHECK AND UPDATE VERSION ($MODE)"
46
86
  echo "==============================================="
47
-
87
+
48
88
  PACKAGE_NAME=$(node -p "require('./package.json').name")
49
-
89
+
50
90
  # ==============================================================
51
91
  # BETA MODE: Check format for tag, fail if exists
52
92
  # ==============================================================
53
93
  if [ "$MODE" == "beta" ]; then
54
94
  echo "🔍 Reading version from package.json..."
55
95
  VERSION=$(node -p "require('./package.json').version")
56
-
96
+
57
97
  if [ -z "$VERSION" ]; then
58
98
  echo "❌ Error: Could not read version from package.json"
59
99
  exit 1
60
100
  fi
61
-
101
+
62
102
  echo "📦 Version from package.json: $VERSION"
63
-
103
+
64
104
  # Detect tag based on version format
65
105
  # Has "beta" in version → tag beta
66
106
  # No "beta" in version → tag alpha
67
-
107
+
68
108
  if [[ "$VERSION" == *"beta"* ]]; then
69
109
  NPM_TAG="beta"
70
110
  echo "🏷️ Detected: Version contains 'beta' → tag: beta"
@@ -72,11 +112,11 @@ phase_check_version() {
72
112
  NPM_TAG="alpha"
73
113
  echo "🏷️ Detected: Version does not contain 'beta' → tag: alpha"
74
114
  fi
75
-
115
+
76
116
  # Check if version exists on npm
77
117
  echo "🔎 Checking if version $VERSION exists on npm..."
78
118
  NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
79
-
119
+
80
120
  if [ -n "$NPM_VERSION_INFO" ]; then
81
121
  echo ""
82
122
  echo "❌ ERROR: Version $VERSION already exists on npm!"
@@ -85,55 +125,75 @@ phase_check_version() {
85
125
  echo ""
86
126
  exit 1
87
127
  fi
88
-
128
+
89
129
  echo "✅ Version $VERSION does not exist on npm. Safe to publish."
90
130
  fi
91
-
131
+
92
132
  # ==============================================================
93
133
  # RELEASE MODE: Read from npm@latest and auto-increment
94
134
  # ==============================================================
95
135
  if [ "$MODE" == "release" ]; then
96
136
  echo "🔍 Reading latest version from npm@latest (NOT from package.json)..."
97
-
137
+
98
138
  # Read version from npm@latest
99
139
  LATEST_VERSION=$(npm view "$PACKAGE_NAME@latest" version 2>/dev/null || echo "")
100
-
140
+
101
141
  if [ -z "$LATEST_VERSION" ]; then
102
142
  echo "❌ Error: Could not read version from npm@latest"
103
143
  echo "Package may not exist on npm yet."
104
144
  exit 1
105
145
  fi
106
-
146
+
107
147
  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)
148
+
149
+ # Parse major.minor.patch (handle versions like 0.156.2 or 0.156.2-beta.1)
111
150
  MAJOR=$(echo "$LATEST_VERSION" | cut -d'.' -f1)
112
151
  MINOR=$(echo "$LATEST_VERSION" | cut -d'.' -f2)
113
152
  PATCH=$(echo "$LATEST_VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
114
-
115
- # Increment patch
116
- NEW_PATCH=$((PATCH + 1))
153
+
154
+ # Compute next version:
155
+ # --bump -> bump MINOR, reset patch to 0 (0.161.0 -> 0.162.0)
156
+ # default -> auto-increment PATCH (0.161.0 -> 0.161.1)
157
+ if [ "$BUMP_MINOR" = true ]; then
158
+ MINOR=$((MINOR + 1))
159
+ NEW_PATCH=0
160
+ echo "🔼 Bump: MINOR (--bump)"
161
+ else
162
+ NEW_PATCH=$((PATCH + 1))
163
+ echo "🔼 Bump: PATCH (default)"
164
+ fi
117
165
  VERSION="$MAJOR.$MINOR.$NEW_PATCH"
118
-
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..."
166
+
167
+ echo "🔼 Computed next version: $LATEST_VERSION → $VERSION"
168
+
169
+ # Find the next publishable patch within this major.minor line.
170
+ # A version is "taken" if EITHER the normal OR the "-debug" variant
171
+ # already exists on npm (phase 3 publishes both, so both must be free).
172
+ # Keeps incrementing the patch (e.g. 0.161.0 -> 0.161.1 -> 0.161.2 ...)
173
+ # until a fully-free version is found, or until a safety cap is hit.
174
+ echo "🔎 Finding a publishable version starting at $VERSION..."
175
+ MAX_TRIES=100
176
+ TRIES=0
123
177
  while true; do
124
- NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
125
-
126
- if [ -n "$NPM_VERSION_INFO" ]; then
127
- echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing..."
128
- NEW_PATCH=$((NEW_PATCH + 1))
129
- VERSION="$MAJOR.$MINOR.$NEW_PATCH"
130
- echo " Version incremented: → $VERSION"
131
- else
132
- echo "✅ Version $VERSION does not exist on npm. Using this version."
178
+ EXISTING=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
179
+ EXISTING_DEBUG=$(npm view "$PACKAGE_NAME@$VERSION-debug" version 2>/dev/null || echo "")
180
+
181
+ if [ -z "$EXISTING" ] && [ -z "$EXISTING_DEBUG" ]; then
182
+ echo "✅ $VERSION is free (normal + debug). Using this version."
133
183
  break
134
184
  fi
185
+
186
+ echo "⚠️ $VERSION is taken (normal: ${EXISTING:-free}, debug: ${EXISTING_DEBUG:-free}). Incrementing patch..."
187
+ TRIES=$((TRIES + 1))
188
+ if [ "$TRIES" -ge "$MAX_TRIES" ]; then
189
+ echo "❌ Error: Could not find a free version after $MAX_TRIES tries (stuck near $VERSION)."
190
+ exit 1
191
+ fi
192
+ NEW_PATCH=$((NEW_PATCH + 1))
193
+ VERSION="$MAJOR.$MINOR.$NEW_PATCH"
194
+ echo " → trying $VERSION"
135
195
  done
136
-
196
+
137
197
  # Update package.json with new version
138
198
  CURRENT_VERSION=$(node -p "require('./package.json').version")
139
199
  if [[ "$OSTYPE" == "darwin"* ]]; then
@@ -142,26 +202,26 @@ phase_check_version() {
142
202
  sed -i "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$VERSION\"/" package.json
143
203
  fi
144
204
  echo "📝 Updated package.json: $CURRENT_VERSION → $VERSION"
145
-
205
+
146
206
  # Set NPM tag to latest
147
207
  NPM_TAG="latest"
148
208
  fi
149
-
209
+
150
210
  # Update gradle.properties with the same version
151
211
  echo "📝 Updating gradle.properties..."
152
212
  CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
153
-
213
+
154
214
  if [[ "$OSTYPE" == "darwin"* ]]; then
155
215
  sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
156
216
  else
157
217
  sed -i "s/^version=.*/version=$VERSION/" gradle.properties
158
218
  fi
159
-
219
+
160
220
  echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
161
-
221
+
162
222
  export VERSION="$VERSION"
163
223
  export NPM_TAG="$NPM_TAG"
164
-
224
+
165
225
  echo "✅ Using version: $VERSION"
166
226
  echo "✅ NPM tag: $NPM_TAG"
167
227
  echo "✅ PHASE 1 COMPLETED"
@@ -176,19 +236,19 @@ phase_publish_maven() {
176
236
  echo "==============================================="
177
237
  echo "🔧 PHASE 2: PUBLISH TO MAVEN ($MODE)"
178
238
  echo "==============================================="
179
-
239
+
180
240
  # Get version from package.json
181
241
  VERSION=$(node -p "require('./package.json').version")
182
242
  export VERSION="$VERSION"
183
-
243
+
184
244
  echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
185
-
245
+
186
246
  ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
187
-
247
+
188
248
  echo "✅ compose Maven publishing completed successfully!"
189
-
249
+
190
250
  echo "📦 Publishing sample/shared KMP artifacts to Maven (version ${VERSION})..."
191
-
251
+
192
252
  # Temporarily remove composeResources and compose { resources { ... } } block
193
253
  echo "📦 Backing up sample/shared composeResources and build.gradle.kts..."
194
254
  if [ -d "sample/shared/src/commonMain/composeResources" ]; then
@@ -200,16 +260,16 @@ phase_publish_maven() {
200
260
  else
201
261
  sed -i '/^compose {$/,/^}$/d' sample/shared/build.gradle.kts
202
262
  fi
203
-
263
+
204
264
  ./gradlew :sample:shared:publishAllPublicationsToGitLabPackagesRepository
205
-
265
+
206
266
  # Restore composeResources and build.gradle.kts
207
267
  echo "📦 Restoring sample/shared composeResources and build.gradle.kts..."
208
268
  mv sample/shared/build.gradle.kts.backup sample/shared/build.gradle.kts
209
269
  if [ -d "sample/shared/src/commonMain/composeResources.backup" ]; then
210
270
  mv sample/shared/src/commonMain/composeResources.backup sample/shared/src/commonMain/composeResources
211
271
  fi
212
-
272
+
213
273
  echo "✅ sample/shared Maven publishing completed successfully!"
214
274
  echo "✅ PHASE 2 COMPLETED"
215
275
  echo ""
@@ -223,13 +283,13 @@ phase_publish_npm() {
223
283
  echo "==============================================="
224
284
  echo "📦 PHASE 3: PUBLISH TO NPM ($MODE)"
225
285
  echo "==============================================="
226
-
286
+
227
287
  # Get version from package.json
228
288
  VERSION=$(node -p "require('./package.json').version")
229
289
  export VERSION="$VERSION"
230
-
290
+
231
291
  echo "📦 Version from package.json: $VERSION"
232
-
292
+
233
293
  # Determine NPM tag (should already be set from phase 1, but fallback just in case)
234
294
  if [ -z "$NPM_TAG" ]; then
235
295
  echo "⚠️ NPM_TAG not set, re-detecting..."
@@ -249,36 +309,36 @@ phase_publish_npm() {
249
309
  else
250
310
  echo "✅ NPM_TAG already set: $NPM_TAG"
251
311
  fi
252
-
312
+
253
313
  echo "📦 Publishing version: $VERSION"
254
314
  echo "🏷️ NPM tag: $NPM_TAG"
255
-
315
+
256
316
  ./gradlew clean
257
-
317
+
258
318
  # ============================================================
259
319
  # FIRST PUBLISH: DEBUG VERSION (with compose kits included)
260
320
  # ============================================================
261
321
  echo ""
262
322
  echo "🔧 Preparing debug version with compose kits..."
263
-
323
+
264
324
  # Create debug version
265
325
  DEBUG_VERSION="${VERSION}-debug"
266
326
  echo "📦 Debug version: $DEBUG_VERSION"
267
-
327
+
268
328
  # Get current version from package.json (in case it's different from $VERSION)
269
329
  CURRENT_PKG_VERSION=$(node -p "require('./package.json').version")
270
-
330
+
271
331
  # Update package.json version to debug version
272
332
  if [[ "$OSTYPE" == "darwin"* ]]; then
273
333
  sed -i '' "s/\"version\": \"$CURRENT_PKG_VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
274
334
  else
275
335
  sed -i "s/\"version\": \"$CURRENT_PKG_VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
276
336
  fi
277
-
337
+
278
338
  # Backup compose/build.gradle.kts
279
339
  echo "📦 Backing up compose/build.gradle.kts..."
280
340
  cp compose/build.gradle.kts compose/build.gradle.kts.backup
281
-
341
+
282
342
  # Comment out maven publish in compose/build.gradle.kts
283
343
  echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
284
344
  if [[ "$OSTYPE" == "darwin"* ]]; then
@@ -294,7 +354,7 @@ phase_publish_npm() {
294
354
  sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
295
355
  sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
296
356
  fi
297
-
357
+
298
358
  # Modify android configuration for debug version
299
359
  echo "🔧 Modifying android configuration for debug version..."
300
360
  if [[ "$OSTYPE" == "darwin"* ]]; then
@@ -308,10 +368,10 @@ phase_publish_npm() {
308
368
  sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
309
369
  sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
310
370
  fi
311
-
371
+
312
372
  # Backup .npmignore
313
373
  cp .npmignore .npmignore.backup
314
-
374
+
315
375
  # Create minimal .npmignore for debug version
316
376
  cat > .npmignore << 'EOF'
317
377
  sample/
@@ -327,20 +387,20 @@ build/
327
387
  .gitlab-ci.yml
328
388
  .npmignore.backup
329
389
  EOF
330
-
390
+
331
391
  echo "📤 Publishing debug version (with compose)..."
332
392
  npm publish --tag $NPM_TAG --access=public
333
-
393
+
334
394
  echo "✅ Debug version published successfully!"
335
-
395
+
336
396
  # Restore .npmignore
337
397
  mv .npmignore.backup .npmignore
338
398
  echo "✅ .npmignore restored"
339
-
399
+
340
400
  # Restore compose/build.gradle.kts
341
401
  mv compose/build.gradle.kts.backup compose/build.gradle.kts
342
402
  echo "✅ compose/build.gradle.kts restored"
343
-
403
+
344
404
  # Restore package.json version to original
345
405
  # Verify current version is debug version before restoring
346
406
  CURRENT_VERSION_CHECK=$(node -p "require('./package.json').version")
@@ -360,16 +420,16 @@ EOF
360
420
  sed -i "s/\"version\": \"$CURRENT_VERSION_CHECK\"/\"version\": \"$VERSION\"/" package.json
361
421
  fi
362
422
  fi
363
-
423
+
364
424
  # ============================================================
365
425
  # SECOND PUBLISH: NORMAL VERSION (without compose)
366
426
  # ============================================================
367
427
  echo ""
368
428
  echo "📤 Publishing normal version (without compose)..."
369
429
  npm publish --tag $NPM_TAG --access=public
370
-
430
+
371
431
  echo "✅ Normal version published successfully!"
372
-
432
+
373
433
  echo ""
374
434
  echo "✅ PHASE 3 COMPLETED"
375
435
  echo " 🐛 Debug version: $DEBUG_VERSION (with compose) - Published first"
@@ -384,6 +444,9 @@ EOF
384
444
 
385
445
  echo ""
386
446
  echo "🚀 PUBLISH SCRIPT - MODE: $(echo $MODE | tr '[:lower:]' '[:upper:]')"
447
+ if [ "$MODE" == "release" ]; then
448
+ if [ "$BUMP_MINOR" = true ]; then echo " Bump: MINOR (--bump)"; else echo " Bump: PATCH (default)"; fi
449
+ fi
387
450
  echo "================================================="
388
451
 
389
452
  case "$PHASE" in
@@ -393,7 +456,7 @@ case "$PHASE" in
393
456
  ;;
394
457
  "maven")
395
458
  echo "Running PHASE 2 only: Publish to Maven"
396
- phase_publish_maven
459
+ # phase_publish_maven
397
460
  ;;
398
461
  "npm")
399
462
  echo "Running PHASE 3 only: Publish to NPM"
@@ -402,7 +465,7 @@ case "$PHASE" in
402
465
  "all")
403
466
  echo "Running ALL PHASES"
404
467
  phase_check_version
405
- phase_publish_maven
468
+ # phase_publish_maven
406
469
  phase_publish_npm
407
470
  echo ""
408
471
  echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
@@ -0,0 +1,64 @@
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("https://artifacts.mservice.com.vn/repository/maven-momo-app/")
23
+ credentials {
24
+ username = "viewer"
25
+ password = "viewer"
26
+ }
27
+ isAllowInsecureProtocol = true
28
+ }
29
+ }
30
+ }
31
+
32
+ dependencyResolutionManagement {
33
+ repositories {
34
+ google {
35
+ mavenContent {
36
+ includeGroupAndSubgroups("androidx")
37
+ includeGroupAndSubgroups("com.android")
38
+ includeGroupAndSubgroups("com.google")
39
+ }
40
+ }
41
+ mavenCentral()
42
+ maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
43
+ maven {
44
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
45
+ credentials {
46
+ username = "download_packages";
47
+ password = "gldt-bjDqLpU_sPcHDuXau2ws"
48
+ }
49
+ }
50
+ maven {
51
+ url = uri("https://artifacts.mservice.com.vn/repository/maven-momo-app/")
52
+ credentials {
53
+ username = "viewer"
54
+ password = "viewer"
55
+ }
56
+ isAllowInsecureProtocol = true
57
+ }
58
+ }
59
+ }
60
+
61
+ include(":compose")
62
+
63
+ include(":sample:androidApp")
64
+ include(":sample:shared")