@momo-kits/native-kits 0.0.1-beta.5 → 0.0.2-alpha.1

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 (511) hide show
  1. package/CLAUDE.md +99 -0
  2. package/PUBLISH_GUIDE.md +675 -0
  3. package/README.md +184 -5
  4. package/ios/Application/ApplicationEnvironment.swift +71 -0
  5. package/ios/Application/Components.swift +270 -0
  6. package/ios/Application/ComposeApi.swift +22 -0
  7. package/ios/Application/FloatingButton.swift +174 -0
  8. package/ios/Application/HeaderRight.swift +306 -0
  9. package/ios/Application/LanguageSource.swift +93 -0
  10. package/ios/Application/Localize.swift +378 -0
  11. package/ios/Application/LocalizeModifier.swift +30 -0
  12. package/ios/Application/MaxApi.swift +18 -0
  13. package/ios/Application/Navigation/BottomTab/BottomTab.swift +104 -0
  14. package/ios/Application/Navigation/BottomTab/BottomTabBar.swift +215 -0
  15. package/ios/Application/Navigation/BottomTab/CurvedContainer.swift +65 -0
  16. package/ios/Application/Navigation/HeaderBackProps.swift +66 -0
  17. package/ios/Application/Navigation/HeaderTitle.swift +57 -0
  18. package/ios/Application/Navigation/HeaderUser.swift +209 -0
  19. package/ios/Application/Navigation/NavigationContainer.swift +213 -0
  20. package/ios/Application/Navigation/NavigationOptions.swift +109 -0
  21. package/ios/Application/Navigation/Navigator.swift +453 -0
  22. package/ios/Application/Navigation/NavigatorManager.swift +22 -0
  23. package/ios/Application/Navigation/Overplay/BottomSheet.swift +256 -0
  24. package/ios/Application/Navigation/Overplay/ModalScreen.swift +74 -0
  25. package/ios/Application/Navigation/Overplay/SnackBar.swift +144 -0
  26. package/ios/Application/Navigation/Tracking/ScreenTracker.swift +117 -0
  27. package/ios/Application/Navigation/component/Header.swift +178 -0
  28. package/ios/Application/Navigation/component/HeaderBackground.swift +83 -0
  29. package/ios/Application/Navigation/component/HeaderColor.swift +65 -0
  30. package/ios/Application/Navigation/component/HeaderRightWidthKey.swift +11 -0
  31. package/ios/Application/Navigation/component/NavigationFooter.swift +90 -0
  32. package/ios/Application/Navigation/component/NavigationHeaderRight.swift +196 -0
  33. package/ios/Application/Screen.swift +250 -0
  34. package/ios/Application/StackScreen.swift +492 -0
  35. package/ios/Avatar/Avatar.swift +193 -0
  36. package/ios/Badge/Badge.swift +84 -0
  37. package/ios/Badge/BadgeDot.swift +31 -0
  38. package/ios/Badge/BadgeRibbon.swift +319 -0
  39. package/ios/BaselineView/BaselineView.swift +163 -0
  40. package/ios/Button/Button.swift +232 -84
  41. package/ios/CalculatorKeyboard/CalculatorKeyboard.swift +126 -0
  42. package/ios/Carousel/Carousel.swift +196 -0
  43. package/ios/Checkbox/Checkbox.swift +59 -20
  44. package/ios/Chip/Chip.swift +120 -0
  45. package/ios/Collapse/Collapse.swift +192 -0
  46. package/ios/Colors+Radius+Spacing/Colors.swift +42 -37
  47. package/ios/Colors+Radius+Spacing/Spacing.swift +3 -1
  48. package/ios/Colors+Radius+Spacing/Theme.swift +295 -0
  49. package/ios/DateTimePicker/DateTimePicker.swift +212 -0
  50. package/ios/DateTimePicker/DateTimePickerTypes.swift +55 -0
  51. package/ios/DateTimePicker/DateTimePickerUtils.swift +167 -0
  52. package/ios/DateTimePicker/WheelPicker.swift +165 -0
  53. package/ios/Divider/Divider.swift +16 -0
  54. package/ios/Extensions/ActiveOpacityButtonStyle.swift +14 -0
  55. package/ios/Extensions/Color++.swift +32 -0
  56. package/ios/Icon/Icon.swift +69 -0
  57. package/ios/IconButton/IconButton.swift +140 -0
  58. package/ios/Image/Image.swift +36 -9
  59. package/ios/Information/Information.swift +156 -0
  60. package/ios/Input/ErrorView.swift +58 -0
  61. package/ios/Input/Input.swift +455 -121
  62. package/ios/Input/InputPhoneNumber.swift +192 -0
  63. package/ios/Input/InputSearch.swift +301 -0
  64. package/ios/Input/InputTextArea.swift +318 -0
  65. package/ios/InputDropDown/InputDropDown.swift +201 -0
  66. package/ios/InputMoney/InputMoney.swift +405 -0
  67. package/ios/InputOTP/InputOTP.swift +211 -0
  68. package/ios/Layout/GridContext.swift +30 -0
  69. package/ios/Layout/Item.swift +42 -0
  70. package/ios/Layout/Section.swift +134 -0
  71. package/ios/Loader/Loader.swift +113 -0
  72. package/ios/Lottie/LottieView.swift +86 -0
  73. package/ios/MoMoUIKits.podspec +5 -0
  74. package/ios/OTPKeyboard/KeyboardButton.swift +13 -5
  75. package/ios/Pagination/PaginationDot.swift +61 -0
  76. package/ios/Pagination/PaginationNumber.swift +35 -0
  77. package/ios/Pagination/PaginationScroll.swift +101 -0
  78. package/ios/Pagination/PaginationWhiteDot.swift +37 -0
  79. package/ios/Popup/PopupDisplay.swift +195 -94
  80. package/ios/Popup/PopupInput.swift +92 -0
  81. package/ios/Popup/PopupNotify.swift +219 -0
  82. package/ios/Popup/PopupPromotion.swift +74 -0
  83. package/ios/ProgressInfo/ProgressInfo.swift +297 -0
  84. package/ios/Radio/Radio.swift +69 -0
  85. package/ios/Rating/Rating.swift +83 -0
  86. package/{example/ios/Example/Preview Content/Preview Assets.xcassets/Contents.json → ios/Resources/MoMoUIKitsColors.xcassets/AccentColor.colorset/Contents.json} +5 -0
  87. package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Text.colorset/Contents.json +3 -3
  88. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/Contents.json +9 -0
  89. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-default.colorset/Contents.json +38 -0
  90. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-disable.colorset/Contents.json +38 -0
  91. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-pressed.colorset/Contents.json +38 -0
  92. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-selected.colorset/Contents.json +38 -0
  93. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-surface.colorset/Contents.json +38 -0
  94. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-tonal.colorset/Contents.json +38 -0
  95. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-default.colorset/Contents.json +38 -0
  96. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-disable.colorset/Contents.json +38 -0
  97. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/gradient.colorset/Contents.json +38 -0
  98. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/primary.colorset/Contents.json +38 -0
  99. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/secondary.colorset/Contents.json +38 -0
  100. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-container.colorset/Contents.json +38 -0
  101. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-primary.colorset/Contents.json +38 -0
  102. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-secondary.colorset/Contents.json +38 -0
  103. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-default.colorset/Contents.json +38 -0
  104. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-disable.colorset/Contents.json +38 -0
  105. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-hint.colorset/Contents.json +38 -0
  106. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-secondary.colorset/Contents.json +38 -0
  107. package/ios/ScrollIndicator/ScrollIndicator.swift +110 -0
  108. package/ios/Skeleton/Skeleton.swift +99 -0
  109. package/ios/Slider/Slider.swift +237 -0
  110. package/ios/StatusBarTap/StatusBarTap.h +13 -0
  111. package/ios/StatusBarTap/StatusBarTap.m +75 -0
  112. package/ios/Stepper/Stepper.swift +221 -0
  113. package/ios/Steps/Steps.swift +467 -0
  114. package/ios/SuggestAction/SuggestAction.swift +100 -0
  115. package/ios/Swipeable/SwipeCell.swift +226 -31
  116. package/ios/Swipeable/SwipeCellModel.swift +21 -0
  117. package/ios/Switch/Switch.swift +53 -28
  118. package/ios/TabView/TabView.swift +534 -0
  119. package/ios/Tag/Tag.swift +99 -0
  120. package/ios/Template/Logo/Logo.swift +75 -0
  121. package/ios/Template/TrustBanner/TrustBanner.swift +123 -0
  122. package/ios/Title/Title.swift +270 -0
  123. package/ios/Tooltip/Tooltip.swift +486 -0
  124. package/ios/Typography/FontScale.swift +103 -0
  125. package/ios/Typography/FontScaleStore.swift +58 -0
  126. package/ios/Typography/KitDesignSystem.swift +17 -0
  127. package/ios/Typography/Text.swift +262 -0
  128. package/ios/Typography/Typography.swift +80 -23
  129. package/ios/Uploader/Uploader.swift +174 -0
  130. package/ios/native-kits.podspec +73 -15
  131. package/ios-demo/MoMoUIKitsDemo.podspec +20 -0
  132. package/ios-demo/Resources/dot_loading.json +558 -0
  133. package/ios-demo/Resources/icon.json +4052 -0
  134. package/ios-demo/Resources/lottie_circle_loader.json +1 -0
  135. package/ios-demo/Sources/MoMoUIKitsDemo/DemoScaffold.swift +48 -0
  136. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsBadgeDemoView.swift +25 -0
  137. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsButtonDemoView.swift +26 -0
  138. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsCheckboxDemoView.swift +19 -0
  139. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsChipDemoView.swift +33 -0
  140. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsInputDemoView.swift +48 -0
  141. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsPopupDemoView.swift +21 -0
  142. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsRadioDemoView.swift +17 -0
  143. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsTypographyDemoView.swift +28 -0
  144. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoContext.swift +31 -0
  145. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoFactory.swift +24 -0
  146. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AnimatedHeaderDemo.swift +110 -0
  147. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AvatarDemo.swift +107 -0
  148. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BadgeDemo.swift +75 -0
  149. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BaselineView.swift +117 -0
  150. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BottomTabDemo.swift +89 -0
  151. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ButtonDemo.swift +108 -0
  152. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CarouselDemo.swift +96 -0
  153. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CheckboxDemo.swift +60 -0
  154. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ChipDemo.swift +76 -0
  155. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CollapseDemo.swift +102 -0
  156. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ContentView.swift +107 -0
  157. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DateTimePickerDemo.swift +100 -0
  158. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DemoScreen.swift +420 -0
  159. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DividerDemo.swift +56 -0
  160. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/HeaderUserDemo.swift +49 -0
  161. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/Home.swift +276 -0
  162. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IconButtonDemo.swift +93 -0
  163. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IconDemo.swift +81 -0
  164. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ImageDemo.swift +65 -0
  165. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InformationDemo.swift +96 -0
  166. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDemo.swift +117 -0
  167. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDropDownDemo.swift +94 -0
  168. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputMoneyDemo.swift +94 -0
  169. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputOTPDemo.swift +88 -0
  170. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputPhoneNumberDemo.swift +120 -0
  171. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputSearchDemo.swift +85 -0
  172. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputTextAreaDemo.swift +87 -0
  173. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LoaderDemo.swift +73 -0
  174. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LocalizeDemo.swift +235 -0
  175. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift +241 -0
  176. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PaginationDemo.swift +68 -0
  177. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PlaygroundData.swift +76 -0
  178. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupDisplayDemo.swift +175 -0
  179. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupNotifyDemo.swift +95 -0
  180. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupPromotionDemo.swift +67 -0
  181. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ProgressInfoDemo.swift +101 -0
  182. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RadioDemo.swift +64 -0
  183. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RatingDemo.swift +68 -0
  184. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SectionDemo.swift +83 -0
  185. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SkeletonDemo.swift +61 -0
  186. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SliderDemo.swift +90 -0
  187. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SnackBarDemo.swift +82 -0
  188. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepperDemo.swift +93 -0
  189. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepsDemo.swift +114 -0
  190. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SuggestActionDemo.swift +90 -0
  191. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwipeDemo.swift +107 -0
  192. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwitchDemo.swift +58 -0
  193. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TabViewDemo.swift +114 -0
  194. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TagDemo.swift +86 -0
  195. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ThemeDemo.swift +181 -0
  196. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TitleDemo.swift +104 -0
  197. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TooltipDemo.swift +118 -0
  198. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TypographyDemo.swift +87 -0
  199. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/UploaderDemo.swift +85 -0
  200. package/ios-demo/Sources/MoMoUIKitsDemo/SwiftUIDemoBrowserView.swift +53 -0
  201. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoModels.swift +15 -0
  202. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoRegistry.swift +73 -0
  203. package/package.json +6 -6
  204. package/publish.sh +554 -20
  205. package/scripts/gen-ios-color.mjs +136 -0
  206. package/CODE_OF_CONDUCT.md +0 -133
  207. package/CONTRIBUTING.md +0 -114
  208. package/LICENSE +0 -20
  209. package/android/build.gradle +0 -82
  210. package/android/gradle.properties +0 -5
  211. package/android/src/main/AndroidManifest.xml +0 -4
  212. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsPackage.kt +0 -17
  213. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsViewManager.kt +0 -20
  214. package/example/ios/Example/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -63
  215. package/example/ios/Example/ComponentDetail.swift +0 -35
  216. package/example/ios/Example/ComponentItem.swift +0 -24
  217. package/example/ios/Example/ComponentModel.swift +0 -38
  218. package/example/ios/Example/ContentView.swift +0 -39
  219. package/example/ios/Example/Example.entitlements +0 -10
  220. package/example/ios/Example/Foundation/ButtonDemo.swift +0 -80
  221. package/example/ios/Example/Foundation/ImageDemo.swift +0 -43
  222. package/example/ios/Example/Foundation/Popup/ActionSheets.swift +0 -136
  223. package/example/ios/Example/Foundation/Popup/Floats.swift +0 -127
  224. package/example/ios/Example/Foundation/Popup/Popups.swift +0 -51
  225. package/example/ios/Example/Foundation/PopupDemo.swift +0 -389
  226. package/example/ios/Example/Foundation/TextInputDemo.swift +0 -36
  227. package/example/ios/Example/Foundation/TypographyDemo.swift +0 -53
  228. package/example/ios/Example/Foundation.swift +0 -26
  229. package/example/ios/Example/Info.plist +0 -18
  230. package/example/ios/Example/Library/CheckboxDemo.swift +0 -19
  231. package/example/ios/Example/Library/SwipeableDemo.swift +0 -105
  232. package/example/ios/Example/Library/SwitchDemo.swift +0 -19
  233. package/example/ios/Example/Library.swift +0 -26
  234. package/example/ios/Example/Main.swift +0 -27
  235. package/example/ios/Example/Overview.swift +0 -20
  236. package/example/ios/Example/Resource/SFProText-Black.ttf +0 -0
  237. package/example/ios/Example/Resource/SFProText-Bold.ttf +0 -0
  238. package/example/ios/Example/Resource/SFProText-Heavy.ttf +0 -0
  239. package/example/ios/Example/Resource/SFProText-Light.ttf +0 -0
  240. package/example/ios/Example/Resource/SFProText-Medium.ttf +0 -0
  241. package/example/ios/Example/Resource/SFProText-Regular.ttf +0 -0
  242. package/example/ios/Example/Resource/SFProText-Semibold.ttf +0 -0
  243. package/example/ios/Example/Resource/SFProText-Thin.ttf +0 -0
  244. package/example/ios/Example/Resource/SFProText-Ultralight.ttf +0 -0
  245. package/example/ios/Example/Resource/foundation.json +0 -33
  246. package/example/ios/Example/Resource/library.json +0 -18
  247. package/example/ios/Example/Utils.swift +0 -30
  248. package/example/ios/Example/ViewModifier/DarkViewModifier.swift +0 -22
  249. package/example/ios/Example.xcodeproj/project.pbxproj +0 -581
  250. package/example/ios/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  251. package/example/ios/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  252. package/example/ios/Example.xcodeproj/project.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  253. package/example/ios/Example.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  254. package/example/ios/Example.xcworkspace/contents.xcworkspacedata +0 -10
  255. package/example/ios/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  256. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  257. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
  258. package/example/ios/Podfile +0 -7
  259. package/example/ios/Podfile.lock +0 -35
  260. package/example/ios/Pods/Local Podspecs/MoMoUIKits.podspec.json +0 -37
  261. package/example/ios/Pods/Manifest.lock +0 -35
  262. package/example/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -2047
  263. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  264. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  265. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
  266. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
  267. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
  268. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
  269. package/example/ios/Pods/SDWebImage/LICENSE +0 -20
  270. package/example/ios/Pods/SDWebImage/README.md +0 -352
  271. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.h +0 -340
  272. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.m +0 -172
  273. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h +0 -63
  274. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +0 -165
  275. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h +0 -67
  276. package/example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +0 -120
  277. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h +0 -114
  278. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +0 -392
  279. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h +0 -112
  280. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m +0 -420
  281. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h +0 -23
  282. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +0 -133
  283. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.h +0 -168
  284. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.m +0 -79
  285. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h +0 -110
  286. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m +0 -540
  287. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h +0 -145
  288. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +0 -326
  289. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h +0 -73
  290. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m +0 -256
  291. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h +0 -19
  292. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +0 -58
  293. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.h +0 -23
  294. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.m +0 -98
  295. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h +0 -450
  296. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +0 -1030
  297. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +0 -153
  298. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m +0 -68
  299. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h +0 -156
  300. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +0 -138
  301. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.h +0 -81
  302. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.m +0 -556
  303. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h +0 -297
  304. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m +0 -26
  305. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +0 -153
  306. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +0 -822
  307. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.h +0 -58
  308. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m +0 -130
  309. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.h +0 -36
  310. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m +0 -28
  311. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h +0 -22
  312. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +0 -58
  313. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h +0 -28
  314. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m +0 -127
  315. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h +0 -25
  316. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m +0 -101
  317. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h +0 -58
  318. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m +0 -807
  319. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.h +0 -30
  320. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +0 -420
  321. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h +0 -146
  322. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +0 -170
  323. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.h +0 -40
  324. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.m +0 -123
  325. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.h +0 -241
  326. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.m +0 -331
  327. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h +0 -78
  328. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m +0 -158
  329. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.h +0 -32
  330. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m +0 -39
  331. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h +0 -36
  332. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m +0 -39
  333. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.h +0 -95
  334. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m +0 -17
  335. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +0 -352
  336. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +0 -149
  337. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +0 -314
  338. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +0 -658
  339. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h +0 -113
  340. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m +0 -60
  341. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h +0 -49
  342. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m +0 -55
  343. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h +0 -191
  344. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +0 -722
  345. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h +0 -69
  346. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m +0 -71
  347. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h +0 -69
  348. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m +0 -73
  349. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +0 -32
  350. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m +0 -16
  351. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.h +0 -115
  352. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +0 -275
  353. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h +0 -290
  354. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +0 -775
  355. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h +0 -27
  356. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m +0 -14
  357. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.h +0 -72
  358. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m +0 -59
  359. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.h +0 -143
  360. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.m +0 -303
  361. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.h +0 -131
  362. package/example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.m +0 -194
  363. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.h +0 -387
  364. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.m +0 -234
  365. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h +0 -24
  366. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m +0 -23
  367. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.h +0 -46
  368. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m +0 -60
  369. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h +0 -26
  370. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m +0 -22
  371. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.h +0 -27
  372. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m +0 -47
  373. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h +0 -89
  374. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m +0 -221
  375. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.h +0 -80
  376. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m +0 -47
  377. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.h +0 -146
  378. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +0 -824
  379. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.h +0 -129
  380. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.m +0 -76
  381. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.h +0 -194
  382. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.m +0 -67
  383. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h +0 -110
  384. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +0 -446
  385. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h +0 -48
  386. package/example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m +0 -82
  387. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h +0 -24
  388. package/example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m +0 -42
  389. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h +0 -14
  390. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m +0 -29
  391. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h +0 -21
  392. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m +0 -92
  393. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h +0 -18
  394. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m +0 -32
  395. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h +0 -29
  396. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m +0 -227
  397. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h +0 -19
  398. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m +0 -127
  399. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.h +0 -23
  400. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m +0 -164
  401. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h +0 -21
  402. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m +0 -83
  403. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h +0 -39
  404. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.h +0 -122
  405. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m +0 -13
  406. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h +0 -20
  407. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.m +0 -79
  408. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h +0 -19
  409. package/example/ios/Pods/SDWebImage/SDWebImage/Private/SDmetamacros.h +0 -667
  410. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h +0 -18
  411. package/example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m +0 -42
  412. package/example/ios/Pods/SDWebImage/WebImage/SDWebImage.h +0 -89
  413. package/example/ios/Pods/SDWebImageSwiftUI/LICENSE +0 -19
  414. package/example/ios/Pods/SDWebImageSwiftUI/README.md +0 -690
  415. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/AnimatedImage.swift +0 -870
  416. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Backport.swift +0 -59
  417. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/OnChange.swift +0 -52
  418. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Overlay.swift +0 -124
  419. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/StateObject.swift +0 -151
  420. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Image.swift +0 -78
  421. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageManager.swift +0 -132
  422. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImagePlayer.swift +0 -122
  423. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/ImageViewWrapper.swift +0 -133
  424. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ActivityIndicator.swift +0 -82
  425. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/Indicator.swift +0 -97
  426. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Indicator/ProgressIndicator.swift +0 -114
  427. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SDWebImageSwiftUI.swift +0 -64
  428. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SwiftUICompatibility.swift +0 -92
  429. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Transition/Transition.swift +0 -93
  430. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/WebImage.swift +0 -509
  431. package/example/ios/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Module/SDWebImageSwiftUI.h +0 -15
  432. package/example/ios/Pods/SkeletonUI/LICENSE +0 -21
  433. package/example/ios/Pods/SkeletonUI/README.md +0 -137
  434. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AngleInteractor.swift +0 -29
  435. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Angle/AnglePresenter.swift +0 -7
  436. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Animation/AnimationInteractor.swift +0 -56
  437. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearanceInteractor.swift +0 -58
  438. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Appearance/AppearancePresenter.swift +0 -5
  439. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ClosedRange+Normalize.swift +0 -16
  440. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Image+OptionalType.swift +0 -102
  441. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/ModifiedContent+SkeletonModifier.swift +0 -26
  442. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Optional+OptionalType.swift +0 -5
  443. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/SecureField+OptionalType.swift +0 -19
  444. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Text+OptionalType.swift +0 -27
  445. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/TextField+OptionalType.swift +0 -35
  446. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/Toggle+OptionalType.swift +0 -29
  447. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/UnitPoint+Angle.swift +0 -8
  448. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Extensions/View+SkeletonModifier.swift +0 -8
  449. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Modifiers/SkeletonModifier.swift +0 -52
  450. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilineInteractor.swift +0 -41
  451. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Multiline/MultilinePresenter.swift +0 -9
  452. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityInteractor.swift +0 -29
  453. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Opacity/OpacityPresenter.swift +0 -7
  454. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionInteractor.swift +0 -29
  455. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Position/PositionPresenter.swift +0 -7
  456. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Protocols/OptionalType.swift +0 -4
  457. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusInteractor.swift +0 -29
  458. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Radius/RadiusPresenter.swift +0 -7
  459. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapeInteractor.swift +0 -33
  460. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Shape/ShapePresenter.swift +0 -5
  461. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonForEach.swift +0 -20
  462. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonInteractor.swift +0 -27
  463. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonList.swift +0 -20
  464. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonPresenter.swift +0 -15
  465. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonShape.swift +0 -64
  466. package/example/ios/Pods/SkeletonUI/Sources/SkeletonUI/Skeleton/SkeletonView.swift +0 -25
  467. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-dummy.m +0 -5
  468. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-prefix.pch +0 -12
  469. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-umbrella.h +0 -16
  470. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.debug.xcconfig +0 -15
  471. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.modulemap +0 -6
  472. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.release.xcconfig +0 -15
  473. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown +0 -75
  474. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist +0 -119
  475. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m +0 -5
  476. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h +0 -16
  477. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig +0 -15
  478. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap +0 -6
  479. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig +0 -15
  480. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m +0 -5
  481. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch +0 -12
  482. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h +0 -75
  483. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig +0 -14
  484. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap +0 -6
  485. package/example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig +0 -14
  486. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-dummy.m +0 -5
  487. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-prefix.pch +0 -12
  488. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-umbrella.h +0 -17
  489. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.debug.xcconfig +0 -17
  490. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.modulemap +0 -6
  491. package/example/ios/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.release.xcconfig +0 -17
  492. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-dummy.m +0 -5
  493. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-prefix.pch +0 -12
  494. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI-umbrella.h +0 -16
  495. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.debug.xcconfig +0 -12
  496. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.modulemap +0 -6
  497. package/example/ios/Pods/Target Support Files/SkeletonUI/SkeletonUI.release.xcconfig +0 -12
  498. package/ios/Extensions/View++.swift +0 -9
  499. package/ios/Theme.md +0 -18
  500. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Background.colorset/Contents.json +0 -0
  501. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Border.colorset/Contents.json +0 -0
  502. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Card.colorset/Contents.json +0 -0
  503. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Contents.json +0 -0
  504. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Error.colorset/Contents.json +0 -0
  505. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Primary.colorset/Contents.json +0 -0
  506. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/PrimaryDark.colorset/Contents.json +0 -0
  507. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/PrimaryLight.colorset/Contents.json +0 -0
  508. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Secondary.colorset/Contents.json +0 -0
  509. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Success.colorset/Contents.json +0 -0
  510. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/TextSecondary.colorset/Contents.json +0 -0
  511. /package/{example/ios/Example/Assets.xcassets → ios/Resources/MoMoUIKitsColors.xcassets}/Warning.colorset/Contents.json +0 -0
@@ -0,0 +1,262 @@
1
+ import SwiftUI
2
+
3
+ /// Non-reactive entry point, for call sites that cannot read the environment (UIKit bridges,
4
+ /// free functions). Inside a SwiftUI view prefer `@Environment(\.momoFontScale)` so the view
5
+ /// re-renders when Dynamic Type or the host preference changes.
6
+ public func scaleSize(_ size: CGFloat) -> CGFloat {
7
+ FontScaleStore.shared.snapshot(size)
8
+ }
9
+
10
+ @available(*, deprecated, message: "Max font scale is fixed at 1.5; this override is no longer applied. Drop the second argument.")
11
+ public func scaleSize(_ size: CGFloat, _ scaleRate: CGFloat?) -> CGFloat {
12
+ scaleSize(size)
13
+ }
14
+
15
+ public enum TypographyStyle {
16
+ case headlineDefaultBold
17
+ case headerMBold
18
+ case headerDefaultBold
19
+ case headerSSemibold
20
+ case headerXsSemibold
21
+ case bodyDefaultRegular
22
+ case bodyDefaultRegularStrikethrough
23
+ case descriptionDefaultRegular
24
+ case descriptionDefaultRegularStrikethrough
25
+ case descriptionXsRegular
26
+ case descriptionXsRegularStrikethrough
27
+ case labelDefaultMedium
28
+ case labelSMedium
29
+ case labelXsMedium
30
+ case actionDefaultBold
31
+ case actionSBold
32
+ case actionXsBold
33
+ case actionXxsBold
34
+ }
35
+
36
+ public extension TypographyStyle {
37
+ var fontSize: CGFloat {
38
+ switch self {
39
+ case .headlineDefaultBold: return 24
40
+ case .headerMBold: return 18
41
+ case .headerDefaultBold: return 16
42
+ case .headerSSemibold: return 14
43
+ case .headerXsSemibold: return 12
44
+ case .bodyDefaultRegular, .bodyDefaultRegularStrikethrough: return 14
45
+ case .descriptionDefaultRegular, .descriptionDefaultRegularStrikethrough: return 12
46
+ case .descriptionXsRegular, .descriptionXsRegularStrikethrough: return 10
47
+ case .labelDefaultMedium: return 14
48
+ case .labelSMedium: return 12
49
+ case .labelXsMedium: return 10
50
+ case .actionDefaultBold: return 16
51
+ case .actionSBold: return 14
52
+ case .actionXsBold: return 12
53
+ case .actionXxsBold: return 10
54
+ }
55
+ }
56
+ var lineHeight: CGFloat {
57
+ switch self {
58
+ case .headlineDefaultBold: return 34
59
+ case .headerMBold: return 26
60
+ case .headerDefaultBold: return 22
61
+ case .headerSSemibold: return 20
62
+ case .headerXsSemibold: return 18
63
+ case .bodyDefaultRegular, .bodyDefaultRegularStrikethrough: return 20
64
+ case .descriptionDefaultRegular, .descriptionDefaultRegularStrikethrough: return 18
65
+ case .descriptionXsRegular, .descriptionXsRegularStrikethrough: return 14
66
+ case .labelDefaultMedium: return 20
67
+ case .labelSMedium: return 18
68
+ case .labelXsMedium: return 14
69
+ case .actionDefaultBold: return 22
70
+ case .actionSBold: return 20
71
+ case .actionXsBold: return 18
72
+ case .actionXxsBold: return 14
73
+ }
74
+ }
75
+ var fontWeight: Font.Weight {
76
+ switch self {
77
+ case .headlineDefaultBold, .headerMBold, .headerDefaultBold,
78
+ .actionDefaultBold, .actionSBold, .actionXsBold, .actionXxsBold:
79
+ return .bold
80
+ case .headerSSemibold, .headerXsSemibold:
81
+ return .semibold
82
+ case .bodyDefaultRegular, .bodyDefaultRegularStrikethrough,
83
+ .descriptionDefaultRegular, .descriptionDefaultRegularStrikethrough,
84
+ .descriptionXsRegular, .descriptionXsRegularStrikethrough:
85
+ return .regular
86
+ case .labelDefaultMedium, .labelSMedium, .labelXsMedium:
87
+ return .medium
88
+ }
89
+ }
90
+ var isStrikethrough: Bool {
91
+ switch self {
92
+ case .bodyDefaultRegularStrikethrough,
93
+ .descriptionDefaultRegularStrikethrough,
94
+ .descriptionXsRegularStrikethrough:
95
+ return true
96
+ default:
97
+ return false
98
+ }
99
+ }
100
+ }
101
+
102
+ private func momoFontName(family: String, weight: Font.Weight) -> String? {
103
+ // Ngoai whitelist thi tra nil de momoFont() roi ve .system(...), dung nhu truoc DS-791.
104
+ guard KitDesignSystem.shared.isWhiteList else { return nil }
105
+ guard family == "MomoTrustSans" else { return nil }
106
+ switch weight {
107
+ case .ultraLight, .thin: return "MomoTrustSans-ExtraLight"
108
+ case .light: return "MomoTrustSans-Light"
109
+ case .regular: return "MomoTrustSans-Regular"
110
+ case .medium: return "MomoTrustSans-Medium"
111
+ case .semibold: return "MomoTrustSans-SemiBold"
112
+ case .bold: return "MomoTrustSans-Bold"
113
+ case .heavy, .black: return "MomoTrustSans-ExtraBold"
114
+ default: return "MomoTrustSans-Regular"
115
+ }
116
+ }
117
+
118
+ private func momoFont(size: CGFloat, weight: Font.Weight, family: String) -> Font {
119
+ guard let name = momoFontName(family: family, weight: weight),
120
+ UIFont(name: name, size: size) != nil else {
121
+ return .system(size: size, weight: weight)
122
+ }
123
+ return .custom(name, fixedSize: size)
124
+ }
125
+
126
+ public struct MomoText: View {
127
+ @Environment(\.appTheme) private var theme
128
+ @Environment(\.momoFontScale) private var fontScale
129
+ private let content: String
130
+ private let typography: TypographyStyle
131
+ private let color: Color?
132
+ private let textAlign: TextAlignment
133
+ private let maxLines: Int
134
+ private let minLines: Int
135
+ private let lineLimitRange: ClosedRange<Int>?
136
+ private let truncationMode: Text.TruncationMode
137
+ private let strikethrough: Bool
138
+ private let underline: Bool
139
+ private let letterSpacing: CGFloat?
140
+ private let softWrap: Bool
141
+ private let accessibilityId: String?
142
+ private var highlightText: [String] = []
143
+
144
+ public init(
145
+ _ content: String,
146
+ typography: TypographyStyle = .bodyDefaultRegular,
147
+ color: Color? = nil,
148
+ textAlign: TextAlignment = .leading,
149
+ maxLines: Int = Int.max,
150
+ minLines: Int = 1,
151
+ truncationMode: Text.TruncationMode = .tail,
152
+ strikethrough: Bool = false,
153
+ underline: Bool = false,
154
+ letterSpacing: CGFloat? = nil,
155
+ softWrap: Bool = true,
156
+ accessibilityId: String? = nil
157
+ ) {
158
+ self.content = content
159
+ self.typography = typography
160
+ self.color = color
161
+ self.textAlign = textAlign
162
+ self.maxLines = maxLines
163
+ self.minLines = minLines
164
+ // SwiftUI's range-based `lineLimit` is iOS 16+ only; keep the range for
165
+ // newer OS versions and fall back to the legacy single-value overload.
166
+ if maxLines == Int.max && minLines <= 1 {
167
+ self.lineLimitRange = nil
168
+ } else {
169
+ let upper = maxLines == Int.max ? Int.max : Swift.max(maxLines, minLines)
170
+ self.lineLimitRange = Swift.max(1, minLines)...upper
171
+ }
172
+ self.truncationMode = truncationMode
173
+ self.strikethrough = strikethrough
174
+ self.underline = underline
175
+ self.letterSpacing = letterSpacing
176
+ self.softWrap = softWrap
177
+ self.accessibilityId = accessibilityId
178
+ }
179
+
180
+ init(_ content: String, typography: TypographyStyle, highlightText: [String]) {
181
+ self.init(content, typography: typography)
182
+ self.highlightText = highlightText
183
+ }
184
+
185
+ // Whole-word matches of `highlightText` render semibold; the longest keyword wins (RN parity).
186
+ private var baseText: SwiftUI.Text {
187
+ let keywords = highlightText.filter { !$0.isEmpty }.sorted { $0.count > $1.count }
188
+ guard !keywords.isEmpty else { return SwiftUI.Text(content) }
189
+ let highlightFont = momoFont(size: fontScale(typography.fontSize), weight: TypographyStyle.headerXsSemibold.fontWeight, family: theme.font)
190
+ func isWordChar(_ character: Character?) -> Bool {
191
+ guard let character else { return false }
192
+ return character.isLetter || character.isNumber || character == "_"
193
+ }
194
+
195
+ var result = SwiftUI.Text(verbatim: "")
196
+ var plainStart = content.startIndex
197
+ var index = content.startIndex
198
+ while index < content.endIndex {
199
+ let previous = index > content.startIndex ? content[content.index(before: index)] : nil
200
+ let keyword = isWordChar(previous) ? nil : keywords.first { keyword in
201
+ guard content[index...].hasPrefix(keyword) else { return false }
202
+ let end = content.index(index, offsetBy: keyword.count)
203
+ return !isWordChar(end < content.endIndex ? content[end] : nil)
204
+ }
205
+ guard let keyword else {
206
+ index = content.index(after: index)
207
+ continue
208
+ }
209
+ let end = content.index(index, offsetBy: keyword.count)
210
+ result = result
211
+ + SwiftUI.Text(verbatim: String(content[plainStart..<index]))
212
+ + SwiftUI.Text(verbatim: String(content[index..<end])).font(highlightFont)
213
+ plainStart = end
214
+ index = end
215
+ }
216
+ return result + SwiftUI.Text(verbatim: String(content[plainStart...]))
217
+ }
218
+
219
+ public var body: some View {
220
+ let textColor = color ?? theme.colors.text.default
221
+ // Strikethrough is driven either by the typography variant (mirrors Compose
222
+ // *Strikethrough styles) or the explicit `strikethrough` flag.
223
+ let isStrikethrough = strikethrough || typography.isStrikethrough
224
+
225
+ var text = baseText
226
+ .font(momoFont(size: fontScale(typography.fontSize), weight: typography.fontWeight, family: theme.font))
227
+ .foregroundColor(textColor)
228
+ .strikethrough(isStrikethrough, color: textColor)
229
+ .underline(underline, color: textColor)
230
+
231
+ if let letterSpacing = letterSpacing {
232
+ text = text.tracking(letterSpacing)
233
+ }
234
+
235
+ return text
236
+ .multilineTextAlignment(textAlign)
237
+ .lineSpacing(fontScale(typography.lineHeight) - fontScale(typography.fontSize))
238
+ .modifier(LineLimitModifier(range: lineLimitRange))
239
+ .truncationMode(truncationMode)
240
+ .fixedSize(horizontal: !softWrap, vertical: false)
241
+ .accessibilityIdentifier(accessibilityId ?? content)
242
+ .ignoreBoldTextSetting()
243
+ }
244
+ }
245
+
246
+ // Applies a line-limit range only on iOS 16+. Older targets use the legacy
247
+ // single-value overload so the file still compiles for iOS 15.
248
+ private struct LineLimitModifier: ViewModifier {
249
+ let range: ClosedRange<Int>?
250
+
251
+ func body(content: Content) -> some View {
252
+ if let range = range {
253
+ if #available(iOS 16.0, *) {
254
+ content.lineLimit(range)
255
+ } else {
256
+ content.lineLimit(range.upperBound)
257
+ }
258
+ } else {
259
+ content
260
+ }
261
+ }
262
+ }
@@ -1,30 +1,87 @@
1
1
  import SwiftUI
2
2
 
3
+ public extension View {
4
+ /// Forces SwiftUI to ignore the OS "Bold Text" accessibility setting so the
5
+ /// kit's typography weight stays fixed and matches the Compose implementation
6
+ /// (which does not honor that OS setting). Apply it wherever a `.font(...)` is set.
7
+ func ignoreBoldTextSetting() -> some View {
8
+ environment(\.legibilityWeight, .regular)
9
+ }
10
+ }
11
+
3
12
  public extension Font {
13
+ /// Non-reactive: resolves against the current `FontScaleStore` snapshot at each access. The
14
+ /// styles below are computed properties for that reason — as stored `static let`s they would
15
+ /// freeze the scale at first access and never pick up a Dynamic Type change.
16
+ /// Inside a view, `@Environment(\.momoFontScale)` + `fontScale.font(size:weight:)` also re-renders.
4
17
  static func appFont(size: CGFloat) -> Font {
5
- return Font.custom("SFProText", size: size)
18
+ FontScaleStore.shared.snapshot.font(size: size)
6
19
  }
7
20
 
8
- static let h1 = appFont(size: 36).weight(.semibold)
9
- static let h2 = appFont(size: 32).weight(.semibold)
10
- static let h3 = appFont(size: 28).weight(.semibold)
11
- static let h4 = appFont(size: 24).weight(.semibold)
12
- static let title1 = appFont(size: 20).weight(.bold)
13
- static let title2 = appFont(size: 18).weight(.bold)
14
- static let title3 = appFont(size: 16).weight(.bold)
15
- static let headerText1 = appFont(size: 15).weight(.semibold)
16
- static let headerText2 = appFont(size: 14).weight(.semibold)
17
- static let headerText3 = appFont(size: 12).weight(.semibold)
18
- static let paragraph = appFont(size: 15).weight(.regular)
19
- static let description1 = appFont(size: 14).weight(.regular)
20
- static let description2 = appFont(size: 12).weight(.regular)
21
- static let description3 = appFont(size: 10).weight(.regular)
22
- static let label1 = appFont(size: 14).weight(.medium)
23
- static let label2 = appFont(size: 12).weight(.medium)
24
- static let label3 = appFont(size: 10).weight(.medium)
25
- static let label4 = appFont(size: 8).weight(.medium)
26
- static let action1 = appFont(size: 16).weight(.bold)
27
- static let action2 = appFont(size: 15).weight(.bold)
28
- static let action3 = appFont(size: 12).weight(.bold)
29
- static let action4 = appFont(size: 10).weight(.bold)
21
+ // New supported typography styles
22
+ static var headline_default_bold: Font { appFont(size: 24).weight(.bold) }
23
+ static var header_m_bold: Font { appFont(size: 18).weight(.bold) }
24
+ static var header_default_bold: Font { appFont(size: 16).weight(.bold) }
25
+ static var header_default_semibold: Font { appFont(size: 16).weight(.semibold) }
26
+ static var header_s_semibold: Font { appFont(size: 14).weight(.semibold) }
27
+ static var header_xs_semibold: Font { appFont(size: 12).weight(.semibold) }
28
+ static var body_default_regular: Font { appFont(size: 14).weight(.regular) }
29
+ static var description_default_regular: Font { appFont(size: 12).weight(.regular) }
30
+ static var description_xs_regular: Font { appFont(size: 10).weight(.regular) }
31
+ static var label_default_medium: Font { appFont(size: 14).weight(.medium) }
32
+ static var label_s_medium: Font { appFont(size: 12).weight(.medium) }
33
+ static var label_xs_medium: Font { appFont(size: 10).weight(.medium) }
34
+ static var action_default_bold: Font { appFont(size: 16).weight(.bold) }
35
+ static var action_s_bold: Font { appFont(size: 14).weight(.bold) }
36
+ static var action_xs_bold: Font { appFont(size: 12).weight(.bold) }
37
+ static var action_xxs_bold: Font { appFont(size: 10).weight(.bold) }
38
+
39
+ // Legacy styles
40
+ static var headline_default: Font { appFont(size: 28).weight(.semibold) }
41
+ static var headline_s: Font { appFont(size: 24).weight(.semibold) }
42
+ static var headline_l: Font { appFont(size: 32).weight(.semibold) }
43
+ static var headline_xl: Font { appFont(size: 36).weight(.semibold) }
44
+ static var title_default: Font { appFont(size: 20).weight(.bold) }
45
+ static var title_xs: Font { appFont(size: 16).weight(.bold) }
46
+ static var title_s: Font { appFont(size: 18).weight(.bold) }
47
+ static var header_default: Font { appFont(size: 15).weight(.semibold) }
48
+ static var header_xs: Font { appFont(size: 12).weight(.semibold) }
49
+ static var header_s: Font { appFont(size: 14).weight(.semibold) }
50
+ static var paragraph_default: Font { appFont(size: 15).weight(.regular) }
51
+ static var paragraph_bold: Font { appFont(size: 15).weight(.bold) }
52
+ static var description_default: Font { appFont(size: 14).weight(.regular) }
53
+ static var description_xs: Font { appFont(size: 10).weight(.regular) }
54
+ static var description_s: Font { appFont(size: 12).weight(.regular) }
55
+ static var label_default: Font { appFont(size: 14).weight(.medium) }
56
+ static var label_xxs: Font { appFont(size: 8).weight(.medium) }
57
+ static var label_xs: Font { appFont(size: 10).weight(.medium) }
58
+ static var label_s: Font { appFont(size: 12).weight(.medium) }
59
+ static var action_default: Font { appFont(size: 16).weight(.bold) }
60
+ static var action_xxs: Font { appFont(size: 10).weight(.bold) }
61
+ static var action_xs: Font { appFont(size: 12).weight(.bold) }
62
+ static var action_s: Font { appFont(size: 15).weight(.bold) }
63
+
64
+ // deprecated
65
+ static var h1: Font { appFont(size: 36).weight(.semibold) } //headline_xl
66
+ static var h2: Font { appFont(size: 32).weight(.semibold) }
67
+ static var h3: Font { appFont(size: 28).weight(.semibold) }
68
+ static var h4: Font { appFont(size: 24).weight(.semibold) }
69
+ static var title1: Font { appFont(size: 20).weight(.bold) }
70
+ static var title2: Font { appFont(size: 18).weight(.bold) }
71
+ static var title3: Font { appFont(size: 16).weight(.bold) }
72
+ static var headerText1: Font { appFont(size: 15).weight(.semibold) } //header_default
73
+ static var headerText2: Font { appFont(size: 14).weight(.semibold) }
74
+ static var headerText3: Font { appFont(size: 12).weight(.semibold) }
75
+ static var paragraph: Font { appFont(size: 15).weight(.regular) } //paragraph_default
76
+ static var description1: Font { appFont(size: 14).weight(.regular) }
77
+ static var description2: Font { appFont(size: 12).weight(.regular) }
78
+ static var description3: Font { appFont(size: 10).weight(.regular) }
79
+ static var label1: Font { appFont(size: 14).weight(.medium) }
80
+ static var label2: Font { appFont(size: 12).weight(.medium) }
81
+ static var label3: Font { appFont(size: 10).weight(.medium) }
82
+ static var label4: Font { appFont(size: 8).weight(.medium) }
83
+ static var action1: Font { appFont(size: 16).weight(.bold) }
84
+ static var action2: Font { appFont(size: 15).weight(.bold) }
85
+ static var action3: Font { appFont(size: 12).weight(.bold) }
86
+ static var action4: Font { appFont(size: 10).weight(.bold) }
30
87
  }
@@ -0,0 +1,174 @@
1
+ import SwiftUI
2
+
3
+ /// Native SwiftUI port of the Compose `Uploader` component.
4
+ ///
5
+ /// Renders a horizontal row with an optional dashed "add image" picker cell
6
+ /// followed by a horizontally scrollable list of uploaded image thumbnails.
7
+ /// Each thumbnail can show a loading shimmer overlay and an optional cancel
8
+ /// button.
9
+ ///
10
+ /// Mirrors the Compose surface in
11
+ /// `compose/.../components/Uploader.kt`:
12
+ /// - `images`, `numberOfImages`, `disabled`, `width`, `height`
13
+ /// - callbacks `onAdd`, `onCancel`, `onPressImage`
14
+ ///
15
+ /// Note: like Compose, this component does NOT perform any native photo-picker
16
+ /// or file-system access. It exposes the `onAdd` callback so the host can
17
+ /// present a picker and supply the resulting image data back via the `images`
18
+ /// list (the demo passes mock image URLs).
19
+ public struct UploadImage: Identifiable {
20
+ public let id = UUID()
21
+ public var uri: String?
22
+ public var loading: Bool
23
+
24
+ public init(uri: String? = nil, loading: Bool = false) {
25
+ self.uri = uri
26
+ self.loading = loading
27
+ }
28
+ }
29
+
30
+ public struct Uploader: View {
31
+ // MARK: Properties
32
+
33
+ private let images: [UploadImage]
34
+ private let numberOfImages: Int
35
+ private let disabled: Bool
36
+ private let width: CGFloat
37
+ private let height: CGFloat
38
+ private let onAdd: () -> Void
39
+ private let onCancel: ((UploadImage, Int) -> Void)?
40
+ private let onPressImage: (UploadImage, Int) -> Void
41
+
42
+ // MARK: Lifecycle
43
+
44
+ public init(
45
+ images: [UploadImage],
46
+ numberOfImages: Int = 1,
47
+ disabled: Bool = false,
48
+ width: CGFloat = 64,
49
+ height: CGFloat = 64,
50
+ onAdd: @escaping () -> Void = {},
51
+ onCancel: ((UploadImage, Int) -> Void)? = nil,
52
+ onPressImage: @escaping (UploadImage, Int) -> Void = { _, _ in }
53
+ ) {
54
+ self.images = images
55
+ self.numberOfImages = numberOfImages
56
+ self.disabled = disabled
57
+ self.width = width
58
+ self.height = height
59
+ self.onAdd = onAdd
60
+ self.onCancel = onCancel
61
+ self.onPressImage = onPressImage
62
+ }
63
+
64
+ // MARK: Body
65
+
66
+ private var shouldShowPicker: Bool {
67
+ images.count < numberOfImages
68
+ }
69
+
70
+ public var body: some View {
71
+ HStack(alignment: .top, spacing: Spacing.S) {
72
+ if shouldShowPicker {
73
+ UploaderPickerCell(
74
+ disabled: disabled,
75
+ width: width,
76
+ height: height,
77
+ onAdd: onAdd
78
+ )
79
+ }
80
+
81
+ ScrollView(.horizontal, showsIndicators: false) {
82
+ HStack(alignment: .top, spacing: Spacing.S) {
83
+ ForEach(Array(images.enumerated()), id: \.element.id) { index, image in
84
+ UploaderImageItem(
85
+ image: image,
86
+ width: width,
87
+ height: height,
88
+ index: index,
89
+ onCancel: onCancel,
90
+ onPressImage: { onPressImage(image, index) }
91
+ )
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ // MARK: - Picker cell
100
+
101
+ private struct UploaderPickerCell: View {
102
+ @Environment(\.appTheme) private var theme
103
+
104
+ let disabled: Bool
105
+ let width: CGFloat
106
+ let height: CGFloat
107
+ let onAdd: () -> Void
108
+
109
+ // text.disable / text.hint and border.disable / border.default tokens.
110
+ private var mainColor: Color { disabled ? theme.colors.text.disable : theme.colors.text.hint }
111
+ private var borderColor: Color { disabled ? theme.colors.border.disable : theme.colors.border.default }
112
+
113
+ var body: some View {
114
+ SwiftUI.Button(action: { if !disabled { onAdd() } }) {
115
+ VStack(spacing: Spacing.XXS) {
116
+ Icon(source: "16_navigation_plus", size: 16, color: mainColor)
117
+ MomoText("Thêm hình", typography: .descriptionXsRegular, color: mainColor)
118
+ }
119
+ .frame(width: width, height: height)
120
+ .background(
121
+ RoundedRectangle(cornerRadius: Radius.XS)
122
+ .strokeBorder(
123
+ borderColor,
124
+ style: StrokeStyle(lineWidth: 1, dash: [10, 6])
125
+ )
126
+ )
127
+ .clipShape(RoundedRectangle(cornerRadius: Radius.XS))
128
+ }
129
+ .buttonStyle(ActiveOpacityButtonStyle())
130
+ .disabled(disabled)
131
+ }
132
+ }
133
+
134
+ // MARK: - Image item
135
+
136
+ private struct UploaderImageItem: View {
137
+ let image: UploadImage
138
+ let width: CGFloat
139
+ let height: CGFloat
140
+ let index: Int
141
+ let onCancel: ((UploadImage, Int) -> Void)?
142
+ let onPressImage: () -> Void
143
+
144
+ var body: some View {
145
+ SwiftUI.Button(action: onPressImage) {
146
+ ZStack(alignment: .topTrailing) {
147
+ ImageView(image.uri ?? "", contentMode: .fill)
148
+ .frame(width: width, height: height)
149
+ .clipShape(RoundedRectangle(cornerRadius: Radius.XS))
150
+
151
+ if image.loading {
152
+ Skeleton()
153
+ .frame(width: width, height: height)
154
+ .clipShape(RoundedRectangle(cornerRadius: Radius.XS))
155
+ .background(
156
+ Color.white.opacity(0.4)
157
+ .clipShape(RoundedRectangle(cornerRadius: Radius.XS))
158
+ )
159
+ }
160
+
161
+ if let onCancel, !image.loading {
162
+ SwiftUI.Button(action: { onCancel(image, index) }) {
163
+ Icon(source: "navigation_close_circle_full", size: 16, color: nil)
164
+ }
165
+ .buttonStyle(ActiveOpacityButtonStyle())
166
+ .padding(.top, Spacing.XXS)
167
+ .padding(.trailing, Spacing.XXS)
168
+ }
169
+ }
170
+ .frame(width: width, height: height)
171
+ }
172
+ .buttonStyle(ActiveOpacityButtonStyle())
173
+ }
174
+ }
@@ -1,17 +1,75 @@
1
- Pod::Spec.new do |spec|
2
- spec.name = 'MoMoUIKits'
3
- spec.version = '1.0.0'
4
- spec.license = { :type => 'MIT', :file => 'LICENSE' }
5
- spec.homepage = 'https://gitlab.com'
6
- spec.authors = { 'Developer' => 'momo@mservice.com.vn' }
7
- spec.summary = 'Components for SwiftUI'
8
- spec.source = { :git => 'https://gitlab.com', :tag => 'v1.0.0' }
9
- spec.swift_versions = ['5.0']
10
- spec.ios.deployment_target = '13.0'
1
+ Pod::Spec.new do |s|
2
+ s.name = 'MoMoUIKits'
3
+ s.version = '0.167.1-beta.4'
4
+ s.summary = 'MoMoUIKits for iOS'
5
+ s.homepage = 'https://momo.vn'
6
+ s.license = { :type => 'MIT' }
7
+ s.author = { 'MoMo' => 'dev@momo.vn' }
8
+ s.source = { :path => '.' }
11
9
 
12
- spec.source_files = "**/*.swift"
10
+ s.ios.deployment_target = '15.0'
11
+ s.swift_version = '5.0'
12
+ s.module_name = 'MoMoUIKits'
13
13
 
14
- spec.framework = 'SwiftUI', 'Combine'
15
- spec.dependency 'SDWebImageSwiftUI'
16
- spec.dependency 'SkeletonUI'
17
- end
14
+ s.source_files = [
15
+ "Application/**/*.{swift,m,h}",
16
+ "Avatar/**/*.{swift,m,h}",
17
+ "Badge/**/*.{swift,m,h}",
18
+ "BaselineView/**/*.{swift,m,h}",
19
+ "Button/**/*.{swift,m,h}",
20
+ "CalculatorKeyboard/**/*.{swift,m,h}",
21
+ "Carousel/**/*.{swift,m,h}",
22
+ "Checkbox/**/*.{swift,m,h}",
23
+ "Chip/**/*.{swift,m,h}",
24
+ "Collapse/**/*.{swift,m,h}",
25
+ "Colors+Radius+Spacing/**/*.{swift,m,h}",
26
+ "DateTimePicker/**/*.{swift,m,h}",
27
+ "Divider/**/*.{swift,m,h}",
28
+ "Extensions/**/*.{swift,m,h}",
29
+ "Icon/**/*.{swift,m,h}",
30
+ "IconButton/**/*.{swift,m,h}",
31
+ "Image/**/*.{swift,m,h}",
32
+ "Information/**/*.{swift,m,h}",
33
+ "Input/**/*.{swift,m,h}",
34
+ "InputDropDown/**/*.{swift,m,h}",
35
+ "InputMoney/**/*.{swift,m,h}",
36
+ "InputOTP/**/*.{swift,m,h}",
37
+ "Layout/**/*.{swift,m,h}",
38
+ "Loader/**/*.{swift,m,h}",
39
+ "Lottie/**/*.{swift,m,h}",
40
+ "OTPKeyboard/**/*.{swift,m,h}",
41
+ "Pagination/**/*.{swift,m,h}",
42
+ "Popup/**/*.{swift,m,h}",
43
+ "PopupView/**/*.{swift,m,h}",
44
+ "ProgressInfo/**/*.{swift,m,h}",
45
+ "Radio/**/*.{swift,m,h}",
46
+ "Rating/**/*.{swift,m,h}",
47
+ "ScrollIndicator/**/*.{swift,m,h}",
48
+ "Skeleton/**/*.{swift,m,h}",
49
+ "Slider/**/*.{swift,m,h}",
50
+ "StatusBarTap/**/*.{swift,m,h}",
51
+ "Stepper/**/*.{swift,m,h}",
52
+ "Steps/**/*.{swift,m,h}",
53
+ "SuggestAction/**/*.{swift,m,h}",
54
+ "Swipeable/**/*.{swift,m,h}",
55
+ "Switch/**/*.{swift,m,h}",
56
+ "TabView/**/*.{swift,m,h}",
57
+ "Tag/**/*.{swift,m,h}",
58
+ "Template/**/*.{swift,m,h}",
59
+ "Title/**/*.{swift,m,h}",
60
+ "Tooltip/**/*.{swift,m,h}",
61
+ "Typography/**/*.{swift,m,h}",
62
+ "Uploader/**/*.{swift,m,h}"
63
+ ]
64
+ s.resource_bundles = {
65
+ 'MoMoUIKitsResources' => ['Resources/**/*']
66
+ }
67
+ s.public_header_files = "StatusBarTap/*.h"
68
+ s.frameworks = 'SwiftUI', 'Combine'
69
+ s.pod_target_xcconfig = {
70
+ 'DEFINES_MODULE' => 'YES'
71
+ }
72
+ s.dependency 'SDWebImageSwiftUI', '2.2.1'
73
+ s.dependency 'lottie-ios', '4.6.0'
74
+ s.dependency 'SkeletonUI', '1.0.11'
75
+ end
@@ -0,0 +1,20 @@
1
+ Pod::Spec.new do |s|
2
+ s.name = 'MoMoUIKitsDemo'
3
+ s.version = '0.167.1-beta.4'
4
+ s.summary = 'Demo browser for MoMoUIKits SwiftUI components'
5
+ s.homepage = 'https://momo.vn'
6
+ s.license = { :type => 'MIT' }
7
+ s.author = { 'MoMo' => 'dev@momo.vn' }
8
+ s.source = { :path => '.' }
9
+
10
+ s.ios.deployment_target = '15.0'
11
+ s.swift_version = '5.0'
12
+
13
+ s.source_files = 'Sources/**/*.{swift}'
14
+ s.resource_bundles = {
15
+ 'MoMoUIKitsDemoResources' => ['Resources/**/*']
16
+ }
17
+ s.frameworks = 'SwiftUI', 'UIKit'
18
+ s.dependency 'MoMoUIKits'
19
+ s.dependency 'lottie-ios', '4.6.0'
20
+ end