@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
@@ -1,148 +1,482 @@
1
1
  import Foundation
2
2
  import SwiftUI
3
+ import Combine
3
4
 
4
-
5
- fileprivate struct FloatingComponent: View {
6
- var floatingValue: String
7
- var floatingIcon: AnyView?
5
+ public struct Input: View {
6
+ @Environment(\.appTheme) private var theme
7
+ @Environment(\.momoFontScale) private var fontScale
8
+ @Binding public var text: String
9
+
10
+ public var placeholder: String
11
+ public var floatingValue: String
12
+ public var floatingValueColor: Color?
13
+ public var floatingIcon: String
14
+ public var floatingIconColor: Color?
15
+ public var size: InputSize
16
+ public var hintText: String
17
+ public var error: String
18
+ public var errorSpacing: Bool
19
+ public var disabled: Bool
20
+ public var readOnly: Bool
21
+ public var secureTextEntry: Bool
22
+ public var rightIcon: String
23
+ public var rightIconColor: Color?
24
+ public var leadingIcon: String
25
+ public var leadingIconColor: Color?
26
+ public var loading: Bool
27
+ public var required: Bool
28
+ public var maxLength: Int?
29
+ public var fontWeight: InputFontWeight
30
+ public var keyboardType: UIKeyboardType
31
+ public var autofocus: Bool
32
+ public var onChangeText: ((String) -> Void)?
33
+ public var onFocus: (() -> Void)?
34
+ public var onBlur: (() -> Void)?
35
+ public var onRightIconPressed: (() -> Void)?
36
+
37
+ @State private var isFocused: Bool = false
38
+ @State private var isPasswordHidden: Bool = true
39
+ @FocusState private var isFieldFocused: Bool
40
+ @State private var floatingLabelHeight: CGFloat = 16
8
41
 
9
- public init (_ floatingValue: String = "", floatingIcon: AnyView? = nil){
42
+ public init(
43
+ text: Binding<String>,
44
+ placeholder: String = "",
45
+ floatingValue: String = "",
46
+ floatingValueColor: Color? = nil,
47
+ floatingIcon: String = "",
48
+ floatingIconColor: Color? = nil,
49
+ size: InputSize = .small,
50
+ hintText: String = "",
51
+ error: String = "",
52
+ errorSpacing: Bool = false,
53
+ disabled: Bool = false,
54
+ readOnly: Bool = false,
55
+ secureTextEntry: Bool = false,
56
+ rightIcon: String = "",
57
+ rightIconColor: Color? = nil,
58
+ leadingIcon: String = "",
59
+ leadingIconColor: Color? = nil,
60
+ loading: Bool = false,
61
+ required: Bool = false,
62
+ maxLength: Int? = nil,
63
+ fontWeight: InputFontWeight = .regular,
64
+ keyboardType: UIKeyboardType = .default,
65
+ autofocus: Bool = false,
66
+ onChangeText: ((String) -> Void)? = nil,
67
+ onFocus: (() -> Void)? = nil,
68
+ onBlur: (() -> Void)? = nil,
69
+ onRightIconPressed: (() -> Void)? = nil
70
+ ) {
71
+ self._text = text
72
+ self.placeholder = placeholder
10
73
  self.floatingValue = floatingValue
74
+ self.floatingValueColor = floatingValueColor
11
75
  self.floatingIcon = floatingIcon
76
+ self.floatingIconColor = floatingIconColor
77
+ self.size = size
78
+ self.hintText = hintText
79
+ self.error = error
80
+ self.errorSpacing = errorSpacing
81
+ self.disabled = disabled
82
+ self.readOnly = readOnly
83
+ self.secureTextEntry = secureTextEntry
84
+ self.rightIcon = rightIcon
85
+ self.rightIconColor = rightIconColor
86
+ self.leadingIcon = leadingIcon
87
+ self.leadingIconColor = leadingIconColor
88
+ self.loading = loading
89
+ self.required = required
90
+ self.maxLength = maxLength
91
+ self.fontWeight = fontWeight
92
+ self.keyboardType = keyboardType
93
+ self.autofocus = autofocus
94
+ self.onChangeText = onChangeText
95
+ self.onFocus = onFocus
96
+ self.onBlur = onBlur
97
+ self.onRightIconPressed = onRightIconPressed
12
98
  }
13
-
14
- public var body: some View {
15
- return HStack {
16
- Text(floatingValue)
17
- .font(.paragraph)
18
- .foregroundColor(Colors.black09)
19
- .font(.system(size: 12))
20
- .padding(.leading, 8)
21
- .padding(.trailing, 8)
22
- floatingIcon
23
- }
24
- .background(Colors.black01)
25
- .offset(x: 16, y:-8)
26
- .zIndex(10)
27
- }
28
- }
29
99
 
30
- struct DotTextField: View{
31
- @Binding var value: String
32
- @State var isHide: Bool = true
33
-
34
-
35
- func onToggle(){
36
- isHide.toggle()
37
- }
38
-
100
+ // MARK: - Body
39
101
  public var body: some View {
40
- return HStack {
41
- if (isHide){
42
- SecureField("", text: $value)
102
+ let textBinding = Binding<String>(
103
+ get: { self.text },
104
+ set: { newValue in
105
+ // Trim atomically before publishing, mirroring Kotlin's `onValueChange`
106
+ // (`newText.take(maxLength)` before the state ever updates) — avoids a
107
+ // render with the untrimmed value that a separate `.onChange` correction
108
+ // would otherwise briefly show.
109
+ let limited = limitText(newValue)
110
+ self.text = limited
111
+ self.onChangeText?(limited)
43
112
  }
44
- else {
45
- TextField("", text: $value)
113
+ )
114
+
115
+ VStack(alignment: .leading, spacing: 4) {
116
+ ZStack(alignment: .topLeading) {
117
+ // Floating label
118
+ if !floatingValue.isEmpty || !floatingIcon.isEmpty {
119
+ HStack(spacing: Spacing.XS) {
120
+ MomoText(floatingValue, typography: .labelSMedium, color: getFloatingColor())
121
+ if required {
122
+ MomoText("*", typography: .labelSMedium, color: theme.colors.error.primary)
123
+ }
124
+ if !floatingIcon.isEmpty {
125
+ Icon(source: floatingIcon, size: 16, color: getFloatingIconColor())
126
+ }
127
+ }
128
+ .padding(.horizontal, Spacing.S)
129
+ .background(
130
+ GeometryReader { geo in
131
+ Color.clear.onAppear { floatingLabelHeight = geo.size.height }
132
+ }
133
+ )
134
+ .background(theme.colors.background.surface)
135
+ // Kotlin centers the label within the (box-height-tall) decorationBox
136
+ // by default, then applies `offsetY = -size.values.height / 2` — net
137
+ // effect: the label ends up centered exactly on the box's top border
138
+ // (spanning -labelHeight/2 ... +labelHeight/2 around y=0). Our ZStack
139
+ // anchors top-leading instead, so reproducing that requires offsetting
140
+ // by half the label's OWN measured height, not half the box height.
141
+ .offset(x: Spacing.S, y: -floatingLabelHeight / 2)
142
+ .zIndex(10)
143
+ }
144
+
145
+ // Input container
146
+ HStack(alignment: .center, spacing: 0) {
147
+ // Leading icon
148
+ if !leadingIcon.isEmpty {
149
+ Icon(source: leadingIcon, size: size == .small ? 24 : 32, color: getLeadingIconColor())
150
+ .padding(.trailing, Spacing.M)
151
+ }
152
+
153
+ // Text input field
154
+ ZStack(alignment: .leading) {
155
+ if text.isEmpty {
156
+ MomoText(
157
+ placeholder + (required && floatingValue.isEmpty ? " *" : ""),
158
+ typography: fontWeight == .bold ? .actionSBold : .bodyDefaultRegular,
159
+ color: getPlaceholderColor()
160
+ )
161
+ }
162
+
163
+ if secureTextEntry && isPasswordHidden {
164
+ SecureInputField(
165
+ text: $text,
166
+ keyboardType: keyboardType,
167
+ fontSize: fontScale(14),
168
+ fontWeight: fontWeight == .bold ? .bold : .regular,
169
+ textColor: UIColor(getTextColor()),
170
+ cursorColor: UIColor(theme.colors.primary),
171
+ isDisabled: disabled || readOnly,
172
+ maxLength: maxLength,
173
+ autofocus: autofocus,
174
+ onFocusChange: { focused in
175
+ handleFocusChange(focused)
176
+ },
177
+ onChangeText: onChangeText
178
+ )
179
+ } else {
180
+ TextField("", text: textBinding, onEditingChanged: { focused in
181
+ handleFocusChange(focused)
182
+ })
183
+ .keyboardType(keyboardType)
184
+ .font(fontWeight == .bold ? .action_s_bold : .body_default_regular)
185
+ .ignoreBoldTextSetting()
186
+ .foregroundColor(getTextColor())
187
+ .disabled(disabled || readOnly)
188
+ .applyCursorColor(theme.colors.primary)
189
+ .focused($isFieldFocused)
190
+ .onAppear {
191
+ if autofocus { isFieldFocused = true }
192
+ }
193
+ // SwiftUI reads a TextField's UIKit input traits only when it
194
+ // builds the backing UITextField, so a later `keyboardType`
195
+ // change is silently dropped. The secure path can call
196
+ // `reloadInputViews()` in `updateUIView`; here the only lever
197
+ // is to force a rebuild.
198
+ .id(keyboardType.rawValue)
199
+ }
200
+ }
201
+
202
+ // Clear button (only show when focused and has text)
203
+ if isFocused && !text.isEmpty {
204
+ SwiftUI.Button(action: {
205
+ text = ""
206
+ onChangeText?("")
207
+ }) {
208
+ Icon(source: "24_navigation_close_circle_full", size: 16, color: theme.colors.text.hint)
209
+ .padding(.leading, Spacing.S).accessibility(identifier: "ic_clear")
210
+ }
211
+ }
212
+
213
+ // Loading indicator
214
+ if loading {
215
+ ActivityIndicator(isAnimating: .constant(true), style: .medium)
216
+ .frame(width: 16, height: 16)
217
+ .padding(.leading, Spacing.S)
218
+ }
219
+
220
+ // Right icon (password toggle or custom icon)
221
+ if secureTextEntry {
222
+ if !text.isEmpty {
223
+ SwiftUI.Button(action: togglePasswordVisibility) {
224
+ Icon(
225
+ source: isPasswordHidden ? "24_security_eye_off" : "24_security_eye_open",
226
+ size: 24,
227
+ color: getRightIconColor()
228
+ )
229
+ .padding(.leading, Spacing.S).accessibility(identifier: "ic_show_hide")
230
+ }
231
+ }
232
+ } else if !rightIcon.isEmpty {
233
+ SwiftUI.Button(action: { onRightIconPressed?() }) {
234
+ Icon(source: rightIcon, size: 24, color: getRightIconColor())
235
+ .padding(.leading, Spacing.S)
236
+ }
237
+ }
238
+ }
239
+ .padding(.horizontal, Spacing.M)
240
+ .frame(height: fontScale(size == .small ? 48 : 56))
241
+ .background(
242
+ RoundedRectangle(cornerRadius: Radius.S)
243
+ .fill(theme.colors.background.surface)
244
+ )
245
+ .overlay(
246
+ RoundedRectangle(cornerRadius: Radius.S)
247
+ .stroke(borderColor(), lineWidth: 1)
248
+ )
46
249
  }
47
250
 
48
- SwiftButton(action: onToggle){
49
- Image(systemName: isHide ? "eye.slash" : "eye")
50
- .foregroundColor(Colors.text)
51
- .frame(width: 16, height: 16)
52
- .padding(.leading, -4)
251
+ // Error or hint
252
+ ErrorView(
253
+ errorMessage: error,
254
+ errorSpacing: errorSpacing,
255
+ hintText: hintText
256
+ )
257
+ }
258
+ .onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)) { _ in
259
+ if isFocused && !secureTextEntry {
260
+ DispatchQueue.main.async {
261
+ handleFocusChange(false)
262
+ }
53
263
  }
54
-
55
-
56
264
  }
57
-
58
265
  }
59
- }
266
+
267
+ // MARK: - Helpers
268
+
269
+ private func handleFocusChange(_ focused: Bool) {
270
+ isFocused = focused
271
+ if focused {
272
+ onFocus?()
273
+ } else {
274
+ onBlur?()
275
+ }
276
+ }
277
+
278
+ private func togglePasswordVisibility() {
279
+ isPasswordHidden.toggle()
280
+ onRightIconPressed?()
281
+ }
60
282
 
61
- public struct Input: View {
62
- @Binding var value: String
63
- @State var focused: Bool = false
283
+ private func limitText(_ value: String) -> String {
284
+ guard let maxLength = maxLength else {
285
+ return value
286
+ }
287
+ return String(value.prefix(maxLength))
288
+ }
64
289
 
65
- var placeholder: String
66
- var floatingValue: String
67
- var errorMessage: String
68
- var isSecure: Bool
69
- var keyboardType: UIKeyboardType
70
- var floatingIcon: AnyView?
71
- var rightIcon: AnyView?
72
- var onChange: ((String) -> Void)?
73
- var onBlur: (() -> Void)?
74
- func onCancel(){
75
- self.value.removeAll()
290
+ private func borderColor() -> Color {
291
+ if disabled {
292
+ return theme.colors.border.disable
293
+ }
294
+ if !error.isEmpty {
295
+ return theme.colors.error.primary
296
+ }
297
+ if isFocused {
298
+ return theme.colors.primary
299
+ }
300
+ return theme.colors.border.default
76
301
  }
77
302
 
78
- public init(_ value: Binding<String>, placeholder: String = "", floatingValue: String = "", multilines: Bool = false, errorMessage: String = "", isSecure: Bool = false, keyboardType: UIKeyboardType = .default, floatingIcon: AnyView? = nil, rightIcon: AnyView? = nil, onChange: ((String)->Void)? = nil, onBlur: (()->Void)? = nil){
79
- self.placeholder = placeholder
80
- self.floatingValue = floatingValue
81
- self.errorMessage = errorMessage
82
- self.isSecure = isSecure
83
- self._value = value
84
- self.keyboardType = keyboardType
85
- self.rightIcon = rightIcon
86
- self.floatingIcon = floatingIcon
87
- self.onChange = onChange
303
+ private func getTextColor() -> Color {
304
+ return disabled ? theme.colors.text.disable : theme.colors.text.default
88
305
  }
89
306
 
90
- func onChangeText(value: String){
91
- onChange?(value)
307
+ private func getPlaceholderColor() -> Color {
308
+ return disabled ? theme.colors.text.disable : theme.colors.text.hint
92
309
  }
93
310
 
94
- public var body: some View {
95
- return ZStack (alignment: .topLeading){
96
- HStack(alignment: .center){
97
- if (!isSecure){
98
- TextField("",text: $value, onEditingChanged:{ isChange in
99
- self.focused = isChange
100
- })
101
- .font(.paragraph)
102
- .padding(.horizontal, 12)
103
- .accentColor(Colors.pink03)
104
- .keyboardType(keyboardType)
105
- .valueChanged(value: value, onChange: onChangeText)
106
-
107
- HStack{
108
- SwiftButton(action: onCancel){
109
- Image(systemName: "x.circle.fill")
110
- .foregroundColor(Colors.text)
111
- .frame(width: 16, height: 16)
112
- .padding(.leading, -4)
113
- .padding(.trailing, 8)
114
- }
115
-
116
- rightIcon
117
-
118
- }
119
- }else{
120
- DotTextField(value: $value)
121
- .padding(.horizontal, 12)
122
- .accentColor(Colors.pink03)
123
- SwiftButton(action: onCancel){
124
- Image(systemName: "x.circle.fill")
125
- .foregroundColor(Colors.text)
126
- .frame(width: 16, height: 16)
127
- .padding(.leading, -4)
128
- .padding(.trailing, 8)
129
- }
130
- }
311
+ private func getFloatingColor() -> Color {
312
+ return disabled ? theme.colors.text.disable : (floatingValueColor ?? theme.colors.text.hint)
313
+ }
314
+
315
+ private func getFloatingIconColor() -> Color {
316
+ return disabled ? theme.colors.text.disable : (floatingIconColor ?? theme.colors.text.default)
317
+ }
318
+
319
+ private func getLeadingIconColor() -> Color {
320
+ return disabled ? theme.colors.text.disable : (leadingIconColor ?? theme.colors.text.hint)
321
+ }
322
+
323
+ private func getRightIconColor() -> Color {
324
+ return disabled ? theme.colors.text.disable : (rightIconColor ?? theme.colors.text.default)
325
+ }
326
+ }
327
+
328
+
329
+ // MARK: - Secure Input Field (UIViewRepresentable)
330
+ private struct SecureInputField: UIViewRepresentable {
331
+ @Binding var text: String
332
+ var keyboardType: UIKeyboardType
333
+ var fontSize: CGFloat
334
+ var fontWeight: UIFont.Weight
335
+ var textColor: UIColor
336
+ var cursorColor: UIColor
337
+ var isDisabled: Bool
338
+ var maxLength: Int?
339
+ var autofocus: Bool = false
340
+ var onFocusChange: (Bool) -> Void
341
+ var onChangeText: ((String) -> Void)?
342
+
343
+ func makeCoordinator() -> Coordinator {
344
+ Coordinator(self)
345
+ }
346
+
347
+ func makeUIView(context: Context) -> UITextField {
348
+ let textField = UITextField()
349
+ textField.isSecureTextEntry = true
350
+ textField.delegate = context.coordinator
351
+ textField.keyboardType = keyboardType
352
+ textField.font = UIFont.systemFont(ofSize: fontSize, weight: fontWeight)
353
+ textField.textColor = textColor
354
+ textField.isEnabled = !isDisabled
355
+ textField.setContentHuggingPriority(.defaultLow, for: .horizontal)
356
+ textField.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
357
+ textField.text = text
358
+ textField.tintColor = cursorColor
359
+ textField.addTarget(
360
+ context.coordinator,
361
+ action: #selector(Coordinator.textFieldDidChange(_:)),
362
+ for: .editingChanged
363
+ )
364
+ if autofocus {
365
+ DispatchQueue.main.async {
366
+ textField.becomeFirstResponder()
131
367
  }
132
- .frame(maxWidth: .infinity, minHeight: 48)
133
- .overlay(RoundedRectangle(cornerRadius: 8).stroke(focused == true ? Colors.pink03 : Colors.border, lineWidth: 1))
134
- .padding(.horizontal, 1)
135
- if (value.isEmpty){
136
- Text(placeholder)
137
- .font(.paragraph)
138
- .font(.system(size: 16))
139
- .foregroundColor(Colors.black09)
140
- .padding(.leading, 12)
141
- .padding(.top, 16)
142
- .allowsHitTesting(false)
368
+ }
369
+ return textField
370
+ }
371
+
372
+ func updateUIView(_ textField: UITextField, context: Context) {
373
+ context.coordinator.parent = self
374
+ if textField.text != text {
375
+ textField.text = text
376
+ }
377
+ textField.isEnabled = !isDisabled
378
+ textField.textColor = textColor
379
+ textField.tintColor = cursorColor
380
+ if textField.keyboardType != keyboardType {
381
+ textField.keyboardType = keyboardType
382
+ textField.reloadInputViews()
383
+ }
384
+ }
385
+
386
+ class Coordinator: NSObject, UITextFieldDelegate {
387
+ var parent: SecureInputField
388
+ private var isResettingText = false
389
+
390
+ init(_ parent: SecureInputField) {
391
+ self.parent = parent
392
+ }
393
+
394
+ func textFieldDidBeginEditing(_ textField: UITextField) {
395
+ let existingText = textField.text ?? ""
396
+ if !existingText.isEmpty {
397
+ // When a secure text field regains focus, iOS marks the
398
+ // existing text as "committed". The next keystroke would
399
+ // replace ALL committed text with the new character.
400
+ // Prevent this by clearing and re-inserting via insertText(),
401
+ // which puts the text into an "active editing" state.
402
+ isResettingText = true
403
+ textField.text = ""
404
+ textField.insertText(existingText)
405
+ isResettingText = false
143
406
  }
144
- if (!floatingValue.isEmpty) {FloatingComponent(floatingValue, floatingIcon: floatingIcon)}
145
- }.padding(.bottom, 8)
407
+ parent.onFocusChange(true)
408
+ }
409
+
410
+ func textFieldDidEndEditing(_ textField: UITextField) {
411
+ parent.text = limitText(textField.text ?? "")
412
+ parent.onFocusChange(false)
413
+ }
414
+
415
+ func textField(
416
+ _ textField: UITextField,
417
+ shouldChangeCharactersIn range: NSRange,
418
+ replacementString string: String
419
+ ) -> Bool {
420
+ if isResettingText { return true }
421
+ return true
422
+ }
423
+
424
+ @objc func textFieldDidChange(_ textField: UITextField) {
425
+ if isResettingText { return }
426
+ let newText = limitText(textField.text ?? "")
427
+ if textField.text != newText {
428
+ textField.text = newText
429
+ }
430
+ parent.text = newText
431
+ parent.onChangeText?(newText)
432
+ }
433
+
434
+ func textFieldShouldReturn(_ textField: UITextField) -> Bool {
435
+ textField.resignFirstResponder()
436
+ return true
437
+ }
438
+
439
+ private func limitText(_ value: String) -> String {
440
+ guard let maxLength = parent.maxLength else {
441
+ return value
442
+ }
443
+ return String(value.prefix(maxLength))
444
+ }
146
445
  }
147
-
446
+ }
447
+
448
+ // MARK: - Helper Extension
449
+ private extension View {
450
+ func applyCursorColor(_ color: Color) -> some View {
451
+ if #available(iOS 15.0, *) {
452
+ return self.tint(color)
453
+ } else {
454
+ return self
455
+ }
456
+ }
457
+ }
458
+
459
+ // MARK: - Activity Indicator
460
+ struct ActivityIndicator: UIViewRepresentable {
461
+ @Binding var isAnimating: Bool
462
+ let style: UIActivityIndicatorView.Style
463
+
464
+ func makeUIView(context: UIViewRepresentableContext<ActivityIndicator>) -> UIActivityIndicatorView {
465
+ return UIActivityIndicatorView(style: style)
466
+ }
467
+
468
+ func updateUIView(_ uiView: UIActivityIndicatorView, context: UIViewRepresentableContext<ActivityIndicator>) {
469
+ isAnimating ? uiView.startAnimating() : uiView.stopAnimating()
470
+ }
471
+ }
472
+
473
+ // MARK: - Enums
474
+ public enum InputSize {
475
+ case small
476
+ case large
477
+ }
478
+
479
+ public enum InputFontWeight {
480
+ case regular
481
+ case bold
148
482
  }