├── .github
├── ISSUE_TEMPLATE
│ ├── Bug.md
│ ├── Docs.md
│ ├── Feature.md
│ └── Refactor.md
└── pull_request_template.md
├── .gitignore
├── README.md
└── WithSuhyeon-iOS
├── KakaoSDKFriendResources.bundle
├── Assets.car
├── Info.plist
├── en.lproj
│ └── KakaoSDKFriendLocalizable.strings
├── ja.lproj
│ └── KakaoSDKFriendLocalizable.strings
└── ko.lproj
│ └── KakaoSDKFriendLocalizable.strings
├── WithSuhyeon-iOS.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── swiftpm
│ │ └── Package.resolved
└── xcshareddata
│ └── xcschemes
│ └── WithSuhyeon-iOS.xcscheme
├── WithSuhyeon-iOS
├── Application
│ ├── DIContainer+.swift
│ └── WithSuhyeon_iOSApp.swift
├── Core
│ ├── Common
│ │ ├── Configuration.swift
│ │ └── Extension
│ │ │ ├── Int+.swift
│ │ │ └── String+.swift
│ ├── DIContainer
│ │ ├── DIContainer.swift
│ │ └── Inject.swift
│ ├── DesignSystem
│ │ ├── Component
│ │ │ ├── CustomDatePicker.swift
│ │ │ ├── WithSuhyeonAlert.swift
│ │ │ ├── WithSuhyeonButton.swift
│ │ │ ├── WithSuhyeonCategoryChip.swift
│ │ │ ├── WithSuhyeonCategorySelectChip.swift
│ │ │ ├── WithSuhyeonChatroomNavigationBar.swift
│ │ │ ├── WithSuhyeonCheckbox.swift
│ │ │ ├── WithSuhyeonDropdown.swift
│ │ │ ├── WithSuhyeonEmptyView.swift
│ │ │ ├── WithSuhyeonFindSuhyeonDetailContainer.swift
│ │ │ ├── WithSuhyeonFloatingButton.swift
│ │ │ ├── WithSuhyeonLocationSelect.swift
│ │ │ ├── WithSuhyeonLongTextField.swift
│ │ │ ├── WithSuhyeonMiniButton.swift
│ │ │ ├── WithSuhyeonMultiSelectBigChip.swift
│ │ │ ├── WithSuhyeonMultiSelectCheckBigChip.swift
│ │ │ ├── WithSuhyeonMyFindSuhyeonPost.swift
│ │ │ ├── WithSuhyeonPageIndicator.swift
│ │ │ ├── WithSuhyeonPostContainer.swift
│ │ │ ├── WithSuhyeonProgressBar.swift
│ │ │ ├── WithSuhyeonSmallChip.swift
│ │ │ ├── WithSuhyeonSmallFloatingButton.swift
│ │ │ ├── WithSuhyeonSocialButton.swift
│ │ │ ├── WithSuhyeonTabBar.swift
│ │ │ ├── WithSuhyeonTextField.swift
│ │ │ ├── WithSuhyeonTopNavigationBar.swift
│ │ │ ├── WithSuhyeonUnderlineButton.swift
│ │ │ └── WithSuhyeonWebView.swift
│ │ ├── Foundation
│ │ │ ├── Color+.swift
│ │ │ ├── Font+.swift
│ │ │ ├── Image+.swift
│ │ │ ├── WithSuhyeonButtonState.swift
│ │ │ ├── WithSuhyeonCheckboxState.swift
│ │ │ ├── WithSuhyeonDropdownState.swift
│ │ │ ├── WithSuhyeonIcon.swift
│ │ │ ├── WithSuhyeonImage.swift
│ │ │ ├── WithSuhyeonLocation.swift
│ │ │ ├── WithSuhyeonTextFieldState.swift
│ │ │ └── WithSuyeonChipState.swift
│ │ ├── Modifier
│ │ │ ├── WithSuhyeonAlertModifier.swift
│ │ │ ├── WithSuhyeonBackSwipeModifier.swift
│ │ │ ├── WithSuhyeonBottomSheetModifier.swift
│ │ │ ├── WithSuhyeonCornerRadius.swift
│ │ │ └── WithSuhyeonModalModifier.swift
│ │ └── Resource
│ │ │ ├── Assets.xcassets
│ │ │ ├── AccentColor.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ └── ic_app.png
│ │ │ ├── Contents.json
│ │ │ ├── Icons
│ │ │ │ ├── Contents.json
│ │ │ │ ├── ic_apple.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Frame 2085668307.svg
│ │ │ │ ├── ic_archive_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_archive, Size=24.svg
│ │ │ │ ├── ic_arrow_down_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_arrow_down, Size=24.svg
│ │ │ │ ├── ic_arrow_left_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_arrow_left, Size=24.svg
│ │ │ │ ├── ic_arrow_right_16.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_arrow_right, Size=16.svg
│ │ │ │ ├── ic_arrow_right_20.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── icn_bar.svg
│ │ │ │ ├── ic_arrow_right_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_arrow_right, Size=24.svg
│ │ │ │ ├── ic_arrow_up_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_arrow_up, Size=24.svg
│ │ │ │ ├── ic_block_18.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_block, Size=18.svg
│ │ │ │ ├── ic_bookmark_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_bookmark, Size=24.svg
│ │ │ │ ├── ic_cal_arrow_left.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_arrow_left_16.svg
│ │ │ │ ├── ic_cal_arrow_left_gray.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_arrow_left_gray_16.svg
│ │ │ │ ├── ic_cal_arrow_right.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_cal_arrow_right.svg
│ │ │ │ ├── ic_calander_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_calander, Size=24.svg
│ │ │ │ ├── ic_calender_filled_16.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=icn_calender_filled, Size=16.svg
│ │ │ │ ├── ic_camera_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_camera, Size=24.svg
│ │ │ │ ├── ic_chat_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=chat, Size=24.svg
│ │ │ │ ├── ic_chat_filled_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_chat_filled_24.svg
│ │ │ │ ├── ic_check_16.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_check, Size=16.svg
│ │ │ │ ├── ic_check_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_check, Size=24.svg
│ │ │ │ ├── ic_clock_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_clock, Size=24.svg
│ │ │ │ ├── ic_download_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_download, Size=24.svg
│ │ │ │ ├── ic_expand_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_expand, Size=24.svg
│ │ │ │ ├── ic_find_16.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_find, Size=16.svg
│ │ │ │ ├── ic_find_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=find, Size=24 (1).svg
│ │ │ │ ├── ic_find_filled_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_find_filled_24.svg
│ │ │ │ ├── ic_gallery_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=sharedalbum, Size=24.svg
│ │ │ │ ├── ic_gallery_filled_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_gallery_filled_24.svg
│ │ │ │ ├── ic_home_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=home, Size=24.svg
│ │ │ │ ├── ic_home_filled_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_home_filled_24.svg
│ │ │ │ ├── ic_info_18.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_info, Size=18.svg
│ │ │ │ ├── ic_kakao.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── icon.svg
│ │ │ │ ├── ic_location_18.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── icon.svg
│ │ │ │ ├── ic_location_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_location, Size=24.svg
│ │ │ │ ├── ic_location_home_16.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_location_home, Size=16.svg
│ │ │ │ ├── ic_menu_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_menu, Size=24.svg
│ │ │ │ ├── ic_message_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_message, Size=24.svg
│ │ │ │ ├── ic_mypage_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=mypage, Size=24.svg
│ │ │ │ ├── ic_mypage_filled_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_mypage_filled_24.svg
│ │ │ │ ├── ic_mypage_qna_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── mypage_ic_qna.svg
│ │ │ │ ├── ic_phone_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_phone, Size=24.svg
│ │ │ │ ├── ic_plus_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_plus, Size=24.svg
│ │ │ │ ├── ic_refresh_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_refresh, Size=24.svg
│ │ │ │ ├── ic_search_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_search, Size=24.svg
│ │ │ │ ├── ic_send_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_send, Size=24.svg
│ │ │ │ ├── ic_send_message_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── icon.svg
│ │ │ │ ├── ic_setting_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_setting, Size=24.svg
│ │ │ │ ├── ic_trash_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_trash, Size=24.svg
│ │ │ │ ├── ic_upload_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_upload, Size=24.svg
│ │ │ │ ├── ic_user_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_user, Size=24.svg
│ │ │ │ ├── ic_user_filled_16.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_user_filled, Size=16.svg
│ │ │ │ ├── ic_video_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_video, Size=24.svg
│ │ │ │ ├── ic_warning_black_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_warning_black_24, Size=24.svg
│ │ │ │ ├── ic_white_plus.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── ic_white_plus.svg
│ │ │ │ ├── ic_write_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_write, Size=24.svg
│ │ │ │ ├── ic_xclose_16.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── name=ic_xclose, Size=16.svg
│ │ │ │ ├── ic_xclose_24.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Property 1=ic_xclose, Size=24.svg
│ │ │ │ └── icn_purple_check.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── icn_purple_check.svg
│ │ │ └── Images
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_block.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_block.png
│ │ │ │ ├── img_block@2x.png
│ │ │ │ └── img_block@3x.png
│ │ │ │ ├── img_blue_suma.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── _Avatar contrast inner border@2x.png
│ │ │ │ ├── _Avatar contrast inner border@3x.png
│ │ │ │ └── img_blue_suma.png
│ │ │ │ ├── img_blue_suma_before.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── btn_profile@2x.png
│ │ │ │ ├── btn_profile@3x.png
│ │ │ │ └── img_blue_suma.png
│ │ │ │ ├── img_blue_suma_border.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── btn_blue_border.png
│ │ │ │ ├── btn_profile@2x.png
│ │ │ │ └── btn_profile@3x.png
│ │ │ │ ├── img_boy_default.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Property 1=img_boy_default3.png
│ │ │ │ ├── Property 1=img_boy_default@2x.png
│ │ │ │ └── img_boy_default.png
│ │ │ │ ├── img_boy_selected.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Property 1=img_boy_selected.png
│ │ │ │ ├── Property 1=img_boy_selected3.png
│ │ │ │ └── img_boy_selected-1.png
│ │ │ │ ├── img_do_not_disturb.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_do_not_disturb.png
│ │ │ │ ├── img_do_not_disturb@2x.png
│ │ │ │ └── img_do_not_disturb@3x.png
│ │ │ │ ├── img_empty.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_empty.png
│ │ │ │ ├── img_empty@2x.png
│ │ │ │ └── img_empty@3x.png
│ │ │ │ ├── img_emptystate.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_emptystate.png
│ │ │ │ ├── img_emptystate@2x.png
│ │ │ │ └── img_emptystate@3x.png
│ │ │ │ ├── img_fuckoff.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_fuckoff.png
│ │ │ │ ├── img_fuckoff@2x.png
│ │ │ │ └── img_fuckoff@3x.png
│ │ │ │ ├── img_girl_default.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Property 1=img_girl_default3.png
│ │ │ │ ├── Property 1=img_girl_default@2x.png
│ │ │ │ └── img_girl_default.png
│ │ │ │ ├── img_girl_selected.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Property 1=img_girl_selected3.png
│ │ │ │ ├── Property 1=img_girl_selected@2x.png
│ │ │ │ └── img_girl_selected.png
│ │ │ │ ├── img_green_suma.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── _Avatar contrast inner border@2x.png
│ │ │ │ ├── _Avatar contrast inner border@3x.png
│ │ │ │ └── img_green_suma.png
│ │ │ │ ├── img_green_suma_before.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── btn_profile@2x.png
│ │ │ │ ├── btn_profile@3x.png
│ │ │ │ └── img_green_suma.png
│ │ │ │ ├── img_green_suma_border.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── btn_profile@2x.png
│ │ │ │ ├── btn_profile@3x.png
│ │ │ │ └── img_green_border.png
│ │ │ │ ├── img_logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Group.png
│ │ │ │ ├── Group@2x.png
│ │ │ │ └── Group@3x.png
│ │ │ │ ├── img_megaphone.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_megaphone.png
│ │ │ │ ├── img_megaphone@2x.png
│ │ │ │ └── img_megaphone@3x.png
│ │ │ │ ├── img_profile_default.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── _Avatar contrast inner border@2x.png
│ │ │ │ ├── _Avatar contrast inner border@3x.png
│ │ │ │ └── img_profile_default.png
│ │ │ │ ├── img_purple_suma.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── _Avatar contrast inner border@2x.png
│ │ │ │ ├── _Avatar contrast inner border@3x.png
│ │ │ │ └── img_purple_sumapng.png
│ │ │ │ ├── img_purple_suma_before.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── btn_profile@2x.png
│ │ │ │ ├── btn_profile@3x.png
│ │ │ │ └── img_purple_suma.png
│ │ │ │ ├── img_purple_suma_border.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── btn_profile@3x-1.png
│ │ │ │ ├── btn_profile@3x.png
│ │ │ │ └── img_purple_border.png
│ │ │ │ ├── img_red_suma.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_red_suma.png
│ │ │ │ ├── img_red_suma@2x.png
│ │ │ │ └── img_red_suma@3x.png
│ │ │ │ ├── img_red_suma_before.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── btn_profile.png
│ │ │ │ ├── btn_profile@2x.png
│ │ │ │ └── btn_profile@3x.png
│ │ │ │ ├── img_red_suma_border.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── state=selected, color=red.png
│ │ │ │ ├── state=selected, color=red@2x.png
│ │ │ │ └── state=selected, color=red@3x.png
│ │ │ │ ├── img_seek_and_hide.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_seek_and_hide.png
│ │ │ │ ├── img_seek_and_hide@2x.png
│ │ │ │ └── img_seek_and_hide@3x.png
│ │ │ │ ├── img_study_cafe.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_study_cafe.png
│ │ │ │ ├── img_study_cafe@2x.png
│ │ │ │ └── img_study_cafe@3x.png
│ │ │ │ ├── img_wip.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_wip.png
│ │ │ │ ├── img_wip@2x.png
│ │ │ │ └── img_wip@3x.png
│ │ │ │ └── img_withdraw.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── img_withdraw.png
│ │ │ │ ├── img_withdraw@2x.png
│ │ │ │ └── img_withdraw@3x.png
│ │ │ ├── SUIT-Bold.otf
│ │ │ ├── SUIT-ExtraBold.otf
│ │ │ ├── SUIT-Regular.otf
│ │ │ ├── SUIT-SemiBold.otf
│ │ │ ├── home.json
│ │ │ ├── logincomplete.json
│ │ │ ├── onboarding1.json
│ │ │ ├── onboarding2.json
│ │ │ ├── onboarding3.json
│ │ │ ├── signup.json
│ │ │ └── splash.json
│ ├── KeyChain
│ │ └── KeyChainManager.swift
│ ├── Network
│ │ ├── AuthInterceptor.swift
│ │ ├── BaseResponse.swift
│ │ ├── Encodable+.swift
│ │ ├── NetworkClient.swift
│ │ ├── NetworkError.swift
│ │ ├── NetworkLogger.swift
│ │ ├── NetworkManager.swift
│ │ ├── NetworkRequestable.swift
│ │ ├── NoAuthInterceptor.swift
│ │ ├── RequestParameters.swift
│ │ └── TargetType.swift
│ ├── OAuth
│ │ └── OAuthInteractor
│ │ │ ├── OAuthInteractor.swift
│ │ │ └── impl
│ │ │ └── KakaoInteractor.swift
│ ├── Router
│ │ ├── Router.swift
│ │ └── RouterRegistry.swift
│ ├── Socket
│ │ ├── WebSocketClient.swift
│ │ ├── WebSocketTarget.swift
│ │ └── WebSocketTargetType.swift
│ └── UI
│ │ ├── Extension
│ │ ├── UIApplication+.swift
│ │ └── View+.swift
│ │ ├── Feature.swift
│ │ └── ObservableScrollView.swift
├── Data
│ ├── Auth
│ │ ├── Model
│ │ │ └── Remote
│ │ │ │ ├── KakaoLoginResponseDTO.swift
│ │ │ │ ├── LoginRequestDTO.swift
│ │ │ │ ├── LoginResponseDTO.swift
│ │ │ │ ├── SignUpRequestDTO.swift
│ │ │ │ └── UserIDResponseDTO.swift
│ │ ├── Repository
│ │ │ ├── AuthRepositoryImpl.swift
│ │ │ └── DefaultOAuthRepository.swift
│ │ └── Source
│ │ │ └── Remote
│ │ │ ├── AuthAPI.swift
│ │ │ └── AuthTarget.swift
│ ├── BlockingAccount
│ │ ├── Model
│ │ │ └── Remote
│ │ │ │ ├── BlockingAccountRequestDTO.swift
│ │ │ │ └── BlockingAccountResponseDTO.swift
│ │ ├── Repository
│ │ │ └── BlockingAccountRepositoryImpl.swift
│ │ └── Source
│ │ │ └── Remote
│ │ │ ├── BlockingAccountAPI.swift
│ │ │ └── BlockingAccountTarget.swift
│ ├── Chat
│ │ ├── Model
│ │ │ └── Remote
│ │ │ │ ├── ChatCreateResponseDTO.swift
│ │ │ │ ├── ChatMessagesResponseDTO.swift
│ │ │ │ ├── ChatRequestDTO.swift
│ │ │ │ ├── ChatResponseDTO.swift
│ │ │ │ └── ChatRoomsResponseDTO.swift
│ │ ├── Repository
│ │ │ └── DefaultChatRepository.swift
│ │ └── Source
│ │ │ └── Remote
│ │ │ ├── ChatAPI.swift
│ │ │ ├── ChatSocket.swift
│ │ │ ├── ChatSocketTarget.swift
│ │ │ └── ChatTarget.swift
│ ├── Common
│ │ ├── Model
│ │ │ └── Remote
│ │ │ │ ├── CategoryResponseDTO.swift
│ │ │ │ └── RegionResponseDTO.swift
│ │ ├── Repository
│ │ │ └── DefaultCommonRepository.swift
│ │ └── Source
│ │ │ └── Remote
│ │ │ ├── CommonAPI.swift
│ │ │ └── CommonTarget.swift
│ ├── FindSuhyeon
│ │ ├── Model
│ │ │ └── Remote
│ │ │ │ ├── FindSuhyeonMainRequestDTO.swift
│ │ │ │ ├── FindSuhyeonMainResponseDTO.swift
│ │ │ │ ├── FindSuhyeonPostDetailResponseDTO.swift
│ │ │ │ └── FindSuhyeonPostRequestDTO.swift
│ │ ├── Repository
│ │ │ └── DefaultFindSuhyeonRepository.swift
│ │ └── Source
│ │ │ └── Remote
│ │ │ ├── FindSuhyeonAPI.swift
│ │ │ └── FindSuhyeonTarget.swift
│ ├── Gallery
│ │ ├── Model
│ │ │ └── Remote
│ │ │ │ ├── CategoryRequestDTO.swift
│ │ │ │ ├── GalleriesResponseDTO.swift
│ │ │ │ ├── GalleryDetailResponseDTO.swift
│ │ │ │ └── GalleryInfoRequestDTO.swift
│ │ ├── Repository
│ │ │ └── DefaultGalleryRepository.swift
│ │ └── Source
│ │ │ └── Remote
│ │ │ ├── GalleryAPI.swift
│ │ │ └── GalleryTarget.swift
│ ├── Home
│ │ ├── Model
│ │ │ └── Remote
│ │ │ │ └── HomeResponseDTO.swift
│ │ ├── Repository
│ │ │ └── DefaultHomeRepository.swift
│ │ └── Source
│ │ │ └── Remote
│ │ │ ├── HomeAPI.swift
│ │ │ └── HomeTarget.swift
│ └── MyPage
│ │ ├── Model
│ │ └── Remote
│ │ │ ├── MyFindSuhyeonPostResponseDTO.swift
│ │ │ ├── MyGalleryPostsResponseDTO.swift
│ │ │ ├── MyInterestRegionRequestDTO.swift
│ │ │ ├── MyInterestRegionResponseDTO.swift
│ │ │ ├── MyPhoneNumberResponseDTO.swift
│ │ │ └── UserResponseDTO.swift
│ │ ├── Repository
│ │ └── DefaultMyPageRepository.swift
│ │ └── Source
│ │ └── Remote
│ │ ├── MyPageAPI.swift
│ │ └── MyPageTarget.swift
├── Domain
│ ├── Auth
│ │ ├── Entity
│ │ │ └── Member.swift
│ │ ├── Repository
│ │ │ ├── AuthRepository.swift
│ │ │ └── OAuthRepository.swift
│ │ └── UseCase
│ │ │ ├── SignUpUseCase.swift
│ │ │ └── ValidateNickNameUseCase.swift
│ ├── BlockingAccount
│ │ ├── Entity
│ │ │ └── BlockingMember.swift
│ │ └── Repository
│ │ │ └── BlockingRepository.swift
│ ├── Chat
│ │ ├── Entity
│ │ │ ├── Chat.swift
│ │ │ ├── Create.swift
│ │ │ ├── Message.swift
│ │ │ └── Send.swift
│ │ └── Repository
│ │ │ └── ChatRepository.swift
│ ├── Common
│ │ ├── Entity
│ │ │ ├── Category.swift
│ │ │ ├── Gender.swift
│ │ │ └── Region.swift
│ │ ├── Repository
│ │ │ └── CommonRepository.swift
│ │ └── UseCase
│ │ │ ├── GetCategoriesUseCase.swift
│ │ │ └── GetRegionsUseCase.swift
│ ├── FindSuhyeon
│ │ ├── Entity
│ │ │ ├── FindSuhyeonMain.swift
│ │ │ ├── FindSuhyeonPost.swift
│ │ │ ├── FindSuhyeonPostDetail.swift
│ │ │ └── FindSuhyeonPostRequest.swift
│ │ └── Repository
│ │ │ └── FindSuhyeonRepository.swift
│ ├── Gallery
│ │ ├── Entity
│ │ │ ├── GalleryDetail.swift
│ │ │ ├── GalleryPost.swift
│ │ │ └── GalleryUpload.swift
│ │ └── Repository
│ │ │ └── GalleryRepository.swift
│ ├── Home
│ │ ├── Entity
│ │ │ ├── Home.swift
│ │ │ └── Post.swift
│ │ └── Repository
│ │ │ └── HomeRepository.swift
│ └── MyPage
│ │ ├── Entity
│ │ ├── MyFindSuhyeonPost.swift
│ │ ├── MyGalleryPost.swift
│ │ ├── MyInterestRegion.swift
│ │ └── User.swift
│ │ └── Repository
│ │ └── MyPageRepository.swift
├── Info.plist
├── Presentation
│ ├── Chat
│ │ ├── ChatFeature.swift
│ │ ├── ChatRoom
│ │ │ ├── ChatRoomFeature.swift
│ │ │ └── ChatRoomView.swift
│ │ ├── ChatView.swift
│ │ └── Component
│ │ │ ├── ChatUserContainer.swift
│ │ │ └── MessageContainer.swift
│ ├── FindSuhyeon
│ │ ├── Component
│ │ │ ├── FindSuhyeonDropdownCell.swift
│ │ │ ├── FindSuhyeonGenderSelectCell.swift
│ │ │ └── FindSuhyeonMainPostContainer.swift
│ │ ├── FindSuhyeonDetail
│ │ │ ├── FindSuhyeonDetailFeature.swift
│ │ │ └── FindSuhyeonDetailView.swift
│ │ ├── FindSuhyeonFeature.swift
│ │ ├── FindSuhyeonMain
│ │ │ ├── FindSuhyeonMainFeature.swift
│ │ │ └── FindSuhyeonMainView.swift
│ │ └── FindSuhyeonView.swift
│ ├── Gallery
│ │ ├── Component
│ │ │ ├── CategoryItem.swift
│ │ │ └── GalleryItem.swift
│ │ ├── GalleryDetail
│ │ │ ├── GalleryDetailFeature.swift
│ │ │ └── GalleryDetailView.swift
│ │ ├── GalleryFeature.swift
│ │ ├── GalleryUpload
│ │ │ ├── GalleryUploadFeature.swift
│ │ │ └── GalleryUploadView.swift
│ │ └── GalleryView.swift
│ ├── Home
│ │ ├── Component
│ │ │ └── HomeFindSuhyeonContainer.swift
│ │ ├── HomeFeature.swift
│ │ └── HomeView.swift
│ ├── Login
│ │ ├── LoginCompleteView.swift
│ │ ├── LoginFeature.swift
│ │ └── LoginView.swift
│ ├── Main
│ │ ├── ContentView.swift
│ │ ├── MainTab.swift
│ │ ├── MainTabBar.swift
│ │ ├── MainTabBarFeature.swift
│ │ └── TabItem.swift
│ ├── MyPage
│ │ ├── BlockingAccountManagement
│ │ │ ├── BlockingAccountManagement.swift
│ │ │ └── BlockingAccountManagementFeature.swift
│ │ ├── Feedback
│ │ │ ├── Feedback.swift
│ │ │ └── FeedbackFeature.swift
│ │ ├── MyInfo
│ │ │ ├── MyInfoFeature.swift
│ │ │ └── MyInfoView.swift
│ │ ├── MyPageFeature.swift
│ │ ├── MyPageView.swift
│ │ ├── MyPost
│ │ │ ├── MyPost.swift
│ │ │ ├── MyPostContentCase.swift
│ │ │ └── MyPostFeature.swift
│ │ ├── SetInterest
│ │ │ ├── SetInterest.swift
│ │ │ └── SetInterestFeature.swift
│ │ ├── TermsAndPolicies
│ │ │ ├── TermsAndPolicies.swift
│ │ │ ├── TermsAndPoliciesFeature.swift
│ │ │ └── TermsAndPoliciesWebView.swift
│ │ └── Withdraw
│ │ │ └── ServerWithdraw.swift
│ ├── SignUp
│ │ ├── Component
│ │ │ └── GenderButton.swift
│ │ ├── SignUpContent.swift
│ │ ├── SignUpContentCase.swift
│ │ ├── SignUpFeature.swift
│ │ ├── SignUpView.swift
│ │ └── View
│ │ │ ├── ActiveAreaView.swift
│ │ │ ├── PhoneAuthenticationView.swift
│ │ │ ├── ProfileImageView.swift
│ │ │ ├── SelectBirthYearView.swift
│ │ │ ├── SelectGenderView.swift
│ │ │ ├── SignUpCompleteView.swift
│ │ │ ├── TermsOfServiceView.swift
│ │ │ └── WriteNickNameView.swift
│ ├── Splash
│ │ ├── SplashFeature.swift
│ │ └── SplashView.swift
│ └── Start
│ │ ├── StartFeature.swift
│ │ └── StartView.swift
├── Preview Content
│ └── Preview Assets.xcassets
│ │ └── Contents.json
└── WithSuhyeon-iOS.entitlements
├── WithSuhyeon-iOSTests
└── WithSuhyeon_iOSTests.swift
└── WithSuhyeon-iOSUITests
├── WithSuhyeon_iOSUITests.swift
└── WithSuhyeon_iOSUITestsLaunchTests.swift
/.github/ISSUE_TEMPLATE/Bug.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Bug"
3 | about: 앱에서 발생한 Issue를 설명해주세요.
4 | title: "[bug] App Bug Report"
5 | labels: Fix
6 | assignees: ''
7 | ---
8 |
9 | ## 🐞 BugFix
10 |
11 | ### 앱에서 발생한 Issue를 설명해주세요.
12 |
13 | A clear and concise description of what the bug is.
14 |
15 |
16 | ### Issue 재현 경로를 설명해주세요.
17 | Steps to reproduce the behavior:
18 | 1. Go to '...'
19 | 2. Click on '....'
20 | 3. Scroll down to '....'
21 | 4. See error
22 |
23 |
24 | ### 수정 후 예상되는 동작을 설명해주세요.
25 | A clear and concise description of what you expected to happen.
26 |
27 |
28 | ### 스크린샷
29 | If applicable, add screenshots to help explain your problem.
30 |
31 |
32 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/Docs.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Docs"
3 | about: 문서 작성 관련 작업내용을 설명해주세요.
4 | title: "[docs] Docs Task"
5 | labels: Docs
6 | assignees: ''
7 |
8 | ---
9 |
10 | ## 📜 Docs
11 |
12 | ### 작업 내용을 설명해주세요.
13 |
14 |
15 | ### 비고
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/Feature.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Feature"
3 | about: 앱에서 추가할 기능을 설명해주세요.
4 | title: "[feat] Feature Request"
5 | labels: Feature
6 | assignees: ''
7 |
8 | ---
9 |
10 | ## 🔍 Feature
11 |
12 | ### 추가할 기능에 대해 설명해주세요.
13 |
14 |
15 |
16 | ### Progress
17 | - [ ] todo1
18 | - [ ] todo2
19 | - [ ] todo3
20 |
21 |
22 | ### 비고
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/Refactor.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Refactor"
3 | about: 앱에서 리팩토링할 내용을 설명해주세요.
4 | title: "[refactor] Refactor Request"
5 | labels: Refactor
6 | assignees: ''
7 |
8 | ---
9 |
10 | ## ⚒️ Refactor
11 |
12 | ### 리팩토링할 내용에 대해 설명해주세요.
13 |
14 |
15 |
16 | ### Progress
17 | - [ ] todo1
18 | - [ ] todo2
19 | - [ ] todo3
20 |
21 |
22 |
23 | ### 비고
24 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ## 📌 PR 요약
2 |
3 | 🌱 작업한 내용
4 | -
5 |
6 | 🌱 PR 포인트
7 | -
8 |
9 | ## 📸 스크린샷
10 | |스크린샷|
11 | |:--:|
12 | |파일첨부바람|
13 |
14 | ## 📮 관련 이슈
15 | - Resolved: #이슈번호
16 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/Assets.car:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/Assets.car
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/en.lproj/KakaoSDKFriendLocalizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/en.lproj/KakaoSDKFriendLocalizable.strings
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/ja.lproj/KakaoSDKFriendLocalizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/ja.lproj/KakaoSDKFriendLocalizable.strings
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/ko.lproj/KakaoSDKFriendLocalizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/KakaoSDKFriendResources.bundle/ko.lproj/KakaoSDKFriendLocalizable.strings
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Common/Configuration.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Configuration.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public enum Configuration {
11 | static let baseURL: String = {
12 | guard let url = Bundle.main.infoDictionary?["BASE_URL"] as? String else {
13 | fatalError("No Configuration Found")
14 | }
15 | return url
16 | }()
17 |
18 | static let socketURL: String = {
19 | guard let url = Bundle.main.infoDictionary?["SOCKET_URL"] as? String else {
20 | fatalError("No Configuration Found")
21 | }
22 | return url
23 | }()
24 | }
25 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Common/Extension/Int+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Int+.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Int {
11 | var formattedWithComma: String {
12 | let formatter = NumberFormatter()
13 | formatter.numberStyle = .decimal
14 | return formatter.string(from: NSNumber(value: self)) ?? "\(self)"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DIContainer/DIContainer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DIContainer.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Combine
9 |
10 | class DIContainer {
11 | static let shared = DIContainer()
12 |
13 | private var container: [String: Any] = [:]
14 |
15 | private init() {}
16 |
17 | func register(type: T.Type, key: String = "", implementation factory: @escaping () -> T) {
18 | let key = makeKey(for: type, key: key)
19 | container[key] = factory
20 | }
21 |
22 | func resolve(type: T.Type, key: String = "") -> T? {
23 | let key = makeKey(for: type, key: key)
24 | if let factory = container[key] as? () -> T {
25 | return factory()
26 | }
27 | return nil
28 | }
29 |
30 | private func makeKey(for type: T.Type, key: String) -> String {
31 | return "\(String(describing: type)):\(key)"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DIContainer/Inject.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Inject.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | @propertyWrapper
11 | public struct Inject {
12 | public let wrappedValue: T
13 |
14 | public init(key: String = "") {
15 | if let resolvedValue = DIContainer.shared.resolve(type: T.self, key: key) {
16 | self.wrappedValue = resolvedValue
17 | } else {
18 | fatalError("Failed to resolve dependency for type \(T.self) with key '\(key)'. Ensure that the dependency is registered in the DIContainer.")
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Component/WithSuhyeonCategoryChip.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonCategoryChip.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/15/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct WithSuhyeonCategoryChip: View {
11 | let title: String
12 |
13 | var body: some View {
14 | Text(title)
15 | .foregroundColor(
16 | Color.primary400
17 | )
18 | .font(.caption01B)
19 | .padding(.horizontal, 10)
20 | .frame(height: 26)
21 | .background(
22 | Color.primary50
23 | )
24 | .cornerRadius(8)
25 | }
26 | }
27 |
28 | #Preview {
29 | WithSuhyeonCategoryChip(title: "바다")
30 | }
31 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Component/WithSuhyeonEmptyView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonEmptyView.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/16/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct WithSuhyeonEmptyView: View {
11 | let emptyMessage: String
12 |
13 | var body: some View {
14 | ZStack(alignment: .center) {
15 | VStack(spacing: 0) {
16 | Image(image: .imgEmptyState)
17 | Text(emptyMessage)
18 | .font(.body03R)
19 | .foregroundColor(.gray400)
20 | .padding(.top, 8)
21 | }
22 | .frame(maxWidth: .infinity, maxHeight: .infinity)
23 | }
24 | }
25 | }
26 |
27 | #Preview {
28 | WithSuhyeonEmptyView(emptyMessage: "메세지가 없습니다.")
29 | }
30 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Component/WithSuhyeonPostContainer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonPostContainer.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/15/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | import Kingfisher
11 |
12 | struct WithSuhyeonPostContainer: View {
13 | let imageUrl: String
14 | let nickname: String
15 | let date: String
16 |
17 | var body: some View {
18 | HStack {
19 | Image(imageUrl)
20 | .resizable()
21 | .clipShape(Circle())
22 | .frame(width: 38, height: 38)
23 | .padding(.leading, 16)
24 | .padding(.vertical, 12)
25 |
26 | VStack(alignment: .leading, spacing: 4) {
27 | Text(nickname)
28 | .font(.body03SB)
29 | .foregroundColor(.gray700)
30 | Text(date)
31 | .font(.caption01R)
32 | .foregroundColor(.gray500)
33 | }
34 | .frame(height: 40)
35 | .padding(.leading, 12)
36 |
37 | Spacer()
38 | }
39 | }
40 | }
41 |
42 | #Preview {
43 | WithSuhyeonPostContainer(
44 | imageUrl: "https://reqres.in/img/faces/7-image.jpg",
45 | nickname: "작심이",
46 | date: "1월 25일"
47 | )
48 | }
49 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Component/WithSuhyeonUnderlineButton.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonUnderlineButton.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/14/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct WithSuhyeonUnderlineButton: View {
11 | let title: String
12 | let onTap: () -> Void
13 |
14 |
15 | var body: some View {
16 | Button(action: {
17 | onTap()
18 | }) {
19 | VStack(spacing: 4) {
20 | Text(title)
21 | .font(.body03B)
22 | .foregroundColor(Color.gray500)
23 |
24 | Rectangle()
25 | .fill(Color.gray500)
26 | .frame(height: 1)
27 | .padding(.top, -2)
28 | }
29 | }
30 | .buttonStyle(PlainButtonStyle())
31 | }
32 | }
33 |
34 | struct WithSuhyeonUnderlineButtonTestView: View {
35 | var body: some View {
36 | HStack(spacing: 20) {
37 | WithSuhyeonUnderlineButton(title: "보기") {}
38 |
39 | WithSuhyeonUnderlineButton(title: "보기") {}
40 | }
41 | .padding()
42 | }
43 | }
44 |
45 | #Preview {
46 | WithSuhyeonUnderlineButtonTestView()
47 | }
48 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Foundation/Image+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Image+.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/11/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension Image {
11 | init(icon: WithSuhyeonIcon){
12 | self.init(icon.rawValue)
13 | }
14 |
15 | init(image: WithSuhyeonImage){
16 | self.init(image.rawValue)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Foundation/WithSuhyeonButtonState.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonButtonState.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/11/25.
6 | //
7 |
8 | import Foundation
9 |
10 | enum WithSuhyeonButtonState {
11 | case disabled
12 | case enabled
13 | case alert
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Foundation/WithSuhyeonCheckboxState.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonCheckboxState.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/12/25.
6 | //
7 |
8 | import Foundation
9 |
10 | enum WithSuhyeonCheckboxState {
11 | case checked
12 | case unchecked
13 | case disabled
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Foundation/WithSuhyeonDropdownState.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonDropdownState.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/15/25.
6 | //
7 |
8 | import Foundation
9 |
10 | enum WithSuhyeonDropdownState {
11 | case isError
12 | case isSelected
13 | case defaultState
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Foundation/WithSuhyeonTextFieldState.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonTextFieldState.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/11/25.
6 | //
7 |
8 | import Foundation
9 |
10 | enum WithSuhyeonTextFieldState {
11 | case editing
12 | case error
13 | case disabled
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Foundation/WithSuyeonChipState.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuyeonChipState.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 정지원 on 1/14/25.
6 | //
7 | import Foundation
8 |
9 | enum WithSuhyeonChipState {
10 | case selected
11 | case unselected
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Modifier/WithSuhyeonBackSwipeModifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonBackSwipeModifier.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/16/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import SwiftUI
11 |
12 | struct WithSuhyeonBackSwipeModifier: ViewModifier {
13 | @EnvironmentObject var router: RouterRegistry
14 |
15 | func body(content: Content) -> some View {
16 | content
17 | .gesture(
18 | DragGesture(minimumDistance: 20, coordinateSpace: .local)
19 | .onEnded { value in
20 | if value.startLocation.x < 50 && value.translation.width > 100 {
21 | router.popBack()
22 | }
23 | }
24 | )
25 | }
26 | }
27 |
28 | extension View {
29 | func enableBackSwipe() -> some View {
30 | self.modifier(WithSuhyeonBackSwipeModifier())
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Modifier/WithSuhyeonCornerRadius.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeonCornerRadius.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/16/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct WithSuhyeonCornerRadiusModifier: ViewModifier {
11 | let radius: CGFloat
12 | let corners: UIRectCorner
13 |
14 | func body(content: Content) -> some View {
15 | content
16 | .clipShape(RoundedCorners(radius: radius, corners: corners))
17 | }
18 | }
19 |
20 | extension View {
21 | func withSuhyeonCornerRadius(_ radius: CGFloat, corners: UIRectCorner) -> some View {
22 | self.modifier(WithSuhyeonCornerRadiusModifier(radius: radius, corners: corners))
23 | }
24 | }
25 |
26 | struct RoundedCorners: Shape {
27 | var radius: CGFloat
28 | var corners: UIRectCorner
29 |
30 | func path(in rect: CGRect) -> Path {
31 | let path = UIBezierPath(
32 | roundedRect: rect,
33 | byRoundingCorners: corners,
34 | cornerRadii: CGSize(width: radius, height: radius)
35 | )
36 | return Path(path.cgPath)
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_app.png",
5 | "idiom" : "universal",
6 | "platform" : "ios",
7 | "size" : "1024x1024"
8 | }
9 | ],
10 | "info" : {
11 | "author" : "xcode",
12 | "version" : 1
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/AppIcon.appiconset/ic_app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/AppIcon.appiconset/ic_app.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_apple.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Frame 2085668307.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_archive_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_archive, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_archive_24.imageset/Property 1=ic_archive, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_down_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_arrow_down, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_down_24.imageset/Property 1=ic_arrow_down, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_left_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_arrow_left, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_left_24.imageset/Property 1=ic_arrow_left, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_right_16.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_arrow_right, Size=16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_right_16.imageset/name=ic_arrow_right, Size=16.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_right_20.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icn_bar.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_right_20.imageset/icn_bar.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_right_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_arrow_right, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_right_24.imageset/Property 1=ic_arrow_right, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_up_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_arrow_up, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_arrow_up_24.imageset/Property 1=ic_arrow_up, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_block_18.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_block, Size=18.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_bookmark_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_bookmark, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_bookmark_24.imageset/Property 1=ic_bookmark, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_cal_arrow_left.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_arrow_left_16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_cal_arrow_left.imageset/ic_arrow_left_16.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_cal_arrow_left_gray.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_arrow_left_gray_16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_cal_arrow_left_gray.imageset/ic_arrow_left_gray_16.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_cal_arrow_right.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_cal_arrow_right.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_cal_arrow_right.imageset/ic_cal_arrow_right.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_calander_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_calander, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_calander_24.imageset/Property 1=ic_calander, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_calender_filled_16.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=icn_calender_filled, Size=16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_calender_filled_16.imageset/name=icn_calender_filled, Size=16.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_camera_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_camera, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_chat_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=chat, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_chat_filled_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_chat_filled_24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_check_16.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_check, Size=16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_check_16.imageset/Property 1=ic_check, Size=16.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_check_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_check, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_check_24.imageset/Property 1=ic_check, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_clock_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_clock, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_clock_24.imageset/Property 1=ic_clock, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_download_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_download, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_download_24.imageset/Property 1=ic_download, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_expand_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_expand, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_expand_24.imageset/Property 1=ic_expand, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_find_16.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_find, Size=16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_find_16.imageset/name=ic_find, Size=16.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_find_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=find, Size=24 (1).svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_find_filled_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_find_filled_24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_gallery_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=sharedalbum, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_gallery_24.imageset/name=sharedalbum, Size=24.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_gallery_filled_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_gallery_filled_24.svg",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_gallery_filled_24.imageset/ic_gallery_filled_24.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_home_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=home, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_home_24.imageset/name=home, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_home_filled_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_home_filled_24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_home_filled_24.imageset/ic_home_filled_24.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_info_18.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_info, Size=18.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_info_18.imageset/name=ic_info, Size=18.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_kakao.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_kakao.imageset/icon.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_location_18.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_location_18.imageset/icon.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_location_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_location, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_location_24.imageset/Property 1=ic_location, Size=24.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_location_home_16.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_location_home, Size=16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_location_home_16.imageset/name=ic_location_home, Size=16.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_menu_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_menu, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_menu_24.imageset/Property 1=ic_menu, Size=24.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_message_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_message, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_message_24.imageset/Property 1=ic_message, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_mypage_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=mypage, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_mypage_24.imageset/name=mypage, Size=24.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_mypage_filled_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_mypage_filled_24.svg",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_mypage_filled_24.imageset/ic_mypage_filled_24.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_mypage_qna_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "mypage_ic_qna.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_mypage_qna_24.imageset/mypage_ic_qna.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_phone_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_phone, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_plus_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_plus, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_plus_24.imageset/Property 1=ic_plus, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_refresh_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_refresh, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_refresh_24.imageset/Property 1=ic_refresh, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_search_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_search, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_search_24.imageset/Property 1=ic_search, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_send_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_send, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_send_24.imageset/name=ic_send, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_send_message_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_send_message_24.imageset/icon.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_setting_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_setting, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_trash_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_trash, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_trash_24.imageset/Property 1=ic_trash, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_upload_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_upload, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_upload_24.imageset/Property 1=ic_upload, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_user_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_user, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_user_24.imageset/Property 1=ic_user, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_user_filled_16.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_user_filled, Size=16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_user_filled_16.imageset/name=ic_user_filled, Size=16.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_video_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_video, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_video_24.imageset/Property 1=ic_video, Size=24.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_warning_black_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_warning_black_24, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_warning_black_24.imageset/Property 1=ic_warning_black_24, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_white_plus.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "ic_white_plus.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_white_plus.imageset/ic_white_plus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_write_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_write, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_write_24.imageset/Property 1=ic_write, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_xclose_16.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "name=ic_xclose, Size=16.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_xclose_16.imageset/name=ic_xclose, Size=16.svg:
--------------------------------------------------------------------------------
1 |
18 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_xclose_24.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Property 1=ic_xclose, Size=24.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/ic_xclose_24.imageset/Property 1=ic_xclose, Size=24.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/icn_purple_check.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icn_purple_check.svg",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Icons/icn_purple_check.imageset/icn_purple_check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_block.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_block.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_block@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_block@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_block.imageset/img_block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_block.imageset/img_block.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_block.imageset/img_block@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_block.imageset/img_block@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_block.imageset/img_block@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_block.imageset/img_block@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_blue_suma.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "_Avatar contrast inner border@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "_Avatar contrast inner border@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma.imageset/_Avatar contrast inner border@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma.imageset/_Avatar contrast inner border@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma.imageset/_Avatar contrast inner border@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma.imageset/_Avatar contrast inner border@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma.imageset/img_blue_suma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma.imageset/img_blue_suma.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_before.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_blue_suma.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "btn_profile@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "btn_profile@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_before.imageset/btn_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_before.imageset/btn_profile@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_before.imageset/btn_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_before.imageset/btn_profile@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_before.imageset/img_blue_suma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_before.imageset/img_blue_suma.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_border.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "btn_blue_border.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "btn_profile@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "btn_profile@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_border.imageset/btn_blue_border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_border.imageset/btn_blue_border.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_border.imageset/btn_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_border.imageset/btn_profile@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_border.imageset/btn_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_blue_suma_border.imageset/btn_profile@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_default.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_boy_default.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Property 1=img_boy_default@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "Property 1=img_boy_default3.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_default.imageset/Property 1=img_boy_default3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_default.imageset/Property 1=img_boy_default3.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_default.imageset/Property 1=img_boy_default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_default.imageset/Property 1=img_boy_default@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_default.imageset/img_boy_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_default.imageset/img_boy_default.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_boy_selected-1.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Property 1=img_boy_selected.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "Property 1=img_boy_selected3.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_selected.imageset/Property 1=img_boy_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_selected.imageset/Property 1=img_boy_selected.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_selected.imageset/Property 1=img_boy_selected3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_selected.imageset/Property 1=img_boy_selected3.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_selected.imageset/img_boy_selected-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_boy_selected.imageset/img_boy_selected-1.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_do_not_disturb.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_do_not_disturb.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_do_not_disturb@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_do_not_disturb@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_do_not_disturb.imageset/img_do_not_disturb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_do_not_disturb.imageset/img_do_not_disturb.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_do_not_disturb.imageset/img_do_not_disturb@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_do_not_disturb.imageset/img_do_not_disturb@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_do_not_disturb.imageset/img_do_not_disturb@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_do_not_disturb.imageset/img_do_not_disturb@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_empty.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_empty.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_empty@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_empty@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_empty.imageset/img_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_empty.imageset/img_empty.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_empty.imageset/img_empty@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_empty.imageset/img_empty@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_empty.imageset/img_empty@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_empty.imageset/img_empty@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_emptystate.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_emptystate.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_emptystate@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_emptystate@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_emptystate.imageset/img_emptystate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_emptystate.imageset/img_emptystate.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_emptystate.imageset/img_emptystate@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_emptystate.imageset/img_emptystate@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_emptystate.imageset/img_emptystate@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_emptystate.imageset/img_emptystate@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_fuckoff.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_fuckoff.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_fuckoff@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_fuckoff@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_fuckoff.imageset/img_fuckoff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_fuckoff.imageset/img_fuckoff.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_fuckoff.imageset/img_fuckoff@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_fuckoff.imageset/img_fuckoff@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_fuckoff.imageset/img_fuckoff@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_fuckoff.imageset/img_fuckoff@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_default.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_girl_default.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Property 1=img_girl_default@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "Property 1=img_girl_default3.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_default.imageset/Property 1=img_girl_default3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_default.imageset/Property 1=img_girl_default3.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_default.imageset/Property 1=img_girl_default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_default.imageset/Property 1=img_girl_default@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_default.imageset/img_girl_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_default.imageset/img_girl_default.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_girl_selected.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Property 1=img_girl_selected@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "Property 1=img_girl_selected3.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_selected.imageset/Property 1=img_girl_selected3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_selected.imageset/Property 1=img_girl_selected3.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_selected.imageset/Property 1=img_girl_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_selected.imageset/Property 1=img_girl_selected@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_selected.imageset/img_girl_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_girl_selected.imageset/img_girl_selected.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_green_suma.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "_Avatar contrast inner border@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "_Avatar contrast inner border@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma.imageset/_Avatar contrast inner border@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma.imageset/_Avatar contrast inner border@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma.imageset/_Avatar contrast inner border@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma.imageset/_Avatar contrast inner border@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma.imageset/img_green_suma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma.imageset/img_green_suma.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_before.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_green_suma.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "btn_profile@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "btn_profile@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_before.imageset/btn_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_before.imageset/btn_profile@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_before.imageset/btn_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_before.imageset/btn_profile@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_before.imageset/img_green_suma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_before.imageset/img_green_suma.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_border.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_green_border.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "btn_profile@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "btn_profile@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_border.imageset/btn_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_border.imageset/btn_profile@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_border.imageset/btn_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_border.imageset/btn_profile@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_border.imageset/img_green_border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_green_suma_border.imageset/img_green_border.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Group.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Group@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "Group@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_logo.imageset/Group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_logo.imageset/Group.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_logo.imageset/Group@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_logo.imageset/Group@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_logo.imageset/Group@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_logo.imageset/Group@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_megaphone.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_megaphone.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_megaphone@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_megaphone@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_megaphone.imageset/img_megaphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_megaphone.imageset/img_megaphone.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_megaphone.imageset/img_megaphone@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_megaphone.imageset/img_megaphone@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_megaphone.imageset/img_megaphone@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_megaphone.imageset/img_megaphone@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_profile_default.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_profile_default.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "_Avatar contrast inner border@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "_Avatar contrast inner border@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_profile_default.imageset/_Avatar contrast inner border@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_profile_default.imageset/_Avatar contrast inner border@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_profile_default.imageset/_Avatar contrast inner border@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_profile_default.imageset/_Avatar contrast inner border@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_profile_default.imageset/img_profile_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_profile_default.imageset/img_profile_default.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_purple_sumapng.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "_Avatar contrast inner border@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "_Avatar contrast inner border@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma.imageset/_Avatar contrast inner border@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma.imageset/_Avatar contrast inner border@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma.imageset/_Avatar contrast inner border@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma.imageset/_Avatar contrast inner border@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma.imageset/img_purple_sumapng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma.imageset/img_purple_sumapng.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_before.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_purple_suma.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "btn_profile@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "btn_profile@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_before.imageset/btn_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_before.imageset/btn_profile@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_before.imageset/btn_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_before.imageset/btn_profile@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_before.imageset/img_purple_suma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_before.imageset/img_purple_suma.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_border.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_purple_border.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "btn_profile@3x-1.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "btn_profile@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_border.imageset/btn_profile@3x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_border.imageset/btn_profile@3x-1.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_border.imageset/btn_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_border.imageset/btn_profile@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_border.imageset/img_purple_border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_purple_suma_border.imageset/img_purple_border.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_red_suma.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_red_suma@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_red_suma@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma.imageset/img_red_suma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma.imageset/img_red_suma.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma.imageset/img_red_suma@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma.imageset/img_red_suma@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma.imageset/img_red_suma@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma.imageset/img_red_suma@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_before.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "btn_profile.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "btn_profile@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "btn_profile@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_before.imageset/btn_profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_before.imageset/btn_profile.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_before.imageset/btn_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_before.imageset/btn_profile@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_before.imageset/btn_profile@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_before.imageset/btn_profile@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_border.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "state=selected, color=red.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "state=selected, color=red@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "state=selected, color=red@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_border.imageset/state=selected, color=red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_border.imageset/state=selected, color=red.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_border.imageset/state=selected, color=red@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_border.imageset/state=selected, color=red@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_border.imageset/state=selected, color=red@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_red_suma_border.imageset/state=selected, color=red@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_seek_and_hide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_seek_and_hide.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_seek_and_hide@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_seek_and_hide@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_seek_and_hide.imageset/img_seek_and_hide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_seek_and_hide.imageset/img_seek_and_hide.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_seek_and_hide.imageset/img_seek_and_hide@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_seek_and_hide.imageset/img_seek_and_hide@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_seek_and_hide.imageset/img_seek_and_hide@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_seek_and_hide.imageset/img_seek_and_hide@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_study_cafe.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_study_cafe.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_study_cafe@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_study_cafe@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_study_cafe.imageset/img_study_cafe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_study_cafe.imageset/img_study_cafe.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_study_cafe.imageset/img_study_cafe@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_study_cafe.imageset/img_study_cafe@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_study_cafe.imageset/img_study_cafe@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_study_cafe.imageset/img_study_cafe@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_wip.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_wip.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_wip@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_wip@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_wip.imageset/img_wip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_wip.imageset/img_wip.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_wip.imageset/img_wip@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_wip.imageset/img_wip@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_wip.imageset/img_wip@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_wip.imageset/img_wip@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_withdraw.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "img_withdraw.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "img_withdraw@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "img_withdraw@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_withdraw.imageset/img_withdraw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_withdraw.imageset/img_withdraw.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_withdraw.imageset/img_withdraw@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_withdraw.imageset/img_withdraw@2x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_withdraw.imageset/img_withdraw@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/Assets.xcassets/Images/img_withdraw.imageset/img_withdraw@3x.png
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-Bold.otf
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-ExtraBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-ExtraBold.otf
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-Regular.otf
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-SemiBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-with-suhyeon/With-Suhyeon-iOS/1fd725ce1178f69ca5266ebd4e4c683b61751ffc/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/DesignSystem/Resource/SUIT-SemiBold.otf
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Network/AuthInterceptor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AuthInterceptor.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Alamofire
11 |
12 | final class AuthInterceptor: RequestInterceptor {
13 | private let keychainKey = "accessToken"
14 |
15 | func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result) -> Void) {
16 | var adaptedRequest = urlRequest
17 |
18 | if let token = try? KeyChainManager.load(key: keychainKey) {
19 | adaptedRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
20 | }
21 |
22 | completion(.success(adaptedRequest))
23 | }
24 |
25 | func retry(_ request: Request, for session: Session, dueTo error: Error, completion: @escaping (RetryResult) -> Void) {
26 | completion(.doNotRetry)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Network/BaseResponse.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseResponse.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | struct ResponseData: Decodable {
9 | let errorCode: String?
10 | let message: String
11 | let result: T
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Network/Encodable+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Encodable+.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Encodable {
11 | func toDictionary() -> [String: Any] {
12 | guard let data = try? JSONEncoder().encode(self),
13 | let jsonData = try? JSONSerialization.jsonObject(with: data),
14 | let dictionaryData = jsonData as? [String: Any] else { return [:] }
15 | return dictionaryData
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Network/NetworkManager.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NetworkManager.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Alamofire
11 |
12 | final class NetworkManager {
13 | static let shared = NetworkManager()
14 |
15 | let loggers = [NetworkLogger()] as [EventMonitor]
16 | var session: Session
17 | var noneAuthSession: Session
18 |
19 | private init() {
20 | let configuration = URLSessionConfiguration.default
21 |
22 | let noAuthInterceptor = NoAuthInterceptor()
23 | self.noneAuthSession = Session(
24 | configuration: configuration,
25 | interceptor: noAuthInterceptor,
26 | eventMonitors: loggers
27 | )
28 |
29 | let authInterceptor = AuthInterceptor()
30 | self.session = Session(
31 | configuration: configuration,
32 | interceptor: authInterceptor,
33 | eventMonitors: loggers
34 | )
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Network/NetworkRequestable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NetworkRequestable.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | protocol NetworkRequestable {
12 | func request(_ model: T.Type, target: TargetType) -> AnyPublisher
13 | func request(target: TargetType) -> AnyPublisher
14 | func requestNoneAuth(_ model: T.Type, target: TargetType) -> AnyPublisher
15 | func requestNoneAuth(target: TargetType) -> AnyPublisher
16 | }
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Network/NoAuthInterceptor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NoAuthInterceptor.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Alamofire
11 |
12 | final class NoAuthInterceptor: RequestInterceptor {
13 | func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result) -> Void) {
14 | completion(.success(urlRequest))
15 | }
16 |
17 | func retry(_ request: Request, for session: Session, dueTo error: Error, completion: @escaping (RetryResult) -> Void) {
18 | completion(.doNotRetry)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Network/RequestParameters.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RequestParameters.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public enum RequestParameters {
11 | case none
12 | case query(_ parameters: Encodable?)
13 | case body(_ parameters: Encodable?)
14 | case bodyAndQuery(body: Encodable?, query: Encodable?)
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/OAuth/OAuthInteractor/OAuthInteractor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // OAuthInteractor.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 5/28/25.
6 | //
7 |
8 | protocol OAuthInteractor {
9 | func loginWithKakaoTalk(onSuccess: @escaping (String) -> Void)
10 | func loginWithKakaoAccount(onSuccess: @escaping (String) -> Void)
11 | func checkKakaoTalkAvailable() -> Bool
12 | func getKakaoId(onSuccess: @escaping (Int64?) -> Void)
13 | func loginWithApple(onSuccess: @escaping (_ userId: String, _ identityToken: String?) -> Void)
14 | }
15 |
16 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Socket/WebSocketTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WebSocketTarget.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct WebSocketTarget: WebSocketTargetType {
11 | var baseURL: String = Configuration.socketURL
12 |
13 | var path: String {
14 | return "/chat?userId=\(userId)"
15 | }
16 |
17 | var userId: Int
18 | }
19 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/Socket/WebSocketTargetType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WebSocketTargetType.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/18/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol WebSocketTargetType {
11 | var baseURL: String { get }
12 | var path: String { get }
13 | }
14 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/UI/Extension/UIApplication+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIApplication+.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/13/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension UIApplication {
11 | var statusBarHeight: CGFloat {
12 | return connectedScenes
13 | .compactMap { $0 as? UIWindowScene }
14 | .first?.statusBarManager?.statusBarFrame.height ?? 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/UI/Extension/View+.swift:
--------------------------------------------------------------------------------
1 | //
2 | // View+.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/16/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension View {
11 | func hideKeyboard() {
12 | UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
13 | }
14 |
15 | func cornerRadius(_ radius: CGFloat, corners: UIRectCorner) -> some View {
16 | clipShape(RoundedCorner(radius: radius, corners: corners))
17 | }
18 | }
19 |
20 | struct RoundedCorner: Shape {
21 | var radius: CGFloat = .infinity
22 | var corners: UIRectCorner = .allCorners
23 |
24 | func path(in rect: CGRect) -> Path {
25 | let path = UIBezierPath(
26 | roundedRect: rect,
27 | byRoundingCorners: corners,
28 | cornerRadii: CGSize(width: radius, height: radius)
29 | )
30 | return Path(path.cgPath)
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Core/UI/Feature.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Feature.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/13/25.
6 | //
7 |
8 | import Combine
9 |
10 | protocol Feature: ObservableObject {
11 | associatedtype State
12 | associatedtype Intent
13 | associatedtype SideEffect
14 |
15 | var state: State { get }
16 | var sideEffectSubject: PassthroughSubject { get }
17 |
18 | func send(_ intent: Intent)
19 | func handleIntent(_ intent: Intent)
20 | }
21 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Auth/Model/Remote/KakaoLoginResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KakaoLoginResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 5/28/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct KakaoLoginResponseDTO: Decodable {
11 | let isUser: Bool
12 | let userId: Int
13 | let accessToken: String?
14 | let refreshToken: String?
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Auth/Model/Remote/LoginRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct LoginRequestDTO: Codable {
11 | let phoneNumber: String
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Auth/Model/Remote/LoginResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct LoginResponseDTO: Codable {
11 | let accessToken: String
12 | let refreshToken: String
13 | }
14 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Auth/Model/Remote/SignUpRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SignUpRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/21/25.
6 | //
7 |
8 | public struct SignUpRequestDTO: Codable {
9 | let phoneNumber: String
10 | let nickname: String
11 | let birthYear: Int
12 | let gender: Bool
13 | let profileImage: String
14 | let region: String
15 | let userId: Int
16 | }
17 |
18 | extension Member {
19 | var DTO: SignUpRequestDTO {
20 | return SignUpRequestDTO(
21 | phoneNumber: phoneNumber,
22 | nickname: nickname,
23 | birthYear: birthYear,
24 | gender: gender,
25 | profileImage: profileImage,
26 | region: region,
27 | userId: userId
28 | )
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Auth/Model/Remote/UserIDResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UserIDResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct UserIDResponseDTO: Codable {
11 | let userId: Int
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Auth/Repository/DefaultOAuthRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DefaultOAuthRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 5/28/25.
6 | //
7 |
8 | class DefaultOAuthRepository: OAuthRepository {
9 | @Inject var oauthInteractor: OAuthInteractor
10 |
11 | func login(onSuccess: @escaping (String) -> Void){
12 | if(oauthInteractor.checkKakaoTalkAvailable()){
13 | oauthInteractor.loginWithKakaoTalk(onSuccess: onSuccess)
14 | } else {
15 | oauthInteractor.loginWithKakaoAccount(onSuccess: onSuccess)
16 | }
17 | }
18 |
19 | func getKakaoId(onSuccess: @escaping (Int64?) -> Void) {
20 | oauthInteractor.getKakaoId(onSuccess: onSuccess)
21 | }
22 |
23 | func loginApple(onSuccess: @escaping (String) -> Void) {
24 | oauthInteractor.loginWithApple { userId, identityToken in
25 | onSuccess(userId)
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/BlockingAccount/Model/Remote/BlockingAccountRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BlockingAccountRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Combine
11 |
12 | public struct BlockingAccountRequestDTO: Codable {
13 | let phoneNumber: String
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/BlockingAccount/Model/Remote/BlockingAccountResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BlockingAccountResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Combine
11 |
12 | public struct BlockingAccountResponseDTO: Codable {
13 | let nickname: String
14 | let phoneNumbers: [String]
15 | }
16 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/BlockingAccount/Source/Remote/BlockingAccountAPI.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BlockingAccountAPI.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Combine
11 |
12 | struct BlockingAccountAPI: BlockingAccountAPIProtocol {
13 | private let client = NetworkClient.shared
14 |
15 | func fetchBlokcingAccounts() -> AnyPublisher {
16 | let target: BlockingAccountTarget = .fetchBlockingAccounts
17 |
18 | return client.request(BlockingAccountResponseDTO.self, target: target)
19 | }
20 |
21 | func registerBlockingAccount(requestDTO: BlockingAccountRequestDTO) -> AnyPublisher {
22 | let target: BlockingAccountTarget = .registerBlockingAccount(requestDTO: requestDTO)
23 |
24 | return client.request(target: target)
25 | }
26 |
27 | func deleteBlockingAccount(requestDTO: BlockingAccountRequestDTO) -> AnyPublisher {
28 | let target: BlockingAccountTarget = .deleteBlockingAccount(requestDTO: requestDTO)
29 |
30 | return client.request(target: target)
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Chat/Model/Remote/ChatCreateResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatCreateResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/23/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct ChatCreateResponseDTO: Codable {
11 | let type: String
12 | let ownerChatRoomId: String
13 | let peerChatRoomId: String
14 | }
15 |
16 | extension ChatCreateResponseDTO {
17 | var entity: Create {
18 | Create(
19 | ownerChatRoomId: ownerChatRoomId,
20 | peerChatRoomId: peerChatRoomId
21 | )
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Chat/Model/Remote/ChatMessagesResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatMessagesResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct ChatMessagesResponseDTO: Codable {
11 | let chatMessages: [ChatMessageDTO]
12 | }
13 |
14 | public struct ChatMessageDTO: Codable {
15 | let type: String
16 | let content: String
17 | let timestamp: String
18 | let isRead: Bool
19 | }
20 |
21 | extension ChatMessageDTO {
22 | var entity: Message {
23 | Message(
24 | message: content,
25 | isMine: type == "SEND" ? true : false,
26 | date: timestamp.toFormattedDateOnly() ?? "",
27 | time: timestamp.toFormattedTime() ?? ""
28 | )
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Chat/Model/Remote/ChatRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | struct ChatRequestDTO: Codable {
9 | let ownerChatRoomId: String
10 | let peerChatRoomId: String
11 | let senderId: Int
12 | let receiverId: Int
13 | let postId: Int
14 | let content: String
15 | let type: String
16 | }
17 |
18 | extension Send {
19 | var DTO: ChatRequestDTO {
20 | return ChatRequestDTO(
21 | ownerChatRoomId: ownerChatRoomId,
22 | peerChatRoomId: peerChatRoomId,
23 | senderId: senderID,
24 | receiverId: receiverID,
25 | postId: postID,
26 | content: content,
27 | type: type
28 | )
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Chat/Model/Remote/ChatResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct ChatResponseDTO: Codable {
11 | let content: String
12 | let timestamp: String
13 | }
14 |
15 | extension ChatResponseDTO {
16 | var entity: Message {
17 | Message(
18 | message: content,
19 | isMine: false,
20 | date: timestamp.toFormattedDateOnly() ?? "",
21 | time: timestamp.toFormattedTime() ?? ""
22 | )
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Chat/Source/Remote/ChatAPI.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatAPI.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | struct ChatAPI: ChatApiProtocol {
12 | private let client = NetworkClient.shared
13 |
14 | func getChatRooms() -> AnyPublisher {
15 | let target: ChatTarget = .getChatRooms
16 |
17 | return client.request(ChatRoomsResponseDTO.self, target: target)
18 | }
19 |
20 | func getChatMessages(id: String) -> AnyPublisher {
21 | let target: ChatTarget = .getChatMessages(id: id)
22 |
23 | return client.request(ChatMessagesResponseDTO.self, target: target)
24 | }
25 |
26 | func patchJoinChatRoom(id: String) -> AnyPublisher {
27 | let target: ChatTarget = .patchJoinChatRoom(id: id)
28 |
29 | return client.request(target: target)
30 | }
31 |
32 | func patchExitChatRoom(id: String) -> AnyPublisher {
33 | let target: ChatTarget = .patchExitChatRoom(id: id)
34 |
35 | return client.request(target: target)
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Chat/Source/Remote/ChatSocketTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatSocketTarget.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | protocol ChatSocketProtocol {
12 | func connect(userId: Int)
13 |
14 | func receiveChat() -> AnyPublisher
15 |
16 | func receiveChatRooms() -> AnyPublisher
17 |
18 | func receiveChatCreate() -> AnyPublisher
19 |
20 | func sendChat(_ value: ChatRequestDTO)
21 | }
22 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Common/Model/Remote/CategoryResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CategoryResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct CategoryResponseDTO: Codable {
11 | let categories: [CategoryDTO]
12 | }
13 |
14 | struct CategoryDTO: Codable {
15 | let imageUrl: String
16 | let category: String
17 | }
18 |
19 | extension CategoryDTO {
20 | var entity: Category {
21 | Category(
22 | imageURL: imageUrl,
23 | category: category
24 | )
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Common/Model/Remote/RegionResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RegionResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct RegionResponseDTO: Codable {
11 | let regions: [RegionDTO]
12 | }
13 |
14 | struct RegionDTO: Codable {
15 | let location: String
16 | let subLocations: [String]
17 | }
18 |
19 | extension RegionDTO {
20 | var entity: Region {
21 | Region(
22 | location: location,
23 | subLocation: subLocations
24 | )
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Common/Source/Remote/CommonAPI.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CommonAPI.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | struct CommonAPI: CommonApiProtocol {
12 | private let client = NetworkClient.shared
13 |
14 | func getRegions() -> AnyPublisher {
15 | let target: CommonTarget = .getRegions
16 |
17 | return client.requestNoneAuth(RegionResponseDTO.self, target: target)
18 | }
19 |
20 | func getCategories() -> AnyPublisher {
21 | let target: CommonTarget = .getCategories
22 |
23 | return client.requestNoneAuth(CategoryResponseDTO.self, target: target)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Common/Source/Remote/CommonTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CommonTarget.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | import Alamofire
12 |
13 | enum CommonTarget {
14 | case getRegions
15 | case getCategories
16 | }
17 |
18 | protocol CommonApiProtocol {
19 | func getRegions() -> AnyPublisher
20 | func getCategories() -> AnyPublisher
21 | }
22 |
23 | extension CommonTarget : TargetType {
24 | var baseURL: String {
25 | return Configuration.baseURL
26 | }
27 |
28 | var method: Alamofire.HTTPMethod {
29 | switch self {
30 | case .getRegions: .get
31 | case .getCategories: .get
32 | }
33 | }
34 |
35 | var path: String {
36 | switch self {
37 | case .getCategories: "/api/v1/enums/categories"
38 | case .getRegions: "/api/v1/enums/regions"
39 | }
40 | }
41 |
42 | var parameters: RequestParameters {
43 | switch self {
44 | case .getCategories: .none
45 | case .getRegions: .none
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/FindSuhyeon/Model/Remote/FindSuhyeonMainRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonMainRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FindSuhyeonMainRequestDTO: Codable {
11 | let region: String
12 | let date: String
13 | }
14 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/FindSuhyeon/Model/Remote/FindSuhyeonMainResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonMainResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FindSuhyeonMainResponseDTO: Codable {
11 | let region: String
12 | let days: [String]
13 | let posts: [FindSuhyeonMainPostDTO]
14 | }
15 |
16 | struct FindSuhyeonMainPostDTO: Codable {
17 | let postId: Int
18 | let title: String
19 | let price: Int
20 | let gender: Bool
21 | let age: String
22 | let date: String
23 | let matching: Bool
24 | let isExpired: Bool
25 | }
26 |
27 | extension FindSuhyeonMainPostDTO {
28 | var entity: FindSuhyeonPost {
29 | FindSuhyeonPost(
30 | postId: postId,
31 | title: title,
32 | price: price,
33 | gender: gender == true ? .man : .woman,
34 | age: age,
35 | date: date,
36 | isExpired: isExpired
37 | )
38 | }
39 | }
40 |
41 | extension FindSuhyeonMainResponseDTO {
42 | var entity: FindSuhyeonMain {
43 | FindSuhyeonMain(
44 | region: region,
45 | days: days,
46 | posts: posts.map { $0.entity }
47 | )
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/FindSuhyeon/Model/Remote/FindSuhyeonPostRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonPostRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FindSuhyeonPostRequestDTO: Codable {
11 | let gender: Bool
12 | let age: String
13 | let requests: [String]
14 | let region: String
15 | let date: String
16 | let price: Int
17 | let title: String
18 | let content: String
19 | }
20 |
21 | extension FindSuhyeonPostRequest {
22 | var DTO: FindSuhyeonPostRequestDTO {
23 | FindSuhyeonPostRequestDTO(
24 | gender: gender == .man,
25 | age: age,
26 | requests: requests,
27 | region: region,
28 | date: date,
29 | price: price,
30 | title: title,
31 | content: content
32 | )
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Gallery/Model/Remote/CategoryRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CategoryRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | struct CategoryRequestDTO: Codable {
9 | let category: String
10 | let size: Int
11 | let cursorId: Int32?
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Gallery/Model/Remote/GalleriesResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GalleriesResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct GalleriesResponseDTO: Codable {
11 | let galleries: [GalleryDTO]
12 | }
13 |
14 | struct GalleryDTO: Codable {
15 | let galleryId: Int
16 | let imageUrl: String
17 | let title: String
18 | }
19 |
20 | extension GalleryDTO {
21 | var entity: GalleryPost {
22 | GalleryPost(
23 | id: galleryId,
24 | imageURL: imageUrl,
25 | title: title
26 | )
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Gallery/Model/Remote/GalleryDetailResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GalleryDetailResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct GalleryDetailResponseDTO: Codable {
11 | let imageUrl: String
12 | let category: String
13 | let title: String
14 | let profileImage: String
15 | let nickname: String
16 | let createdAt: String
17 | let content: String
18 | let owner: Bool
19 | }
20 |
21 | extension GalleryDetailResponseDTO {
22 | var entity: GalleryDetail {
23 | GalleryDetail(
24 | imageUrl: imageUrl,
25 | category: category,
26 | title: title,
27 | profileImage: profileImage,
28 | nickname: nickname,
29 | createdAt: createdAt,
30 | content: content,
31 | isMine: owner
32 | )
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Gallery/Model/Remote/GalleryInfoRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GalleryInfoRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct GalleryInfoRequestDTO: Codable {
11 | let category: String
12 | let title: String
13 | let content: String
14 | }
15 |
16 | extension GalleryUpload {
17 | var DTO: (Data, GalleryInfoRequestDTO) {
18 | return (
19 | image,
20 | GalleryInfoRequestDTO(
21 | category: category,
22 | title: title,
23 | content: content
24 | )
25 | )
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Home/Model/Remote/HomeResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HomeResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct HomeResponseDTO: Codable {
11 | let count: Int
12 | let region: String
13 | let homePosts: [HomePostDTO]
14 | }
15 |
16 | struct HomePostDTO: Codable {
17 | let postId: Int
18 | let title: String
19 | let price: Int
20 | let age: String
21 | let gender: Bool
22 | let date: String
23 | let matching: Bool
24 | }
25 |
26 | extension HomeResponseDTO {
27 | var entity: Home {
28 | Home(
29 | count: count,
30 | region: region,
31 | posts: homePosts.map{ $0.entity }
32 | )
33 | }
34 | }
35 |
36 | extension HomePostDTO {
37 | var entity: Post {
38 | Post(
39 | id: postId,
40 | title: title,
41 | price: price,
42 | age: age,
43 | gender: gender == true ? .man: .woman,
44 | date: date
45 | )
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Home/Repository/DefaultHomeRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DefaultHomeRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | class DefaultHomeRepository: HomeRepository {
12 |
13 | @Inject var homeAPI: HomeApiProtocol
14 | var subscriptions = Set()
15 |
16 | func getHome(completion: @escaping (Home) -> Void) {
17 | homeAPI.getHome()
18 | .map {
19 | $0.entity
20 | }
21 | .sink { completion in
22 | switch completion {
23 | case .finished:
24 | print("finish")
25 | case .failure(let error):
26 | print(error)
27 | }
28 | } receiveValue: { home in
29 | completion(home)
30 | }.store(in: &subscriptions)
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Home/Source/Remote/HomeAPI.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HomeAPI.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | import Alamofire
12 |
13 | struct HomeAPI: HomeApiProtocol {
14 |
15 | private let client = NetworkClient.shared
16 |
17 | func getHome() -> AnyPublisher {
18 | let target = HomeTarget.getHome
19 |
20 | return client.request(HomeResponseDTO.self, target: target)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/Home/Source/Remote/HomeTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HomeTarget.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | import Alamofire
12 |
13 | enum HomeTarget {
14 | case getHome
15 | }
16 |
17 | protocol HomeApiProtocol {
18 | func getHome() -> AnyPublisher
19 | }
20 |
21 | extension HomeTarget: TargetType {
22 | var baseURL: String {
23 | return Configuration.baseURL
24 | }
25 |
26 | var method: Alamofire.HTTPMethod {
27 | switch self {
28 | case .getHome: .get
29 | }
30 | }
31 |
32 | var path: String {
33 | switch self {
34 | case .getHome: "/api/v1/home"
35 | }
36 | }
37 |
38 | var parameters: RequestParameters {
39 | switch self {
40 | case .getHome: .none
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/MyPage/Model/Remote/MyFindSuhyeonPostResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyFindSuhyeonPostResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/2/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct MyFindSuhyeonPostsResponseDTO: Codable {
11 | let userPosts: [MyfindSuhyeonPostDTO]
12 | }
13 |
14 | struct MyfindSuhyeonPostDTO: Codable {
15 | let postId: Int
16 | let title: String
17 | let region: String
18 | let date: String
19 | let createdDate: String
20 | let matching: Bool
21 | }
22 |
23 | extension MyfindSuhyeonPostDTO {
24 | var entity: MyFindSuhyeonPost {
25 | MyFindSuhyeonPost(id: postId, title: title, region: region, date: date, matching: matching, createdDate: createdDate)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/MyPage/Model/Remote/MyGalleryPostsResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyGalleryPostsResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/23/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct MyGalleryPostsResponseDTO: Codable {
11 | let userGalleries: [MyGalleryPostDTO]
12 | }
13 |
14 | struct MyGalleryPostDTO: Codable {
15 | let galleryId: Int
16 | let imageUrl: String
17 | let title: String
18 | }
19 |
20 | extension MyGalleryPostDTO {
21 | var entity: MyGalleryPost {
22 | MyGalleryPost(
23 | id: galleryId,
24 | imageURL: imageUrl,
25 | title: title
26 | )
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/MyPage/Model/Remote/MyInterestRegionRequestDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyInterestRegionRequestDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct MyInterestRegionRequestDTO: Codable {
11 | let region: String
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/MyPage/Model/Remote/MyInterestRegionResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyInterestRegionResponse.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public struct MyInterestRegionResponseDTO: Codable {
11 | let region: String
12 | }
13 |
14 |
15 | extension MyInterestRegionResponseDTO {
16 | var entity: MyInterestRegion {
17 | MyInterestRegion(region: region)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/MyPage/Model/Remote/MyPhoneNumberResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyPhoneNumberResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 6/3/25.
6 | //
7 |
8 | public struct MyPhoneNumberResponseDTO: Codable {
9 | let phoneNumber: String
10 | }
11 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Data/MyPage/Model/Remote/UserResponseDTO.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UserResponseDTO.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct UserResponseDTO: Codable {
11 | let nickname: String
12 | let profileImage: String
13 | }
14 |
15 | extension UserResponseDTO {
16 | var entity: User {
17 | User(
18 | nickname: nickname,
19 | profileImageURL: profileImage
20 | )
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Auth/Entity/Member.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Member.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Member: Identifiable {
11 | let id: UUID = UUID()
12 | let phoneNumber: String
13 | let nickname: String
14 | let birthYear: Int
15 | let gender: Bool
16 | let profileImage: String
17 | let region: String
18 | let userId: Int
19 | }
20 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Auth/Repository/AuthRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AuthRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Combine
11 |
12 | protocol AuthRepository {
13 | func signUp(member: Member, completion: @escaping (Result) -> Void)
14 |
15 | func login(phoneNumber: String, completion: @escaping (Result) -> Void)
16 |
17 | func registerUserId(completion: @escaping (Bool) -> Void)
18 |
19 | func loadAccessToken() -> String?
20 | func loadRefreshToken() -> String?
21 | func clearTokens()
22 |
23 | func sendAuthCode(flow: String, phoneNumber: String, completion: @escaping (Result) -> Void)
24 | func validateAuthCode(flow: String, authCode: String, phoneNumber: String, completion: @escaping (Result) -> Void)
25 |
26 | func logout(completion: @escaping (Result) -> Void)
27 | func withdraw(completion: @escaping (Result) -> Void)
28 |
29 | func checkUserExists(accessToken: String, completion: @escaping (Result) -> Void)
30 |
31 | func checkUserExistsApple(code: String, completion: @escaping (Result) -> Void)
32 | }
33 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Auth/Repository/OAuthRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // OAuthRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 5/28/25.
6 | //
7 |
8 | protocol OAuthRepository {
9 | func login(onSuccess: @escaping (String) -> Void)
10 | func getKakaoId(onSuccess: @escaping (Int64?) -> Void)
11 | func loginApple(onSuccess: @escaping (String) -> Void)
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Auth/UseCase/SignUpUseCase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SignUpUseCase.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol SignUpUseCase {
11 | func execute(member: Member, completion: @escaping (Result) -> Void)
12 | }
13 |
14 | class SignUpUseCaseImpl: SignUpUseCase {
15 | @Inject private var authRepository: AuthRepository
16 |
17 | func execute(member: Member, completion: @escaping (Result) -> Void) {
18 | authRepository.signUp(member: member) { [weak self] result in
19 | switch result {
20 | case .success:
21 | print("회원가입 성공")
22 | self?.authRepository.login(phoneNumber: member.phoneNumber) { loginResult in
23 | completion(loginResult)
24 | }
25 | case .failure(let error):
26 | completion(.failure(error))
27 | }
28 | }
29 | }
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Auth/UseCase/ValidateNickNameUseCase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ValidateNickNameUseCase.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/18/25.
6 | //
7 |
8 | import Foundation
9 |
10 | class NickNameValidateUseCase {
11 | private static let nicknameRegex = try! Regex("^[가-힣ㄱ-ㅎㅏ-ㅣa-zA-Z0-9]+$")
12 |
13 | func execute(_ nickname: String) -> Bool {
14 | return try! (Self.nicknameRegex.firstMatch(in: nickname)) != nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/BlockingAccount/Entity/BlockingMember.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BlockingMember.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct BlockingMember: Identifiable {
11 | let id: UUID = UUID()
12 | let nickname: String
13 | let phoneNumbers: [String]
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/BlockingAccount/Repository/BlockingRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BlockingRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | import Combine
11 |
12 | protocol BlockingRepository {
13 | func fetchBlockingAccounts(completion: @escaping (String, [String]) -> Void)
14 | func registerBlockingAccount(phoneNumber: String, completion: @escaping(Result) -> Void)
15 | func deleteBlockingAccount(phoneNumber: String, completion: @escaping(Result) -> Void)
16 | }
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Chat/Entity/Chat.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Chat.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | struct Chat {
9 | var ownerChatRoomID: String
10 | var peerChatRoomID: String
11 | var ownerID: Int
12 | var peerID: Int
13 | var postID: Int
14 | var nickname: String
15 | var profileImage: String
16 | var lastMessage: String
17 | var unreadCount: Int
18 | var date: String
19 | var title: String
20 | var location: String
21 | var money: String
22 | }
23 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Chat/Entity/Create.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Create.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/23/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Create {
11 | let ownerChatRoomId: String
12 | let peerChatRoomId: String
13 | }
14 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Chat/Entity/Message.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Message.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Message: Identifiable {
11 | let id: UUID = UUID()
12 | let message: String
13 | let isMine: Bool
14 | let date: String
15 | let time: String
16 | }
17 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Chat/Entity/Send.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Send.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Send {
11 | let ownerChatRoomId: String
12 | let peerChatRoomId: String
13 | let senderID: Int
14 | let receiverID: Int
15 | let postID: Int
16 | let content: String
17 | let type: String
18 | }
19 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Chat/Repository/ChatRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChatRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | import Foundation
9 | import Combine
10 |
11 | protocol ChatRepository {
12 | func getChatRooms(completion: @escaping ([Chat]) -> Void)
13 | func getChatMessages(id: String, completion: @escaping ([Message]) -> Void)
14 | func patchJoinChatRooms(id: String, completion: @escaping (Bool) -> Void)
15 | func patchExitChatRooms(id: String, completion: @escaping (Bool) -> Void)
16 | func receiveChat() -> AnyPublisher
17 | func receiveChatRooms() -> AnyPublisher<[Chat], NetworkError>
18 | func receiveCreateInfo() -> AnyPublisher
19 | func sendChat(message: Send)
20 | }
21 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Common/Entity/Category.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Category.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | struct Category {
9 | let imageURL: String
10 | let category: String
11 | }
12 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Common/Entity/Gender.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Gender.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/19/25.
6 | //
7 |
8 | enum Gender {
9 | case man
10 | case woman
11 | }
12 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Common/Entity/Region.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Region.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | struct Region {
9 | let location: String
10 | let subLocation: [String]
11 | }
12 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Common/Repository/CommonRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CommonRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol CommonRepository {
11 | func getCategories(completion: @escaping ([Category]) -> Void)
12 | func getRegions(completion: @escaping ([Region]) -> Void)
13 | }
14 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Common/UseCase/GetCategoriesUseCase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GetCategoriesUseCase.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol GetCategoriesUseCase {
11 | func execute(completion: @escaping ([Category]) -> Void)
12 | }
13 |
14 | class DefaultGetCategoriesUseCase: GetCategoriesUseCase {
15 | @Inject private var commonRepository: CommonRepository
16 |
17 | func execute(completion: @escaping ([Category]) -> Void) {
18 | commonRepository.getCategories(completion: completion)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Common/UseCase/GetRegionsUseCase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GetRegionsUseCase.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol GetRegionsUseCase {
11 | func execute(completion: @escaping ([Region]) -> Void)
12 | }
13 |
14 | class DefaultGetRegionsUseCase: GetRegionsUseCase {
15 | @Inject private var commonRepository: CommonRepository
16 |
17 | func execute(completion: @escaping ([Region]) -> Void) {
18 | commonRepository.getRegions(completion: completion)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/FindSuhyeon/Entity/FindSuhyeonMain.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonMain.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FindSuhyeonMain {
11 | let region: String
12 | let days: [String]
13 | let posts: [FindSuhyeonPost]
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/FindSuhyeon/Entity/FindSuhyeonPost.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonPost.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FindSuhyeonPost {
11 | let postId: Int
12 | let title: String
13 | let price: Int
14 | let gender: Gender
15 | let age: String
16 | let date: String
17 | let isExpired: Bool
18 | }
19 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/FindSuhyeon/Entity/FindSuhyeonPostDetail.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonPostDetail.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | struct FindSuhyeonPostDetail {
9 | let title: String
10 | let content: String
11 | let nickname: String
12 | let createdAt: String
13 | let profileImage: String
14 | let price: Int
15 | let isMine: Bool
16 | let matching: Bool
17 | let isExpired: Bool
18 | let detail: FindSuhyeonPostInfoDetail
19 | let chatRoom: ChatRoom
20 | }
21 |
22 | struct FindSuhyeonPostInfoDetail {
23 | let region: String
24 | let gender: Gender
25 | let age: String
26 | let date: String
27 | let requests: [String]
28 | }
29 |
30 | struct ChatRoom {
31 | let postId: Int
32 | let ownerId: Int
33 | let writerId: Int
34 | let ownerChatRoomId: String
35 | let peerChatRoomId: String
36 | }
37 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/FindSuhyeon/Entity/FindSuhyeonPostRequest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonPostRequest.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct FindSuhyeonPostRequest {
11 | let gender: Gender
12 | let age: String
13 | let requests: [String]
14 | let region: String
15 | let date: String
16 | let price: Int
17 | let title: String
18 | let content: String
19 | }
20 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/FindSuhyeon/Repository/FindSuhyeonRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FindSuhyeonRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol FindSuhyeonRepository {
11 | func postFindSuhyeon(findSuhyeonPost: FindSuhyeonPostRequest, completion: @escaping (Bool) -> Void)
12 | func getFindSuhyeonMain(region: String, date: String, completion: @escaping (FindSuhyeonMain) -> Void)
13 | func getFindSuhyeonDetail(id: Int, completion: @escaping (FindSuhyeonPostDetail) -> Void)
14 | func deleteFindSuhyeon(id: Int, completion: @escaping (Bool) -> Void)
15 | }
16 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Gallery/Entity/GalleryDetail.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GalleryDetail.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct GalleryDetail: Codable {
11 | let imageUrl: String
12 | let category: String
13 | let title: String
14 | let profileImage: String
15 | let nickname: String
16 | let createdAt: String
17 | let content: String
18 | let isMine: Bool
19 | }
20 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Gallery/Entity/GalleryPost.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GalleryPost.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct GalleryPost {
11 | let id: Int
12 | let imageURL: String
13 | let title: String
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Gallery/Entity/GalleryUpload.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GalleryUpload.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/21/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct GalleryUpload {
11 | let image: Data
12 | let category: String
13 | let title: String
14 | let content: String
15 | }
16 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Gallery/Repository/GalleryRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GalleryRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol GalleryRepository {
11 |
12 | func upload(galleryInfo: GalleryUpload, completion: @escaping (Bool) -> Void)
13 |
14 | func getGalleries(category: String, size: Int, cursorId: Int32?, completion: @escaping ([GalleryPost]) -> Void)
15 |
16 | func getGallery(id: Int, completion: @escaping (GalleryDetail) -> Void)
17 |
18 | func deleteGallery(id: Int, completion: @escaping (Bool) -> Void)
19 | }
20 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Home/Entity/Home.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Home.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Home {
11 | let count: Int
12 | let region: String
13 | let posts: [Post]
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Home/Entity/Post.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Post.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct Post {
11 | let id: Int
12 | let title: String
13 | let price: Int
14 | let age: String
15 | let gender: Gender
16 | let date: String
17 | }
18 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/Home/Repository/HomeRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HomeRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol HomeRepository {
11 | func getHome(completion: @escaping (Home) -> Void)
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/MyPage/Entity/MyFindSuhyeonPost.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyFindSuhyeonPost.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/2/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct MyFindSuhyeonPost {
11 | let id: Int
12 | let title: String
13 | let region: String
14 | let date: String
15 | let matching: Bool
16 | let createdDate: String
17 | }
18 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/MyPage/Entity/MyGalleryPost.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyGalleryPost.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/23/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct MyGalleryPost: Identifiable {
11 | let id: Int
12 | let imageURL: String
13 | let title: String
14 | }
15 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/MyPage/Entity/MyInterestRegion.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyInterestRegion.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/8/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct MyInterestRegion {
11 | let region: String
12 | }
13 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/MyPage/Entity/User.swift:
--------------------------------------------------------------------------------
1 | //
2 | // User.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | struct User {
11 | let nickname: String
12 | let profileImageURL: String
13 | }
14 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Domain/MyPage/Repository/MyPageRepository.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyPageRepository.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/22/25.
6 | //
7 |
8 | import Foundation
9 |
10 | protocol MyPageRepository {
11 | func getUser(completion: @escaping (User) -> Void)
12 | func getMyFindSuhyeonPosts(completion: @escaping ([MyFindSuhyeonPost]) -> Void)
13 | func getMyInterestRegion(completion: @escaping (MyInterestRegion) -> Void)
14 | func postMyInterestRegion(region: MyInterestRegionRequestDTO, completion: @escaping (Bool) -> Void)
15 | func getMyGalleryPosts(completion: @escaping ([MyGalleryPost]) -> Void)
16 | func getMyPhoneNumber(completion: @escaping (String) -> Void)
17 | func patchMyPhoneNumber(phoneNumber: String, completion: @escaping (Bool) -> Void)
18 | }
19 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BASE_URL
6 | $(BASE_URL)
7 | CFBundleIconName
8 | AppIcon
9 | CFBundleURLTypes
10 |
11 |
12 | CFBundleTypeRole
13 | Editor
14 | CFBundleURLSchemes
15 |
16 | kakao4d9c45ccbb3c0fc7f9fc005b8e8611e1
17 |
18 |
19 |
20 | LSApplicationQueriesSchemes
21 |
22 | kakaokompassauth
23 | kakaolink
24 | kakaoplus
25 |
26 | NSAppTransportSecurity
27 |
28 | NSAllowsArbitraryLoads
29 |
30 |
31 | SOCKET_URL
32 | $(SOCKET_URL)
33 | UIAppFonts
34 |
35 | SUIT-ExtraBold.otf
36 | SUIT-Bold.otf
37 | SUIT-SemiBold.otf
38 | SUIT-Regular.otf
39 |
40 | KAKAO_NATIVE_APP_KEY
41 | $(KAKAO_NATIVE_APP_KEY)
42 |
43 |
44 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/FindSuhyeon/Component/FindSuhyeonGenderSelectCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GenderSelectionCell.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 정지원 on 1/16/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct FindSuhyeonGenderSelectCell: View {
11 | let genderImages: [(defaultImage: WithSuhyeonImage, selectedImage: WithSuhyeonImage)]
12 | let selectedGender: String
13 | let onTapSmallChip: (String) -> Void
14 |
15 | var body: some View {
16 | HStack(spacing: 11) {
17 | ForEach(Array(genderImages.enumerated()), id: \.offset) { index, genderImage in
18 | let genderText = index == 0 ? "남자" : "여자"
19 |
20 | WithSuhyeonSmallChip(
21 | title: genderText,
22 | defaultImage: genderImage.defaultImage,
23 | selectedImage: genderImage.selectedImage,
24 | chipState: selectedGender == genderText ? .selected : .unselected,
25 | clickable: true
26 | ) {
27 | withAnimation(.easeInOut) {
28 | onTapSmallChip(genderText)
29 | }
30 | }
31 | }
32 | }
33 | .padding(.horizontal, 16)
34 | .padding(.bottom, 12)
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/Main/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContentView: View {
11 | var body: some View {
12 | VStack {
13 | Image(systemName: "globe")
14 | .imageScale(.large)
15 | .foregroundStyle(.tint)
16 | Text("Hello, world!")
17 | }
18 | .padding()
19 | }
20 | }
21 |
22 | #Preview {
23 | ContentView()
24 | }
25 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/Main/MainTab.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MainTab.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/12/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public enum MainTab: CaseIterable {
11 | case home
12 | case findSuhyeon
13 | case gallery
14 | case chat
15 | case myPage
16 |
17 | var title: String {
18 | switch self {
19 | case .home: return "홈"
20 | case .findSuhyeon: return "수현이 찾기"
21 | case .gallery: return "공유앨범"
22 | case .chat: return "채팅"
23 | case .myPage: return "MY"
24 | }
25 | }
26 |
27 | var icon: WithSuhyeonIcon {
28 | switch self {
29 | case .home: return .icHome24
30 | case .findSuhyeon: return .icFind24
31 | case .gallery: return .icGallery24
32 | case .chat: return .icChat24
33 | case .myPage: return .icMypage24
34 | }
35 | }
36 |
37 | var selectedIcon: WithSuhyeonIcon {
38 | switch self {
39 | case .home: return .icHomeFilled24
40 | case .findSuhyeon: return .icFindFilled24
41 | case .gallery: return .icGalleryFilled24
42 | case .chat: return .icChatFilled24
43 | case .myPage: return .icMyPageFilled24
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/Main/TabItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TabItem.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/12/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct TabItem: View {
11 | let title: String
12 | let icon: WithSuhyeonIcon
13 | let titleColor: Color
14 |
15 | init(title: String, icon: WithSuhyeonIcon, titleColor: Color) {
16 | self.title = title
17 | self.icon = icon
18 | self.titleColor = titleColor
19 | }
20 |
21 | var body: some View {
22 | VStack {
23 | Image(icon: icon)
24 |
25 | Text(title)
26 | .font(.caption01SB)
27 | .foregroundColor(titleColor)
28 | }
29 | }
30 | }
31 |
32 | #Preview {
33 | TabItem(title: "홈", icon: .icHome24, titleColor: Color.primary700)
34 | }
35 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/MyPage/Feedback/Feedback.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Feedback.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/8/25.
6 | //
7 |
8 | import SwiftUI
9 | import WebKit
10 |
11 | struct Feedback: View {
12 | @EnvironmentObject var router: RouterRegistry
13 | @StateObject var feature = FeedbackFeature()
14 |
15 | var body: some View {
16 | VStack(spacing: 0) {
17 | WithSuhyeonTopNavigationBar(title: "피드백 하기", onTapLeft: { router.popBack() })
18 |
19 | ZStack {
20 | WithSuhyeonWebView(
21 | request: feature.state.request,
22 | onStartLoading: { feature.send(.startLoading) },
23 | onFinishLoading: { feature.send(.finishLoading) }
24 | )
25 |
26 | if feature.state.isLoading {
27 | ProgressView()
28 | .progressViewStyle(CircularProgressViewStyle(tint: .gray))
29 | }
30 | }
31 | }
32 | }
33 | }
34 |
35 | #Preview {
36 | Feedback()
37 | }
38 |
39 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/MyPage/MyPost/MyPostContentCase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyPostContentCase.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/1/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public enum MyPostContentCase: CaseIterable {
11 | case findSuhyeon
12 | case gallery
13 |
14 | var title: String {
15 | switch self {
16 | case .findSuhyeon:
17 | return "수현이 찾기"
18 | case .gallery:
19 | return "갤러리"
20 | }
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/MyPage/TermsAndPolicies/TermsAndPoliciesWebView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TermsAndPoliciesWebView.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 4/23/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct TermsAndPoliciesWebView: View {
11 | @EnvironmentObject var router: RouterRegistry
12 | @StateObject var feature = TermsAndPoliciesFeature()
13 |
14 | let request: URLRequest
15 | let title: String
16 |
17 | var body: some View {
18 | VStack(spacing: 0) {
19 | WithSuhyeonTopNavigationBar(title: title, onTapLeft: { router.popBack() })
20 |
21 | ZStack {
22 | WithSuhyeonWebView(
23 | request: request,
24 | onStartLoading: { feature.send(.startLoading) },
25 | onFinishLoading: { feature.send(.finishLoading) }
26 | )
27 |
28 | if feature.state.isLoading {
29 | ProgressView()
30 | .progressViewStyle(CircularProgressViewStyle(tint: .gray))
31 | }
32 | }
33 | }
34 | .enableBackSwipe()
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/MyPage/Withdraw/ServerWithdraw.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ServerWithdraw.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/23/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ServerWithdraw: View {
11 | @EnvironmentObject var router: RouterRegistry
12 |
13 | var body: some View {
14 | VStack(alignment: .center, spacing: 0) {
15 | WithSuhyeonTopNavigationBar(title: "탈퇴하기", rightIcon: .icXclose24, onTapRight: {
16 | router.popBack()
17 | })
18 | Spacer()
19 |
20 | VStack(alignment: .center, spacing: 9) {
21 | Text("가입은 맘대로였지만,\n탈퇴는 아니랍니다?")
22 | .font(.body01B)
23 | .foregroundColor(.primary900)
24 |
25 | Text("탈퇴하고 싶다면\n우리를 찾아봐요^^")
26 | .font(.body01B)
27 | .foregroundColor(.primary900)
28 | }
29 |
30 | Spacer()
31 |
32 | Image(image: .imgWithDraw)
33 | .resizable()
34 | .scaledToFill()
35 | .frame(width: 425, height: 358)
36 | .clipped()
37 | }
38 | .edgesIgnoringSafeArea(.bottom)
39 | }
40 | }
41 |
42 | #Preview {
43 | ServerWithdraw()
44 | }
45 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/SignUp/SignUpContentCase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SignUpContentCase.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/15/25.
6 | //
7 |
8 | import Foundation
9 |
10 | public enum SignUpContentCase: CaseIterable {
11 | case termsOfServiceView
12 | case authenticationView
13 | case nickNameView
14 | case birthYearView
15 | case genderView
16 | case profileImageView
17 | case activeAreaView
18 |
19 | var title: String {
20 | switch self {
21 | case .termsOfServiceView:
22 | return "수현이랑\n서비스 이용약관"
23 | case .authenticationView:
24 | return "본인인증을 위한\n휴대폰 번호 인증이 필요해요"
25 | case .nickNameView:
26 | return "수현이랑에서 사용할\n닉네임을 입력해주세요"
27 | case .birthYearView:
28 | return "태어난 년도를\n선택해주세요"
29 | case .genderView:
30 | return "성별을\n선택해주세요"
31 | case .profileImageView:
32 | return "프로필 이미지를\n등록해주세요"
33 | case .activeAreaView:
34 | return "자주 활동하는\n지역을 선택해주세요"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/SignUp/View/ActiveAreaView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ActiveAreaView.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 김예지 on 1/15/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ActiveAreaView: View {
11 | @EnvironmentObject var signUpFeature: SignUpFeature
12 |
13 | var body: some View {
14 | VStack(spacing: 0) {
15 | WithSuhyeonLocationSelect(
16 | withSuhyeonLocation: signUpFeature.state.locationOptions,
17 | selectedMainLocationIndex: signUpFeature.state.mainLocationIndex,
18 | selectedSubLocationIndex: signUpFeature.state.subLocationIndex,
19 | onTabSelected: { mainIndex, subIndex in
20 | signUpFeature.send(.updateLocation(mainIndex, subIndex))
21 | }
22 | )
23 | .frame(maxHeight: .infinity)
24 | }
25 | .frame(maxHeight: .infinity)
26 | }
27 | }
28 |
29 |
30 | #Preview {
31 | ActiveAreaView()
32 | }
33 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Presentation/Splash/SplashView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SplashView.swift
3 | // WithSuhyeon-iOS
4 | //
5 | // Created by 우상욱 on 1/24/25.
6 | //
7 |
8 | import SwiftUI
9 |
10 | import Lottie
11 |
12 | struct SplashView: View {
13 | @EnvironmentObject var router: RouterRegistry
14 | @StateObject var feature = SplashFeature()
15 | var body: some View {
16 | ZStack {
17 | LottieView(animation: .named("splash"))
18 | .configure{ lottieView in
19 | lottieView.animationSpeed = 1
20 | }
21 | .playing()
22 | .resizable()
23 | .scaledToFit()
24 | .frame(width: 500, height: 500)
25 | }
26 | .onAppear {
27 | feature.send(.enterScreen)
28 | }
29 | .onReceive(feature.sideEffectSubject) { sideEffect in
30 | switch sideEffect {
31 |
32 | case .navigateToStartView:
33 | router.clear()
34 | router.navigate(to: .startView)
35 | case .navigateToMainView:
36 | router.clear()
37 | router.navigate(to: .main(fromSignUp: false, nickname: ""))
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOS/WithSuhyeon-iOS.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.applesignin
6 |
7 | Default
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOSTests/WithSuhyeon_iOSTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeon_iOSTests.swift
3 | // WithSuhyeon-iOSTests
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import Testing
9 | @testable import WithSuhyeon_iOS
10 |
11 | struct WithSuhyeon_iOSTests {
12 |
13 | @Test func example() async throws {
14 | // Write your test here and use APIs like `#expect(...)` to check expected conditions.
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/WithSuhyeon-iOS/WithSuhyeon-iOSUITests/WithSuhyeon_iOSUITestsLaunchTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WithSuhyeon_iOSUITestsLaunchTests.swift
3 | // WithSuhyeon-iOSUITests
4 | //
5 | // Created by 우상욱 on 1/8/25.
6 | //
7 |
8 | import XCTest
9 |
10 | final class WithSuhyeon_iOSUITestsLaunchTests: XCTestCase {
11 |
12 | override class var runsForEachTargetApplicationUIConfiguration: Bool {
13 | true
14 | }
15 |
16 | override func setUpWithError() throws {
17 | continueAfterFailure = false
18 | }
19 |
20 | @MainActor
21 | func testLaunch() throws {
22 | let app = XCUIApplication()
23 | app.launch()
24 |
25 | // Insert steps here to perform after app launch but before taking a screenshot,
26 | // such as logging into a test account or navigating somewhere in the app
27 |
28 | let attachment = XCTAttachment(screenshot: app.screenshot())
29 | attachment.name = "Launch Screen"
30 | attachment.lifetime = .keepAlways
31 | add(attachment)
32 | }
33 | }
34 |
--------------------------------------------------------------------------------