@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,84 @@
1
+ import SwiftUI
2
+
3
+ public struct Badge: View {
4
+ @Environment(\.appTheme) private var theme
5
+ @Environment(\.momoFontScale) private var fontScale
6
+ let label: String
7
+ let backgroundColor: Color?
8
+
9
+ private var primaryColors: [Color] {
10
+ [
11
+ Colors.black03,
12
+ Colors.pink03,
13
+ Colors.violet03,
14
+ Colors.indigo03,
15
+ Colors.blue03,
16
+ Colors.mint03,
17
+ Colors.green03,
18
+ Colors.lime03,
19
+ Colors.yellow03,
20
+ Colors.gold03,
21
+ Colors.orange03,
22
+ Colors.red03
23
+ ]
24
+ }
25
+
26
+ public init(label: String = "Label", backgroundColor: Color? = nil) {
27
+ self.label = label
28
+ self.backgroundColor = backgroundColor
29
+ }
30
+
31
+ private func isNumber(_ text: String) -> Bool {
32
+ return text.range(of: "^\\d+$", options: .regularExpression) != nil
33
+ }
34
+
35
+ private func formatTitle(_ text: String) -> String {
36
+ if isNumber(text), let number = Int(text), number > 99 {
37
+ return "99+"
38
+ }
39
+ return text
40
+ }
41
+
42
+ private var badgeColor: Color {
43
+ // Default colors based on label type
44
+ let defaultColor: Color = isNumber(label)
45
+ ? theme.colors.error.primary
46
+ : theme.colors.warning.primary
47
+
48
+ // Mirror Compose: only apply backgroundColor when it is one of the
49
+ // allowed primaryColors; otherwise fall back to the label-based default.
50
+ if let bgColor = backgroundColor, primaryColors.contains(bgColor) {
51
+ return bgColor
52
+ }
53
+ return defaultColor
54
+ }
55
+
56
+ public var body: some View {
57
+ MomoText(formatTitle(label), typography: .actionXxsBold, color: Colors.black01)
58
+ .padding(.horizontal, Spacing.XS)
59
+ .frame(minWidth: fontScale(16), minHeight: fontScale(16))
60
+ .background(badgeColor)
61
+ .cornerRadius(Radius.M)
62
+ .overlay(
63
+ RoundedRectangle(cornerRadius: Radius.M)
64
+ .stroke(Colors.black01, lineWidth: 1)
65
+ )
66
+ }
67
+ }
68
+
69
+ // MARK: - Preview
70
+ #if DEBUG
71
+ struct Badge_Previews: PreviewProvider {
72
+ static var previews: some View {
73
+ VStack(spacing: 20) {
74
+ Badge(label: "5")
75
+ Badge(label: "99")
76
+ Badge(label: "100")
77
+ Badge(label: "New")
78
+ Badge(label: "Hot", backgroundColor: Colors.pink03)
79
+ }
80
+ .padding()
81
+ .previewLayout(.sizeThatFits)
82
+ }
83
+ }
84
+ #endif
@@ -0,0 +1,31 @@
1
+ import SwiftUI
2
+
3
+ public enum DotSize {
4
+ case small
5
+ case large
6
+
7
+ var size: CGFloat {
8
+ switch self {
9
+ case .small: return 10
10
+ case .large: return 16
11
+ }
12
+ }
13
+ }
14
+
15
+ public struct BadgeDot: View {
16
+ var size: DotSize
17
+
18
+ public init(size: DotSize = .large) {
19
+ self.size = size
20
+ }
21
+
22
+ public var body: some View {
23
+ Circle()
24
+ .fill(Colors.red03)
25
+ .frame(width: size.size, height: size.size)
26
+ .overlay(
27
+ Circle()
28
+ .stroke(Colors.black01, lineWidth: 1)
29
+ )
30
+ }
31
+ }
@@ -0,0 +1,319 @@
1
+ import SwiftUI
2
+
3
+ // MARK: - Custom Shape for Rounded Corners
4
+ struct RoundedCorners: Shape {
5
+ var topLeft: CGFloat = 0.0
6
+ var topRight: CGFloat = 0.0
7
+ var bottomLeft: CGFloat = 0.0
8
+ var bottomRight: CGFloat = 0.0
9
+
10
+ func path(in rect: CGRect) -> Path {
11
+ var path = Path()
12
+
13
+ let width = rect.size.width
14
+ let height = rect.size.height
15
+
16
+ // Start from top left
17
+ path.move(to: CGPoint(x: topLeft, y: 0))
18
+
19
+ // Top edge and top right corner
20
+ path.addLine(to: CGPoint(x: width - topRight, y: 0))
21
+ if topRight > 0 {
22
+ path.addArc(
23
+ center: CGPoint(x: width - topRight, y: topRight),
24
+ radius: topRight,
25
+ startAngle: Angle(degrees: -90),
26
+ endAngle: Angle(degrees: 0),
27
+ clockwise: false
28
+ )
29
+ }
30
+
31
+ // Right edge and bottom right corner
32
+ path.addLine(to: CGPoint(x: width, y: height - bottomRight))
33
+ if bottomRight > 0 {
34
+ path.addArc(
35
+ center: CGPoint(x: width - bottomRight, y: height - bottomRight),
36
+ radius: bottomRight,
37
+ startAngle: Angle(degrees: 0),
38
+ endAngle: Angle(degrees: 90),
39
+ clockwise: false
40
+ )
41
+ }
42
+
43
+ // Bottom edge and bottom left corner
44
+ path.addLine(to: CGPoint(x: bottomLeft, y: height))
45
+ if bottomLeft > 0 {
46
+ path.addArc(
47
+ center: CGPoint(x: bottomLeft, y: height - bottomLeft),
48
+ radius: bottomLeft,
49
+ startAngle: Angle(degrees: 90),
50
+ endAngle: Angle(degrees: 180),
51
+ clockwise: false
52
+ )
53
+ }
54
+
55
+ // Left edge and top left corner
56
+ path.addLine(to: CGPoint(x: 0, y: topLeft))
57
+ if topLeft > 0 {
58
+ path.addArc(
59
+ center: CGPoint(x: topLeft, y: topLeft),
60
+ radius: topLeft,
61
+ startAngle: Angle(degrees: 180),
62
+ endAngle: Angle(degrees: 270),
63
+ clockwise: false
64
+ )
65
+ }
66
+
67
+ path.closeSubpath()
68
+ return path
69
+ }
70
+ }
71
+
72
+ public enum RibbonPosition {
73
+ case topLeft
74
+ case topRight
75
+ case bottomLeft
76
+ case bottomRight
77
+ }
78
+
79
+ public struct BadgeRibbon: View {
80
+ @Environment(\.appTheme) private var theme
81
+ let position: RibbonPosition
82
+ let label: String
83
+ let isRound: Bool
84
+ let backgroundColor: Color?
85
+
86
+ public init(
87
+ position: RibbonPosition = .topRight,
88
+ label: String = "Label",
89
+ isRound: Bool = false,
90
+ backgroundColor: Color? = nil
91
+ ) {
92
+ self.position = position
93
+ self.label = label
94
+ self.isRound = isRound
95
+ self.backgroundColor = backgroundColor
96
+ }
97
+
98
+ private var rotation: Angle {
99
+ switch position {
100
+ case .topRight, .bottomRight:
101
+ return .degrees(180)
102
+ case .topLeft, .bottomLeft:
103
+ return .zero
104
+ }
105
+ }
106
+
107
+ private var useUpTail: Bool {
108
+ position == .bottomLeft || position == .topRight
109
+ }
110
+
111
+ private var verticalAlignment: VerticalAlignment {
112
+ switch position {
113
+ case .topLeft, .bottomRight:
114
+ return .top
115
+ case .bottomLeft, .topRight:
116
+ return .bottom
117
+ }
118
+ }
119
+
120
+ public var body: some View {
121
+ let bgColor = backgroundColor ?? theme.colors.warning.primary
122
+
123
+ HStack(alignment: verticalAlignment, spacing: 0) {
124
+ if useUpTail {
125
+ upTail
126
+ } else {
127
+ downTail
128
+ }
129
+
130
+ if isRound {
131
+ roundContent(backgroundColor: bgColor)
132
+ } else {
133
+ skewContent(backgroundColor: bgColor)
134
+ }
135
+ }
136
+ .frame(height: RibbonConstants.ribbonHeight)
137
+ .rotationEffect(rotation)
138
+ }
139
+
140
+ private func roundContent(backgroundColor: Color) -> some View {
141
+ HStack(spacing: 0) {
142
+ MomoText(label, typography: .labelXsMedium, color: Colors.black01, maxLines: 1)
143
+ .rotationEffect(rotation)
144
+ }
145
+ .frame(height: RibbonConstants.roundHeight)
146
+ .padding(.trailing, RibbonConstants.roundPaddingEnd)
147
+ .background(
148
+ RoundedCorners(
149
+ topLeft: 0,
150
+ topRight: RibbonConstants.roundRightRadius,
151
+ bottomLeft: 0,
152
+ bottomRight: RibbonConstants.roundRightRadius
153
+ )
154
+ .fill(backgroundColor)
155
+ )
156
+ }
157
+
158
+ private func skewContent(backgroundColor: Color) -> some View {
159
+ HStack(spacing: 0) {
160
+ MomoText(label, typography: .labelXsMedium, color: Colors.black01, maxLines: 1)
161
+ .rotationEffect(rotation)
162
+ .frame(height: RibbonConstants.skewBodyHeight)
163
+ .padding(.horizontal, 8)
164
+ .background(backgroundColor)
165
+
166
+ rightTail
167
+ }
168
+ }
169
+
170
+ private var upTail: some View {
171
+ ImageView(
172
+ "https://static.momocdn.net/app/img/kits/utils/Head_down_4x.png",
173
+ placeholder: AnyView(Color.clear)
174
+ )
175
+ .frame(width: RibbonConstants.headTailWidth, height: RibbonConstants.headTailHeight)
176
+ .rotationEffect(.degrees(180))
177
+ .offset(x: 1)
178
+ .clipped()
179
+ }
180
+
181
+ private var downTail: some View {
182
+ ImageView(
183
+ "https://static.momocdn.net/app/img/kits/utils/Head_4x.png",
184
+ placeholder: AnyView(Color.clear)
185
+ )
186
+ .frame(width: RibbonConstants.headTailWidth, height: RibbonConstants.headTailHeight)
187
+ .offset(x: 1)
188
+ .clipped()
189
+ }
190
+
191
+ private var rightTail: some View {
192
+ ImageView(
193
+ "https://static.momocdn.net/app/img/kits/utils/Tail_4x.png",
194
+ placeholder: AnyView(Color.clear)
195
+ )
196
+ .frame(width: RibbonConstants.skewTailWidth, height: RibbonConstants.skewTailHeight)
197
+ .offset(x: -2)
198
+ .clipped()
199
+ }
200
+ }
201
+
202
+ /// Ported from Compose's `RoundedBadgeRibbon` (BadgeRibbon.kt:164-326): a canvas-drawn
203
+ /// ribbon shape sized to its text, mirrored per corner via scaleX/scaleY (never an actual
204
+ /// rotation) — the label gets the same scale applied a second time so it stays right-reading
205
+ /// while only the ribbon shape flips.
206
+ public struct RoundedBadgeRibbon: View {
207
+ @Environment(\.momoFontScale) private var fontScale
208
+ let text: String
209
+ let position: RibbonPosition
210
+
211
+ public init(text: String = "Label", position: RibbonPosition = .topLeft) {
212
+ self.text = text
213
+ self.position = position
214
+ }
215
+
216
+ private var scale: (x: CGFloat, y: CGFloat) {
217
+ switch position {
218
+ case .topLeft: return (-1, 1)
219
+ case .topRight: return (1, 1)
220
+ case .bottomRight: return (1, -1)
221
+ case .bottomLeft: return (-1, -1)
222
+ }
223
+ }
224
+
225
+ private var measuredTextSize: CGSize {
226
+ let fontSize = fontScale(TypographyStyle.labelXsMedium.fontSize)
227
+ let font = UIFont.systemFont(ofSize: fontSize, weight: .medium)
228
+ return text.size(withAttributes: [.font: font])
229
+ }
230
+
231
+ public var body: some View {
232
+ let textSize = measuredTextSize
233
+ let minRibbonHeight = max(textSize.height * 1.2, 16)
234
+ let padding = minRibbonHeight / 4
235
+ let badgeHeight = minRibbonHeight + padding
236
+ let badgeWidth = max(textSize.width + padding * 2, 28)
237
+
238
+ ZStack {
239
+ Canvas { context, size in
240
+ let ribbonHeight = size.height - padding
241
+ let cornerRadius = (badgeHeight - padding) / 2
242
+ let mainColor = Colors.orange03
243
+ let tailColor = Colors.red01
244
+
245
+ let headWidth: CGFloat = 4
246
+ // Kotlin computes `leftSectionWidth` + `middleSectionWidth` here, but those
247
+ // cancel algebraically to `width - headWidth` — kept as the direct result.
248
+ let rightX = size.width - headWidth
249
+
250
+ let leftMiddlePath = RoundedCorners(topLeft: cornerRadius, topRight: 0, bottomLeft: cornerRadius, bottomRight: 0)
251
+ .path(in: CGRect(x: 0, y: 0, width: rightX + 1, height: ribbonHeight))
252
+ context.fill(leftMiddlePath, with: .color(mainColor))
253
+
254
+ let headPath = RoundedCorners(topLeft: 0, topRight: cornerRadius, bottomLeft: 0, bottomRight: 0)
255
+ .path(in: CGRect(x: rightX, y: 0, width: headWidth, height: ribbonHeight))
256
+ context.fill(headPath, with: .color(mainColor))
257
+
258
+ let halfHeadWidth = headWidth / 2
259
+ let tailStartX = rightX + headWidth - halfHeadWidth
260
+ let tailY = ribbonHeight
261
+ let tailHeight = padding
262
+
263
+ context.fill(
264
+ Path(CGRect(x: tailStartX, y: tailY, width: halfHeadWidth, height: halfHeadWidth)),
265
+ with: .color(mainColor)
266
+ )
267
+
268
+ let tailRightPath = RoundedCorners(topLeft: 0, topRight: tailHeight, bottomLeft: 0, bottomRight: tailHeight)
269
+ .path(in: CGRect(x: tailStartX, y: tailY, width: halfHeadWidth, height: tailHeight))
270
+ context.fill(tailRightPath, with: .color(tailColor))
271
+ }
272
+
273
+ MomoText(text, typography: .labelXsMedium, color: Colors.black01, maxLines: 1)
274
+ .padding(.bottom, padding)
275
+ .padding(.horizontal, padding / 2)
276
+ .scaleEffect(x: scale.x, y: scale.y)
277
+ }
278
+ .frame(width: badgeWidth, height: badgeHeight)
279
+ .scaleEffect(x: scale.x, y: scale.y)
280
+ }
281
+ }
282
+
283
+ // MARK: - Constants
284
+ private struct RibbonConstants {
285
+ static let ribbonHeight: CGFloat = 20
286
+ static let roundHeight: CGFloat = 16
287
+ static let skewBodyHeight: CGFloat = 16
288
+ static let roundRightRadius: CGFloat = 8
289
+ static let roundPaddingEnd: CGFloat = 6
290
+ static let skewTailWidth: CGFloat = 8
291
+ static let skewTailHeight: CGFloat = 16
292
+ static let headTailWidth: CGFloat = 5
293
+ static let headTailHeight: CGFloat = 20
294
+ }
295
+
296
+ // MARK: - String Extension for Text Size
297
+ extension String {
298
+ func size(withAttributes attributes: [NSAttributedString.Key: Any]?) -> CGSize {
299
+ let size = (self as NSString).size(withAttributes: attributes)
300
+ return size
301
+ }
302
+ }
303
+
304
+ // MARK: - Preview
305
+ #if DEBUG
306
+ struct BadgeRibbon_Previews: PreviewProvider {
307
+ static var previews: some View {
308
+ VStack(spacing: 30) {
309
+ // Basic ribbon examples
310
+ BadgeRibbon(position: .topRight, label: "New")
311
+ BadgeRibbon(position: .topLeft, label: "Hot", isRound: true)
312
+ BadgeRibbon(position: .bottomLeft, label: "Sale")
313
+ BadgeRibbon(position: .bottomRight, label: "50% OFF", isRound: true)
314
+ }
315
+ .padding()
316
+ .previewLayout(.sizeThatFits)
317
+ }
318
+ }
319
+ #endif
@@ -0,0 +1,163 @@
1
+ import SwiftUI
2
+
3
+ public struct BaselineView: View {
4
+ private let enabled: Bool
5
+
6
+ public init(enabled: Bool = true) {
7
+ self.enabled = enabled
8
+ }
9
+
10
+ public var body: some View {
11
+ if enabled {
12
+ GeometryReader { geometry in
13
+ let topInset = geometry.safeAreaInsets.top
14
+ let bottomInset = min(geometry.safeAreaInsets.bottom, 21)
15
+
16
+ ZStack(alignment: .topLeading) {
17
+ dangerZones(topInset: topInset, bottomInset: bottomInset)
18
+ guideLines(
19
+ topInset: topInset,
20
+ bottomInset: bottomInset,
21
+ width: geometry.size.width
22
+ )
23
+ }
24
+ .frame(maxWidth: .infinity, maxHeight: .infinity)
25
+ .ignoresSafeArea()
26
+ .allowsHitTesting(false)
27
+ .accessibilityHidden(true)
28
+ }
29
+ }
30
+ }
31
+
32
+ private func dangerZones(topInset: CGFloat, bottomInset: CGFloat) -> some View {
33
+ let safeBackground = Color.red.opacity(0.15)
34
+
35
+ return ZStack(alignment: .topLeading) {
36
+ safeBackground
37
+ .frame(maxWidth: .infinity)
38
+ .frame(height: topInset)
39
+
40
+ HStack(spacing: 0) {
41
+ safeBackground
42
+ .frame(width: 12)
43
+ Spacer(minLength: 0)
44
+ safeBackground
45
+ .frame(width: 12)
46
+ }
47
+ .padding(.top, topInset)
48
+ .padding(.bottom, bottomInset)
49
+
50
+ VStack(spacing: 0) {
51
+ Spacer(minLength: 0)
52
+ safeBackground
53
+ .frame(maxWidth: .infinity)
54
+ .frame(height: bottomInset)
55
+ }
56
+ }
57
+ }
58
+
59
+ private func guideLines(topInset: CGFloat, bottomInset: CGFloat, width: CGFloat) -> some View {
60
+ ZStack(alignment: .topLeading) {
61
+ baselineLine(isDotted: false, color: Color(hex: 0xE400FF))
62
+ .offset(y: topInset)
63
+
64
+ baselineLine(color: Color(hex: 0xE400FF))
65
+ .offset(y: topInset + 52)
66
+
67
+ baselineLine(color: Color(hex: 0xE400FF))
68
+ .offset(y: topInset + 104)
69
+
70
+ bottomLine(bottomInset: bottomInset + 64, color: Color(hex: 0xE400FF))
71
+
72
+ bottomLine(bottomInset: bottomInset, isDotted: false, color: Color(hex: 0xE400FF))
73
+
74
+ baselineLine(orientation: .vertical, isDotted: false, color: Color(hex: 0xE400FF))
75
+ .offset(x: 12)
76
+
77
+ baselineLine(orientation: .vertical, isDotted: false, color: Color(hex: 0xE400FF))
78
+ .offset(x: width - 12)
79
+
80
+ baselineLine(color: Color(hex: 0xFF7A00))
81
+ .offset(y: topInset + 26)
82
+
83
+ bottomLine(bottomInset: bottomInset + 56, color: Color(hex: 0xFFCC00))
84
+
85
+ bottomLine(bottomInset: bottomInset + 8, color: Color(hex: 0xFFCC00))
86
+
87
+ baselineLine(orientation: .vertical, color: Color(hex: 0x00C520))
88
+ .frame(height: 52)
89
+ .offset(x: 40, y: topInset)
90
+
91
+ baselineLine(orientation: .vertical, color: Color(hex: 0x00C520))
92
+ .frame(height: 52)
93
+ .offset(x: 48, y: topInset)
94
+ }
95
+ }
96
+
97
+ private func bottomLine(
98
+ bottomInset: CGFloat,
99
+ isDotted: Bool = true,
100
+ color: Color
101
+ ) -> some View {
102
+ VStack(spacing: 0) {
103
+ Spacer(minLength: 0)
104
+ baselineLine(isDotted: isDotted, color: color)
105
+ .padding(.bottom, bottomInset)
106
+ }
107
+ }
108
+
109
+ private func baselineLine(
110
+ orientation: BaselineOrientation = .horizontal,
111
+ isDotted: Bool = true,
112
+ color: Color
113
+ ) -> some View {
114
+ BaselineLineShape(orientation: orientation)
115
+ .stroke(
116
+ color,
117
+ style: StrokeStyle(
118
+ lineWidth: 1,
119
+ lineCap: .round,
120
+ dash: isDotted ? [8, 8] : []
121
+ )
122
+ )
123
+ .frame(
124
+ maxWidth: orientation == .horizontal ? .infinity : 1,
125
+ maxHeight: orientation == .vertical ? .infinity : 1
126
+ )
127
+ }
128
+ }
129
+
130
+ public enum BaselineOrientation: Sendable {
131
+ case horizontal
132
+ case vertical
133
+ }
134
+
135
+ private struct BaselineLineShape: Shape {
136
+ let orientation: BaselineOrientation
137
+
138
+ func path(in rect: CGRect) -> Path {
139
+ var path = Path()
140
+
141
+ switch orientation {
142
+ case .horizontal:
143
+ path.move(to: CGPoint(x: rect.minX, y: rect.midY))
144
+ path.addLine(to: CGPoint(x: rect.maxX, y: rect.midY))
145
+ case .vertical:
146
+ path.move(to: CGPoint(x: rect.midX, y: rect.minY))
147
+ path.addLine(to: CGPoint(x: rect.midX, y: rect.maxY))
148
+ }
149
+
150
+ return path
151
+ }
152
+ }
153
+
154
+ #if DEBUG
155
+ struct BaselineView_Previews: PreviewProvider {
156
+ static var previews: some View {
157
+ ZStack {
158
+ Colors.black01
159
+ BaselineView()
160
+ }
161
+ }
162
+ }
163
+ #endif