@momo-kits/native-kits 0.0.1-beta.5 → 0.0.2-alpha.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 (653) hide show
  1. package/CLAUDE.md +99 -0
  2. package/PUBLISH_GUIDE.md +675 -0
  3. package/README.md +184 -5
  4. package/build.gradle.kts +11 -0
  5. package/compose/build.gradle.kts +189 -0
  6. package/compose/build.gradle.kts.backup +189 -0
  7. package/compose/compose.podspec +47 -0
  8. package/compose/src/androidMain/kotlin/vn/momo/kits/const/HostFont.android.kt +19 -0
  9. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +6 -0
  10. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +12 -0
  11. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +7 -0
  12. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +151 -0
  13. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +52 -0
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +124 -0
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +183 -0
  16. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +207 -0
  17. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +39 -0
  18. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  19. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  20. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +293 -0
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +831 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +269 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +110 -0
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +378 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +65 -0
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +82 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +338 -0
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +175 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +356 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +113 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +89 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +128 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +209 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +542 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +49 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +86 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +125 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +231 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +189 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +475 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +114 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +266 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +240 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +223 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +264 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +185 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +343 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +84 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +328 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +97 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +310 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +59 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +21 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +90 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +323 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +220 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +473 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +122 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +199 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +91 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +552 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +88 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +125 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +207 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +498 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +176 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +182 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +193 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +234 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +188 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +325 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/const/HostFont.kt +16 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitDesignSystem.kt +18 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitFontScale.kt +22 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +16 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +194 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +282 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +54 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +51 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +41 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +52 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +66 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +104 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +48 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +299 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +58 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +129 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +106 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +211 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +398 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +8 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +595 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +148 -0
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +40 -0
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +184 -0
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +225 -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 +169 -0
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +357 -0
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +83 -0
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +106 -0
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +75 -0
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +326 -0
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +39 -0
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +364 -0
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/ToolkitRequests.kt +33 -0
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +135 -0
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +12 -0
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +91 -0
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +9 -0
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +71 -0
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +55 -0
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +105 -0
  131. package/compose/src/commonTest/kotlin/vn/momo/kits/navigation/component/ToolkitRequestsTest.kt +47 -0
  132. package/compose/src/iosMain/kotlin/vn/momo/kits/const/HostFont.ios.kt +40 -0
  133. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +45 -0
  134. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +36 -0
  135. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +38 -0
  136. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +66 -0
  137. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +213 -0
  138. package/gradle/libs.versions.toml +71 -0
  139. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  140. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  141. package/gradle.properties +26 -0
  142. package/gradlew +252 -0
  143. package/gradlew.bat +94 -0
  144. package/ios/Application/ApplicationEnvironment.swift +71 -0
  145. package/ios/Application/Components.swift +270 -0
  146. package/ios/Application/ComposeApi.swift +22 -0
  147. package/ios/Application/FloatingButton.swift +174 -0
  148. package/ios/Application/HeaderRight.swift +306 -0
  149. package/ios/Application/LanguageSource.swift +93 -0
  150. package/ios/Application/Localize.swift +378 -0
  151. package/ios/Application/LocalizeModifier.swift +30 -0
  152. package/ios/Application/MaxApi.swift +18 -0
  153. package/ios/Application/Navigation/BottomTab/BottomTab.swift +104 -0
  154. package/ios/Application/Navigation/BottomTab/BottomTabBar.swift +215 -0
  155. package/ios/Application/Navigation/BottomTab/CurvedContainer.swift +65 -0
  156. package/ios/Application/Navigation/HeaderBackProps.swift +66 -0
  157. package/ios/Application/Navigation/HeaderTitle.swift +57 -0
  158. package/ios/Application/Navigation/HeaderUser.swift +209 -0
  159. package/ios/Application/Navigation/NavigationContainer.swift +213 -0
  160. package/ios/Application/Navigation/NavigationOptions.swift +109 -0
  161. package/ios/Application/Navigation/Navigator.swift +453 -0
  162. package/ios/Application/Navigation/NavigatorManager.swift +22 -0
  163. package/ios/Application/Navigation/Overplay/BottomSheet.swift +256 -0
  164. package/ios/Application/Navigation/Overplay/ModalScreen.swift +74 -0
  165. package/ios/Application/Navigation/Overplay/SnackBar.swift +144 -0
  166. package/ios/Application/Navigation/Tracking/ScreenTracker.swift +117 -0
  167. package/ios/Application/Navigation/component/Header.swift +178 -0
  168. package/ios/Application/Navigation/component/HeaderBackground.swift +83 -0
  169. package/ios/Application/Navigation/component/HeaderColor.swift +65 -0
  170. package/ios/Application/Navigation/component/HeaderRightWidthKey.swift +11 -0
  171. package/ios/Application/Navigation/component/NavigationFooter.swift +90 -0
  172. package/ios/Application/Navigation/component/NavigationHeaderRight.swift +196 -0
  173. package/ios/Application/Screen.swift +250 -0
  174. package/ios/Application/StackScreen.swift +492 -0
  175. package/ios/Avatar/Avatar.swift +193 -0
  176. package/ios/Badge/Badge.swift +84 -0
  177. package/ios/Badge/BadgeDot.swift +31 -0
  178. package/ios/Badge/BadgeRibbon.swift +319 -0
  179. package/ios/BaselineView/BaselineView.swift +163 -0
  180. package/ios/Button/Button.swift +232 -84
  181. package/ios/CalculatorKeyboard/CalculatorKeyboard.swift +126 -0
  182. package/ios/Carousel/Carousel.swift +196 -0
  183. package/ios/Checkbox/Checkbox.swift +59 -20
  184. package/ios/Chip/Chip.swift +120 -0
  185. package/ios/Collapse/Collapse.swift +192 -0
  186. package/ios/Colors+Radius+Spacing/Colors.swift +42 -37
  187. package/ios/Colors+Radius+Spacing/Spacing.swift +3 -1
  188. package/ios/Colors+Radius+Spacing/Theme.swift +295 -0
  189. package/ios/DateTimePicker/DateTimePicker.swift +212 -0
  190. package/ios/DateTimePicker/DateTimePickerTypes.swift +55 -0
  191. package/ios/DateTimePicker/DateTimePickerUtils.swift +167 -0
  192. package/ios/DateTimePicker/WheelPicker.swift +165 -0
  193. package/ios/Divider/Divider.swift +16 -0
  194. package/ios/Extensions/ActiveOpacityButtonStyle.swift +14 -0
  195. package/ios/Extensions/Color++.swift +32 -0
  196. package/ios/Icon/Icon.swift +69 -0
  197. package/ios/IconButton/IconButton.swift +140 -0
  198. package/ios/Image/Image.swift +36 -9
  199. package/ios/Information/Information.swift +156 -0
  200. package/ios/Input/ErrorView.swift +58 -0
  201. package/ios/Input/Input.swift +455 -121
  202. package/ios/Input/InputPhoneNumber.swift +192 -0
  203. package/ios/Input/InputSearch.swift +301 -0
  204. package/ios/Input/InputTextArea.swift +318 -0
  205. package/ios/InputDropDown/InputDropDown.swift +201 -0
  206. package/ios/InputMoney/InputMoney.swift +405 -0
  207. package/ios/InputOTP/InputOTP.swift +211 -0
  208. package/ios/Layout/GridContext.swift +30 -0
  209. package/ios/Layout/Item.swift +42 -0
  210. package/ios/Layout/Section.swift +134 -0
  211. package/ios/Loader/Loader.swift +113 -0
  212. package/ios/Lottie/LottieView.swift +86 -0
  213. package/ios/MoMoUIKits.podspec +5 -0
  214. package/ios/OTPKeyboard/KeyboardButton.swift +13 -5
  215. package/ios/Pagination/PaginationDot.swift +61 -0
  216. package/ios/Pagination/PaginationNumber.swift +35 -0
  217. package/ios/Pagination/PaginationScroll.swift +101 -0
  218. package/ios/Pagination/PaginationWhiteDot.swift +37 -0
  219. package/ios/Popup/PopupDisplay.swift +195 -94
  220. package/ios/Popup/PopupInput.swift +92 -0
  221. package/ios/Popup/PopupNotify.swift +219 -0
  222. package/ios/Popup/PopupPromotion.swift +74 -0
  223. package/ios/ProgressInfo/ProgressInfo.swift +297 -0
  224. package/ios/Radio/Radio.swift +69 -0
  225. package/ios/Rating/Rating.swift +83 -0
  226. package/{example/ios/Example/Preview Content/Preview Assets.xcassets/Contents.json → ios/Resources/MoMoUIKitsColors.xcassets/AccentColor.colorset/Contents.json} +5 -0
  227. package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Text.colorset/Contents.json +3 -3
  228. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/Contents.json +9 -0
  229. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-default.colorset/Contents.json +38 -0
  230. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-disable.colorset/Contents.json +38 -0
  231. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-pressed.colorset/Contents.json +38 -0
  232. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-selected.colorset/Contents.json +38 -0
  233. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-surface.colorset/Contents.json +38 -0
  234. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-tonal.colorset/Contents.json +38 -0
  235. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-default.colorset/Contents.json +38 -0
  236. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-disable.colorset/Contents.json +38 -0
  237. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/gradient.colorset/Contents.json +38 -0
  238. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/primary.colorset/Contents.json +38 -0
  239. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/secondary.colorset/Contents.json +38 -0
  240. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-container.colorset/Contents.json +38 -0
  241. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-primary.colorset/Contents.json +38 -0
  242. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-secondary.colorset/Contents.json +38 -0
  243. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-default.colorset/Contents.json +38 -0
  244. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-disable.colorset/Contents.json +38 -0
  245. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-hint.colorset/Contents.json +38 -0
  246. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-secondary.colorset/Contents.json +38 -0
  247. package/ios/ScrollIndicator/ScrollIndicator.swift +110 -0
  248. package/ios/Skeleton/Skeleton.swift +99 -0
  249. package/ios/Slider/Slider.swift +237 -0
  250. package/ios/StatusBarTap/StatusBarTap.h +13 -0
  251. package/ios/StatusBarTap/StatusBarTap.m +75 -0
  252. package/ios/Stepper/Stepper.swift +221 -0
  253. package/ios/Steps/Steps.swift +467 -0
  254. package/ios/SuggestAction/SuggestAction.swift +100 -0
  255. package/ios/Swipeable/SwipeCell.swift +226 -31
  256. package/ios/Swipeable/SwipeCellModel.swift +21 -0
  257. package/ios/Switch/Switch.swift +53 -28
  258. package/ios/TabView/TabView.swift +534 -0
  259. package/ios/Tag/Tag.swift +99 -0
  260. package/ios/Template/Logo/Logo.swift +75 -0
  261. package/ios/Template/TrustBanner/TrustBanner.swift +123 -0
  262. package/ios/Title/Title.swift +270 -0
  263. package/ios/Tooltip/Tooltip.swift +486 -0
  264. package/ios/Typography/FontScale.swift +103 -0
  265. package/ios/Typography/FontScaleStore.swift +58 -0
  266. package/ios/Typography/KitDesignSystem.swift +17 -0
  267. package/ios/Typography/Text.swift +262 -0
  268. package/ios/Typography/Typography.swift +80 -23
  269. package/ios/Uploader/Uploader.swift +174 -0
  270. package/ios/native-kits.podspec +73 -15
  271. package/ios-demo/MoMoUIKitsDemo.podspec +20 -0
  272. package/ios-demo/README.md +120 -0
  273. package/ios-demo/Resources/dot_loading.json +558 -0
  274. package/ios-demo/Resources/icon.json +4052 -0
  275. package/ios-demo/Resources/lottie_circle_loader.json +1 -0
  276. package/ios-demo/Sources/MoMoUIKitsDemo/DemoScaffold.swift +48 -0
  277. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsBadgeDemoView.swift +25 -0
  278. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsButtonDemoView.swift +26 -0
  279. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsCheckboxDemoView.swift +19 -0
  280. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsChipDemoView.swift +33 -0
  281. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsInputDemoView.swift +48 -0
  282. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsPopupDemoView.swift +21 -0
  283. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsRadioDemoView.swift +17 -0
  284. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsTypographyDemoView.swift +28 -0
  285. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoContext.swift +31 -0
  286. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoFactory.swift +24 -0
  287. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AnimatedHeaderDemo.swift +110 -0
  288. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AvatarDemo.swift +107 -0
  289. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BadgeDemo.swift +75 -0
  290. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BaselineView.swift +117 -0
  291. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BottomTabDemo.swift +89 -0
  292. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ButtonDemo.swift +108 -0
  293. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CarouselDemo.swift +96 -0
  294. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CheckboxDemo.swift +60 -0
  295. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ChipDemo.swift +76 -0
  296. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CollapseDemo.swift +102 -0
  297. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ContentView.swift +107 -0
  298. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DateTimePickerDemo.swift +100 -0
  299. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DemoScreen.swift +420 -0
  300. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DividerDemo.swift +56 -0
  301. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/HeaderUserDemo.swift +49 -0
  302. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/Home.swift +276 -0
  303. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IconButtonDemo.swift +93 -0
  304. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IconDemo.swift +81 -0
  305. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ImageDemo.swift +65 -0
  306. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InformationDemo.swift +96 -0
  307. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDemo.swift +117 -0
  308. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDropDownDemo.swift +94 -0
  309. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputMoneyDemo.swift +94 -0
  310. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputOTPDemo.swift +88 -0
  311. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputPhoneNumberDemo.swift +120 -0
  312. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputSearchDemo.swift +85 -0
  313. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputTextAreaDemo.swift +87 -0
  314. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LoaderDemo.swift +73 -0
  315. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LocalizeDemo.swift +235 -0
  316. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift +241 -0
  317. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PaginationDemo.swift +68 -0
  318. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PlaygroundData.swift +76 -0
  319. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupDisplayDemo.swift +175 -0
  320. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupNotifyDemo.swift +95 -0
  321. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupPromotionDemo.swift +67 -0
  322. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ProgressInfoDemo.swift +101 -0
  323. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RadioDemo.swift +64 -0
  324. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RatingDemo.swift +68 -0
  325. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SectionDemo.swift +83 -0
  326. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SkeletonDemo.swift +61 -0
  327. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SliderDemo.swift +90 -0
  328. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SnackBarDemo.swift +82 -0
  329. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepperDemo.swift +93 -0
  330. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepsDemo.swift +114 -0
  331. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SuggestActionDemo.swift +90 -0
  332. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwipeDemo.swift +107 -0
  333. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwitchDemo.swift +58 -0
  334. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TabViewDemo.swift +114 -0
  335. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TagDemo.swift +86 -0
  336. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ThemeDemo.swift +181 -0
  337. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TitleDemo.swift +104 -0
  338. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TooltipDemo.swift +118 -0
  339. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TypographyDemo.swift +87 -0
  340. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/UploaderDemo.swift +85 -0
  341. package/ios-demo/Sources/MoMoUIKitsDemo/SwiftUIDemoBrowserView.swift +53 -0
  342. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoModels.swift +15 -0
  343. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoRegistry.swift +73 -0
  344. package/package.json +6 -6
  345. package/publish.sh +554 -20
  346. package/scripts/gen-ios-color.mjs +136 -0
  347. package/settings.gradle.kts +64 -0
  348. package/CODE_OF_CONDUCT.md +0 -133
  349. package/CONTRIBUTING.md +0 -114
  350. package/LICENSE +0 -20
  351. package/android/build.gradle +0 -82
  352. package/android/gradle.properties +0 -5
  353. package/android/src/main/AndroidManifest.xml +0 -4
  354. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsPackage.kt +0 -17
  355. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsViewManager.kt +0 -20
  356. package/example/ios/Example/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -63
  357. package/example/ios/Example/ComponentDetail.swift +0 -35
  358. package/example/ios/Example/ComponentItem.swift +0 -24
  359. package/example/ios/Example/ComponentModel.swift +0 -38
  360. package/example/ios/Example/ContentView.swift +0 -39
  361. package/example/ios/Example/Example.entitlements +0 -10
  362. package/example/ios/Example/Foundation/ButtonDemo.swift +0 -80
  363. package/example/ios/Example/Foundation/ImageDemo.swift +0 -43
  364. package/example/ios/Example/Foundation/Popup/ActionSheets.swift +0 -136
  365. package/example/ios/Example/Foundation/Popup/Floats.swift +0 -127
  366. package/example/ios/Example/Foundation/Popup/Popups.swift +0 -51
  367. package/example/ios/Example/Foundation/PopupDemo.swift +0 -389
  368. package/example/ios/Example/Foundation/TextInputDemo.swift +0 -36
  369. package/example/ios/Example/Foundation/TypographyDemo.swift +0 -53
  370. package/example/ios/Example/Foundation.swift +0 -26
  371. package/example/ios/Example/Info.plist +0 -18
  372. package/example/ios/Example/Library/CheckboxDemo.swift +0 -19
  373. package/example/ios/Example/Library/SwipeableDemo.swift +0 -105
  374. package/example/ios/Example/Library/SwitchDemo.swift +0 -19
  375. package/example/ios/Example/Library.swift +0 -26
  376. package/example/ios/Example/Main.swift +0 -27
  377. package/example/ios/Example/Overview.swift +0 -20
  378. package/example/ios/Example/Resource/SFProText-Black.ttf +0 -0
  379. package/example/ios/Example/Resource/SFProText-Bold.ttf +0 -0
  380. package/example/ios/Example/Resource/SFProText-Heavy.ttf +0 -0
  381. package/example/ios/Example/Resource/SFProText-Light.ttf +0 -0
  382. package/example/ios/Example/Resource/SFProText-Medium.ttf +0 -0
  383. package/example/ios/Example/Resource/SFProText-Regular.ttf +0 -0
  384. package/example/ios/Example/Resource/SFProText-Semibold.ttf +0 -0
  385. package/example/ios/Example/Resource/SFProText-Thin.ttf +0 -0
  386. package/example/ios/Example/Resource/SFProText-Ultralight.ttf +0 -0
  387. package/example/ios/Example/Resource/foundation.json +0 -33
  388. package/example/ios/Example/Resource/library.json +0 -18
  389. package/example/ios/Example/Utils.swift +0 -30
  390. package/example/ios/Example/ViewModifier/DarkViewModifier.swift +0 -22
  391. package/example/ios/Example.xcodeproj/project.pbxproj +0 -581
  392. package/example/ios/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  393. package/example/ios/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  394. package/example/ios/Example.xcodeproj/project.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  395. package/example/ios/Example.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  396. package/example/ios/Example.xcworkspace/contents.xcworkspacedata +0 -10
  397. package/example/ios/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  398. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  399. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
  400. package/example/ios/Podfile +0 -7
  401. package/example/ios/Podfile.lock +0 -35
  402. package/example/ios/Pods/Local Podspecs/MoMoUIKits.podspec.json +0 -37
  403. package/example/ios/Pods/Manifest.lock +0 -35
  404. package/example/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -2047
  405. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  406. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  407. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
  408. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
  409. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
  410. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
  411. package/example/ios/Pods/SDWebImage/LICENSE +0 -20
  412. package/example/ios/Pods/SDWebImage/README.md +0 -352
  413. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.h +0 -340
  414. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.m +0 -172
  415. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h +0 -63
  416. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +0 -165
  417. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h +0 -67
  418. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +0 -120
  419. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h +0 -114
  420. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +0 -392
  421. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h +0 -112
  422. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m +0 -420
  423. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h +0 -23
  424. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +0 -133
  425. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.h +0 -168
  426. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.m +0 -79
  427. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h +0 -110
  428. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m +0 -540
  429. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h +0 -145
  430. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +0 -326
  431. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h +0 -73
  432. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m +0 -256
  433. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h +0 -19
  434. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +0 -58
  435. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.h +0 -23
  436. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.m +0 -98
  437. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h +0 -450
  438. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +0 -1030
  439. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +0 -153
  440. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m +0 -68
  441. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h +0 -156
  442. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +0 -138
  443. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.h +0 -81
  444. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.m +0 -556
  445. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h +0 -297
  446. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m +0 -26
  447. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +0 -153
  448. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +0 -822
  449. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.h +0 -58
  450. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m +0 -130
  451. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.h +0 -36
  452. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m +0 -28
  453. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h +0 -22
  454. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +0 -58
  455. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h +0 -28
  456. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m +0 -127
  457. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h +0 -25
  458. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m +0 -101
  459. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h +0 -58
  460. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m +0 -807
  461. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.h +0 -30
  462. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +0 -420
  463. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h +0 -146
  464. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +0 -170
  465. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.h +0 -40
  466. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.m +0 -123
  467. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.h +0 -241
  468. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.m +0 -331
  469. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h +0 -78
  470. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m +0 -158
  471. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.h +0 -32
  472. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m +0 -39
  473. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h +0 -36
  474. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m +0 -39
  475. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.h +0 -95
  476. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m +0 -17
  477. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +0 -352
  478. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +0 -149
  479. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +0 -314
  480. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +0 -658
  481. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h +0 -113
  482. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m +0 -60
  483. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h +0 -49
  484. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m +0 -55
  485. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h +0 -191
  486. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +0 -722
  487. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h +0 -69
  488. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m +0 -71
  489. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h +0 -69
  490. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m +0 -73
  491. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +0 -32
  492. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m +0 -16
  493. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.h +0 -115
  494. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +0 -275
  495. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h +0 -290
  496. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +0 -775
  497. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h +0 -27
  498. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m +0 -14
  499. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.h +0 -72
  500. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m +0 -59
  501. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.h +0 -143
  502. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.m +0 -303
  503. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.h +0 -131
  504. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.m +0 -194
  505. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.h +0 -387
  506. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.m +0 -234
  507. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h +0 -24
  508. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m +0 -23
  509. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.h +0 -46
  510. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m +0 -60
  511. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h +0 -26
  512. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m +0 -22
  513. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.h +0 -27
  514. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m +0 -47
  515. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h +0 -89
  516. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m +0 -221
  517. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.h +0 -80
  518. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m +0 -47
  519. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.h +0 -146
  520. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +0 -824
  521. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.h +0 -129
  522. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.m +0 -76
  523. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.h +0 -194
  524. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.m +0 -67
  525. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h +0 -110
  526. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +0 -446
  527. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h +0 -48
  528. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m +0 -82
  529. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h +0 -24
  530. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m +0 -42
  531. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h +0 -14
  532. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m +0 -29
  533. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h +0 -21
  534. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m +0 -92
  535. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h +0 -18
  536. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m +0 -32
  537. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h +0 -29
  538. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m +0 -227
  539. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h +0 -19
  540. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m +0 -127
  541. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.h +0 -23
  542. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m +0 -164
  543. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h +0 -21
  544. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m +0 -83
  545. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h +0 -39
  546. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.h +0 -122
  547. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m +0 -13
  548. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h +0 -20
  549. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.m +0 -79
  550. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h +0 -19
  551. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDmetamacros.h +0 -667
  552. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h +0 -18
  553. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m +0 -42
  554. package/example/ios/Pods/SDWebImage/WebImage/SDWebImage.h +0 -89
  555. package/example/ios/Pods/SDWebImageSwiftUI/LICENSE +0 -19
  556. package/example/ios/Pods/SDWebImageSwiftUI/README.md +0 -690
  557. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/AnimatedImage.swift +0 -870
  558. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Backport.swift +0 -59
  559. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/OnChange.swift +0 -52
  560. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Overlay.swift +0 -124
  561. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/StateObject.swift +0 -151
  562. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Image.swift +0 -78
  563. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageManager.swift +0 -132
  564. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImagePlayer.swift +0 -122
  565. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageViewWrapper.swift +0 -133
  566. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ActivityIndicator.swift +0 -82
  567. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/Indicator.swift +0 -97
  568. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ProgressIndicator.swift +0 -114
  569. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SDWebImageSwiftUI.swift +0 -64
  570. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SwiftUICompatibility.swift +0 -92
  571. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Transition/Transition.swift +0 -93
  572. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/WebImage.swift +0 -509
  573. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Module/SDWebImageSwiftUI.h +0 -15
  574. package/example/ios/Pods/SkeletonUI/LICENSE +0 -21
  575. package/example/ios/Pods/SkeletonUI/README.md +0 -137
  576. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AngleInteractor.swift +0 -29
  577. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AnglePresenter.swift +0 -7
  578. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Animation/AnimationInteractor.swift +0 -56
  579. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearanceInteractor.swift +0 -58
  580. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearancePresenter.swift +0 -5
  581. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ClosedRange+Normalize.swift +0 -16
  582. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Image+OptionalType.swift +0 -102
  583. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ModifiedContent+SkeletonModifier.swift +0 -26
  584. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Optional+OptionalType.swift +0 -5
  585. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/SecureField+OptionalType.swift +0 -19
  586. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Text+OptionalType.swift +0 -27
  587. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/TextField+OptionalType.swift +0 -35
  588. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Toggle+OptionalType.swift +0 -29
  589. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/UnitPoint+Angle.swift +0 -8
  590. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/View+SkeletonModifier.swift +0 -8
  591. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Modifiers/SkeletonModifier.swift +0 -52
  592. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilineInteractor.swift +0 -41
  593. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilinePresenter.swift +0 -9
  594. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityInteractor.swift +0 -29
  595. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityPresenter.swift +0 -7
  596. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionInteractor.swift +0 -29
  597. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionPresenter.swift +0 -7
  598. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Protocols/OptionalType.swift +0 -4
  599. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusInteractor.swift +0 -29
  600. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusPresenter.swift +0 -7
  601. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapeInteractor.swift +0 -33
  602. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapePresenter.swift +0 -5
  603. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonForEach.swift +0 -20
  604. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonInteractor.swift +0 -27
  605. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonList.swift +0 -20
  606. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonPresenter.swift +0 -15
  607. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonShape.swift +0 -64
  608. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonView.swift +0 -25
  609. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-dummy.m +0 -5
  610. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-prefix.pch +0 -12
  611. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-umbrella.h +0 -16
  612. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.debug.xcconfig +0 -15
  613. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.modulemap +0 -6
  614. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.release.xcconfig +0 -15
  615. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown +0 -75
  616. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist +0 -119
  617. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m +0 -5
  618. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h +0 -16
  619. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig +0 -15
  620. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap +0 -6
  621. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig +0 -15
  622. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m +0 -5
  623. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch +0 -12
  624. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h +0 -75
  625. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig +0 -14
  626. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap +0 -6
  627. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig +0 -14
  628. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-dummy.m +0 -5
  629. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-prefix.pch +0 -12
  630. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-umbrella.h +0 -17
  631. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.debug.xcconfig +0 -17
  632. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.modulemap +0 -6
  633. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.release.xcconfig +0 -17
  634. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-dummy.m +0 -5
  635. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-prefix.pch +0 -12
  636. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-umbrella.h +0 -16
  637. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.debug.xcconfig +0 -12
  638. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.modulemap +0 -6
  639. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.release.xcconfig +0 -12
  640. package/ios/Extensions/View++.swift +0 -9
  641. package/ios/Theme.md +0 -18
  642. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Background.colorset/Contents.json +0 -0
  643. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Border.colorset/Contents.json +0 -0
  644. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Card.colorset/Contents.json +0 -0
  645. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Contents.json +0 -0
  646. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Error.colorset/Contents.json +0 -0
  647. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Primary.colorset/Contents.json +0 -0
  648. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/PrimaryDark.colorset/Contents.json +0 -0
  649. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/PrimaryLight.colorset/Contents.json +0 -0
  650. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Secondary.colorset/Contents.json +0 -0
  651. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Success.colorset/Contents.json +0 -0
  652. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/TextSecondary.colorset/Contents.json +0 -0
  653. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Warning.colorset/Contents.json +0 -0
@@ -0,0 +1,453 @@
1
+ //
2
+ // Navigator.swift
3
+ // MoMoUIKits
4
+ //
5
+ // SwiftUI mirror of Compose's Navigator + DynamicScreenRegistry.
6
+ // Screens are registered by Int id; the NavigationStack path stores routes
7
+ // by id and looks up content from the registry on render.
8
+ //
9
+
10
+ import SwiftUI
11
+ import Combine
12
+
13
+ // MARK: - Routes
14
+
15
+ public struct DynamicScreenRoute: Hashable, Identifiable {
16
+ public let id: Int
17
+ }
18
+
19
+ public struct DynamicDialogRoute: Hashable, Identifiable {
20
+ public let id: Int
21
+ }
22
+
23
+ // MARK: - Registry
24
+
25
+ public struct DynamicScreen {
26
+ public let id: Int
27
+ public let name: String
28
+ public let content: () -> AnyView
29
+ public var options: NavigationOptions?
30
+ }
31
+
32
+ public final class DynamicScreenRegistry {
33
+ private var screens: [Int: DynamicScreen] = [:]
34
+ private var idCounter: Int = 1
35
+
36
+ public init() {}
37
+
38
+ @discardableResult
39
+ public func register(
40
+ screenName: String = "",
41
+ content: @escaping () -> AnyView,
42
+ options: NavigationOptions? = nil
43
+ ) -> DynamicScreenRoute {
44
+ let id = idCounter
45
+ idCounter += 1
46
+ screens[id] = DynamicScreen(id: id, name: screenName, content: content, options: options)
47
+ return DynamicScreenRoute(id: id)
48
+ }
49
+
50
+ public func unregister(id: Int) {
51
+ screens.removeValue(forKey: id)
52
+ }
53
+
54
+ public func unregisterAll() {
55
+ screens.removeAll()
56
+ }
57
+
58
+ public func getScreen(id: Int) -> DynamicScreen? { screens[id] }
59
+
60
+ public func latest() -> DynamicScreen? {
61
+ screens.max(by: { $0.key < $1.key })?.value
62
+ }
63
+
64
+ public func setOptions(id: Int, options: NavigationOptions) {
65
+ screens[id]?.options = options
66
+ }
67
+ }
68
+
69
+ // MARK: - Overplay
70
+
71
+ public enum OverplayType {
72
+ case modal, bottomSheet, snackBar
73
+ }
74
+
75
+ public struct OverplayItem: Identifiable {
76
+ public let id = UUID()
77
+ public let type: OverplayType
78
+ public let content: () -> AnyView
79
+ public let barrierDismissible: Bool
80
+ public let onDismiss: (() -> Void)?
81
+ // Bottom-sheet params (mirrors Compose's OverplayComponentParams.BottomSheet).
82
+ public var isSurface: Bool = false
83
+ public var header: BottomSheetHeader? = nil
84
+ // Snack-bar payload (mirrors Compose's SnackBar value).
85
+ public var snackBar: SnackBar? = nil
86
+ }
87
+
88
+ // MARK: - Navigator
89
+
90
+ @available(iOS 16.0, *)
91
+ public final class Navigator: ObservableObject {
92
+ @Published public var path: [DynamicScreenRoute] = [] {
93
+ // Disposal hangs off the path so every route that leaves the stack — pop,
94
+ // replace, reset — is released the same way, after its exit transition.
95
+ didSet { disposeScreens(droppedFrom: oldValue) }
96
+ }
97
+ @Published public var presented: DynamicDialogRoute?
98
+ @Published public var overplay: OverplayItem?
99
+
100
+ /// Owned per-Navigator (mirrors Compose's `remember { DynamicScreenRegistry() }` +
101
+ /// disposal): screens registered by this navigator are released via ARC when the
102
+ /// navigator itself deallocates, instead of accumulating in a process-wide singleton.
103
+ public let registry = DynamicScreenRegistry()
104
+
105
+ /// Animated-close handler registered by the active overplay component
106
+ /// (mirrors Compose's `OverplayComponentRegistry.bindClose`). When set, a
107
+ /// dismiss request runs the component's exit animation before the item is
108
+ /// actually removed via `finishOverplayDismiss`.
109
+ private var overplayDismissHandler: (() -> Void)?
110
+
111
+ public private(set) var rootRoute: DynamicScreenRoute
112
+ public var composeApi: KitComposeApi?
113
+
114
+ public init(
115
+ initialScreenName: String = "",
116
+ initialContent: @escaping () -> AnyView,
117
+ options: NavigationOptions? = nil,
118
+ composeApi: KitComposeApi? = nil
119
+ ) {
120
+ self.composeApi = composeApi
121
+ self.rootRoute = registry.register(
122
+ screenName: initialScreenName,
123
+ content: initialContent,
124
+ options: options
125
+ )
126
+ }
127
+
128
+ // MARK: Stack
129
+
130
+ public func push<V: View>(@ViewBuilder _ content: @escaping () -> V, options: NavigationOptions? = nil) {
131
+ let route = registry.register(
132
+ screenName: options?.screenName ?? "",
133
+ content: { AnyView(content()) },
134
+ options: options
135
+ )
136
+ path.append(route)
137
+ }
138
+
139
+ public func push<V: View>(
140
+ screenName: String,
141
+ @ViewBuilder _ content: @escaping () -> V,
142
+ options: NavigationOptions? = nil
143
+ ) {
144
+ let route = registry.register(
145
+ screenName: screenName,
146
+ content: { AnyView(content()) },
147
+ options: options
148
+ )
149
+ path.append(route)
150
+ }
151
+
152
+ public func replace<V: View>(@ViewBuilder _ content: @escaping () -> V, options: NavigationOptions? = nil) {
153
+ guard !path.isEmpty else { return }
154
+ path.removeLast()
155
+ push(content, options: options)
156
+ }
157
+
158
+ public func replace<V: View>(
159
+ screenName: String,
160
+ @ViewBuilder _ content: @escaping () -> V,
161
+ options: NavigationOptions? = nil
162
+ ) {
163
+ guard !path.isEmpty else { return }
164
+ path.removeLast()
165
+ push(screenName: screenName, content, options: options)
166
+ }
167
+
168
+ public func reset<V: View>(@ViewBuilder _ content: @escaping () -> V, options: NavigationOptions? = nil) {
169
+ let previousRoot = rootRoute.id
170
+ path.removeAll()
171
+ let route = registry.register(
172
+ screenName: options?.screenName ?? "",
173
+ content: { AnyView(content()) },
174
+ options: options
175
+ )
176
+ rootRoute = route
177
+ disposeScreens([previousRoot])
178
+ }
179
+
180
+ public func reset<V: View>(
181
+ screenName: String,
182
+ @ViewBuilder _ content: @escaping () -> V,
183
+ options: NavigationOptions? = nil
184
+ ) {
185
+ let previousRoot = rootRoute.id
186
+ path.removeAll()
187
+ let route = registry.register(
188
+ screenName: screenName,
189
+ content: { AnyView(content()) },
190
+ options: options
191
+ )
192
+ rootRoute = route
193
+ disposeScreens([previousRoot])
194
+ }
195
+
196
+ public func pop(_ count: Int = 1, callback: (() -> Void)? = nil) {
197
+ popStep(remaining: count, callback: callback)
198
+ }
199
+
200
+ /// One `pop` iteration. Compose runs the loop in a coroutine and suspends over the
201
+ /// overplay's exit animation before the next step; the same wait is needed here, or
202
+ /// a `pop(2)` (prevent-back: close the popup, then leave) would spend both steps on
203
+ /// the overplay that is still animating out and never pop the screen.
204
+ private func popStep(remaining: Int, callback: (() -> Void)?) {
205
+ guard remaining > 0 else {
206
+ callback?()
207
+ return
208
+ }
209
+
210
+ if overplay?.type == .snackBar {
211
+ // Mirrors Kotlin: a snackbar doesn't block back-navigation, so popping
212
+ // while one is showing pops the screen underneath and clears the
213
+ // snackbar immediately, without playing its dismiss animation.
214
+ overplayDismissHandler = nil
215
+ overplay = nil
216
+ guard popScreen() else {
217
+ callback?()
218
+ return
219
+ }
220
+ popStep(remaining: remaining - 1, callback: callback)
221
+ } else if overplay != nil {
222
+ hideOverplay()
223
+ DispatchQueue.main.asyncAfter(deadline: .now() + Self.overplayDismissDelay) { [weak self] in
224
+ guard let self else { return }
225
+ // The component reports back through `finishOverplayDismiss` once its exit
226
+ // animation ends; clear it here if it never did, so the step is not wasted.
227
+ if self.overplay != nil { self.finishOverplayDismiss() }
228
+ self.popStep(remaining: remaining - 1, callback: callback)
229
+ }
230
+ } else {
231
+ guard popScreen() else {
232
+ callback?()
233
+ return
234
+ }
235
+ popStep(remaining: remaining - 1, callback: callback)
236
+ }
237
+ }
238
+
239
+ /// Pops the topmost presented screen or stack entry. Returns `false` (and requests
240
+ /// a host dismiss) when there is nothing left to pop.
241
+ @discardableResult
242
+ private func popScreen() -> Bool {
243
+ if presented != nil {
244
+ let dismissedId = presented?.id
245
+ presented = nil
246
+ if let id = dismissedId { disposeScreens([id]) }
247
+ return true
248
+ } else if !path.isEmpty {
249
+ path.removeLast()
250
+ return true
251
+ } else {
252
+ composeApi?.requestCallback(funcName: "dismiss", params: nil, onResponse: nil)
253
+ return false
254
+ }
255
+ }
256
+
257
+ public func popToRoot() {
258
+ path.removeAll()
259
+ }
260
+
261
+ /// The entry a back action applies to — mirrors Compose's `currentScreen()`
262
+ /// (`navController.currentBackStackEntry`): a presented screen sits on top of
263
+ /// the stack, otherwise it is the last pushed screen, otherwise the root.
264
+ private func currentScreen() -> DynamicScreen? {
265
+ registry.getScreen(id: presented?.id ?? path.last?.id ?? rootRoute.id)
266
+ }
267
+
268
+ public func onBackSafe(callback: (() -> Void)? = nil) {
269
+ let latest = currentScreen()
270
+ if let onBack = latest?.options?.onBackHandler {
271
+ onBack()
272
+ return
273
+ }
274
+ if let preventBack = latest?.options?.headerBackProps?.preventBack {
275
+ showModal {
276
+ PopupNotify(
277
+ props: PopupNotifyProps(
278
+ image: preventBack.image,
279
+ title: preventBack.title,
280
+ description: preventBack.description,
281
+ error: preventBack.error,
282
+ primary: PopupAction(
283
+ title: preventBack.primary?.title ?? "",
284
+ onPress: { [weak self] in
285
+ preventBack.primary?.onPress?()
286
+ // Close the popup, then leave the screen (matches Compose's pop(2)).
287
+ self?.pop(2, callback: callback)
288
+ }
289
+ ),
290
+ secondary: preventBack.secondary.map { secondary in
291
+ PopupAction(
292
+ title: secondary.title,
293
+ onPress: { [weak self] in
294
+ secondary.onPress?()
295
+ self?.hideOverplay()
296
+ }
297
+ )
298
+ },
299
+ buttonDirection: preventBack.buttonDirection,
300
+ onIconClose: { [weak self] in
301
+ preventBack.onIconClose?()
302
+ self?.hideOverplay()
303
+ },
304
+ isShowCloseIcon: preventBack.isShowCloseIcon
305
+ )
306
+ )
307
+ }
308
+ return
309
+ }
310
+ pop(1, callback: callback)
311
+ }
312
+
313
+ // MARK: Modal-style screen (vertical slide)
314
+
315
+ public func present<V: View>(@ViewBuilder _ content: @escaping () -> V, options: NavigationOptions? = nil) {
316
+ let route = registry.register(
317
+ screenName: options?.screenName ?? "",
318
+ content: { AnyView(content()) },
319
+ options: options
320
+ )
321
+ presented = DynamicDialogRoute(id: route.id)
322
+ }
323
+
324
+ public func present<V: View>(
325
+ screenName: String,
326
+ @ViewBuilder _ content: @escaping () -> V,
327
+ options: NavigationOptions? = nil
328
+ ) {
329
+ let route = registry.register(
330
+ screenName: screenName,
331
+ content: { AnyView(content()) },
332
+ options: options
333
+ )
334
+ presented = DynamicDialogRoute(id: route.id)
335
+ }
336
+
337
+ public func dismiss() {
338
+ if let id = presented?.id {
339
+ registry.unregister(id: id)
340
+ }
341
+ presented = nil
342
+ }
343
+
344
+ // MARK: Overplay
345
+
346
+ public func showModal<V: View>(
347
+ @ViewBuilder _ content: @escaping () -> V,
348
+ barrierDismissible: Bool = true,
349
+ onDismiss: (() -> Void)? = nil
350
+ ) {
351
+ overplayDismissHandler = nil
352
+ overplay = OverplayItem(
353
+ type: .modal,
354
+ content: { AnyView(content()) },
355
+ barrierDismissible: barrierDismissible,
356
+ onDismiss: onDismiss
357
+ )
358
+ }
359
+
360
+ public func showBottomSheet<V: View>(
361
+ @ViewBuilder _ content: @escaping () -> V,
362
+ isSurface: Bool = false,
363
+ barrierDismissible: Bool = true,
364
+ header: BottomSheetHeader? = nil,
365
+ onDismiss: (() -> Void)? = nil
366
+ ) {
367
+ overplayDismissHandler = nil
368
+ overplay = OverplayItem(
369
+ type: .bottomSheet,
370
+ content: { AnyView(content()) },
371
+ barrierDismissible: barrierDismissible,
372
+ onDismiss: onDismiss,
373
+ isSurface: isSurface,
374
+ header: header
375
+ )
376
+ }
377
+
378
+ /// Mirrors Compose's `showSnackBar(snackBar:)`.
379
+ public func showSnackBar(_ snackBar: SnackBar, onDismiss: (() -> Void)? = nil) {
380
+ overplayDismissHandler = nil
381
+ overplay = OverplayItem(
382
+ type: .snackBar,
383
+ content: { AnyView(EmptyView()) },
384
+ barrierDismissible: false,
385
+ onDismiss: onDismiss,
386
+ snackBar: snackBar
387
+ )
388
+ }
389
+
390
+ // MARK: Overplay dismissal
391
+
392
+ /// Registered by the active overplay component so external dismiss requests
393
+ /// run its exit animation (mirrors Compose's `bindClose`).
394
+ public func registerOverplayDismiss(_ handler: @escaping () -> Void) {
395
+ overplayDismissHandler = handler
396
+ }
397
+
398
+ /// Removes the overplay and fires its `onDismiss` (mirrors Compose's
399
+ /// `hardClearAfterDismiss`). Called by a component once its exit animation
400
+ /// has completed.
401
+ public func finishOverplayDismiss() {
402
+ let dismissCallback = overplay?.onDismiss
403
+ overplayDismissHandler = nil
404
+ overplay = nil
405
+ dismissCallback?()
406
+ }
407
+
408
+ public func hideOverplay() {
409
+ if let close = overplayDismissHandler {
410
+ // Component runs its exit animation, then calls finishOverplayDismiss.
411
+ overplayDismissHandler = nil
412
+ close()
413
+ } else {
414
+ finishOverplayDismiss()
415
+ }
416
+ }
417
+
418
+ public func hideSnackBar() {
419
+ if overplay?.type == .snackBar { hideOverplay() }
420
+ }
421
+
422
+ // MARK: Screen disposal
423
+
424
+ /// Matches the `delay(300)` Compose waits in `dismissScreen` before unregistering,
425
+ /// with a little headroom for the pop transition.
426
+ private static let screenDisposeDelay: TimeInterval = 0.35
427
+
428
+ /// Longest overplay exit animation (the bottom sheet's), so a queued pop step runs
429
+ /// after the component has taken itself down.
430
+ private static let overplayDismissDelay: TimeInterval = 0.3
431
+
432
+ private func disposeScreens(droppedFrom previous: [DynamicScreenRoute]) {
433
+ let live = Set(path.map(\.id))
434
+ disposeScreens(previous.map(\.id).filter { !live.contains($0) })
435
+ }
436
+
437
+ /// Screens are released only once the pop transition has played out: the outgoing
438
+ /// view is still on screen while it animates and the registry is what renders it —
439
+ /// dropping it right away blanks the screen mid-transition. Liveness is re-checked
440
+ /// when the timer fires, so a route pushed back before then keeps its screen.
441
+ private func disposeScreens(_ ids: [Int]) {
442
+ guard !ids.isEmpty else { return }
443
+ DispatchQueue.main.asyncAfter(deadline: .now() + Self.screenDisposeDelay) { [weak self] in
444
+ guard let self else { return }
445
+ var live = Set(self.path.map(\.id))
446
+ live.insert(self.rootRoute.id)
447
+ if let presented = self.presented { live.insert(presented.id) }
448
+ for id in ids where !live.contains(id) {
449
+ self.registry.unregister(id: id)
450
+ }
451
+ }
452
+ }
453
+ }
@@ -0,0 +1,22 @@
1
+ import Foundation
2
+
3
+ @available(iOS 16.0, *)
4
+ public final class NavigatorManager {
5
+ public static let shared = NavigatorManager()
6
+ private init() {}
7
+
8
+ private var navigators: [Navigator] = []
9
+
10
+ public func push(_ navigator: Navigator) {
11
+ guard !navigators.contains(where: { $0 === navigator }) else { return }
12
+ navigators.append(navigator)
13
+ }
14
+
15
+ public func remove(_ navigator: Navigator) {
16
+ navigators.removeAll { $0 === navigator }
17
+ }
18
+
19
+ public func checkCanPop() -> Bool { !navigators.isEmpty }
20
+
21
+ public func pop() { navigators.last?.onBackSafe() }
22
+ }