@momo-kits/native-kits 0.163.1-beta.8-debug → 0.163.1-beta.9-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 (220) hide show
  1. package/CLAUDE.md +1 -1
  2. package/compose/build.gradle.kts +1 -1
  3. package/compose/compose.podspec +1 -1
  4. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +7 -0
  5. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +30 -3
  6. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +5 -0
  7. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +1 -1
  8. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +3 -0
  9. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +56 -0
  10. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +4 -0
  11. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitFontScale.kt +22 -0
  12. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +8 -2
  13. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +63 -0
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +32 -19
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +49 -0
  16. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +1 -1
  17. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +1 -1
  18. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +3 -1
  19. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +93 -75
  20. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +26 -7
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +3 -1
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +23 -2
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +9 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +11 -0
  25. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +66 -0
  26. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +26 -3
  27. package/gradle.properties +1 -1
  28. package/ios/Application/ApplicationEnvironment.swift +15 -2
  29. package/ios/Application/Components.swift +50 -44
  30. package/ios/Application/FloatingButton.swift +10 -9
  31. package/ios/Application/HeaderRight.swift +79 -45
  32. package/ios/Application/Localize.swift +277 -0
  33. package/ios/Application/MaxApi.swift +18 -0
  34. package/ios/Application/Navigation/BottomTab/BottomTab.swift +104 -0
  35. package/ios/Application/Navigation/BottomTab/BottomTabBar.swift +215 -0
  36. package/ios/Application/Navigation/BottomTab/CurvedContainer.swift +65 -0
  37. package/ios/Application/Navigation/HeaderBackProps.swift +66 -0
  38. package/ios/Application/Navigation/HeaderTitle.swift +57 -0
  39. package/ios/Application/Navigation/HeaderUser.swift +209 -0
  40. package/ios/Application/Navigation/NavigationContainer.swift +200 -0
  41. package/ios/Application/Navigation/NavigationOptions.swift +109 -0
  42. package/ios/Application/Navigation/Navigator.swift +385 -0
  43. package/ios/Application/Navigation/Overplay/BottomSheet.swift +256 -0
  44. package/ios/Application/Navigation/Overplay/ModalScreen.swift +74 -0
  45. package/ios/Application/Navigation/Overplay/SnackBar.swift +144 -0
  46. package/ios/Application/Navigation/Tracking/ScreenTracker.swift +117 -0
  47. package/ios/Application/Navigation/component/Header.swift +178 -0
  48. package/ios/Application/Navigation/component/HeaderBackground.swift +83 -0
  49. package/ios/Application/Navigation/component/HeaderColor.swift +65 -0
  50. package/ios/Application/Screen.swift +2 -1
  51. package/ios/Application/StackScreen.swift +501 -0
  52. package/ios/Avatar/Avatar.swift +193 -0
  53. package/ios/Badge/Badge.swift +11 -14
  54. package/ios/Badge/BadgeRibbon.swift +92 -21
  55. package/ios/BaselineView/BaselineView.swift +163 -0
  56. package/ios/Button/Button.swift +124 -29
  57. package/ios/Carousel/Carousel.swift +196 -0
  58. package/ios/Checkbox/Checkbox.swift +23 -28
  59. package/ios/Chip/Chip.swift +56 -33
  60. package/ios/Collapse/Collapse.swift +192 -0
  61. package/ios/Colors+Radius+Spacing/Colors.swift +20 -17
  62. package/ios/Colors+Radius+Spacing/Spacing.swift +3 -1
  63. package/ios/Colors+Radius+Spacing/Theme.swift +295 -0
  64. package/ios/DateTimePicker/DateTimePicker.swift +212 -0
  65. package/ios/DateTimePicker/DateTimePickerTypes.swift +55 -0
  66. package/ios/DateTimePicker/DateTimePickerUtils.swift +167 -0
  67. package/ios/DateTimePicker/WheelPicker.swift +165 -0
  68. package/ios/Divider/Divider.swift +16 -0
  69. package/ios/Extensions/ActiveOpacityButtonStyle.swift +14 -0
  70. package/ios/Extensions/Color++.swift +32 -0
  71. package/ios/Icon/Icon.swift +10 -1
  72. package/ios/IconButton/IconButton.swift +140 -0
  73. package/ios/Image/Image.swift +16 -3
  74. package/ios/Information/Information.swift +3 -1
  75. package/ios/Input/ErrorView.swift +3 -1
  76. package/ios/Input/Input.swift +72 -33
  77. package/ios/Input/InputPhoneNumber.swift +33 -21
  78. package/ios/Input/InputSearch.swift +107 -48
  79. package/ios/Input/InputTextArea.swift +134 -64
  80. package/ios/InputDropDown/InputDropDown.swift +201 -0
  81. package/ios/InputMoney/InputMoney.swift +347 -0
  82. package/ios/InputOTP/InputOTP.swift +210 -0
  83. package/ios/Loader/Loader.swift +113 -0
  84. package/ios/MoMoUIKits.podspec +5 -0
  85. package/ios/Pagination/PaginationDot.swift +61 -0
  86. package/ios/Pagination/PaginationNumber.swift +35 -0
  87. package/ios/Pagination/PaginationScroll.swift +101 -0
  88. package/ios/Pagination/PaginationWhiteDot.swift +37 -0
  89. package/ios/Popup/PopupDisplay.swift +11 -20
  90. package/ios/Popup/PopupInput.swift +2 -8
  91. package/ios/Popup/PopupNotify.swift +218 -0
  92. package/ios/Popup/PopupPromotion.swift +16 -8
  93. package/ios/ProgressInfo/ProgressInfo.swift +296 -0
  94. package/ios/Radio/Radio.swift +69 -0
  95. package/ios/Rating/Rating.swift +82 -0
  96. package/ios/Resources/MoMoUIKitsColors.xcassets/AccentColor.colorset/Contents.json +11 -0
  97. package/ios/Resources/MoMoUIKitsColors.xcassets/Background.colorset/Contents.json +38 -0
  98. package/ios/Resources/MoMoUIKitsColors.xcassets/Border.colorset/Contents.json +38 -0
  99. package/ios/Resources/MoMoUIKitsColors.xcassets/Card.colorset/Contents.json +38 -0
  100. package/ios/Resources/MoMoUIKitsColors.xcassets/Contents.json +6 -0
  101. package/ios/Resources/MoMoUIKitsColors.xcassets/Error.colorset/Contents.json +38 -0
  102. package/ios/Resources/MoMoUIKitsColors.xcassets/Primary.colorset/Contents.json +38 -0
  103. package/ios/Resources/MoMoUIKitsColors.xcassets/PrimaryDark.colorset/Contents.json +38 -0
  104. package/ios/Resources/MoMoUIKitsColors.xcassets/PrimaryLight.colorset/Contents.json +38 -0
  105. package/ios/Resources/MoMoUIKitsColors.xcassets/Secondary.colorset/Contents.json +38 -0
  106. package/ios/Resources/MoMoUIKitsColors.xcassets/Success.colorset/Contents.json +38 -0
  107. package/ios/Resources/MoMoUIKitsColors.xcassets/Text.colorset/Contents.json +38 -0
  108. package/ios/Resources/MoMoUIKitsColors.xcassets/TextSecondary.colorset/Contents.json +38 -0
  109. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/Contents.json +9 -0
  110. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-default.colorset/Contents.json +38 -0
  111. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-disable.colorset/Contents.json +38 -0
  112. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-pressed.colorset/Contents.json +38 -0
  113. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-selected.colorset/Contents.json +38 -0
  114. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-surface.colorset/Contents.json +38 -0
  115. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-tonal.colorset/Contents.json +38 -0
  116. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-default.colorset/Contents.json +38 -0
  117. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-disable.colorset/Contents.json +38 -0
  118. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/gradient.colorset/Contents.json +38 -0
  119. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/primary.colorset/Contents.json +38 -0
  120. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/secondary.colorset/Contents.json +38 -0
  121. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-container.colorset/Contents.json +38 -0
  122. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-primary.colorset/Contents.json +38 -0
  123. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-secondary.colorset/Contents.json +38 -0
  124. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-default.colorset/Contents.json +38 -0
  125. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-disable.colorset/Contents.json +38 -0
  126. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-hint.colorset/Contents.json +38 -0
  127. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-secondary.colorset/Contents.json +38 -0
  128. package/ios/Resources/MoMoUIKitsColors.xcassets/Warning.colorset/Contents.json +38 -0
  129. package/ios/Skeleton/Skeleton.swift +99 -0
  130. package/ios/Slider/Slider.swift +237 -0
  131. package/ios/Stepper/Stepper.swift +220 -0
  132. package/ios/Steps/Steps.swift +467 -0
  133. package/ios/SuggestAction/SuggestAction.swift +99 -0
  134. package/ios/Swipeable/SwipeCell.swift +187 -0
  135. package/ios/Swipeable/SwipeCellModel.swift +21 -0
  136. package/ios/Switch/Switch.swift +53 -28
  137. package/ios/TabView/TabView.swift +534 -0
  138. package/ios/Tag/Tag.swift +98 -0
  139. package/ios/Template/TrustBanner/TrustBanner.swift +6 -7
  140. package/ios/Title/Title.swift +269 -0
  141. package/ios/Tooltip/Tooltip.swift +485 -0
  142. package/ios/Typography/FontScaleStore.swift +19 -0
  143. package/ios/Typography/Text.swift +79 -5
  144. package/ios/Typography/Typography.swift +3 -0
  145. package/ios/Uploader/Uploader.swift +174 -0
  146. package/ios/native-kits.podspec +61 -8
  147. package/ios-demo/MoMoUIKitsDemo.podspec +20 -0
  148. package/ios-demo/README.md +120 -0
  149. package/ios-demo/Resources/dot_loading.json +558 -0
  150. package/ios-demo/Resources/icon.json +4052 -0
  151. package/ios-demo/Resources/lottie_circle_loader.json +1 -0
  152. package/ios-demo/Sources/MoMoUIKitsDemo/DemoScaffold.swift +48 -0
  153. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsBadgeDemoView.swift +25 -0
  154. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsButtonDemoView.swift +26 -0
  155. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsCheckboxDemoView.swift +19 -0
  156. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsChipDemoView.swift +33 -0
  157. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsInputDemoView.swift +48 -0
  158. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsPopupDemoView.swift +21 -0
  159. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsRadioDemoView.swift +17 -0
  160. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsTypographyDemoView.swift +28 -0
  161. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoContext.swift +31 -0
  162. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoFactory.swift +24 -0
  163. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AnimatedHeaderDemo.swift +110 -0
  164. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AvatarDemo.swift +93 -0
  165. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BadgeDemo.swift +269 -0
  166. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BaselineView.swift +117 -0
  167. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BottomTabDemo.swift +89 -0
  168. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ButtonDemo.swift +100 -0
  169. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CarouselDemo.swift +126 -0
  170. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CheckboxDemo.swift +63 -0
  171. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ChipDemo.swift +20 -0
  172. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CollapseDemo.swift +93 -0
  173. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ContentView.swift +107 -0
  174. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DateTimePickerDemo.swift +124 -0
  175. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DividerDemo.swift +14 -0
  176. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/HeaderUserDemo.swift +49 -0
  177. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/Home.swift +279 -0
  178. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IconButtonDemo.swift +58 -0
  179. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ImageDemo.swift +78 -0
  180. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InformationDemo.swift +138 -0
  181. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDemo.swift +111 -0
  182. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDropDownDemo.swift +136 -0
  183. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputMoneyDemo.swift +107 -0
  184. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputOTPDemo.swift +73 -0
  185. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputPhoneNumberDemo.swift +100 -0
  186. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputSearchDemo.swift +32 -0
  187. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputTextAreaDemo.swift +57 -0
  188. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LoaderDemo.swift +70 -0
  189. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LocalizeDemo.swift +188 -0
  190. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift +229 -0
  191. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PaginationDemo.swift +72 -0
  192. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupDisplayDemo.swift +175 -0
  193. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupNotifyDemo.swift +121 -0
  194. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupPromotionDemo.swift +76 -0
  195. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ProgressInfoDemo.swift +89 -0
  196. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RadioDemo.swift +32 -0
  197. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RatingDemo.swift +56 -0
  198. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SkeletonDemo.swift +32 -0
  199. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SliderDemo.swift +150 -0
  200. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SnackBarDemo.swift +138 -0
  201. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepperDemo.swift +103 -0
  202. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepsDemo.swift +94 -0
  203. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SuggestActionDemo.swift +79 -0
  204. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwipeDemo.swift +152 -0
  205. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwitchDemo.swift +33 -0
  206. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TabViewDemo.swift +190 -0
  207. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TagDemo.swift +34 -0
  208. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ThemeDemo.swift +182 -0
  209. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TitleDemo.swift +109 -0
  210. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TooltipDemo.swift +187 -0
  211. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TypographyDemo.swift +87 -0
  212. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/UploaderDemo.swift +131 -0
  213. package/ios-demo/Sources/MoMoUIKitsDemo/SwiftUIDemoBrowserView.swift +51 -0
  214. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoModels.swift +15 -0
  215. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoRegistry.swift +73 -0
  216. package/local.properties +2 -2
  217. package/package.json +1 -1
  218. package/publish.sh +53 -0
  219. package/scripts/gen-ios-color.mjs +136 -0
  220. package/.claude/settings.local.json +0 -62
@@ -0,0 +1,51 @@
1
+ import SwiftUI
2
+ import MoMoUIKits
3
+
4
+ struct SwiftUIDemoBrowserView: View {
5
+ let context: MoMoUIKitsDemoContext
6
+ let onOpenCompose: () -> Void
7
+ @State private var searchText = ""
8
+
9
+ var body: some View {
10
+ Group {
11
+ if #available(iOS 16.0, *) {
12
+ HomeView(
13
+ onOpenCompose: onOpenCompose,
14
+ applicationContext: context.miniAppContext
15
+ )
16
+ } else {
17
+ fallbackBrowser
18
+ }
19
+ }
20
+ .environment(\.appTheme, defaultTheme)
21
+ }
22
+
23
+ private var fallbackBrowser: some View {
24
+ NavigationView {
25
+ List {
26
+ ForEach(ScreenUsages) { item in
27
+ NavigationLink(destination: item.destination) {
28
+ MomoText(item.title, typography: .headerDefaultBold)
29
+ .padding(.vertical, 8)
30
+ }
31
+ }
32
+ }
33
+ .listStyle(.insetGrouped)
34
+ .navigationTitle("UI Kits SwiftUI")
35
+ }
36
+ .navigationViewStyle(.stack)
37
+ }
38
+
39
+ private var filteredSections: [UIKitsDemoSection] {
40
+ guard !searchText.isEmpty else { return UIKitsDemoRegistry.sections }
41
+
42
+ return UIKitsDemoRegistry.sections.compactMap { section in
43
+ let items = section.items.filter { item in
44
+ item.title.localizedCaseInsensitiveContains(searchText)
45
+ || item.subtitle.localizedCaseInsensitiveContains(searchText)
46
+ }
47
+ guard !items.isEmpty else { return nil }
48
+ return UIKitsDemoSection(id: section.id, title: section.title, items: items)
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,15 @@
1
+ import SwiftUI
2
+
3
+ struct UIKitsDemoItem: Identifiable {
4
+ let id: String
5
+ let title: String
6
+ let subtitle: String
7
+ let destination: AnyView
8
+ }
9
+
10
+ struct UIKitsDemoSection: Identifiable {
11
+ let id: String
12
+ let title: String
13
+ let items: [UIKitsDemoItem]
14
+ }
15
+
@@ -0,0 +1,73 @@
1
+ import SwiftUI
2
+
3
+ enum UIKitsDemoRegistry {
4
+ static let sections: [UIKitsDemoSection] = [
5
+ UIKitsDemoSection(
6
+ id: "components",
7
+ title: "Components",
8
+ items: [
9
+ UIKitsDemoItem(
10
+ id: "typography",
11
+ title: "Typography",
12
+ subtitle: "Text styles and semantic colors",
13
+ destination: AnyView(UIKitsTypographyDemoView())
14
+ ),
15
+ UIKitsDemoItem(
16
+ id: "button",
17
+ title: "Button",
18
+ subtitle: "Primary, secondary, outline, loading",
19
+ destination: AnyView(UIKitsButtonDemoView())
20
+ ),
21
+ UIKitsDemoItem(
22
+ id: "badge",
23
+ title: "Badge",
24
+ subtitle: "Numeric and label badges",
25
+ destination: AnyView(UIKitsBadgeDemoView())
26
+ ),
27
+ UIKitsDemoItem(
28
+ id: "chip",
29
+ title: "Chip",
30
+ subtitle: "Selectable labels and compact filters",
31
+ destination: AnyView(UIKitsChipDemoView())
32
+ )
33
+ ]
34
+ ),
35
+ UIKitsDemoSection(
36
+ id: "inputs",
37
+ title: "Inputs",
38
+ items: [
39
+ UIKitsDemoItem(
40
+ id: "input",
41
+ title: "Input",
42
+ subtitle: "Text, error, password, disabled states",
43
+ destination: AnyView(UIKitsInputDemoView())
44
+ ),
45
+ UIKitsDemoItem(
46
+ id: "checkbox",
47
+ title: "Checkbox",
48
+ subtitle: "Checked, indeterminate, disabled",
49
+ destination: AnyView(UIKitsCheckboxDemoView())
50
+ ),
51
+ UIKitsDemoItem(
52
+ id: "radio",
53
+ title: "Radio",
54
+ subtitle: "Single choice controls",
55
+ destination: AnyView(UIKitsRadioDemoView())
56
+ )
57
+ ]
58
+ ),
59
+ UIKitsDemoSection(
60
+ id: "feedback",
61
+ title: "Feedback",
62
+ items: [
63
+ UIKitsDemoItem(
64
+ id: "popup",
65
+ title: "Popup Notify",
66
+ subtitle: "Notification popup content and actions",
67
+ destination: AnyView(UIKitsPopupDemoView())
68
+ )
69
+ ]
70
+ )
71
+ ]
72
+ }
73
+
package/local.properties CHANGED
@@ -4,5 +4,5 @@
4
4
  # Location of the SDK. This is only used by Gradle.
5
5
  # For customization when using a Version Control System, please read the
6
6
  # header note.
7
- #Tue Jun 02 17:05:32 ICT 2026
8
- sdk.dir=/Users/sophia/Library/Android/sdk
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.163.1-beta.8-debug",
3
+ "version": "0.163.1-beta.9-debug",
4
4
  "private": false,
5
5
  "dependencies": {},
6
6
  "devDependencies": {},
package/publish.sh CHANGED
@@ -76,6 +76,54 @@ if [ "$MODE" == "beta" ] && [ "$BUMP_MINOR" = true ]; then
76
76
  echo "⚠️ Note: --bump is ignored in beta mode (beta version comes from package.json)."
77
77
  fi
78
78
 
79
+ PODSPEC_VERSION_FILES=(
80
+ "ios/native-kits.podspec"
81
+ "ios-demo/MoMoUIKitsDemo.podspec"
82
+ )
83
+
84
+ PODSPEC_DEBUG_VERSION_FILES=(
85
+ "compose/compose.podspec"
86
+ )
87
+
88
+ update_podspec_file_version() {
89
+ local PODSPEC_FILE="$1"
90
+ local PODSPEC_VERSION="$2"
91
+
92
+ if [ ! -f "$PODSPEC_FILE" ]; then
93
+ echo " ⚠️ Skipped missing podspec: $PODSPEC_FILE"
94
+ return
95
+ fi
96
+
97
+ CURRENT_PODSPEC_VERSION=$(grep -E "^[[:space:]]*[A-Za-z_]+\.version[[:space:]]*=" "$PODSPEC_FILE" | head -n 1 | sed -E "s/.*['\"]([^'\"]+)['\"].*/\1/")
98
+
99
+ if [[ "$OSTYPE" == "darwin"* ]]; then
100
+ sed -i '' -E "s/^([[:space:]]*[A-Za-z_]+\.version[[:space:]]*=[[:space:]]*)['\"][^'\"]+['\"]/\1'$PODSPEC_VERSION'/" "$PODSPEC_FILE"
101
+ else
102
+ sed -i -E "s/^([[:space:]]*[A-Za-z_]+\.version[[:space:]]*=[[:space:]]*)['\"][^'\"]+['\"]/\1'$PODSPEC_VERSION'/" "$PODSPEC_FILE"
103
+ fi
104
+
105
+ UPDATED_PODSPEC_VERSION=$(grep -E "^[[:space:]]*[A-Za-z_]+\.version[[:space:]]*=" "$PODSPEC_FILE" | head -n 1 | sed -E "s/.*['\"]([^'\"]+)['\"].*/\1/")
106
+
107
+ if [ "$UPDATED_PODSPEC_VERSION" != "$PODSPEC_VERSION" ]; then
108
+ echo "❌ Error: Failed to update $PODSPEC_FILE to version $PODSPEC_VERSION"
109
+ exit 1
110
+ fi
111
+
112
+ echo " $PODSPEC_FILE version updated: $CURRENT_PODSPEC_VERSION → $UPDATED_PODSPEC_VERSION"
113
+ }
114
+
115
+ update_podspec_versions() {
116
+ echo "📝 Updating podspec versions..."
117
+
118
+ for PODSPEC_FILE in "${PODSPEC_VERSION_FILES[@]}"; do
119
+ update_podspec_file_version "$PODSPEC_FILE" "$VERSION"
120
+ done
121
+
122
+ for PODSPEC_FILE in "${PODSPEC_DEBUG_VERSION_FILES[@]}"; do
123
+ update_podspec_file_version "$PODSPEC_FILE" "${VERSION}-debug"
124
+ done
125
+ }
126
+
79
127
  # ============================================================================
80
128
  # PHASE 1: CHECK AND UPDATE VERSION
81
129
  # ============================================================================
@@ -219,6 +267,8 @@ phase_check_version() {
219
267
 
220
268
  echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
221
269
 
270
+ update_podspec_versions
271
+
222
272
  export VERSION="$VERSION"
223
273
  export NPM_TAG="$NPM_TAG"
224
274
 
@@ -251,6 +301,9 @@ phase_publish_maven() {
251
301
 
252
302
  # Temporarily remove composeResources and compose { resources { ... } } block
253
303
  echo "📦 Backing up sample/shared composeResources and build.gradle.kts..."
304
+ # mv into an existing dir nests instead of renaming, so a backup left behind by a
305
+ # crashed run must be cleared first or the restore below puts back the wrong tree.
306
+ rm -rf sample/shared/src/commonMain/composeResources.backup
254
307
  if [ -d "sample/shared/src/commonMain/composeResources" ]; then
255
308
  mv sample/shared/src/commonMain/composeResources sample/shared/src/commonMain/composeResources.backup
256
309
  fi
@@ -0,0 +1,136 @@
1
+ import { mkdirSync, writeFileSync } from "fs";
2
+ import { join } from "path";
3
+
4
+ // ── 1. Paste your resolved flat color values here ──────────────────────────
5
+ // (or import them if your script setup supports TS)
6
+
7
+ const lightTheme = {
8
+ // text group
9
+ "text-default": "#303233",
10
+ "text-secondary": "#484848",
11
+ "text-hint": "#727272",
12
+ "text-disable": "#c6c6c6",
13
+ // background group
14
+ "background-default": "#f2f2f6",
15
+ "background-surface": "#ffffff",
16
+ "background-tonal": "#fdeaf4",
17
+ "background-pressed": "#dfdfe6",
18
+ "background-selected": "#fef4fa",
19
+ "background-disable": "#ebebf2",
20
+ // border group
21
+ "border-default": "#e8e8e8",
22
+ "border-disable": "#f9f9f9",
23
+ // semantic
24
+ primary: "#eb2f96",
25
+ secondary: "#f7acd5",
26
+ gradient: "#FDCADE",
27
+ // success / warning / error / highlight / interactive ...
28
+ "success-primary": "#34c759",
29
+ "success-secondary": "#aee9bd",
30
+ "success-container": "#d6f4de",
31
+ // ... add remaining tokens
32
+ };
33
+
34
+ const darkTheme = {
35
+ "text-default": "#ffffff",
36
+ "text-secondary": "#b0b0b0",
37
+ "text-hint": "#727272",
38
+ "text-disable": "#505050",
39
+ "background-default": "#121212",
40
+ "background-surface": "#1e1e1e",
41
+ "background-tonal": "#fef4fa",
42
+ "background-pressed": "#1a1a1a",
43
+ "background-selected": "#fef8fc",
44
+ "background-disable": "#303030",
45
+ "border-default": "#2a2a2a",
46
+ "border-disable": "#242424",
47
+ primary: "#ed43a0",
48
+ secondary: "#fbd5ea",
49
+ gradient: "#FDCADE",
50
+ "success-primary": "#34c759",
51
+ "success-secondary": "#aee9bd",
52
+ "success-container": "#d6f4de",
53
+ // ... match all light keys
54
+ };
55
+
56
+ // ── 2. Helpers ─────────────────────────────────────────────────────────────
57
+
58
+ function hexToComponents(hex) {
59
+ const clean = hex.replace("#", "");
60
+ const full =
61
+ clean.length === 3
62
+ ? clean
63
+ .split("")
64
+ .map((c) => c + c)
65
+ .join("")
66
+ : clean;
67
+ return {
68
+ red: `0x${full.slice(0, 2).toUpperCase()}`,
69
+ green: `0x${full.slice(2, 4).toUpperCase()}`,
70
+ blue: `0x${full.slice(4, 6).toUpperCase()}`,
71
+ alpha: "1.000",
72
+ };
73
+ }
74
+
75
+ function makeColorEntry(hex, isDark) {
76
+ const entry = {
77
+ color: {
78
+ "color-space": "srgb",
79
+ components: hexToComponents(hex),
80
+ },
81
+ idiom: "universal",
82
+ };
83
+ if (isDark) {
84
+ entry.appearances = [{ appearance: "luminosity", value: "dark" }];
85
+ }
86
+ return entry;
87
+ }
88
+
89
+ function generateColorSet(name, lightHex, darkHex, outputDir) {
90
+ const colorsetDir = join(outputDir, `${name}.colorset`);
91
+ mkdirSync(colorsetDir, { recursive: true });
92
+
93
+ const contents = {
94
+ colors: [
95
+ makeColorEntry(lightHex, false),
96
+ ...(darkHex ? [makeColorEntry(darkHex, true)] : []),
97
+ ],
98
+ info: { author: "xcode", version: 1 },
99
+ };
100
+
101
+ writeFileSync(
102
+ join(colorsetDir, "Contents.json"),
103
+ JSON.stringify(contents, null, 2),
104
+ );
105
+ console.log(`✅ ${name}.colorset`);
106
+ }
107
+
108
+ // ── 3. Output path ─────────────────────────────────────────────────────────
109
+
110
+ const XCASSETS = new URL(
111
+ "../sample/iosApp/iosApp/Assets.xcassets/ThemeColors", // ← group folder
112
+ import.meta.url,
113
+ ).pathname;
114
+
115
+ mkdirSync(XCASSETS, { recursive: true });
116
+
117
+ // Write a group Contents.json (tells Xcode this is a namespace folder)
118
+ writeFileSync(
119
+ join(XCASSETS, "Contents.json"),
120
+ JSON.stringify(
121
+ {
122
+ info: { author: "xcode", version: 1 },
123
+ properties: { "provides-namespace": true },
124
+ },
125
+ null,
126
+ 2,
127
+ ),
128
+ );
129
+
130
+ // ── 4. Generate all color sets ─────────────────────────────────────────────
131
+
132
+ for (const name of Object.keys(lightTheme)) {
133
+ generateColorSet(name, lightTheme[name], darkTheme[name], XCASSETS);
134
+ }
135
+
136
+ console.log("\n🎉 Done! Open Xcode to verify the color sets.");
@@ -1,62 +0,0 @@
1
- {
2
- "permissions": {
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
- ]
61
- }
62
- }