@momo-kits/native-kits 0.164.1-beta.9-debug → 0.164.1-headerconfig.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 (53) hide show
  1. package/.claude/settings.local.json +7 -178
  2. package/CLAUDE.md +2 -0
  3. package/compose/build.gradle.kts +1 -1
  4. package/compose/compose.podspec +1 -1
  5. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +3 -3
  6. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +2 -1
  7. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +18 -0
  8. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +6 -1
  9. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +30 -4
  10. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +1 -1
  11. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +3 -1
  12. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +8 -1
  13. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +9 -4
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +4 -1
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +3 -0
  16. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +104 -22
  17. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +3 -9
  18. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +8 -4
  19. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +2 -1
  20. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitDesignSystem.kt +18 -0
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +2 -2
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +38 -5
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +58 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +3 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +20 -11
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +10 -23
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +20 -23
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +11 -27
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +4 -10
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +19 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +41 -3
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +3 -1
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +106 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +75 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +3 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +5 -1
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +5 -8
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +3 -1
  39. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +45 -0
  40. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +6 -3
  41. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +8 -23
  42. package/gradle/libs.versions.toml +1 -1
  43. package/gradle.properties +1 -1
  44. package/ios/Application/Navigation/NavigatorManager.swift +0 -27
  45. package/ios/Colors+Radius+Spacing/Theme.swift +2 -2
  46. package/ios/Typography/KitDesignSystem.swift +17 -0
  47. package/ios/Typography/Text.swift +25 -1
  48. package/ios/native-kits.podspec +1 -1
  49. package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
  50. package/local.properties +2 -2
  51. package/package.json +1 -1
  52. package/publish.sh +25 -0
  53. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ComposeBackGesture.ios.kt +0 -65
@@ -1,185 +1,14 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Bash(curl -s -o /dev/null -w \"%{http_code}\" \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko-android/0.144.6/skiko-android-0.144.6.pom\")",
5
- "Bash(curl -s \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko-android/maven-metadata.xml\")",
6
- "Bash(curl -s \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko/maven-metadata.xml\")",
7
- "Bash(curl -s \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko/0.144.6/skiko-0.144.6.module\")",
8
- "Bash(curl -s -o /dev/null -w '%{http_code}' https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko-android/0.144.6/skiko-android-0.144.6.__TRACKED_VAR__)",
9
- "Bash(curl -s \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko-android/0.144.6/\")",
10
- "Bash(curl -s \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko-android/\")",
11
- "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko-android/0.148.1/skiko-android-0.148.1.pom\")",
12
- "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" \"https://repo.maven.apache.org/maven2/org/jetbrains/skiko/skiko-android/0.144.5/skiko-android-0.144.5.pom\")",
13
- "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" \"https://dl.google.com/dl/android/maven2/org/jetbrains/skiko/skiko-android/0.144.6/skiko-android-0.144.6.pom\")",
14
- "Bash(curl -s \"https://search.maven.org/solrsearch/select?q=a:skiko-android&rows=5&wt=json\")",
15
- "Bash(curl -sL -o /dev/null -w \"%{http_code} %{url_effective}\\\\n\" \"https://repo1.maven.org/maven2/org/jetbrains/skiko/skiko-android/0.144.6/skiko-android-0.144.6.pom\")",
16
- "Bash(curl *)",
17
- "Bash(./gradlew :sample:androidApp:dependencies --configuration debugRuntimeClasspath)",
18
- "Bash(./gradlew :sample:shared:compileDebugKotlinAndroid)",
19
- "Bash(./gradlew :sample:androidApp:compileDebugKotlin)",
20
- "Bash(ls -d *.xcodeproj)",
21
- "Bash(grep -c ChipDemo.swift __TRACKED_VAR__/project.pbxproj)",
22
- "Bash(grep -c PBXFileSystemSynchronizedRootGroup __TRACKED_VAR__/project.pbxproj)",
23
- "Bash(grep -c InformationDemo.swift __TRACKED_VAR__/project.pbxproj)",
24
- "Bash(plutil -lint project.pbxproj)",
25
- "Bash(xcode-select -p)",
26
- "Bash(/usr/bin/xcrun xcodebuild *)",
27
- "Bash(echo \"exit: $?\")",
28
- "Bash(/Applications/Xcode26.app/Contents/Developer/usr/bin/xcodebuild -version)",
29
- "Bash(./gradlew :compose:tasks --all)",
30
- "Bash(grep -n \"vanniktech\\\\|mavenPublishing\\\\|^publishing\\\\|version = gitlabVersion\\\\|namespace =\\\\|compileSdk =\\\\|minSdk =\\\\|GitLabPackages\\\\|name = \\\\\"\\\\${gitlabRepo}Packages\\\\\"\")",
31
- "Bash(git checkout *)",
32
- "Bash(./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository --dry-run)",
33
- "Bash(git fetch *)",
34
- "Bash(git pull *)",
35
- "Bash(git push *)",
36
- "Bash(git branch *)",
37
- "Bash(xcodebuild -workspace iosApp.xcworkspace -list)",
38
- "Bash(xcrun simctl *)",
39
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 14 Pro' -configuration Debug build CODE_SIGNING_ALLOWED=NO)",
40
- "Bash(pod install *)",
41
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'id=1E6F9A79-5E64-4590-BEA2-828D75D99393' -configuration Debug build CODE_SIGNING_ALLOWED=NO)",
42
- "Bash(xcrun swiftc *)",
43
- "Bash(echo \"=== exit: $? \\(1=none found\\) ===\")",
44
- "Bash(cat Radius.swift)",
45
- "Bash(cat Spacing.swift)",
46
- "Bash(echo \"exit=$?\")",
47
- "Bash(ruby *)",
48
- "Bash(xcodebuild -list -workspace iosApp.xcworkspace)",
49
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme MoMoUIKits -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 14 Pro' build)",
50
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme MoMoUIKits -sdk iphonesimulator -destination 'platform=iOS Simulator,id=E6A899C0-098E-473A-95B8-A2BBD2D42A92' build)",
51
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'platform=iOS Simulator,id=E6A899C0-098E-473A-95B8-A2BBD2D42A92' build)",
52
- "Bash(xcodebuild build *)",
53
- "Bash(git stash *)",
54
- "Bash(plutil -lint sample/iosApp/iosApp.xcodeproj/project.pbxproj)",
55
- "Bash(git add *)",
56
- "Bash(git commit -m 'feat: DS-646 [ci build] *)",
57
- "Bash(git commit -q -m 'fix: DS-656 [ci build] *)",
58
- "Bash(xargs git log --oneline -1)",
59
- "Bash(git rev-list *)",
60
- "Bash(git status *)",
61
- "Bash(git rebase *)",
62
- "Bash(git merge *)",
63
- "Bash(git reset *)",
64
- "Bash(awk '/^ *)",
65
- "Bash(git ls-tree *)",
66
- "Bash(awk *)",
67
- "Read(//Users/sophia/Workspace/momo/momo-app/**)",
68
- "Bash(git log *)",
69
- "Bash(xcodebuild -version)",
70
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -configuration Debug build CODE_SIGNING_ALLOWED=NO)",
71
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme MoMoUIKits -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -configuration Debug build CODE_SIGNING_ALLOWED=NO)",
72
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme MoMoUIKits -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -configuration Debug clean build CODE_SIGNING_ALLOWED=NO)",
73
- "Bash(git commit *)",
74
- "Bash(npm view *)",
75
- "Bash(echo \"EXIT=$? -> not resolvable\")",
76
- "Bash(yarn install *)",
77
- "Bash(RCT_NEW_ARCH_ENABLED=1 pod install)",
78
- "Bash(xcodebuild -workspace MoMoPlatform.xcworkspace -list)",
79
- "Bash(git --no-pager diff --stat ios/Application/Localize.swift ios/Application/Navigation/NavigationContainer.swift ios/Popup/PopupDisplay.swift ios/Popup/PopupNotify.swift ios/Template/TrustBanner/TrustBanner.swift)",
4
+ "WebSearch",
5
+ "Bash(./gradlew assembleDebug 2>&1)",
6
+ "Bash(./gradlew :sample:androidApp:installDebug 2>&1)",
7
+ "Bash(./gradlew :compose:compileCommonMainKotlinMetadata -q)",
8
+ "Bash(mkdir -p compose/src/commonMain/composeResources/files)",
9
+ "Bash(cp sample/shared/src/commonMain/composeResources/files/anim_processing_transaction.json sample/shared/src/commonMain/composeResources/files/dot_loading.json sample/shared/src/commonMain/composeResources/files/face_loading.json sample/shared/src/commonMain/composeResources/files/lottie_circle_loader.json compose/src/commonMain/composeResources/files/)",
80
10
  "Bash(git rm *)",
81
- "Bash(echo \"EXIT=$?\")",
82
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits diff sample/iosApp/iosApp/Demo/ButtonDemo.swift)",
83
- "Bash(python3 *)",
84
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits status --short)",
85
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits log --oneline -3)",
86
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits log --oneline -5 -- ios/Button/Button.swift)",
87
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits diff ios/native-kits.podspec compose/compose.podspec gradle.properties package.json)",
88
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits show HEAD:ios/Button/Button.swift)",
89
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits diff package.json ios/native-kits.podspec)",
90
- "Bash(grep -n \"must be a \\\\`.background\\\\` of the label\" /Users/sophia/Workspace/momo/momo-app/node_modules/@momo-kits/native-kits/ios/Button/Button.swift)",
91
- "Bash(git -C /Users/sophia/Workspace/momo/momo-native-kits show -s --format=\"%h %ci %s\" 953b234d)",
92
- "Bash(git -C /Users/sophia/Workspace/momo/momo-app show -s --format=\"%h %ci %s\" f8757a14437)",
93
- "Bash(git -C /Users/sophia/Workspace/momo/momo-app log -S '\"@momo-kits/native-kits\": \"0.163.1-beta.18\"' --format=\"%h %ci %s\" -- package.json)",
94
- "Bash(swiftc -O repro_isfull.swift -o repro_isfull)",
95
- "Bash(./repro_isfull)",
96
- "Bash(grep -n '^\\\\[32;1m$\\\\|section_start\\\\|xcodebuild.*-workspace\\\\|xcodebuild.*archive\\\\|Prebuilt\\\\|prebuilt\\\\|framework.*download\\\\|rugby\\\\|Rugby' /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/7e2b5bd7-f8b3-42f7-b242-127fa8eabd12/scratchpad/job_trace.log)",
97
- "Bash(grep -n '\\\\[32;1m\\\\$' /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/7e2b5bd7-f8b3-42f7-b242-127fa8eabd12/scratchpad/job_trace.log)",
98
- "Bash(npm pack *)",
99
- "Bash(mkdir -p b13 b18)",
100
- "Bash(tar xzf *)",
101
- "Bash(git *)",
102
- "Bash(tar -tzf momo-kits-native-kits-0.163.1-beta.18.tgz)",
103
- "Bash(tar -xzf momo-kits-native-kits-0.163.1-beta.18.tgz package/ios/Button/Button.swift)",
104
- "Bash(tar -xzf momo-kits-native-kits-0.162.28.tgz package/ios/Button/Button.swift -C .)",
105
- "Bash(mkdir -p old)",
106
- "Bash(tar -xzf momo-kits-native-kits-0.162.28.tgz -C old package/ios/Button/Button.swift)",
107
- "Bash(nm '/private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/7e2b5bd7-f8b3-42f7-b242-127fa8eabd12/scratchpad/ipa_extract/Payload/MoMoPlatform UAT.app/MoMoPlatform UAT')",
108
- "Bash(xcodebuild -workspace /Users/sophia/Workspace/momo/momo-native-kits/sample/iosApp/iosApp.xcworkspace -list)",
109
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme MoMoUIKits -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' build)",
110
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build-verify build)",
111
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme MoMoUIKits -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build-verify build)",
112
- "Bash(./gradlew :sample:shared:syncComposeResourcesForIos)",
113
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'platform=iOS Simulator,id=E6A899C0-098E-473A-95B8-A2BBD2D42A92' -derivedDataPath build-verify build)",
114
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme MoMoUIKits -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -quiet build)",
115
- "Bash(xcodebuild -workspace sample/iosApp/iosApp.xcworkspace -list)",
116
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -destination 'id=0228A4B2-57E0-4E56-BFAD-DB9E95044AD9' -derivedDataPath /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/6986983a-795d-419d-9d78-fcc100e87876/scratchpad/dd build)",
117
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -destination 'id=1E6F9A79-5E64-4590-BEA2-828D75D99393' -derivedDataPath /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/6986983a-795d-419d-9d78-fcc100e87876/scratchpad/dd build)",
118
- "Bash([ -s $S/kb.png ])",
119
- "Bash(sips -g pixelWidth -g pixelHeight /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/6986983a-795d-419d-9d78-fcc100e87876/scratchpad/kb.png)",
120
- "Bash(defaults read *)",
121
- "Bash(defaults write *)",
122
- "Bash(xcrun xcodebuild *)",
123
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -quiet build)",
124
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'platform=iOS Simulator,id=E6A899C0-098E-473A-95B8-A2BBD2D42A92' -quiet build)",
125
- "Read(//tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/3e8adc08-a7e7-4169-aee6-8b22a6996f38/scratchpad/**)",
126
- "Bash(echo \"parse-exit=$?\")",
127
- "Bash(echo \"=== exit $?\")",
128
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -configuration Debug build)",
129
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'platform=iOS Simulator,id=E6A899C0-098E-473A-95B8-A2BBD2D42A92' -configuration Debug build)",
130
- "Bash(./gradlew :sample:shared:compileCommonMainKotlinMetadata -q)",
131
- "Bash(echo \"gradle=$?\")",
132
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -sdk iphonesimulator -destination 'id=0228A4B2-57E0-4E56-BFAD-DB9E95044AD9' -derivedDataPath build/dd build)",
133
- "Bash(osascript *)",
134
- "Bash(screencapture -x -R253,53,452,950 win.png)",
135
- "Bash(sips -g pixelWidth -g pixelHeight win.png)",
136
- "Bash(screencapture -x -R\"253,53,452,950\" win.png)",
137
- "Bash(screencapture -x full.png)",
138
- "Bash(sips -g pixelWidth -g pixelHeight full.png)",
139
- "Bash(sips -c 1900 904 --cropOffset 106 506 full.png --out crop.png)",
140
- "Bash(swiftc -O mouse.swift -o mouse)",
141
- "Bash(./mouse click *)",
142
- "Bash(./mouse drag *)",
143
- "Bash(sips -c 900 924 --cropOffset 0 0 s12.png --out s12crop.png)",
144
- "Bash(sips -c 300 1170 --cropOffset 300 0 s12.png --out s12top.png)",
145
- "Bash(sips -c 700 1170 --cropOffset 250 0 t1.png --out t1c.png)",
146
- "Bash(sips -c 700 1170 --cropOffset 250 0 t2.png --out t2c.png)",
147
- "Bash(sips -c 700 1170 --cropOffset 150 0 t3.png --out t3c.png)",
148
- "Bash(sips -c 1200 1170 --cropOffset 600 0 t4.png --out t4c.png)",
149
- "Bash(sips -c 600 1170 --cropOffset 150 0 t5.png --out t5c.png)",
150
- "Bash(sips -c 500 1170 --cropOffset 150 0 u1.png --out u1c.png)",
151
- "Bash(cp /Users/sophia/Workspace/momo/momo-native-kits/ios/Application/Navigation/NavigationContainer.swift /Users/sophia/Workspace/momo/momo-app/node_modules/@momo-kits/native-kits/ios/Application/Navigation/NavigationContainer.swift)",
152
- "Bash(cp /Users/sophia/Workspace/momo/momo-native-kits/ios/Application/Navigation/Navigator.swift /Users/sophia/Workspace/momo/momo-app/node_modules/@momo-kits/native-kits/ios/Application/Navigation/Navigator.swift)",
153
- "Bash(cp /Users/sophia/Workspace/momo/momo-native-kits/ios/Application/Navigation/NavigatorManager.swift /Users/sophia/Workspace/momo/momo-app/node_modules/@momo-kits/native-kits/ios/Application/Navigation/NavigatorManager.swift)",
154
- "Bash(cp /Users/sophia/Workspace/momo/momo-native-kits/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift /Users/sophia/Workspace/momo/momo-app/node_modules/@momo-kits/native-kits/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift)",
155
- "Bash(xcodebuild -workspace MoMoPlatform.xcworkspace -scheme MoMoPlatform-UAT -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build/DerivedData build)",
156
- "Bash(cp android/gradle/libs.versions.toml /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/bfb380ee-54cb-4a02-bc5f-d152cce4b727/scratchpad/libs.versions.toml.bak)",
157
- "Bash(sed -i '' 's/kits = \"0.163.1-sp.8\"/kits = \"0.163.1-sp.7\"/' android/gradle/libs.versions.toml)",
158
- "Bash(xcrun --sdk iphonesimulator --show-sdk-path)",
159
- "Bash(chmod +x /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/62b6dcd2-247f-4111-98ef-3847c8914676/scratchpad/tc.sh)",
160
- "Bash(/private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/62b6dcd2-247f-4111-98ef-3847c8914676/scratchpad/tc.sh)",
161
- "Bash(perl -0pi -e 's{^ static let \\(\\\\w+\\) = \\(appFont\\\\\\(size: [\\\\d.]+\\\\\\)\\(?:\\\\.weight\\\\\\(\\\\.\\\\w+\\\\\\)\\)?\\)\\(\\\\s*//.*\\)?$}{ static var $1: Font { $2 }$3}mg' ios/Typography/Typography.swift)",
162
- "Bash(perl -0pi -e 's{\\(\\\\s*\\)// AI-GENERATED START: route Localize injection through the observing modifier\\\\n\\(\\\\s*\\)\\\\.momoLocalize\\\\\\(localize\\\\\\)\\\\n\\(\\\\s*\\)// AI-GENERATED END: route Localize injection through the observing modifier}{$1// AI-GENERATED START: route Localize + font-scale injection through the observing modifiers\\\\n$2.momoLocalize\\(localize\\)\\\\n$2.momoFontScale\\(\\)\\\\n$3// AI-GENERATED END: route Localize + font-scale injection through the observing modifiers}g' ios/Application/Navigation/NavigationContainer.swift)",
163
- "Bash(perl -pi -e 's/Mirrors Compose.s `fontScale\\\\\\(\\\\.\\\\.\\\\.\\\\\\)`/Mirrors Compose'\"'\"'s `scaleSize\\(...\\)`/' ios/Chip/Chip.swift)",
164
- "Bash(perl -pi -e 's/fontScale\\\\\\(\\(size == \\\\.small \\\\? 48 : 56\\), 1\\\\.1\\\\\\)/fontScale\\($1\\)/' ios/Input/Input.swift ios/Input/InputPhoneNumber.swift)",
165
- "Bash(perl -pi -e 's/^\\(\\\\s*\\)\\\\.momoFontScale\\\\\\(\\\\\\)$/$1.momoFontScale\\(context: applicationEnvironment.applicationContext\\)/' ios/Application/Navigation/NavigationContainer.swift)",
166
- "Bash(chmod +x /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/62b6dcd2-247f-4111-98ef-3847c8914676/scratchpad/tcdemo.sh)",
167
- "Bash(/private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/62b6dcd2-247f-4111-98ef-3847c8914676/scratchpad/tcdemo.sh)",
168
- "Bash(\"/Users/sophia/Workspace/momo-glab/momo-agent-flows/momo-agent/scripts/repo.sh\" find *)",
169
- "Read(//Users/sophia/.momo-agent/**)",
170
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -derivedDataPath /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/62b6dcd2-247f-4111-98ef-3847c8914676/scratchpad/dd build)",
171
- "Bash(\"/Users/sophia/Workspace/momo-glab/momo-agent-flows/momo-agent/scripts/repo.sh\" prep *)",
172
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -configuration Debug -destination id=1E6F9A79-5E64-4590-BEA2-828D75D99393 -derivedDataPath /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/62b6dcd2-247f-4111-98ef-3847c8914676/scratchpad/dd build)",
173
- "Bash(find /private/tmp/claude-503/-Users-sophia-Workspace-momo-momo-native-kits/62b6dcd2-247f-4111-98ef-3847c8914676/scratchpad/dd/Build/Products -maxdepth 2 -name *.app)",
174
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -configuration Debug -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build/dd build)",
175
- "Bash(xcodebuild -workspace iosApp.xcworkspace -scheme iosApp -configuration Debug -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build/dd ARCHS=arm64 ONLY_ACTIVE_ARCH=YES build)",
176
- "Bash(./gradlew :compose:generateDummyFramework)",
177
- "Bash(break)",
178
- "Bash(\"/Users/sophia/Workspace/momo-glab/momo-agent-flows/momo-agent/scripts/gitlab.sh\" mr-view *)",
179
- "Bash(\"/Users/sophia/Workspace/momo-glab/momo-agent-flows/momo-agent/scripts/gitlab.sh\" mr-discussions *)",
180
- "Bash(command -v glab)",
181
- "Bash(glab --version)",
182
- "Bash(/Users/sophia/Workspace/momo-glab/momo-agent-flows/momo-agent/scripts/jira.sh transitions *)"
11
+ "Bash(./gradlew :sample:androidApp:compileDebugKotlin -q)"
183
12
  ]
184
13
  }
185
14
  }
package/CLAUDE.md CHANGED
@@ -41,9 +41,11 @@ Publishing is automated (`publish.sh` + GitLab CI on `[ci build]` / `main`). Do
41
41
 
42
42
  - **Entry point:** wrap content in `NavigationContainer(...)` from `navigation/`. It builds the `Navigator`, takes a host-supplied `Localize` (falls back to an empty one), and provides the CompositionLocals below. **Do not use** `ApplicationContainer` (`application/NavigationContainer.kt`) — deprecated and does **not** wire `LocalLocalize` / `LocalNavigator` / `LocalMaxApi`.
43
43
  - **Configuration flows via CompositionLocals**, not params. Public ones: `AppTheme`, `AppStatusBar`, `AppNavigationBar` (`const/Theme.kt`); `ApplicationContext`, `AppConfig`, `AppLanguage`, `LocalLocalize` (`application/`); `LocalNavigator`, `LocalMaxApi` (`navigation/`). Read with `X.current`.
44
+ - **Design-system config** (`trustBanner`, `headerBar`, `headerGradient`): the host seeds `KitDesignSystemConfig.update(...)` once (same pattern as `KitFontScale`); `NavigationContainer` provides it as `LocalDesignSystemConfig` (param `designSystemConfig` → parent → global) and applies `headerBar` as the header image when the theme has none.
44
45
  - **Platform code** goes through `expect`/`actual` in `platform/` — never reference Android/iOS APIs from `commonMain` directly.
45
46
  - **Native bridge:** `IMaxApi` (`vn.momo.maxapi`, exposed as `LocalMaxApi`) is the host-app bridge (dismiss, tracking, device info, language).
46
47
  - Navigation uses a runtime `DynamicScreenRegistry`; overlays (modal/bottom-sheet/snackbar) go through `Navigator` + `OverplayComponentRegistry`.
48
+ - **iOS swipe-back:** the host owns the only edge-pan recogniser and replays it through `HostBackGestureBridge` (`navigation/HostBackGestureBridge.kt`; the kit framework is never exported, so the host reaches it through its own Koin-provided facade): `checkCanPop` / `canPopInner` / `pop` route the back into the kit stack, `started` / `progressed` / `completed` / `cancelled` seek the NavHost transition, `shouldUseFloatingArrowBack` is set by bottom tabs. `NavigationContainer` attaches itself automatically (`AttachHostBackGesture`, iOS only, detached by identity on dispose) — hosts need no wrapper and no `setNavigator`. `maxApi` is a required parameter of `NavigationContainer` — every container, nested or root, is handed its host bridge explicitly.
47
49
 
48
50
  ## i18n / Localize (port of RN `Localize`)
49
51
 
@@ -40,7 +40,7 @@ kotlin {
40
40
  }
41
41
 
42
42
  cocoapods {
43
- version = "0.164.1-beta.9-debug"
43
+ version = "0.164.1-headerconfig.1-debug"
44
44
  summary = "IOS Shared module"
45
45
  homepage = "https://momo.vn"
46
46
  ios.deploymentTarget = "15.0"
@@ -1,6 +1,6 @@
1
1
  Pod::Spec.new do |spec|
2
2
  spec.name = 'compose'
3
- spec.version = '0.164.1-beta.9-debug'
3
+ spec.version = '0.164.1-headerconfig.1-debug'
4
4
  spec.homepage = 'https://momo.vn'
5
5
  spec.source = { :http=> ''}
6
6
  spec.authors = ''
@@ -5,8 +5,8 @@ import androidx.compose.runtime.State
5
5
  import androidx.compose.runtime.mutableStateOf
6
6
  import androidx.compose.runtime.remember
7
7
 
8
- // No passive observer exists at androidx.activity 1.10.x — a second enabled callback would steal
9
- // the gesture from NavHost. Android's system back gesture emits its own platform haptic on commit.
10
- // Revisit if androidx.activity >= 1.12 is adopted; this then becomes a copy of the iOS actual.
8
+ // No passive observer at androidx.activity 1.10.x; a second callback would steal the gesture.
11
9
  @Composable
12
10
  actual fun rememberBackGestureProgress(): State<Float?> = remember { mutableStateOf(null) }
11
+
12
+ actual fun reportFloatingArrowBack(shouldUse: Boolean) = Unit
@@ -30,6 +30,7 @@ import com.airbnb.lottie.compose.rememberLottieDynamicProperties
30
30
  import com.airbnb.lottie.compose.rememberLottieDynamicProperty
31
31
  import vn.momo.kits.const.AppNavigationBar
32
32
  import vn.momo.kits.const.AppStatusBar
33
+ import vn.momo.kits.navigation.Navigator
33
34
  import vn.momo.kits.utils.readJson
34
35
  import androidx.activity.compose.BackHandler as AndroidBackHandler
35
36
 
@@ -64,7 +65,7 @@ actual fun BackHandler(enabled: Boolean, onBack: () -> Unit) {
64
65
  }
65
66
 
66
67
  @Composable
67
- actual fun ProvideNavigationEventDispatcherOwner(content: @Composable () -> Unit) {
68
+ actual fun ProvideNavigationEventDispatcherOwner(navigator: Navigator, content: @Composable () -> Unit) {
68
69
  content()
69
70
  }
70
71
 
@@ -1,6 +1,9 @@
1
1
  package vn.momo.kits.application
2
2
 
3
3
  import androidx.compose.runtime.Immutable
4
+ import androidx.compose.runtime.getValue
5
+ import androidx.compose.runtime.mutableStateOf
6
+ import androidx.compose.runtime.setValue
4
7
  import androidx.compose.runtime.staticCompositionLocalOf
5
8
  import vn.momo.kits.components.TrustBannerData
6
9
 
@@ -16,6 +19,17 @@ data class DesignSystemConfig(
16
19
  val headerGradient: String? = null,
17
20
  )
18
21
 
22
+ // App-wide holder seeded by the host (same pattern as KitFontScale), so direct NavigationContainer
23
+ // callers get the config without passing it. Snapshot state: a config fetched after first frame recomposes.
24
+ object KitDesignSystemConfig {
25
+ var config by mutableStateOf<DesignSystemConfig?>(null)
26
+ private set
27
+
28
+ fun update(config: DesignSystemConfig?) {
29
+ this.config = config
30
+ }
31
+ }
32
+
19
33
  @Immutable
20
34
  data class MiniAppContext(
21
35
  val appIcon: String = "",
@@ -102,5 +116,9 @@ val LocalComponentInformation = staticCompositionLocalOf<ComponentInformation?>
102
116
  null
103
117
  }
104
118
 
119
+ val LocalDesignSystemConfig = staticCompositionLocalOf<DesignSystemConfig?> {
120
+ null
121
+ }
122
+
105
123
  @Deprecated("Max font scale is fixed at MAX_FONT_SCALE (1.5); this CompositionLocal is no longer read.")
106
124
  val ScaleSizeMaxRate = staticCompositionLocalOf<Float?> { null }
@@ -40,9 +40,11 @@ import vn.momo.kits.const.AppTheme
40
40
  import vn.momo.kits.const.Colors
41
41
  import vn.momo.kits.const.Spacing
42
42
  import vn.momo.kits.const.Typography
43
+ import vn.momo.kits.const.getFontFamily
43
44
  import vn.momo.kits.modifier.kitsAutomationId
44
45
  import vn.momo.kits.modifier.noFeedbackClickable
45
46
  import vn.momo.kits.modifier.setAutomationId
47
+ import vn.momo.kits.navigation.component.HEADER_FONT_FAMILY
46
48
  import vn.momo.kits.navigation.component.HEADER_HEIGHT
47
49
  import vn.momo.kits.utils.getAppStatusBarHeight
48
50
  import kotlin.math.max
@@ -360,6 +362,7 @@ private fun LiteScreenLayout(
360
362
  text = title,
361
363
  color = headerColor.tintIconColor,
362
364
  style = titleStyle,
365
+ fontFamily = HEADER_FONT_FAMILY,
363
366
  modifier = titleModifier,
364
367
  maxLines = 1,
365
368
  overflow = TextOverflow.Ellipsis
@@ -688,9 +691,11 @@ private fun LiteInputSearch(
688
691
  inputSearchProps.isShowBtnText && !inputSearchProps.btnText.isNullOrEmpty()
689
692
  }
690
693
  }
691
- val inputFieldStyle = remember(theme) {
694
+ val inputFieldFontFamily = getFontFamily(theme.font, Typography.bodyDefaultRegular.fontWeight)
695
+ val inputFieldStyle = remember(theme, inputFieldFontFamily) {
692
696
  Typography.bodyDefaultRegular.copy(
693
697
  color = theme.colors.text.default,
698
+ fontFamily = inputFieldFontFamily,
694
699
  )
695
700
  }
696
701
 
@@ -1,5 +1,6 @@
1
1
  package vn.momo.kits.components
2
2
 
3
+ import androidx.compose.foundation.Canvas
3
4
  import androidx.compose.foundation.background
4
5
  import androidx.compose.foundation.layout.Box
5
6
  import androidx.compose.foundation.layout.fillMaxWidth
@@ -7,17 +8,42 @@ import androidx.compose.foundation.layout.height
7
8
  import androidx.compose.foundation.layout.padding
8
9
  import androidx.compose.runtime.Composable
9
10
  import androidx.compose.ui.Modifier
11
+ import androidx.compose.ui.geometry.Offset
12
+ import androidx.compose.ui.graphics.PathEffect
13
+ import androidx.compose.ui.graphics.StrokeCap
10
14
  import androidx.compose.ui.unit.dp
11
15
  import vn.momo.kits.const.AppTheme
12
16
  import vn.momo.kits.const.Spacing
13
17
 
18
+ enum class DividerType { DEFAULT, DASH }
19
+
14
20
  @Composable
15
- fun Divider() {
21
+ fun Divider(useMargin: Boolean = true, type: DividerType = DividerType.DEFAULT) {
22
+ val color = AppTheme.current.colors.border.default
23
+ val margin = if (useMargin) Spacing.XS else 0.dp
24
+ if (type == DividerType.DASH) {
25
+ Canvas(
26
+ modifier = Modifier
27
+ .fillMaxWidth()
28
+ .padding(vertical = margin)
29
+ .height(1.dp),
30
+ ) {
31
+ drawLine(
32
+ color = color,
33
+ start = Offset(0f, size.height / 2f),
34
+ end = Offset(size.width, size.height / 2f),
35
+ strokeWidth = size.height,
36
+ cap = StrokeCap.Round,
37
+ pathEffect = PathEffect.dashPathEffect(floatArrayOf(4.dp.toPx(), 4.dp.toPx())),
38
+ )
39
+ }
40
+ return
41
+ }
16
42
  Box(
17
43
  modifier = Modifier
18
44
  .fillMaxWidth()
45
+ .padding(vertical = margin)
19
46
  .height(1.dp)
20
- .background(color = AppTheme.current.colors.border.default)
21
- .padding(vertical = Spacing.XS)
47
+ .background(color = color),
22
48
  )
23
- }
49
+ }
@@ -266,7 +266,7 @@ fun Input(
266
266
  )
267
267
  }
268
268
 
269
- val passwordFontFamily = getFontFamily("SFProText", FontWeight.Normal)
269
+ val passwordFontFamily = getFontFamily(AppTheme.current.font, FontWeight.Normal)
270
270
  val passwordFontSize = scaleSize(24.sp)
271
271
  val visualTransformation = remember(secureTextEntry, inputState.passHidden, passwordFontFamily) {
272
272
  if (secureTextEntry && !inputState.passHidden)
@@ -44,6 +44,7 @@ import vn.momo.kits.const.Spacing
44
44
  import vn.momo.kits.application.IsShowBaseLineDebug
45
45
  import vn.momo.kits.const.Colors
46
46
  import vn.momo.kits.const.Typography
47
+ import vn.momo.kits.const.getFontFamily
47
48
  import vn.momo.kits.modifier.conditional
48
49
  import vn.momo.kits.utils.formatNumberToMoney
49
50
 
@@ -122,7 +123,8 @@ fun InputMoney(
122
123
  color = textColor,
123
124
  fontSize = 20.sp,
124
125
  lineHeight = 24.sp,
125
- fontWeight = fontWeight.value
126
+ fontWeight = fontWeight.value,
127
+ fontFamily = getFontFamily(AppTheme.current.font, fontWeight.value)
126
128
  ),
127
129
  visualTransformation = CustomConverter(),
128
130
  keyboardOptions = KeyboardOptions.Default.copy(keyboardType = keyboardType),
@@ -21,6 +21,7 @@ import androidx.compose.ui.unit.Dp
21
21
  import androidx.compose.ui.unit.dp
22
22
  import vn.momo.kits.application.IsShowBaseLineDebug
23
23
  import vn.momo.kits.const.*
24
+ import vn.momo.kits.const.getFontFamily
24
25
  import vn.momo.kits.modifier.conditional
25
26
  import vn.momo.kits.modifier.setAutomationId
26
27
 
@@ -97,7 +98,13 @@ fun InputPhoneNumber(
97
98
  }
98
99
 
99
100
  val (textColor, placeholderColor, iconTintColor) = colors
100
- val textStyle = scaleSize(size.values.textStyle.copy(color = textColor))
101
+ val baseTextStyle = size.values.textStyle
102
+ val textStyle = scaleSize(
103
+ baseTextStyle.copy(
104
+ color = textColor,
105
+ fontFamily = getFontFamily(AppTheme.current.font, baseTextStyle.fontWeight)
106
+ )
107
+ )
101
108
 
102
109
 
103
110
  Column(modifier = modifier
@@ -42,6 +42,7 @@ import vn.momo.kits.const.Radius
42
42
  import vn.momo.kits.const.Spacing
43
43
  import vn.momo.kits.application.IsShowBaseLineDebug
44
44
  import vn.momo.kits.const.Typography
45
+ import vn.momo.kits.const.getFontFamily
45
46
  import vn.momo.kits.const.scaleSize
46
47
  import vn.momo.kits.modifier.conditional
47
48
  import vn.momo.kits.utils.ifTrue
@@ -131,19 +132,23 @@ fun InputSearch(
131
132
  val fontSize = 14.sp
132
133
  val scaleFontSize = scaleSize(fontSize)
133
134
 
134
- val textStyle = remember(textColor, inputSearchProps.fontWeight.value) {
135
+ val fontFamily = getFontFamily(AppTheme.current.font, inputSearchProps.fontWeight.value)
136
+
137
+ val textStyle = remember(textColor, inputSearchProps.fontWeight.value, fontFamily) {
135
138
  TextStyle(
136
139
  color = textColor,
137
140
  fontSize = scaleFontSize,
138
- fontWeight = inputSearchProps.fontWeight.value
141
+ fontWeight = inputSearchProps.fontWeight.value,
142
+ fontFamily = fontFamily
139
143
  )
140
144
  }
141
145
 
142
- val placeHolderStyle = remember(textColor, inputSearchProps.fontWeight.value) {
146
+ val placeHolderStyle = remember(textColor, inputSearchProps.fontWeight.value, fontFamily) {
143
147
  TextStyle(
144
148
  color = textColor,
145
149
  fontSize = fontSize,
146
- fontWeight = inputSearchProps.fontWeight.value
150
+ fontWeight = inputSearchProps.fontWeight.value,
151
+ fontFamily = fontFamily
147
152
  )
148
153
  }
149
154
 
@@ -21,6 +21,8 @@ import androidx.compose.ui.unit.sp
21
21
  import androidx.compose.ui.zIndex
22
22
  import vn.momo.kits.application.IsShowBaseLineDebug
23
23
  import vn.momo.kits.const.*
24
+ import vn.momo.kits.const.AppTheme
25
+ import vn.momo.kits.const.getFontFamily
24
26
  import vn.momo.kits.modifier.InternalApi
25
27
  import vn.momo.kits.modifier.conditional
26
28
 
@@ -75,7 +77,8 @@ fun InputTextArea(
75
77
  color = textColor,
76
78
  fontSize = scaleFontSize,
77
79
  lineHeight = scaleLineHeight,
78
- fontWeight = fontWeight.value
80
+ fontWeight = fontWeight.value,
81
+ fontFamily = getFontFamily(AppTheme.current.font, fontWeight.value)
79
82
  ),
80
83
  keyboardOptions = KeyboardOptions.Default.copy(keyboardType = keyboardType),
81
84
  modifier = Modifier.height(scaleHeight).onFocusChanged {
@@ -12,6 +12,7 @@ import androidx.compose.ui.Alignment
12
12
  import androidx.compose.ui.Modifier
13
13
  import androidx.compose.ui.graphics.Color
14
14
  import androidx.compose.ui.text.TextStyle
15
+ import androidx.compose.ui.text.font.FontWeight
15
16
  import androidx.compose.ui.text.input.KeyboardType
16
17
  import androidx.compose.ui.text.style.TextAlign
17
18
  import androidx.compose.ui.unit.Dp
@@ -19,6 +20,7 @@ import androidx.compose.ui.unit.dp
19
20
  import androidx.compose.ui.unit.sp
20
21
  import vn.momo.kits.application.IsShowBaseLineDebug
21
22
  import vn.momo.kits.const.*
23
+ import vn.momo.kits.const.getFontFamily
22
24
  import vn.momo.kits.modifier.activeOpacityClickable
23
25
  import vn.momo.kits.modifier.conditional
24
26
 
@@ -108,6 +110,7 @@ private fun StepperNumberView(
108
110
  color = textColor,
109
111
  fontSize = scaledFontSize,
110
112
  textAlign = TextAlign.Center,
113
+ fontFamily = getFontFamily(theme.font, FontWeight.Normal),
111
114
  )
112
115
 
113
116
  Box(